Universidade de Aveiro Departamento de Electronica,´ Telecomunicac¸oes˜ e Informatica´ 2010

Flavio´ da Silva Cliente IPTV Multi-Plataforma com Personalizac¸ao˜ Fonseca Automatica´ de Canais

Multiplatform IPTV Client with Automatic Channels Personalization

Universidade de Aveiro Departamento de Electronica,´ Telecomunicac¸oes˜ e Informatica´ 2010

Flavio´ da Silva Cliente IPTV Multi-Plataforma com Personalizac¸ao˜ Fonseca Automatica´ de Canais

Multiplatform IPTV Client with Automatic Channels Personalization

Dissertac¸ao˜ apresentada a` Universidade de Aveiro para cumprimento dos requisitos necessarios´ a` obtenc¸ao˜ do grau de Mestre em Engenharia de Computadores e Telematica,´ realizada sob a orientac¸ao˜ cient´ıfica do Doutor Paulo Salvador e do Doutor Antonio´ Nogueira, Professores Auxiliares do Departamento de Electronica,´ Telecomunicac¸oes˜ e Informatica´ da Universidade de Aveiro. o j ´uri presidente Prof. Antonio´ Lu´ısJesus Teixeira Professor Associado da Universidade de Aveiro

Prof. Antonio´ Manuel Duarte Nogueira Professor Auxiliar da Universidade de Aveiro

Prof. Paulo Jorge Salvador Serra Ferreira Professor Auxiliar da Universidade de Aveiro

Prof. Joel Jose´ Puga Coelho Rodrigues Professor Auxiliar da Universidade da Beira Interior agradecimentos Dedico esta dissertac¸ao˜ a` minha fam´ılia pelo apoio durante todos estes seis anos de estudo na Universidade de Aveiro e aos meus amigos que me ajudaram quando eu precisei. palavras-chave IPTV, Televisao˜ Digital, Personalizac¸ao,˜ Personalizac¸ao˜ Automatica,´ Aprendizagem, Servic¸os, Universalidade

resumo Os servic¸os de distribuic¸ao˜ de conteudos´ multimedia´ via estao˜ a crescer e a evoluir exponencialmente. Os servic¸os que se propoem˜ entregar os conteudos´ multimedia´ mais adequados as` preferenciasˆ do cliente necessitam de possuir a capacidade de aprender os perfis dos utilizadores em multiplas´ vertentes. Os perfis dos utilizadores necessitam de ser classificados a diversos n´ıveis: pessoais, contextuais e tecnologicos.´ Perante esta classificac¸ao˜ multi- dimensional dos clientes, o servic¸o ira´ compor de forma automatica´ canais de televisao˜ personalizados ao cliente e ao contexto em que este esta´ inserido nos diversos momentos. Assim, os terminais do cliente deverao,˜ para alem´ das capacidades de visualizac¸ao˜ dos conteudos´ multimedia,´ permitir a interacc¸ao˜ expl´ıcita do utilizador com o servic¸o mas tambem´ toda a interacc¸ao˜ impl´ıcita que fornecera´ informac¸ao˜ contextual ao servidor. Esta dissertac¸ao˜ insere-se num trabalho mais amplo de criac¸ao˜ de um servic¸o de IPTV com personalizac¸ao˜ automatica´ de canais e classificac¸ao˜ de conteudos.´ Em paralelo com o desenvolvimento de um servidor de IPTV, existiu necessidade de criar um cliente movel´ multi-plataforma. Este cliente ira´ permitir ao utilizador a reproduc¸ao˜ dos conteudos´ multimedia´ e a iterac¸ao˜ (expl´ıcita e impl´ıcita) com o servidor. Esta dissertac¸ao˜ apresenta a metodologia e processo de criac¸ao˜ de um cliente IPTV que possa ser executado em multiplas´ plataformas e em diversos tipos de dispositivos. keywords IPTV, Digital Television, Customization, Automatic Customization, Learning, Universality

abstract Internet services that provide the distribution of multimedia contents are growing exponentially and evolving in a constant way. Services that intend to deliver the multimedia contents that are more appropriate to the client preferences need to have the ability to learn the user profiles on multiple contexts. User profiles need to be learned an classified at different levels: personal, contextual and technological. Given this multi-dimensional classification of customers, the service will automatically compose television channels that are customized to the client and to the context where it is inserted at different moments in time. Thus, the client terminals should, in addition to the visualization capabilities of multimedia contents, allow the explicit interaction with the service, but also provide all implicit interactions that provide contextual information to the server. This work is part of a larger developing project that aims to create an IPTV service with automatic channel personalization and contents rating. In parallel with the development of an IPTV server, it was necessary to create a multi- platform mobile client able to fully interact with it. This client will allow users to visualize multimedia contents and interact (explicitly and implicitly) with the server. This dissertation presents the methodology and process of creating an IPTV client that can run on multiple platforms and in different types of devices.

Conte´udo

1 Introdu¸c˜ao 1 1.1 Objectivos ...... 1 1.2 Estrutura ...... 2

2 Enquadramento 3 2.1 Servidor IPTV com Personaliza¸c˜aoAutom´aticade Canais ...... 3 2.1.1 IPTV Server Core ...... 4 2.1.2 Content Link Sources ...... 7 2.1.3 User Profile Learning ...... 7 2.1.4 IPTV Database ...... 8 2.2 Sistemas Operativos/Plataformas M´oveis ...... 8 2.2.1 ...... 9 2.2.2 Symbian ...... 9 2.2.3 MeeGo ...... 10 2.2.4 Android ...... 11 2.2.5 iOS ...... 12 2.3 Tecnologias de Desenvolvimento de Aplica¸c˜oes ...... 13 2.3.1 Linguagens de Programa¸c˜ao ...... 13 2.3.2 Mecanismos de Processamento Multim´edia ...... 16 2.3.3 Comunica¸c˜aoCliente/Servidor ...... 18

3 Arquitectura e Desenvolvimento 19

i 3.1 Requisitos do Sistema ...... 20 3.2 Tecnologias e Plataformas ...... 20 3.2.1 Sistemas Operativos/Plataformas M´oveis ...... 20 3.2.2 Linguagens de Programa¸c˜ao ...... 21 3.2.3 Mecanismos de Processamento Multim´edia ...... 22 3.2.4 Comunica¸c˜aoCliente/Servidor ...... 24 3.3 Aplica¸c˜oesDesenvolvidas ...... 24 3.3.1 Aplica¸c˜ao Java Platform, Micro Edition (Java ME) ...... 24 3.3.2 Aplica¸c˜aoQt ...... 29

4 Testes de Desempenho 43

5 Conclus˜oese Trabalho Futuro 47

A Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt 51

ii Lista de Figuras

2.1 Graphical user interface (GUI) home do Maemo 5...... 9 2.2 GUI home do Symbian S60 5th edition...... 10 2.3 GUI home do MeeGo Netbook...... 11 2.4 GUI home do MeeGo Handset...... 12 2.5 GUI home do MeeGo Tab...... 13 2.6 GUI home do MeeGo In-Vehicle...... 14 2.7 GUI home do Android 2.2...... 15 2.8 GUI home do iOS 4.2...... 16

3.1 Diagrama de pacotes da aplica¸c˜aodesenvolvida em Java ME e algumas rela¸c˜oes...... 26 3.2 Diagrama de classes do pacote DataManager...... 27 3.3 Diagrama de classes do pacote Interface...... 27 3.4 Diagrama de classes do pacote MMAPIInterface...... 28 3.5 GUIs de registo da aplica¸c˜aoJava ME, criadas usando Scalable Vectorial Graphics (SVG)...... 29 3.6 Interface de autentica¸c˜aoda aplica¸c˜aoJava ME...... 30 3.7 Interface de reprodu¸c˜aoda aplica¸c˜aoJava ME...... 30 3.8 Algumas op¸c˜oesda interface de reprodu¸c˜aoda aplica¸c˜aoJava ME...... 31 3.9 Interface de reprodu¸c˜aoda aplica¸c˜aoJava ME em ecr˜ainteiro...... 31 3.10 Diagrama de pacotes da aplica¸c˜aodesenvolvida em Qt...... 33 3.11 Diagrama de classes do pacote serverconnectioni...... 33

iii 3.12 Diagrama de classes do pacote interfaceclientserveri...... 34 3.13 Interface de Autentica¸c˜aoda aplica¸c˜aoQt...... 35 3.14 Interface de Registo da aplica¸c˜aoQt...... 36 3.15 Interface de Estado da aplica¸c˜aoQt...... 37 3.16 Interface de Classifica¸c˜aoda aplica¸c˜aoQt...... 38 3.17 Interface de Principal da aplica¸c˜aoQt criado (IPTVGUI)...... 39 3.18 Interface principal com legendas...... 40

iv Lista de Tabelas

2.1 Diferentes tipos de servi¸cosdisponibilizados ...... 4

4.1 Tempos de inicializa¸c˜aoda aplica¸c˜ao ...... 44 4.2 Tempos de inicializa¸c˜aodo primeiro conte´udo ...... 45 4.3 Tempos de inicializa¸c˜aodo segundo conte´udo ...... 46

A.1 Diferentes grupos do ficheiro de configura¸c˜aoda aplica¸c˜aoQt...... 64

v

Lista de Acr´onimos

API Application Programming Interface

BD Base de Dados

CDC Connected Device Configuration

CLDC Connected Limited Device Configuration

GUI Graphical user interface

IDE Integrated Development Environment

IPTV Internet Protocol Television

Jarpa Java Packaging for Flash Lite Developers

Java ME Java Platform, Micro Edition

JRE Java Runtime Environment

JSR 75 FileConnection APIs

JSR 135 Mobile Media API

JSR 177 Security and Trust Services API

JSR 179 Location API

JSR 226 Scalable 2D Vector Graphics API

vii JVM Java Virtual Machine

MIDP Mobile Information Device Profile

MMAPI Mobile Media API; JSR 135

P2P Peer-to-Peer

Pad

RAM Random Access Memory

RIA Rich Internet application

RSS Really Simple Syndication

RTOS Real-time

SDK Software Development Kit

SGBD Sistema Gestor de Base de Dados

SO Sistema Operativo

SOAP Simple Object Access Protocol

SVG Scalable Vectorial Graphics

TV Televis˜ao(Television)

UML Unified Modeling Language

WRT Web Runtime

XML eXtensible Markup Language

viii Gloss´ario

BitTorrent E´ um protocolo de partilha de dados que utiliza uma arquitectura Peer-to- Peer (P2P) e ´eusado para distribui¸c˜aode grandes quantidades de dados por um elevado n´umerode utilizadores. BitTorrent ´eum dos protocolos actualmente mais comuns em todo o mundo para transferˆenciade arquivos de grande dimens˜ao. O protocolo BitTorrent permite aos seus utilizadores distribuir grandes quantidades de dados sem sobrecarregar nenhum sistema central de armazenamento. Um utilizador, ao mesmo tempo que obt´emdeterminado ficheiro, partilha os “peda¸cos”que j´apossui deste e de outros que j´apossua e deseje disponibilizar na rede. Deste modo, uma determinada partilha n˜aose encontra armazenada num s´oponto cr´ıticoda rede mas distribu´ıdapor m´ultiplosutilizadores da rede de forma indiscriminada. Com esta abordagem ´eposs´ıvel aumentar a disponibilidade dos dados, a sua acessibilidade, a tolerˆanciaa falhas, a largura de banda dos downloads possibilitando a transferˆencia simultˆaneaa partir de v´ariasfontes e ainda a robustez e escalabilidade da rede;

Kernel O Kernel de um sistema operativo ´eentendido como o n´ucleodeste ou, numa tradu¸c˜aoliteral, o seu cerne. Este representa a camada de software mais pr´oxima do hardware, sendo respons´avel por gerir os recursos do sistema computacional como um todo;

Multicast Em multicast a entrega de informa¸c˜ao(pacotes) n˜ao´efeita de forma singular mas sim relativa a um grupo de destinat´ariosque recebem os dados de forma “si- multˆanea”.Esta arquitectura usa uma estrat´egiamuito mais eficiente de entrega de informa¸c˜aoquando esta ´eigual para m´ultiplosdestinat´arios(por exemplo, streaming

ix de um mesmo v´ıdeoem tempo-real), ocupando a liga¸c˜aode transmiss˜aocom um ´unicofluxo de pacotes, criando c´opiasdo fluxo somente quando as liga¸c˜oespara os destinat´ariosse separam. Do ponto de vista da associa¸c˜aosubjacente ao endere¸code rede, esta ´edo tipo um-para-muitos entre o endere¸code rede e os pontos de entrega finais;

Streaming Fluxo de dados multim´ediadistribu´ıdos aos seus clientes atrav´esde uma rede de telecomunica¸c˜oes. Este conceito ´efrequentemente utilizado para distribuir conte´udosmultim´ediaatrav´esda Internet. A utiliza¸c˜aode streaming possibilita que o utilizador aceda ao conte´udomultim´ediade uma forma r´apidae faseada em que n˜aonecessita de transferir todo o conte´udopara come¸cara assistir ao mesmo. Tal como o nome indica, trata–se de um fluxo de dados que ´eusado para apresentar o conte´udono momento ao utilizador sendo depois os dados, tipicamente, perdidos. A informa¸c˜aopode ser transmitida utilizando diversas arquitecturas, atrav´esde unicast, multicast ou broadcast.

x Cap´ıtulo1

Introdu¸c˜ao

Quando pretendemos assistir a um conte´udomultim´ediado nosso interesse na Televis˜ao (Television)(TV), provavelmente necessitamos de fazer Zapping entre diversos canais, ou ent˜aoconsultar a programa¸c˜aodos canais, de modo a obter o hor´ariodos programas pretendidos. Por vezes, perdemos parte do programa devido ao facto de este se ter inici- ado antes de seleccionarmos o respectivo canal. Para eliminar estas situa¸c˜oes,foi criado um servidor de Internet Protocol Television (IPTV) com personaliza¸c˜aoautom´aticade conte´udosde modo a permitir ao utilizador assistir aos seus programas preferidos quando tiver condi¸c˜oespara o fazer, n˜aonecessitando assim de se preocupar com os hor´ariosdos mesmos. Gra¸casao facto do sistema IPTV ter capacidade de aprender as preferˆenciasdos utilizador, ´eposs´ıvel sugerir conte´udosdo seu interesse.

1.1 Objectivos

A cria¸c˜aodo servidor de IPTV, suscitou a necessidade de criar um cliente para o mesmo. Este cliente servir´acomo a interface que o utilizador vai utilizar para reproduzir os conte´udossugeridos e fazer a interac¸c˜aocom o servidor. O objectivo desta disserta¸c˜aofoi criar um cliente com capacidade de ser executado em diversas plataformas e em dispositivos com diversos tipos de caracter´ısticasde hardware. Outro dos objectivos ´epermitir que a aplica¸c˜aopossa ser executada em dispositivos m´oveis, o que obrigou a ter em conta as

1 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

limita¸c˜oesf´ısicasdestes dispositivos.

1.2 Estrutura

Esta disserta¸c˜ao´econstitu´ıdapor 5 cap´ıtulos. De seguida ´eapresentada uma breve descri¸c˜aodo conte´udode cada cap´ıtulo.

Cap´ıtulo1 Neste cap´ıtuloencontra-se uma introdu¸c˜ao`adisserta¸c˜aoe uma descri¸c˜aodo conte´udoda mesma. S˜aotamb´emmencionados os objectivos principais do projecto;

Cap´ıtulo2 Neste cap´ıtulo´eefectuado um enquadramento das tecnologias utilizadas ou consideradas e tamb´emdas caracter´ısticasdo servidor IPTV;

Cap´ıtulo3 Neste cap´ıtulo encontra-se descrito todo o trabalho realizado e as carac- ter´ısticasdas aplica¸c˜oesdesenvolvidas;

Cap´ıtulo4 Neste cap´ıtulos˜aoefectuados alguns testes `aaplica¸c˜aodesenvolvida em Qt;

