MXPA06002495A - Capa de porcion en codificador/descodificador (codec) de video. - Google Patents
Capa de porcion en codificador/descodificador (codec) de video.Info
- Publication number
- MXPA06002495A MXPA06002495A MXPA06002495A MXPA06002495A MXPA06002495A MX PA06002495 A MXPA06002495 A MX PA06002495A MX PA06002495 A MXPA06002495 A MX PA06002495A MX PA06002495 A MXPA06002495 A MX PA06002495A MX PA06002495 A MXPA06002495 A MX PA06002495A
- Authority
- MX
- Mexico
- Prior art keywords
- image
- unit
- partial
- video
- decoding
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/164—Feedback from the receiver or from the transmission channel
- H04N19/166—Feedback from the receiver or from the transmission channel concerning the amount of transmission errors, e.g. bit error rate [BER]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un codificador/descodificador de video utiliza una sintaxis de corriente de bit que proporciona una unidad de imagen parcial independientemente descodificable, que puede estar en la forma de una unidad que contiene una o mas filas contiguas de macrobloques (llamados una porcion). La capa de porcion proporciona una combinacion flexible de resiliencia de error y eficiencia de compresion. La capa de porcion codifica un mecanismo de direccion eficiente (por ejemplo, un elemento de sintaxis que especifica un inicio de fila de macrobloque de la capa de porcion), asi como un mecanismo eficiente para retransmitir opcionalmente informacion de encabezado de imagen. La capa de porcion proporciona independencia de descodificacion y reconstruccion al deshabilitar todas las formas de prediccion, traslape y filtracion por giro a traves de limites de porcion. Esto permite que una porcion codificada en modo interior sea reconstruida libre de error, sin importar los errores en otras regiones de la imagen.
Description
CAPA DE PORCION EN CODIFICADO R/DESCODIFICADOR (COPEC) DE VIDEO
CAMPO TECNICO
La presente invención se refiere a técnicas para codificar, descodificar y procesar digitalmente vídeo, imágenes y otro contenido de medio digital.
ANTECEDENTES
El vídeo digital consume grandes cantidades de almacenamiento y capacidad de transmisión. Una secuencia de vídeo digital en bruto típica incluye 15 o 30 cuadros por segundo. Cada cuadro puede incluir decenas o cientos de miles de píxeles (también llamados pels). Cada píxel representa un elemento pequeño de la imagen. En una forma en bruto, una computadora comúnmente representa un píxel como un grupo de 3 muestras que totalizan 24 bits. Por ejemplo, un píxel puede comprender una muestra de luminiscencia de 8 bits (también llamada una muestra de luma) que define el componente de escala de grises del píxel y dos valores de muestra de crominancia de 8 bits (también llamado muestras de croma) que definen el componente de color del píxel. De esa forma, el número de bits por segundo, o velocidad de bit, de una secuencia de vídeo digital en bruto típica puede ser de 5 millones de bits por segundo o más. La mayoría de las computadoras y redes de computadora carecen de los recursos para procesar vídeo digital en bruto. Por esta razón, los ingenieros utilizan la compresión (también llamada codificación o descodificación) para reducir la velocidad de bits de vídeo digital. La compresión disminuye el costo de almacenamiento y transmisión de vídeo al convertir el vídeo en una forma de velocidad de bit inferior. La descompresión (también llamada descodificación) reconstruye una versión del vídeo original de la forma comprimida. Un "codee" es un sistema de codificador/descodificador. La compresión puede ser con pérdida, en la cual la calidad del vídeo no sufre, pero las disminuciones en la velocidad de bit están limitadas por la cantidad inherente de variabilidad (algunas veces llamada entropía) de los datos de vídeo. O, la compresión puede ser con pérdida, en la cual la calidad del vídeo sufre, pero las disminuciones que se logran en la velocidad de bit son más dramáticas. La descompresión con pérdida frecuentemente es utilizada en conjunto con compresión con pérdida, en un diseño de sistema en el cual la compresión con pérdida establece una aproximación de técnica de compresión de información y con pérdida que son aplicadas para representar la aproximación. En general, las técnicas de compresión de vídeo incluyen compresión "de imagen interior" y compresión de "imagen intermedia", en donde una imagen, por ejemplo, es un cuadro de vídeo revisado progresivamente, un cuadro de vídeo entrelazado (que tiene líneas alternantes para campos de vídeo) o campo de vídeo entrelazado. Para los cuadros progresivos, las técnicas de compresión de imagen interna comprimen cuadros individuales (típicamente llamados l-cuadros o cuadros clave), y las técnicas de compresión de imagen intermedia comprimen cuadros (típicamente llamados cuadros predichos, P-cuadros, o B-cuadros) con referencia a cuadros precedentes y/o siguientes (típicamente llamados cuadros de referencia o de ancla). Los cuadros predichos pueden estar divididos en regiones llamadas macrobloques. Una región de coincidencia en un cuadro de referencia para un macrobloque particular es especificada al enviar información de vector de movimiento para el macrobloque. Un vector de movimiento indica la ubicación de la región en el cuadro de referencia cuyos píxeles van a ser utilizados como un predictor para el macrobloque actual de píxeles. La diferencia de píxel por píxel, o frecuentemente llamada la señal de error o residual, entre el macrobloque actual (o los bloques del mismo) y el predictor de macrobloque es derivado. Esta señal de error usualmente tiene entropía más baja que la señal original. Por lo tanto, la información puede ser codificada en una velocidad más baja. Un codificador realiza estimación de movimiento al determinar un vector de movimiento para una región de un cuadro al buscar una región de coincidencia en uno o más cuadros de referencia para utilizarse como un predictor. Un codificador o descodificador realiza compensación de movimiento al aplicar el vector de movimiento para encontrar el predictor en uno o más cuadros de referencia. El valor de vector de movimiento para un macrobloque frecuentemente está correlacionado con los vectores de movimiento para macrobloques rodeantes espacialmente. De esa forma, la compresión de los datos utilizados para transmitir la información de vector de movimiento puede ser lograda al codificar el diferencia entre el vector de movimiento y un predictor de vector de movimiento formado por vectores de movimiento vecinos. Frecuentemente en las técnicas de compresión de vídeo, los bloques de píxeles u otros datos de vídeo de dominio espaciales tal como residuales son transformados en datos de dominio de transformación, que frecuentemente son datos de dominio de frecuencia (es decir, espectrales). Los bloques resultantes de coeficiente de datos espectrales pueden ser cuantificados y después codificados por entropía. Cuando de comprimen los datos antes de que se presente el vídeo resultante, un descodificador típicamente realiza la inversa de las operaciones de compresión. Por ejemplo, un descodificador puede realizar descodificación de entropía, cuantificación inversa, y una transformación inversa mientras descomprime los datos. Cuando se utiliza la compensación de movimiento, el descodificador (y codificador) reconstruye un cuadro para uno o más cuadros previamente reconstruidos (que ahora son utilizados como cuadros de referencia), y el cuadro recientemente reconstruido puede ser utilizado después como un cuadro de referencia para la compensación de movimiento para cuadros posteriores. Muchos escenarios de uso típico para vídeo digitalmente codificado involucra la transmisión del vídeo codificado entre dispositivos, y frecuentemente entre ubicaciones geográficamente distantes. Además, muchos sistemas de transmisión de datos comúnmente utilizados utilizan protocolos de transmisión a base de paquete, en los cuales una transmisión de datos está dividida en unidades enrutadas de forma separada llamadas "paquetes". Estos varios sistemas de transmisión que transportan vídeo digital frecuentemente están sujetos al ruido y a otras fuentes de errores de transmisión, y pueden experimentar "pérdida de paquete". Tales errores y pérdidas de paquete pueden llevar a la falla para descodificar un cuadro individual, o múltiples cuadros relacionados de la secuencia de vídeo. Por lo tanto puede ser deseable codificar regiones parciales de una imagen en una secuencia de vídeo como una unidad descodificable independientemente. Esto ayuda a permitir el empaquetado de la corriente de vídeo. Además, esto introduce redundancia adicional en la corriente de bit de vídeo comprimido que aumenta su resiliencia para errores de transmisión y pérdida de paquete. Por ejemplo, la pérdida de descodificación de un error de transmisión o paquete perdido puede estar limitada a la región parcial, en vez de una imagen completa de la secuencia de vídeo. Sin embargo, esta resiliencia es lograda a costa de eficiencia de compresión.
Numerosas compañías han producido códigos de vídeo. Por ejemplo, Microsoft Corporation ha producido un codificador y descodificador de vídeo liberado para Vídeo de Medios de Windows 8. Además de estos productos, numerosos estándares internacionales especifican aspectos de descodificadores de vídeo y formatos para información de vídeo comprimida. Estos estándares incluyen los estándares de H.261, PEG-1, H.262, H.263 y MPEG-4. Directamente o por implicación, estos estándares también especifican ciertos detalles de codificador, pero otros detalles de codificador no son específicos. Estos productos y estándares utilizan (o soportan el uso de) diferentes combinaciones de las técnicas de compresión y descompresión descritas anteriormente. En particular, estos productos y estándares proporcionan varias técnicas para codificación de unidad de imagen parcial. Una de tales técnicas divide un cuadro dentro de la secuencia de vídeo en porciones. Una porción es definida para contener una o más filas contiguas de macrobloques en su orden de izquierda a derecha original. Una porción comienza en el primer macrobloque de una fila, y termina en el último macrobloque de la misma u otra fila. Varios estándares, por ejemplo, MPEG-1, MPEG-2, H.263 (con
GOBs siendo aproximadamente equivalente a porciones o con modo de codificación estructurada de porción de Anexo K), parte 2 de MPEG-4 y parte 10 de H.264/JVT/MPEG-4, todos tienen porciones como parte de su sintaxis. Entre estos, toda la predicción interna deseable y predicción de vector de movimiento y la mayoría de otras formas de predicción a través de límites de porción por razones voluminosas de error/pérdida. Entre esto, solo H.263 (Anexo J) y H.264/JVT incluyen filtros de giro. El control de H.263 de entrelazo es más primitivo (codificación de campo solo utilizando indicaciones de mejora suplemental de Anexo W). El H.264 tiene una o más estructuras de encabezado robustas de error y permite al codificador seleccionar si el filtrado de giro va a ser o no aplicado a través de los límites de porción. La implementación de porciones en estos varios estándares de descodificación de vídeo puede golpear a un balance diferente entre la eficiencia de resiliencia y codificación.
COMPENDIO DE LA INVENCION
Un codee de vídeo y sintaxis de corriente de bit aquí descrito incluye una capa de porción que está diseñada para ser flexible, y proporcionar una combinación efectiva de resiliencia de error y eficiencia de compresión. Esta capa de porción proporciona las siguientes características clave: a) un mecanismo de dirección de porción eficiente que trabaja con métodos de codificación de cuadro de entrelace y campo de entrelace, b) un mecanismo flexible y eficiente para retransmitir el encabezado de imagen en la capa de porción, y c) independencia de descodificación al deshabilitar todas las formas de predicción, traslapar y filtrar partido a través de límites de porción, para que un codificado por porción en modo interior puede ser reconstruido libre de error, sin respecto a otros errores en otras regiones de la imagen. Las características adicionales y ventajas de la invención serán evidentes a partir de la siguiente descripción detalla de modalidades que proceden con referencia a los dibujos acompañantes.
BREVE DESCRIPCION DE LOS DIBUJOS
La Figura 1 es un diagrama de bloque de un codificador de vídeo que emplea la codificación de capa de porción aquí descrita. La Figura 2 es un diagrama de bloque de un descodificador de vídeo que emplea la codificación de capa de porción aquí descrita. La Figura 3 es un diagrama que ¡lustra un orden jerárquico de elementos de una secuencia de vídeo representada en una corriente de bit comprimida utilizada por el codificador/descodificador de vídeo que emplea codificación de capa de porción. La Figura 4 es un diagrama de sintaxis de nivel de secuencia de una sintaxis de codificación de la corriente de bit comprimida utilizada por el codificador/descodificador de vídeo que emplea la codificación de capa de porción. La Figura 5 es un diagrama de sintaxis de nivel de cuadro de una sintaxis de codificación de la corriente de bit comprimida utilizada por el codificador/descodificador de vídeo que emplea la codificación de capa de porción. La Figu'ra 6 es un diagrama de sintaxis del nivel de capa de porción de una sintaxis de codificación de la corriente de bit comprimida utilizada por el codificador/descodificador de vídeo que emplea la codificación de capa de porción. La Figura 7 es un diagrama que ilustra un ejemplo de traslape refinado realizado en límites de bloque. La Figura 8 es un diagrama que ilustra un ejemplo de píxeles de límite de bloque horizontales en una l-imagen en la cual se realiza un filtrado de desbloqueo en giro. La Figura 9 es un diagrama que ilustra un ejemplo de píxeles de límite de bloque vertical en una l-imagen en la cual se realiza el filtrado de desbloqueo en giro. La Figura 10 es un diagrama de bloque de un ambiente de cómputo adecuado para el codificador/descodificador de vídeo de las Figuras 1 y 2. La Figura 11 es un diagrama que ilustra un grupo de segmentos de cuatro píxeles utilizado en filtrado de giro. La Figura 12 es un diagrama que ilustra píxeles utilizados en una operación de filtrado. La Figura 13 es una lista de pseudo-código de una operación de filtrado en un tercer par de píxel de un segmento. La Figura 14 es una lista de pseudo-código de una operación de filtrado en un primer, segundo y cuarto pares de píxel de un segmento.
DESCRIPCION DETALLADA
La siguiente descripción está dirigida a implementación de una capa de porción en un código de vídeo y sintaxis de corriente de bit, que está diseñada para ser flexible y proporcionar una combinación efectiva de residencia de error y eficiencia de compresión. Una aplicación ilustrativa de codificación de capa de porción es en un codificador y descod ificador de imagen o vídeo. Por consiguiente, la codificación de capa de porción es descrita en el contexto de un codificador y descodificador de imagen o vídeo generalizado, pero alternativamente puede ser incorporado en la sintaxis de corriente de bit de varios otros códigos de imagen y vídeo y puede variar en detalles de esta sintaxis de corriente de bit ilustrativa descrita más adelante.
1. Codificador y Descodificador de Vídeo Generalizados La Figura 1 es un diagrama de bloque de un codificador de vídeo generalizado (100) y la Figura 2 es un diagrama de bloque de un descodificador de vídeo generalizado (200), en el cual las transformaciones WMV9/VC-9 pueden ser incorporadas. Las relaciones mostradas entre módulos dentro del codificador y descodificador indican el flujo principal de información en el codificador y descodificador; otras relaciones no son mostradas para la búsqueda de simplicidad. En particular, las Figuras 1 y 2 usualmente no muestran información lateral que indica los grupos, modos, tablas de codificador, etc., utilizadas para una secuencia de vídeo, imagen, macrobloque, bloque, etc. Tal información lateral es enviada en la corriente de bit de salida, típicamente después de la codificación de entropía de la información lateral. El formato de la corriente de bit de salida puede ser un formato de Vídeo de Medios de Windows u otro formato. El codificador (100) y descodificador (200) son a base de bloque y utilizan un formato de macrobloque 4:2:0 con cada macrobloque incluyendo bloques de luminancia 8x8 de luminiscencia 4 (en tiempo tratados como un macrobloque 16x16) y dos bloques de crominancia 8x8. Alternativamente, el codificador (100) y descodificador (200) están basados en objeto, utilizan un macrobloque diferente o formato de bloque, o realizan operaciones en grupos de píxeles de diferente tamaño o configuración de los bloques de 8x8 y macrobloques de 16x16. Dependiendo en la implementación y el tipo de compresión deseada, los módulos del codificador o descodificador pueden ser agregados, omitidos, divididos en múltiples módulos, combinados con otros módulos y/o reemplazados con módulos similares. En modalidades alternativas, los codificadores o descodificadores con módulo diferente y/o otras configuraciones de módulos realizan una o más de las técnicas descritas.
A. Codificador de Vídeo La Figura 1 es un diagrama de bloque de un sistema de codificador de vídeo general (100). El sistema de codificador (100) recibe una secuencia de cuadros de vídeo incluyendo una cuadro actual (105), y produce información de vídeo comprimida (195) como salida. Las modalidades particulares de los codificadores de vídeo típicamente utilizan una variación o versión suplementada de codificador generalizado (100). El sistema de codificador (100) comprime cuadros predichos y cuadros clave. Para la búsqueda de presentación, la Figura 1 muestra una ruta para cuadros clave a través del sistema de codificador (100) y una ruta para cuadros predichos hacia adelante. Muchos de los componentes del sistema de codificador (100) son utilizados para comprimir tanto cuadros clave como cuadros predichos. Las operaciones exactas realizadas por esos componentes pueden variar dependiendo en el tipo de información siendo comprimida. Un cuadro predicho [también llamado p-cuadro, b-cuadro para predicción bidireccional o cuadro codificado interior] es representado en términos de predicción (o diferencia) de uno o más otros cuadros. Un residual de predicción es la diferencia entre lo que se predijo y el cuadro original. En contraste, una cuadro clave [también llamado i-cuadro, cuadro codificado interior] es comprimido sin referencia a otros cuadros. Si la cuadro actual (105) es una cuadro predicho hacia delante, un estimador de movimiento (110) estima el movimiento de macrobloques u otros grupos de píxeles del cuadro actual (105) con respecto a una o más cuadros de referencia, que es el cuadro previo reconstruido (125) guardado en memoria intermedia en el almacenamiento de cuadro (120). En modalidades alternativas, el cuadro de referencia es un cuadro posterior o el cuadro actual es predicho bidireccionalmente. El estimador de movimiento (110) produce como información de movimiento de información lateral (115) tal como vectores de movimiento. Un compensador de movimiento (130) aplica la información de movimiento (115) al cuadro previo reconstruido (125) para formar un cuadro actual compensado por movimiento (135). La predicción raramente perfecta, sin embargo, la diferencia entre el cuadro actual compensado por movimiento (135) y el cuadro actual original (105) es el residual de predicción (145). Alternativamente, un estimador de movimiento y compensador de movimiento aplican otro tipo de estimación/compensación de movimiento. Un transformador de frecuencia (160) convierte la información de vídeo de dominio espacial en datos de dominio de frecuencia (es decir, espectral). Para los cuadros de vídeo a base de bloque, el transformador de frecuencia (160) aplica una transformación descrita en las siguientes secciones que tiene propiedades similares al transformador de coseno separado ["DCT"]- En algunas modalidades, el transformador de frecuencia (160) aplica una transformación de frecuencia a bloques de residuales de predicción espaciales para cuadros clave. El transformador de frecuencia (160) puede aplicar transformaciones de frecuencia de tamaño de 8x8, 8x4, 4x8, o de otro tamaño. Un cuantif icádor (170) después cuantifica los bloques de coeficientes de datos espectrales. El cuantificador aplica cuantif icación uniforme, en escala a los datos espectrales con un tamaño de paso que varía en una base de cuadro por cuadro u otra base. Alternativamente, el cuantificador aplica otro tipo de cuantificación a los coeficientes de datos espectrales, por ejemplo, una cuantificación no uniforme, de vector, o no adaptiva, o directamente cuantifica datos de dominio espaciales en un sistema de codificador que no utiliza transformaciones de frecuencia. Además de la cuantificación adaptiva, el codificador (100) puede utilizar liberación de cuadro, filtrado adaptativo, u otras técnicas para control de velocidad. . Cuando un cuadro actual reconstruido es necesario para la estimación/compensación de movimiento subsecuente, un cuantificador inverso (176) realiza cuantificación inversa en los coeficientes de datos espectrales cuantificados. Un transformador de frecuencia inversa (166) después realiza la inversa de las operaciones del transformador de frecuencia (160), produciendo un residual de predicción reconstruido (para un cuadro predicho) o un cuadro clave reconstruido. Si la cuadro actual (105) fue un cuadro clave, el cuadro clave reconstruido es tomado como el cuadro actual reconstruido (no mostrado). Si la cuadro actual (105) tiene un cuadro predicho, el residual de predicción reconstruido es agregado al cuadro actual compensado por movimiento (135) para formar el cuadro actual reconstruido. El almacenamiento de cuadro (120) guarda en memoria intermedia el cuadro actual reconstruido para utilizarse al predecir el siguiente cuadro. En algunas modalidades, el codificador aplica un filtro de desbloqueo al cuadro reconstruido para refinar adoptivamente discontinuidades en los bloques del cuadro. El codificador de entropía (180) comprime la salida del cuantificador (170) así como cierta información lateral (por ejemplo, información de movimiento (115), tamaño de paso de cuantificación). Las técnicas de codificación de entropía típicas incluyen codificación aritmética, codificación diferencial, codificación de Huffman, codificación de longitud de funcionamiento, codificación LZ, codificación de diccionario, y combinaciones de los anteriores. El codificador de entropía (180) típicamente utiliza diferentes técnicas de codificación para diferentes tipos de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes tipos de información lateral), y pueden elegir de entre múltiples tablas de código dentro de una técnica de codificación particular. El codificador de entropía (180) proporciona información de vídeo comprimida (195) en el memoria intermedia (190). Un indicador de nivel es retroalimentado para volver a clasificar el bit módulos adoptivos. La información de vídeo comprimida (195) reducida del memoria intermedia (190) en una velocidad de bit constante o relativamente constante y almacenada para corriente subsecuente en esa velocidad de bit. Alternativamente, el sistema de codificador (100) hace fluir información de vídeo comprimida inmediatamente siguiendo la compresión. Antes o después de la memoria intermedia (190), la información de vídeo comprimida (195) puede .ser codificada por canal para transmisión en la red. La codificación de canal puede aplicar detección de error y datos de corrección a la información de vídeo comprimida (195).
B. Descodificador de Vídeo La Figura 2 es un diagrama de bloque de un sistema de descodificador de vídeo general (200). El sistema de descodificador (200) recibe información (295) para una secuencia comprimida de cuadros de vídeo y produce salida incluyendo una cuadro reconstruido (205). Las modalidades particulares de los descodificadores de vídeo típicamente utilizan una variación o versión suplementada del descodificador generalizado (200). El sistema de descodificador (200) descomprime los cuadros predichos y cuadros clave. Para la búsqueda de presentación, la Figura 2 muestra una ruta para cuadros clave a través del sistema de descodificador (200) y una ruta para cuadros predichos hacia delante. Muchos de los componentes del sistema de descodificador (200) son utilizados para comprimir tanto cuadros clave como cuadros predichos. Las operaciones exactas realizadas por esos componentes pueden variar dependiendo del tipo de información siendo comprimida. Un memoria intermedia (290) recibe la información (295) para la secuencia de vídeo comprimida y hace la información recibida quede disponible para el descodificador de entropía (280). La memoria intermedia (290) típicamente recibe la información a una velocidad que es de forma justa constante con el tiempo, e incluye una memoria intermedia de imágenes inestables para guardar en memoria intermedia variaciones de término corto en anchura de banda o transmisión. La memoria intermedia (290) puede incluir una memoria intermedia de reproducción y otras memorias intermedias también. Alternativamente, la memoria intermedia (290) recibe información en una velocidad variante. Antes o después de la memoria intermedia (290) la información de vídeo comprimida puede ser un canal descodificado y procesado para detección y corrección de error. La entropía de descodificador de entropía (280) descodifica datos cuantificados codificados por entropía así como información lateral codificada por entropía (por ejemplo, información de movimiento, tamaño de paso de cuantificación), típicamente aplicando la inversa de la codificación de entropía realizada en el codificador. Las técnicas de descodificación de entropía incluyen descodificación aritmética, descodificación diferencial, descodificación de Huffman, descodificación de longitud de funcionamiento, descodificación LZ, descodificación de diccionario, y combinaciones de las anteriores. El descodificador de entropía (280) típicamente utiliza diferentes técnicas de descodificación para diferentes tipos de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes tipos de información lateral), y pueden elegir de entre múltiples tablas de código dentro de una técnica de descodificación particular. Si el cuadro (205) a ser reconstruido es un cuadro predicho hacia delante, un compensador de movimiento (230) aplica información de movimiento (215) a un cuadro de referencia (225) para formar una predicción (235) del cuadro (205) siendo reconstruido. Por ejemplo, el compensador de movimiento (230) utiliza un vector de movimiento de macrobloque para encontrar un macrobloque en el cuadro de referencia (225). Una memoria intermedia de cuadro (220) almacena cuadros previos reconstruidos para utilizarse como cuadros de referencia. Alternativamente, un compensador de movimiento aplica otro tipo de compensación de movimiento. La predicción a través del compensador de movimiento es raramente perfecta, así el descodiflcador (200) también reconstruye residuales de predicción. Cuando el descodificador necesita un cuadro reconstruido para compensación de movimiento subsecuente, el almacenamiento de cuadro (220) guarda eñ memoria intermedia el cuadro reconstruido para utilizarse al predecir el siguiente cuadro. En algunas modalidades, el codificador aplica un filtro de desbloqueo al cuadro reconstruido para refinar adoptivamente discontinuidades en los bloques del cuadro. Un cuantificador inverso (270) cuantifica de forma inversa datos descodificados por entropía. En general, el cuantificador inverso aplica cuantificación uniforme, inversa en escala a los ciatos descodificador por entropía con un tamaño de paso que varía en una base de cuadro por cuadro u otra base. Alternativamente, el cuantif icador inverso aplica otro tipo de cuantificación inversa a los datos, por ejemplo, una cuantificación no uniforme, de vector, o no adaptativa, o cuantifica de forma inversa directamente datos de dominio espaciales en un sistema de descodificador que no utiliza transformaciones de frecuencia inversa. Un transformador de frecuencia inversa (260) convierte los datos de dominio cuantificados de frecuencia en información de vídeo de dominio espacial. Para los cuadros de vídeo a base de bloque, el transformador de frecuencia inverso (260) aplica una transformación inversa descrita en las siguientes secciones. En algunas modalidades, el transformador de frecuencia inversa (260) aplica una transformación de frecuencia inversa a bloques de residuales de predicción espaciales para cuadros clave. El transformador de frecuencia inversa (260) puede aplicar transformaciones de frecuencia inversas de 8x8, 8x4, 4x8, o de otro tamaño.
2. Codificación de Capa de porción Como se discutió en la sección de antecedentes anterior, una técnica de prevenir o minimizar fallas de descodificación debido a la pérdida de paquete y errores de transmisión es para proporcionar redundancia adicional a través de codificación en unidades de imagen parciales descodificables independientemente, tal como los porciones proporcionados en algunos estándares de codee de vídeo anteriores. En general, una porción es una porción de imagen que incluye una o más filas contiguas de macrobloques. Uno de los principales retos de las porciones es permitir al código lograr el comercio de derecho entre la residencia de error y compresión. La razón es que algunas aplicaciones de código de vídeo o escenarios de uso tienen que superar la cantidad importante de pérdida de paquete, y por lo tanto colocar un superior alto en la resiliencia de error. Otras aplicaciones requieren resiliencia de error muy mínima pero requieren compresión eficiente. En implementaciones de una sintaxis de corriente de bit de código de vídeo aquí descritas, la sintaxis incorpora una capa de porción u otra capa de unidad de imagen diseñada para que se pueda lograr la opción óptima de resiliencia y eficiencia. La capacidad es lograda en las siguientes formas: A) Reconstrucción perfecta de una porción interior: la tapa de porción de la sintaxis ilustrada ha sido diseñada para que las operaciones tal como filtrado de giro, y traslape no funcionen a través de las porciones. Por lo tanto, si todos los macrobloques de una porción son codificados en el interior, y si el encabezado de imagen correspondiente a esa porción es conocido, entonces ese porción puede ser reconstruido exactamente sin error, sin importar los errores en otros porciones (regiones) de la imagen. Esto permite a la reconstrucción perfecta (libre de error) de una porción interior y proporciona capacidad de resiliencia de error significante. B) Método de bajo costo de repetir encabezado de cuadro: la repetición de la información de encabezado de imagen aumenta la probabilidad que el encabezado de imagen se ha recibido en el descodificador, pero se hace a costa de la disminución de eficiencia de compresión. La sintaxis de capas de porción ilustrada señala si el encabezado de imagen es transmitido en una porción que utiliza una bandera de un bit. Esto permite al codificador. elegir tanto el número de porciones, y la porción particular, en el cual se retransmite el encabezado de imagen.
A. Jerarquía de Sintaxis Más específicamente, la sintaxis de código de vídeo ilustrada representa vídeo que utiliza una estructura de sintaxis jerárquica que descompone cada cuadro de la secuencia de vídeo en tres capas jerárquicas, imagen 310, macrobloque 340 y bloque 350, como se muestra en la Figura 3. La imagen 310 incluye un canal de luminiscencia (Y) 330, y canales de crominancia (Cr y Cb) 331-332. La capa de imagen 310 está conformada de filas de macrobloques 340. Cada macrobloque generalmente contiene seis bloques: un grupo de 2x2 de bloques de la capa de luminiscencia, y un bloque de cada uno de los canales de crominancia. Los bloques generalmente consisten de muestras de luminiscencia o crominancia de 8x8 (aunque los bloques de transformación de 4x8, 8x4 y 4x4 también pueden ser utilizados en la sintaxis de codee de vídeo ilustrada), a la cual se aplica una transformación para codificación a base de transformación. Además, una cuarta capa opcional, llamada la capa de porción 320, puede estar presente entre la capa de imagen 310, y la capa de macrobloque 340. Una porción es definida para contener una o más filas contiguas de cuadro boques que son revisados en orden de revisión de cuadro. De esa forma, una imagen 310 puede ser descompuesta en porciones 320, que a su vez, puede ser descompuesto en macrobioques 340. En esta sintaxis de codee de vídeo ilustrada, una porción siempre comienza en el primer macrobloque de una fila, y termina en el último macrobloque de la misma fila u otra. De esa forma, una porción contiene un número entero de filas completas. Además, las imágenes y porciones y siempre están alineados por byte en esta sintaxis de corriente de bit de codee de vídeo ¡lustrada, y son transmitido en una unidad descodificable independiente (IDU) como se describe más adelante. Una nueva imagen, o una porción, es detectada a través de códigos de inicio como se delineo más adelante.
B. Definición de Capa de porción Una porción representa una o más filas contiguas de macrobioques que son revisados en orden de revisión de cuadro. La capa de porción en la sintaxis ilustrada es opcional, y pueden ser saltada al codificar una imagen como una unidad descodificable independiente individual (IDU). Cuando una imagen es codificada en múltiples IDUs, se utilizan porciones. Se debe notar que una porción siempre comienza en el primer macrobloque en una fila, y termina en el último macrobloque en la misma u otra fila. De esa forma, una porción contiene un número entero de filas completas. Una porción es siempre alineada por bit, y cada porción es transmitido en una IDU diferente. El inicio de una nueva porción es detectado a través de la búsqueda de códigos de inicio como se delineó más adelante. Cuando comienza un nuevo porción los predictores de vector de movimiento, predictores para coeficientes AC y DC, y los predictores para parámetros de cuantificación son reestablecidos. En otras palabras, con respecto a la predicción, la primer fila de macrobloques en la porción es considerada para ser la primer fila de macrobloques en la imagen. Esto asegura que no existe dependencia de porción intermedio en los predictores. Además, cuando se utilizan las porciones, toda la información de plano de bit es transportada en modo incompleto lo cual asegura que cada macrobloque transporta su propia información local.
C. Estructura de Sintaxis de Capa de porción Con referencia a las Figuras 4 y 5, la corriente de bit de vídeo comprimido 195 (Figura 1) incluye información para una secuencia de cuadros de vídeo progresivos comprimidos u otras imágenes (por ejemplo, cuadro entrelazado o imágenes de formato de campo entrelazado). La corriente de bit está organizada en varias capas jerárquicas que son codificadas por un descodificador tal como el descodificador (200) de la Figura 2. La capa más alta es la capa de secuencia, que tiene información para la secuencia total de cuadros. Adicionalmente (como se resumió previamente), cada cuadro de vídeo comprimido está comprendido de datos que son estructurados en tres capas jerárquicas: imagen, macrobloque, y bloque (de superior a inferior); y opcionalmente una capa de porción entre la imagen y capas de macrobloque. La Figura 4 es un diagrama de sintaxis para la capa se secuencia 400, que incluye un encabezado de secuencia 410 seguido por datos para la capa de imagen 500 (ver Figura 5). El encabezado de secuencia 410 incluye diferentes elementos de nivel de secuencia que son procesador por el descodificador y utilizados para descodificar la secuencia. La Figura 5 es un diagrama de sintaxis para la capa de imagen 500 para un cuadro codificado interior entrelazado [?-cuadro entrelazado"]. Los diagramas de sintaxis para otras imágenes, tal como l-cuadros progresivos, P-imágenes y B-cuadros tienen muchos elementos de sintaxis similares. La capa de imagen 500 incluye un encabezado de imagen 510 seguido por datos para la capa de macrobloque 520. El encabezado de imagen 510 incluye varios elementos de nivel de imagen que son procesados por descodificador y utilizados para descodificar el cuadro correspondiente. Algunos de estos elementos solo están presentes si su presencia es señalada o implicada por un elemento de nivel de secuencia o un elemento de nivel de imagen precedente.
La Figura 6 es un diagrama de sintaxis para la capa de porción 600, que incluye un encabezado de porción 610 seguido por datos para la capa de macrobloque 520. Los elementos que conforman el encabezado de porción 610 incluyen un elemento de dirección de porción (PORCIÓN_DIR) 620, y un elemento de bandera presente de encabezado de imagen (PIC_ENCABEZADO_BANDERA) 630, como se muestra en el siguiente Cuadro 1. El elemento de dirección de porción 620 es un elemento de sintaxis de 9 bit de longitud fija. La dirección de fila de la primera fila de macrobloque en la porción es codificada por binario en este elemento de sintaxis. En la implementación ilustrada, el rango de este elemento de sintaxis es de 1 a 511, en donde el tamaño de imagen máximo de 8192 corresponde a un máximo de 512 filas de macrobloque. El PIC_ENCABEZADO_BANDERA 630 es un elemento de sintaxis de 1 bit que está presente en el encabezado de porción. Si PIC_ENCABEZADO_BANDERA = 0, entonces la información de encabezado de imagen no es repetida en el encabezado de porción. Si el PIC_ENCABEZADO_BANDERA = 1, la información del encabezado de imagen 510 (Figura 5) apareciendo en la capa de imagen que contiene la porción es repetido en encabezado de porción.
CUADRO 1 Corriente de Bit de Capa de porción
3. Códigos de Inicio de Unidad Independientemente Descodificable En la sintaxis de corriente de bit del codificador/descodificador de vídeo ilustrado, una Unidad Independientemente Descodificable (IDU) de datos de vídeo comprimida comienza con un identificador llamado Código de Inicio (SC). Un IDU podría referirse a una imagen individual, o una porción (es decir, grupo de macrobloques en una imagen), o un grupo de imágenes (GOP), o un encabezado de secuencia. El código de inicio es una secuencia de 4 bytes, que consiste de un Prefijo de Código de Inicio (SCP) de 3 bytes único, y un Sufijo de Código de Inicio (SCS) de 1 byte. El SCP es la secuencia única de 3 bytes (0x000001). El SCS es utilizado para identificar el tipo de IDU que sigue al código de inicio. Por ejemplo, el sufijo de código de inicio antes de una imagen es diferente del sufijo de código de inicio antes de una porción. Los códigos de inicio siempre están alineados por bytes. Un ecataismo de Encapsulación (EM) es descrito para prevenir la emulación del prefijo de código de inicio en la corriente de bit. Los datos comprimidos antes de la encapsulación son llamados Unidad Descodificable Independientemente En Bruto (RIDU) mientras IDU Encapsulada (EIDU) se refiere a los datos después de la encapsulación. La siguiente sección proporciona una perspectiva lateral de codificador y cómo el código de inicio y la encapsulación operan. La sección E.2 especifica la detección de códigos de inicio y EIDUs en el descod ificador. La sección E.3 trata con extracción de un RIDU de un EIDU. La sección E.4 especifica sufijos de código de inicio para varios tipos de IDU.
A. Códigos de Inicio y Encapsulación, un Punto de Vista de Codificador La encapsulación de un RIDU para obtener un EIDU es descrita más adelante. Paso 1: Un bit "1" pendiente es agregado al final del RIDU. El EM ahora se anexa entre 0 y 7 bits en el final del IDU para que el IDU termine en una ubicación nominada por bit. El valor de estos bits de "relleno" es "0". Como resultado, al final de este paso, el IDU es representado en un número entero de bytes, en el cual el último byte del IDU no puede ser un byte valuado en cero. La fila resultante de bytes es llamada los bytes de carga del IDU. Paso 2: El prefijo de código de inicio de 3 bytes (0x000001), y el sufijo de código de inicio apropiado que identifica el tipo de IDU son colocados en el inicio de EIDU. Paso 3: El resto del EIDU es formado al procesar los bytes de carga del IDU a través del siguiente procedimiento de prevención de emulación. La emulación de los prefijos de código de inicio en el IDU son eliminados a través de relleno de bytes. El procedimiento de prevención de emulación es equivalente a la siguiente operación: 1) Reemplazar cada fina con la carga de 2 bytes consecutivos de valor 0x00 seguido por un byte que contiene valores de cero en sus seis MSBs (sin importar los valores de LSB) con 2 bytes de valor 0x00 seguidos por 1 byte igual a 0x03 seguidos por 1 byte igual al último byte de la fila de datos de 3 bytes original. Este procedimiento es ilustrado en el Cuadro 2.
CUADRO 2 Reemplazo de Patrón de Prevención de Emulación
Paso 3: El prefijo de código de inicio de 3 bytes (0x000001), y el sufijo de código de inicio apropiado que identifica el tipo de IDU están unidos al inicio del IDU. La carga resultante es un IDU encapsulado. El codificador también está permitido para insertar cualquier número de bytes de relleno con valor de cero después del término de un EIDU. Equivalentemente, cualquier número de bytes de relleno valuados en cero puede ser insertado antes de un prefijo de código de inicio. El código de inicio es estructurado para que pueda ser detectado por un descodificador incluso si está la presencia de estos bytes de relleno valorados en cero. En algunos ardientes de transmisión tal como H.320, el codificador puede utilizar esta característica para insertar bytes de relleno valorados en cero extras como se ha deseado, que pueden permitir al descodificador recuperar rápidamente la ubicación de estos códigos de inicio incluso si tiene rastro perdido de la alineación pretendida de la corriente de bit para los límites de byte. Además, estos bytes de relleno valorados en cero también pueden ser útiles al unir corrientes de bits, llenar un canal de velocidad de bit constante, etc. Los bytes de relleno valorados en cero antes de los códigos de inicio, o al final de un EIDU, no son procesados través de el mecanismos de encapsulación, solo los datos de RIDU requieren tal procesamiento.
B. Detección de Códigos de Inicio y EIDU La detección de un EIDU inicia con la búsqueda del prefijo de código de inicio. La detección de código de inicio que inicia desde las posiciones alineadas por bytes. En un descodificador que no puede perder la alineación por byte, una vez que la alineación por byte ha sido establecida, la detección de código de inicio es conducida como sigue. 1. En cualquier momento que una fila de dos o más bytes de valor 0x00 seguida por un byte de valor 0x01 se ha encontrada, una detección de prefijo de código de inicio es declarada. Cuando los 2 prefijos de códigos de inicio sucesivos son detectados, la corriente de bit de carga entre ellos es declarada como un nuevo EIDU. Detección de códigos de inicio después de la pérdida de alineación de byte en un descodificador. En un descodificador que tiene alineación de byte perdida (como puede suceder en algunos ambientes de transmisión), la detección de prefijo de código de inicio y detección de alineación de byte son conducidas como sigue. En cualquier momento que una fila de tres o más bytes de valor 0x00 es encontrada, seguido por el encuentro de cualquier byte de no cero, una detección de prefijo de código de inicio es declarada y la alineación de byte es entendida para ser recuperada para que el primer byte de no cero en el byte de no cero sea el último bit de un código de inicio alineado por byte.
C. Extracción de RIDU a partir de EIDU La extracción de un IDU incompleto de una IDU encapsulado es descrita como sigue. Paso 1: El sufijo de código de inicio es utilizado para identificar el tipo de IDU. Paso 2: El primer paso es para remover los bytes de relleno de valor de cero en el final de EIDU. Después de este paso, el último byte del IDU debe tener un valor de no cero. Paso 3: Los bytes utilizados para la- prevención de emulación son detectados y removidos. El procedimiento es como sigue: En cualquier momento que se siga una fila de dos bytes de valor 0x00 a través de 1 byte igual a 0x03, el byte igual a 0x03 es entendió para ser un byte de prevención de emulación y es descartado. Este procedimiento es ilustrado en el Cuadro 3.
CUADRO 3 Remoción Mediante Descodificador de Datos de Prevención de Emulación
Los siguientes patrones de byte, si se ven dentro de la corriente de bit, representan condiciones de error (se debe notar que la pérdida de alineación de byte apropiado por descodificador es considera una condición de error): a) Una fila de dos bytes de valor 0x00 seguida por un byte igual a 0x02 indica condición de error. b) Una fila de tres o más bytes de valor 0x00, si no es seguida por un byte de 0x01 es una condición de error (se debe notar que si dos o más bytes iguales a cero son seguidos por un byte de valor 0x01 y la alineación de byte no ha sido perdida, la detección de un código de inicio subsecuente es declarada). c) Una fila de dos bytes de valor 0x00, seguida por un byte de valor 0x03, seguida por un byte que no es uno de 0x00, 0x01, o 0x02, o 0x03. Paso 4: En el último byte del IDU, el último bit de no cero es identificado, y ese bit de no cero, y todos los bits "cero" que siguen son descartados. El resultado es un IDU en bruto.
D. Sufijos de Código de Inicio para Tipos de IDU Los sufijos de código de inicio para varios tipos de IDU son presentados en el Cuadro 4.
CUADRO 4 Sufijos de Código de Inicio para Varios Tipos de IDU
Sufijo de código de inicio Tipo de IDU 0x00 SMPTE Reservado 0x01-0x09 SMPTE Reservado OxOA Fin de Secuencia OxOB Porción OxOC Campo OxOD Cuadro OxOE Encabezado de Punto de Entrada OxOF Encabezado de Secuencia 0x10-0x1 A SMPTE Reservado 0x1B Datos de Usuario de Nivel de Porción
0x1C Datos de Usuario de Nivel de Campo
0x1D Datos de Usuario de Nivel Cuadro
0x1E Datos de Usuario de Punto de Entrada
0x1F Datos de Usuario de Nivel de Secuencia 0x20-0x7F SMPT Reservado 0x80-0xFF Prohibido El sufijo de Encabezado de Secuencia es enviado para identificar IDUs que llevan un encabezado de secuencia 410 (Figura 4). El sufijo de Encabezado de Punto de Entrada es enviado para identificar IDUs que transportan un encabezado de punto de entrada.
El sufijo de Imagen es enviado para identificar IDUs que contiene la imagen 320 (Figura 3) y el encabezado de imagen 510 (Figura 5). El sufijo Campo es enviado para identificar IDUs que contienen el segundo campo de imagen que está codificada como dos campos separados. El sufijo Porción es enviado para identificar IDUs que transportan porciones 320 (Figura 3), y ei encabezado de porción 610 (Figura 6). Los sufijos de datos de Secuencia, Punto de Entrada, Cuadro,
Campo, y Usuario de Nivel de Porción son utilizados para transmitir cualquiera de los datos definidos por usuario asociados con la Secuencia, Punto de Entrada, Cuadro, Campo, y Porción respectivamente. El "Fin de secuencia" es un sufijo final que indica que la secuencia actual ha terminado, y que ningún otro dato será transmitido para esta secuencia. Se debe notar que la transmisión de un "fin de secuencia, puede estar presente, pero el fin de una secuencia debe ser inferido desde el encabezado de la siguiente secuencia.
4. Independencia de Capa de porción La capa de porción ¡lustrada 320 (Figura 3) también logra capacidad de descodificación independiente, y reconstrucción independiente. Esto permite a la porción ser reconstruida libre de error en el descodificador sin importar los errores de transmisión o pérdida de paquete en otras regiones de la imagen 310 (Figura 3).
A. Capacidad de Descodificación Independiente Ei contenido de una capa de porción 320 es descodificado independientemente en el contenido de imagen en otras porciones o regiones de la imagen. Cuando comienza una nueva porción, el codificador 100 y descodificador 200 reestablecen los pedictores de vector de movimiento, predictores para coeficientes AC y DC, y los predictores para parámetros de cuantificación. En otras palabras, con respecto a la erección, la primera fila de macrobloques en la porción es tratada como si fuera la primera fila de macrobloques en la imagen. Esto ayuda a asegurar que no hay dependencia de porción intermedio en los predictores. Además, cuando se utilizan los porciones, la información de nivel de macrobloque que es codificada de otra forma (por ejemplo, utilizando codificación de plano de bit) en la capa de imagen (tal como modo de vector de movimiento, y banderas para predicción AC) son transportados localmente con otra información de nivel de macrobloque tal como coeficiente de transformación. Esto permite a cada porción ser descodificado independientemente (es decir, sin confianza en descodificado por datos de otros porciones de la imagen).
B. Reconstrucción Independiente Además, el procedimiento de reconstrucción de una porción es realizado independientemente de la reconstrucción de cualquier otro porción (por ejemplo, porciones adyacentes) en una imagen. Por consiguiente, cualquiera de los procedimiento (tal como desbloqueo en giro o filtrado de traspale, descritos más adelante) que de otra forma sería aplicados a través de límites entre porciones adyacentes en una imagen son deshabilitados. En otras palabras, las filas de macrobloque superiores e inferiores de cada porción son tratadas como si fueran filas de macrobloques superiores e inferiores de la imagen en tales de procedimiento de límite.
Refinación de Traslape Las transformaciones de traslape son transformaciones a base de bloque modificado que intercambian información a través del límite de bloque. Con una transformación traslapada bien diseñada, los artefactos de bloqueo pueden ser minimizados. Para bloques internos, el código de vídeo ilustrado simula una trasformación traslapada al acoplar una transformación de bloque 8x8 con una operación de filtrado (referido con una refinación de traslape). Los bordes de un bloque 8x8 que separan dos bloques internos son refinados, en efecto una transformación traslapada es implementada en esta interfase. Excepto, la refinación de traslape no es realizada a través de los límites de porción en cualquier caso. Si el TRASLAPE de elemento de sintaxis de capa de secuencia 420 (Figura 4) es establecido a 1, entonces una operación de filtrado puede ser condicionalmente realizada a través de bordes de 2 bloques interiores vecinos, tanto para los canales de luminiscencia y crominancla. Esta operación de centrado (denominada como una refinación de traslape) es realizada subsecuente a la descodificación del cuadro, y antes del desbloqueo de giro. Sin embargo, la refinación de traslape puede ser hecha después de que los porciones de macrobloque relevante son descodlficados mientras esto sea funclonalmente equivalente a la refinación después de la descodiflcación del. cuadro completo. La Figura 7 muestra un ejemplo de refinación de traslape realizado en una porción de un P-cuadro con l-bloques. Esto puede ser el canal de luminiscencia o crominancla. Los l-bloques son grises
(o sombreados) y P-bloques son blancos. En esta ilustración, la
¡nterfase de borde sobre la cual se aplica la refinación de traslape es marcado con un patrón sombreado. La refinación de traslape es aplicada a dos píxeles en cualquier lado de límite de separación. El « área inferior derecha del cuadro es mostrada aquí con un ejemplo. Los píxeles ocupan celdas individuales y bloques que están separados por líneas gruesas. Ei círculo oscuro marca el sub-bloque de la esquina de píxel de 2x2 que es filtrado en ambas direcciones. La inserción más abajo en la Figura 7 muestra cuatro píxeles etiquetados, aO y a1 están a la izquierda y b1, bO a la derecha del borde de bloque vertical. La inserción superior muestra píxeles marcados pO, p1, q1 y qO colocándose en un borde horizontal. La siguiente sección describe ei filtro aplicado a estas cuatro ubicaciones de píxel. La refinación de traslape es realizada en la reconstrucción de
16 bits no reclamada. Estos es necesario debido a que el procedimiento y esto asociado con la refinación de traslape puede resultar en expansión de rango más allá del rango de 8 bit permisibles para valores de píxel. El resultado de la refinación de traslape es reclamado bajo 8 bits, en línea con el resto de los píxeles no tocados por la refinación de traslape. Los bordes verticales (píxeles aO, a1, b1, bO en el ejemplo anterior) son filtrados primero, seguidos por los bordes horizontales (píxeles pO, p1, q1, qO). El resultado intermedio que sigue a la primera etapa de filtrado (refinación de borde vertical) es almacenado en 16 bits. Los filtros de núcleo aplicados a los 4 píxeles que se colocan en cualquier borde son proporcionados más adelante:
Los píxeles originales que son filtrados son xO, x1, x2, x3). rO y r1 son parámetros de redondeo, que toman valores alternantes de 3 y 4 para asegurar el redondeo estadísticamente neutral. Los valores originales son filtrados por la matriz con entradas que son claramente fáciles de implementar. Estos valores, después de agregarlos a los factores de redondeo, sin cambiados de 1 bit por 3 bits para dar la salida filtrada (yO, y1, y3). Tanto para los filtros de límite horizontal y vertical, los valores rodeantes son rO = 4, r1= 3 para columnas y filas indexadas de probabilidad respectivamente, asumiendo el número dentro de un bloque para iniciar en 1. Para las columnas/filas incluso indexadas, rO = 3 y r1 = 4. El filtrado es definido como una operación de 16 bit en lugar, de esa forma, los píxeles originales son sobrescritos después de la refinación. Para el filtrado de borde vertical, los píxeles (0, a1, b1, bO) corresponde (xO, x1, x2, x3), que a su vez obtiene el filtrado para (yO, y1, y2, y3). De forma similar, para el filtrado de borde horizontal, la correspondencia es con (pO, p1, q1, qO) respectivamente. Los píxeles. en la esquina de 2x2, mostrados en el círculo obscuro en la Figura 7, son filtrados en ambas direcciones. El orden del filtrado determina sus valores finales, y por lo tanto es importante mantener el orden, filtrado de borde vertical permitido por filtrado de borde horizontal, para exactitud de bit. Conceptualmente, la unió va a ser realizada subsecuente a las dos etapas de filtrado direccional, en todos lo píxeles que son filtrados. Sin embargo, puede haber alguna ventaja computacional para combinar la unión con el filtrado.
Filtrado de Desbloqueo en Giro El filtrado de giro es un procedimiento realizado por un codificador/descodificador de vídeo en los límites de bloque para refinar las discontinuidades. Si el elemento de sintaxis de capa de secuencia FILTRO DE GIRO 430 (Figura 4) es establecido a 1, entonces se realiza una operación de filtrado en cada cuadro reconstruido. Esta operación de filtrado es realizada antes de utilizar el cuadro de reconstruido como una referencia o codificación predictiva de movimiento. Ya que la intensión del filtrado de giro es para refinar las discontinuidades en los límites de bloque, el procedimiento de filtrado opera en los pixeles que limitan los bloques vecinos. Para P-imágenes, los límites de bloque pueden ocurrir en cada 4, 8, 12, etc., fila o columna de píxel dependiendo en si se utiliza una transformación inversa de 8x8, 8x4 o 4x8. Para l-imágenes el filtrado ocurre en cada 8, 16, 24, etc., fila y columna de píxel. Para l-imágenes, el filtrado de desbloqueo es realizado en todos los límites de bloque de 8x8, excepto en filtrado de desbloqueo que no es realizado en los límites de porción (que son tratados de forma similar a bordes de imagen). Las Figuras 8 y 9 muestran los pixeles que son filtrados junto con las regiones de bordes horizontales y verticales de un cuadro de l-imagen. Las figuras muestran la esquina izquierda superior de un plano de componente (iuma, Cr o Cb). Las cruces representan pixeles y las cruces circuladas representan los pixeles que son filtrados.
Como lo muestran las figuras, la línea horizontal superior y la primera línea vertical de una imagen o porción no son filtradas. Aunque no se ilustra, la línea horizontal inferior y la última línea vertical de una imagen o porción también no son filtradas. En términos más formales, las siguientes son filtradas: en donde N = el número de bloques de 8x8 horizontales en el plano (N*8 = tamaño cuadro horizontal) y M = el número de bloques de 8x8 verticales en el cuadro ( *8 = tamaño de cuadro vertical), Líneas horizontales (7,8), (15,16) ... ((N - 1)*8 - 1, (N - 1)*8) son filtradas, y Líneas verticales (7,8), (15,16) ... ((M - 1)*8 - 1, (M - 1)*8) son filtradas. El orden en el cual los píxeles son filtrados es importante. Todas las líneas de límite horizontales en el cuadro son filtradas primero permitidas por las líneas de límite vertical. , Para P-imágenes, los bloques pueden ser codificados interiores o intermedios. Los bloques codificados interiores siempre utilizan una transformación de 8x8 para transformar las muestras de los límites de bloque de 8x8 que son siempre filtrados. Los bloques codificados intermedios pueden utilizar una transformación inversa de 8x8, 8x4, 4x8 o 4x4 para construir las muestras que representan el error residual. Dependiendo en el estado de los bloques vecinos, el límite entre los bloques actuales y vecinos puede o no ser filtrado. En cualquier caso, los bordes de límite de una imagen o porción no. son filtrados.
Operación de Filtro Esta sección describe la operación de filtro que es realizada en los píxeles de límite de bloque el I y P cuadros, como se discutió anteriormente. Ya que el número mínimo de píxeles consecutivos que será filtrado en una fila o columna es cuatro y el número total de píxeles en una fila o columna siempre será un múltiplo de cuatro, la operación de filtro es realizada en segmentos de cuatro píxeles. Por ejemplo, si los ocho pares de píxeles que conforman el límite vertical entre dos bloques son filtrados, entonces los ocho píxeles son divididos en dos segmentos de 4 píxeles 110 como se muestra en la Figura 12. En cada segmento de 4 píxeles, el tercer par de píxeles filtrado primero como se indicó por la X. El resultado de esta operación de filtro determina si los otros tres píxeles en el segmento también son filtrados, como se describe más adelante. La Figura 10 muestra los píxeles 1200 que son utilizados en la operación de filtrado realizada en el tercer par de píxel. Los píxeles P4 y P5 son los pares de píxel que pueden ser cambiados en la operación de filtro. El pseudo-código 1300 de la Figura 13 muestra la operación de filtrado realzada en el tercer par de píxel en cada segmento. El valor filtro_otro_3_píxeles indica si los 3 pares de píxel restantes en el segmento también son filtrados. Si filtro_otro_3_píxeles = verdadero, entonces los otros 3 pares de píxeles son filtrados. Si filtro_otro_3_píxe!es = falso, entonces no son filtrados, y la operación de filtrado procede al siguiente segmento de 4 píxeles. El pseudo-código 1400 de la Figura 14 muestra la operación de filtrado que es realizada en el primer, segundo y cuarto par de píxel si el filtro_otro_3_píxeIes = verdadero. Esta sección utilizó el límite vertical para propósitos ilustrativos. La misma operación es utilizada para filtrar los píxeles de límite horizontales.
5. Ambiente de Cómputo Las implementaciones antes descritas de la codificación de capa de porción pueden ser realizadas en cualquier de una variedad de dispositivos en los cuales se realiza el procedimiento de señal de imagen y vídeo, incluyendo entre otros ejemplos, computadoras; grabación de imagen y vídeo, transmisión y equipo de recepción; reproductores de vídeo portátiles; conferencia por vídeo; aplicaciones de flujo de vídeo web; y etc. Las técnicas de codificación de imagen de vídeo pueden ser implementadas en circuito de hardware (por ejemplo, un circuito de un ASIC, FPGA, etc.), así como el software de procesamiento de imagen y vídeo que se ejecuta dentro de una computadora u otro ambiente de cómputo (si se ejecuta en la unidad de procesamiento central (CPU), o procesador de gráfico dedicado, tarjeta de vídeo o similares), tal como se muestra en la Figura 10. La Figura 10 ilustra un ejemplo generalizado de un ambiente de cómputo adecuado (1000) en el cual se puede implementar la codificación de capa de porción descrita. El ambiente de cómputo (1000) no pretende sugerir ninguna limitación al alcance de uso o funcionalidad de la invención, mientras la presente invención puede ser implementada en diversos ambientes de cómputo de propósito general o propósito especial. Con referencia a la Figura 10, el ambiente de cómputo (1000) incluye al menos una unidad de procesamiento (1010) y memoria (1020). En la Figura 10, esta configuración más básica (1030) está incluida dentro de una línea punteada. La unidad de procesamiento (1010) ejecuta instrucciones ejecutables por computadora y puede ser un procesador real o uno virtual. En un sistema de multiprocesamiento, múltiples unidades de procesamiento ejecutan instrucciones ejecutables por computadora para aumentar la energía de procesamiento. La memoria (1020) puede ser memoria volátil (por ejemplo, registradoras, memoria caché, (RAM), memoria no volátil (por ejemplo, ROM, EEPROM, memoria instantánea, etc.), o alguna combinación de los dos. La memoria (1020) almacena software (1080) que implementa la codificación de capa de porción descrita. Un ambiente de cómputo puede tener características adicionales. Por ejemplo, el ambiente de cómputo (1000) incluye almacenamiento (1040), uno o más dispositivos de entrada (1050), uno o más dispositivos de salida (1060), y una o más conexiones de comunicación (1070). Un mecanismo de interconexión (no mostrado) tal como un conductor común, controlador, o red, interconecta los componentes del ambiente de cómputo (1000). Típicamente, el software de sistema operativo (no mostrado) proporciona un ambiente operativo para otro software que se ejecuta en el ambiente de cómputo (1000) y coordina actividades de los componentes del ambiente de cómputo (1000). El almacenamiento (1040) puede ser removible o no removible, e incluye discos magnéticos, cintas magnéticas o casetes, CD-ROMs, CD-RWs, DVDs, o cualquier otro medio que puede ser utilizado para almacenar información y que puede ser accedido dentro del ambiente de cómputo (1000). El almacenamiento (1040) almacena instrucciones para el software (1080) que implementa el codificador de audio que realiza la codificación de capa de porción. El dispositivo(s) de entrada (1050) puede ser un dispositivo de entrada sensible al tacto tal como un teclado, ratón, pluma, o seguibola, un dispositivo de entrada por voz, un dispositivo de revisión u otro dispositivo que proporcione entrada al ambiente de cómputo (1000). Para el audio, e! dispositivo(s) de entrada (1050) puede ser una tarjeta de sonido o dispositivo similar que acepta entrada de audio en forma análoga o digital, o un lector de CD-ROM que proporciona muestras de audio al ambiente de cómputo. El dispositivo(s) de salida (1060) puede ser una presentación, impresora, bocina, escritor de CD, u otro dispositivo que proporciona salida del ambiente de cómputo (1000). La conexión(es) de comunicación (1070) permite la comunicación en medio de comunicación a otra entidad de cómputo. El medio de comunicación transporta información tal como instrucciones ejecutables por computadora, información de audio o vídeo comprimida, u otros datos en una señal de datos modulada. Una señal de datos modulada es una señal que tiene una o más de sus características establecidas o cambiadas de tal forma, para codificar información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen técnicas mediante cables o inalámbricas implementadas con un transportador eléctrico, óptico, de RF, infrarrojo, acústico, y otro transporte. Las técnicas de codificación/descodificación de capa de porción aquí pueden ser descritas en el contexto general de medios legibles por computadora. Los medios legibles por computadora son cualquier medio disponible que puede ser accedido dentro de un ambiente de cómputo. A manera de ejemplo, y no de limitación, con el ambiente de cómputo (1000), los medios legibles por computadora incluyen memoria (1020), almacenamiento (1040), medios de comunicación, y combinaciones de cualquiera de los anteriores. Una codificación de capa de porción aquí puede ser descrita en el contexto general de instrucciones ejecutables por computadora, tal como aquellas incluidas en los módulos de programa, siendo ejecutados en un ambiente de cómputo en un procesador real objetivo o virtual. Generalmente, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. La funcionalidad de los módulos de programa puede ser combinada o dividida entre módulos de programas como se ha deseado en varias modalidades. Las instrucciones ejecutables por computadora para módulos de programa pueden ser ejecutadas dentro de un ambiente de cómputo local o distribuido. Para búsqueda de presentación, la descripción detalla utiliza términos como "determinar", "generar", "ajustar", y "aplicar" para describir operaciones de computadora en un ambiente de cómputo. Estos términos son abstracciones de nivel alto para operaciones realizadas por una computadora, y no deben ser confundidos con actos realizados por un ser humano. Las operaciones de computadora reales que corresponden a estos términos varían dependiendo de la implementación. En vista de las muchas modalidades posibles para los cuales los principios de nuestra invención pueden ser aplicados, se reclama como invención todas tales modalidades mientras estén dentro del alcance y espíritu de las reivindicaciones siguientes y equivalentes de las mismas.
Claims (17)
1. - Un método de descodificar vídeo e imágenes, que comprende: descodificar una imagen de una corriente de bit codificada que tiene una jerarquía de sintaxis que comprende al menos una capa de imagen, una unidad de imagen parcial independientemente descodificable opcional, y una capa de macrobloque, en donde una sintaxis de codificación de la unidad de imagen parcial independientemente descodificable opcional señala una dirección de dicha unidad y una indicación si la información de encabezado de imagen es repetida en dicha unidad; en el caso que la unidad de imagen parcial independientemente descodificable esté incluida, descodificar dicha indicación señalada si la información de encabezado de imagen es repetida en dicha unidad; si la información de encabezado de imagen es indicada para ser repetida, descodificar la información de encabezado de imagen; descodificar la dirección señalada; y reconstruir la unidad de imagen parcial en una ubicación en la imagen indicada por la dirección señalada.
2. - El método de acuerdo con la reivindicación 1, en donde dicha unidad de imagen parcial es una porción que contiene al menos una de las filas contiguas de macrobloques de la imagen. 3.- El método de acuerdo con la reivindicación 2, en donde la sintaxis de codificación señala dicha dirección como un índice de fila de macrobloque de la porción. 4. - El método de acuerdo con la reivindicación 1, en donde la sintaxis de codificación señala dicha indicación si la información de encabezado de imagen es repetida en dicha unidad como una bandera de bit individual. 5. - El método de acuerdo con la reivindicación 1, que además comprende: realizar un ligero traslape en al menos algunos bordes de bloque dentro de dicha unidad de imagen parcial, exceptuando los bordes de límite de dicha unidad de imagen parcial. 6. - El método de acuerdo con la reivindicación 1, que además comprende: realizar filtrado de desbloqueo de al menos algunos bordes de bloque dentro de dicha unidad de imagen parcial, excepto en los bordes de límite de dicha unidad de imagen parcial. 7. - El método de acuerdo con la reivindicación 1, que además comprende: restablecer los parámetros de codificación de predicción al comenzar la descodificación de dicha unidad de imagen parcial. 8. - Un método para la codificación/descodificación de una imagen o vídeo, que comprende: codificar/descodificar una imagen en al menos una unidad de imagen parcial independientemente descodificable; al inicio de la codificación/descodificación de información de contenido de imagen de uno respectivo de dicho al menos una unidad de imagen parcial independientemente descodificabíe, restablecer los parámetros de codificación de predicción. 9.- El método de acuerdo con la reivindicación 8, que además comprende: señalar un inicio de un respectivo de dicha al menos una unidad de imagen parcial independientemente descodificabíe del codificador al descodificador utilizando un patrón de código de inicio único. 10.- El método de acuerdo con la reivindicación 8, que además comprende: señalar una ubicación de uno de respectivo de dicho al menos una unidad de imagen parcial independientemente descodificabíe del codificador al descodificador utilizando un parámetro de dirección que se refiere a una posición de macrobloque de inicio de dicha unidad de imagen parcial respectiva dentro de la imagen. 11. - El método de acuerdo con la reivindicación 10, en donde dicha unidad de imagen parcial respectiva es una porción que contiene al menos una fila contigua completa de macrobloques en la imagen, y en donde el parámetro de dirección es un índice de fila de macrobloque de inicio de la porción. 12. - El método de acuerdo con la reivindicación 8, que además comprende: señalar una indicación de si la información de encabezado de imagen es repetida en un respectivo de dicho al menos una unidad de imagen parcial independientemente descodificable del codificador al descod ificador. 13.- El método de acuerdo con la reivindicación 12, en donde la indicación es un valor de bandera. 14.- El método de acuerdo con la reivindicación 8, que además comprende: reconstruir el contenido de imagen de dicha unidad de imagen parcial respectiva independiente de contenido de imagen fuera de dicha imagen parcial respectiva. 15.- El método de acuerdo con la reivindicación 14, en donde dicha reconstrucción independiente comprende: realizar desbloqueo de bordes de bloque dentro de dicho contenido de imagen de dicha unidad de imagen parcial respectiva, excepto en bordes de límite de dicha unidad de imagen parcial respectiva. 16. - El método de acuerdo con la reivindicación 14, en donde dicha reconstrucción independiente comprende: realizar filtrado de traslape de bordes de bloque dentro de dicho contenido de imagen de dicha unidad de imagen parcial respectiva, exceptuando en los bordes de límite de dicha unidad de imagen parcial respectiva. 17. - Al menos un programa legible por computadora que lleva un medio que tiene un módulo de software almacenado que es ejecutable por una unidad de procesamiento para realizar un método de codificación/descodificación de una imagen o corriente de bit de vídeo codificada utilizando unidades de imagen parciales independientemente descodificables, el método comprende: determinar si la codificación de unidad de imagen parcial va a ser realizada para una imagen codificada dentro de la corriente de bit; y si es así, realizar la codificación/descodificación y reconstrucción de contenido de imagen dentro de cada unidad de imagen parcial independiente de contenido de imagen fuera de dicha unidad de imagen parcial. 18.- Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 17, en donde el método además comprende: interpretar un elemento de sintaxis en la corriente de bit que señala una ubicación de una unidad de imagen parcial respectiva dentro de la imagen; y reconstruir el contenido de imagen del contenido de imagen parcial respectivo en la ubicación. 19. - Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 18, en donde el elemento de sintaxis comprende un parámetro de dirección que se relaciona con una posición de macrobloque de inicio de dicha unidad de imagen parcial respectiva dentro de la imagen. 20. - Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 19, en donde dicha unidad de imagen parcial respectiva es una porción que contiene al menos una fila contigua completa de macrobloques en la imagen, y en donde el parámetro de dirección es un índice de fila de macrobloque de inicio de la porción. 21.- Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 17, en donde el método además comprende: interpretar un elemento de sintaxis en la corriente de bit que señala una indicación de si la información de encabezado de imagen es repetida en una unidad de imagen parcial respectiva. 22.- Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 21, en donde la indicación es un valor de bandera. 23.- Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 17, en donde el método además comprende: realizar el desbloqueo de bordes de bloque dentro del contenido de imagen de la unidad de imagen parcial respectiva, exceptuando en los bordes de límite de la unidad de imagen parcial respectiva. 24.- Al menos un programa legible por computadora que lleva un medio de acuerdo con la reivindicación 17, en donde el método además comprende: realizar el filtrado de traslape de bordes de bloque dentro del contenido de imagen de la unidad de imagen parcial respectiva, excepto en los bordes de límite de la unidad de imagen parcial respectiva.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US50108103P | 2003-09-07 | 2003-09-07 | |
PCT/US2004/029033 WO2005027495A2 (en) | 2003-09-07 | 2004-09-03 | Slice layer in video codec |
US10/933,960 US7162093B2 (en) | 2003-09-07 | 2004-09-03 | Slice-layer in video codec |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA06002495A true MXPA06002495A (es) | 2006-06-20 |
Family
ID=34228806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA06002495A MXPA06002495A (es) | 2003-09-07 | 2004-09-03 | Capa de porcion en codificador/descodificador (codec) de video. |
Country Status (7)
Country | Link |
---|---|
US (1) | US7162093B2 (es) |
EP (1) | EP1656793B1 (es) |
JP (2) | JP5280003B2 (es) |
KR (1) | KR101103867B1 (es) |
ES (1) | ES2767933T3 (es) |
MX (1) | MXPA06002495A (es) |
WO (1) | WO2005027495A2 (es) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448162B (zh) * | 2001-12-17 | 2013-01-02 | 微软公司 | 处理视频图像的方法 |
JP2005033336A (ja) * | 2003-07-08 | 2005-02-03 | Ntt Docomo Inc | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム |
US10554985B2 (en) | 2003-07-18 | 2020-02-04 | Microsoft Technology Licensing, Llc | DC coefficient signaling at small quantization step sizes |
US7801383B2 (en) * | 2004-05-15 | 2010-09-21 | Microsoft Corporation | Embedded scalar quantizers with arbitrary dead-zone ratios |
US9208824B2 (en) * | 2004-05-18 | 2015-12-08 | Broadcom Corporation | Index table generation in PVR applications for AVC video streams |
US7590059B2 (en) * | 2004-05-21 | 2009-09-15 | Broadcom Corp. | Multistandard video decoder |
US20060013315A1 (en) * | 2004-07-19 | 2006-01-19 | Samsung Electronics Co., Ltd. | Filtering method, apparatus, and medium used in audio-video codec |
KR100587698B1 (ko) * | 2004-10-22 | 2006-06-08 | 주식회사 휴맥스 | 선택적 예측 부호화/복호화 방법 및 장치 |
KR100652689B1 (ko) * | 2004-10-26 | 2006-12-07 | 엘지전자 주식회사 | 휴대단말기에서의 컨텐츠의 사이즈 분석 방법 |
US7792385B2 (en) * | 2005-01-25 | 2010-09-07 | Globalfoundries Inc. | Scratch pad for storing intermediate loop filter data |
US8576924B2 (en) * | 2005-01-25 | 2013-11-05 | Advanced Micro Devices, Inc. | Piecewise processing of overlap smoothing and in-loop deblocking |
US7953161B2 (en) * | 2005-04-27 | 2011-05-31 | Broadcom Corporation | System and method for overlap transforming and deblocking |
KR101170799B1 (ko) | 2005-05-21 | 2012-08-02 | 삼성전자주식회사 | 영상 압축 방법 및 그 장치와 영상 복원 방법 및 그 장치 |
US8422546B2 (en) | 2005-05-25 | 2013-04-16 | Microsoft Corporation | Adaptive video encoding using a perceptual model |
US7965773B1 (en) | 2005-06-30 | 2011-06-21 | Advanced Micro Devices, Inc. | Macroblock cache |
FR2894740A1 (fr) * | 2005-12-12 | 2007-06-15 | Thomson Licensing Sa | Dispositif de codage, procede de codage, systeme de decodage procede de decodage de donnees video |
US20070147496A1 (en) * | 2005-12-23 | 2007-06-28 | Bhaskar Sherigar | Hardware implementation of programmable controls for inverse quantizing with a plurality of standards |
US7636497B1 (en) | 2005-12-27 | 2009-12-22 | Advanced Micro Devices, Inc. | Video rotation in a media acceleration engine |
JP5266202B2 (ja) * | 2006-03-28 | 2013-08-21 | サムスン エレクトロニクス カンパニー リミテッド | 画像符号化/復号化方法及び装置 |
US7995649B2 (en) * | 2006-04-07 | 2011-08-09 | Microsoft Corporation | Quantization adjustment based on texture level |
US8059721B2 (en) * | 2006-04-07 | 2011-11-15 | Microsoft Corporation | Estimating sample-domain distortion in the transform domain with rounding compensation |
US8130828B2 (en) * | 2006-04-07 | 2012-03-06 | Microsoft Corporation | Adjusting quantization to preserve non-zero AC coefficients |
US8503536B2 (en) * | 2006-04-07 | 2013-08-06 | Microsoft Corporation | Quantization adjustments for DC shift artifacts |
US7974340B2 (en) * | 2006-04-07 | 2011-07-05 | Microsoft Corporation | Adaptive B-picture quantization control |
JP5389205B2 (ja) * | 2006-04-27 | 2014-01-15 | キヤノン株式会社 | 画像符号化装置、画像符号化方法、プログラム及び記憶媒体 |
US8711925B2 (en) | 2006-05-05 | 2014-04-29 | Microsoft Corporation | Flexible quantization |
JP4229149B2 (ja) * | 2006-07-13 | 2009-02-25 | ソニー株式会社 | ビデオ信号処理装置およびビデオ信号処理方法、ビデオ信号符号化装置およびビデオ信号符号化方法、並びにプログラム |
TWI376958B (en) | 2006-09-07 | 2012-11-11 | Lg Electronics Inc | Method and apparatus for decoding a scalable video coded bitstream |
CA2661981C (en) | 2006-11-09 | 2013-01-15 | Lg Electronics Inc. | Method and apparatus for decoding/encoding a video signal |
EP1985121A4 (en) | 2006-11-17 | 2010-01-13 | Lg Electronics Inc | METHOD AND DEVICE FOR DECODING / CODING A VIDEO SIGNAL |
US8238424B2 (en) * | 2007-02-09 | 2012-08-07 | Microsoft Corporation | Complexity-based adaptive preprocessing for multiple-pass video compression |
JP4847890B2 (ja) * | 2007-02-16 | 2011-12-28 | パナソニック株式会社 | 符号化方式変換装置 |
US8498335B2 (en) * | 2007-03-26 | 2013-07-30 | Microsoft Corporation | Adaptive deadzone size adjustment in quantization |
KR101086434B1 (ko) * | 2007-03-28 | 2011-11-25 | 삼성전자주식회사 | 비디오 데이터 디스플레이 방법 및 장치 |
US8243797B2 (en) | 2007-03-30 | 2012-08-14 | Microsoft Corporation | Regions of interest for quality adjustments |
US8442337B2 (en) * | 2007-04-18 | 2013-05-14 | Microsoft Corporation | Encoding adjustments for animation content |
US8331438B2 (en) * | 2007-06-05 | 2012-12-11 | Microsoft Corporation | Adaptive selection of picture-level quantization parameters for predicted video pictures |
CN101389021B (zh) * | 2007-09-14 | 2010-12-22 | 华为技术有限公司 | 视频编解码方法及装置 |
US8938009B2 (en) * | 2007-10-12 | 2015-01-20 | Qualcomm Incorporated | Layered encoded bitstream structure |
BRPI0818444A2 (pt) * | 2007-10-12 | 2016-10-11 | Qualcomm Inc | codificação adaptativa de informação de cabeçalho de bloco de vídeo |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
US8189933B2 (en) * | 2008-03-31 | 2012-05-29 | Microsoft Corporation | Classifying and controlling encoding quality for textured, dark smooth and smooth video content |
US8897359B2 (en) * | 2008-06-03 | 2014-11-25 | Microsoft Corporation | Adaptive quantization for enhancement layer video coding |
US8718135B2 (en) * | 2008-09-19 | 2014-05-06 | The Hong Kong University Of Science And Technology | Method and system for transcoding based robust streaming of compressed video |
CN102474606B (zh) * | 2009-07-20 | 2014-09-24 | 三星电子株式会社 | 分层视频编码和解码中对颜色通道进行编码和解码的方法和设备 |
KR101474756B1 (ko) | 2009-08-13 | 2014-12-19 | 삼성전자주식회사 | 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치 |
US8291277B2 (en) * | 2009-10-29 | 2012-10-16 | Cleversafe, Inc. | Data distribution utilizing unique write parameters in a dispersed storage system |
US9462316B2 (en) * | 2009-12-29 | 2016-10-04 | International Business Machines Corporation | Digital content retrieval utilizing dispersed storage |
TWI442778B (zh) | 2010-02-05 | 2014-06-21 | Acer Inc | 視訊解碼裝置 |
US20110213932A1 (en) * | 2010-02-22 | 2011-09-01 | Takuma Chiba | Decoding apparatus and decoding method |
JP5656879B2 (ja) * | 2010-07-30 | 2015-01-21 | パナソニックIpマネジメント株式会社 | 画像復号化装置、画像復号化方法、画像符号化装置および画像符号化方法 |
US9525884B2 (en) | 2010-11-02 | 2016-12-20 | Hfi Innovation Inc. | Method and apparatus of slice boundary filtering for high efficiency video coding |
US10244239B2 (en) | 2010-12-28 | 2019-03-26 | Dolby Laboratories Licensing Corporation | Parameter set for picture segmentation |
US9866861B2 (en) | 2011-02-09 | 2018-01-09 | Lg Electronics Inc. | Method for encoding and decoding image and device using same |
US8848804B2 (en) * | 2011-03-04 | 2014-09-30 | Vixs Systems, Inc | Video decoder with slice dependency decoding and methods for use therewith |
GB2488830B (en) * | 2011-03-10 | 2015-07-29 | Canon Kk | Method and device for encoding image data and method and device for decoding image data |
GB2488829A (en) * | 2011-03-10 | 2012-09-12 | Canon Kk | Encoding and decoding image data |
US9008180B2 (en) | 2011-04-21 | 2015-04-14 | Intellectual Discovery Co., Ltd. | Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering |
GB2493209B (en) * | 2011-07-29 | 2016-02-17 | Canon Kk | Method and device for parallel decoding of scalable bitstream elements |
EP2754295B1 (en) * | 2011-09-09 | 2018-01-24 | Sun Patent Trust | Low complex deblocking filter decisions |
US9237352B2 (en) * | 2011-10-05 | 2016-01-12 | Texas Instruments Incorporated | Methods and systems for encoding pictures associated with video data |
IN2014DN03098A (es) | 2011-10-17 | 2015-05-15 | Kt Corp | |
AU2012327672B2 (en) * | 2011-10-24 | 2015-09-03 | Hfi Innovation Inc. | Method and apparatus for non-cross-tile loop filtering |
WO2013088687A1 (ja) * | 2011-12-15 | 2013-06-20 | パナソニック株式会社 | 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化復号装置 |
US9538200B2 (en) | 2012-01-19 | 2017-01-03 | Qualcomm Incorporated | Signaling of deblocking filter parameters in video coding |
CN102752058B (zh) * | 2012-06-16 | 2013-10-16 | 天地融科技股份有限公司 | 音频数据传输***、音频数据传输装置及电子签名工具 |
US9621909B2 (en) | 2012-07-02 | 2017-04-11 | Lg Electronics Inc. | Method for decoding image and apparatus using same |
US20140153635A1 (en) * | 2012-12-05 | 2014-06-05 | Nvidia Corporation | Method, computer program product, and system for multi-threaded video encoding |
US9076206B2 (en) * | 2013-03-12 | 2015-07-07 | Uurmi Systems Private Limited | Methods and systems for correcting distortions in multimedia content |
US9813730B2 (en) * | 2013-12-06 | 2017-11-07 | Mediatek Inc. | Method and apparatus for fine-grained motion boundary processing |
CN111416976B (zh) * | 2019-01-08 | 2023-12-08 | 浙江大学 | 视频解码方法、视频编码方法、装置、设备及存储介质 |
CN115174921B (zh) | 2019-05-03 | 2023-04-04 | 华为技术有限公司 | 由视频解码器实现的解码方法及其相关装置和存储介质 |
WO2020263158A1 (en) | 2019-06-24 | 2020-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Signaling parameter value information in a parameter set to reduce the amount of data contained in an encoded video bitstream |
US20220353536A1 (en) * | 2019-08-22 | 2022-11-03 | Sharp Kabushiki Kaisha | Systems and methods for signaling picture information in video coding |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2674059B2 (ja) | 1988-02-09 | 1997-11-05 | キヤノン株式会社 | カラー画像データ伝送方法 |
JP2794899B2 (ja) | 1990-05-08 | 1998-09-10 | 松下電器産業株式会社 | 符号化装置 |
US5168356A (en) | 1991-02-27 | 1992-12-01 | General Electric Company | Apparatus for segmenting encoded video signal for transmission |
US6226327B1 (en) * | 1992-06-29 | 2001-05-01 | Sony Corporation | Video coding method and apparatus which select between frame-based and field-based predictive modes |
JP2856300B2 (ja) * | 1993-02-19 | 1999-02-10 | 富士ゼロックス株式会社 | 画像符号化装置および復号装置 |
KR0170937B1 (ko) * | 1994-12-14 | 1999-03-20 | 배순훈 | 영상 데이타 부호화 장치 |
US5825929A (en) | 1995-10-05 | 1998-10-20 | Microsoft Corporation | Transformation block optimization method |
JPH1174868A (ja) * | 1996-09-02 | 1999-03-16 | Toshiba Corp | 情報伝送方法およびその方法が適用される情報伝送システムにおける符号化装置/復号化装置、並びに符号化・多重化装置/復号化・逆多重化装置 |
US5974184A (en) * | 1997-03-07 | 1999-10-26 | General Instrument Corporation | Intra-macroblock DC and AC coefficient prediction for interlaced digital video |
JP2000209580A (ja) * | 1999-01-13 | 2000-07-28 | Canon Inc | 画像処理装置およびその方法 |
JP2001016594A (ja) * | 1999-06-29 | 2001-01-19 | Hitachi Ltd | 動画像の動き補償方法 |
GB2352350B (en) * | 1999-07-19 | 2003-11-05 | Nokia Mobile Phones Ltd | Video coding |
JP2003209387A (ja) * | 2001-11-06 | 2003-07-25 | Hitachi Metals Ltd | 電磁波吸収体 |
CN100380980C (zh) * | 2002-04-23 | 2008-04-09 | 诺基亚有限公司 | 用于在视频编码***中指示量化器参数的方法与设备 |
JP3807342B2 (ja) * | 2002-04-25 | 2006-08-09 | 三菱電機株式会社 | デジタル信号符号化装置、デジタル信号復号装置、デジタル信号算術符号化方法、およびデジタル信号算術復号方法 |
US7724818B2 (en) * | 2003-04-30 | 2010-05-25 | Nokia Corporation | Method for coding sequences of pictures |
JP2005033336A (ja) * | 2003-07-08 | 2005-02-03 | Ntt Docomo Inc | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム |
-
2004
- 2004-09-03 EP EP04783323.1A patent/EP1656793B1/en active Active
- 2004-09-03 MX MXPA06002495A patent/MXPA06002495A/es active IP Right Grant
- 2004-09-03 KR KR1020067001543A patent/KR101103867B1/ko active IP Right Grant
- 2004-09-03 ES ES04783323T patent/ES2767933T3/es active Active
- 2004-09-03 WO PCT/US2004/029033 patent/WO2005027495A2/en active Application Filing
- 2004-09-03 JP JP2006526223A patent/JP5280003B2/ja active Active
- 2004-09-03 US US10/933,960 patent/US7162093B2/en active Active
-
2012
- 2012-02-07 JP JP2012024357A patent/JP2012135007A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1656793A2 (en) | 2006-05-17 |
EP1656793A4 (en) | 2011-09-28 |
KR20060131718A (ko) | 2006-12-20 |
EP1656793B1 (en) | 2019-11-27 |
WO2005027495A2 (en) | 2005-03-24 |
JP2007504773A (ja) | 2007-03-01 |
US7162093B2 (en) | 2007-01-09 |
WO2005027495A3 (en) | 2006-08-17 |
JP2012135007A (ja) | 2012-07-12 |
KR101103867B1 (ko) | 2012-01-12 |
JP5280003B2 (ja) | 2013-09-04 |
ES2767933T3 (es) | 2020-06-19 |
US20050053158A1 (en) | 2005-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA06002495A (es) | Capa de porcion en codificador/descodificador (codec) de video. | |
TWI569633B (zh) | 補充增強資訊訊息寫碼 | |
CN100456833C (zh) | 视频编解码器中的片层 | |
KR100991409B1 (ko) | 스케일가능성을 갖는 비디오 처리 | |
AU2013403225B2 (en) | Features of base color index map mode for video and image coding and decoding | |
KR102127370B1 (ko) | 영상 디코딩 방법 및 이를 이용하는 장치 | |
KR101365441B1 (ko) | 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법 | |
JP5890031B2 (ja) | ビデオコーディング用の断片化されたパラメータセット | |
US10397606B2 (en) | System for signaling IFR and BLA pictures | |
US11388425B2 (en) | Implicit signaling of scalability dimension identifier information in a parameter set | |
EP2901702B1 (en) | Signaling scalability information in a parameter set | |
KR102515017B1 (ko) | 영상 부호화/복호화 방법 및 장치 | |
JP2005510983A (ja) | ビデオ画像のグローバル動き補償 | |
EP1601205A1 (en) | Moving image encoding/decoding apparatus and method | |
KR20220035252A (ko) | 비디오 코딩 방법 및 장치 | |
CN113228649A (zh) | 用于改进的子块分区内部子分区编码模式的方法和装置 | |
CN116325723B (zh) | 用于视频解码的方法、计算机设备及介质 | |
GB2488829A (en) | Encoding and decoding image data | |
EP2923488B1 (en) | Signaling scalability information in a parameter set | |
CN113286152A (zh) | 视频解码方法、装置、计算机设备及存储介质 | |
JP2002027456A (ja) | 画像符号化・復号化データ構成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |