Ordenación arbitraria de slicesLa ordenación arbitraria de slices (ASO) es un algoritmo para la prevención de pérdidas. Se utiliza para reestructurar la representación de las regiones fundamentales (macrobloques) de una imagen. Este tipo de algoritmo evita la necesidad de esperar a un conjunto completo de imágenes para llegar a todas las fuentes. Se trata como un mecanismo de resistencia adicional de error. Este tipo de algoritmo está incluido como herramienta en el perfil básico (Baseline Profile) del codificador MPEG-4 H.264/AVC junto con Slices I, Slices P, codificación adaptativa según el contexto de longitud variable (CAVLC), agrupación de Slices (SG) y Slices Redundantes. AplicacionesSe utiliza ampliamente en videoconferencias y aplicaciones móviles ejecutadas en dispositivos con potencia computacional limitada. La ASO impone que todos los macrobloques deben ser ordenados en la decodificación, y de esta manera mejorar la flexibilidad para poder disminuir el importante retraso que suele haber en las videoconferencia y en los usos interactivos de internet. ProblemasSi utilizamos ASO en imágenes con el sistema AVC (Código Avanzado de Vídeo) surge un grave problema: trozos de diferentes imágenes se intercalan. Una posible manera de resolverlo sería limitar la ASO dentro de un cuadro y de esta manera no se entrelazarían trozos de diferentes imágenes. Sin embargo, incluso si limitamos ASO a una imagen, aumentamos la complejidad del descodificador, porque la ordenación flexible de los macrobloques (FMO) amplía el concepto de cortes, permitiendo a macrobloques no consecutivos pertenecer a la misma sección. Tipos de decodificación ASOAsociación de macrobloques a Slice
Un ejemplo de cómo macrobloques se pueden asociar a slices se muestra en la Figura 1. Cuando la ASO es compatible, las cuatro slices de este ejemplo pueden ser recibidos por el descodificador en un orden aleatorio. La Figura 2 muestra el siguiente orden de recepción de: slice #4, slice #3, slice #1, y slice #2. En la misma figura se presentan los bloques del descodificador AVC necesarios para apoyar la decodificación ASO. Figura 1: Un ejemplo de asignación de macrobloques a cuatro slices. Cada segmento está representado por una textura diferente. Figura 2: Los bloques del descodificador AVC necesarios para apoyar la decodificación de ASO.
Ante la necesidad de descodificar el orden de slices, un descodificador podrá:
Decodificación de slices en el orden en que se reciben puede provocar un consumo de memoria adicional o imponer requisitos más altos de rendimiento en el descodificador y la memoria local para ejecutar a una velocidad de reloj más altas. Asociación de macrobloques a slices y de slices a grupos de slices
Un ejemplo de cómo slices pueden ser asociados a grupos de slices diferentes se muestra en la Figura 3. Cuando la ASO y FMO son compatibles, las cuatro slices de este ejemplo pueden ser recibidos por el descodificador en un orden aleatorio. La Figura 4 muestra el siguiente orden: slice #4, slice #2, slice #1, y slice #3. En la misma figura se presentan los bloques del descodificador AVC necesarios para apoyar la decodificación ASO y FMO. Figura 3: Un ejemplo de asignación de macrobloques a cuatro slices y dos grupos de slices (SG en la figura). Cada segmento está representado por una textura diferente, y cada uno de SG está representado por un color diferente.
La lista de indicadores, junto con la dirección del primer macrobloque del slice, el Slice Group (SG), y el mb_allocation_map (almacenada en la memoria local del procesador), se utilizarán para navegar por las secciones. La longitud del tramo será utilizada para transferir los datos de slice de la DRAM al procesador de memoria local. Al igual que en el caso de ASO, en el caso de ASO y FMO combinados, el descodificador podrá:
Referencias
Véase también |