Resumen Se trata del estudio del estándar de alta definición H.264 así como de sus aplicaciones e implementaciones basadas en software libre desarrolladas en C++ o en JAVA. El estándar H.264, es una norma que define un códec de vídeo de alta compresión, capaz de proporcionar una buena calidad de imagen con bitrates notablemente inferiores a los estándares previos. Actualmente está implementado por empresas y organizaciones para aplicaciones propias, por ello se puede llegar a conseguir el reto que se propusieron desde las instituciones que lo desarrollaron, ITU-T Video Coding Experts Group (VCEG) e ISO Motion Picture Experts Group (MPEG): Conseguir un estándar de codificación de video internacional eficiente. En primer lugar, se han explicado conceptos generales del mundo de la imagen digital, tales como la percepción de color, la descomposición del mismo en los diferentes sistemas, la codificación en todas sus fases y el término códec. A continuación se ha realizado un repaso de las unidades que se definen en el estándar, tales como los diferentes componentes del color de una imagen: luma, array que se refiere a la intensidad con la que se da un color (luminiscencia) y chroma, 2 arrays que definen los diferentes valores de crominancia (Cr para rojo y Cb para azul). Asimismo se habla también de los diferentes perfiles de la aplicación. También se ha especificado los tipos de división en macrobloques, unidad con la que se conoce a una agrupación de bits que puede variar en este estándar, dependiendo de la forma en la que se procesen los datos. De esto precisamente se habla en los siguientes apartados, del proceso de codificación del video, que se compone de las siguientes fases: • Predicción. Que puede realizarse de dos maneras, intra o inter, dependiendo de si la predicción se basa en el espacio o en el tiempo. • Transformación: para lo que se ha explicado la DCT (Transformada del Coseno Discreto). • Cuantificación: proceso que se encuentra dentro de la DCT. • Codificación basada en entropía: para lo que se ha expuesto las soluciones que plantea el estándar: • o Variable-Length Coding (VLC) o Context-based adaptive variable length coding (CAVLC) o Codificación Aritmética y Adaptativa basada en el contexto (CABAC) Filtros: explicado debido a que es una de las ventajas del estándar: el suavizado de bloques. A continuación se ha decidido realizar un estudio sobre comparativas, en primer lugar de estándares previos, y en segundo lugar de algunas implementaciones del estándar, libres o no, en cuanto al rendimiento y otras características. Para dar un enfoque más práctico, se han escogido dos aplicaciones con este estándar que se hayan implementado con éxito, para ello se ha elegido la videovigilancia y la videoconferencia, explicando para cada una de ellas, el por qué resulta ventajoso el H.264 frente a los otros. Ya para finalizar, se ha realizado una implementación por la metodología Extreme Programming utilizando la librería FFMPEG y las aplicaciones que vienen con ella, así como las opciones que tienen para el vídeo y demás. Se trata de una aplicación sencilla que compara dos imágenes de video de dos protocolos diferentes, realiza una conversión de formatos o muestra las características de un determinado video. En mi opinión, el H.264 es un firme candidato a convertirse en el más extendido, aunque aún queden unas fases por definir, como puede ser la propia codificación, debido a la cantidad de aplicaciones que están realizando su implementación propia. Por último se ha realizado un plan de Gestión de Proyecto que se adjunta en el Anexo A. Abstract This project deals with a research about the H.264 high definition standard, as well as its applications and implementations based on free software, and developed in C++ or JAVA. The H.264 standard is a regulation which defines a high compression video codec that can provide a good image quality with considerably lower bit rates than the previous standards. Nowadays, it is implemented by companies and organizations for their own applications. That is why the challenge from the original designer groups, ITU-T Video Coding Experts Group (VCEG) and ISO Motion Picture Experts Group (MPEG), is possible to be achieved: the creation of an efficient and international video codec. A review of the units defined on the standard is going to be introduced, such as the different components of a color in a given image: luma, array related to the intensity of a color (luminance) and chroma, two arrays which define the different chrominance values (Cr for red, and Cb for blue). The types of division have also been specified in macroblocks, which refers to a group of bits that can vary on this standard depending on the way to process the data. Those issues are just treated in the following sections based on the video codification process, which consists of the following stages: • Prediction. It can be made in two different ways, intra or inter, depending on the prediction was based on the space or on the time. • Transformation. It is based on the Discrete Cosine Transform (or DCT). • Quantization. This processed is included in the DCT. • Entropy-based codification. For which the proposed solution in the standard are introduced. • o Variable-Length Coding (VLC). o Context-based adaptive variable length coding (CAVLC). o Context-based Adaptive Binary Arithmetic Coding (CABAC). Filtering. Explained, because the block smooth is one of the standard advantages. Then, a research about comparatives between previous standards, and also between different implementations, which can be free or not, related to several characteristics such as performance and others. In order to obtain a practical point of view, two successfully implemented applications of this standard were chosen: videovigilance and videoconference. The reasons of their advantages with respect to other implementations without using H.264 are explained in detail. Finally, an implementation based on Extreme Programming methodology has been developed, using FFMPEG library and its applications, as well as the options for video and other possibilities. It is a simple application that compares two different video images from two different protocols, makes a format conversion or shows the characteristics of a certain video. In addition, the different profiles of the applications are mentioned. Regarding H.2654 standard, in my opinion, it is a solid candidate to become the most extended video standard, despite the fact that there still are some stages to be defined, such as the proper codification. That could be due to the huge number of different applications which have their own implementations. At the end of the document, a Project Management Plan was developed, and it is introduced in the Appendix A.