Cap´ıtulo5 Neste cap´ıtulomque constitui a parte final deste trabalho, s˜aoapresentados alguns t´opicosde trabalho futuro e as principais conclus˜oes.

2 Cap´ıtulo2

Enquadramento

2.1 Servidor IPTV com Personaliza¸c˜aoAutom´atica de Canais

O cliente IPTV a desenvolver tem como objectivo interagir com um servidor, sendo este o respons´avel por disponibilizar os links para os conte´udosmultim´edia.Nesta sec¸c˜ao ir´aser efectuada uma descri¸c˜aodo servidor em quest˜ao. O servidor IPTV[33], para interac¸c˜aocom o cliente, disponibiliza uma s´eriede web services Simple Object Access Protocol (SOAP) que retornam uma String com informa¸c˜oes no formato eXtensible Markup Language (XML). Esta resposta tanto pode ser um link de um conte´udomultim´ediacom as suas respectivas informa¸c˜oes,uma mensagem de erro, ou a confirma¸c˜aode uma ac¸c˜aoexecutada com sucesso. Na tabela 2.1 ´eposs´ıvel encontrar uma lista dos web services disponibilizados e as suas respectivas fun¸c˜oes. Relativamente `aestrutura funcional do servidor, esta ´econstitu´ıdapor quatro m´odulos distintos que podem ser distribu´ıdospor diversas m´aquinas:o IPTV Server Core, que ´e respons´avel por fazer a interac¸c˜aocom o cliente; o Content Link Sources, cujo objectivo ´ea gest˜aodos conte´udosmultim´edia;o User Profile Learning, que tem como fun¸c˜aosugerir os conte´udosaos utilizadores e aprender as suas preferˆenciase, por fim, a IPTV Database, que consiste na gest˜aoda base de dados onde est˜aoarmazenadas as informa¸c˜oesdos conte´udos multim´ediae dos utilizadores. Uma descri¸c˜aomais pormenorizada dos respectivos m´odulos

3 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

e das suas funcionalidades ser´aefectuada posteriormente.

Nome do web service Descri¸c˜aoda fun¸c˜ao User Authentication Permite que um utilizador se autentique de modo a iniciar uma nova sess˜aono servidor User Deauthentication Permite que um utilizador termine a sua sess˜ao New User Permite um utilizador criar uma nova conta New User Validation Permite que um utilizador previamente reg- istado valide o seu registo New Link Request Permite ao cliente pedir o pr´oximo link de um conte´udosugerido e em simultˆaneoclas- sificar o conte´udopreviamente assistido Link List Request Possibilita que um cliente obtenha uma lista de v´arios links para conte´udos,segundo al- guns crit´eriosde procura e selec¸c˜ao Link Feedback Request Permite que um cliente envie o feedback de um conte´udo keep Alive Session Request Permite que um cliente mantenha aberta sess˜aocom o servidor, dado que esta termina automaticamente ap´osalgum tempo de inac- tividade Command Request Permite que um cliente envie um pedido de comando ou opera¸c˜aoque n˜aoexija auten- tica¸c˜ao Tabela 2.1: Diferentes tipos de servi¸cosdisponibilizados

2.1.1 IPTV Server Core

Nesta sec¸c˜aovai ser descrito com mais pormenor o m´odulo IPTV Server Core cuja principal fun¸c˜ao´ea interac¸c˜aocliente-servidor. Este m´odulosegue uma pol´ıticade comunica¸c˜aocliente-servidor t´ıpica,onde o servi- dor tem uma ac¸c˜aopassiva devido ao facto de ser sempre o cliente a tomar a iniciativa relativamente ao envio dos pedidos. Uma das funcionalidades deste m´odulo´eenviar, em determinadas ocasi˜oes,mensagens electr´onicasde e-mail para os utilizadores. Algumas das situa¸c˜oesque causam/provocam o envio de (e-mails) para os utilizadores

4 Cap´ıtulo2. Enquadramento

s˜ao:

ˆ Cria¸c˜aode uma nova conta de utilizador (conta ainda por validar);

ˆ Feedback relativo a uma valida¸c˜aocom sucesso da nova conta (conta validada);

ˆ Excesso de tentativas de login falhadas;

ˆ Broadcast de informa¸c˜oes/not´ıciasgerais sobre o sistema, enviadas para um grupo de utilizadores. Possibilidade de cria¸c˜aode mailing lists segundo diferentes crit´erios relativos `ascaracter´ısticasdos utilizadores.

Vamos passar a uma descri¸c˜aosimples do que ocorre quando efectuamos cada uma das ac¸c˜oesdisponibilizadas pelo servidor, tendo estas ac¸c˜oesj´asido referidas na tabela 2.1.

User Authentication A autentica¸c˜ao´eefectuada por compara¸c˜aodas credenciais definidas no momento da valida¸c˜aoda conta com as fornecidas na tentativa de login. Estas tˆemde coincidir de forma exacta. Caso o utilizador falhe a autentica¸c˜aotrˆesvezes, fica impossibilitado de aceder ao sistema durante um curto per´ıodo de tempo, sendo notificado via e-mail do ocorrido;

User Deauthentication A finaliza¸c˜aoda sess˜aono sistema pode ser manual ou au- tom´atica,dependendo se ´eo utilizador a efectu´a-lavoluntariamente ou se ´eo pr´oprio sistema a despolet´a-la. Caso o utilizador efectue login no servidor utilizando outro sistema computacional, a sess˜aoanterior ´eencerrada e a nova ´enaturalmente inici- ada. Caso a sess˜aoesteja inactiva durante um longo per´ıodo de tempo, este m´odulo efectua tamb´emo fecho autom´aticoda sess˜ao;

New User Esta tarefa permite criar um novo utilizador no sistema, bem como iniciar a constru¸c˜aodo seu perfil de preferˆenciasmultim´edia. Caso as credenciais e/ou os dados relativos ao perfil j´aexistam no sistema, ´edevolvida uma resposta que indica que a cria¸c˜aodo registo falhou, sendo tamb´eminclu´ıdauma descri¸c˜aodos motivos da falha. Um novo utilizador do sistema necessita sempre de validar a sua nova conta.

5 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Para isso, o servidor envia um e-mail para o utilizador com o user name criado e uma password que dever´aalterar ou confirmar;

New User Validation Depois de criada uma nova conta no servidor, ´enecess´arioa valida¸c˜aoda mesma. Este requisito ´eexecutado por uma chamada ao web service New User Validation. Ap´osa conta ser validada, ´eenviado um e-mail para o utilizador a notificar que a valida¸c˜aofoi efectuada com sucesso;

Session Keep Alive Request A chamada deste web service leva o servidor a actualizar a data e hora da ´ultimaactividade do utilizador no sistema, de modo a evitar o logout autom´aticodo utilizador;

New Link Request Relativamente `aresposta da chamada deste web service, os links dos conte´udosmultim´edias˜aoenviados ao utilizador por ordem decrescente da data de sugest˜ao. Estas sugest˜oescontinuam presentes na respectiva tabela da Base de Dados (BD), at´eser recebido pelo servidor algum feedback do utilizador respectivo relativamente ao conte´udomultim´ediaassistido. O cliente, na chamada deste web service, pode optar por enviar tamb´emo feedback de um conte´udomultim´edia;

Link List Request Ao contr´arioda chamada do web service New Link Request, uma chamada do web service Link List Request permite obter uma lista de tamanho vari´avel de links de conte´udosmultim´ediae n˜aosomente um link para um conte´udo multim´edia.Para al´emdisso, ´eposs´ıvel especificar crit´eriosde procura, crit´eriosde ordena¸c˜aoe a origem do conte´udomultim´ediaem termos de organiza¸c˜aointerna do servidor. Por outras palavras, o conte´udomultim´ediaou pertence `alista de conte´udos sugeridos ao utilizador respectivo ou ent˜aopode ser qualquer conte´udomultim´edia presente na BD;

Link Feedback Request Dado que o sistema pretende aprender dinamicamente o per- fil do utilizador, este dever´aespecificar sempre que poss´ıvel um feedback relativo ao conte´udomultim´ediaassistido. Esta tarefa actualiza a classifica¸c˜aoglobal do

6 Cap´ıtulo2. Enquadramento

conte´udo,assim como insere uma nova entrada no hist´oricode feedbacks do utilizador respectivo, para posterior tratamento pelo m´odulo User Profile Learning (sec¸c˜ao 2.1.3);

Command Request A tarefa realizada com recurso `achamada deste web service pode ser muito variada, desde um comando de verifica¸c˜aode disponibilidade do servidor (Ping Request) at´ea um pedido de uma configura¸c˜aoespec´ıficaou execu¸c˜aode uma tarefa que n˜aonecessite da autentica¸c˜aono sistema.

2.1.2 Content Link Sources

Nesta sec¸c˜aoir´aser efectuada uma descri¸c˜aodas funcionalidades do m´odulo Content Link Sources. O objectivo deste m´oduloprende-se com a liga¸c˜aoentre os conte´udosmultim´ediaex- ternos e o servidor IPTV. Para a obten¸c˜aodos dados e links dos conte´udosmultim´edia de forma autom´atica,utilizam-se os Really Simple Syndication (RSS) ou Application Pro- gramming Interfaces (APIs) dos provedores de conte´udos. E´ de notar que o sistema n˜ao armazena os conte´udosmultim´ediapropriamente ditos, armazenando apenas um link para o conte´udomultim´edia. Outro dos objectivos deste m´odulo´ea gest˜aodos conte´udosinseridos, ou seja, actualizar a sua informa¸c˜ao,eliminando-os caso estejam desactivados. Este m´odulopermite tamb´ema inser¸c˜aode conte´udosmultim´ediamanualmente e a gest˜aodos mesmos.

2.1.3 User Profile Learning

Nesta sec¸c˜aoir˜aoser descritas as fun¸c˜oesdo m´odulo User Profile Learning. Este m´odulopossui duas fun¸c˜oes:a sugest˜aode conte´udose a aprendizagem dinˆamica do perfil do Utilizador. A sugest˜aode conte´udos,como o nome indica, ´ea sugest˜aodos conte´udosmultim´ediaaos utilizadores que segundo o seu perfil estejam interessados nos

7 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

mesmos. A aprendizagem dinˆamicado perfil corresponde `aactualiza¸c˜aodas caracter´ısticas e preferˆenciasdo utilizador em quest˜aotendo em conta o feedback enviado pelo utilizador. Este m´odulo,devido `asua complexidade, ainda se encontra com uma implementa¸c˜ao muito simples.

2.1.4 IPTV Database

Em rela¸c˜aoa esta sec¸c˜aoir´aser feita uma descri¸c˜aodo m´odulo IPTV Database. Este m´odulo´eum conjunto formado pela base de dados (Sistema Gestor de Base de Dados (SGBD)) e a API de acesso `abase de dados. Esta API ´eutilizada em todos os m´odulosque necessitem de aceder `abase de dados. Como todos os m´odulosv˜aoter acesso `abase de dados devido ao facto de ser nesta que s˜aoarmazenadas todas as informa¸c˜oes relativas aos conte´udosmultim´ediae aos utilizadores, ´enecess´arioutilizar esta API de modo a manter a persistˆenciana base de dados. Esta API, al´emde complementar as entidades e m´etodos de introdu¸c˜ao,acesso e manipula¸c˜aodos dados armazenados na base de dados, tamb´empossui m´etodos de inicializa¸c˜aoda base de dados de modo a reduzir o tempo de instala¸c˜aodo sistema.

2.2 Sistemas Operativos/Plataformas M´oveis

A aplica¸c˜aodesenvolvida em Qt pode ser executada em Sistema Operativos (SOs) onde ´eposs´ıvel executar o SMPlayer, o MPlayer e aplica¸c˜oesque utilizem gSOAP. Actualmente os SOs que suportam estes requisitos s˜aodiversos, sendo os mais importantes o Windows e o . Nos sistemas baseados en Linux ´ede destacar o Maemo e o MeeGo. Mas al´emdestas plataformas tamb´emexistem projectos para portar Qt para plataformas que j´apermitem executar o MPlayer, por exemplo o Android. Sendo assim, possivelmente esta aplica¸c˜aotamb´empoder´ano futuro ser executada nessas plataformas.

8 Cap´ıtulo2. Enquadramento

2.2.1 Maemo

Esta plataforma de software ´euma plataforma desenvolvida pela para smart- phones e Internet Tablets sendo baseada numa distribui¸c˜aode Linux . O Maemo[6] ´ena sua maior parte baseada em c´odigo open source sendo desenvolvida em colabora¸c˜aocom diversos projectos open source, tais como Linux Kernel, Debian e GNOME. A maioria das suas GUI frameworks e livrarias tˆemorigens no projecto GNOME. A sua ´ultimavers˜aoest´avel foi lan¸cadaa 25 de Maio de 2010 e ´ea vers˜ao5.0 PR1.2. Esta plataforma permite desenvolver aplica¸c˜oesutilizando diversas linguagens de pro- grama¸c˜ao,entre elas C/C++, Java usando o Jalimo JVM, Python, Ruby e Mono. Na figura 2.1 encontra-se a GUI home do Maemo 5.

Figura 2.1: GUI home do Maemo 5. .

2.2.2 Symbian

O SymbianOS[9] foi originalmente desenvolvido pela Symbian Software Limited que em 2008 foi adquirida pela Nokia e uma organiza¸c˜aoindependente chamada Symbian Foun- dation. Em Fevereiro de 2010, o c´odigofonte desta plataforma passou a c´odigoaberto.[32] Actualmente esta ´ea plataforma para dispositivos m´oveis mais utilizada a n´ıvel mundial,

9 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

com 41.2 por cento[29] do mercado dos smartphones. A vers˜aomais recente desta plataforma ´ea Symbianˆ3. Mas a plataforma considerada para este projecto foi a S60 devido ao facto de ser a plataforma do Symbian mais utilizada e a mais recente na altura do in´ıciodo desenvolvimento. Esta plataforma permite o desenvolvimento em diversas linguagens de programa¸c˜ao, como C/C++, Java Me, Python, Flash Lite, Ruby, .NET, Web Runtime (WRT). Na figura 2.2 encontra-se a GUI home do Symbian S60 5th edition.

Figura 2.2: GUI home do Symbian S60 5th edition.

2.2.3 MeeGo

O projecto MeeGo[16][31] ´eum projecto open source baseado em Linux que foi anunci- ado em Fevereiro de 2010, sendo fruto da uni˜aode esfor¸cosentre o SO Moblin[18] da Intel e o SO Maemo da Nokia. Mais recentemente, em Novembro de 2010,[34] a AMD tamb´em se juntou ao projecto. O primeiro lan¸camento do MeeGo foi a 26 de Maio de 2010.

10 Cap´ıtulo2. Enquadramento

Este SO est´aprojectado para ser utilizado em diversos tipos de dispositivos, entre os quais Netbooks (figura 2.3), Handsets (figura 2.4), Tablets (figura 2.5), In-Vehicle figura (2.6), Connected TVs e Media phones. A principal linguagem de desenvolvimento para este SO ´e QT/C++, embora tamb´emsuporte GTK. Os primeiros dispositivos m´oveis que ir˜aoutilizar o MeeGo tˆemlan¸camento projectado para a primeira metade de 2011.[35] Apesar disto, j´aest˜aodispon´ıveis este ano alguns netbooks, Connected TVs e um Tablet Computer (Pad) o WeTab[27] com esta plataforma.

Figura 2.3: GUI home do MeeGo Netbook.

2.2.4 Android

O Android[1] ´eum SO baseado numa vers˜aoalterada do Linux Kernel sendo um partic- ipante na Open Handset Alliance[8]. Foi inicialmente desenvolvido pela Android Inc, uma firma que foi comprada pela Google em 2005. Este SO possui uma grande comunidade de programadores, que programam em Java controlando o dispositivo usando livrarias desenvolvidas pela Google[10]. Este SO pode ser utilizado em diversos tipos de dispositivos, entre os quais telem´oveis,

