UNIGUAÇU UNIDADE DE ENSINO SUPERIOR VALE DO IGUAÇU PROPOSTA DE UM MODELO DE CODIFICAÇÃO E DECODIFICAÇÃO DE VÍDEO GERADO POR COMPUTADOR Joatan José Kruk Professor Cleverson Bússolo Klettenberg UNIÃO DA VITÓRIA - PR 2005 UNIGUAÇU - Unidade de Ensino Superior Vale do Iguaçu Faculdade de Ciências Exatas e Tecnológicas de União da Vitória Professor Cleverson Bússolo Klettenberg PROPOSTA DE UM MODELO DE CODIFICAÇÃO E DECODIFICAÇÃO DE VÍDEO GERADO POR COMPUTADOR Aluno Ficticio Trabalho de conclusão de curso apresentado na UNIGUAÇU como critério de aprovação em Bacharelado em Sistemas de Informação sob orientação do Professor Cleverson Bússolo Klettenberg. UNIÃO DA VITÓRIA - PR 2005 REGISTRO DE DEFESA Trabalho de Conclusão de Curso apresentado nesta data à Banca Examinadora abaixo indicada: _____________________________ Nome do Professor Orientador _____________________________ Assinatura _____________________________ Nome do Professor Convidado _____________________________ Assinatura _____________________________ Nome do Professor Convidado _____________________________ Assinatura RESULTADO: ______________________________________ UNIGUAÇU: ___/___/_______ Agradecimentos Agradeço a minha família e a Renata, pela compreensão e apoio, aos professores e a instituição pelo aprendizado ao longo desses quatro anos, e a todos que de alguma forma contribuíram para a realização deste trabalho. Lista de Ilustrações Figura 1 - sinal analógico e sinal 14 digital.......................................................... ....................... 16 Figura 2 - Etapas do Algoritmo 16 JPEG............................................................. ....................... 20 Figura 3 - Distorção do JPEG, com compactação 0, 25, 50, 75 e 90 respectivamente.......... 21 21 Figura 4 - Digrama de classes.......................................................... 21 ....................................... 22 Figura 5 - Diagrama de caso de uso da classe codificadora................................................... 22 Figura 6 - Digrama de seqüência do caso de uso "Inicializar"............................................... 23 23 Figura 7 - Digrama de seqüência do caso de uso "Finalizar"................................................. Figura 8 - Digrama de seqüência do caso de uso "Codifica quadro"..................................... 23 26 28 Figura 9 - Diagrama de caso de uso da classe decodificadora................................................ Figura 10 - Digrama de seqüência do caso de uso "Inicializar"............................................. Figura 11 - Digrama de seqüência do caso de uso "Finalizar"............................................... Figura 12 - Digrama de seqüência do caso de uso "Decodifica quadro"................................ Figura 13 - Sistema de contagem dos blocos........................................................... ............... Figura 14 - Foto 300x300 pixels........................................................... .................................. Figura 15 - Janela de um Software 372x317 pixels........................................................... ..... 28 SUMÁRIO RESUMO .................................................................................................................................. 7 Introdução................................................................................................................................. 9 2.0Revisão Literaria ............................................................................................................... 10 10 3.0Redes de computadores .................................................................................................... 10 4.0Vídeo analógico ................................................................................................................. 10 3. MODELO PROPOSTO .................................................................................................... 11 3.1 método MONTAPACOTE .............................................................................................. 11 3.2 Método KILL.................................................................................................................... 12 4 Resultados ............................................................................................................................ 12 4.1 Implementação das classes e dos softwares de teste...................................................... 12 4.2 Delimitação e área de atuação dos testes ....................................................................... 12 4.2.1 Teste 1............................................................................................................................. 13 4.2.2 Teste 2............................................................................................................................. 13 5. CONCLUSÃO .................................................................................................................... 14 6. REFERÊNCIAS ................................................................................................................. 15 RESUMO Este trabalho propõe a criação de um modelo de codificação e decodificação de vídeo gerado por computador para a transmissão por redes de computadores, que pode ser usado em aplicações como acesso remoto, ensino de uso de softwares e monitoramento do uso de computadores. O modelo é baseado na análise orientada a objetos e composto por duas classes, codificadora e decodificadora. O trabalho descreve por meio de diagramas de classe, de caso de uso e seqüência, as propriedades e métodos das classes, detalha as características e a lógica de funcionamento dos mesmos, além de apresentar o algoritmo proposto. A Classe codificadora é responsável por criar um pacote contendo um quadro compactado, o qual deve ser submetido à classe decodificadora que vai então descompactá-lo. A compactação dos quadros usa dois formatos de compressão, PNG e JPEG, buscando assim um melhor aproveitamento de cada tipo de compactação, por meio de uma análise do conteúdo da imagem a ser compactada. São apresentados testes mostrando o desempenho das classes em várias situações e em alguns computadores com capacidades de processamento diferentes, e por meio dos resultados é demonstrado a funcionalidade e eficiência do modelo proposto, bem como as exigências quanto ao hardware necessário para um desempenho satisfatório das classes propostas. Palavras chave: Codificação, decodificação, vídeo gerado por computador, redes. Introdução As redes de computadores possibilitam inúmeros serviços de comunicação, dos quais podemos destacar aplicações que envolvem transmissão de vídeo, como acesso, administração e manutenção remotos de computadores que formam uma modalidade cada dia mais utilizada. O objetivo deste trabalho é propor um modelo de codificação e decodificação de vídeo gerado por computador para transmissão por redes de computadores, baseado em programação orientada a objetos, e com isso permitir a fácil criação de aplicações que necessitem dessas funcionalidades. Os serviços de transmissão de vídeo gerados por computador trazem praticidade em tarefas como suporte a distância de usuários, acesso remoto de computadores, administração remota de servidores, aplicações de ensino de uso de softwares e até mesmo monitoramento do uso de computadores. A escopo dessa pesquisa delimita-se a criação de uma proposta de um sistema de codificação e decodificação de vídeo gerado por computador, a implementação desse modelo, testes e análise dos resultados obtidos. A transmissão e recepção via rede não é objeto da pesquisa. O modelo proposto será apresentado por meio de duas classes, codificadora e decodificadora. Com o objetivo de detectar os pontos positivos e problemas durante a criação de aplicativos usando objetos criados a partir dessas, bem como comprovar o funcionamento e as exigências de hardware para o uso desses aplicativos, serão criados alguns softwares de teste, os quais devem registrar estatísticas durante sua execução. A análise dessas informações deve permitir uma conclusão sobre a eficiência geral do modelo proposto. 2.0 Revisão Literaria 3.0 Redes de computadores “A Comunicação é uma das maiores necessidades da sociedade humana desde os primórdios de sua existência.” Soares (1995, p.3), essa necessidade é uma característica inerente ao ser humano e impulsionou vários avanços tecnológicos, desde o surgimento da escrita, imprensa, telégrafo, telefone, rádio, televisão, chegando aos nossos dias com a Internet, os telefones celulares e certamente continuará a impulsionar a criatividade das pessoas em busca do novo. “Simplicidade é representada em termos XP pela busca pela “coisa mais simples que possa funcionar”. A ideia é construir algo simples e direto que solucione problemas de hoje e ter certeza de que isso seja suficientemente flexível para ser refinado e expandido de modo a solucionar os problemas de amanhã, mas não se preocupar hoje com os problemas de amanhã”. (KENDALL, 2002, pg.137). Dos vários meios de comunicação hoje disponíveis, um dos mais fascinantes é a Internet, pois ultrapassa barreiras geográficas, permitindo que pessoas de qualquer parte do mundo acessem informações sobre os mais variados assuntos e oferecendo a cada dia novos tipos de serviços, quebrando assim alguns paradigmas, conforme Held (1999, p.19) “Hoje em dia, você pode falar em um microfone e ter sua conversação de voz digitalizada, dividida em pacotes e transmitida pela Internet sem qualquer custo adicional além da tarifa mensal fixa do seu provedor de serviços da Internet.”, dessa forma uma ligação telefônica internacional que tem custo elevado, pode ser substituída por uma conversa via Internet ao custo uma de ligação local. Como previu Tanenbaum (1997, p.6) “O e-mail em tempo real permitirá que usuários remotos se comuniquem instantaneamente, vendo e ouvindo uns aos outros.”, o aumento de velocidade possibilitou novas aplicações e serviços na Internet, as páginas têm se tornado cada vez mais interativas, ricas em recursos gráficos, serviços como vídeo conferência, voz sobre IP1, televisão e rádio via Internet tornaram-se realidade, até mesmo para usuários domésticos. Entre os vários serviços de comunicação disponíveis na Internet, alguns dos mais interessantes são os que envolvem a transmissão de vídeo. 4.0 Vídeo analógico A transmissão de vídeo por meio das redes de computadores difere muito de transmissão de vídeo analógico, utilizada nos aparelhos de televisão comuns. A própria natureza da informação ou sinal transmitido é diferente, no vídeo analógico caracteriza-se por um sinal elétrico que oscila dentro de certa freqüência, essa oscilação é a informação em si, ou seja, a própria informação. No meio digital as informações são transmitidas por um sinal que oscila apenas entre dois valores possíveis, representando 0 (zero) e 1 (um). Outra diferença é o meio de transmissão, enquanto na televisão o sinal é transmitido pelo ar por ondas de rádio freqüência emitidas por torres, transmissores ou satélites, no vídeo 1 IP - Internet Protocol. digital em redes de computadores o sinal trafega por cabos, fibras óticas e também por ondas de rádio freqüência. O vídeo analógico pode sofrer vários tipos de interferências, distorções e atenuações, que prejudicam sua qualidade, isso não acontece no vídeo digital, que é composto por uma seqüência de 0 (zero) e 1 (um), ou seja, um sinal pode ser copiado inúmeras vezes sem que haja qualquer tipo de distorção. Figura 1 - a) sinal analógico a b b) sinal digital Quanto ao meio de transmissão, as ondas de televisão que viajam pelo ar podem ser captadas por inúmeros aparelhos receptores, ao mesmo tempo sem nenhum tipo de congestionamento ou concorrência. Quando um sinal digital trafega por uma rede, seja ele um sinal de vídeo ou qualquer outro tipo de dado, ele deve ser encaminhado para cada um dos destinos, é como se houvesse uma transmissão exclusiva para cada receptor, além disso, o tráfego dessa informação está sujeito a vários fatores, como congestionamento da rede, concorrência com outros pacotes, servidores sobrecarregados, latência, entre outros. Essas diferenças afetam vários aspectos da geração, gravação, armazenamento, transmissão e reprodução do vídeo digital em relação ao analógico. 3. MODELO PROPOSTO O modelo proposto é um sistema de codificação e decodificação das imagens geradas por computador, mais especificamente da tela do computador, que doravante chamaremos de Desktop. O sistema é composto por duas classes. A classe codificadora que gera como resultado um pacote, contendo um quadro, o qual será interpretado pela classe decodificadora que por sua vez, analisa esse pacote e produz como resultado uma imagem, a qual poderá ser exibida, dessa forma dois softwares podem trabalhar numa estrutura cliente/servidor, um codificando e outro decodificando imagens em aplicações como acesso remoto, e-learning (ensino a distância por meio eletrônico), entre outras. Os pacotes produzidos pela classe codificadora podem ser transmitidos via rede local ou Internet para classe decodificadora, ou mesmo armazenados em disco, para posterior decodificação dos pacotes e exibição das imagens, no entanto o escopo de trabalho delimita-se a geração e interpretação dos pacotes contendo quadros, a transmissão e recepção dos pacotes não é o objetivo das classes propostas. A compactação dos quadros usa os formatos JPEG e PNG, tentando aproveitar ao máximo as características de cada tipo de compressão, essa tentativa é baseada em uma estimativa da complexidade da imagem. 3.1 método MONTAPACOTE Esse método utiliza todas as informações geradas pelos métodos anteriores e monta uma string com a imagem do Desktop codificada, que é o pacote propriamente dito pronto para decodificação. O pacote gerado contém largura e altura do Desktop, largura e altura do bloco, índice dos blocos JPEG e o arquivo JPEG, índice dos blocos PNG e o arquivo PNG. Depois de gerado o pacote o mesmo pode ser transmitido via rede, ou mesmo armazenado para posterior decodificação. Algoritmo do método MONTAPACOTE: LIMPAR PACOTE PACOTE = LARGURA_DESKTOP // & = Operador de concatenação PACOTE = PACOTE & ALTURA_DESKTOP PACOTE = PACOTE & LARGURA_BLOCO PACOTE = PACOTE & ALTURA_BLOCO SE CONTA_JPEG > 0 PACOTE = PACOTE & INDICE_JPEG PACOTE = PACOTE & TAMANHO_ARQUIVO_JPEG PACOTE = PACOTE & ARQUIVO_JPEG FIM SE SE CONTA_PNG > 0 PACOTE = PACOTE & ARQUIVO_PNG PACOTE = PACOTE & TAMANHO ARQUIVO_PNG PACOTE = PACOTE & ARQUIVO_PNG FIM SE TAMANHO_PACOTE = LENGHT (PACOTE) 3.2 Método KILL 4 Resultados 4.1 Implementação das classes e dos softwares de teste As classes e os aplicativos de testes foram implementados em linguagem Clarion, versão 5b Enterprise Edition da empresa SoftVelocity2, que compila executáveis em 32 bits compatíveis com o Microsoft Windows. 4.2 Delimitação e área de atuação dos testes Foram desenvolvidos softwares utilizando as classes codificadora e decodificadora, que registram o tempo de codificação, decodificação e tamanho dos pacotes, para os seguintes testes: Teste 1: tamanho médio dos pacotes e tempo médio de codificação, em função do valor limite da estimativa do bloco; Teste 2: tempo médio de geração dos pacotes com melhor valor limite obtido no Teste 1 em computadores com diferentes capacidades de processamento; Em todos os testes utilizou-se a resolução de vídeo de 800x600 pixels, com blocos de 50x50 pixels. Foram utilizados os seguintes computadores: 2 www.softvelocity.com Computador A: AMD Athlon 64 2800+ de 2.07 Ghz com 512 Mb de memória RAM, com Microsoft Windows XP e densidade de cor de 32 bits. 4.2.1 Teste 1 Para realização do teste foi criado um software com dez objetos criados a partir da classe codificadora, cada um com um valor limite da estimativa diferente, sendo estes: 0, 20, 40, 60, 80, 90, 100, 140 e 180, os valores menores geram mais blocos compactados com JPEG, enquanto valores maiores geram mais blocos em PNG. As chamadas dos métodos de cada objeto foram colocadas em seqüência, dessa forma os dez codificaram as mesmas imagens. Ao todo foram realizadas 1.000 codificações para cada objeto, ao final de cada uma foi armazenado o tamanho do pacote gerado e o tempo gasto. O tamanho médio dos pacotes gerados pode ser visto no gráfico da figura 18. Como mostra o gráfico a utilização de dois tipos de compressão traz um resultado positivo, diminuindo significativamente o tamanho dos pacotes gerados pela classe codificadora. Por meio da apuração do tempo médio de codificação de cada objeto é possível perceber que o objeto com valor limite da estimativa definido como 0 (zero), obteve uma pequena vantagem, em torno de 8 milésimos de segundo, mas em contrapartida gerou pacotes de 11 Kb contra 4,8 Kb do objeto com valor limite da estimativa definido como 90, conforme mostra o gráfico de figura 19. Tempo em função do valor limite da estimativa 110 105,3 108,1 107,6 106,6 106,5 106,3 107 107,3 40 60 80 90 100 120 140 180 106,5 105 100 98,8 95 90 0 20 Milésimos de segundo Figura 19 - Gráfico do tempo médio de geração pacotes em função do valor limite da estimativa 4.2.2 Teste 2 Nesse teste utilizou-se um software codificando quadros a uma taxa máxima 4 quadros por segundo, com um objeto com valor limite da estimativa definido como 95, conforme resultado obtido no Teste 1. Foram executadas 1000 codificações em cada computador e ao final de cada codificação foi registrado o tempo gasto, a apuração dos dados pode ser vista no gráfico da figura 20. Tempo de codificação Computador A 75,7 Computador B 95,5 Computador C 199,2 Computador D 660,42 0 200 400 600 800 Milésimos de segundo Figura 20 - Gráfico do tempo de codificação em computadores com diferentes capacidades de processamento Conforme o gráfico é possível perceber que os computadores A, B e C, obtiveram tempos de codificação satisfatórios, atingindo a taxa de 4 quadros codificados por segundo, enquanto o computador D obteve uma taxa de 1,51 quadros por segundo, menos da metade da esperada. Foi perceptível a queda de desempenho geral do computador D durante a codificação. 5. CONCLUSÃO Por meio da realização deste trabalho foi possível perceber que a criação de softwares usando as classes propostas é uma tarefa simples, devido a reutilização de código oferecida pela programação orientada a objetos. A utilização de duas formas de compressão de imagens para geração dos pacotes mostrou-se um mecanismo eficiente para a redução do tamanho dos mesmos. No entanto é necessário que o valor limite da estimativa esteja definido corretamente, os testes mostraram que valores entre 90 e 100 são os ideais. Por meio dos testes foi possível concluir que a codificação de imagens é uma tarefa que tem um custo computacional relativamente elevado, sendo insatisfatória em computadores com pouca capacidade de processamento. Ao analisar os gráficos do uso de processador foi possível constatar que o nível de processamento apresenta picos durante a realização de operações seguidas que exijam codificação de vários blocos, como a minimização e rolagem de janelas. O modelo proposto é eficiente, evidenciando sua viabilidade ao demonstrar plena funcionalidade durante os testes, além da facilidade de desenvolvimento de aplicações utilizando as classes. Apesar da exigência de processamento da codificação ser relativamente alta está dentro dos padrões atuais dos processadores novos disponíveis no mercado. 6. REFERÊNCIAS ALBUQUERQUE, F. TCP/IP Internet : Protocolos & Tecnologias. de Janeiro : Axcel Books do Brasil, 2001. 3.ed. Rio AZEVEDO, E., CONCI, A. Computação Gráfica : Teoria e Prática. Janeiro : Elsevier, 2003. COAD, P., YOURDON, E. Campus, 1991. Análise Baseada em Objetos. FRANKLIN, D., PATTON, B. Janeiro : Campus, 2000. Rio de Rio de Janeiro : Flash 4! : Animação Criativa na Web. Rio de FURLAN, J. Modelagem de Objetos através da UML - the Unified Modeling Language : Análise e Desenho Orientado a Objeto. São Paulo : MAKRON Books, 1998. HELD, G. Comunicação de Dados. Rio de Janeiro : Campus, 1999. JAMSA, K., KLANDER, L. Programando em C/C++ : A Bíblia. Pearson Education do Brasil, 1999. MATOS, A. V. 2002. UML : Prático e Descomplicado. 2. ed. São Paulo : São Paulo : Érica, SOARES, L., LEMOS, G., COLCHER, S. REDES DE COMPUTADORES : Das LANs, MANs e WANs às redes ATM. Rio de Janeiro : Campus, 1995. TANENBAUM, A. S. Redes de Computadores. Rio de Janeiro : Campus, 1997. WELLING, L., THOMSON L. PHP e MySQL : Desenvolvimento Web. Janeiro : Elsevier, 2003. Rio de