11 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 2.4: GUI home do MeeGo Handset. netbooks, Connected TVs e Pads. O primeiro dispositivo m´ovel a ser lan¸cadocom o Android foi o HTC Dream, lan¸cadoa 22 Outubro de 2008, e a primeira televis˜aoa ser lan¸cadacom Android ´ea Scandinavia[20]. A primeira vers˜aodeste SO foi lan¸cadaa 21 de Outubro de 2008 e a ´ultimavers˜ao est´avel ´ea vers˜ao2.2 (Froyo). Na figura 2.7 encontra-se a GUI home do Android 2.2.

2.2.5 iOS

O iOS[2] ´eo SO para dispositivos m´oveis da Apple. Este SO foi inicialmente desen- volvido para o iPhone mas tamb´em´eutilizado no iPod Touch, no iPad e na Apple TV. Este SO ´ederivado do Mac OS X, sendo por isso um SO do tipo Unix. A interface do iOS ´ebaseada no conceito de manipula¸c˜aodirecta utilizando toque m´ultiploe em algumas aplica¸c˜oesa interac¸c˜ao´ecomplementada atrav´esde aceler´ometros

12 Cap´ıtulo2. Enquadramento

Figura 2.5: GUI home do MeeGo Tab.

internos. Na figura 2.8 encontra-se a GUI home do iOS 4.2.

2.3 Tecnologias de Desenvolvimento de Aplica¸c˜oes

2.3.1 Linguagens de Programa¸c˜ao

2.3.1.1 JavaFX

JavaFX [4] ´euma plataforma Java para criar e disponibilizar Rich Internet applica- tion (RIA). A vers˜aoactual 1.3 lan¸cadaa 22 de Abril de 2010 permite criar aplica¸c˜oes para Desktops, dispositivos m´oveis, TV set-top boxes, consolas de jogos e leitores de Blu- ray. Esta plataforma corre em qualquer desktop e browser que corra o Java Runtime Environment (JRE) ou em dispositivos m´oveis que corram Java ME. Actualmente JavaFX ´esuportado em Desktops com os seguintes SOs, Windows XP, Windows Vista, Windows 7, Mac OS X, Linux e OpenSolaris. Alguns SOs de dispositivos m´oveis suportados s˜ao, Symbian OS, Windows Mobile, Android e Real-time operating sys- tem (RTOS). Os dispositivos Nokia com o SO Symbian OS n˜aocorrem aplica¸c˜oesque utilizem JavaFX devido ao facto de possu´ırema sua pr´opriavariante de Java ME.

13 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 2.6: GUI home do MeeGo In-Vehicle.

2.3.1.2 Java ME

Java ME[3] ´euma plataforma Java desenhada para dispositivos m´oveis e sistemas em- butidos. Esses dispositivos implementam um perfil que consiste num conjunto de classes que possibilita aos programadores implementarem as aplica¸c˜oesconsoante as caracter´ısticas das aplica¸c˜oesdos pequenos dispositivos computacionais, sendo o mais comum deles o Mobile Information Device Profile (MIDP). O Java ME possui configura¸c˜oesque s˜aobasicamente um conjunto de classes bases denominadas classes core que definem a Java Virtual Machine (JVM) de um pequeno dispositivo computacional. Existem duas configura¸c˜oesdistintas para os dispositivos: para os com maior capacidade computacional o Connected Device Configuration (CDC) e para os com menor capacidade o Connected Limited Device Configuration (CLDC).

2.3.1.3 Lite/Jarpa

A tecnologia Java Packaging for Flash Lite Developers (Jarpa)[15] permite aos pro- gramadores de Java ME expandir as suas aplica¸c˜oesde modo a embutir conte´udos Adobe Flash Lite. Adobe Flash Lite[11] ´euma vers˜aomais leve do , desenhada prin-

14 Cap´ıtulo2. Enquadramento

Figura 2.7: GUI home do Android 2.2. cipalmente para dispositivos m´oveis, permitindo assim os utilizadores destes dispositivos assistirem a conte´udosmultim´ediae aplica¸c˜oesdesenvolvidas usando Adobe’s Flash tools.

2.3.1.4 Qt/C++

Qt[21] ´euma framework multi-plataforma para desenvolvimento em C++, amplamente utilizada para o desenvolvimento de programas com GUI, mas tamb´emutilizada para o desenvolvimento de programas sem GUI, tais como ferramentas de consolas e servidores. Esta framework permite executar os programas desenvolvidos em diversas plataformas sem ser necess´arioalterar o c´odigofonte, sendo apenas necess´ariocompilar o c´odigopara a plataforma pretendida. A framework ´edistribu´ıdapela Nokia para as seguintes platafor- mas: Linux/X11, Embedded Linux, Mac OS X, Microsoft Windows, Windows CE, Sym- bian, Maemo, MeeGo. Desde que a Nokia a tornou c´odigoaberto, tˆemaparecido projectos externos com o objectivo de portar esta framework para outras plataformas, sendo alguns desses projectos Qt for OpenSolaris, Qt for Haiku, Qt for OS/2, Qt-iPhone[23], Android- Lighthouse[22], Qt for webOS, Qt for DX. Actualmente esta framework ´e

15 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 2.8: GUI home do iOS 4.2. amplamente utilizada no ambiente de desktop KDE e nas plataformas Maemo e MeeGo dos dispositivos Nokia. Esta framework ´edistribu´ıdasob a licen¸ca GNU Lesser General Public License sendo livre e de c´odigoaberto.

2.3.2 Mecanismos de Processamento Multim´edia

2.3.2.1 Java Mobile Media API

A Java Mobile Media API (Mobile Media API; JSR 135 (MMAPI))[7] ´euma API para a plataforma Java ME, que dependendo de como for implementada permite que as aplica¸c˜oesreproduzam e gravem sons, v´ıdeose capturem imagens. Esta API foi desen- volvida sobre o Java Community Process como JSR 135. Os formatos de conte´udose protocolos suportados variam consoante o dispositivo.

16 Cap´ıtulo2. Enquadramento

2.3.2.2 MPlayer

O MPlayer[19] ´eum reprodutor multim´edialivre e de c´odigoaberto que est´adispon´ıvel em v´arios SOs tais como, Linux, Microsoft Windows, Mac OS X, OS/2, Syllable, AmigaOS e MorphOS. Este reprodutor multim´ediasuporta v´ariosformatos de media sendo uma aplica¸c˜ao de linha de comandos que tem v´arias GUIs front-ends dependendo do SO, sendo algumas delas o gMplayer escrito em GTK+, o KMPlayer escrito em Qt, o MPlayer OS X Extended (para Mac Os X ), o MPUI-hcb (para Windows) e claro o SMPlayer que ´emulti-plataforma e escrito em Qt. Na seguinte lista est˜aoos formatos de media suportados:

Media fixa: CDs, DVDs, V´ıdeoCDs

Formatos de container: 3GP, AVI, ASF, FLV, Matroska, MOV (QuickTime), MP4, NUT, Ogg, OGM, RealMedia, Bink

Formatos de v´ıdeo: Cinepak, DV, H.263, H.264/MPEG-4 AVC, HuffYUV, Indeo, MJPEG, MPEG-1, MPEG-2, MPEG-4 Part 2, RealVideo, Sorenson, Theora, WMV, Bink

Formatos de ´audio: AAC, AC3, ALAC, AMR, DTS, FLAC, Intel Music Coder, Mon- key’s Audio,´ MP3, Musepack, RealAudio, Shorten, Speex, Vorbis, WMA, Bink

Formatos de legendas: AQTitle, ASS/SSA, CC, JACOsub, MicroDVD, MPsub, OGM, PJS, RT, Sami, SRT, SubViewer, VOBsub, VPlayer

Formatos de imagem: BMP, JPEG, MNG, PCX, PTX, TGA, TIFF, SGI, Sun Raster

Protocolos: RTP, RTSP, HTTP, FTP, MMS, Netstream (mpst://), SMB, ffmpeg:// (Uses FFmpeg’s protocol implementations)

17 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

2.3.3 Comunica¸c˜aoCliente/Servidor

O KXML[5] ´eum parcer de XML para Java ME que consome poucos recursos. E´ do tipo pull parser, ou seja, lˆeo documento um bloco de cada vez e a aplica¸c˜aoconduz o parser pedindo o pr´oximobloco. O gSOAP [13] ´eum conjunto de ferramentas (toolkit) de software, com c´odigoaberto e multi-plataforma que gera c´odigoem C e C++ para SOAP/XML Web services, sendo livre para uso n˜aocomercial. Este toolkit gera C/C++ RPC codigo , XML data bindings e eficientes schema-specific parsers para SOAP Web services[25].

18 Cap´ıtulo3

Arquitectura e Desenvolvimento

Durante o desenvolvimento deste projecto foram seguidas duas abordagens: A primeira abordagem foi desenvolver uma aplica¸c˜aoem JavaME para dispositivos m´oveis. Esta foi posteriormente abandonada devido a problemas com a API Multim´ediae ao facto dos ecr˜as dos dispositivos m´oveis serem de reduzidas dimens˜oese n˜aomuito pr´aticospara assistir a conte´udosmultim´edia. Foi ent˜aonecess´arioadoptar outra abordagem, que consistiu em apostar nos Pad, que no momento estavam a ser muito divulgados devido ao lan¸camento do iPad. Estes dispositivos j´apossuem um ecr˜acom dimens˜oesmais prop´ıciaspara assistir a conte´udosmultim´edia. O pr´oximopasso foi decidir o principal SO para o qual desenvolver esta aplica¸c˜ao.Depois de alguma an´alise,foi escolhido o MeeGo que tinha sido recentemente lan¸cado, sendo resultado de uma parceria entre a Intel e a Nokia e baseado em Linux. Os principais oponentes, nomeadamente o Android e o iOS foram descartados devido ao mercado ser dominado pela Nokia e pela Intel nas respectivas ´areas. Esta aplica¸c˜aofoi desenvolvida tendo em conta a possibilidade de ser utilizada em v´ariasplataformas e diversos tipos de dispositivos.

19 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

3.1 Requisitos do Sistema

Antes de dar in´ıcioao desenvolvimento da aplica¸c˜aofoi necess´arioanalisar os requisitos que a aplica¸c˜aoa desenvolver teria de suportar. Na lista que se segue est˜aoreferidos os requisitos que a aplica¸c˜aoter´aque cumprir:

ˆ Permitir criar um novo utilizador no servidor;

ˆ Permitir efectuar o Login/Logout no servidor;

ˆ Obter o conte´udomultim´ediasugerido pelo servidor;

ˆ Enviar ao servidor a classifica¸c˜ao(feedback) do conte´udoassistido;

ˆ Suportar a reprodu¸c˜aode diversos tipos de conte´udosmultim´edia;

ˆ Suportar protocolos de streaming;

ˆ Ser multi-plataforma.

3.2 Tecnologias e Plataformas

3.2.1 Sistemas Operativos/Plataformas M´oveis

Inicialmente foi considerado o Maemo devido ao interesse no mercado Nokia, tendo sido instalado o Software Development Kit (SDK) desta plataforma para avaliar as suas carac- ter´ısticas. Infelizmente foi descartada devido a serem poucos os dispositivos que utilizam esta plataforma e estes serem pouco difundidos no mercado devido ao seu elevado custo. Os dispositivos que usam esta plataforma s˜aoo Nokia 770, o , o e o , sendo este ´ultimoo ´unicoque utiliza a vers˜ao Maemo 5. Durante o desen- volvimento da aplica¸c˜aoQt, foram tidas em conta as caracter´ısticasdesta plataforma para que esta aplica¸c˜aopossa ser utilizada. Posteriormente, foi considerado o Symbian devido ao interesse no mercado Nokia e tamb´emdevido ao facto de ser o SO de smartphones com

20 Cap´ıtulo3. Arquitectura e Desenvolvimento

maior implementa¸c˜aono mercado, sendo utilizado em 41.2 por cento[29] dos smartphones. A aplica¸c˜ao Java ME foi desenvolvida principalmente para esta plataforma. Quando se notou que a aplica¸c˜ao Java ME, devido `a API multim´edia MMAPI, n˜ao reproduzir v´ıdeos codificados usando os codecs mais difundidos, foi necess´arioanalisar outras op¸c˜oes.Como o MeeGo tinha sido lan¸cadorecentemente e devido ao facto de estar projectada a sua utiliza¸c˜aoem diversos tipos de dispositivos, esta op¸c˜aofoi imediatamente considerada. Outra das raz˜oesque levou a esta escolha foi o facto de se tratar de uma parceria entre duas empresas l´ıderesna sua respectiva ´area,respectivamente a Nokia e a Intel. A aplica¸c˜aoQt foi fundamentalmente desenvolvida com o objectivo de ser utilizada em dispositivos que utilizem esta plataforma.

3.2.2 Linguagens de Programa¸c˜ao

Inicialmente, devido ao facto da aplica¸c˜aoa desenvolver ter como um dos principais requisitos a utiliza¸c˜aoem diversos SOs e a existˆenciade uma interface gr´aficamoderna e agrad´avel, foi considerado o desenvolvimento da aplica¸c˜aoem JavaFX. Esta plataforma tinha sido lan¸cadarecentemente para dispositivos m´oveis. Esta plataforma foi descartada devido ao facto dos dispositivos da marca Nokia, que possuem uma grande fatia do mercado, n˜aoa suportarem. Depois de se descartar a possibilidade de desenvolver a aplica¸c˜aoutilizando JavaFX, foi considerado o desenvolvimento em Java ME devido a existirem muitos dispositivos que permitem executar aplica¸c˜oesdesenvolvidas nesta linguagem de programa¸c˜ao.A aplica¸c˜ao Java ME, como o pr´oprionome indica, foi desenvolvida para esta plataforma. Tendo em conta a falta de capacidade da API multim´ediado Java ME, foi necess´ario pensar em alternativas. Uma das alternativas seria criar uma aplica¸c˜aoem Adobe Flash Lite para reproduzir os conte´udosmultim´ediae aproveitar a parte da l´ogicae da comu- nica¸c˜aocom o servidor IPTV da aplica¸c˜ao Java ME. A comunica¸c˜aoe os pacotes de software seriam criados usando uma tecnologia chamada Jarpa[15], criando assim uma aplica¸c˜aoh´ıbrida.Para criar a aplica¸c˜aofoi considerado utilizar como base um reprodutor

21 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

de conte´udosmultim´ediade c´odigoaberto. Este reprodutor criado em Adobe Flash Lite chama-se Dandelion Player[12]. Mas depois de se efectuar alguns testes com o c´odigoex- emplo da tecnologia Jarpa, notaram-se alguns problemas no emulador do Nokia N97, dado que as aplica¸c˜oesem Adobe Flash Lite n˜aoexecutavam correctamente. Este facto, aliado `anecessidade de licen¸capara desenvolver utilizando Adobe Flash Lite, levou a considerar outras op¸c˜oes,acabando assim por se descartar o uso desta op¸c˜ao. Depois de se verificar a falta de capacidades da API multim´ediado Java ME e de se ter descartado a possibilidade de desenvolver em Adobe Flash Lite foi necess´ariopensar em alternativas. A alternativa encontrada foi desenvolver uma aplica¸c˜aousando a framework Qt e utilizar o MPlayer para reproduzir os conte´udosmultim´edia.Desenvolver a aplica¸c˜ao utilizando esta framework foi a alternativa escolhida devido a ser a framework principal do SO MeeGo e tamb´emdevido ao facto de ser suportada por v´arios SOs.

3.2.3 Mecanismos de Processamento Multim´edia

No decorrer do desenvolvimento da aplica¸c˜ao Java ME, foi necess´ariopesquisar um mecanismo para reproduzir os conte´udosmultim´edia,encontrando-se a (Java Mobile Media API)MMAPI. Foi ent˜aonecess´ariopesquisar como se utilizava esta API, analisando-se uma demo da utiliza¸c˜aoda mesma disponibilizada no NetBeans. Esta demo est´adispon´ıvel se efectuarmos os seguintes passos no NetBeans 6.7.1 : Abrir o menu File, seleccionar New Project..., depois na janela que aparecer, seleccionar o direct´orio Samples/Java ME(MIDP) e por fim seleccionar o projecto MMAPI Demos. Depois de analisar esta demo ficou claro que parte do c´odigopoderia ser utilizado para o projecto a desenvolver, dado que a licen¸ca desta demo o permitia. Depois de se ter notado a falta de capacidades da API multim´ediado Java ME, foi necess´ariopensar em alternativas. Como foi notado que a maior dificuldade na aplica¸c˜aoa desenvolver seria a existˆenciade um mecanismo de processamento multim´ediaque supor- tasse v´ariostipos de conte´udosmultim´ediae tamb´emsuportasse streaming de conte´udos sobre a rede, procurou-se um mecanismo com essas caracter´ısticas,escolhendo-se por fim o

22 Cap´ıtulo3. Arquitectura e Desenvolvimento

MPlayer. Esta escolha deve-se ao facto do MPlayer cumprir todos os requisitos pretendi- dos. Depois desta escolha procurou-se uma aplica¸c˜aode c´odigoaberto que utilizasse este mecanismo e que fosse desenvolvida usando Qt para servir de base `aaplica¸c˜aoa desen- volver. Procurou-se um reprodutor multim´ediacom estas caracter´ısticaspara se explorar melhor todas as capacidades do MPlayer, sendo o reprodutor multim´ediaencontrado o SMPlayer. O SMPlayer[24] ´eum reprodutor multim´ediamulti-plataforma livre e de c´odigoaberto, sendo um front-end para o MPlayer, ou seja, faz a interac¸c˜aoentre o MPlayer[19] e o utilizador. Como o SMPlayer utiliza a framework Qt e ´ebaseado no MPlayer, ´ebastante port´avel devido ao facto de tanto o Qt como o MPlayer estarem dispon´ıveis em v´arios SOs. Na seguinte lista encontram-se as principais caracter´ısticasdesta aplica¸c˜ao:

ˆ Legendas configur´aveis;

ˆ Possibilidade de seleccionar a pista de ´audiodo conte´udomultim´edia;

ˆ Possibilidade de avan¸carou retroceder o v´ıdeoutilizando a roda do rato;

ˆ Possui um equalizador de v´ıdeo;

ˆ Permite reproduzir os conte´udosem diversas velocidades;

ˆ Permite aplicar filtros ao conte´udomultim´edia;

ˆ Permite ajustar o atraso das legendas e do ´audio;

ˆ Possui op¸c˜oesavan¸cadas,tais como seleccionar um demuxer ou os codecs de v´ıdeoe ´audio;

ˆ Possui lista de reprodu¸c˜ao;

ˆ Possui uma interface de preferˆenciaspara facilmente permitir a configura¸c˜aoda aplica¸c˜ao;

ˆ Possibilidade de automaticamente pesquisar legendas em opensubtitles.org;

23 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

ˆ Possui tradu¸c˜oesem mais de 20 linguagens;

ˆ E´ multi-plataforma possuindo bin´ariospara Windows e Linux.

Esta aplica¸c˜aofoi utilizada como base para a aplica¸c˜aoQt e mantiveram-se todas as suas caracter´ısticasprincipais.

3.2.4 Comunica¸c˜aoCliente/Servidor

Durante o desenvolvimento da aplica¸c˜ao Java ME, foi necess´arioutilizar um parser de XML para processar as mensagens recebidas do servidor, sendo utilizado o KXML devido a ser um parser de XML que consome poucos recursos. Para desenvolver a aplica¸c˜aoQt era necess´arioque esta aplica¸c˜aofosse cliente dos Web services disponibilizados pelo servidor. Para criar o c´odigopara essa comunica¸c˜ao utilizou-se o gSOAP[13].

3.3 Aplica¸c˜oesDesenvolvidas

3.3.1 Aplica¸c˜ao Java ME

3.3.1.1 Requisitos T´ecnicos

As caracter´ısticasde hardware necess´ariaspara executar esta aplica¸c˜aotendem a variar consoante o tipo de conte´udomultim´ediaque se pretende reproduzir e a qualidade do mesmo. O dispositivo necessita de acesso `arede onde se encontra o servidor IPTV e tamb´emnecessita de acesso `arede onde se encontra o conte´udomultim´ediaa reproduzir. Os requisitos t´ecnicosde software necess´ariospara se executar esta aplica¸c˜aos˜aoo suporte da plataforma Java ME com as caracter´ısticasreferidas na seguinte lista:

ˆ Utilizar a configura¸c˜ao CLDC-1.0 ou superior;

ˆ Utilizar o perfil MIDP-2.1 ou superior;

24 Cap´ıtulo3. Arquitectura e Desenvolvimento

ˆ Suportar a API FileConnection APIs (JSR 75);

ˆ Suportar a API Mobile Media API (JSR 135);

ˆ Suportar a API Security and Trust Services API (JSR 177);

ˆ Suportar a API Location API (JSR 179);

ˆ Suportar a API Scalable 2D Vector Graphics API (JSR 226).

3.3.1.2 Tecnologias Utilizadas

Nesta aplica¸c˜aoforam usadas as seguintes tecnologias: JavaMe MMAPI Sample devido ao facto de ser de c´odigoaberto e servir como uma boa base para o desenvolvimento da parte respons´avel por reproduzir os conte´udosmultim´ediae o KXML, que foi utilizado para fazer o parsing das respostas do servidor. Esta aplica¸c˜aofoi desenvolvida usando o NetBeans 6.7.1 para a plataforma Java ME.

3.3.1.3 Arquitectura

Relativamente `aarquitectura interna da aplica¸c˜ao Java ME, esta ´econstitu´ıdapor trˆes pacotes, estando estes representados no diagrama Unified Modeling Language (UML) da figura 3.1 que mostra o encapsulamento interno dos pacotes criados. No pacote DataMan- ager ´eefectuada a l´ogicae a interac¸c˜aocliente servidor e tamb´ems˜aoarmazenadas todas as informa¸c˜oesdos conte´udosmultim´ediae do utilizador. O pacote Interface ´eonde se encontra o c´odigorelativo `a MIDlet da interface de registo de um novo utilizador. No pacote MMAPIInterface residem todas as classes relativas `ademo da MMAPI que serviu de base para a interface onde ´eefectuada a autentica¸c˜aodo utilizador e s˜aoreproduzidos os conte´udosmultim´edia. Na figura 3.2 encontra-se o diagrama de classes do pacote MMAPIInterface, onde as principais classes s˜aoa MyData e a ManageData. Na MyData s˜aoarmazenados todos os dados do utilizador e efectuadas a maioria das opera¸c˜oesque envolvem o contacto com o servidor. Na outra classe principal, ManageData, s˜aoarmazenadas as informa¸c˜oesrelativas

25 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

`asess˜ao,tais como, se o utilizador est´aautenticado, os links dos conte´udosmultim´ediae a thread relativa ao keepalive cuja fun¸c˜ao´eevitar que o utilizador seja desautenticado no servidor caso este fique inactivo por muito tempo. O diagrama de classes do pacote Interface est´ailustrado na figura 3.3, onde existe apenas uma classe denominada Register, ´ea MIDlet da interface de registo. No diagrama de classes do pacote MMAPIInterface, ilustrado na figura 3.4, s˜aoap- resentadas as classes necess´ariaspara a interface de autentica¸c˜aoe para a interface de reprodu¸c˜aodos conte´udosmultim´edia.Estas classes s˜aouma c´opiadas respectivas classes do projecto MMAPI Demos que serviu de base para este projecto. Estas classes sofreram altera¸c˜oesde modo a inclu´ırema interface de autentica¸c˜aoe permitirem a reprodu¸c˜aodos conte´udossugeridos pelo servidor.

Figura 3.1: Diagrama de pacotes da aplica¸c˜aodesenvolvida em Java ME e algumas rela¸c˜oes.

3.3.1.4 Desenvolvimento

A fase inicial do desenvolvimento desta aplica¸c˜aopassou pela an´aliseda possibilidade da implementa¸c˜aode todos os requisitos usando esta plataforma. Infelizmente apenas foi poss´ıvel concluir que as capacidades da MMAPI eram insuficientes j´adepois da aplica¸c˜ao estar quase conclu´ıda.

26 Cap´ıtulo3. Arquitectura e Desenvolvimento

Figura 3.2: Diagrama de classes do pacote DataManager.

Figura 3.3: Diagrama de classes do pacote Interface.

Ap´osa an´alisereferida anteriormente, seguiu-se o desenvolvimento da comunica¸c˜aocom o servidor. Podemos observar o diagrama de classes da figura 3.2 onde est˜aorepresentadas as classes respons´aveis pela l´ogicae comunica¸c˜aocom o servidor. De seguida vai ser dado in´ıcio`aexplica¸c˜aoda fun¸c˜aodas classes principais. A MyData ´eonde s˜aoarmazenados os dados do utilizador e efectuadas a maioria das opera¸c˜oesque envolvem o contacto com o servidor. Outra classe principal ´ea ManageData onde s˜ao armazenadas as informa¸c˜oesrelativas `asess˜ao,tais como, se o utilizador est´aautenticado, os links dos conte´udosmultim´ediae a thread relativa ao keepalive. A classe keepalive ´e

27 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.4: Diagrama de classes do pacote MMAPIInterface. respons´avel por evitar que o utilizador seja desautenticado no servidor caso fique inactivo por muito tempo. A classe HTTPMSG possui m´etodos est´aticoscuja fun¸c˜ao´eenviar as mensagens para o servidor e retornar a respectiva resposta. A classe UTILS ´eonde est˜ao armazenadas informa¸c˜oesde configura¸c˜ao,tais como o endere¸codo servidor e o time out para manter a sess˜aoactiva. Por fim, temos o pacote Xml onde se encontram todas as classes relativas ao parsing(leitura) das mensagens XML recebidas. Depois de criada a comunica¸c˜aocom o servidor, foram criados alguns GUIs usando SVG; o ´unicoimplementado encontra-se no pacote Interface mostrado na figura 3.3.O GUI implementado nesta fase ´ea interface de registo. Na figura 3.5 encontra-se a interface de registo desenvolvida, sendo de notar que esta interface ainda iria sofrer melhorias. Devido ao facto de esta aplica¸c˜aoter sido abandonada, estas n˜aoforam efectuadas. Por fim, iniciou-se a integra¸c˜aocom o projecto MMAPI Demos que serviu de base para a utiliza¸c˜aoda MMAPI, cujo objectivo ´ereproduzir os conte´udossugeridos pelo servidor. O c´odigodesta integra¸c˜aoest´ano pacote MMAPIInterface, correspondente `afigura 3.4. As classes presentes neste pacote s˜aouma c´opiadas respectivas classes do projecto MMAPI Demos. Estas classes sofreram altera¸c˜oesde modo a permitir a interac¸c˜aocom o servidor e a inclus˜aoda interface de autentica¸c˜ao.Na figura 3.6 encontra-se a interface de autentica¸c˜ao e nas figuras 3.7, 3.8 e 3.9 encontram-se a interface de reprodu¸c˜aoe algumas das suas op¸c˜oes. Quando a integra¸c˜aoestava quase completa efectuaram-se alguns testes e verificou-se

28 Cap´ıtulo3. Arquitectura e Desenvolvimento

que quando se tentava reproduzir algum conte´udoque n˜aoestivesse alojado no dispositivo, a MMAPI transferia primeiro o conte´udopara o dispositivo e s´ono fim ´eque o reproduzia, o que introduzia um tempo de espera inaceit´avel antes da reprodu¸c˜aodo conte´udo.Depois de ter sido efectuada uma pesquisa por solu¸c˜oespara resolver o problema, n˜aofoi encontrada nenhuma solu¸c˜aovi´avel. Isto aliado ao facto da MMAPI n˜aoreproduzir diversos dos codecs mais utilizados actualmente, tais como o h.264, levou ao abandono do desenvolvimento desta aplica¸c˜aoe ao in´ıcioda procura de alternativas. E´ preciso ter em conta que esta aplica¸c˜aoest´aintegrada com uma vers˜aomais antiga do servidor. Nesta vers˜aoa interac¸c˜aocom o servidor n˜ao´eefectuada atrav´esdo acesso a web services, mas sim atrav´esde http onde se envia a vari´avel iptvxml com o XML relativo `aopera¸c˜aoque se deseja efectuar e recebe-se a resposta em XML na mesma vari´avel. Para desenvolver esta aplica¸c˜aoutilizou-se o NetBeans devido `aexperiˆenciaanterior com este software, como tamb´emse utilizou o emulador do Nokia N97 para testar a aplica¸c˜ao.

Figura 3.5: GUIs de registo da aplica¸c˜ao Java ME, criadas usando SVG.

3.3.2 Aplica¸c˜aoQt

3.3.2.1 Requisitos T´ecnicos

A aplica¸c˜aodesenvolvida usando Qt teve como base o SMPlayer e a ´unicabiblioteca externa usada foi o gSOAP, logo esta aplica¸c˜aopode ser executada em todos os sistemas onde tanto o SMPlayer como o gsoap possam ser utilizados. Alguns dos SOs onde esta

29 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.6: Interface de autentica¸c˜aoda aplica¸c˜ao Java ME.

Figura 3.7: Interface de reprodu¸c˜aoda aplica¸c˜ao Java ME.

aplica¸c˜aopode ser utilizada s˜aoo Windows e o Linux. Como o Maemo e o MeeGo s˜ao baseados em Linux, esta aplica¸c˜aotamb´empode ser utilizada nestas plataformas. As caracter´ısticasde hardware necess´ariaspara executar esta aplica¸c˜aotendem a variar consoante o tipo de conte´udomultim´ediaque se pretende reproduzir e a qualidade do mesmo. O dispositivo necessita de acesso `arede onde se encontra o servidor IPTV e tamb´emnecessita de acesso `arede onde se encontra o conte´udomultim´ediaa reproduzir.

30 Cap´ıtulo3. Arquitectura e Desenvolvimento

Figura 3.8: Algumas op¸c˜oesda interface de reprodu¸c˜aoda aplica¸c˜ao Java ME.

Figura 3.9: Interface de reprodu¸c˜aoda aplica¸c˜ao Java ME em ecr˜ainteiro.

3.3.2.2 Tecnologias Utilizadas

Esta aplica¸c˜aofoi desenvolvida em C++ usando as ferramentas Qt Creator, Qt Linguist e o toolkit do gSOAP. O MPlayer[19] foi o mecanismo de reprodu¸c˜aoutilizado devido a ser multi-plataforma, `asua constante evolu¸c˜ao,`assuas capacidades de reproduzir a maioria dos formatos e codecs e tamb´empelo facto de suportar diversos protocolos de streaming. O SMPlayer foi utilizado como base para possibilitar o desenvolvimento de uma aplica¸c˜ao que explore a maioria das capacidades do MPlayer. Este reprodutor de conte´udosmul-

31 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

tim´ediaserviu como base devido ao facto de ser de c´odigoaberto, multi-plataforma, alta- mente configur´avel, possuir muitas funcionalidades, ser est´avel, largamente difundido e o motor que utiliza para reproduzir os conte´udosmultim´ediaser o MPlayer. Para criar a comunica¸c˜aocom o servidor foi utilizado o gSOAP toolkit. Estas fer- ramentas foram utilizadas para facilitar a integra¸c˜aoda aplica¸c˜aocom os Web Services SOAP disponibilizados pelo servidor e devido ao facto de serem suportadas em diversas plataformas, para al´emde tamb´emserem sugeridas no f´orumda Nokia[14]. As ferramentas utilizadas foram os comandos wsdl2h e soapcpp2.

3.3.2.3 Arquitectura

Na figura 3.10 encontra-se um diagrama que representa a arquitectura geral da aplica¸c˜ao. E´ de notar que o pacote SMPlayer representa todas as classes e pacotes relacionados com o mesmo. A classe e os pacotes inseridos no pacote SMPlayer foram criadas no ˆambito desta disserta¸c˜ao.A classe iptvclientgui foi criada com o objectivo de inserir mais uma interface `a aplica¸c˜ao,sendo esta mais vocacionada para dispositivos com Thouchscreen e ecr˜asde pe- quenas e m´ediasdimens˜oes.Esta classe teve como base a classe DefaultGuii do SMPlayer. O pacote serverconnectioni cont´emas classes relacionadas com a interac¸c˜aocliente-servidor e a l´ogicaassociada a esta interac¸c˜ao.Por fim, o pacote interfaceclientserveri cont´emas classes relacionadas com as interfaces de autentica¸c˜ao,estado, classifica¸c˜aoe registos cria- dos. Na figura 3.11 encontra-se um diagrama de classes do pacote serverconnectioni. Este pacote cont´emas classes relacionadas com a interac¸c˜aocliente-servidor e a l´ogicaassociada a esta interac¸c˜ao. Entre ambas as classes ´ede destacar a clientlogic que gere toda a informa¸c˜aoe l´ogicanecess´ariaspara a interac¸c˜aocom o servidor. A classe keepAlive ´e respons´avel por evitar que o utilizador seja desautenticado no servidor caso fique inactivo por muito tempo. A classe WsClient ´erespons´avel pela abstrac¸c˜aona chamada aos Web Services e a transi¸c˜aodos tipos de dados usados no gSOAP para os usados no Qt. As restantes classes neste pacote foram geradas automaticamente pelo gSOAP.

32 Cap´ıtulo3. Arquitectura e Desenvolvimento

Na figura 3.12 encontra-se o diagrama de classes do pacote interfaceclientserveri.A classe autenticationdialog est´arelacionada com a interface e l´ogicada GUI de autentica¸c˜ao mostrada na figura 3.13. A classe state iptv est´arelacionada com a interface e l´ogicada GUI do estado, sendo apresentada na figura 3.15. A classe rate iptv est´arelacionada com a interface e l´ogicada GUI de rate mostrada na figura 3.16 e por fim a classe regist est´a relacionada com a interface e l´ogicada GUI do registo e ´emostrada na figura 3.14.

Figura 3.10: Diagrama de pacotes da aplica¸c˜aodesenvolvida em Qt.

Figura 3.11: Diagrama de classes do pacote serverconnectioni.

33 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.12: Diagrama de classes do pacote interfaceclientserveri.

3.3.2.4 Desenvolvimento

Para o desenvolvimento desta aplica¸c˜aofoi inicialmente verificado se era poss´ıvel imple- mentar todos os requisitos usando esta plataforma. Devido aos problemas com a aplica¸c˜ao Java ME, testou-se o mecanismo de processamento multim´ediamais profundamente para ver se cumpria os requisitos. Depois desta an´alise,come¸coupor se desenvolver a comunica¸c˜aocom o servidor. Pode- mos observar o diagrama de classes da figura 3.11, onde est˜aorepresentadas as classes respons´aveis pela l´ogicae comunica¸c˜aocom o servidor. Inicio agora a explica¸c˜aoda fun¸c˜ao das classes. A classe clientlogic ´ea que gere toda a informa¸c˜aoe l´ogicanecess´ariaspara a interac¸c˜aocom o servidor. A classe WsClient ´erespons´avel por uma abstrac¸c˜aona chamada aos Web Services e a transi¸c˜aodos tipos de dados usados no gSOAP para os usados no Qt. A classe keepAlive ´erespons´avel por evitar que o utilizador seja desauten- ticado no servidor caso fique inactivo por muito tempo. As outras classes foram geradas automaticamente usando o gSOAP Toolkit e a sua fun¸c˜ao´ea comunica¸c˜aocom os Web Services disponibilizados pelo servidor. Depois de criada a comunica¸c˜aocom o servidor, iniciou-se a integra¸c˜aodo c´odigodo SMPlayer de modo a permitir reproduzir os conte´udossugeridos pelo servidor. Depois

34 Cap´ıtulo3. Arquitectura e Desenvolvimento

Figura 3.13: Interface de Autentica¸c˜aoda aplica¸c˜aoQt. de se conseguir reproduzir os conte´udosfornecidos e classific´a-los,iniciou-se a cria¸c˜aode mais uma interface principal para o SMPlayer, ilustrada na figura 3.17. Para a cria¸c˜ao desta interface criou-se a classe iptvclientgui que teve como base a classe DefaultGuii do SMPlayer. E´ de notar que esta interface foi sofrendo melhorias sucessivas durante o de- senvolvimento da aplica¸c˜ao. Durante o desenvolvimento da aplica¸c˜aotamb´emse teve o cuidado de manter todas as caracter´ısticase capacidades do SMPlayer. Depois de se ter criado mais uma interface principal, criaram-se e implementaram-se as seguintes interfaces: a interface de autentica¸c˜aomostrada na figura 3.13, a interface de Estado mostrada na figura 3.15 , a interface de classifica¸c˜aomostrada na figura 3.16 e, por fim, a interface de registo mostrada na figura 3.14. Depois da cria¸c˜aode todas as interfaces, iniciou-se a melhoria de certos detalhes da aplica¸c˜ao,nomeadamente melhoria na gest˜aode erros e adi¸c˜aoda capacidade de criar tradu¸c˜oesfacilmente usando a ferramenta Qt Linguist. De momento, j´afoi criada a tradu¸c˜aoem Portuguˆese tendo em conta que a l´ınguabase da aplica¸c˜ao´eInglˆes,a aplica¸c˜ao j´aest´adispon´ıvel em Inglˆese Portuguˆes.Al´emdas l´ınguastamb´emfoi criado um novo e mais intuitivo m´etodo de classificar os conte´udosmultim´edia,sendo este as estrelas pre-

35 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.14: Interface de Registo da aplica¸c˜aoQt. sentes na interface da figura 3.17. Tamb´emse adicionou a possibilidade do utilizador se autenticar automaticamente, de modo a ficar totalmente abstra´ıdodas comunica¸c˜oescom o servidor. Para desenvolver esta aplica¸c˜aoutilizou-se o Qt Linguist e o Qt Creator devido ao facto de serem as ferramentas sugeridas para desenvolver aplica¸c˜oespara a plataforma MeeGo. Tamb´emse utilizou o gSOAP Toolkit para o desenvolvimento da comunica¸c˜aocom os Web Services servidor.

3.3.2.5 Caracter´ısticase Configura¸c˜oes

Esta aplica¸c˜aofoi desenvolvida tendo em conta a capacidade de ser executada em diversos dispositivos com caracter´ısticasdiferentes. Esta aplica¸c˜ao,al´emde possuir quatro interfaces principais, tamb´emse integra com a plataforma em que est´aa ser executada, tanto no esquema de cores como no estilo e na linguagem, caso possua uma tradu¸c˜aopara a respectiva linguagem. Al´emde possuir todas estas integra¸c˜oestamb´em´eposs´ıvel, atrav´es da altera¸c˜aodo ficheiro de configura¸c˜ao,alterar o aspecto da interface principal de diversas

36 Cap´ıtulo3. Arquitectura e Desenvolvimento

Figura 3.15: Interface de Estado da aplica¸c˜aoQt. formas. O ficheiro de configura¸c˜oespossui muitos crit´eriosa configurar, sendo a maioria deles herdados do SMPlayer e os outros criados para a integra¸c˜aocom o servidor ou para aumen- tar as capacidades de configura¸c˜aodas interfaces. Este ficheiro no SO Linux encontra-se na seguinte localiza¸c˜ao /.conf/iptvplayer/iptvplayer.ini, onde `apasta ( /) corresponde a pasta local do utilizador, o que significa que cada utilizador vai ter a sua pr´opriacon- figura¸c˜ao.No anexo A encontram-se um exemplo de um ficheiro de configura¸c˜aoe a tabela A.1 que contem informa¸c˜oesrelativas a cada grupo de configura¸c˜aoe a sua posi¸c˜aono ficheiro previamente referido. Os grupos que foram adicionados a este ficheiro de configura¸c˜aono ˆambito desta dis- serta¸c˜aoforam o iptvSettings e o iptv gui. Este ´ultimo´emuito semelhante ao default gui devido ao facto de a classe que cria este grupo ser baseada na classe que cria o grupo default gui. Al´emdestes grupos, tamb´emfoi necess´ariofazer uma pequena altera¸c˜aono c´odigoque cria o grupo playlist contentsi, de modo a permitir o correcto funcionamento do sistema sendo tamb´emadicionadas algumas ac¸c˜oesao grupo actions. De seguida vai ser feita uma descri¸c˜aoda fun¸c˜aodas configura¸c˜oesadicionadas ao

37 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.16: Interface de Classifica¸c˜aoda aplica¸c˜aoQt.

ficheiro de configura¸c˜ao. Come¸candopelo grupo iptvSettings, na linha 269 temos a configura¸c˜aodo watchmode, que ´ebasicamente o modo em que se estava a assistir ao conte´udomultim´ediaquando se fechou a aplica¸c˜ao;na linha 270 temos a configura¸c˜aodo defaultFeedback, que ´ea cota¸c˜ao dada por defeito ao conte´udomultim´edia;na linha 271 temos a configura¸c˜aodo serverURL, que ´eo endere¸conecess´ariopara se aceder aos web services disponibilizados pelo servidor; nas linhas 272 e 273 temos a configura¸c˜aodo login e da pass, o nome do utilizador e a respectiva senha secreta, que s˜aoarmazenadas caso a configura¸c˜aoda linha 274, o remem- berme seja igual a true. Esta op¸c˜aoest´arelacionada com a capacidade do sistema ar- mazenar as informa¸c˜oesrelacionadas com o utilizador. Na linha 270 temos a configura¸c˜ao do autoautenticate, que est´arelacionada com a capacidade do utilizador se autenticar au- tomaticamente sem necessitar de utilizar a interface de autentica¸c˜ao,permitindo assim criar-se uma abstrac¸c˜aodo utilizador relativamente `acomunica¸c˜aocom o servidor. No grupo actions, que associa ac¸c˜oesa atalhos de teclados, foram adicionadas as seguintes ac¸c˜oes:a ac¸c˜ao state iptv, linha 515, que mostra a interface de estado ilustrada na figura 3.15; a ac¸c˜ao rate iptv, linha 516, que mostra a interface de classifica¸c˜aoilustrada na figura 3.16 e as ac¸c˜oesdas linhas 517 a 522 que s˜aoac¸c˜oesrelacionadas com a classifica¸c˜ao

38 Cap´ıtulo3. Arquitectura e Desenvolvimento

Figura 3.17: Interface de Principal da aplica¸c˜aoQt criado (IPTVGUI).

do conte´udopor exemplo, se se efectuar a ac¸c˜ao star5 iptv o conte´udo´eclassificado com 5 estrelas. O grupo playlist contentsi teve de sofrer algumas altera¸c˜oespara permitir a correcta integra¸c˜aocom o servidor. Uma dessas altera¸c˜oesteve em conta que ao armazenar um item tamb´emter´ade ser armazenado o seu respectivo id e author. Esta altera¸c˜aoteve de ser efectuada devido ao facto de quando se termina a aplica¸c˜aoo item que est´aa ser reproduzido n˜ao´eclassificado, logo, se a op¸c˜aode armazenar os conte´udosda lista de reprodu¸c˜aoestiver activa este conte´udoir´aser armazenado e depois carregado quando a aplica¸c˜aoiniciar novamente. O problema surge no momento em que o cliente solicita ao servidor um novo conte´udo.O servidor pode voltar a sugerir o conte´udoarmazenado, mas como a aplica¸c˜aon˜aopermite adicionar duas vezes o mesmo conte´udoeste n˜ao´eadicionado, por isso para o cliente posteriormente conseguir classificar o conte´udoarmazenado necessita tamb´emde armazenar o seu id. De seguida vai ser efectuada uma descri¸c˜aodas configura¸c˜oesdo grupo iptv gui que, como referido anteriormente, ´emuito semelhante ao grupo default gui devido ao facto de a classe que cria este grupo ser baseada na classe que cria o grupo default gui. Al´em

39 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Figura 3.18: Interface principal com legendas.

das configura¸c˜oescomuns que funcionam de modo semelhante, tamb´emforam adicionadas configura¸c˜oespara permitir alterar o tamanho dos elementos das barras da interface. Se essas configura¸c˜oesde tamanho forem zero ou inferiores, ser´autilizado o tamanho padr˜ao. Nas linhas 538 e 539 encontra-se a configura¸c˜aodo tamanho dos elementos da toolbar1, nas linhas 540 e 541 encontra-se a configura¸c˜aodo tamanho dos elementos da controlwidget e da controlwidget mini e por fim nas linhas 542 e 543 encontra-se a configura¸c˜aodo tamanho dos elementos do floating control sendo esta a barra que aparece quando se est´ano modo de ecr˜ainteiro. Relativamente `asconfigura¸c˜oessimilares ao grupo default gui, podemos destacar: a actions\toolbar1 na linha 534 que configura os elementos a aparecerem na toolbar1 ; a actions\controlwidget na linha 535 que configura os elementos a aparecerem na controlwidget; a actions\controlwidget mini na linha 536 que configura os elementos a aparecerem na controlwidget mini e a actions\floating control na linha 537 que configura os elementos a aparecerem na floating control. Relativamente aos elementos que podem ser adicionados em cada barra, estes s˜aotodas as ac¸c˜oespresentes no grupo actions e mais alguns que foram criados propositadamente para esse efeito, sendo estes por exemplo o rewindbutton action, o forwardbutton action, o timeslider action, o volumeslider action e o

40 Cap´ıtulo3. Arquitectura e Desenvolvimento

ratebutton action. Este ´ultimofoi criado no ˆambito desta disserta¸c˜aopara que o mecanismo de classifica¸c˜aoocupe menos espa¸cona barra. Na figura 3.18 encontra-se uma imagem com a interface principal com legendas a indicar o nome de cada barra, sendo de notar que a barra controlwidget aparece quando o tamanho da janela proporcionar o seu aparecimento; caso contr´ario,no lugar desta aparece a controlwidget mini. Depois de analisar as capacidades de configura¸c˜aodesta aplica¸c˜ao,podemos concluir que apenas editando o ficheiro de configura¸c˜ao´eposs´ıvel adaptar a aplica¸c˜aon˜aoapenas a diversos tipos de dispositivos com caracter´ısticase capacidades muito distintas mas tamb´em a diversos tipos de utilizadores.

41

Cap´ıtulo4

Testes de Desempenho

A maioria dos testes efectuados `aaplica¸c˜aoQt foram executados durante o desen- volvimento da mesma, de modo a verificar se as altera¸c˜oesintroduzidas n˜aoafectaram o correcto funcionamento da aplica¸c˜ao. No entanto, ap´oso desenvolvimento estar comple- tado, efectuaram-se alguns testes para avaliar o desempenho da aplica¸c˜ao,nomeadamente o tempo que a aplica¸c˜aodemora a iniciar e o tempo que demora desde que se faz um pedido de um conte´udomultim´ediaat´eo mesmo come¸cara ser reproduzido. Os testes foram efectuados num sistema computacional com as seguintes caracter´ısticas gerais:

SO Kubuntu 10.04 Desktop edition;

Processador Um processador Intel Centrino Duo T2300 Dual Core 1.66 GHZ, 2MB cache;

RAM 3 GBytes;

Disco(s) Um disco de 100 GBytes IDE;

Fornecedor Asus;

Placa gr´afica ATI X1600 com 256MB de memoria dedicada.

Os testes `aaplica¸c˜aoQt n˜aoforam executados directamente no SDK do MeeGo porque o tempo de resposta deste era exageradamente elevado, devido ao facto de a acelera¸c˜ao3D

43 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

n˜aofuncionar correctamente neste sistema computacional. Esta situa¸c˜aoocorreu devido ao facto da placa gr´aficaj´ase inserir na classe legacy, n˜aoexistindo assim drivers propriet´arios para a vers˜aodo SO que o sistema computacional utilizava. Para medir os valores presentes nas seguintes tabelas recorreu-se `ainterface de log do SMPlayer cujo objectivo ´eo debug da aplica¸c˜ao,esta interface representa uma lista de ac¸c˜oese o tempo em que foram efectuadas. Nestas medi¸c˜oesremoveram-se os tempos de acesso aos Web Services do servidor, para que estes testes apenas avaliassem as carac- ter´ısticasda aplica¸c˜aodesenvolvida. Na tabela 4.1 encontram-se v´ariasmedi¸c˜oesque correspondem ao tempo que a aplica¸c˜ao leva desde o instante em que ´edespoletada a ordem de iniciar at´e`aapresenta¸c˜aoda interface de autentica¸c˜ao.

Descri¸c˜ao Tempo (Segundos) Primeira medi¸c˜ao 1,172 Segunda medi¸c˜ao 0,963 Terceira medi¸c˜ao 1,087 Quarta medi¸c˜ao 1,068 Quinta medi¸c˜ao 0,992 Sexta medi¸c˜ao 0,981 S´etimamedi¸c˜ao 1,002 Oitava medi¸c˜ao 0,859 Nona medi¸c˜ao 0,872 D´ecimamedi¸c˜ao 0,931 M´edia 0,9927 Tabela 4.1: Tempos de inicializa¸c˜aoda aplica¸c˜ao

Relativamente ao tempo que a aplica¸c˜aodemora a iniciar a reprodu¸c˜aode um novo conte´udomultim´edia,este varia n˜aos´oconsoante o tipo, localiza¸c˜aoe caracter´ısticasdo conte´udomultim´edia,mas tamb´emconsoante as configura¸c˜oesda aplica¸c˜ao. Na tabela 4.2 encontram-se diversos valores m´ediosdo tempo que a aplica¸c˜aodemora desde que ´efeito o pedido de um novo conte´udomultim´ediaat´ese iniciar a reprodu¸c˜aodo mesmo. O novo conte´udomultim´ediatem as seguintes caracter´ısticas:

Tamanho 700MB;

44 Cap´ıtulo4. Testes de Desempenho

Dura¸c˜ao 01:32:42;

Demuxer avi;

Resolu¸c˜ao 640 x 352;

Taxa de bits do v´ıdeo 912 kbps;

Taxa de bits do a´udio 128 kbps;

Frames por segundo 23.976;

Localiza¸c˜ao file:///media/FAT32/Filmes/teste1.avi;

Descri¸c˜ao Tempo (Segundos) Primeira medi¸c˜ao 5,303 Segunda medi¸c˜ao 5,093 Terceira medi¸c˜ao 4,964 Quarta medi¸c˜ao 5,008 Quinta medi¸c˜ao 5,125 Sexta medi¸c˜ao 4,841 S´etimamedi¸c˜ao 5,192 Oitava medi¸c˜ao 5,146 Nona medi¸c˜ao 4,872 D´ecimamedi¸c˜ao 4,931 M´edia 5,0475 Tabela 4.2: Tempos de inicializa¸c˜aodo primeiro conte´udo

Na tabela 4.3 encontram-se diversos valores m´ediosdos tempos que a aplica¸c˜aodemora desde que ´efeito o pedido de um novo conte´udomultim´ediaat´ese iniciar a reprodu¸c˜aodo mesmo. O novo conte´udomultim´ediatem as seguintes caracter´ısticas:

Tamanho 174 MB;

Dura¸c˜ao 00:07:48;

Demuxer avi;

Resolu¸c˜ao 1280 x 528;

45 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

Taxa de bits do v´ıdeo 2897 kbps;

Taxa de bits do a´udio 224 kbps;

Frames por segundo 23.976;

Localiza¸c˜ao file:///media/FAT32/Filmes/teste2.avi;

Descri¸c˜ao Tempo (Segundos) Primeira medi¸c˜ao 3,879 Segunda medi¸c˜ao 3,793 Terceira medi¸c˜ao 3,664 Quarta medi¸c˜ao 3,582 Quinta medi¸c˜ao 3,548 Sexta medi¸c˜ao 3,841 S´etimamedi¸c˜ao 3,692 Oitava medi¸c˜ao 3,633 Nona medi¸c˜ao 3,872 D´ecimamedi¸c˜ao 3,631 M´edia 3,7135 Tabela 4.3: Tempos de inicializa¸c˜aodo segundo conte´udo

Como podemos verificar, os tempos desde o pedido at´eao in´ıcioda reprodu¸c˜aode um novo conte´udomultim´ediavariam consoante as caracter´ısticasdo mesmo. Relativamente a estes resultados, os valores de espera s˜aoaceit´aveis. Al´emdisso, durante este processo, a aplica¸c˜aovai dando algum feedback das fun¸c˜oesque est´aa executar.

46 Cap´ıtulo5

Conclus˜oese Trabalho Futuro

Relativamente ao trabalho futuro relacionado com o cliente, este vai variar consoante o dispositivo onde a aplica¸c˜aovai ser utilizada. Isto deve-se ao facto de a aplica¸c˜aoQt ser multi-plataforma e estar preparada para dispositivos com caracter´ısticasmuito distin- tas. Esta aplica¸c˜aopode sofrer melhorias de modo a integrar-se mais facilmente com as caracter´ısticasespec´ıficasde cada dispositivo, tais como a integra¸c˜aocom os sensores do dispositivo, adapta¸c˜aoao modo como s˜aogeridos os conte´udosmultim´edia,melhor inte- gra¸c˜aodas interfaces com as caracter´ısticase capacidades de cada tipo de dispositivo e cria¸c˜aode interfaces para a pesquisa de conte´udos.Al´emdestas melhorias, tamb´empode ser necess´arioadaptar a aplica¸c˜ao`asaltera¸c˜oesque possam ser efectuadas no servidor. Como a aplica¸c˜aovai estar relacionada com a evolu¸c˜aodo servidor, esta tamb´empode ter que sofrer altera¸c˜oesrelacionadas com o modelo de neg´ocioque possa ser aplicado ao servidor e as altera¸c˜oesque este ter´aque sofrer para implementar este mesmo modelo de neg´ocio. Por exemplo, um modelo de neg´ocioque possivelmente seria um bom ponto de partida e aliciante para os clientes seria uma adapta¸c˜aodo modelo actualmente utilizado nas televis˜oeslivres actuais, ou seja, a fonte de rendimentos prov´emda reprodu¸c˜aode conte´udospublicit´arios. Nesta adapta¸c˜ao,o servidor, al´emde sugerir o conte´udomul- tim´edia,tamb´emsugeria os conte´udospublicit´ariosa reproduzir e a altura do conte´udo multim´ediaem que estes seriam reproduzidos. Os conte´udospublicit´ariostamb´emseriam sugeridos consoante o perfil do utilizador. Al´emdeste m´etodo, o utilizador tamb´empoderia

47 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

ter `asua disposi¸c˜aoa possibilidade de subscrever uma assinatura mensal que o permitiria diminuir a quantidade de conte´udospublicit´ariosapresentados, e/ou facultar acesso a mais conte´udos.Este modelo de neg´ociopoderia ser aliciante para o cliente porque para aderir ao servi¸coapenas necessitava de possuir uma liga¸c˜ao`aInternet com largura de banda su- ficiente para a reprodu¸c˜aodos conte´udos,n˜aosendo assim necess´ariosubscrever nenhuma assinatura para obter o servi¸cob´asico. Do lado do provedor do servi¸co,este tinha a sua fonte de rendimentos vinda dos conte´udospublicit´ariose dos clientes que optassem pela assinatura mensal. Durante a reprodu¸c˜aodos conte´udospublicit´arios,tamb´empoderia ser adicionado um servi¸coque permitisse ao utilizador adquirir o artigo publicitado atrav´esde um clique de bot˜aodo seu controlo remoto. Neste caso, apareceria uma interface onde seria requisitada a valida¸c˜aoda compra atrav´esde uma senha secreta e seleccionado o modo de pagamento. O pagamento poderia ser efectuado posteriormente na factura da assinatura do servi¸co,e caso o cliente n˜aomostrasse interesse contr´ario,o produto seria enviado para a sua morada. Para a implementa¸c˜aodo modelo de neg´ociosugerido acima, seria necess´ariocriar do lado do servidor um m´odulopara a gest˜aodos conte´udosmultim´ediae o m´etodo utilizado para os fazer chegar ao cliente. Um dos problemas da implementa¸c˜aoem larga escala deste servi¸coseria a sobrecarga a que a rede estaria sujeita. Para aliviar essa carga, poderiam ser tomadas diversas medidas e tirar-se proveito do modo de operar do sistema onde o cliente estivesse implementado. Por exemplo, se o cliente fosse uma Box da Meo, poder´ıamos tirar proveito do facto da mesma estar geralmente activa todo o dia, para transferir os conte´udosmultim´ediaem horas em que a rede estivesse menos sobrecarregada. Al´em disso, tamb´empod´ıamosimplementar um sistema similar aos torrents[26], onde a Box iria descarregar o conte´udoda Box mais pr´oximaque possu´ısseesse conte´udo. Al´emdestas medidas, poderia ainda ser agendada a distribui¸c˜aode conte´udosmais requisitados atrav´es de sess˜oes multicast. Neste caso, as Boxs dos utilizadores que pudessem estar interessados nos conte´udosa serem transmitidos por multicast, seriam notificadas da hora de in´ıcioda sess˜aoe, caso tivessem possibilidade, adeririam `asess˜aoe gravavam o conte´udono seu disco. Estas medidas iriam minimizar o n´umerode sistemas computacionais necess´arios

48 Cap´ıtulo5. Conclus˜oese Trabalho Futuro

para implementar o sistema e tamb´emos recursos de rede necess´arios. Outra abordagem relativa `aimplementa¸c˜aode um servi¸code sugest˜aoautom´aticade conte´udosnum servi¸codo tipo Meo seria a possibilidade do servidor em vez de enviar a localiza¸c˜aode um conte´udomultim´edia,enviar um canal e o intervalo de tempo em que o conte´udoiria ser reproduzido. A Box, se na altura tivesse condi¸c˜oes,iria gravar o conte´udo no seu disco, sendo este posteriormente reproduzido quando o utilizador mostrasse interesse em assistir aos conte´udossugeridos automaticamente. Neste caso, o servidor seria uma esp´eciede sistema autom´aticode agendamento de grava¸c˜oes. Um sistema deste tipo iria tirar proveito das programa¸c˜oesdos canais de TV a que o utilizador tem acesso para obter diversos conte´udosque pudesse sugerir. Relativamente a melhorias que o cliente poderia receber em rela¸c˜ao`agest˜aodos conte´udos, caso o dispositivo destino possu´ısseas capacidades de hardware necess´arias,podiam ser cri- adas integra¸c˜oescom diversos gestores de transferˆenciasusando metalinks[17], permitindo assim pr´e-transferiros conte´udosde diversos tipos de fontes. Para melhorar a interface de registo, tamb´empoderia ser criada uma aplica¸c˜aosepa- rada que se adaptasse melhor ao dispositivo em quest˜ao,dado que ´enecess´arioaceder `a conta de correio electr´onicopara validar uma nova conta de utilizador. Assim, n˜aoseria necess´arioefectuar o registo na aplica¸c˜aorespons´avel por reproduzir os conte´udos. Esta aplica¸c˜aopoderia ser executada durante a instala¸c˜aoda aplica¸c˜aoprincipal, quando o uti- lizador executasse pela primeira vez a aplica¸c˜aoprincipal ou quando o utilizador mostrasse interesse em criar uma nova conta. Esta aplica¸c˜aopoderia utilizar m´etodos para facilitar a cria¸c˜aode um novo utilizador e completar automaticamente o perfil do mesmo. Estes m´etodos poderiam ser, por exemplo, o uso de servi¸cosdisponibilizados pelas redes sociais para obter informa¸c˜oesrelacionadas com o utilizador e as suas caracter´ısticas.Tamb´emse poderiam ir procurar informa¸c˜oesno sistema, tais como o hist´oricode p´aginasde Internet visitadas e alguns dados do utilizador, informa¸c˜oesestas que seriam posteriormente proces- sadas e utilizadas para facilitar o registo e completar as informa¸c˜oessobre as caracter´ısticas do utilizador. Tendo em conta as propostas referidas neste cap´ıtulo,podemos concluir que as melhorias

49 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

e adapta¸c˜oesa efectuar est˜aocondicionadas `aevolu¸c˜aodo servidor e o tipo de dispositivo onde a aplica¸c˜aoir´aser executada. Durante o desenvolvimento deste projecto, adquiriu-se um conhecimento das vantagens e desvantagens de utilizar como base aplica¸c˜oesc´odigoaberto para atingir um determinado objectivo. Adquiriu-se ainda conhecimento das limita¸c˜oesde desenvolver aplica¸c˜oespara dispositivos de pequenas dimens˜oese, al´emdisso, tamb´emse adquiriram conhecimentos sobre diversas tecnologias e aprofundaram-se conhecimentos sobre outras. Relativamente `asvantagens dos sistemas de sugest˜aoautom´aticade conte´udos,t´opico em que esta disserta¸c˜aose insere, podemos concluir que provavelmente no futuro ir´ater uma grande difus˜aodevido `asua flexibilidade, `assuas vantagens, `ainova¸c˜aoque trar´a ao mercado e `asua capacidade de ir ao encontro das caracter´ısticas e preferˆenciasdo utilizador.

50 Anexo A

Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

Neste anexo encontram-se um exemplo do ficheiro de configura¸c˜aoda aplica¸c˜aoQt e a tabela A.1 onde est˜aodescritos os grupos deste ficheiro e suas principais configura¸c˜oes. Na sec¸c˜ao 3.3.2.5 encontram-se descritas as principais configura¸c˜oese as suas fun¸c˜oes.

1 [%General] 2 mplayer bin=mplayer 3 d r i v e r \vo=xv 4 d r i v e r \ a u d i o output=pulse 5 u s e screenshot=true 6 screenshot directory=/home/fonseca /. config/smplayer/screenshots 7 d o n t r e m e m b e r m e d i a settings=true 8 dont remember time pos=t r u e 9 a u d i o l a n g= 10 s u b t i t l e l a n g= 11 u s e d i r e c t rendering=false 12 u s e d o u b l e buffer=true 13 u s e s o f t v i d e o e q=f a l s e 14 u s e slices=true 15 autoq=6 16 a d d blackborders o n fullscreen=false 17 d i s a b l e screensaver=true 18 d i s a b l e v i d e o f i l t e r s w i t h v d p a u=t r u e 19 u s e s o f t v o l=t r u e 20 s o f t v o l m a x =110 21 u s e scaletempo=−1 22 use hwac3=false 23 u s e a u d i o equalizer=true 24 g l o b a l volume=true 25 volume=100

51 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

26 mute=f a l s e 27 autosync=f a l s e 28 a u t o s y n c f a c t o r =100 29 use mc=f a l s e 30 mc value=0 31 osd=1 32 o s d d e l a y =2200 33 f i l e s e t t i n g s method=hash 34 35 [ d r i v e s ] 36 d v d device=/dev/dvd 37 cdrom device=/dev/cdrom 38 v c d i n i t i a l t i t l e =2 39 use dvdnav=false 40 41 [ performance ] 42 p r i o r i t y =2 43 frame drop=t r u e 44 hard frame drop=f a l s e 45 c o r e a v c=f a l s e 46 h 2 6 4 s k i p l o o p f i l t e r =1 47 HD height=720 48 f a s t a u d i o c h a n g e=−1 49 t h r e a d s=1 50 c a c h e f o r f i l e s =0 51 c a c h e f o r streams=1000 52 c a c h e f o r d v d s=0 53 c a c h e f o r v c d s =1000 54 c a c h e f o r audiocds=1000 55 c a c h e f o r t v =3000 56 57 [ s u b t i t l e s ] 58 f o n t f i l e= 59 font name= 60 u s e fontconfig=false 61 subcp=ISO−8859−1 62 u s e e n c a=f a l s e 63 e n c a l a n g=pt 64 f o n t autoscale=1 65 s u b f u z z i n e s s =1 66 a u t o l o a d s u b=t r u e 67 u s e a s s subtitles=true 68 a s s l i n e s p a c i n g =0 69 u s e c l o s e d c a p t i o n s u b s=f a l s e 70 u s e f o r c e d s u b s o n l y=f a l s e 71 s u b visibility=true 72 s u b t i t l e s o n screenshots=false 73 use new sub commands=−1 74 c h a n g e s u b s c a l e s h o u l d r e s t a r t=−1 75 f a s t l o a d s u b=t r u e 76 s t y l e s \ fontname=Arial

52 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

77 s t y l e s \ fontsize=20 78 s t y l e s \ primarycolor=4294967295 79 s t y l e s \ backcolor=4278190080 80 s t y l e s \ outlinecolor=4278190080 81 s t y l e s \ bold=f a l s e 82 s t y l e s \ italic=false 83 s t y l e s \ halignment=2 84 s t y l e s \ valignment=0 85 s t y l e s \ borderstyle=1 86 s t y l e s \ o u t l i n e =1 87 s t y l e s \shadow=2 88 s t y l e s \ marginl =20 89 s t y l e s \ marginr=20 90 s t y l e s \ marginv=8 91 f o r c e a s s styles=false 92 u s e r f o r c e d a s s s t y l e= 93 f r e e t y p e support=true 94 95 [ advanced ] 96 c o l o r k e y =20202 97 use mplayer window=false 98 m o n i t o r a s p e c t= 99 u s e i d x=f a l s e 100 m p l a y e r a d d i t i o n a l o p t i o n s= 101 m p l a y e r a d d i t i o n a l v i d e o f i l t e r s= 102 m p l a y e r a d d i t i o n a l a u d i o f i l t e r s= 103 l o g mplayer=true 104 l o g smplayer=true 105 l o g f i l t e r =.* 106 v e r b o s e l o g=f a l s e 107 s a v e s m p l a y e r l o g=f a l s e 108 a u t o s a v e m p l a y e r l o g=f a l s e 109 m p l a y e r l o g s a v e t o= 110 r e p a i n t v i d e o background=false 111 u s e e d l f i l e s=t r u e 112 p r e f e r i p v 4=t r u e 113 u s e s h o r t pathnames=false 114 c h a n g e v i d e o e q u a l i z e r o n startup=true 115 u s e p a u s i n g k e e p f o r c e=t r u e 116 c o r r e c t p t s=−1 117 a c t i o n s t o r u n= 118 119 [ g u i ] 120 f u l l s c r e e n=f a l s e 121 s t a r t i n fullscreen=false 122 compact mode=f a l s e 123 s t a y o n t o p=0 124 s i z e f a c t o r =100 125 r e s i z e m e t h o d=0 126 s t y l e= 127 s h o w m o t i o n vectors=false

53 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

128 m o u s e l e f t c l i c k function=fullscreen 129 m o u s e r i g h t c l i c k function=show context menu 130 m o u s e d o u b l e c l i c k function=fullscreen 131 m o u s e m i d d l e c l i c k function=mute 132 m o u s e x b u t t o n 1 c l i c k f u n c t i o n= 133 m o u s e x b u t t o n 2 c l i c k f u n c t i o n= 134 m o u s e w h e e l f u n c t i o n=2 135 w h e e l f u n c t i o n c y c l e =30 136 w h e e l f u n c t i o n s e e k i n g reverse=false 137 s e e k i n g 1 =10 138 s e e k i n g 2 =60 139 s e e k i n g 3 =600 140 s e e k i n g 4 =30 141 u p d a t e w h i l e seeking=false 142 t i m e s l i d e r d r a g d e l a y =100 143 r e l a t i v e seeking=true 144 language= 145 i c o n s e t=N u v o l a f s f 146 b a l l o o n c o u n t=5 147 r e s t o r e p o s a f t e r fullscreen=false 148 s a v e w i n d o w s i z e o n e x i t=t r u e 149 c l o s e o n finish=false 150 d e f a u l t f o n t= 151 pause when hidden=false 152 allow video movement=false 153 g u i=DefaultGUI 154 gui minimum width=0 155 d e f a u l t size=@Size(580 440) 156 h i d e v i d e o w i n d o w o n a u d i o f i l e s=t r u e 157 r e p o r t m p l a y e r crashes=true 158 r e p o r t e d m p l a y e r i s o l d=t r u e 159 a u t o a d d t o playlist=true 160 a d d t o p l a y l i s t consecutive files=false 161 162 [ tv ] 163 c h e c k c h a n n e l s c o n f o n startup=true 164 i n i t i a l t v deinterlace=4 165 l a s t d v b c h a n n e l= 166 l a s t t v c h a n n e l= 167 168 [ d i r e c t o r i e s ] 169 l a t e s t dir=/home/fonseca 170 l a s t d v d d i r e c t o r y= 171 172 [ d e f a u l t s ] 173 i n i t i a l s u b s c a l e =5 174 i n i t i a l s u b s c a l e a s s =1 175 i n i t i a l v o l u m e =40 176 i n i t i a l c o n t r a s t =0 177 i n i t i a l brightness=0 178 i n i t i a l h u e =0

54 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

179 i n i t i a l saturation=0 180 i n i t i a l g a m m a=0 181 i n i t i a l a u d i o equalizer=0, 0, 0, 0, 0, 0, 0, 0, 0, 0 182 i n i t i a l z o o m f a c t o r =1 183 i n i t i a l s u b p o s =100 184 i n i t i a l volnorm=false 185 i n i t i a l postprocessing=false 186 i n i t i a l deinterlace=0 187 i n i t i a l a u d i o c h a n n e l s =2 188 i n i t i a l s t e r e o m o d e =0 189 i n i t i a l a u d i o t r a c k =1 190 i n i t i a l s u b t i t l e t r a c k =1 191 192 [ m p l a y e r i n f o ] 193 m p l a y e r d e t e c t e d v e r s i o n=1 194 m p l a y e r u s e r s u p p l i e d v e r s i o n=−1 195 196 [ i n s t a n c e s ] 197 u s e s i n g l e instance=true 198 c o n n e c t i o n p o r t =8000 199 u s e autoport=true 200 temp\ autoport=40380 201 202 [ f l o a t i n g c o n t r o l ] 203 margin=0 204 width=100 205 animated=t r u e 206 d i s p l a y i n c o m p a c t m o d e=f a l s e 207 bypass window manager=true 208 209 [ h i s t o r y ] 210 r e c e n t s= 211 r e c e n t s \ max items=10 212 u r l s=@Invalid ( ) 213 u r l s \ max items=50 214 215 [ f i l t e r o p t i o n s ] 216 deblock=vb/hb 217 d e n o i s e n o r m a l= 218 d e n o i s e s o f t =2:1:2 219 n o i s e=9ah : 5 ah 220 volnorm=1 221 222 [ d e f a u l t g u i ] 223 v i d e o i n f o=f a l s e 224 f r a m e counter=false 225 f u l l s c r e e n t o o l b a r 1 w a s visible=true 226 f u l l s c r e e n t o o l b a r 2 w a s visible=true 227 c o m p a c t t o o l b a r 1 w a s visible=false 228 c o m p a c t t o o l b a r 2 w a s visible=false 229 pos=@Point (0 0)

55 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

230 s i z e=@Size (706 459) 231 t o o l b a r s state=@ByteArray(\0\0\0\ x f f \0\0\ x11\ x f a \ xfd \0\0\0\ x1 \0\0\0\ x3 \0\0\0\0\0\0\0\0\ x f c \x1 \0\0\0\ x1\ xfb \0\0\0\ x18 \0p\0 l \0\ x61 \0y\0 l \0 i \0 s \0 t \0\ x64 \0o \0\ x63 \0k\x2 \0\0\0\0\0\0\0\0\0\0\ x2 \0\0\0\ x1\x33 \0\0\ x2\ xc2 \0\0\ x1 ‘\0\0\0\ x4 \0\0\0\ x4 \0\0\0\b\0\0\0\b\ x f c \0\0\0\ x2 \0\0\0\ x2 \0\0\0\ x2 \0\0\0\ x10 \0 t \0o\0o\0 l \0\ x62 \0\ x61 \0 r \0\ x31\x1 \0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0\ x10 \0 t \0o\0o\0 l \0\ x62 \0\ x61 \0 r \0\ x32\x1 \0\0\ x1\ x f 4 \ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0\ x3 \0\0\0\ x2 \0\0\0\ x1a \0\ x63 \0o\0n\0 t \0 r \0o\0 l \0w\0 i \0\ x64 \0g \0\ x65 \0 t \x1 \0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0 $ \0\ x63 \0o\0n\0 t \0 r \0o\0 l \0w\0 i \0\ x64 \0g \0\ x65 \0 t \0 \0m\0 i \0n\0 i \0\0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0) 232 a c t i o n s \ toolbar1=play prev , nostar i p t v , s t a r 1 i p t v , s t a r 2 i p t v , s t a r 3 i p t v , s t a r 4 i p t v , s t a r 5 i p t v , p l a y next , separator , compact, fullscreen , separator , screenshot , separator , show f i l e properties , show playlist , show preferences , state i p t v , s e p a r a t o r 233 a c t i o n s \ controlwidget=play , pause a n d f r a m e step , stop, separator , rewindbutton a c t i o n , t i m e s l i d e r action , forwardbutton action , separator , fullscreen , mute, volumeslider a c t i o n 234 a c t i o n s \ controlwidget m i n i=p l a y o r pause , stop, separator , rewind1, timeslider a c t i o n , forward1 , separator , mute, volumeslider a c t i o n 235 a c t i o n s \ f l o a t i n g control=play, pause, stop, separator , rewindbutton a c t i o n , t i m e s l i d e r action , forwardbutton action , separator , fullscreen , mute, volumeslider action , separator , timelabel a c t i o n 236 237 [ b a s e g u i p l u s ] 238 s h o w t r a y i c o n=f a l s e 239 m a i n w i n d o w visible=true 240 t r a y i c o n p l a y l i s t w a s visible=false 241 w i d g e t s s i z e =102 242 f u l l s c r e e n p l a y l i s t w a s visible=false 243 f u l l s c r e e n p l a y l i s t w a s floating=true 244 c o m p a c t p l a y l i s t w a s visible=false 245 i g n o r e p l a y l i s t events=false 246 247 [ p l a y l i s t ] 248 r e p e a t=f a l s e 249 s h u f f l e=f a l s e 250 a u t o g e t i n f o=t r u e 251 r e c u r s i v e a d d directory=false 252 s a v e p l a y l i s t i n config=false 253 p l a y f i l e s f r o m s t a r t=t r u e 254 a u t o m a t i c a l l y p l a y n e x t=t r u e 255 r o w s p a c i n g=−1 256 l a t e s t dir=/media/FAT32/Filmes 257 258 [ p l a y l i s t c o n t e n t s ] 259 count=1 260 i t e m 0 i d =1 261 i t e m 0 a u t h o r= 262 i t e m 0 filename=file : // / media /FAT32/ Filmes / t e s t e . a v i 263 i t e m 0 duration=5562.77 264 item 0 name= f i l e : // / media /FAT32/ Filmes / t e s t e . a v i 265 c u r r e n t i t e m=0 266 m o d i f i e d=f a l s e 267 268 [ i p t v S e t t i n g s ] 269 watchmode=Alone 270 d e f a u l t F e e d b a c k=6 271 serverURL=http : // l o c a l h o s t : 8 0 8 0 / IPTVServerCoreWebService / ServerCoreWSService 272 l o g i n=f s f

56 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

273 pass =1234 274 rememberme=t r u e 275 a u t o a u t e n t i c a t e=t r u e 276 277 [ a c t i o n s ] 278 o p e n file=Ctrl+F 279 o p e n d i r e c t o r y= 280 o p e n p l a y l i s t= 281 open vcd= 282 o p e n a u d i o c d= 283 open dvd= 284 o p e n d v d f o l d e r= 285 o p e n u r l=C t r l+U 286 c l o s e=C t r l+X 287 c l e a r r e c e n t s= 288 e d i t t v l i s t= 289 j u m p t v l i s t= 290 n e x t t v=H 291 p r e v i o u s t v=L 292 tv menu= 293 e d i t r a d i o l i s t= 294 j u m p r a d i o l i s t= 295 n e x t radio=Shift+H 296 p r e v i o u s radio=Shift+L 297 radio menu= 298 play= 299 p l a y o r pause=Media Play 300 pause=Space 301 p a u s e a n d f r a m e s t e p= 302 stop=Media Stop 303 f r a m e s t e p =. 304 rewind1=L e f t 305 rewind2=Down 306 rewind3=PgDown 307 forward1=Right 308 forward2=Up 309 forward3=PgUp 310 s e t a m a r k e r= 311 s e t b m a r k e r= 312 c l e a r a b m a r k e r s= 313 r e p e a t= 314 jump to=C t r l+J 315 normal speed=Backspace 316 h a l v e s p e e d={ 317 d o u b l e s p e e d=} 318 d e c s p e e d =[ 319 i n c s p e e d =] 320 d e c s p e e d 4= 321 i n c s p e e d 4= 322 d e c s p e e d 1= 323 i n c s p e e d 1=

57 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

324 f u l l s c r e e n=F 325 compact=C t r l+C 326 v i d e o equalizer=Ctrl+E 327 s c r e e n s h o t=S 328 m u l t i p l e screenshots=Shift+D 329 v i d e o p r e v i e w= 330 f l i p= 331 m i r r o r= 332 m o t i o n v e c t o r s= 333 p o s t p r o c e s s i n g= 334 a u t o d e t e c t p h a s e= 335 deblock= 336 d e r i n g= 337 a d d n o i s e= 338 a d d l e t t e r b o x= 339 u p s c a l i n g= 340 a u d i o e q u a l i z e r= 341 mute=M 342 d e c r e a s e v o l u m e=” 9 , /” 343 i n c r e a s e v o l u m e=” 0 , *” 344 d e c a u d i o d e l a y=− 345 i n c a u d i o d e l a y=+ 346 a u d i o d e l a y= 347 l o a d a u d i o f i l e= 348 u n l o a d a u d i o f i l e= 349 e x t r a s t e r e o f i l t e r= 350 k a r a o k e f i l t e r= 351 v o l n o r m f i l t e r= 352 l o a d s u b s= 353 u n l o a d s u b s= 354 d e c s u b d e l a y=Z 355 i n c s u b d e l a y=X 356 s u b d e l a y= 357 d e c s u b p o s=R 358 i n c s u b p o s=T 359 d e c s u b scale=Shift+R 360 i n c s u b scale=Shift+T 361 d e c s u b s t e p=G 362 i n c s u b s t e p=Y 363 u s e a s s l i b= 364 u s e c l o s e d c a p t i o n= 365 u s e f o r c e d s u b s o n l y= 366 s u b t i t l e visibility=V 367 s h o w f i n d s u b d i a l o g= 368 u p l o a d s u b t i t l e s= 369 s h o w playlist=Ctrl+L 370 s h o w f i l e properties=Ctrl+I 371 s h o w preferences=Ctrl+P 372 show mplayer log=C t r l+M 373 s h o w s m p l a y e r l o g=C t r l+S 374 f a q=

58 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

375 c l o p t i o n s= 376 t i p s= 377 ab out qt= 378 about smplayer= 379 p l a y n e x t=> 380 p l a y p r e v=< 381 move up=Alt+Up 382 move down=Alt+Down 383 m o v e left=Alt+Left 384 move right=Alt+Right 385 inc zoom=E 386 dec zoom=W 387 r e s e t zoom=Shift+E 388 auto zoom=Shift+W 389 zoom 169=Shift+A 390 zoom 235=Shift+S 391 e x i t fullscreen=Esc 392 n e x t o s d=O 393 d e c c o n t r a s t =1 394 i n c c o n t r a s t =2 395 d e c brightness=3 396 i n c brightness=4 397 dec hue=5 398 i n c h u e=6 399 d e c saturation=7 400 i n c saturation=8 401 dec gamma= 402 inc gamma= 403 n e x t v i d e o= 404 n e x t a u d i o=K 405 n e x t s u b t i t l e=J 406 n e x t c h a p t e r=@@ 407 p r e v c h a p t e r =! 408 t o g g l e d o u b l e size=Ctrl+D 409 r e s e t v i d e o e q u a l i z e r= 410 r e s e t a u d i o e q u a l i z e r= 411 show context menu= 412 n e x t a s p e c t=A 413 n e x t w h e e l f u n c t i o n= 414 s h o w filename=Shift+I 415 t o g g l e deinterlacing=D 416 osd none= 417 o s d s e e k= 418 o s d t i m e r= 419 o s d t o t a l= 420 d e n o i s e n o n e= 421 d e n o i s e n o r m a l= 422 d e n o i s e s o f t= 423 s i z e 5 0= 424 s i z e 7 5= 425 s i z e 1 0 0=C t r l+1

59 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

426 s i z e 1 2 5= 427 s i z e 1 5 0= 428 s i z e 1 7 5= 429 s i z e 2 0 0=C t r l+2 430 s i z e 3 0 0= 431 s i z e 4 0 0= 432 d e i n t e r l a c e n o n e= 433 d e i n t e r l a c e l 5= 434 d e i n t e r l a c e y a d i f 0= 435 d e i n t e r l a c e y a d i f 1= 436 d e i n t e r l a c e l b= 437 d e i n t e r l a c e k e r n= 438 c h a n n e l s s t e r e o= 439 c h a n n e l s s u r r o u n d= 440 c h a n n e l s f u l 5 1= 441 s t e r e o= 442 l e f t c h a n n e l= 443 r i g h t c h a n n e l= 444 a s p e c t d e t e c t= 445 a s p e c t 1%3A1= 446 a s p e c t 3%3A2= 447 a s p e c t 4%3A3= 448 a s p e c t 5%3A4= 449 a s p e c t 1 4%3A9= 450 a s p e c t 1 4%3A10= 451 a s p e c t 1 6%3A9= 452 a s p e c t 1 6%3A10= 453 a s p e c t 2 .35%3A1= 454 a s p e c t n o n e= 455 r o t a t e n o n e= 456 r o t a t e c l o c k w i s e f l i p= 457 r o t a t e c l o c k w i s e= 458 r o t a t e counterclockwise= 459 r o t a t e counterclockwise f l i p= 460 o n t o p a l w a y s= 461 o n t o p n e v e r= 462 o n t o p p l a y i n g= 463 t o g g l e s t a y o n t o p= 464 dvdnav up=Shift+Up 465 dvdnav down=S h i f t+Down 466 d v d n a v left=Shift+Left 467 d v d n a v right=Shift+Right 468 dvdnav menu=Shift+Return 469 d v d n a v select=Return 470 dvdnav prev=Shift+Esc 471 dvdnav mouse= 472 speed menu= 473 ab menu= 474 videotrack menu= 475 v i d e o s i z e m e n u= 476 zoom menu=

60 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

477 aspect menu= 478 d e i n t e r l a c e m e n u= 479 v i d e o f i l t e r m e n u= 480 rotate menu= 481 ontop menu= 482 audiotrack menu= 483 a u d i o f i l t e r m e n u= 484 audiochannels menu= 485 stereomode menu= 486 s u b t i t l e s t r a c k m e n u= 487 t i t l e s m e n u= 488 chapters menu= 489 angles menu= 490 programtrack menu= 491 osd menu= 492 q u i t= 493 s h o w t r a y i c o n= 494 r e s t o r e \ hide= 495 p l o p e n= 496 p l s a v e= 497 p l p l a y= 498 p l n e x t=N 499 p l p r e v=P 500 pl move up= 501 pl move down= 502 p l r e p e a t= 503 p l s h u f f l e= 504 p l preferences= 505 p l a d d c u r r e n t= 506 p l a d d f i l e s= 507 p l a d d d i r e c t o r y= 508 p l r e m o v e s e l e c t e d= 509 p l r e m o v e a l l= 510 p l e d i t= 511 t o g g l e v i d e o i n f o= 512 t o g g l e f r a m e c o u n t e r= 513 show main toolbar=F5 514 s h o w l a n g u a g e t o o l b a r=F6 515 s t a t e iptv=Shift+V 516 r a t e iptv=Shift+B 517 n o s t a r i p t v= 518 s t a r 1 i p t v= 519 s t a r 2 i p t v= 520 s t a r 3 i p t v= 521 s t a r 4 i p t v= 522 s t a r 5 i p t v= 523 524 [ i p t v g u i ] 525 v i d e o i n f o=f a l s e 526 f r a m e counter=false 527 f u l l s c r e e n t o o l b a r 1 w a s visible=true

61 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

528 f u l l s c r e e n t o o l b a r 2 w a s visible=false 529 c o m p a c t t o o l b a r 1 w a s visible=true 530 c o m p a c t t o o l b a r 2 w a s visible=false 531 pos=@Point (46 20) 532 s i z e=@Size (537 378) 533 t o o l b a r s state=@ByteArray(\0\0\0\ x f f \0\0\ x11\ x f a \ xfd \0\0\0\ x1 \0\0\0\ x3 \0\0\0\0\0\0\0\0\ x f c \x1 \0\0\0\ x1\ xfb \0\0\0\ x18 \0p\0 l \0\ x61 \0y\0 l \0 i \0 s \0 t \0\ x64 \0o \0\ x63 \0k\x2 \0\0\0\0\0\0\0\0\0\0\ x2 \0\0\0\ x1\x33 \0\0\ x2\x19 \0\0\ x1\x14 \0\0\0\ x4 \0\0\0\ x4 \0\0\0\b\0\0\0\b\ x f c \0\0\0\ x12 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ x1 \0\0\0\0\0\0\0\ x1 \0\0\0\0\0\0\0\ x1 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\0\0\0\0\ x2 \0\0\0\ x1 \0\0\0\ x10 \0 t \0o\0o\0 l \0\ x62 \0\ x61 \0 r \0\ x32 \0\0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0\ x2 \0\0\0\ x1 \0\0\0\ x10 \0 t \0o\0o\0 l \0\ x62 \0\ x61 \0 r \0\ x31\x1 \0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0\ x3 \0\0\0\ x2 \0\0\0\ x1a \0\ x63 \0o\0n\0 t \0 r \0o\0 l \0w\0 i \0\ x64 \0g \0\ x65 \0 t \0\0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0\0\0\0 $ \0\ x63 \0o\0n\0 t \0 r \0o\0 l \0w\0 i \0\ x64 \0g \0\ x65 \0 t \0 \0m\0 i \0n\0 i \x1 \0\0\0\0\ x f f \ x f f \ x f f \ x f f \0\0\0\0\0\0\0\0) 534 a c t i o n s \ toolbar1=play prev , nostar i p t v , s t a r 1 i p t v , s t a r 2 i p t v , s t a r 3 i p t v , s t a r 4 i p t v , s t a r 5 i p t v , p l a y next , separator , fullscreen , screenshot , separator , s h o w f i l e properties , state iptv , separator , close 535 a c t i o n s \ controlwidget=play , pause a n d f r a m e step , stop, separator , rewindbutton a c t i o n , t i m e s l i d e r action , forwardbutton action , separator , fullscreen , mute, volumeslider a c t i o n 536 a c t i o n s \ controlwidget m i n i=p l a y o r pause , stop, separator , rewind1, timeslider a c t i o n , forward1 , separator , mute, volumeslider a c t i o n 537 a c t i o n s \ f l o a t i n g control=play, pause, stop, separator , rewindbutton a c t i o n , t i m e s l i d e r action , forwardbutton action , separator , fullscreen , mute, volumeslider action , separator , timelabel a c t i o n 538 t o o l b a r 1 i c o n h =30 539 t o o l b a r 1 i c o n w =30 540 c o n t r o l w i d g e t i c o n h =30 541 c o n t r o l w i d g e t i c o n w =30 542 f u l l s c r e e n i c o n h =30 543 f u l l s c r e e n i c o n w =30

Nome do grupo Linhas no Descri¸c˜ao ficheiro General 1-33 Neste grupo encontram-se configura¸c˜oes gerais rela- cionadas com o reprodutor de conte´udos. drives 35-39 Neste grupo encontram-se as configura¸c˜oesrelacionadas com os leitores de DVDs e CDs e m´etodos de reprodu¸c˜ao dos mesmos. performance 41-55 Neste grupo encontram-se configura¸c˜oes relacionadas com o desempenho da aplica¸c˜ao. subtitles 57-93 Neste grupo encontram-se configura¸c˜oes relacionadas com as legendas da aplica¸c˜ao. advanced 95-117 Neste grupo encontram-se configura¸c˜oesavan¸cadasda aplica¸c˜ao.

continua na p´aginaseguinte

62 Anexo A. Ficheiro de Configura¸c˜aoda Aplica¸c˜aoQt

continua¸c˜aoda p´aginaanterior Nome do grupo Linhas no Descri¸c˜ao ficheiro gui 119-160 Neste grupo encontram-se configura¸c˜oes gerais rela- cionadas com a interface principal e com as fun¸c˜oesque o rato ir´aefectuar. tv 162-166 Neste grupo encontram-se configura¸c˜oes relacionadas com a funcionalidade do reprodutor de conte´udospara que este possa possuir uma lista de canais de TV e r´adio. directories 168-170 Neste grupo encontram-se configura¸c˜oes relacionadas com as ´ultimaspastas utilizadas. defaults 172-190 Neste grupo encontram-se definidos os valores iniciais que diversos campos tomam quando a aplica¸c˜aoinicia, tais como volume, o zoom e filtros. mplayer info 192-195 Neste grupo encontram-se informa¸c˜oessobre a vers˜aodo MPlayer. instances 196-200 Neste grupo encontram-se configura¸c˜oes relacionadas com a capacidade de apenas ser poss´ıvel executar uma instˆanciadesta aplica¸c˜ao. floating control 202-207 Neste grupo encontram-se configura¸c˜oes relacionadas com a barra que aparece quando se est´ano modo de ecr˜ainteiro. history 209-213 Neste grupo encontram-se informa¸c˜oese configura¸c˜oes relacionadas com os ´ultimosconte´udosreproduzidos. filter options 215-220 Neste grupo encontram-se configura¸c˜oes relacionadas com os filtros que se podem aplicar. default gui 222-235 Neste grupo encontram-se configura¸c˜oes relacionadas com aspecto da interface Default GUI. base gui plus 237-245 Neste grupo encontram-se configura¸c˜oes relacionadas com aspecto de todas as interfaces principais.

63 continua na p´aginaseguinte Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

continua¸c˜aoda p´aginaanterior Nome do grupo Linhas no Descri¸c˜ao ficheiro playlist 247-256 Neste grupo encontram-se configura¸c˜oes relacionadas com a lista de reprodu¸c˜ao. playlist contents 258-266 Neste grupo s˜ao armazenadas as informa¸c˜oes rela- cionadas com os conte´udosque estavam na lista de re- produ¸c˜aoquando a aplica¸c˜aofoi terminada e a op¸c˜aode guardar os conte´udosda lista estiver activa. iptvSettings 268-275 Neste grupo encontram-se as configura¸c˜oesrelacionadas com a comunica¸c˜aocom o servidor. actions 277-522 Neste grupo encontram-se configura¸c˜oesdos atalhos de teclado associados `asac¸c˜oes. iptv gui 524-543 Neste grupo encontram-se as configura¸c˜oesrelacionadas com aspecto da interface principal criada. Tabela A.1: Diferentes grupos do ficheiro de configura¸c˜aoda aplica¸c˜aoQt.

64 Referˆencias

[1] Android, [accessed] September 2009. [online] http://www.android.com/. 11

[2] ios, [accessed] September 2009. [online] http://www.apple.com/ios/. 12

[3] Java me, [accessed] October 2009. [online] http://www.oracle.com/technetwork/ java/javame/overview/index.html. 14

[4] Javafx, [accessed] September 2009. [online] http://javafx.com/. 13

[5] Kxml, [accessed] November 2009. [online] http://kxml.sourceforge.net/about. shtml. 18

[6] Maemo, [accessed] September 2009. [online] http://maemo.org/. 9

[7] Mmapi, [accessed] October 2009. [online] http://developers.sun.com/mobility/ apis/articles/mmapi_overview/index.html. 16

[8] Open handset alliance, [accessed] November 2009. [online] http://www. openhandsetalliance.com/press_110507.html. 11

[9] Symbian, [accessed] September 2009. [online] http://www.symbian.org/. 9

[10] What is android?, [accessed] September 2009. [online] http://developer.android. com/guide/basics/what-is-android.html. 11

[11] Adobe flash lite, [accessed] May 2010. [online] http://www.adobe.com/products/ flashlite/. 14

65 Cliente IPTV Multi-Plataforma com Personaliza¸c˜aoAutom´aticade Canais

[12] Dandelion player, [accessed] March 2010. [online] http://wiki.forum.nokia.com/ index.php/Open_source_Media_Player_-_Flash_and_Flash_Lite3_compatible. 22

[13] gsoap, [accessed] June 2010. [online] http://www.cs.fsu.edu/~engelen/soap.html. 18, 24

[14] gsoap nokia, [accessed] June 2010. [online] http://wiki.forum.nokia.com/index. php/Using_gsoap_for_web_services. 32

[15] Jarpa, [accessed] May 2010. [online] http://www.i2tecnologia.com.br/jarpa/. 14, 21

[16] Meego, [accessed] June 2010. [online] http://meego.com/. 10

[17] Metalink, [accessed] August 2010. [online] http://www.metalinker.org/. 49

[18] moblin, [accessed] June 2010. [online] http://www.moblin.org/. 10

[19] Mplayer, [accessed] June 2010. [online] http://www.mplayerhq.hu/design7/info. html. 17, 23, 31

[20] People of lava - scandinavia, the world’s first android tv, [accessed] November 2010. [online] http://www.peopleoflava.com/television/scandinavia/. 12

[21] Qt, [accessed] June 2010. [online] http://qt.nokia.com/. 15

[22] Qt android port, [accessed] June 2010. [online] http://qt.gitorious.org/qt/ android-lighthouse. 15

[23] Qt-iphone project, [accessed] June 2010. [online] http://www.qt-iphone.com/ Introduction.html. 15

[24] Smplayer, [accessed] June 2010. [online] http://sourceforge.net/apps/mediawiki/ smplayer/index.php?title=Main_Page. 23

66 Cap´ıtulo5. Conclus˜oese Trabalho Futuro

[25] Soap version 1.2 part 1: Messaging framework (second edition), [accessed] June 2010. [online] http://www.w3.org/TR/soap12-part1/. 18

[26] Torrents, [accessed] September 2010. [online] http://www.bittorrent.org/beps/ bep_0003.html. 48

[27] Wetab, [accessed] October 2010. [online] http://wetab.mobi/en. 11

[28] Jasmin Blanchette and Mark Summerfield. C++ GUI Programming with Qt 4. Pren- tice Hall, 2 edition, February 2008.

[29] Jacqui Cheng. Smartphones lead mobile sales, android moves into no. 3 spot, August 2010. [online] http://arstechnica.com/gadgets/news/2010/08/ smartphones-lead-mobile-sales-android-moves-into-no-3-spot.ars. 10, 21

[30] Alan Ezust and Paul Ezust. Introduction to Design Patterns in C++ with Qt 4. Prentice Hall, 1 edition, August 2006.

[31] Ibrahim Haddad. Introduction to the meego project, June 2010. [online] http:// wiki.meego.com/images/MeeGo_Introduction.pdf. 10

[32] Gary Menezes. Symbian os, now fully open source, February 2010. [online] http: //www.watblog.com/2010/02/06/symbian-os-now-fully-open-source/. 9

[33] Jo˜aoRodrigues. IPTV Server with Automatic Channels Personalization. Master’s thesis, University of Aveiro, Campus Universit´ariode Santiago, Aveiro, December 2009. 3

[34] Vlad Savov. Amd will contribute ’engineering expertise’ to meego develop- ment project, November 2010. [online] http://www.engadget.com/2010/11/15/ amd-will-contribute-engineering-expertise-to-meego-development/. 10

[35] Alex Zaharov-Reutt. Intel/nokia meego phones are no go until 1st half of 2011, October 2010. [online] http://www.itwire.com/your-it-news/home-it/ 42365-intelnokia-meego-phones-are-no-go-until-1st-half-of-2011. 11

67