MXPA06002525A - Codificacion y descodificacion para video entrelazado. - Google Patents
Codificacion y descodificacion para video entrelazado.Info
- Publication number
- MXPA06002525A MXPA06002525A MXPA06002525A MXPA06002525A MXPA06002525A MX PA06002525 A MXPA06002525 A MX PA06002525A MX PA06002525 A MXPA06002525 A MX PA06002525A MX PA06002525 A MXPA06002525 A MX PA06002525A MX PA06002525 A MXPA06002525 A MX PA06002525A
- Authority
- MX
- Mexico
- Prior art keywords
- motion vector
- field
- macroblock
- predictor
- movement
- 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/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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/16—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
-
- 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
-
- 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/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- 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/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- 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/112—Selection of coding mode or of prediction mode according to a given display mode, e.g. for interlaced or progressive display mode
-
- 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/117—Filters, e.g. for pre-processing or post-processing
-
- 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- 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/146—Data rate or code amount at the encoder output
-
- 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/172—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 picture, frame or field
-
- 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/176—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 block, e.g. a macroblock
-
- 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/18—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 a set of transform coefficients
-
- 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/184—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 bits, e.g. of the compressed video stream
-
- 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/186—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 a colour or a chrominance component
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- 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/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Se describen varias tecnicas y herramientas para la codificacion y descodificacion de video entrelazado, incluyendo (1) la prediccion del vector de movimiento hibrido para los campos pronosticados delanteros entrelazados, (2) el uso de patrones del bloque de vector de movimiento, (3) la seleccion entre polaridades dominante y no dominante para los predictores de movimiento, (4) la codificacion y descodificacion conjunta de la informacion de la seleccion del campo de referencia y la informacion del diferencial del vector de movimiento, (5) la codificacion/descodificacion conjunta de la informacion de modalidad de macrobloque para macrobloques de campos pronosticados delanteros entrelazados, (6) el uso de una senal del numero de campos de referencia disponibles para un campo pronosticado delantero entrelazado, y (7) el calculo de vectores de movimiento de crominancia para macrobloques de campo pronosticado delantero entrelazado. Las diferentes tecnicas y herramientas pueden se utilizadas en combinacion o independientemente.
Description
CODIFICACIÓN Y DESCODIFICACIÓN PARA VIDEO ENTRELAZADO
AUTORIZACIÓN DE DERECHOS DE AUTOR Una parte de la descripción de esta patente contiene material sujeto a protección de derechos de autor. El propietario de los derechos de autor no tiene objeción en que cualquier persona reproduzca por fax la descripción de la patente, como aparece en los registros o archivo de patente de la Oficina de Patentes y Marcas Registradas, pero de otra manera se reserva todos los derechos de autor pertinentes. Campo de la Invención Se describen las técnicas y herramientas para la1 codificación y descodificación para video entrelazado. Antecedentes de la Invención El video digital consume grandes cantidades de almacenamiento y capacidad de transmisión. Una secuencia de video digital no procesada típica incluye 15 ó 30 cuadros por segundo. Cada cuadro puede incluir decenas o cientos de miles de pixeies (también denominados pels), en donde cada pixel representa un diminuto elemento de la imagen. En palabras sencillas, una computadora representa comúnmente un pixel como un conjunto de tres muestras que suman 24 bits. Por ejemplo, un pixel puede incluir una muestra de luminancia de ocho bits (también denominada muestra luma, ya que los términos "luminancia" y "luma" se utilizan indistintamente aquí) que defina el componente de escala gris del pixel y dos muestras de crominancia de ocho bits (también denominadas muestras croma ya que los términos "crominancia" y "croma" se utilizan indistintamente aquí) que definan el componente de color del pixel. Así, el número de bits por segundo, o clasificación de bits de una secuencia de video digital no procesada típica puede ser de 5 millones de bits o más por segundo. Diversas computadoras y redes de computadoras carecen de recursos para procesar el video digital no procesado. Por esta razón, los ingenieros utilizan la compresión (también denominada codificación) para reducir la clasificación de bits del video digital. La compresión disminuye el costo de almacenaje y transmisión de video al convertir el video en una forma de clasificación de bits más baja. La descompresión (también denominada descodificación) reconstruye una versión del video original a partir de la forma comprimida. Un "codee" es un sistema codificador/descodificador. La compresión puede ser sin pérdidas, en la que la calidad del video no se vea afectada, sino que las disminuciones en la clasificación de bits están limitadas por la cantidad inherente de variabilidad (algunas veces denominada entropía) de datos del video. O, la compresión puede ser con pérdidas, en la que la calidad del video se ve afectada, pero las disminuciones alcanzables en la clasificación de bits son más dramáticas. La compresión con pérdidas se utiliza por lo general junto con la compresión sin pérdidas -la compresión con pérdidas establece una aproximación de información y la compresión sin pérdidas se aplica para representar la aproximación. En general, las técnicas de compresión de video incluyen compresión "intra imagen" y compresión "ínter imagen", en donde una imagen es, por ejemplo, un cuadro de video escaneado de manera progresiva, un cuadro de video entrelazado (que tenga líneas alternantes para los campos de video), o un campo de video entrelazado. Para los cuadros progresivos, las técnicas de compresión intra imagen comprimen cuadros individuales (denominados típicamente cuadros-l o cuadros clave), y las técnicas de compresión inter imagen comprimen cuadros (típicamente denominados cuadros pronosticados, cuadros-P o cuadros-B) que se refieren a cuadros precedentes o siguientes (típicamente denominadas un cuadro de referencia o de fijación) o cuadros (para cuadros-B). Las técnicas de compresión inter imagen utilizan con frecuencia estimación de movimiento y compensación de movimiento. Para la estimación de movimiento, por ejemplo, un codificador divide un cuadro pronosticado actual en unidades de pixel 8x8 ó 16x16. Para una unidad del cuadro actual se encuentra una unidad similar en un cuadro de referencia para utilizarse como un predictor. Un vector de movimiento indica la ubicación del predictor en el cuadro de referencia. En otras palabras, el vector de movimiento para una unidad del cuadro actual indica el desplazamiento entre la ubicación en espacio de la unidad en el cuadro actual y la ubicación en espacio del predictor en el cuadro de referencia. El codificador calcula la diferencia muestra por muestra entre la unidad actual y el predictor para determinar una cantidad residual (también denominada señal de error). Si el tamaño de unidad actual es de 16x16, la cantidad residual se divide en cuatro bloques de 8x8. Para cada cantidad residual de 8x8, el codificador aplica una operación de resultado de frecuencia reversible que genera un conjunto de coeficientes de dominio de frecuencia (por ejemplo, espectral). Un resultado de coseno discreto ("DCT") es un tipo de resultado de frecuencia. Los bloques resultantes de coeficientes espectrales son cuantificados y codificados en entropía. Si se utiliza el cuadro pronosticado como una referencia para compensación de movimiento subsecuente, el codificador reconstruye el cuadro pronosticado. Cuando se reconstruyen residuos, el codificador reconstruye coeficientes de resultados (por ejemplo, coeficientes DCT) que fueron cuantificados y realiza un resultado de frecuencia inversa como un DCT inverso ("IDCT"). El codificador realiza la compensación de movimiento para calcular los predíctores y combina los predíctores con los residuos. Durante la descodificación, un decodificador decodifica típicamente información de entropía y realiza operaciones análogas para reconstruir residuos, realizar compensación de movimiento y combinar los predíctores con los residuos. L ínter Compresión en Windows Media Video, versiones 8 y 9 El Windows Media Video de Microsoft Corporation, Versión 8 ("WMV8") incluye un codificador de video y un descodificador de vídeo. El codificador WMV8 utiliza intra e inter compresión y el descodificador WMV8 utiliza intra e ínter descompresión. Windows Media Video, versión 9 ("WMV9") utiliza una arquitectura similar divida diversas operaciones. La ínter compresión en el codificador WMV8 utiliza codificación de predicción compensada por movimiento basada en bloque seguida de codificación de resultado del error de residuo. Las figuras 1 y 2 muestran la inter compresión basada en bloque para un cuadro pronosticado en el codificador WMV8. En particular, la figura 1 muestra la estimación de movimiento para un cuadro pronosticado (110). Para calcular el vector de movimiento, el codificador calcula un vector de movimiento para un macrobloque (115) en el cuadro pronosticado (110). Para calcular el vector de movimiento, el codificador busca en un área de búsqueda (135) de un cuadro de referencia (130). Dentro del área de búsqueda (135), el codificador compara el macrobloque (115) del cuadro pronosticado (110) con varios macrobloques candidatos para poder encontrar un macrobloque candidato que sea una buena correspondencia. El codificador produce información que especifica el vector de movimiento (codificado por entropía) para el macrobloque correspondiente. Como el valor del vector de movimiento está correlacionado con frecuencia con los valores de vectores de movimiento circundantes espacialmente, la compresión de datos que se utiliza para transmitir la información del vector de movimiento puede lograrse determinando o seleccionando un predictor de vector de movimiento desde los macrobloques vecinos y prediciendo el vector de movimiento para el macrobloque actual utilizando el predictor de vector de movimiento. El codificador puede codificar el diferencial entre el vector de movimiento y el predictor del vector de movimiento. Por ejemplo, el codificador calcula la diferencia entre el componente horizontal del vector de movimiento y el componente horizontal del predictor del vector de movimiento, calcula la diferencia entre el componente vertical del vector de movimiento y el componente vertical del predictor del vector de movimiento y codifica las diferencias. Después de reconstruir el vector de movimiento añadiendo el diferencial al predictor del vector de movimiento, un decodificador utiliza el vector de movimiento para calcular un macrobloque de predicción para el macrobloque (115) utilizando información del cuadro de referencia (130), que es un cuadro previamente reconstruido disponible en el codificador y el descodificador. La predicción es raramente perfecta, de manera que el codificador por lo general codifica bloques de diferencias de pixel (también denominados bloques de error o residuales) entre el macrobloque de predicción y el macrobloque mismo (115). La figura 2 muestra un ejemplo del cálculo y codificación de un bloque de error (235) en el codificador WMV8. El bloque de error (235) es la diferencia entre el bloque pronosticado (215) y el bloque actual original (225). El codificador aplica un resultado de coseno discreto ("DCT") (240) al bloque de error (235), que da como resultado un bloque de 8x8 (245) de coeficientes. Entonces el codificador cuantifica (259) los coeficientes DCT, dando como resultado un bloque 8x8 de coeficientes DCT (255) cuantificados. El codificador escanea (260) el bloque 8x8 (255) en una matriz de una dimensión (265) de manera que los coeficientes se ordenan generalmente desde la frecuencia más baja a la frecuencia más alta. La entropía del codificador codifica los coeficientes escaneados utilizando una variación de codificación de longitud ejecutable (270). El codificador selecciona un código de entropía desde una o más tablas de ejecución/nivel/último (275) y produce el código de entropía.
La figura 3 muestra un ejemplo de un proceso de descodificación correspondiente (300) para un bloque inter-codificado. En el resumen de la figura 3, un decodificador decodifica (310, 320) la información de entropía codificada que representa una predicción residual utilizando una descodificación de longitud variable 310 con una o más tablas de ejecución/nivel/último (315) y descodificador de longitud de ejecución (320). El inverso del descodificador escanea (330) una matriz de una dimensión (325) que almacena la información de entropía descodificada en un bloque de error reconstruido (345). En un trayecto de compensación de movimiento separado, el descodificador calcula un bloque pronosticado (365) que utiliza información de vector de movimiento (355) para desplazamiento desde un cuadro de referencia. El descodificador combina (370) el bloque pronosticado (365) con el bloque de error reconstruido (345) para formar el bloque reconstruido (375). II. Video entrelazado y video progresivo Un cuadro de video contiene líneas de información espacial de una señal de video. Para el video progresivo, estas líneas contienen muestras que comienzan desde un instante de un tiempo y continúan de manera que se escanea en cuadrícula a través de líneas sucesivas hasta la parte inferior del cuadro. Un cuadro-I progresivo es un cuadro de video progresivo intra-codificado. Un cuadro-P progresivo es un cuadro de video progresivo que utiliza predicción delantera, y un cuadro-B progresivo es un cuadro de video progresivo codificado que utiliza predicción bidireccional. El aspecto primario del video entrelazado es que el escaneo en cuadrícula de un cuadro de video completa se realiza en dos pasos al escanear líneas alternas en cada paso. Por ejemplo, el primer escaneo está compuesto por líneas pares del cuadro y el segundo escaneo está compuesto de las líneas impares del escaneo. Esto da como resultado que cada cuadro contenga dos campos que representen dos diferentes épocas en el tiempo. La figura 4 muestra un cuadro de video entrelazado (400) que incluye campo superior (410) y campo inferior (420). En el cuadro (400), las líneas numeradas pares (campo superior) se escanean comenzando en un tiempo (por ejemplo, tiempo r), y las líneas numeradas impares (campo inferior) se escanean comenzando en un momento diferente (típicamente más tarde) (por ejemplo, tiempo t ÷ 1). Esta temporización puede crear características distorsionadas similares a dientes en partes de un cuadro de video entrelazado en donde el movimiento está presente cuando los dos campos se escanean comenzando en tiempos diferentes. Por esta razón, los cuadros de video entrelazados pueden volver a acomodarse de conformidad con un cuadro de campo, con las líneas impares agrupadas en un campo, y las líneas pares agrupadas en otro campo. Esta configuración, conocida como codificación de campo, es útil en cuadros de movimiento rápido para reducir dichos artefactos de bordes distorsionados. Por otra parte, en regiones estacionarias, el detalle de imagen en el cuadro de video entrelazado puede preservarse de manera más eficiente sin dicha configuración. De conformidad, la codificación de cuadro se utiliza con frecuencia en cuadros de video entrelazado estacionarias o de movimiento lento. Un cuadro de video progresivo típico consiste en un cuadro de contenido con líneas no alternativas. En contraste al video entrelazado, el video progresivo no divide las cuadros de video en campos separados, y un cuadro completo se escanea de izquierda a derecha, de arriba a abajo comenzando en un momento único. III. Codificación v descodificación previas en un codificador v descodif icador WMV El software previo para un codificador y descodificador WMV, liberado en forma ejecutable, ha utilizado la codificación y descodificación de cuadros-P entrelazados y progresivos. Mientras el codificador y el descodificador sean eficientes para varios escenarios de codificación y descodificación y tipos de contenido diferentes, hay espacio para mejorar en varios lugares.
A. Películas de referencia para compensación de movimiento El codificador y el descodificador utilizan compensación de movimiento para cuadros pronosticados delanteros y entrelazados. Para un cuadro-P progresivo, la compensación de movimiento es relativa a un cuadro de referencia única, que es el cuadro-I y el cuadro-P que precede inmediatamente el cuadro-P actual. Como el cuadro de referencia para el cuadro-P actual es conocido y sólo un cuadro de referencia es posible, no se necesita la información que se utiliza para seleccionar entre diversos cuadros de referencia. Los macrobloques de un cuadro-P entrelazado pueden ser codificados en campo o codificados en cuadro. En un macrobloque codificado en campo, hasta dos vectores de movimiento se asocian con el macrobloque, uno para el campo superior y uno para el campo inferior. En un macrobloque de código en cuadro, hasta un vector de movimiento se asocia con el macrobloque. Para un macrobloque codificado en cuadro en un cuadro-P entrelazado, la compensación de movimiento es relativa a un cuadro de referencia único, que es el cuadro-l o cuadro-P previamente reconstruido que precede inmediatamente el cuadro-P actual. Para un macrobloque codificado en campo en un cuadro-P entrelazado, la compensación de movimiento sigue siendo relativa al cuadro de referencia único, pero sólo las líneas del campo superior del cuadro de referencia se consideran para un vector de movimiento para el campo superior del macrobloque codificado en campo, y sólo las líneas del campo inferior del cuadro de referencia se consideran para un vector de movimiento para el campo inferior del macrobloque codificado en campo. Una vez más, como el cuadro de referencia es conocido y sólo es posible un cuadro de referencia, no se necesita la información que se utiliza para seleccionar entre diversos cuadros de referencia.
En ciertos escenarios de codificación/descodificación (por ejemplo, video entrelazado de clasificación de bits alta con mucho movimiento), limitar la compensación de movimiento para predicción delantera que va a ser relativa a una única referencia puede dañar la eficiencia de compresión general. B. Información de macrobloque de señalización El codificador y descodificador utilizan señalización de información de macrobloque para cuadros-P progresivos o entrelazados. 1. Información de macrobloque de señalización para cuadros-progresivos Las cuadros-P progresivos pueden ser cuadros 1MV ó MV combinados. Un cuadro-P 1 MV progresivo incluye macrobloques 1MV. Un macrobloque 1MV tiene un vector de movimiento para indicar el desplazamiento de los bloques predictivos para todos los seis bloques en el macrobloque. Un cuadro-P progresivo V-combinado incluye 1MV y/o macrobloques 4MV. Un macrobloque 4MV tiene desde 0 a 4 vectores de movimiento en donde cada vector de movimiento es para uno de los hasta cuatro bloques de luminancia del macrobloque. Los macrobloques en los cuadros-P pueden ser de uno de tres tipos posibles: 1MV, 4 V y saltado. Además, los macrobloques 1MV y 4 V pueden ser intra-codificados. El tipo de macrobloque se indica por una combinación de película y elementos de capa de macrobloque. Así, los macrobloques 1MV pueden presentarse en cuadros-P 1MV y MV-combinadas. Un elemento MVDATA de datos de vector de movimiento único se asocia con todos los bloques en un macrobloque 1MV. MVDATA señala si los bloques son codificados como tipo intra o inter. Si están codificados como ínter, entonces MVDATA también indica el diferencial de vector de movimiento. Si el cuadro-P progresivo es 1MV, entonces todos los macrobloques en el mismo son macrobloques 1MV, de manera que no hay necesidad de señalar individualmente el tipo de macrobloque. Si el cuadro-P progresivo es MV combinado, entonces los macrobloques en el mismo pueden ser 1MV o 4MV. En este caso el tipo de macrobloque (1MV o 4MV) se señala para cada macrobloque en el cuadro mediante un plano de bits en la capa del cuadro en el flujo de bits. El plano de bits descodificado representa el estado 1MV o 4 V para los macrobloques como un plano de valores de un bit en orden de escaneo en cuadrícula desde la parte superior izquierda hasta la parte inferior derecha. Un valor de 0 indica que un macrobloque correspondiente se codifica en modo 1MV. Un valor de 1 indica que el macrobloque correspondiente es codificado en modo 4MV. En un modo de codificación, la información de estado 1 V/4MV se señala por macrobloque en la capa de macrobloque del flujo de bits (en lugar de cómo un plano para el cuadro-P progresivo). Los macrobloques 4 V se presentan en cuadros-P progresivos MV combinados. Los bloques individuales dentro del macrobloque 4MV se pueden codificar como bloques intra. Para cada uno de los cuatro bloques de luminancia de un macrobloque 4MV, el estado intra/inter se señala mediante el elemento BLK DATA de datos de vector de movimiento en bloque asociado con dicho bloque. Para un macrobloque 4MV, el elemento CBPCY de patrón de bloque codificado indica qué bloque tiene elementos BLKMVDATA presentes en el flujo de bits. El estado ¡nter/intra para los bloques de crominancia se deriva de los estados de luminancia ¡nter/intra. Si dos o más bloques de luminancia son codificados como intra, entonces los bloques de crominancia también se codifican como intra. Además, el estado saltado/no saltado de cada macrobloque en el cuadro también se señala mediante un plano de bits para el cuadro-P progresivo. Un macrobloque saltado puede seguir teniendo asociada información para predicción de vector de movimiento. CBCPY es un código de longitud variable ("VLC") que descodifica a un campo de seis bits. CBPCY aparece en diferentes posiciones en el flujo de bits para los macrobloques 1 V y 4 V y tiene diferentes semánticas para los macrobloques 1MV y 4MV. CBPCY se presenta en la capa de macrobloque 1MV si:
(1) MVDATA indica que el macrobloque es ¡nter-codificado y
(2) MVDATA indica que por lo menos un bloque del macrobloque 1MV contiene información de coeficiente (indicada por el "último" valor descodificado desde MVDATA). Si CBPCY está presente, entonces descodifica a un campo de seis bits que indica cuál de los seis bloques correspondientes contiene por lo menos un coeficiente no cero. CBPCY siempre está presente en la capa de macrobloque 4MV. Las posiciones de bit CBPCY para los bloques de luminancia (bits 0-3) tienen un significado ligeramente diferente que (as posiciones de bit para los bloques de crominancia (bits 4 y 5). Para una posición de bit para un bloque de luminancia, un 0 indica que el bloque correspondiente no contiene información de vector ni ningún coeficiente no cero. Para dicho bloque, BLKMDATA no está presente, el vector de movimiento pronosticado se utiliza como vector de movimiento y no existen datos residuales. Si los predictores de vector de movimiento indican que se utiliza la predicción de vector de movimiento, entonces un bit único está presente e indica el candidato de predictor vector de movimiento que se va a utilizar. Una posición de 1 en un bit para un bloque de luminancia indica que BLKMVDATA está presente para el bloque. BLKMDATA indica si el bloque es inter o intra y, si es ínter, indica el diferencial del vector de movimiento. BLKMVDATA también indica si existen datos de coeficiente para el bloque (con el "último" valor descodificado desde BLKMDATA). Para una posición de bit para un bloque de crominancia, el 0 ó 1 indican si el bloque correspondiente contiene información de coeficiente no cero. El codificador y el descodificador utilizan selección de tabla de código para las tablas VLC para MVDATA, BLKMVDATA y CBPCY, respectivamente. 2. Señalización de información de macrobloque para cuadros-P entrelazados Las cuadros-P entrelazados pueden tener una combinación de macrobloques de cuadro codificado y cuadro en campo. En un macrobloque de campo codificado, se asocian con el macrobloque hasta dos vectores de movimiento. En un macrobloque de cuadro codificado, se asocia con el macrobloque hasta un vector de movimiento. Si el elemento de capa de secuencia INTERLACE es 1, entonces el elemento de capa de cuadro INTRLCF está presente en el flujo de bits. INTRLCF es un elemento de un bit que indica el modo utilizado para codificar los macrobloques en dicho cuadro. Si INTRLCF = 0, entonces todos los macrobloques en el cuadro se codifican en el modo de cuadro. Si INTRLCF = 1, entonces los macrobloques pueden ser codificados en el modo de campo o de cuadro y un plano de bits INTRLCMB presente en la capa indica el estado de codificación en campo o cuadro para cada macrobloque en el cuadro-P entrelazado.
Los macrobloques en las cuadros-P entrelazados pueden ser de uno o tres tipos posibles: codificados por cuadro, codificados por campo o saltados. El tipo de macrobloque se indica mediante una combinación de cuadros y elementos de capa de macrobloque. Un MVDATA único se asocia con todos los bloques en un macrobloque codificado por cuadro. MVDATA señala si los bloques son codificados como tipo intra o inter. Si son codificados como inter, entonces MVDATA también indica el diferencial de vector de movimiento. En un macrobloque de código de campo, el elemento TOPMVDATA de datos de vector de movimiento de campo superior está asociado con los bloques de campo superior, y un elemento BOTMVDATA de datos de vector de movimiento de campo inferior está asociado con los bloques de campo inferior. Los elementos se señalan en el primer bloque de cada campo. Más específicamente, TOPMVDATA se señala junto con el bloque de campo superior izquierdo y BOTMVDATA se señala junto con el bloque de campo inferior izquierdo. TOPMVDATA indica si los bloques de campo superiores son intra o ínter. Si son ínter, entonces TOPMVDATA también indica el diferencial de vector de movimiento para los bloques de campo superior. De manera similar, BOTMVDATA señala el estado inter/intra para los bloques de campo superior, y la información de diferencial de vector de movimiento potencial para los bloques de campo inferior. CBPCY indica qué campos tienen presentes elementos de datos de vector de movimiento presentes en el flujo de bits. Un macrobloque saltado se señala mediante un plano de bits SKIPMB en la capa de cuadro. CBPCY está presente para un macrobloque de cuadro codificada o un cuadro-P entrelazado si el "último" valor descodificado desde MVDATA indica que existen datos que siguen el vector de movimiento que se va a descodificar. Si CBPCY está presente, descodifica un campo de seis bits, un bit por cada uno de los cuatro bloques V, un bit para ambos bloques U (campo superior y campo inferior), y un bit para ambos bloques V (campo superior y campo inferior). CBPCY siempre está presente para un macrobloque codificado por campo. CBPCY y los dos elementos de datos de vector de movimiento de campo se utilizan para determinar la presencia de coeficientes AC en los bloques de macrobloque. El significado de CBPCY es el mismo para macrobloques de cuadro codificadoa para bits 1, 3, 4 y 5. Es decir, indican la presencia o ausencia de coeficientes AC en el bloque Y de campo superior derecho, el bloque Y de campo inferior derecho, bloques U superior/inferior y bloques V superior/inferior, respectivamente. Para las posiciones de bit 0 y 2, el significado es ligeramente diferente. Una posición 0, 0 en bit, indica que TOPMVDATA no está presente y el predictor de vector de movimiento se utiliza como el vector de movimiento para los bloques de campo superior. También indica que el bloque de campo superior izquierdo no contiene ningún coeficiente no cero. Una posición 0, 1 en bit, indica que TOPMVDATA está presente. TOPMVDATA indica si los bloques de campo superior son inter o intra y, si son inter, también indica el diferencial de vector de movimiento. Si el "último" valor descodificado desde TOPMVDATA se descodifica a 1, entonces ningún coeficiente AC está presente para el bloque de campo superior izquierdo, de otra manera, no hay coeficientes AC no cero para el bloque de campo superior izquierdo. De manera similar, las reglas anteriores aplican a posición de bit 2 para BOTMVDATA y el bloque de campo inferior izquierdo.
El codificador y el descodificador utilizan la selección de tabla de código para las tablas VLC para MVDATA, TOPMVDATA, BOTMVDATA y CBPCY, respectivamente. 3. Problemas con señalización previa de información de macrobloque En resumen, bastante información para los macrobloques de cuadros-P y cuadros-P entrelazados progresivos se señala con códigos separados (o combinaciones de códigos) en las capas de macrobloque y cuadros. Esta información señalada de manera separada incluye número de vectores de movimiento, estados intra/inter macrobloque, si CBPCY está presente o ausente (por ejemplo, con el "último" valor para macrobloques 1MV y de cuadro codificado) y si los datos de vector de movimiento están presentes o ausentes (por ejemplo, con CBPCY para macrobloques de campo codificado y 4MV). Mientras esta señalización brinda buen desempeño general en varios casos, no explota de manera adecuada las dependencias estadísticas entre información señalada de manera diferente en varios casos comunes. Más aun, no permite ni dirige varias configuraciones útiles como presencia/ausencia de CBPCY para macrobloques 4MV, o presencia/ausencia de datos de vector de movimiento para macrobloques 1MV. Más aun, en la medida en que se señalen los datos de presencia/ausencia del vector de movimiento (por ejemplo, con CBPCY para macrobloques de campo codificado y 4MV), se requiere una redefinición de confusión del papel convencional del elemento CBPCY. A su vez, esto requiere señalización de la información CBPCY convencional con diferentes elementos (por ejemplo, BLKMVDATA, TOPMVDATA, BOTMVDATA) que no se utilizan convencionalmente para dicho propósito. Y la señalización no permite ni dirige varias configuraciones útiles como la presencia de información de coeficiente cuando los datos de vector están ausentes. C. Predicción de vector de movimiento Para un vector de movimiento para un macrobloque (o bloque, o campo de un macrobloque, etc.) en un cuadro-P progresivo o entrelazado, el codificador codifica el vector de movimiento al calcular un predictor de vector de movimiento basado en vectores de movimiento vecinos, al calcular un diferencial entre el vector de movimiento y el predictor de vector de movimiento y al codificar el diferencial. El descodificador reconstruye el vector de movimiento al calcular el predictor de vector de movimiento (otra vez basado en vectores de movimiento vecino), al descodificar el diferencial de vector de movimiento y al añadir el diferencial de vector de movimiento al predictor de vector de movimiento. Las figuras 5A y 5B muestran las ubicaciones de macrobloques consideradas para los predictores de vector de movimiento candidatos para un macrobloque 1MV en un cuadro-P progresivo 1MV. Los predictores candidato se toman desde los macrobloques izquierdo, superior y superior derecho, excepto en el caso de que el macrobloque sea el último macrobloque en la fila. En este caso, el Predictor se toma desde el macrobloque superior izquierdo en lugar del superior derecho. Para el caso especial cuando el cuadro tiene el ancho de un macrobloque, el predictor siempre es Predictor A (el predictor superior). Cuando el Predictor A está descontrolado porque el macrobloque está en la fila superior, el predictor es Predictor C. Varias de las otras reglas dirigen otros casos especiales como predictores intra-codificados. Las figuras 6A-10 muestran las ubicaciones en los bloques o macrobloques considerados para los hasta tres vectores de movimiento candidatos para un vector de movimiento para un macrobloque 1MV o 4 MV en un cuadro-P progresivo MV combinado. En las figuras, los cuadrados más grandes son límites de macrobloque y los cuadrados más pequeños son límites de bloque. Para el caso especial en que el cuadro tiene el ancho de un macrobloque el predictor es siempre Predictor A (el predictor superior). Varias de las demás reglas dirigen otros casos especiales como los bloques de fila superior para los macrobloques 4MV de fila superior, macrobloques 1 MV de fila superior y predictores intracodificados.
Específicamente, las figuras 6A y 6B muestran ubicaciones de bloques consideradas para predictores de vector de movimiento para macrobloque actual 1MV en un cuadro-P progresivo V combinado. Los macrobloques vecinos pueden ser macrobloques 1MV o 4MV. Las figuras 6A y 6B muestran las ubicaciones para los vectores de movimiento candidato asumiendo que los vecinos son 4MV. (Por ejemplo, el predictor A es el vector de movimiento para bloque 2 en el macrobloque arriba del macrobloque actual, y el predictor C es el vector de movimiento para el bloque 1 en el macrobloque inmediato a la izquierda del macrobloque actual). Si cualquiera de los vecinos es macrobloque 1MV, entonces el predictor de vector de movimiento mostrado en las figuras 5A y 5B se toma para ser el predictor vector de movimiento para el macrobloque completo. Como se muestra en la figura 6B, si el macrobloque es el último en la fila, entonces el Predictor B está desde el bloque 3 del macrobloque superior izquierdo en lugar de desde el bloque 2 en el macrobloque superior derecho como es en el caso contrario. Las figuras 7A-10 muestran las ubicaciones de bloques consideradas para predictores de vector de movimiento candidato para cada uno de los 4 bloques de luminancia en macrobloque 4MV de un cuadro-P progresivo MV combinado. Las figuras 7A y 7B muestran las ubicaciones de bloques consideradas para predictores de vector de movimiento candidato para un bloque en posición 0; las figuras 8A y 8B muestran las ubicaciones de bloques considerados para los predictores de vector de movimiento candidato para un bloque en posición 1; la figura 9 muestra las ubicaciones de bloques consideradas para predictores de vector de movimiento candidato para un bloque en la posición 2; y la figura 10 muestra las ubicaciones de bloques considerados para los predictores de vector de movimiento candidato para un bloque en la posición 3. Una vez más, si un vecino es un macrobloque 1MV, el predictor de vector de movimiento para el macrobloque se utiliza para los bloques del macrobloque. Para el caso en el que el macrobloque sea el primer macrobloque en la fila, el Predictor B para el bloque 0 se manejará de forma diferente que el bloque 0 para los macrobloques restantes en la fila (véase las figuras 7A y 7B). En este caso, el Predictor B se toma del bloque 3 en el macrobloque inmediatamente arriba del macrobloque actual en lugar de desde el bloque 3 en el macrobloque arriba y a la izquierda del macrobloque actual, como en el caso contrario. De forma similar, para el caso en el que el macrobloque es el último macrobloque en la fila, el Predictor B para el bloque 1 se maneja de forma diferente (figuras 8A y 8B). En este caso, el predictor se toma desde el bloque 2 en el macrobloque inmediatamente arriba del macrobloque actual en lugar de desde el bloque 2 en el macrobloque arriba y a la derecha del macrobloque actual, como en el caso contrario. En general, si el macrobloque está en la primera columna de macrobloques, entonces el Predictor C para bloques 0 y 2 se ajusta igual que a 0. Si un macrobloque de un cuadro-P progresivo se codifica como saltado, el predictor de vector de movimiento para él se utiliza como vector de movimiento para el macrobloque (o los predictores para los bloques se utilizan para los bloques, etc.) Un bit único puede seguir estando presente para indicar cuál predictor se debe utilizar en la predicción de vector de movimiento. Las figuras 11 y 12A-B muestran ejemplos de los predictores candidato para predicción de vector en movimiento para los macrobloques de cuadro codificado y los macrobloques de campo codificado, respectivamente, en cuadros-P entrelazados. La figura 11 muestra los predictores candidato A, B y C para un macrobloque de cuadro codificado en una posición interior en un cuadro-P entrelazado (ni el primero ni el último macrobloque en una fila de macrobloques ni en la fila superior). Los predictores se pueden obtener desde diferentes direcciones candidato distintas a aquéllas etiquetadas A, _B y C (por ejemplo, en casos especiales como cuando el macrobloque actual es el primer macrobloque o el último macrobloque en una fila o está en la fila superior, ya que ciertos predictores no están disponibles para dichos casos). Para un macrobloque de cuadro codificado actual, los candidatos predictores se calculan de manera diferente dependiendo de si los macrobloques vecinos son de campo codificado o de cuadro codificado. Para un macrobloque de cuadro codificado vecino, el vector de movimiento para él se toma simplemente como el predictor candidato. Para un macrobloque de campo codificado vecino, el vector de movimiento candidato se determina promediando los vectores de movimiento de campo superior e inferior. Las figuras 12A-B muestran los predictores candidato A, B y C para un campo actual en un macrobloque de campo codificado, en una posición interior en el campo. En la figura 12A, el campo actual es un campo inferior y los vectores de movimiento de campo inferior en los macrobloques vecinos se utilizan como predictores candidato. En la figura 12B, el campos actual está en el campo superior, y los vectores de movimiento de campo superior en los macrobloques vecinos se utilizan como predictores candidato. Para cada campo en un macrobloque de campo codificado, el número de candidatos de predictor de vector de movimiento para cada campo es por lo menos de tres, con cada candidato viniendo del mismo tipo de campo (por ejemplo, superior o inferior) como el campo actual. Si un macrobloque vecino es de cuadro codificado, el vector de movimiento para él se utiliza como su predictor de campo superior y predictor de campo inferior. Otra vez, los diversos casos especiales (no mostrados) aplican cuando los macrobloques actuales son el primer macrobloque o el último macrobloque en una fila o en la fila superior, ya que ciertos predictores no están disponibles para dichos casos. Si el cuadro tiene el ancho de un macrobloque, el predictor de vector de movimiento es Predictor A. Si un macrobloque vecino es intra, el predictor de vector de movimiento para él es 0. Las figuras 13A y 13B muestran pseudocódigos para calcular los predictores de vector de movimiento dados a los que se ha dado un conjunto de Predictores A, B y C. Para seleccionar un predictor desde un conjunto de candidatos predictores, el codificado y descodificador utilizan un algoritmo de selección como el algoritmo promedio de tres mostrado en 13C. D. Predicción de vector de movimiento híbrido para cuadros-P progresivos La predicción de vector de movimiento híbrido es permitida para los vectores de movimiento de cuadros-P progresivos. Para un vector de movimiento de un macrobloque o bloque, si el cuadro-P progresivo es 1MV o MV combinado, el predictor de vector de movimiento calculado en la sección anterior se prueba referente a los predictores A y C para determinar si una selección de predictor está codificada explícitamente en el flujo de bits. Si es así, entonces un bit es descodificado e indica si se debe utilizar el predictor A o el predictor C como el predictor de vector de movimiento para el vector de movimiento (en lugar de utilizar el predictor de vector de movimiento calculado en la sección C anterior). La predicción de vector de movimiento híbrida no se utiliza en la predicción de vector de movimiento para cuadros-P entrelazados o cualquier representación de video entrelazado. El pseudocódigo en las Figuras 14A y 14B muestra una predicción de vector de movimiento híbrida para los vectores de movimiento de cuadros-P progresivos. En el pseudocódigo, las variables predictor_pre_x y predictor_pre_y son los predictores de vector de movimiento horizontal y vertical, respectivamente, como se calculó en la sección anterior. Las variables predictor_post_x y predictor_post_y son los predictores de vector de movimiento horizontal y vertical, respectivamente, después de verificar la predicción de vector de movimiento híbrida. E. Descodificación de diferenciales de vector de movimiento Para los macrobloques o bloques de cuadros-P progresivos, los elementos MVDATA o BLKMVDATA señalan la información de diferencial de vector de movimiento. Un macrobloque 1MV tiene un MVDATA único. Un macrobloque 4MV tiene entre cero y cuatro elementos BLKMVDATA (cuya presencia se indica mediante CBPCY). Un MVDATA o BLKMDATA codifica en conjunto tres cosas: (1) el componente diferencial de vector de movimiento horizontal; (2) el componente diferencial de vector de movimiento vertical; y (3) un indicador binario "último" indica generalmente si los coeficientes de resultado están presentes. Si el macrobloque (o bloque, para 4MV) es intra o inter-codificado se señala como una de las posibilidades de diferencial de vector de movimiento. El pseudocódigo en las Figuras 15A y 15B muestra la manera en la que la información de diferencial de vector de movimiento, el tipo inter/intra y la información de último indicador son descodificados para MVDATA o BLKMVDATA. En el pseudocódigo, el last_flag variable es un indicador binario cuyo uso se describe en la sección sobre señalización de información de macrobloque. El intra_indicador variable es un indicador binario que señala si el bloque o el macrobloque son intra. Las variables dmv_x y dmv_y son componentes de vector de movimiento horizontal y vertical diferenciados, respectivamente. Las variables k_x y k_y son longitudes fijas para vectores de movimiento de gama amplia, cuyos valores varían como se muestra en la tabla de la figura 15C. La variable halfpel_flag es un valor binario que indica si se utiliza la precisión medio pixel de cuarto de pixel para el vector de movimiento, y cuyo valor se ajusta basado en los elementos de sintaxis de capa de cuadro. Finalmente, las tablas size_table y offset_table son matrices definidas de la siguiente manera: size_table(6) = (0, 2, 3, 4, 5, 8), y offset_table(6) = (0, 1, 3, 7, 15, 31). Para los macrobloques de cuadro codificado o campo codificado de cuadros-P entrelazados, los elementos MVDATA, TOPMVDATA y BOTMVDATA son descodificados de la misma manera. F. Reconstrucción y derivación de vectores de movimiento
Los vectores de movimiento de luminancia son reconstruidos a partir de información de diferencial de vector de movimiento codificado y predictores de vector de movimiento, y los vectores de movimiento de crominancia se derivan a partir de vectores de movimiento de luminancia reconstruidos. Para los macrobloques 1MV y 4MV de cuadros-P progresivos, un vector de movimiento de luminancia se reconstruye al añadir el diferencial al predictor de movimiento de la siguiente manera: mv_x = (dmv_x + predictor__x) smod range_x, mv_y = (dmv_y+predictor_y) somd range_y, en donde smod es una operación de módulo signada definida de la siguiente manera: A smod b = ((A + b)%2b) - b, lo que asegura que los vectores reconstruidos son válidos. En un macrobloque 1MV, hay un vector de movimiento único para los cuatro bloques que forman el componente de luminancia del macrobloque. Si el macrobloque es intra, entonces ningún vector de movimiento está asociado con el macrobloque. Si el macrobloque es saltado entonces dmv_x = 0 y dmv_y = 0, de manera que mv_x = predictor_x y mv_y = predictor_y. Cada bloque de interluminancia en un macrobloque 4MV tiene su propio vector de movimiento. Por lo tanto, habrá entre 0 y 4 vectores de movimiento de luminancia en un macrobloque 4MV. Un bloque no codificado en un macrobloque 4MV puede presentarse si el macrobloque 4MV es saltado o si CBPCY para el macrobloque 4MV indica que el bloque es no codificado. Si un bloque no es codificado entonces dmv_x = 0 y dmv_y = 0, de manera que mv_x = predictor_x y mv_y = pred¡ctor_y. Para las cuadros-P progresivos, los vectores de movimiento de crominancia se derivan a partir de los vectores de movimiento de luminancia. Además, para los macrobloques 4MV, la decisión de codificar bloques de crominancia como inter o intra se toma basada en el estado de bloques de luminancia. Los vectores de crominancia se reconstruyen en dos pasos. En el primer paso, un vector de movimiento de crominancia nominal se obtiene combinando y escalando apropiadamente vectores de movimiento de luminancia. La escala se realiza de tal manera que los offsets de medio pixel son preferidos sobre los offsets de un cuarto de pixel. La figura 16A muestra el pseudocódigo para escalar cuando se deriva un vector de movimiento de crominancia desde un vector de movimiento de luminancia par un macrobloque 1MV. La figura 16B muestra el pseudocódigo para combinar hasta cuatro vectores de movimiento de luminancia y escala cuando se deriva un vector de movimiento de crominancia para un macrobloque 4MV. La figura 13C muestra el pseudocódigo para el promedio3 0 función, y la figura 16C muestra el pseudocódigo para el promedio 4 0 función. En el segundo paso, un elemento de un bit de nivel de secuencia se utiliza para determinar si es necesario más redondeo de vectores de movimiento de crominancia. Si es así, los vectores de movimiento de crominancia que están en los offsets de un cuarto de pixel se redondean a las posiciones de pixel completo más cercanas. Para los macrobloques de cuadro codificado y campo codificado de cuadros-P entrelazados, se reconstruye un vector de movimiento de luminancia como se ha hecho con las cuadros-P progresivos. En un macrobloque de cuadro codificado, existe un vector de movimiento único para los cuatro bloques que forman el componente de luminancia del macrobloque. Si el macrobloque es intra, entonces ningún vector de movimiento estará asociado con el macrobloque. Si el macrobloque es saltado, entonces dmv_x = 0 y dmv_y = 0, de manera que mv_x = predictor_x y mv_y = predictor_y. En un macrobloque de campo codificado, cada campo puede tener su propio vector de movimiento. Por lo tanto, habrá entre 0 y 2 vectores de movimiento de luminancia en un macrobloque de campo codificado. Un campo no codificado en un macrobloque de campo codificado puede presentarse si el macrobloque de campo codificado es saltado o si CBPCY para el macrobloque de campo codificado indica que el campo es no codificado. Si un campo no está codificado, entonces dmv_x = 0 y dmv_y = 0, de manera que mv_x = predictor_x y mv_y = predictor_y. Para las cuadros-P entrelazados, los vectores de movimiento de crominancia se derivan a partir de vectores de movimiento de luminancia. Para un macrobloque de cuadro codificado, hay un vector de movimiento de crominancia correspondiente a un vector de movimiento de luminancia. Para un macrobloque de campo codificado, hay dos vectores de movimiento de crominancia. Uno es para el campo superior y una para el campo inferior, correspondientes a los vectores de movimiento de luminancia de campo superior e inferior. Las reglas para derivar un vector de movimiento de crominancia son las mismas para ambos macrobloques de campo codificado y de cuadro codificado. Dependen del vector de movimiento de luminancia, no del tipo de macrobíoque. La figura 17 muestra un pseudocódigo para derivar un vector de movimiento de crominancia desde un vector de movimiento de luminancia para un macrobíoque de cuadro codificado o campo codificado de un cuadro-P entrelazado. Básicamente, el componente x del vector de movimiento de crominancia es escalado por cuatro mientras que el componente y del vector de movimiento de crominancia sigue siendo el mismo (debido al sub-muestreo de crominancia de macrobíoque 4:1:1). El componente x escalado del vector de movimiento de crominancia también está circundado a una ubicación de cuarto de pixel vecina. Si cmv-x o cmv_y está descontrolado, se vuelve a jalar a una gama válida. G. Compensación de intensidad Para un cuadro-P progresivo, la capa del cuadro contiene elementos de sintaxis que controlan el modo de compensación de movimiento y la compensación de intensidad para el cuadro. Si la compensación de intensidad está señalada, entonces los elementos LUMSCALE y LU SHIFT siguen la capa de cuadro. LUMSCALE y LUMSHIFT son valores de seis bits que especifican parámetros utilizados en el proceso de compensación de intensidad. Cuando la compensación de intensidad se utiliza para el cuadro-P progresivo, los pixeles en el cuadro de referencia son remapeados antes de utilizarlos en la predicción compensada por movimiento para el cuadro-P. El pseudocódigo en la figura 18 muestra cómo los elementos LUMSCALE y LUMSHIFT se utilizan para construir la tabla de consulta que se utiliza para remapear los pixeles de cuadro de referencia. El componente Y del cuadro de referencia se remapea utilizando la tabla LUTY (), y los componentes U y V se remapean utilizando la tabla LUTUV (), de la siguiente manera: p Y = LUTY (P y), y p uv = LUTUV (P uv), en donde P y es el valor de pixel de luminancia original en el cuadro de referencia, p Y es el valor de pixel de luminancia remapeado en el cuadro de referencia, p uv es el valor pixel U o V original en el cuadro de referencia, y P uv es el valor de pixel U o V remapeado en el cuadro de referencia. Para un cuadro-P entrelazado, un valor INTCOMP de capa de cuadro de un bit señala si se utiliza compensación de intensidad para el cuadro. Si es así, entonces los elementos LUMSCALE y LUMSHIFT siguen la capa del cuadro en donde LUMSCALE y LUMSHIFT son valores de seis bits que especifican parámetros que se utilizan en el proceso de compensación de intensidad para el cuadro-P entrelazado completo. La compensación de intensidad misma es la misma para las cuadros-P progresivos. VI. Estándares para compresión y descompresión de video Aparte de los codificadores y descodificadores WMV anteriores, varios estándares internacionales se relacionan con la compresión y descompresión de video. Estos estándares incluyen los estándares 1, 2 y 4 del Grupo de Expertos en Cuadros de Movimiento ("MPEG") y los estándares H261, H262 (otro nombre para MPEG2), H263 y H264 de la Unión de Telecomunicación Internacional ("ITU"). Un codificador y descodificador que cumple con uno de estos estándares utiliza típicamente estimación de movimiento y compensación para reducir la redundancia temporal entre cuadros. A. Películas de referencia para compensación de movim iento Para varios estándares, la compensación de movimiento para cuadro pronosticado delantero es relativa a un cuadro de referencia único, que es el cuadro-P o -I reconstruido previamente que precede inmediatamente el cuadro pronosticado delantero. Como el cuadro de referencia para el cuadro pronosticado delantero es conocido y sólo es posible un cuadro de referencia, la información utilizada para seleccionar entre diversos cuadros de referencia no es necesaria. Véase, por ejemplo los estándares H.261 y MPEG1. En ciertos escenarios de codificación/descodificación (por ejemplo video entrelazado de clasificación de altos bits con mucho movimiento), limitar la compensación de movimiento para la predicción delantero para ser relativa a una referencia única puede dañar la eficiencia de compresión general. El estándar H.262 permite que un cuadro de video entrelazado sea codificada como un cuadro único o como dos campos, en donde la codificación de cuadro o codificación de campo pueden seleccionarse adaptativamente en una base cuadro por cuadro. Para la predicción de campo basado de un campo actual, la compensación de movimiento utiliza un campo superior o campo inferior previamente reconstruido, (estándar H.262, secciones 7.6.1 y 7.6.2.1.). El estándar H.262 describe seleccionar entre los dos campos de referencia que se van a utilizar para la compensación de movimiento con un vector de movimiento para un campo actual. (El estándar H.262, secciones 6.2.5.2, 6.3.17.2 y 7.6.4). Para un vector de movimiento dado para un macrobloque 16x16 (o superior 16x8 mitad del macrobloque, o inferior 16x8 mitad del macrobloque), un bit único es señalado para indicar si se aplica el vector de movimiento para el campo de referencia superior o el campo de referencia inferior. (Id.). Para mayores detalles, véase el estándar H.262.
Mientras dicha selección de campo de referencia brinda cierta flexibilidad y mejora de predicción en la compensación de movimiento en algunos casos, tiene muchas desventajas relativas a la clasificación de bits. La selección de campo de referencia señala los vectores de movimiento que pueden consumir muchos bits. Por ejemplo, para un campo único 720x288 con macrobloques 810, cada macrobloque teniendo 0, 1 ó 2 vectores de movimiento, los bits de selección de campo de referencia para los vectores de movimiento consumen hasta 1620 bits. No se hace ningún intento por reducir la clasificación de bits de información de selección de referencia al predecir qué campos de referencia serán seleccionados para los vectores de movimiento respectivos. La señalización de la información de selección de campo de referencia es ineficiente en términos de pura eficiencia de codificación. Más aun, para ciertos escenarios, no obstante la información es codificada, la información de selección de campo de referencia puede consumir tantos bits que los beneficios de las mejoras de predicción por tener diversas referencias disponibles en compensación de movimiento son excedidos. No se da ninguna opción para inhabilitar la selección de campo de referencia para dirigir dichos escenarios. El estándar H.262 también describe la predicción dual-principal, que es un modo de predicción en el que las dos predicciones basadas en campo delantero se promedian para un bloque de 16x16 en un cuadro-P entrelazado. (H.262 estándar, sección 7.6.3.6). El estándar MPEG-4 permite macrobloques de un cuadro de video entrelazado para ser cuadro codificado o campo codificado. (Estándar MPEG-4, sección 6.1.3.8.). Para la predicción de campo basado de líneas de campo superior e inferior de un macrobloque de campo codificado, la compensación de movimiento utiliza un campo superior o campo inferior previamente reconstruido. (Estándar MPEG-4, secciones 6.3.7.3 y 7.6.2.). El estándar MPEG-4 describe seleccionar entre dos campos de referencia para utilizar compensación de movimiento. (Estándar MPEG-4, secciones 6.3.7.3.). Para un vector de movimiento dado para las líneas de campo superior o líneas de campo inferior de un macrobloque, un bit único es señalado para indicar si se aplica el vector de movimiento al campo de referencia superior o el campo de referencia inferior. (Id.). Para mayores detalles, véase el estándar MPEG-4. Dicha señalización de información de selección de campo de referencia tiene problemas similares con los descritos arriba para H.262. El estándar H.263 describe la compensación de movimiento para cuadros-P progresivos, incluyendo el modo de selección de cuadro de referencia opcional. (Estándar H.263, sección 3.4.12, Anexo N.) Normalmente, el cuadro de soporte previo temporalmente más reciente se utiliza para la compensación de movimiento. No obstante, cuando se utiliza el modo de selección de cuadro de referencia, la predicción temporal está permitida desde cuadros diferentes al cuadro de referencia más reciente. (Id.). Esto puede mejorar el desempeño de comunicación de video de tiempo real sobre los canales susceptibles a error permitiendo que el codificador optimice su codificación de video para las condiciones del canal (por ejemplo, detener la propagación debida a la pérdida de información necesaria para referencia en codificación de inter-cuadro. (Id.) Cuando se utiliza, para un grupo dado de bloques o segmentos dentro de un cuadro, un valor de 10 bits indica la referencia utilizada para predicción del grupo de bloques o segmento. (Id.) El mecanismo de selección de cuadro de referencia descrito en H.263 es para el video progresivo y es adaptado para dirigir el problema de propagación de error en canales susceptibles a error, no para mejorar la eficiencia de compresión per se. En el borrador JVT-D157 del estándar H.264, el proceso de ínter predicción para predicción compensada por movimiento de un bloque puede incluir la selección de cuadro de referencia desde un número de cuadros almacenados, previamente descodificados. (JVT-D157, sección 0.4.3.). En el nivel del cuadro, uno o más parámetros especifican el número de cuadros de referencia que se utilizan para descodificar el cuadro. (JVT-D157, secciones 7.3.2.2 y 7.3.2.2 y 7.4.2.2). En el nivel de segmento, el número de cuadros de referencia disponibles puede ser cambiado, y los parámetros adicionales pueden ser recibidos para reordenar y manejar qué cuadros de referencia están en una lista. (JVT-D157, secciones 7.3.3 y 7.4.3.). Para un vector de movimiento dado (para una parte de macrobloque o submacrobloque), un índice de referencia cuando está presente índica el cuadro de referencia que se va a utilizar para la predicción. (JVT-D157, secciones 7.3.5.1 y 7.4.5.1.). El índice de referencia indica la primera, segunda, tercera, etc. cuadro o campo en la lista. (Id.). Si sólo hay un cuadro de referencia activo en la lista el índice de referencia no está presente. (Id.). Si sólo hay dos cuadros de referencia activos en la lista, un bit codificado único se utiliza para representar el índice de referencia. (Id.). Para detalles adicionales, véase borrador JVT-D157 del estándar H.264. La selección de cuadro de referencia de JVT-D157 brinda flexibilidad y por lo tanto puede mejorar la predicción para compensación de movimiento. No obstante, los procesos para manejar las listas de cuadros de referencia y señalar las selecciones de cuadros de referencia son complejos y consumen un número ineficiente de bits en algunos escenarios.
B. Señalización de modos de macrobloque Los diversos estándares usan diferentes mecanismos para señalar la información de macrobloque. En el estándar H.261 , por ejemplo, un encabezamiento de macrobloque para un macrobloque incluye un macrobloque tipo elemento TYPE, que se señala como un VLC. (Estándar H.261, sección 4.2.3.). Un elemento TYPE indica un modo de predicción (intra, inter, ínter + MC, inter + MC +filtración de bucle), si un elemento MQUANT está presente para el macrobloque, si un elemento CBP de patrón de bloque codificado está presente par el macrobloque, y si los elementos TCOEFF de coeficiente están presentes para los bloques del macrobloque. (Id.). Un elemento MVD está presente para cada macrobloque compensado por movimiento. (Id.). En el estándar MPEG-1, sección 2.4.3.6, Tablas B2a a B.2d, D.6.4.2). Para un macrobloque en un cuadro pronosticado delantero, el elemento macroblock_type indica si un elemento de escala cuantificador está presente para el macrobloque, si los datos de vector de movimiento delantero están presentes para el macrobloque, si un elemento de patrón de bloque codificado está presente para el macrobloque, y si el macrobloque es intra. (Id.). Los datos del vector de movimiento delantero están siempre presentes si el macrobloque utiliza la compensación de movimiento delantero. (Id.). En el estándar H.262, un macrobloque tiene un elemento macroblock_type, que es señalado como VLC. (Estándar H.261, sección 6.2.4.1, 6.3.17.1 y Tablas B.2 a B.8.). Para un macrobloque en un cuadro pronosticado delantero, el elemento macroblock_type indica si un elemento quantizer_scale_code está presente para el macrobloque, si los datos del vector de movimiento delantero están presentes para el macrobloque, si un elemento del patrón de bloque codificado está presente para el macrobloque, si el macrobloque es intra, y las opciones de escalabilidad para el macrobloque. (Id.). Los datos del vector de movimiento delantero están siempre presentes si el macrobloque utiliza compensación de movimiento delantero. (Id.). Un código separado (frame_motion_type o field_motion_type) puede indicar además el tipo de predicción del macrobloque, incluyendo el conteo de vectores de movimiento y formato de vector de movimiento para el macrobloque. (Id.). En el estándar H.263, un macrobloque tiene el tipo de macrobloque y el patrón de bloque codificado para el elemento MCBPC de crominancia, que se señala como VLC. (Estándar H.263, sección 5.3.2, Tablas 8 y 9, y F.2.). El tipo de macrobloque da información acerca del macrobloque (por ejemplo, ínter, inter4V, intra). (Id.). Para un macrobloque codificado en un cuadro intercodificado, MCBPC y el patrón de bloque codificado para luminancia está siempre presente, y el tipo de macrobloque indica si un elemento de información de cuantificador está presente para el macrobloque. Un macrobloque de movimiento delantero compensado siempre tiene datos de vector de movimiento para el macrobique (o bloques para tipo inter4V) presente, (¡d.). El estándar MPEG-4 especifica de manera similar un elemento MCBPC que es señalado como un VLC. (Estándar MPEG-4, secciones 6.2.7, 6.3.7, 11.1.1.). En JVT-D157, el elemento mb_type es parte de la capa de macrobloque. (JVT-D157, secciones 7.3.5 y 7.4.5.). El mb_type indica el tipo de macrobloque y diversa información asociada. (Id.). Por ejemplo, para un segmento-P, el elemento mb_type indica el tipo de predicción (intra o delantera), varios parámetros de codificación de modo intra si el macrobloque es intra codificado, las divisiones de macrobloque (por ejemplo, 16x16, 16x8, 8x16, u 8x8) y en consecuencia el número de vectores de movimiento si el macrobloque es pronosticado delantero, y si la información de selección de cuadro de referencia está presente (si las divisiones son 8x8). (Id.). El tipo de predicción y mb_type también indican colectivamente si un elemento de patrón de bloque codificado está presente para el macrobloque. (Id.). Para cada división 16x16, 16x8 u 8x16 en un macrobloque de movimiento compensado delantero, se señalan los datos del vector de movimiento. (Id.). Para el macrobloque pronosticado delantero con divisiones 8x8, un elemento sub_mb_type por división 8x8 indica el tipo de predicción (intra o delantera) para él. (Id.). Si la división 8x8 es pronosticada delantera, sub_mb_type indica las subdivisiones (por ejemplo, 8x8, 8x4, 4x8 ó 4x4), y por lo tanto el número de vectores de movimiento, para la división 8x8). (¡d.). Para cada subdivisión en una división 8x8 de movimiento delantero compensado, los datos del vector de movimiento serán señalados. (Id.). Los diversos estándares utilizan una gran variedad de mecanismos de señalización para la información de macrobloque. Cualesquier ventajas que pudieran tener estos mecanismos de señalización, también tienen las siguientes desventajas. Primero, en algunos momentos no señalan de manera eficiente el tipo de macrobloque de señal, presencia/ausencia de información de patrón de bloque codificado, y presencia/ausencia de información de diferencial de vector de movimiento para macrobloques de movimiento compensado. De hecho, los estándares no señalan típicamente presencia/ausencia de información de diferencial de vector de movimiento para macrobloques de movimiento compensado (o bloques o campo pertinentes) del todo, asumiendo en su lugar que la información de diferencial de vector de movimiento es señalada si se utiliza la compensación de movimiento. Finalmente, los estándares son inflexibles en sus decisiones de qué tablas de código utilizar para información de modo de macrobloque. C. Predicción de vector de movimiento Cada H.261, H.262, H.263, MPEG-1, MPEG-4 y JVT-D157 especifica alguna forma de predicción de vector de movimiento, aunque los detalles de predicción de vector de movimiento varían enormemente entre los estándares. La predicción de vector de movimiento es más simple en el estándar H.261, por ejemplo, en que el predictor de vector de movimiento para el vector de movimiento de un macrobloque actual es el vector de movimiento del macrobloque codificado/descodificado previamente. (Estándar H.261, sección 4.2.3.4.). El predictor de vector de movimiento es 0 para varios casos especiales (por ejemplo, el macrobloque actual es el primero en una fila). La predicción de vector de movimiento es similar en el estándar MPEG-1. (Estándar MPEG-1, secciones 2.4.4.2 y D.6.2.3.). Otros estándares (como H.262) especifican predicción de vector de movimiento mucho más compleja, pero siguen determinando típicamente un predictor de vector de movimiento desde un vecino único. (Estándar H.262, sección 7.6.3.). Determinar un predictor de vector de movimiento desde un vecino único es suficiente cuando el movimiento es uniforme, pero es ineficiente en varios otros casos. Así, aun los otros estándares (como H.263, MPEG-4, JVT-D157) determinan un predictor de vector de movimiento desde diversos vecinos diferentes con diferentes predictores de vector de movimiento candidato. (Estándar H.263, secciones 6.1.1; estándar MPEG-4, secciones 7.5.5 y 7.6.2; y F.2; JVT-D157, sección 8.4.1.). Éstos son eficientes para más tipos de movimiento, pero siguen sin dirigir adecuadamente escenarios en los que exista un alto grado de variación entre los diferentes predictores de vector de movimiento candidato, indicando discontinuidad en patrones de movimiento. Para detalles adicionales, véanse los estándares respectivos. D, Decodificación de diferenciales de vector de movim iento Cada H.262, H.262. H.263. MPEG-1, MPEG-4 y JVT-D157 especifica algo de la codificación y descodificación del vector de movimiento diferencial aunque los detalles de la codificación y la descodificación varían enormemente entre los estándares. La codificación y descodificación del vector de movimiento es más simple en el estándar H.261, por ejemplo, en que VLC uno representa el componente diferencial horizontal y otro VCL representa el componente diferencial vertical. (Estándar H.261, sección 4.2.3.4.). Otros estándares especifican codificación y descodificación más compleja para información diferencial de vector de movimiento. Para detalles adicionales, véanse los estándares respectivos. E. Reconstrucción y derivación de los vectores de movim iento En general, un vector de movimiento en H.262, H.262. H.263. MPEG-1, MPEG-4 y JVT-D157 se reconstruye combinando un predictor de vector de movimiento y un diferencial de vector de movimiento. Otra vez, los detalles de reconstrucción varían de estándar en estándar. Los vectores de movimiento de crominancia (que no son señalados) se derivan típicamente de los vectores de movimiento de luminancia (que son señalados). Por ejemplo, en el estándar H.261, los vectores de movimiento de luminancia se dividen a la mitad y se truncan hacia el cero para derivar vectores de movimiento de crominancia. (Estándar H.261, sección 3.2.2.). De manera similar, los vectores de movimiento de luminancia se dividen a la mitad para derivar el vector de movimiento de crominancia en el estándar MPEG-1 y JVT-D157. (Estándar MPEG-1, sección 2.4.4.2; JVT-D157, sección 8.4.1.4.). En el estándar H.262, los vectores de movimiento de luminancia se escalan hacia abajo para los vectores de movimiento de crominancia mediante factores que dependen del modo de sub-muestreo de crominancia (por ejemplo, 4:2:0, 4:2:2, ó 4:4:4). (Estándar H.262, sección 7.6.3.7.). En el estándar H.263, para un macrobloque con un vector de movimiento de luminancia única para los cuatro bloques de luminancia, un vector de movimiento de crominancia se deriva dividiendo el vector de movimiento de luminancia entre dos y redondeando una posición de medio pixel. (Estándar H.263, sección 6.1.1.). Para un macrobloque con cuatro vectores de movimiento de luminancia, dividiendo entre ocho y redondeando a una posición de medio pixel. (Estándar H.263, sección F.2.). Los vectores de movimiento de crominancia se derivan de manera similar en el estándar MPEG-4, secciones 7.5.5 y 7.6.2). F. Predicción ponderada El borrador JVT-D157 del estándar H.264 describe la predicción ponderada. Un indicador para predicción ponderada para un cuadro indica si la predicción ponderada se utiliza para fragmentos pronosticados en el cuadro o no. (JVT-D157, secciones 7.3.2.2 y 7.4.2.2.). Si la predicción ponderada se utiliza para un cuadro, cada fragmento pronosticado en el cuadro tiene una tabla de predicciones ponderadas. (JVT-D157, secciones 7.3.3, 7.3.3.2, 7.4.3.3 y 10.4.1). Para la tabla, se señalan un denominador para parámetros ponderados de luminancia y un denominador para parámetros de peso de crominancia. (Id.). Entonces, para cada cuadro de referencia disponible para el fragmento, un indicador de ponderancia de luminancia indica si los parámetros de ponderancia de luminancia y de numerador offset son señalados para el cuadro (seguidos por los parámetros, cuando son señalados), y un indicador de ponderación de crominancia indica si los parámetros de peso de crominancia y de numerador de offset de crominancia son señalados para el cuadro (seguidos por los parámetros, cuando son señalados). (Id.). A los parámetros de ponderación de numerador que no son señalados se les dan valores predeterminado dependiendo de los valores del denominador señalado. (Id.). Mientras que JVT-D157 brinda cierta flexibilidad en la señalización de los parámetros de predicción ponderada, el mecanismo de señalización es ineficiente en varios escenarios. Dada la gran importancia de la compresión y descompresión de video en video digital, no es de sorprender que la compresión y descompresión de video sean campos ampliamente desarrollados. Sin embargo, cualesquiera que sean los beneficios de la compresión y descompresión de video anteriores, no tienen las ventajas de las siguientes técnicas y herramientas. Sumario de la Invención En resumen, la descripción detallada se dirige a varias técnicas y herramientas para codificar y descodificar el video entrelazado. Las diversas técnicas y herramientas se pueden utilizar para codificar y descodificar el video entrelazado. Las diversas técnicas y herramientas se pueden utilizar en combinación o independientemente. Partes de la descripción detallada se dirigen a varias técnicas y herramientas para predicción de vector de movimiento híbrido para campos pronosticado delantero entrelazados. Las técnicas y herramientas descritas incluyen, pero no se limitan a lo siguiente: Una herramienta como un codificador o descodificador de video verifica una condición de predicción de vector de movimiento basada en por lo menos parte de una señal de polaridad de predictor aplicable a un predictor de vector de movimiento. Por ejemplo, la señal de polaridad del predictor es para señalar la polaridad dominante o polaridad no dominante para el predictor de vector de movimiento. La herramienta determina entonces el predictor de vector de movimiento. O una herramienta como un codificador o descodificador de video determina un predictor vector de movimiento derivado inicial para vector de movimiento de un campo pronosticado delantero entrelazado. Entonces la herramienta verifica una condición de variación basada por lo menos en parte del predictor del vector de movimiento derivado y uno o más de los vectores de movimiento vecino. Si se satisfacen las condiciones, la herramienta utiliza uno de uno o más vectores de movimiento vecino como predictor del vector de movimiento final para el vector de movimiento. De otra manera, la herramienta utiliza el predictor de vector de movimiento derivado como el predictor de vector de movimiento final. Partes de la descripción detallada son dirigidas a varias técnicas y herramientas para utilizar los patrones de bloque de vector de movimiento que señala la presencia o ausencia de datos de vector de movimiento para macrobloques con diversos vectores de movimiento. Las técnicas y herramientas descritas incluyen, pero no están limitadas a, lo siguiente: Una herramienta como un codificador o descodificador de video procesa un primer código de longitud variable que representa la primera información para un macrobloque con diversos vectores de movimiento de luminancia. La primera información incluye un indicador de presencia de datos de vector de movimiento por vector de movimiento de luminancia de macrobloque. La herramienta también procesa un segundo código de longitud variable que representa segunda información para el macrobloque. La segunda información incluye diversos indicadores de presencia de datos de coeficiente de resultado para diversos bloques del macrobloque. O una herramienta como un codificador o descodificador de video para un macrobloque con un primer número de vectores de movimiento de luminancia (cuando el primer número es > 1), procesa un patrón de bloque de vector de movimiento que consiste en un segundo número de bits (en donde el segundo número = el primer número). Cada uno de los bits indica si el correspondiente de los vectores de movimiento de luminancia ha asociado los datos de vector de movimiento en un flujo de bits. La herramienta también procesa datos de vector de movimiento para cada uno de los vectores de movimiento de luminancia para los cuales se indican los datos del vector de movimiento que se van a señalar en el flujo de bits. Partes de la descripción detallada son dirigidas a varias técnicas y herramientas para seleccionar entre polaridades dominantes y no dominantes para predictores de vector de movimiento. Las técnicas y herramientas descritas incluyen, pero no están limitadas a lo siguiente: Una herramienta como un codificador o descodificador de video determina una polaridad dominante para un predictor de vector de movimiento. La herramienta procesa el predictor de vector de movimiento basada en la última parte de la polaridad dominante, y procesa un vector de movimiento basado por lo menos en parte en el predictor de vector de movimiento. Por ejemplo, el vector de movimiento es para un bloque o macrobloque actual de un campo pronosticado delantero entrelazado, y la polaridad dominante se basa por lo menos en parte en polaridad de diversos vectores de movimiento previo para bloques o macrobloques vecinos. O, una herramienta como un codificador o descodificador procesa información que indica una selección entre polaridades dominantes y no dominantes para un predictor de vector de movimiento, y procesa un vector de movimiento basado por lo menos en parte en el predictor de vector de movimiento. Por ejemplo, un descodificador determina las polaridades dominantes y no dominantes, entonces determinan el predictor de vector de movimiento basado por lo menos en parte en las polaridades y la información que indica la selección entre ellos. Partes de la descripción detallada se dirigen a varias técnicas y herramientas para codificar y descodificar en conjunto información de selección de campo de referencia e información de vector de movimiento diferencial. Las técnicas y herramientas descritas incluyen, pero no están limitadas a, lo siguiente: Una herramienta como un descodificador de video descodifica un código de longitud variable que representa en conjunto información de vector de movimiento diferencial y una selección de predictor de vector de movimiento para un vector de movimiento. Entonces el descodificador reconstruye el vector de movimiento basado por lo menos en parte en la información de vector de movimiento diferencial y en la selección de predictor de vector de movimiento.
O, una herramienta como el codificador de video determina una selección de predictor dominante/no dominante para un vector de movimiento. El codificador determina la información del vector de movimiento diferencial para el vector de movimiento, y en conjunto codifica la selección del predictor dominante/no dominante con la información del vector de movimiento diferencial. Partes de la descripción detallada se dirigen a varias técnicas y herramientas para la selección de tabla de código y codificación/descodificación en conjunto de la información de modo de macrobloque para macrobloques de campos pronosticados delanteros entrelazados. Las técnicas y herramientas descritas incluyen, pero no están limitadas a lo siguiente: Una herramienta como un codificador o descodificador de video procesa un código de longitud variable que señala en conjunto información de modo de macrobloque para un macrobloque. El macrobloque es de movimiento compensado y la información de modo de macrobloque señalado incluye (1) un tipo de macrobloque, (2) si un patrón de bloque codificado está presente o ausente, y (3) si los datos de vector de movimiento están presentes o ausentes para el macrobloque de movimiento compensado. O, una herramienta como el codificador o descodificador de video selecciona una tabla de código a partir de tablas de código disponibles múltiples para información de modo de macrobloque para campos pronosticados delantero entrelazados. La herramienta utiliza la tabla de código seleccionada para procesar un código de longitud variable que indica la información de modo de macrobloque para un macrobloque. la información de modo de macrobloque incluye (1) un tipo de macrobloque, (2) si un patrón de bloque codificado está presente o ausente, y (3) cuando sea aplicable para el tipo de macrobloque, si los datos de vector de movimiento están presentes o ausentes. Partes de la descripción detallada se dirigen a varias técnicas y herramientas para usar una señal del número de campos de referencia disponibles para un campo pronosticado delantero entrelazado. Las técnicas y herramientas descritas incluyen, pero no están limitadas a lo siguiente: Una herramienta como un codificador o descodificador de video procesa una primera señal indicando si un campo pronosticado delantero entrelazado tiene un campo de referencia o dos campos de referencia posibles para compensación de movimiento. Si la primera señal indica que el campo pronosticado delantero tiene un campo de referencia, la herramienta procesa una segunda señal que identifica uno de los campos de referencia de los dos posibles campos de referencia. Por otro lado, si la primera señal indica que el campo pronosticado delantero entrelazado tiene dos posibles campos de referencia, para cada vector de movimiento múltiple para bloques y/o macrobloques del campo pronosticado delantero entrelazado, una herramienta puede procesar una tercera señal para seleccionar entre dos posibles campos de referencia. Entonces la herramienta realiza compensación de movimiento para el campo pronosticado delantero entrelazado. O, una herramienta como el codificador o descodificador de video procesa una señal indicando si un campo pronosticado delantero entrelazado tiene un campo de referencia o dos campos de referencia posibles para compensación de movimiento. La herramienta realiza compensación de movimiento para el campo pronosticado delantero entrelazado. La herramienta también actualiza un búfer de campo de referencia para compensación de movimiento subsecuente sin procesar señales adicionales para manejar el búfer de campo de referencia. Partes de la descripción detallada se dirigen a varias técnicas y herramientas para derivar vectores de movimiento de crominancia para macrobloques de campos pronosticados delanteros entrelazados. Las técnicas y herramientas descritas incluyen, pero no están limitadas a lo siguiente: Una herramienta como un codificador o descodificador de video, para un macrobloque con uno o más vectores de movimiento, deriva un vector de movimiento de crominancia basado por lo menos en parte en la evaluación de polaridad de uno o más vectores de movimiento de luminancia. Por ejemplo, cada uno o más vectores de movimiento de luminancia tienen polaridad impar o par, y la evaluación de polaridad incluye determinar qué polaridad es más común entre uno o más vectores de movimiento de luminancia. O, una herramienta como el codificador o descodificador de video determina una polaridad prevaleciente entre diversos vectores de movimiento de luminancia para macrobioque. Entonces la herramienta deriva un vector de movimiento de crominancia para el macrobioque basado por lo menos en parte en uno o más de los múltiples vectores de movimiento de luminancia que tiene la polaridad prevaleciente. Las características y ventajas adicionales se harán aparentes a partir de la siguiente descripción detallada de las diferentes modalidades que proceden con referencia a los dibujos que acompañan. Breve Descripción de los Dibujos La figura 1 es un diagrama que muestra la estimación de movimiento en un codificador de video de conformidad con la técnica anterior. La figura 2 es un diagrama que muestra la compresión basada en bloque para un bloque 8x8 de residuales de predicción en un codificador de video de conformidad con la técnica anterior. La figura 3 es un diagrama que muestra la descompresión basada en bloque para un bloque de 8x8 de residuales de predicción en un descodificador de video de conformidad con la técnica anterior. La figura 4 es un diagrama que muestra un cuadro entrelazado de conformidad con la técnica anterior. Las figuras 5A y 5B son diagramas que muestran ubicaciones de macrobloques para predictores de vector de movimiento candidato para un macrobloque 1MV en cuadro-P progresivo de conformidad con la técnica anterior. Las figuras 6A y 6B son diagramas que muestran ubicaciones de bloques para predictores de vector de movimiento candidato para un macrobloque 1MV en un cuadro-P progresivo 1MV/4MV combinada de conformidad con la técnica anterior. Las figuras 7A, 7B, 8A, 8B, 9 y 10 son diagramas que muestran ubicaciones de bloques para predictores de vector de movimiento candidato para un bloque en varias posiciones en un cuadro-P progresivo 1MV/4 V combinada de conformidad con la técnica anterior. La figura 11 es un diagrama que muestra predictores de vector de movimiento candidato para un macrobloque de cuadro codificado en un cuadro-P entrelazado de conformidad con la técnica anterior.
Las figuras 12A-12B son diagramas que muestran predictores de vector de movimiento candidato para un macrobloque de campo codificado actual en un cuadro-P entrelazado de conformidad con la técnica anterior. Las figuras 13A-13C son pseudocódigos para calcular los predictores de vector de movimiento de conformidad con la técnica anterior. Las figuras 14A y 14B son pseudocódigos que muestran la predicción de movimiento híbrido para cuadros-P progresivos de conformidad con la técnica anterior. Las figuras 15A-15C son pseudocódigos y una tabla que muestran información diferencial de vector de movimiento de conformidad con la técnica anterior. Las figuras 16A-16C y 13C son pseudocódigos que muestran la derivación de vectores de movimiento de crominancia para cuadros-P progresivos de conformidad con la técnica anterior. La figura 17 es un pseudocódigo que muestra la derivación de vectores de movimiento de crominancia para cuadros-P entrelazados de conformidad con la técnica anterior. La figura 18 es un pseudocódigo que muestra la intensidad de la compensación para cuadros-P progresivos de conformidad con la técnica anterior. La figura 19 es un diagrama de bloque de un ambiente de computación adecuado en conjunto con lo que varios describen como las modalidades que se van a implementar. La figura 20 es un diagrama de bloque de un sistema codificador de video generalizado en conjunto con lo que varios describen como las modalidades que se van a implementar. La figura 21 es un diagrama de bloque de un sistema descodificador de video generalizado en conjunto con lo que varios describen como las modalidades que se van a implementar. La figura 22 es un diagrama de un formato de macrobioque que se utiliza en varias modalidades descritas La figura 23A es un diagrama de parte de un cuadro de video entrelazado que muestra líneas alternantes de un campo superior y un campo inferior. La figura 23B es un diagrama de cuadro de video entrelazado organizado para codificar/descodificar como un cuadro, y la figura 23C es un diagrama de cuadro de video entrelazado organizado para codificar/descodificar como campos. Las figuras 24A-24F son diagramas que muestran ejemplos de campos de referencia para un campo-P entrelazado. Las figuras 25A y 25B son diagramas de flujo que muestran técnicas para codificar y descodificar respectivamente, de número de campo de referencia e información de selección. Las figuras 26 y 27 son tablas que muestran valores BMODE. Las figuras 28A y 28B son diagramas de flujo que muestran técnicas para codificar y descodificar respectivamente, de información de modo de macrobloque para macrobloques de campos-P entrelazados. La figura 29 es un pseudocódígo para determinar campos de referencia dominantes y no dominantes. La figura 30 es un pseudocódigo para señalar si un campo de referencia dominante y no dominante se utiliza para un vector de movimiento. Las figuras 31A y 31B son diagramas de flujo que muestran técnicas para determinar polaridades dominantes y no dominantes para predicción de vector de movimiento en codificación y descodificación, respectivamente, de vectores de movimiento para dos campos-P entrelazados de campo de referencia. La figura 32 es un pseudocódigo para predicción de vector de movimiento híbrido durante la descodificación. Las figuras 33A y 33B son diagramas de flujo que muestran técnicas para predicción de vector de movimiento híbrido durante la codificación y descodificación, respectivamente. La figura 34 es un diagrama que muestra la asociación entre los bloques de luminancia y el elemento 4MVBP. Las figuras 35A y 35B son diagramas de flujo que muestran técnicas para codificar y descodificar, respectivamente, utilizando un patrón de bloque de vector de movimiento. La figura 36 es un pseudocódigo para codificar información de diferencial de vector de movimiento y una selección de predictor dominante/no dominante para dos campos-P entrelazados de campo de referencia. Las figuras 37A y 37B son diagramas de flujo que muestran técnicas para codificar y descodificar respectivamente, de información de diferencial de vector de movimiento y una selección de predictor dominante/no dominante para dos campos-P entrelazados de campo de referencia. La figura 38 es un diagrama del patrón de sub-muestra de crominancia para un macrobloque 4:2:0. La figura 39 es un diagrama que muestra relaciones entre los campos actuales y de referencia para componentes de vector de movimiento vertical. La figura 40 es un pseudocódigo para seleccionar vectores de movimiento de luminancia que contribuyan a los vectores de movimiento de crominancia para macrobloques de movimiento compensado de campos-P entrelazados. La figura 41 es un diagrama de flujo que muestra una técnica para derivar vectores de movimiento de crominancia desde los vectores de movimiento de Iuminancia para macrobloques de campos-P entrelazados. Las figuras 42 y 43 son diagramas de framework de codificador y framework de descodificador, respectivamente, en los que la compensación de intensidad se realiza para campos-P entrelazados. La figura 44 es una tabla que muestra los elementos de sintaxis para señalar patrones de campo de referencia de compensación de intensidad para campos-P entrelazados. Las figuras 45A y 45B son diagramas de flujo que muestran técnicas para realizar estimación de desvanecimiento al codificar y compensación de desvanecimiento al descodificar, respectivamente, para campos-P entrelazados. Las figuras 46A-46E son diagramas de sintaxis para capas de flujo de bits de conformidad con una primera implementación combinada. Las figuras 47A-47K son tablas para códigos en la primera implementación combinada. La figura 48 es un diagrama que muestra relaciones entre los campos actuales y de referencia para los componentes de vector de movimiento vertical en la primera implementación combinada. Las figuras 49A y 49B son pseudocódigo y una tabla respectivamente, para descodificar diferencial de vector de movimiento para campos-P entrelazados de campo de una referencia en la primera implementación combinada. La figura 50 es un pseudocódigo para descodificar información de diferencial de vector de movimiento y una selección de predictor dominante/no dominante para dos campos-P entrelazados de campo de referencia en la primera implementación combinada. Las figuras 51A y 51B son pseudocódigos para predicción de vector de movimiento para campos-P entrelazados de un campo de referencia en la primera implementación combinada. Las figuras 52A-52J son pseudocódigo y tablas para predicción de vector de movimiento para dos campos-P entrelazados de campo de referencia en la primera implementación combinada. Las Figuras 52K a la 52N son pseudocódigos y tablas para escalar operaciones que son alternativas a aquéllas que se muestran en las Figuras 52H a la 52J. La figura 53 es un pseudocódigo para la predicción de vector de movimiento híbrido para campos-P entrelazados en la primera implementación combinada. La figura 54 es un pseudocódigo para reconstrucción de vector de movimiento para campos-P entrelazados de dos campos de referencia en la primera implementación combinada. Las figuras 55A y 55B son pseudocódigos para derivación de vector de movimiento de crominancia para campos-P entrelazados en la primera ¡mplementación combinada. La figura 56 es un pseudocódigo para compensación de intensidad para campos-P entrelazados en la primera ¡mplementación combinada. Las figuras 57A-57C son diagramas de sintaxis para capas de un flujo de bits de conformidad con una segunda ¡mplementación combinada. Las figuras 58A y 58B son pseudocódigos y una tabla, respectivamente, para descodificación de diferencial de vector de movimiento para campos-P entrelazados de un campo de referencia en la segunda ¡mplementación combinada. La figura 59 es un pseudocódigo para descodificar información diferencial de vector de movimiento y una selección de predictor dominante/no dominante para campos-P entrelazados de dos campos de referencia en la segunda ¡mplementación combinada. Las figuras 60A y 60B son pseudocódigos para predicción de vector de movimiento para campos-P entrelazados de un campo de referencia en la segunda ¡mplementación combinada.
Las figuras 61A-61B son pseudocódigos para predicción de vector de movimiento para campos-P entrelazados de dos campos de referencia en la segunda implementación combinada. Breve Descripción de la Invención La presente aplicación se refiere a técnicas y herramientas para compresión y descompresión eficiente de video entrelazado. La compresión y descompresión del contenido de video entrelazado se han mejorado con varias técnicas y herramientas que son especialmente diseñadas para poder manejar las propiedades particulares de la representación de video entrelazado. En varias modalidades descritas, la codificación y descodificación de un video incorporan técnicas para codificar y descodificar campos pronosticados delantero entrelazados, junto con las correspondientes técnicas de señalización para uso con un formato de flujo de bits o compresión de sintaxis de diferentes capas o niveles (por ejemplo, nivel de secuencia, nivel de cuadro, nivel de campo, nivel de fragmento, nivel de macrobloque, y/o nivel de bloque). El contenido del video entrelazado se usa comúnmente en los sistemas de transmisión de video digital, ya sea por cable, satélite o DSL. Las técnicas y herramientas eficientes para comprimir y descomprimir contenido de video entrelazado son partes importantes de un codee de video.
Varias alternativas a las implementaciones descritas aquí son posibles. Por ejemplo, las técnicas descritas con referencia a los diagramas de flujo pueden ser alteradas cambiando el orden de las etapas que se muestran en los diagramas de flujo, repitiendo u omitiendo ciertas etapas, etc. Como otro ejemplo, aunque algunas implementaciones son descritas con referencia a formatos de macrobloque específicos, también pueden utilizarse otros formatos. Además, las técnicas y herramientas descritas con referencia a campos pronosticados delanteros entrelazados pueden ser también aplicables a otros tipos de cuadros. En varias modalidades, un codificador y descodif icador utilizan indicadores y/o señales en un flujo de bits. Mientras se describen indicadores y señales específicos, debe entenderse que esta manera de descripción comprende diferentes convenciones (por ejemplo, Os en lugar de 1s) para los indicadores y señales. Las diversas técnicas y herramientas pueden utilizarse en combinación o independientemente. Diferentes modalidades implementan una o más de las técnicas y herramientas descritas. Algunas técnicas y herramientas descritas aquí pueden utilizarse en un codificador o descodificador de video o en algún otro sistema no específicamente limitado a codificación y descodificación de video.
L Ambiente com utacional La figura 19 ilustra un ejemplo generalizado de un ambiente computacional adecuado (1900) en el que varias de las modalidades descritas pueden ser implementadas. El ambiente computacional (1900) no tiene la intención de sugerir ninguna limitación ni alcance de uso o funcionalidad, de cómo las técnicas y herramientas pueden ser implementadas en diversos ambientes computacionales de propósito general o propósito especial. Con referencia a la figura 19, el ambiente computacional (1900) incluye por lo menos una unidad de procesamiento (1910) y memoria (1920). En la figura 19, esta configuración más básica (1930) se incluye dentro de una línea con guión. La unidad de procesamiento (1910) ejecuta instrucciones ejecutables por computadora y puede ser un procesador real o virtual. En un sistema de multiprocesamiento, las unidades de multiprocesamiento ejecutan instrucciones ejecutables por computadora para incrementar la energía de procesamiento. La memoria (1920) puede ser memoria volátil (por ejemplo, registros, caché, RAM), memoria no volátil (por ejemplo, ROM, EEPROM, memoria de flash, etc.), o alguna combinación de las dos. La memoria (1920) almacena software (1980) implementando un codificador o descodificador de video. Un ambiente computacional (1900) incluye almacenamiento (1940), uno o más dispositivos de entrada (1950), uno o más dispositivos de salida (1960), y una o más conexiones de comunicación (1970). Un mecanismo de interconexión (no mostrado) como un bus, controlador o red interconecta los componentes del ambiente computacional (1900). Típicamente, el software del sistema operativo (no mostrado) brinda otro ambiente operativo para otro software ejecutando en el ambiente computacional (1900), y coordina actividades de los componentes del ambiente computacional (1900). El almacenaje (1940) puede ser removible o no removible, e incluye discos magnéticos, cintas o cassettes magnéticos, CD-ROMs, DVDs, o cualquier otro medio que pueda usarse para almacenar información en la que pueda accesarse dentro del ambiente computacional (1900). El almacenaje (1940) almacena instrucciones para el software (1980) que implementa la codificación y descodificación de video. El dispositivo(s) de entrada (1950) puede ser un dispositivo de entrada por toque como un teclado, mouse, pluma o bola de cursor, un dispositivo de entrada por voz, un dispositivo de escaneo u otro dispositivo que permita entrada al ambiente computacional (1900). Para codificación de audio o video, el dispositivo(s) de entrada (1950) puede ser una tarjeta de sonido, tarjeta de video, tarjeta de sintonizador de TV o dispositivo similar que acepte entrada de audio o video en forma analógica o digital, o un CD-ROM o CD-RW que lea muestras de audio o video en el ambiente computacional (1900). Los dispositivos(s) de salida (1960) pueden ser una pantalla, impresora, bocina, CD-writer u otro dispositivo que permita salida desde el ambiente computacional (1900). La conexión(es) de comunicación (1970) permiten la comunicación de un medio de comunicación a otra entidad computacional. El medio de comunicación conduce información como instrucciones ejecutables en computadora, entrada o salida de audio o video 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 ajustadas o cambiadas de tal manera que se codifique la información en la señal. A manera de ejemplo, y no limitación, los medios de comunicación incluyen técnicas alámbricas o inalámbricas implementadas con un portador eléctrico, óptico, RF, infrarrojo, acústico u otro. Las técnicas y herramientas pueden ser descritas en el contexto general de medios legibles en computadora. Dichos medios son cualquier medio disponible que pueda accesarse dentro de un ambiente computacional. A manera de ejemplo, y no limitado, con el ambiente computacional (1900), los medios legibles en computadora incluyen memoria (1920), almacenaje (1940), medios de comunicación y combinaciones de cualquier otro anterior. Las técnicas y herramientas pueden ser descritas en el contexto general de instrucciones ejecutables en computadora, como aquéllas incluidas en módulos de programa, que están siendo ejecutadas en un ambiente computacional en un procesador virtual o real objetivo. Generalmente, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, cuadros 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 programa como se desee en varias modalidades. Las instrucciones ejecutables en computadora para los módulos de programa pueden ser ejecutadas dentro de un ambiente computacional local o distribuido. Para la presentación, la descripción detallada usa términos como "estimar", "compensar", "predecir" y "aplicar" para describir operaciones en computadora en un ambiente computacional. Estos términos son abstracciones de alto nivel para operaciones realizadas por una computadora, y no deben confundirse con actos realizados por un ser humano. Las operaciones en computadora reales correspondientes a estos términos varían dependiendo de la ¡mplementación.
II. Codificador y descodif icador de video generalizado La figura 20 es un diagrama de bloque de un sistema codificador de video generalizado (2000), y la figura 21 es un diagrama de bloque de un sistema decodificador de video (2100), junto con el cual varias modalidades descritas pueden ser implementadas. Las relaciones mostradas entre los módulos dentro del codificador y descodificador indican el flujo principal de información del codificador y descodificador; otras relaciones no se muestran por simplicidad. En particular, las Figuras 20 y 21 por lo general no muestran información colateral indicando los ajustes, modos, tablas, etc. del codificador, utilizados para secuencia de video, cuadro, macrobloque, bloque, etc. Dicha información colateral se envía en el flujo de bits de salida, típicamente después de la codificación de entropía de la información colateral. El formato del flujo de bits de salida puede ser un Windows Media Video, versión 9 u otro formato. El codificador (2000) y descodificador (2100) procesan ^ cuadros de video que pueden ser cuadros de video, campos de video o combinaciones de cuadros y campos. La sintaxis y semántica de flujo de bits en el cuadro y niveles de macrobloque puede depender de si se utilizan los cuadros o campos. Puede haber cambios a organización de macrobloque y temporización general también. El codificador (2000) y decodificador (2100) son basados en bloque y usan un formato de macrobloque 4:2:0 para cuadros, con cada macrobloque incluyendo cuatro bloques de luminancia 8x8 (en momentos tratados como un macrobloque 16x16) y dos bloques de crominancia 8x8. Para los campos, pueden usarse los mismos o diferentes organización y formato de macrobloque. Los bloques 8x8 pueden subdividirse también en diferentes etapas, por ejemplo, en las etapas de resultado de frecuencia y codificación de entropía. Algunas organizaciones de cuadro de video se describen como ejemplo en la siguiente sección. Dependiendo de la implementación y del tipo de compresión deseada, los módulos del codificador y descodificador, se pueden añadir, omitir, dividir en diversos módulos, combinar con otros módulos, y/o reemplazar con módulos similares. En las modalidades alternativas, los codificadores y descodificadores con diferentes módulos y/u otras configuraciones de módulos realizan una o más de las técnicas descritas. A. Organizaciones de cuadro de video En algunas implementaciones, el codificador (2000) y descodificador (2100) procesan cuadros de video organizados como sigue. Un cuadro contiene líneas de información espacial de una señal de vídeo. Para el video progresivo, estas líneas contienen muestras que comienzan desde un instante de un tiempo y continúan a través de líneas sucesivas hacia la parte inferior del cuadro. Un cuadro de video progresivo se divide en macrobloques como el macrobloque (2200) mostrado en la figura 22. El macrobloque (2200) incluye cuatro bloques de luminancia 8x8 (Y1 a Y4) y dos bloques de crominancia 8x8 que son co-locados con los cuatro bloques de luminancia pero media resolución horizontalmente y verticalmente, siguiendo el formato de macrobloque convencional 4:2:0. Los bloques 8x8 pueden ser subdivididos posteriormente en diferentes etapas, por ejemplo, en el resultado de frecuencia (por ejemplo 8x4, 4x8 ó 4x4 DCTs) y etapas de codificación de entropía. Un cuadro-I progresivo es un cuadro de video progresivo intra-codificado. Un cuadro-P progresivp es un cuadro de video progresivo que utiliza predicción delantera, y un cuadro-B progresivo es un cuadro de video progresivo codificado que utiliza predicción bidireccional. Las cuadros-P y -B pueden incluir macrobloques intracodif icados además de diferentes tipos de macrobloques pronosticados. Un cuadro de video entrelazado consiste en dos escaneos de un cuadro - uno comprende las líneas pares del cuadro (el campo superior) y la otra comprende las líneas impares del cuadro (el campo inferior). Los dos campos pueden representar dos diferentes periodos o pueden ser del mismo periodo. La figura 23A muestra parte de un cuadro de video entrelazado (2300), incluyendo las líneas alternativas del campo superior y del campo inferior en la parte izquierda superior del cuadro de video entrelazado (2300). La figura 23B muestra el cuadro de video entrelazado (2300) de figura 23A organizada para codificar/descodificar como un cuadro (2300). El cuadro de video entrelazado (2300) se ha dividido en macrobloques como los macrobloques (2331) y (2332), que usan un formato 4:2:0 como se muestra en la figura 22. En el plano de luminancia, cada macrobloque (2331, 2332) incluye 8 líneas desde el campo superior alternando con 8 líneas desde el campo inferior para 16 líneas en total y cada línea tiene un largo de 16 pixeles. (La organización real y colocación de bloques de luminancia y bloques de crominancia dentro de los macrobloques (2331, 2332) no se muestran, y de hecho pueden variar para diferentes decisiones de codificación). Dentro de un macrobloque dado, la información de campo superior y la información de campo inferior pueden ser codificadas en conjunto o separadamente en cualquiera de las diversas fases. Un cuadro-l entrelazado es dos campos intra codificados de un cuadro de video entrelazado, en donde un macrobloque incluye información para los dos campos. Un cuadro-P entrelazado es dos campos de un cuadro de video entrelazado codificado que usa predicción delantera, y un cuadro-B entrelazado es dos campos de un cuadro de video entrelazado codificada que usa predicción bidireccional, en donde un macrobloque incluye información para los dos campos. Las cuadro P y -B entrelazados pueden incluir macrobloques intracodificados además de diferentes tipos de macrobloques pronosticados. La figura 23C muestra el cuadro de video entrelazado (2300) de la figura 23A organizada para codificar/descodificar como campos (2360). Cada uno de los dos campos de cuadro de video entrelazado (2300) se divide en macrobloques. El campo superior se divide en macrobloques como el macrobloque (2361), y el campo inferior se divide en macrobloques como el macrobloque (2362). (Otra vez, los macrobloques usan un formato 4:2:0 como se muestra en la figura 22, y la organización y colocación de bloques de luminancia y bloques de crominancia dentro de los macrobloques no se muestran). En el plano de luminancia, el macrobloque (2361) incluye 16 líneas desde el campo superior y el macrobloque (2362) incluye 16 líneas desde el campo inferior, y cada línea tiene un largo de 16 pixeles. Un campo-l entrelazado es un campo representado separadamente único de un cuadro de video entrelazado codificado que utiliza predicción delantera, y un campo-B entrelazado es un campo representado separadamente, único de un cuadro de video entrelazado codificado que usa predicción bidireccional. Los campos -P y -B pueden incluir macrobloques intracodif icados además de diferentes tipos de macrobloques predecidos. El término cuadro generalmente se refiere a datos de imagen de fuente, codificados o reconstruidos. Para un video progresivo, un cuadro es un cuadro de video progresivo. Para el video entrelazado, un cuadro puede referirse a un cuadro de video entrelazado, el campo superior del cuadro, el campo inferior del cuadro, dependiendo del contexto. Alternativamente, el codificador (2000) y descodificador (2100) se basan en objeto, usan un formato de macrobloque o bloque diferente o realizan operaciones en conjuntos de pixeles de diferente tamaño o configuración que los bloques 8x8 y los macrobloques 16x16. B. Codificador de video La figura 20 es un diagrama de bloque de un sistema codificador de video generalizado (2000). El sistema de codificador (2000) recibe una secuencia de cuadros de video incluyendo un cuadro actual (2005) (por ejemplo, cuadro de video progresivo, cuadro de video entrelazado, o campo de un cuadro de video entrelazado), y produce información de video comprimido (2095) como salida. Las modalidades particulares de codificadores de video típicamente utilizan una variación o versión de suplemento del codificador generalizado (2000). El sistema codificador (2000) comprende cuadros pronosticados y cuadros clave. Para la presentación, la figura 20 muestra un trayecto para cuadros clave a través del sistema codificador (2000) y un trayecto para cuadros pronosticados delantero. Varios de los componentes del sistema codificador (2000) se utilizan para comprimir ambos cuadros clave y cuadros pronosticados. Las operaciones exactas realizadas por estos componentes pueden variar dependiendo del tipo de información que se esté comprimiendo. Un cuadro pronosticado (también denominado cuadro-p, cuadro-b para predicción bi-direccional, o cuadro ínter código) se representa en términos de predicción (o diferencia) desde uno o más de los otros cuadros. Un residual de predicción es la diferencia entre lo que se pronosticó y el cuadro original. En contraste, un cuadro clave (también denominado un cuadro-l o cuadro intra-codificado) se comprime sin referencia para otros cuadros. Si el cuadro actual (2005) es un cuadro pronosticado delantero, un estimador de movimiento (2010) estima el movimiento de macrobloques u otros conjuntos de pixeles del cuadro actual (2005) con respecto al cuadro de referencia, que es un cuadro previo reconstruido (2005) en búfer en el almacenaje de cuadros (2020). En modalidades alternativas, el cuadro de referencia es un cuadro posterior o el cuadro actual es pronosticado bidireccionalmente. El estimador de movimiento (2010) puede estimar movimiento por pixel, 1/2 pixel, 1/4 pixel, u otros incrementos, y puede cambiar la precisión de la estimación de movimiento en una base cuadro por cuadro u otra base. La precisión de la estimación de movimiento puede ser la misma o diferente horizontalmente y verticalmente. El estimador de movimiento (2010) produce como información lateral información de movimiento (2015) como vectores de movimiento. Un compensador de movimiento (2030) aplica la información de movimiento (2015) para el cuadro previo reconstruido (2025) para formar un cuadro actual compensado por movimiento (2035). No obstante, la predicción es raramente perfecta, y la diferencia entre el cuadro actual de movimiento compensado (2035) y el cuadro actual original (2005) es la predicción residual (2045). Alternativamente, un estimador de movimiento y compensador de movimiento aplican otro tipo de estimación/compensación de movimiento. Un transformador de frecuencia (2060) convierte la información de video de dominio espacial en datos de dominio de frecuencia (por ejemplo, espectral). Para películas de video basadas en bloque, el transformador de frecuencia (2060) aplica un DCT o variante de DCT para bloques de datos de pixel o datos residuales de predicción, produciendo bloques de coeficientes DCT. Alternativamente, el transformador de frecuencia (2060) aplica otro resultado de frecuencia convencional como un resultado Fourier o usa análisis wavelet o de subbanda. El transformador de frecuencia (2060) aplica un 8x8, 8x4, 4x8, o resultados de frecuencia de otro tamaño (por ejemplo, DCT) a residuales de predicción para películas pronosticadas. Un cuantificador (2070) cuantifica entonces los bloques de coeficientes de datos espectrales. El cuantificador aplica cuantificación uniforme, escalar a los datos espectrales con un tamaño de un paso que varía en una base película por película 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 adaptativa, o cuantifica directamente los datos de dominio espacial en un sistema codificador que no usa transformaciones de frecuencia. Además de la cuantificación adaptativa, el codificador (2000) puede usar desconexión de estructura, filtración adaptativa u otras técnicas para control de clasificación. Si un macrobloque dado en una película pronosticada no tiene información de ciertos tipos (por ejemplo, ninguna información de movimiento para el macrobloque ni ninguna información residual) el codificador (2000) puede codificar el macrobloque como un macrobloque saltado. Si es así, el codificador señala el macrobloque saltado en el flujo de bits de salida de la información de video comprimido (2095). Cuando una película actual reconstruida es necesaria para estimación/compensación de movimiento subsecuente, un cuantificador inverso (2076) realiza cuantificación inversa en los coeficientes de datos espectrales cuantificados. Un transformador de frecuencia inversa (2066) realiza entonces el inverso de las operaciones del transformador de frecuencia (2060), produciendo un residual de predicción reconstruido (para una película pronosticada) o muestras reconstruidas (para una película intra codificada). Si la película (2005) que se está codificando es una película intra codificada, entonces las muestras reconstruidas forman la película actual reconstruida (no mostrada). Si la película (2005) que se está codificando es una película pronosticada, el residual de predicción reconstruido se agrega a las predicciones compensadas por movimiento (2035) para formar la película actual reconstruida. La película almacena en memoria intermedia (2020) la película actual reconstruida para usar en pronosticar una siguiente película. En algunas modalidades, el codificador aplica un filtro de desbloqueo a la estructura reconstruida para suavizar partes discontinuas entre los bloques de la estructura. El codificador de entropía (2080) comprime la salida del cuantificador (2070) además de cierta información colateral (por ejemplo, información de movimiento (2015), 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 Huffman, codificación de longitud de ejecución, codificación LZ, codificación de diccionario, y combinaciones de las anteriores. El codificador de entropía (2080) usa típicamente diferentes técnicas de codificación para diferentes tipos de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes tipos de información colateral), y puede elegir entre múltiples tablas de código dentro de una técnica de codificación particular. El codificador de entropía (2080) coloca la información de video (2095) en la memoria intermedia (2090). Un indicador de nivel de memoria intermedia se vuelve a alimentar para clasificar bits de módulos adaptativos. La información de video comprimido se reduce de la memoria intermedia (2090) en una clasificación de bits constante o relativamente constante y se almacena para subsecuente flujo en esa clasificación de bits. Por lo tanto, el nivel de memoria intermedia (2090) es principalmente una función de la entropía de la información en video cuantif icada , filtrada, que afecta la eficiencia de la codificación de entropía. Alternativamente, el sistema codificador (2000) hace fluir la información de video comprimida inmediatamente siguiendo la compresión, y el nivel de la memoria intermedia (2090) también depende de la clasificación en la que la información sea reducida desde la memoria intermedia (2090) para la transmisión. Antes o después de la memoria intermedia (2090), la información de video comprimido puede codificarse en canal para transmitirse en la red. La codificación de canal puede aplicar detección de error y datos de corrección a la información de video comprimido (2095). C. Descodif icador de video La figura 21 es un diagrama de bloque de un sistema de descodificador de video general (2100). El sistema descodificador (2100) recibe información (2195) para una secuencia comprimida de películas de video y produce salida incluyendo una película reconstruida (2105) (por ejemplo, estructura de video progresiva, estructura de video entrelazado, o campo de una estructura de video entrelazado). Las modalidades particulares de descodificadores de video usan típicamente una variación o versión suplemento del descodificador generalizado (2100). El sistema descodificador (2100) descomprime películas pronosticadas y películas clave. Para la presentación, la figura 21 muestra un trayecto para películas clave a través del sistema descodificador (2100) y un trayecto para películas pronosticadas delantero. Varios de los componentes del sistema descodificador (2100) se utilizan para descomprimir tanto películas clave como películas pronosticadas. Las operaciones exactas realizadas por esos componentes pueden variar dependiendo del tipo de información que se esté descomprimiendo. Un memoria intermedia (2190) recibe información (2195) para la secuencia de video comprimido y tiene disponible la información recibida para el descodificador de entropía (2180). La memoria intermedia (2190) recibe típicamente la información en una clasificación que es completamente constante en el tiempo e incluye una memoria intermedia de fluctuación de fase para uniformar variaciones a corto término en anchura de banda o transmisión. La memoria intermedia (2190) puede incluir una memoria intermedia de reproducción y otras memorias intermedias además. Alternativamente, la memoria intermedia (2190) recibe información en una clasificación variable. Antes o después de la memoria intermedia (2190), la información de video comprimido puede ser descodificada y procesada por el canal para detección y corrección. El descodificador de entropía (2180) descodifica entropía de datos cuantificados de entropía codificada además de información colateral de entropía codificada (por ejemplo, información de movimiento (2115), tamaño de paso de cuantificación), aplicando típicamente el inverso 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 Huffman, descodificación de longitud de ejecución, descodificación LZ, descodificación de diccionario, y combinaciones de las anteriores. El descodificador de entropía (2080) usa frecuentemente diferentes técnicas de descodificación para diferentes tipos de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes tipos de información colateral), y puede elegir entre múltiples tablas de código dentro de una técnica de descodificación particular. Si la película (2105) que se va reconstruir es una película pronosticada delantero, un compensador de movimiento (2130) aplica información de movimiento (2115) a una película de referencia (2125) para formar una predicción (2135) de la película (2105) que se va a reconstruir. Por ejemplo, el compensador de movimiento (2130) usa un vector de movimiento de macrobloque para encontrar un macrobloque en la película de referencia (2125). Una memoria intermedia de película (2120) almacena películas reconstruidas previas para usar como películas de referencia. El compensador de movimiento (2130) puede compensar movimiento a pixel, ½ pixel, ¼ pixel, u otros incrementos, y puede cambiar la precisión de la compensación de movimiento en una base película por película u otra base. La precisión de la compensación de movimiento puede ser la misma u horizontalmente y verticalmente diferente. Alternativamente, un compensador de movimiento aplica otro tipo de compensación de movimiento. La predicción mediante compensador de movimiento es raramente perfecta, de manera que el descodificador (2100) también reconstruye residuos de predicción. Cuando el descodificador necesita una película reconstruida para compensación de movimiento subsecuente, el almacenamiento de película almacena (2120) en memoria intermedia la película reconstruida para usarse al predecir la siguiente película. En algunas modalidades, el codificador aplica un filtro desbloqueador para la estructura reconstruida para uniformar adaptativamente las discontinuidades entre los bloques de la película. Un cuantificador inverso (2170) cuantifica de manera inversa los datos de entropía descodificada. En general, el cuantificador inverso aplica cuantificación inversa uniforme, inversa escalar a los datos de entropía descodificada con un tamaño de un paso que varía en una base película por película u otra base. Alternativamente, el cuantificador inverso aplica otro tipo de cuantificación inversa a los datos, por ejemplo, un vector no uniforme, o una cuantificación inversa no adaptativa, o cuantifica de manera inversa directamente los datos de dominio espacial en un sistema descodificador que no usa transformaciones de frecuencia. Un transformador de frecuencia inversa (2160) convierte la información de video de dominio espacial en información de video de dominio espacial. Para películas de video basadas en bloque, el transformador de frecuencia inversa (2160) aplica un IDCT o variante de IDCT para bloques de coeficientes DCT, producción de datos de pixel o predicción de datos residuales para películas clave o películas pronosticadas, respectivamente. Alternativamente, el transformador de frecuencia (2160) aplica otro resultado de frecuencia inverso convencional como un resultado Fourier o usa síntesis wavelet o de subbanda. El transformador de frecuencia inversa (2160) aplica un 8x8, 8x4, 4x8, o resultados de frecuencia inversa de otro tamaño (por ejemplo, IDCT) a residuales de predicción para películas pronosticadas. III. Campos-P entrelazados y estructuras-P entrelazadas Una estructura de video entrelazado típica consiste en dos campos (por ejemplo, un campo superior y un campo inferior) escaneados en diferentes tiempos. En general, es más eficiente codificar regiones estacionarias de una estructura de video entrelazado al codificar campos juntos (codificación "modo estructura"). Por otro lado, con frecuencia es más eficiente codificar regiones de movimiento de una estructura de video entrelazado codificando campos separadamente codificación "modo campo"); ya que los dos campos tienden a tener movimiento diferente. Una estructura de video entrelazado pronosticado delantero puede codificarse como dos campos pronosticados delantero separados -campos entrelazados. Codificar campos separadamente para una estructura de video entrelazado pronosticado delantero puede ser eficiente, por ejemplo, cuando hay movimiento a través de estructuras de video entrelazado, y por lo tanto mucha diferencia entre los campos. O, la estructura de video entrelazado puede codificarse usando una combinación de codificación de campo y codificación de estructura, como una estructura-P entrelazada. Para macrobloque de una estructura-P entrelazada, el macrobloque incluye líneas de pixeles para los campos superior e inferior, y las líneas pueden codificarse colectivamente en modo decodificación de estructura o separadamente en un modo de codificación de campo. Un campo-P entrelazado referencia uno o más campos descodificados previamente. Por ejemplo, en algunas implementaciones, un campo-P entrelazado referencia entre uno o dos campos previamente descodificados, mientras que los campos-B entrelazados se refieren hasta a campos de dos referencias previos y campos de dos referencias futuros (por ejemplo, hasta un total de cuatro campos de referencia). (Las técnicas para codificar y descodificar campos-P entrelazados se describen en detalle a continuación). O, para mayor información acerca de los campos-P entrelazados y campos-P entrelazados de dos referencias en particular, de acuerdo con algunas modalidades, véase la Aplicación de Patente E.U.A. No. de serie 10/857, 473, con título "Predicción de vectores de movimiento para campos de estructuras de video entrelazado pronosticado delantero", archivada el 27 de mayo de 2004. IV. Número de campos de referencia en campos-P entrelazados En algunas modalidades, dos campos previamente codificados/descodificados pueden usarse como campos de referencia cuando se realice predicción de movimiento compensado de un campo-P entrelazado actual, único. En general, la capacidad de utilizar campos de dos referencias da como resultado mejor eficiencia de comprensión que cuando la predicción de movimiento compensado se limita a un campo de una referencia. La sobrecarga de señalización es mayor cuando campos de dos referencias están disponibles, no obstante, ya que la información extra se envía para indicar cuál de los dos campos brinda la referencia para cada macrobloque o bloque que tiene un vector de movimiento. En ciertas situaciones, el beneficio de tener más predictores de compensación de movimiento potencial por vector de movimiento (campos de dos referencias contra un campo de una referencia) no vale más que la sobrecarga requerida para señalar las selecciones de campo de referencia. Por ejemplo, elegir usar un campo de una referencia en lugar de dos puede ser ventajoso cuando todas las mejores referencias vienen de uno de los dos posibles campos de referencia. Por lo general esto se debe a un cambio en la escena que provoca que sólo uno de los campos de dos referencias sea de la misma escena que el campo actual. O, sólo un campo de una referencia puede estar disponible, como al principio de una secuencia. En estos casos, resulta más eficiente señalar en el nivel de campo para el campo-P actual que sólo un campo de una referencia se usa y lo que es ese campo de referencia, y para que esa decisión aplique a los macrobloques y bloques dentro del campo-P actual. La información de selección de campo de referencia ya no necesita ser enviada con cada macrobioque o bloque que tenga un vector de movimiento. A. Números de campos de referencia en diferentes esquemas Un esquema permite que dos campos previamente codificados/descodificados se usen como campos de referencia para el campo-P actual. El campo de referencia que usa un vector de movimiento (para un macrobioque o bloque) se señala para el vector de movimiento, ya que es otra información para el vector de movimiento. Por ejemplo, para un vector de movimiento, la información señalada indica: (1) el campo de referencia; y (2) la ubicación en el campo de referencia para el predictor de bloque o de macrobloque para el bloque o macrobloque asociado con el vector de movimiento. O, la información del campo de referencia y la información del vector de movimiento se señalan como se describe en una de las implementaciones combinadas en la sección XII. En otro esquema, sólo el campo previamente codificado/descodificado se usa como un campo de una referencia para el campo-P actual. Para un vector de movimiento, no hay necesidad de indicar el campo de referencia que referencia el vector de movimiento. Por ejemplo, para un vector de movimiento, la información señalada sólo indica la ubicación en el campo de referencia para el predictor para el bloque o macrobloque actual asociado con el vector de movimiento. O, la información del vector de movimiento se señala como se describe en una de las implementaciones combinadas en la sección XII. Los vectores de movimiento en el esquema de campo de una referencia son típicamente codificados con menos bits que los mismos vectores de movimiento en el esquema de campo de dos referencias. Para cualquier esquema, actualizar la memoria intermedia o almacenamientos de película para los campos de referencia para compensación de movimiento subsecuente es simple. El campo o campos de referencia para el campo-P actual son uno o ambos de los más recientes o segundos más recientes campos-l o -P antes del campo-P actual. Como las posiciones de los campos de referencia candidato son conocidas, un codificador y descodificador puede automáticamente y sin señales de manejo de memoria intermedia actualizar la memoria intermedia de película de referencia para compensación de movimiento del siguiente campo-P. Alternativamente, un codificador y descodificador usa uno o más esquemas adicionales para números de campos de referencia para campos-P entrelazados. B. Ejemplos de señalización Los ejemplos específicos de señalización, descritos en esta sección y en las implementaciones combinadas en la sección XII, señalan cuántos campos de referencia se usan para un campo-P y, cuándo se usa un campo de una referencia, qué campo de referencia candidato se está usando. Por ejemplo, un campo de un bit (llamado NU REF) en un encabezado campo-P indica si el campo-P usa uno o dos campos previos como referencias. Si NUMREF = 0, entonces sólo se usa el campo de referencia. Si NUMREF = 1, entonces se usan campos de dos referencias. Si NUMREF = 0, entonces otro campo de un bit (denominado REFFIELD) está presente e indica cuál de los dos campos se usa como la referencia. Si REFF1ELD = O, entonces el campo más cercano temporalmente se usa como un campo de una referencia. Si REFFIELD = 1, entonces el temporalmente más lejano de los campos de dos referencias candidato se usa como el campo de referencia para el campo-P actual. Alternativamente, el codificador y descodificador usa otra y/o señal adicional para selección de campo de referencia. C. Posiciones de campos de referencia Las figuras 24A - 24F ¡lustran posiciones de campos de referencia disponibles para usarse en predicción . de movimiento compensado para campos-P entrelazados. Un campo-P puede usar ya sea uno o dos campos previamente codificados/descodificados como referencias. Especialmente, las figuras 24A - 24F muestran ejemplos de campos de referencia para NUMREF = 0 y NUMREF = 1. Las figuras 24A y 24F muestran ejemplos en donde se usan campos de dos referencias para un campo-P actual (NUMREF = 1.). En la figura 24A, el campo actual se refiere al campo superior y campo inferior en una estructura de video entrelazado previa. Los campos-B intermedios no se usan como campos de referencia. En la figura 24B, el campo actual se refiere al campo superior y al campo inferior en una estructura de video entrelazado inmediatamente antes de la estructura de video entrelazado que contiene el campo actual. Las figuras 24C y 24D muestran ejemplos en donde un campo de una referencia se usa para un campo-P actual (NUMREF = 0), y el campo de una referencia es el campo de referencia más reciente temporalmente (REFFIELD = 0). La polaridad del campo de referencia es opuesta a la polaridad del campo-P actual, lo que significa, por ejemplo, que si el campo-P actual es de líneas pares, entonces el campo de referencia es de líneas impares. En la figura 24-C, el campo actual se refiere a un campo final en una estructura de video entrelazado previa, y no se refiere a campo superior menos reciente en la estructura de video entrelazado. Otra vez, los campos-B entrelazados no son campos de referencia permisibles. En la figura 24D, el campo actual se refiere a campo inferior en una estructura de video entrelazada inmediatamente antes de la estructura de video entrelazada que contenga el campo actual, en lugar del campo superior menos reciente. Las figuras 24E y 24F muestran ejemplos en donde un campo de una referencia se usa para un campo-P actual (NUMREF = 0), y el campo de una referencia es el segundo campo de referencia más reciente temporalmente (REFFIELD = 1). La polaridad del campo de referencia es la misma que la polaridad del campo actual, lo que significa, por ejemplo, que si el campo actual es de líneas pares, entonces el campo de referencia es también de líneas pares. En la figura 24-E, el campo actual se refiere a un campo superior en una estructura de video entrelazado previa temporalmente, pero no se refiere al campo inferior más reciente. Otra vez, los campos-B entrelazados intermedios no son campos de referencia permisibles. En la figura 24F, el campo actual se refiere al campo superior, en lugar del campo inferior mas reciente. Alternativamente, un codificador y descodificador usan campos de referencia en otra y/o posiciones adicionales o temporización para predicción de movimiento compensado para campos-P entrelazados. Por ejemplo, los campos de referencia dentro de la misma estructura que un campo-P actual están permitidos. O, ya sea el campo superior o el campo inferior de una estructura pueden ser codificados/descodificados primero. D. Técnicas de codificación Un codificador como el codificador (2000) en la figura 20 señala cuál de los esquemas de campo de referencia múltiple se usa para codificar campos-P entrelazados. Por ejemplo, el codificador realiza la técnica (2500) mostrada en la figura 25A. Para un campo-P entrelazado dado, el codificador señala (2510) el número de campos de referencia que se utilizan en predicción de movimiento compensado para el campo-P entrelazado. Por ejemplo, el codificador usa un solo bit para indicar si se usan campos de una o de dos referencias. Alternativamente, el codificador usa otro mecanismo de señalización/codificación par el número de campos de referencia. El codificador determina (2520) si se usan campos de una o dos referencias. Si se usa un campo de una referencia, el codificador señala (2530) una selección de campo de referencia para campo-P entrelazado. Por ejemplo, el codificador usa un solo bit para indicar si se usa temporalmente el campo de referencia más reciente o temporalmente el segundo campo de referencia más reciente (campo-P o -I previo). Alternativamente, el codificador usa otro mecanismo de señalización/codificación para la selección del campo de referencia para el campo-P. Si se usan campos de dos referencias, el codificador señala (2540) una selección de campo de referencia para un vector de movimiento de un bloque, macrobloque, u otra parte del campo-P entrelazado. Por ejemplo, el codificador codifica juntamente una selección de campo de referencia para un vector de movimiento con información de vector de movimiento para el vector de movimiento. Alternativamente, el codificador usa otro mecanismo de señalización/codificación para la selección del campo de referencia para un vector de movimiento. El codificador repite (2545, 2540) la señalización para el siguiente vector de movimiento hasta que no hay más señales de vector que señalar para el campo-P. (Para simplificar, la figura 25A no muestra las diversas etapas de la codificación de macrobloque o bloque ni la señalización correspondiente que puede ocurrir después o alrededor de la señalización (2540) de la selección de un campo de una referencia. Por el contrario, la figura 25A se enfoca en la señalización repetida de las selecciones de campo de referencia para diversos vectores de movimiento en el campo- P). Alternativamente, el codificador realiza otra técnica para indicar cuál de los múltiples esquemas de referencia se usa para codificar campos-P entrelazados. Por ejemplo, el codificador tiene más y/o diferentes opciones para el número de campos de referencia. Para simplificar, la figura 25A no muestra las diversas maneras en las que la técnica (2500) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. E. Técnicas de descodificación Un descodificador como el descodificador (2100) de la figura 21 recibe y descodifica señales que indican cuál de los múltiples esquemas se debe usar para descodificar campos-P entrelazados. Por ejemplo, el descodificador realiza la técnica (2550) que se muestra en la figura 25B. Para un campo-P entrelazado dado, el descodificador recibe y descodifica (2560) una señal para el número de campos de referencia usados en predicción de movimiento compensado para campo-P entrelazado. Por ejemplo, el descodificador recibe y descodifica un bit único para indicar si se usan campos de una o dos referencias. Alternativamente, el descodificador usa otro mecanismo de descodificación para el número de campos de referencia. El descodificador determina (2570) si se usan campos de una o dos referencias. Si se usa un campo de una referencia, el descodificador recibe y descodifica (2580) una señal para una selección de campo de referencia para campo-P entrelazado. Por ejemplo, el descodificador recibe y descodifica un bit único para indicar si se usa temporalmente el campo de referencia más reciente o temporalmente el segundo campo de referencia más reciente (campo-P o -l previo). Alternativamente, el descodificador usa otro mecanismo de descodificación para la selección del campo de referencia para el campo-P. Si se usan campos de dos referencias, el descodificador recibe y descodifica (2590) una señal para una selección de campo de referencia para un vector de movimiento de un bloque, macrobloque, u otra parte del campo-P entrelazado. Por ejemplo, el descodificador descodifica una selección de campo de referencia para un vector de movimiento juntamente codificado con información de vector de movimiento diferencial para el vector de movimiento. Alternativamente, el descodificador usa otro mecanismo de descodificación para la selección del campo de referencia para un vector de movimiento. El descodificador repite (2595, 2590) la recepción y descodificación para el siguiente vector de movimiento hasta que no hay más vectores de movimiento señalados para el campo-P. (Para simplificar, la figura 25B no muestra las diversas etapas de la descodificación de macrobloque o bloque que pueden ocurrir después o alrededor de la recepción y descodificación (2590) de la selección de un campo de una referencia. Por el contrario, la figura 25B se enfoca en la recepción/descodificación repetida de las selecciones de campo de referencia para diversos vectores de movimiento en el campo-P). Alternativamente, el descodificador realiza otra técnica para determinar cuál de los múltiples esquemas de campo de referencia se usa para descodificar campos-P entrelazados. Por ejemplo, el descodificador tiene más y/o diferentes opciones para el número de campos de referencia. Para simplificar, la figura 25B no muestra las diversas maneras en las que la técnica (2550) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII.
V. Señalización de información de modo de macrobloque para campos-P entrelazados En algunas modalidades, bastante de la información de modo de macrobloque para macrobloques de campos-P entrelazados se agrupa conjuntamente para señalización. Un macrobloque de un campo-P entrelazado puede ser codificado en varios modos diferentes, con cualquiera de los varios elementos de sintaxis diferentes presentes o ausentes. En particular, el tipo de compensación de movimiento (por ejemplo, 1MV, 4MV o intra), ya sea que el patrón de bloque codificado esté presente en el flujo de bits para el macrobloque, y (para el caso 1MV) ya sea que los datos de vector de movimiento estén presentes en el flujo de bits para el macrobloque, se codifican conjuntamente. Pueden usarse diferentes tablas de código para diferentes escenarios para la información de modo de macrobloque, que da como resultado compresión general de información más eficiente. Ejemplos específicos de señalización, descritos en esta sección y en las implementaciones combinadas en la sección XII, señalan información de modo de macrobloque con un elemento de sintaxis MBMODE de longitud variable. La selección de tabla para MBMODE se señala a través de un elemento de nivel de campo MBMODETAB, que es de longitud fija codificada. Alternativamente, un codificador y descodificador usan otras y/o adicionales señales para señalar información de modo de macrobloque. A. Modos de macrobloque para diferentes tipos de campos-P entrelazados En general, el modo de macrobloque indica el tipo de macrobloque (1MV, 4MV o intra), la presencia/ausencia de un patrón de bloque codificado, y la presencia/ausencia de datos de vector de movimiento para el macrobloque. La información indicada por el elemento de sintaxis de modo del macrobloque depende de si el campo-P entrelazado es codificado como un campo 1MV (teniendo macrobloques intra y/o 1MV) o como un campo M V-combinado (teniendo macrobloques intra, 1MV y/o 4 V). En un campo-P entrelazado 1MV, el elemento de modo macrobloque para un macrobloque representa conjuntamente el tipo de macrobloque (intra o 1MV), la presencia/ausencia de un elemento de patrón de bloque codificado para el macrobloque, y la presencia/ausencia de datos del vector de movimiento (cuando el tipo de macrobloque es 1 V, pero no cuando es intra). La tabla en la figura 26 muestra el espacio de evento completo para la información de macrobloque señalada mediante MBMODE en campos-P entrelazados. En un campo-P entrelazado MV-combinado el elemento de modo macrobloque para un macrobloque representa conjuntamente el tipo de macrobloque (intra o 1 MV o 4MV), la presencia/ausencia de un patrón de bloque codificado para macrobloque, y la presencia/ausencia de datos de vector de movimiento (cuando el tipo de macrobloque es 1MV, pero no cuando es intra o 4MV). La tabla en la figura 27 muestra el espacio de evento completo para información de macrobloque señalada por MBMODE en campos-P entrelazados MV-combinados. Si el modo macrobloque indica que los datos de vector de movimiento están presentes, entonces los datos de vector de movimiento están presentes en la capa del macrobloque y señalan el diferencial del vector de movimiento, que se combina con el predictor de vector de movimiento para reconstruir el vector de movimiento. Si el elemento de modo macrobloque indica que los datos de vector de movimiento no están presentes, entonces el diferencial del vector de movimiento se asume como cero, y por lo tanto el vector de movimiento es igual al predictor de vector de movimiento. Así, el elemento de modo de macrobloque señala eficientemente cuándo se va a usar la compensación de movimiento con sólo un predictor de vector de movimiento (no modificado por ningún diferencial de vector de movimiento). Una de las múltiples tablas diferentes VLC se usó para señalar el elemento de modo de macrobloque para un campo-P entrelazado. Por ejemplo, ocho diferentes tablas de código para MBMODE para macrobloques de campos-P entrelazados M V-combinados se muestran en la figura 47H, y ocho diferentes tablas de códigos para MBMODE para macrobloques de campos-P entrelazados 1MV se muestran en la figura 471. La selección de tabla se indica mediante un elemento MBMODETAB señalado en la capa de campo. Alternativamente, un codificador, descodificador usa otros y/o códigos adicionales para señalar la información del modo de macrobloque y las selecciones de tabla. B. Técnicas de codificación Un codificador como el codificador (2000) de la figura 20 codifica la información de modo de macrobloque para macrobloques de campos-P entrelazados. Por ejemplo, el codificador realiza la técnica (2800) que se muestra en la figura 28A. Para un campo-P entrelazado dado, el codificador selecciona (2810) la tabla de código que se va a usar para codificar la información de modo de macrobloque para macrobloques de campo-P entrelazado. Por ejemplo, el codificador selecciona una de las tablas VLC para el MBMODE mostrado en la figura 47H o 47I. Alternativamente, el codificador selecciona entre otras y/o tablas adicionales. El codificador señala (2820) la tabla de código seleccionada en el flujo de bits. Por ejemplo, el codificador señala un FLC que indica la tabla de código seleccionada, dado el tipo de campo-P entrelazado. Alternativamente, el codificador usa un mecanismo de señalización diferente para la selección de tabla de código, por ejemplo, usando un VLC para la selección de tabla de código. El codificador selecciona (2830) el modo macrobloque para un macrobloque de entre múltiples modos de macrobloque disponibles. Por ejemplo, el codificador selecciona un modo de macrobloque que indica un tipo de macrobloque, ya sea que un patrón de bloque codificado esté presente o no, y (si es aplicable para el tipo de macrobloque) si los datos del vector de movimiento están presentes. Varias combinaciones de opciones para MBMODE están enlistadas en las Figuras 26 y 27. Alternativamente, el codificador selecciona de entre otros y/o modos de macrobloques adicionales para otras y/o combinaciones adicionales de opciones de macrobloques. El codificador señala 2840) el modo de macrobloque seleccionado usando la tabla de código seleccionado. Típicamente, el codificador señala el modo de macrobloque como un VLC que usa una tabla VLC seleccionada. El codificador repite (2845, 2830, 2840) la selección y señalización del modo macrobloque hasta que no hay más modos de macrobloque que señalar para el campo-P. (Para simplificar, la figura 28A no muestra las varias etapas de macrobloque y codificaión de bloque y señalización correspondiente que puede ocurrir después o alrededor de la señalización (2840) del modo macrobloque seleccionado. Por el contrario, la figura 28A se enfoca en la señalización repetida de modos de macrobloque para macrobloques en el campo-P usando la tabla de código seleccionado para el campo-P). Alternativamente, el codificador realiza otra técnica para codificar información del modo macrobloque para macrobloques de campos-P entrelazados. Por ejemplo, aunque la figura 28A muestra la selección de tabla de código antes de la selección de modo, en varios escenarios comunes, el codificador selecciona primero los modos de macrobloque para los macrobloques, después selecciona una tabla de código para señalar eficientemente aquellos modos de macrobloque señalados, después señala la selección de tabla de código y los modos. Más aun, aunque la figura 28A muestra la selección de tabla de código que ocurre por campo-P entrelazado, alternativamente la tabla de código se selecciona en una base más frecuente, menos frecuente o no periódica, o el codificador salta la selección de tabla de código completamente (siempre usando la misma tabla de código). O, el codificador puede seleccionar una tabla de código de la información contextual (haciendo innecesaria la señalización de selección de tabla de código). Para simplificar, la figura 25A no muestra las diversas maneras en las que la técnica (2800) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. C. Técnicas de descodificación Un descodificador como el descodificador (2100) de la figura 21 recibe y descodifica la información de modo de macrobloque para macrobloques de campos-P entrelazados. Por ejemplo, el descodificador realiza la técnica (2850) que se muestra en la figura 28B. Para un campo-P entrelazado dado, el descodificador recibe y descodifica (2860) una selección de tabla de código que se va a usar para descodificar la información de modo de macrobloque para macrobloques de campo-P entrelazado. Por ejemplo, el descodificador recibe y descodifica una FLC indicando la tabla de código seleccionado, dado un tipo de campo-P entrelazado. Alternativamente, el descodificador funciona con un diferente mecanismo de señalización para la selección de tablas de código, por ejemplo, una que usa un VLC para la selección de tabla de código. El descodificador selecciona (2870) la tabla de código basada en la selección de tabla de código descodificada (y potencialmente otra información). Por ejemplo, el descodificador selecciona una de las tablas VLC para el MBMODE mostrado en la figura 47H o 47I. Alternativamente, el descodificador selecciona de entre otras y/o tablas adicionales.
El descodificador recibe o descodifica (2880) una selección de modo macrobloque para un macrobloque. Por ejemplo, la selección de modo de macrobloque indica un tipo de macrobloque, ya sea que un patrón de bloque codificado esté presente, y (si es aplicable para el tipo de macrobloque) si los datos del vector de movimiento están presentes o no. Varias combinaciones de estas opciones para MBMODE están enlistadas en las Figuras 26 y 27. Alternativamente, el modo macrobloque es uno de otro y/o modos de macrobloques adicionales para otras y/o combinaciones adicionales de opciones de macrobloques. El descodificador repite (2885, 2880) la recepción y descodificación para un modo de macrobloque para el siguiente macrobloque hasta que no haya más modos de macrobloque que recibir y descodificar para el campo-P. (Para simplificar, la figura 28B no muestra las varias etapas de macrobloque y descodificación de bloque que puede ocurrir después o alrededor de la recepción y descodificación (2880) de la selección de modo macrobloque. Por el contrario, la figura 28B se enfoca en la recepción/descodificación repetida de selecciones de modo de macrobloque para macrobloques en el campo-P usando la tabla de código seleccionado para el campo-P). Alternativamente, el descodificador realiza otra técnica para descodificar información del modo macrobloque para macrobloques de campos-P entrelazados. Por ejemplo, aunque la figura 28B muestra la selección de tabla de código que ocurre por campo-P entrelazado, alternativamente una tabla de código se selecciona en una base más frecuente, menos frecuente o no periódica, o el descodificador salta la selección de tabla de código completamente (siempre usando la misma tabla de código). O, el descodificador puede seleccionar una tabla de código de la información contextual (haciendo innecesaria la recepción y descodificación de selección de tabla de código). Para simplificar, la figura 28B no muestra las diversas maneras en las que la técnica (2850) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. VI. Selección de campo de referencia en campos-P entrelazados de campo de dos referencias En algunas modalidades, se usan dos campos previamente codificados/descodificados como campos de referencia cuando se realiza predicción de movimiento compensado para un campo-P entrelazado actual, único. (Por ejemplo, véase sección IV). La información señalada indica cuál de los dos campos brinda la referencia para que cada macrobloque (o bloque) tenga un vector de movimiento. En esta sección, varias técnicas y herramientas se describen para señalar eficientemente cuál de los múltiples campos de referencia codificados/descodificados previamente se usan para brindar información de predicción de movimiento compensado cuando se codifica o descodifica un macrobloque o bloque actual. Por ejemplo, un codificador y descodificador implícitamente derivan campos de referencia dominante y no dominante para el macrobloque o bloque actual basado en vectores de movimiento codificado previamente en el campo-P entrelazado. (O correspondientemente, el codificador y descodificador derivan polaridades de predictor de vector de movimiento dominante y no dominante). Entonces la información señalada indica si se usa el campo de referencia dominante o no dominante para compensación del macrobloque o bloque actual. A. Predictores y campos de referencia dominante y no dominante Los campos entrelazados pueden ser codificados usando compensación de no movimiento (campos-I), compensación de movimiento delantero (campos-P) o compensación de movimiento delantero y trasero (campos-B). Los campos-P entrelazados pueden referenciar campos de dos referencias, que son campos-l o -P previamente codificados/descodificados. Las Figuras 24A y 24B muestran ejemplos en donde campos de dos referencias se usan para un campo-P actual. Los campos de dos referencias son de polaridades opuestas. El campo de una referencia representa líneas impares de una estructura de video y el campo de otra referencia representa líneas de una estructura de video (que no es necesariamente la misma estructura que incluye el campo de referencia de líneas impares). El campo-P que está actualmente siendo codificado o descodificado puede usar ya sea uno o ambos de los dos campos codificados/descodificados previamente como referencias en compensación de movimiento. Así, los datos del vector de movimiento para un macrobloque o bloque de campo-P indica típicamente en cierta manera: (1) qué campo usar como campo de referencia en compensación de movimiento; y (2) el desplazamiento/ubicación en ese campo de referencia de valores muestra para usarse en la compensación de movimiento. La señalización de información de selección de campo de referencia puede consumir un número ineficiente de bits. No obstante, el número de bits puede ser reducido prediciendo, para un vector de movimiento dado, qué campo de referencia se usará para el vector de movimiento y entonces señalizar si el campo de referencial pronosticado es o no utilizado como campo de referencia para el vector de movimiento. Por ejemplo, para cada macrobloque o bloque que use compensación de movimiento en un campo-P entrelazado, un codificador o descodificador analiza hasta tres vectores de movimiento previamente codificados/descodificados desde macrobloques o bloques vecinos. Desde entonces, el codificador o descodificador deriva un campo de una referencia dominante y no dominante. En esencia, el codificador o descodificador determina cuál de los campos de dos referencias posibles es usado por la mayoría de los vectores de movimiento de los macrobloques o bloques vecinos. El campo que es referenciado por más de los vectores de movimientode vecinos es el campo de referencia dominante, y el otro campo de referencia es el campo de referencia no dominante. De manera similar, la polaridad del campo de referencia dominante es la polaridad de predictor de vector de movimiento dominante, y la polaridad del campo de referencia no dominante es la polaridad de predictor de vector de movimiento dominante. El pseudocódigo en la figura 29 muestra una técnica para un codificador o descodificador para determinar campos de referencia dominantes y no dominantes. En el pseudocódigo, los términos "mismo campo" y "campo opuesto" son relativos al campo-P entrelazado. Si el campo-P actual es un campo par, por ejemplo, el "mismo campo" es el campo de referencia de línea par y el "campo opuesto" es el campo de referencia de línea impar. Las figuras 5A a 10 muestran ubicaciones de macrobloques y bloques vecinos desde los cuales se toman los Predictores A, B y C. En el pseudocódigo de la figura 29, el campo dominante es el campo referenciado por la mayoría de los candidatos de predictor de vector de movimiento. En el caso de un enlace, el vector de movimiento derivado desde el campo opuesto es considerado como el predictor de vector de movimiento dominante. Los macrobloques ¡ntra-codificados no son considerados en el cálculo del predictor dominante/no dominante. Si todos los macrobloques de predictor candidato son intra codificados, entonces los predictores de vector de movimiento dominante y no dominante son ajustados a cero y el predictor dominante se lleva para ser del campo opuesto. Alternativamente, el codificador y descodificador analizan otros vectores de movimiento adicional de macrobloques o bloques vecinos y/o aplican diferente lógica de decisión para determinar campos de referencia dominantes y no dominantes. O, el codificador y descodificador usan un mecanismo diferente para predecir cuál campo de referencia será seleccionado para un vector de movimiento dado en un campo-P entrelazado. En algunos casos, la información de un bit que indica si el campo dominante o no dominante se usa se codifica conjuntamente con la información de vector de movimiento diferencial. Por lo tanto, los bits/símbolo para este un bit de información pueden corresponder de manera precisa la verdadera entropía de símbolo. Por ejemplo, el selector dominante/no dominante se señala como parte del componente vertical de un vector de movimiento diferencial como se muestra en el pseudocódigo en la figura 30. En él, MVY es el componente vertical del vector de movimiento, y PMVY es el componente vertical del predictor de vector de movimiento. En esencia, el diferencial del vector de movimiento vertical codifica conjuntamente el selector de campo de referencia y el diferencial de offset vertical de la siguiente manera: DMVY = (MVY - PMVY) * 2 + p, en donde p = 0 si se usa el campo de referencia dominante, y p = 1 si se usa el campo de referencia no dominante. Como un ejemplo numérico: suponga que un bloque actual tiene polaridad par, el campo de referencia real para el vector de movimiento es de polaridad par, y el predictor dominante es oppfield (en otras palabras, el campo de referencia dominante es el campo de referencia de polaridad impar). Además, suponga que el desplazamiento vertical del vector de movimiento es de 7 unidades (MVY = 7) y el componente vertical del predictor de vector de movimiento es 4 unidades (PMVY = 4). Como el campo de referencia actual y el predictor dominante son de polaridad opuesta, DMVY = (7 - 4)*2 + 1 = 7. Alternativamente, el selector dominante/no dominante se codifica conjuntamente con la información de diferencial de vector de movimiento de alguna otra manera. O, el selector dominante/no dominante se señala con otro mecanismo. B. Técnicas de codificación Un codificador como el codificador (2000) de la figura
determina las polaridades del campo de referencia dominante y no dominante para los candidatos del predictor de vector de movimiento durante la codificación de vectores de movimiento para campos-P entrelazados de campo de dos referencias. Por ejemplo, el codificador realiza la técnica (3100) que se muestra en la figura 31A para un vector de movimiento de un macrobloque o bloque actual. Típicamente, el codificador realiza cierta forma de estimación de movimiento en los campos de dos referencias para obtener el vector de movimiento y el campo de referencia. Entonces el vector de movimiento se codifica de acuerdo con la técnica (3100). El codificador determina (3100) un predictor de vector de movimiento de polaridad del mismo campo de referencia como el vector de movimiento. Por ejemplo, el codificador determina el predictor de vector de movimiento como se describe en la sección VII para el campo de referencia asociado con el vector de movimiento. Alternativamente, el codificador determina (3120) las polaridades del campo de referencia dominante y no dominante del vector de movimiento. Por ejemplo, el codificador sigue el pseudocódigo mostrado en la figura 29. Alternativamente, el codificador usa otra técnica para determinar las polaridades dominante y no dominante. El codificador señala (3125) un selector de polaridad dominante/no dominante en el flujo de bits, que indica si se debería usar polaridad dominante o no dominante para el predictor de vector de movimiento y campo de referencia asociado con el vector de movimiento. Por ejemplo, el codificador codifica de manera conjunta el selector de polaridad dominante/no dominante con otra información usando un VLC conjunto. Alternativamente, el codificador señala el selector usando otro mecanismo, por ejemplo, código aritmético de un bit que indica el selector. La predicción de polaridad de campo de referencia para predictores de vector de movimiento baja la entropía de la información de selector, que permite codificación más eficiente de la información de selector. El codificador calcula (3130) un diferencial de vector de movimiento desde el predictor de vector de movimiento y vector de movimiento, y señala (3140) información para la información del diferencial de vector de movimiento. Alternativamente, el codificador realiza otra técnica para determinar polaridades dominantes y no dominantes para la predicción de vector de movimiento durante la codificación de vectores de movimiento para campos-P entrelazados de campo de dos referencias. Más aun, aunque la figura 31A muestra señalización separada de selector dominante/no dominante e información de diferencial de vector de movimiento, en varias modalidades, esta información exacta se señala conjuntamente. Varios otros ordenamientos son posibles, incluyendo determinar el vector de movimiento después de determinar la polaridad dominante/no dominante (para factorizar el costo de señalización de selector en el proceso de selección de vector de movimiento). Para simplificar, la figura 31A no muestra las varias maneras en las que la técnica (3100) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en la sección XII. C. Técnicas de descodificación Un descodificador como el codificador (2100) de la figura 21 determina las polaridades del campo de referencia dominante y no dominante para los candidatos del predictor de vector de movimiento durante la descodificación de vectores de movimiento para campos-P entrelazados de campo de dos referencias. Por ejemplo, el descodificador realiza la técnica (3150) que se muestra en la figura 31B. El descodificador determina (3160) polaridades del campo de referencia dominante y no dominante de un vector de movimiento de un macrobloque o bloque actual. Por ejemplo, el descodificador sigue el pseudocódigo mostrado en la figura 29. Alternativamente, el descodificador usa otra técnica para determinar las polaridades dominante y no dominante. El descodificador recibe y descodifica (3165) un selector de polaridad dominante/no dominante en el flujo de bits, que indica si se debería usar polaridad dominante o no dominante para el predictor de vector de movimiento y campo de referencia asociado con el vector de movimiento. Por ejemplo, el descodificador recibe y descodifica un selector de polaridad dominante/no dominante que se ha codificado conjuntamente con otra información usando un VLC conjunto. Alternativamente, el descodificador recibe y descodifica un selector usando otro mecanismo, por ejemplo, descodificación aritmética de un bit que indica el selector. El descodificador determina (3170) un predictor de vector de movimiento para el campo de referencia que se va a usar con el vector de movimiento. Por ejemplo, el descodificador determina el predictor de vector de movimiento como se describe en la sección Vil para la polaridad señalada. Alternativamente, el descodificador determina el predictor de vector de movimiento con otro mecanismo. El descodificador recibe y descodifica (3180) información para un diferencial de vector de movimiento, y reconstruye (3190) el vector de movimiento desde el diferencial de vector de movimiento y el predictor de vector de movimiento. Alternativamente, el descodificador realiza otra técnica para determinar polaridades dominantes y no dominantes para predicción de vector de movimiento durante la descodificación de vectores de movimiento para campos-P entrelazados de campo de dos referencias. Por ejemplo, aunque la figura 31B muestre señalización separada del selector dominante/no dominante e información diferencial de vector de movimiento, alternativamente, esta información se señala de manera conjunta. Varios otros ordenamientos son también posibles. Para simplificar, la figura 31B no muestra las varias maneras en las que la técnica (3150) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen detalladamente en la sección XII. VII. Predicción de vector de movimiento híbrido para campos-P entrelazados En algunas modalidades, los vectores de movimiento se señalan como diferenciales relativas a predictores vectores de movimiento para reducir la clasificación de bit asociada con la señalización de vectores de movimiento. El desempeño de la señalización del diferencial del vector de movimiento depende en parte de la calidad de la predicción del vector de movimiento, que usualmente mejora cuando se consideran los predictores de vector de movimiento candidato múltiple, lo que usualmente mejora cuando múltiples predictores de vector de movimiento candidato son considerados desde el área alrededor de un macrobloque, bloque, etc. actual. En algunos casos, no obstante, el uso de múltiples predictores candidato daña la calidad de predicción de vector de movimiento. Esto ocurre, por ejemplo, cuando un predictor de vector de movimiento se calcula como el promedio de un conjunto de predictores candidato que son diversos (por ejemplo, tiene una alta variación entre predictores de vector de movimiento). Por lo tanto, en algunas modalidades, un codificador y descodificador realizan predicción de vector de movimiento híbrido para vectores de campos-P entrelazados. Cuando los vectores que conforman la vecindad casual del macrobloque o bloque actual son diversos de conformidad con ciertos criterios, se emplea el modo de predicción de vector de movimiento híbrido. En este modo, en lugar de usar el promedio del conjunto de predictores candidato como predictor de vector de movimiento, un vector de movimiento específico desde el conjunto (por ejemplo, predictor superior, predictor izquierdo) es señalado por un bit selector o palabra código. Esto ayuda a mejorar la predicción del vector de movimiento en discontinuidades de movimiento en campo-P entrelazado. Para campos-P entrelazados de campo de dos referencias, también se toma en consideración la polaridad dominante cuando se verifica la condición de predicción de vector de movimiento híbrido. A. Predicción de vector de movimiento para campos-P entrelazados La predicción de vector de movimiento híbrido es un caso especial de predicción de vector de movimiento para campos-P entrelazados. Como se explicó anteriormente, un vector de movimiento se reconstruye añadiendo un diferencial de vector de movimiento (que se señala en el flujo de bits) a un predictor de vector de movimiento. El predictor se calcula desde hasta tres vectores de movimiento vecinos. Las Figuras 5A a la 10 muestran ubicaciones de macrobloques y bloques vecinos desde los que los Predictores A, B y C se toman para predicción de vector de movimiento. (Estas figuras muestran macrobloques y bloques de estructuras-P progresivas, pero también aplican a macrobloques y bloques de campos-P entrelazados, como se describe en la sección VI). Si un campo-P entrelazado se refiere a sólo un campo previo, un predictor de vector de movimiento único se calcula para cada vector de movimiento para el campo-P. Por ejemplo, el pseudocódigo en Figuras 51A y 51B (o alternativamente, Figuras 60A y 60B) muestra cómo los predictores de movimiento son calculados para los vectores de movimiento de un campo-P entrelazado de campo de una referencia, como se discutió en detalle en la sección XII. Si campos de dos referencias se usan para un campo-P entrelazado, entonces son posibles dos predictores de vector de movimiento para cada vector de movimiento del campo-P. Ambos predictores de vector de movimiento pueden ser calculados, después uno seleccionado, o sólo un predictor de vector de movimiento puede ser computado determinando primero la selección del predictor. Un predictor de vector de movimiento potencial es desde el campo de referencia dominante y otro predictor de vector de movimiento potencial es desde el campo de referencia no dominante, cuando los términos dominante y no dominante son como se describen en la sección VI, por ejemplo. Los campos de referencia dominante y no dominante tienen polaridades opuestas, de manera que un predictor de vector de movimiento es desde el campo de referencia de la misma polaridad que el campo-P actual, y el otro predictor de vector de movimiento es desde un campo de una referencia con la polaridad opuesta. Por ejemplo, el pseudocódigo y tablas en las Figuras 52A y 52N ¡lustran el proceso de calcular los predictores de vector de movimiento para vectores de movimiento de campos-P de campo de dos referencias, como se discutió en detalle en la sección XII. Las variables samefieldpred_x y samefieldpred_y representa los componentes horizontal y vertical, respectivamente, del predictor de vector de movimiento desde el mismo campo, y las variables oppositefieldpred_x y opositefieldpred_y representan los componentes horizontal y vertical, respectivamente, del predictor de vector de movimiento desde el campo opuesto. El predictor dominante variable indica qué campo contiene el predictor dominante. Un predictor_flag indica si el predictor dominante o no dominante es usado para el vector de movimiento. Alternativamente, se usa el pseudocódigo en las Figuras 61A a 61 F. B. Predicción de vector de movimiento híbrido para campos-P entrelazados Para la predicción de vector de movimiento híbrido para un vector de movimiento, el codificador y descodificador verifican una condición de predicción de vector de movimiento híbrido para el vector de movimiento. En general, la condición se refiere al grado de variación en los predictores de vector de movimiento. Los predictores evaluados pueden ser predictores de vector de movimiento candidato y/o el predictor de vector de movimiento calculado usando predicción de vector de movimiento normal. Si la condición se satisface (por ejemplo, el grado de variación es alto), uno de los predictores de vector de movimiento original se usa típicamente en lugar del predictor de vector de movimiento. El codificador señala cuál predictor de vector de movimiento híbrido usar y el descodificador recibe y descodifica la señal.
Los predictores de vector de movimiento híbrido no se usan cuando la variación del inter-predictor es baja, lo que es el caso común. El codificador y descodificador verifican la condición de vector de movimiento híbrido para cada vector de movimiento de un campo-P entrelazado, si el vector de movimiento es para un macrobloque, bloque, etc. En otras palabras, el codificador y descodificador determinan para cada vector de movimiento si la condición es detonada y por lo tanto se va a esperar una señal de selección de predictor. Alternativamente, el codificador y descodificador verifican la condición de vector de movimiento híbrido para sólo algunos vectores de movimiento de campos-P entrelazados. Una ventaja de la predicción de vector de movimiento híbrido para campos-P entrelazados es que usa predictores calculados y la polaridad dominante para seleccionar un buen predictor de vector de movimiento. Resultados experimentales extensivos sugieren predicción de vector de movimiento híbrido como se describe a continuación ofrece mejoras de compresión/calidad significativas en la predicción de vector de movimiento sin él, y también en las ¡mplementaciones más tempranas de predicción de vector de movimiento híbrido. Más aun, los cálculos adicionales para la verificación de predicción de vector híbrida no son muy costosos. En algunas modalidades, el codificador o descodificador prueba el predictor de vector de movimiento normal (como se determina por una técnica descrita en la sección VIIA.) contra le grupo de predictores de vector de movimiento candidato original. El predictor de vector e movimiento normal es un promedio componente-amplio de Predictores A, B y/o C, y el codificador o descodificador lo prueba con referencia al Predictor A y al Predictor C. La prueba verifica si la variación entre el predictor de vector de movimiento normal y los candidatos es alta. Si es así, es probable que el vector de movimiento verdadero esté más cerca de uno de estos predictores candidato (A, B o C) que al predictor derivado de la operación promedio. Cuando los predictores candidato están lejos, su promedio componente-amplio no brinda buena predicción, y es más eficiente enviar una señal adicional que indique si el vector de movimiento verdadero está más cerca de A o de C. Si el predictor A es el más cercano, entonces se usa como el predictor de vector de movimiento para el vector de movimiento actual, y si el predictor C es el más cercano, entonces se usa como el predictor de vector de movimiento para el vector de movimiento actual. El pseudocódigo en la figura 32 muestra dicha predicción de vector de movimiento híbrido durante la descodificación. Las variables predictor_pre_x y predictor_pre_y son predictores de vector de movimiento horizontal y vertical, respectivamente, como se calculó usando la predicción de vector de movimiento híbrido normal. Las variables predictor_post_x y predictor_post_y son predictores de vector de movimiento horizontal y vertical, respectivamente, después de la predicción de vector de movimiento híbrido. En el pseudocódigo, el predictor de vector de movimiento normal se prueba referente a los predictores A y C para ver si una selección de predictor de vector de movimiento es explícitamente codificada en el flujo de bits. Si es así, entonces un bit único está presente en el flujo de bits que indica si se debe usar el predictor A o el predictor C como el predictor de vector de movimiento. De otra manera, se usa el predictor de vector de movimiento normal. Varias otras condiciones (por ejemplo, la magnitud del vector de movimiento normal si A o C son intra) pueden ser también verificadas. Cuando tanto A y C son intra, el movimiento correspondiente a A o C son respectivamente considerados como cero. Para un vector de movimiento de un campo-P de campo de dos referencias, todos los predictores son de polaridad idéntica. La polaridad de campo de referencia se determina, en ciertas modalidades, mediante una polaridad de predictor dominante/no dominante y una señal de selector obtenida en el proceso de descodificación de vector de movimiento diferencial. Por ejemplo, si el predictor de campo opuesto es usado entonces: pred¡ctor_pre_x = oppositefieIdpred_x, predictor_pre_x = oppos¡tef¡eIdpred_y, predictor_A_x = oppositefieldpredA_x, predictor_A_y = oppositefieldpredA_y, predictorC_x = oppos¡tef¡eldpredC_x, predictorC_pre_x = oppositefieldpredC_y. Si se usa el mismo predictor de campo, entonces: predictor_pre_x = samef ¡eldpred_x, predictor_pre_x = samefieldpred_y, predictorA_x = samefieldpredA_x, predictorA_y = samefieldpredA_y = predictorC_x = samefieldpredX_x, y predictorC_y = samefieldpredC_y. Los valores de oppositefieldpred y samefieldpred se calculan en el pseudocódigo de las Figuras 52A a 52J o 61A a 61F, por ejemplo. La figura 53 muestra pseudocódigos alternativos para predicción de vector de movimiento híbrido en una implementación combinada (véase sección XII). Alternativamente, un codificador y descodificador prueban una condición de predicción de vector de movimiento híbrido diferente, por ejemplo, uno que considera otros y/o predictores adicionales, uno que usa diferente lógica de decisión par detectar discontinuidades de movimiento, y/o uno que usa un umbral diferente para variación (diferente a 32). Una señal simple par seleccionar entre dos predictores candidatos (por ejemplo, Ay C) es un bit único por vector de movimiento. Alternativamente, el codificador y descodificador usan un diferente mecanismo de señalización, por ejemplo, señalizando conjuntamente un bit selector con otra información como datos de vector de movimiento. C. Técnicas de codificación Un codificador como el codificador (2000) de la figura 20 realiza la predicción de vector de movimiento híbrido durante la codificación de vectores de movimiento para campos-P entrelazados. Por ejemplo, el codificador realiza la técnica (3300) mostrada en la figura 33A para un vector de movimiento de un macrobloque o bloque actual. El descodificador determina (3310) un predictor de vector de movimiento para el vector de movimiento. Por ejemplo, el codificador usa una técnica descrita en la sección VIIA para determinar el predictor de vector de movimiento. Alternativamente, el codificador determina el predictor de vector de movimiento con otra técnica. Entonces el codificador verifica (3329) una condición de predicción de movimiento híbrido para el predictor de vector de movimiento. Por ejemplo, el codificador usa una técnica que refleja el pseudocódigo de lado del descodificador mostrado en la figura 32. Alternativamente, el codificador verifica una condición de predicción de vector de movimiento híbrido diferente. (Un descodificador correspondiente verifica la misma condición de predicción de vector de movimiento híbrido que el codificador, cualesquiera que sea la condición, ya que la presencia/ausencia de la información de señal de predictor es derivada implícitamente mediante el codificador y descodificador correspondiente). Si no se desencadena la condición de vector de movimiento híbrido (el trayecto "No" de la decisión 3325), el codificador usa el predictor de vector de movimiento inicialmente determinado. Por otra parte, si se desencadena la condición de vector de movimiento híbrido (el trayecto "Sí" de la decisión 3325), el codificador selecciona (3330) un predictor de vector de movimiento a usar. Por ejemplo, el codificador selecciona entre un predictor superior candidato y el predictor candidato izquierdo que son vectores de movimiento vecinos. Alternativamente, el codificador selecciona entre otro y/o predictores adicionales. Entonces el codificador señala (3340) el predictor de vector de movimiento híbrido seleccionado. Por ejemplo, el codificador transmite un bit único que indica si el predictor candidato superior o el predictor candidato izquierdo se va a usar como predictor de vector de movimiento. Alternativamente, el codificador usa otro mecanismo de señalización. El codificador realiza la técnica (3300) para cada vector de movimiento de un campo-P entrelazado, o sólo para ciertos vectores de movimiento del campo-P entrelazado (por ejemplo, dependiendo del tipo de macrobloque). Para simplificar, la figura 33A no muestra las diversas maneras en las que la técnica puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. D. Técnicas de decodificación Un descodificador como el descodificador (2100) de la figura 21 realiza la predicción de vector de movimiento híbrido durante la descodificación de vectores de movimiento para campos-P entrelazados. Por ejemplo, el descodificador realiza la técnica (3350) mostrada en la figura 33B para un vector de movimiento de un macrobloque o bloque actual. El descodificador determina (3360) un predictor de vector de movimiento para el vector de movimiento. Por ejemplo, el codificador usa una técnica descrita en la sección VIIA para determinar el predictor de vector de movimiento. Alternativamente, el codificador determina el predictor de vector de movimiento con otra técnica. Entonces el codificador verifica (3370) una condición de predicción de movimiento híbrido para el predictor de vector de movimiento. Por ejemplo, el descodificador sigue el pseudocódigo mostrado en la figura 32. Alternativamente, el descodificador verifica una condición de predicción de vector de movimiento híbrido diferente. (El descodificador verifica la misma condición de predicción de vector de movimiento híbrido que el codificador correspondiente, cualesquiera que sea la condición).
Si no se desencadena la condición de vector de movimiento híbrido (el trayecto "No" de la decisión 3375), el descodificador usa el predictor de vector de movimiento inicialmente determinado. Por otra parte, si se desencadena la condición de vector de movimiento híbrido (el trayecto "Sí" de la decisión 3375), el descodificador recibe y descodifica (3380) una señal que indica el predictor de vector de movimiento híbrido seleccionado. Por ejemplo, el descodificador obtiene un bit único que indica si un predictor superior candidato y el predictor candidato izquierdo se van a usar como predictor de vector de movimiento. Alternativamente, el descodificador opera en conjunto con otro mecanismo de señalización. Entonces el descodificador señala (3390) el predictor de vector de movimiento híbrido a usar. Por ejemplo, el descodificador selecciona entre un predictor candidato superior o el predictor candidato izquierdo que son vectores de movimiento vecino. Alternativamente, el codificador selecciona entre otro y/o predictores adicionales. El descodificador realiza la técnica (3350) para cada vector de movimiento de un campo-P entrelazado, o sólo para ciertos vectores de movimiento del campo-P entrelazado (por ejemplo, dependiendo del tipo de macrobloque). Para simplificar, la figura 33B no muestra las diversas maneras en las que la técnica puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. VIII. Patrones de bloque de vector de movimiento En algunas modalidades, un macrobioque puede tener vectores de movimiento múltiple. Por ejemplo, un macrobioque de un campo-P entrelazado de MV combinado puede tener un vector de movimiento, cuatro vectores de movimiento (uno por bloque de luminancia del macrobioque), o ser intra codificados (sin vectores de movimiento). Similarmente, un macrobioque de campo codificado de una estructura-P entrelazada puede tener dos vectores de movimiento (uno por campo) o cuatro vectores de movimiento (dos por campo), y un macrobioque de estructura codificada de una estructura-P entrelazada puede tener un vector de movimiento de cuatro vectores (uno por bloque de luminancia). Un macrobioque 2MV o 4MV pueden ser señalados como "saltados" si el macrobioque no tiene datos de vector de movimiento asociado (por ejemplo, diferenciales) que señalar. Si es así, los predictores de vector de movimiento se usan típicamente como vectores de movimiento de macrobioque. O, el macrobioque puede tener datos de vector de movimiento no cero par un vector de movimiento, pero no para otro vector de movimiento (que tiene un diferencial de vector de movimiento (0,0). Para un macrobioque 2MV o 4 V que tiene diferenciales (0,0) por lo menos uno pero no todos los vectores de movimiento, señalar los datos del vector de movimiento puede consumir número de bits ineficiente. Por lo tanto, en algunas modalidades, un descodificador usa un mecanismo de señalización que señala eficientemente la presencia o ausencia de datos de vector de movimiento para un macrobloque con vectores d movimiento múltiples. Un patrón de bloque codificado de vector de movimiento (o "patrón de bloque de vector de movimiento", para abreviar) para macrobloque indica, en una base vector de movimiento por vector de movimiento, qué bloques, campos, mitades de campos, etc. tienen datos de vector de movimiento señalados en un flujo de bits, y cuáles no. El patrón de bloque de vector de movimiento señala conjuntamente el patrón de datos del vector de movimiento par el macrobloque, que permite el codificador y descodificador explotar la correlación espacial que existe entre bloques. Más aun, señalar la presencia/ausencia de datos de vector de movimiento con patrones de bloque de vector de movimiento brinda una manera simple de señalar esta información, en una manera desacoplada de señalización acerca de presencia/ausencia de datos de coeficiente de resultado (como con un elemento CBPCY). Ejemplos específicos de señalización, descritos en esta sección y en las implementaciones combinadas en la sección XII, señalan patrones de bloque de vector de movimiento de señal con elementos de sintaxis 2MVBP y 4MVBP codificados de longitud variable. Las selecciones de tabla para 2MVBP y 4MVBP son señaladas a través de elementos 2MVBPTAB y 4MVBPTAB, respectivamente, que son codificados de longitud fija. Alternativamente, un codificador y descodificador usa otras y/o señales adicionales para señalar patrones de bloque de vector de movimiento. A. Patrones de bloque de vector de movimiento Un patrón de bloque de vector de movimiento indica qué vectores de movimiento son "codificados" y cuáles son "no codificados" para un macrobloque que tiene múltiples vectores de movimiento. Un vector de movimiento es codificado si el vector de movimiento diferencial par él es no coro (por ejemplo, el vector de movimiento que se va a señalar es diferente de su predictor de vector de movimiento). De otra manera, el vector de movimiento no es codificado. Si un macrobloque tiene cuatro vectores d movimiento, entonces el patrón de bloque de actor de movimiento tiene 4 bits, uno para cada uno de los cuatro vectores de movimiento. El ordenamiento de bits en el patrón de bloque de vector de movimiento sigue la orden de bloque mostrado en la figura 34 para un macrobloque 4MV en un campo-P entrelazado o macrobloque de estructura codificada 4MV en una estructura-P entrelazada. Para un macrobloque de campo codificado 4 V en una estructura-P entrelazada, el ordenamiento de bit del patrón de bloque de vector de movimiento es de vector de movimiento campo izquierdo, vector de movimiento de campo derecho superior, vector de movimiento de campo izquierdo inferior y vector de movimiento de campo derecho inferior. Si un macrobloque tiene dos vectores de movimiento, entonces un patrón de bloque de vector tiene 2 bits, uno para cada uno de los dos vectores de movimiento. Para un macrobloque de código de campo 2 V de una estructura-P entrelazada, el ordenamiento de bit del patrón de bloque de vector de movimiento es simplemente el vector de movimiento de campo superior y después vector de movimiento de campo inferior. Una de las múltiples diferentes tablas VLC pueden ser usadas para señalar elementos de patrón de bloque de vector de movimiento. Por ejemplo, cuatro tablas de código diferentes par 4MVBP se muestran en la figura 47J, y cuatro tablas de código diferentes para 2MVBP se muestran en la figura 47K. La selección de tabla se indica mediante un elemento 4MVBPTAB o 2MVBPTAB señalado en la capa del cuadro. Alternativamente, un codificador y descodificador usa otros y/o códigos adicionales para señalar información de patrón de bloque de vector de movimientos de señalización y selecciones de tabla. Una regla adicional aplica para determinar qué vectores de movimiento son codificados para macrobloques de campos-P entrelazados de campo de dos referencias. Un vector de movimiento "no codificado" tiene predictor dominante, como se describe en la sección VI. Un vector de movimiento "codificado" puede tener un diferencial de vector de movimiento valor cero pero señalar el predictor no dominante. O un vector de movimiento "codificado" puede tener un vector de movimiento diferencial no cero y señalar el predictor ya sea dominante o no dominante. Alternativamente, un codificador y descodif icador usan patrones de bloque de vector de movimiento para otros y/o tipos adicionales de cuadros, para otros tipos y/o adicionales de macrobloques, para otros y/o números adicionales de vectores de movimiento y/o con diferentes posiciones de bit. B. Técnicas de codificación Un codificador como el codificador (2000) de la figura 20 codifica datos del vector de movimiento para un macrobloque usando un patrón de bloque de vector de movimiento. Por ejemplo, el codificador realiza la técnica (3500) mostrada en la figura 35A. Para un macrobloque dado con múltiples vectores de movimiento, el codificador determina (3510) el patrón de bloque de vector de movimiento para el macrobloque. Por ejemplo, el codificador determina un patrón de bloque de vector de movimiento para un macrobloque 4MV en un campo- P entrelazado, o para un macrobloque de campo codificado o estructura codificada 4MV en una estructura-P entrelazada. O, el codificador determina un patrón de bloque de vector de dos movimientos para un macrobloque de campo codificado 2MV en una estructura-P entrelazada. Alternativamente, el codificador determina un patrón de bloque de vector de movimiento para otro tipo de macrobloque y/o número de vectores de movimiento. El codificador señala (3520) entonces el patrón de bloque de vector de movimiento. Típicamente, el codificador señala un VLC para el patrón de bloque de vector de movimiento usando una tabla de código como la que se muestra en las Figuras 47J y 47K. Alternativamente, el codificador usa otro mecanismo para señalar el patrón de bloque de vector de movimiento. Si hay por lo menos un vector de movimiento para el cual los datos de vector de movimiento se van a señalar (el trayecto "sí" de la decisión 3525) el codificador señala (3530) los datos de vector de movimiento para el vector de movimiento. Por ejemplo, el codificador codifica los datos de vector de movimiento como un elemento BLKMVDATA, TOPMVDATA, o BOT VDATA usando una técnica descrita en la sección IX. Alternativamente, el codificador usa una técnica de señalización diferente. El codificador repite (3525, 3530) la codificación de datos de vector de movimiento hasta que no hay más vectores de movimiento para los que se van a señalar los datos de vector de movimiento (el trayecto "No" de la decisión 3525). El codificador puede seleccionar entre múltiples tablas de código para codificar el patrón de bloque de vector de movimiento (no mostrado en la figura 35A). Por ejemplo, el codificador selecciona una tabla de código para el campo-P o estructura-P entrelazados, después utiliza la tabla para codificar patrones de bloque de vector de movimiento para macrobloques en el cuadro. Alternativamente, el codificador selecciona una tabla de código en una base más frecuente, menos frecuente o no periódica, o el codificador salta completamente la selección de tabla de código (siempre usando la misma tabla de código). O, el codificador puede seleccionar una tabla de código de la información contextual (haciendo la señalización de la selección de tabla de código innecesaria). Las tablas de código pueden ser las tablas que se muestran en las Figuras 47J y 47K, otras tablas, y/o tablas adicionales. El codificador señala la tabla de código seleccionada en el flujo de bits, por ejemplo, con un FLC indicando la tabla de código seleccionada, con un VLC indicando la tabla de código seleccionada, o con un mecanismo de señalización diferente. Alternativamente, el codificador realiza otra técnica para codificar datos de vector de movimiento para macrobloque usando un patrón de bloque de vector de movimiento. Para simplificar, la figura 35A no muestra las diversas maneras en las que la técnica (3500) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones se describen en detalle en la sección XII. C. Técnicas de descodi icación Un descodificador como el descodificador (2100) de la figura 21 codifica datos del vector de movimiento para un macrobloque usando un patrón de bloque de vector de movimiento. Por ejemplo, el codificador realiza la técnica (3550) mostrada en la figura 35B. Para un macrobloque dado con múltiples vectores de movimiento, el descodificador determina (3560) el patrón de bloque de vector de movimiento para el macrobloque. Por ejemplo, el descodificador recibe y descodifica un patrón de bloque de vector de cuatro movimientos, patrón de bloque de vector de dos movimientos, u otro patrón de bloque de vector de movimiento descrito en la sección previa. Típicamente, el descodificador recibe un VLC para el patrón de bloque de vector de movimiento y lo descodifica usando una tabla de código como la que se muestra en las Figuras 47J y 47K. Alternativamente, el descodificador recibe y descodifica el patrón de bloque de vector de movimiento junto con otro mecanismo de señalización. Si hay por lo menos un vector de movimiento para el cual los datos de vector de movimiento se van a señalar (el trayecto "Sí" de la decisión 3565) el descodificador recibe y descodifica (3570) los datos de vector de movimiento para el vector de movimiento. Por ejemplo, el descodificador recibe y descodifica los datos de vector de movimiento codificados como un elemento BLKMVDATA, TOPMVDATA, o BOTMVDATA usando una técnica descrita en la sección IX. Alternativamente, el descodificador usa una técnica de descodificación diferente. El descodificador repite (3565, 3570) la recepción y descodificación de datos de vector de movimiento hasta que no hay más vectores de movimiento para los que se van a señalar los datos de vector de movimiento (el trayecto "No" de la decisión 3565). El descodificador puede seleccionar entre múltiples tablas de código para descodificar el patrón de bloque de vector de movimiento (no mostrado en la figura 35B). Por ejemplo, la selección de tabla y las opciones de señalización de tabla reflejan las descritas para el codificador en la sección anterior. Alternativamente, el descodificador realiza otra técnica para descodificar datos de vector de movimiento para un macrobloque usando un patrón de bloque de vector de movimiento. Para simplificar, la figura 35B no muestra las diversas maneras en las que la técnica (3550) puede ser integrada con otros aspectos de codificación y descodificación. Varias implementaciones se describen en detalle en la sección XII. IX. Diferenciales de vector de movimiento en campos-P entrelazados En algunas modalidades, se usan dos campos previamente codificados/descodificados como campos de referencia cuando se realiza predicción de movimiento compensado para un campo-P entrelazado actual, único. (Por ejemplo, véanse secciones IV, VI y VII). La información señalada para un vector de movimiento en el campo-P indica: (1) cuál de los dos campos brinda la referencia para el vector de movimiento; y (2) el valor de vector de movimiento. El factor de vector de movimiento está típicamente señalado como un diferencial relativo a predictor de vector de movimiento. La selección entre los dos posibles campos de referencia puede ser señalada con un bit adicional único para el vector de movimiento, pero esa manera de señalización es ineficiente en varios casos. Usualmente, los campos de dos referencias no son igualmente similares para un vector de movimiento dado, y la selección para el vector de movimiento no es independiente de la selección para otros vectores de movimiento (por ejemplo, vecinos). Así, en la práctica, la señalización de selecciones de campo de referencia con un bit único por selección es usualmente ineficiente.
Por lo tanto, en algunas modalidades, un codificador codifica conjuntamente información de diferencial de vector e información de selección de campo de referencia. Un descodificador realiza la descodificación correspondiente de información codificada conjuntamente. A. Teoría y resultados experimentales Para un campo-P entrelazado de campo de dos referencias, los campos de dos referencias tienen la siguiente relación espacial y temporal para el campo-P. La polaridad del campo de referencia más cercano en orden temporal es opuesta a la polaridad del campo-P actual. Por ejemplo, si el campo-P es un campo par (compuesto por líneas pares de estructura entrelazada), entonces el campo de referencia más cercano en orden temporal es un campo impar, y el otro campo de referencia (el campo más lejano en orden temporal) es un campo par. El codificador y descodificador predicen la selección de campo de referencia para un vector de movimiento actual que usa información actual. Por ejemplo, la información de selección de campo de referencia de vectores de movimiento codificado previamente vecinos se usa para predecir el campo de referencia usado para el vector de movimiento actual. Entonces, un valor binario indica si el campo de referencia pronosticado es usado o no. Un valor indica que el campo de referencia actual para el vector de movimiento actual es el campo de referencia pronosticado, y el otro valor indica que el campo de referencia actual para el vector de movimiento actual es el otro campo de referencia. En algunas implementaciones, la predicción del campo de referencia se expresa en términos de las polaridades de los campos de referencia usados previamente y campo de referencia esperado para el vector de movimiento actual (por ejemplo, lo referente a polaridad dominante o no dominante, véase sección VI). En la mayoría de los escenarios, con dicha predicción, la distribución de probabilidad del selector de campo de referencia de valor binario es consistente y desviado hacia el campo de referencia pronosticado. En experimentos, el campo de referencia pronosticado se usa para alrededor de 70% de los vectores de movimiento, con alrededor de 30% de los vectores de movimiento usando el otro campo de referencia. Transmitir un bit único para señalar información de selección de campo de referencia con dicha distribución de probabilidad no es suficiente. Un método más eficiente es codificar conjuntamente la información de selección de campo de referencia con la información del vector de movimiento diferencial. B. Ejemplos de mecanismos de señalización Varios ejemplos de mecanismos de señalización para codificar y descodificar conjuntamente información de diferencial de vector de movimiento e información de selección de campo de referencia son proporcionados. Alternativamente, un codificador y descodificador codifican y descodifican conjuntamente la información junto con otro mecanismo. El pseudocódigo en la figura 36 muestra codificación conjunta de información diferencial de vector de movimiento e información de selección de campo de referencia de conformidad con un mecanismo de señalización generalizado. En el pseudocódigo, las variables DMVX y DMVY son componentes de vector de movimiento diferencial horizontal y vertical, respectivamente. Las variables AX y AY son los valores absolutos de los componentes diferenciales, y las variables SX y SY son los signos de los componentes diferenciales. La gama de vector de movimiento horizontal es desde -RX a RX+1. RX y RY son potencias de dos, con exponentes de MX y MY, respectivamente. Las variables ESCX y ESCY (que son las potencias de dos con exponentes KX y KY, respectivamente) indican los umbrales encima de los que se usa la codificación de escape. La variable R es un valor binario para una selección de campo de referencia. Cuando se desencadena la condición de escape (AX> ESCX o AY > ESCY), el codificador envía un VLC que representa juntamente la señal de modo de escape y R. El codificador envía entonces DMVX y DMVY como códigos de longitudes fijas MX+1 y Y+1, respectivamente. Así, se usan dos elementos en la tabla VLC para señalar (1) que DMVX y DMVY se codifican usando (MX + MY + 2) bits colectivamente, y (2) el valor R asociado. En otras palabras, los dos elementos son códigos de escape correspondientes a R = 0 y R = 1. Para otros eventos, las variables NX y NY indican cuántos bits se usan para señalar diferentes valores de AX y AY respectivamente. AX es el intervalo (2NX <= AX < 2NX + 1), en donde NX = 0, 1,2, ... KX-1 y AX = 0 cuando NX = -1. AY está en el intervalo (2NY <= AY < 2NY+1), en donde NY = 0, 1, 2, ... KY-1, y AY = 0 cuando NY = 1. La tabla VLC usada para codificar información de tamaño NX y NY y la información de referencia de campo E es una tabla de elementos (KX+1) * (KY + 1) *2, en donde cada elemento es un par (palabra código, tamaño código). De los elementos en la tabla, todos excepto dos se usan para señalar juntamente valores NX, NY y R. Los otros dos elementos son códigos de escape. Para eventos señalados con NX y NY, el codificador envía un VLC indicando la combinación de valores NX, NY y R. El codificador envía entonces AX como bits NX, envía SX como un bit, envía AY como bits NY, y envía SY como un bit. Si NX es 0 o -1, AX no necesita ser enviado, y lo mismo es verdad para NY y AY, ya que el valor de AX o AY puede estar derivado directamente de NX y NY en esos casos.
El evento en el que AX = 0, AY = 0, y R = 0 es señalado por otro mecanismo como un mecanismo de macrobloque de salto o patrón de bloque de vector de movimiento (véase sección VIII). El elemento (0,0,0) no está presente en la tabla VLC para el pseudocódigo en la figura 36 ni dirigido en el pseudocódigo. Un descodificador correspondiente realiza la codificación conjunta que refleja la codificación mostrada en la figura 36. Por ejemplo, el descodificador recibe bits en lugar de enviar bits, realiza descodificación de longitud variable en lugar de codificación de longitud variable, etc. El pseudocódigo en la figura 50 muestra descodificación de información de diferencial de vector de movimiento e información de selección de campo de referencia que se ha codificado conjuntamente de conformidad con un mecanismo de señalización en una implementación combinada. El pseudocódigo en la figura 59 muestra descodificación de información de diferencial de vector de movimiento e información de selección de campo de referencia que ha sido codificado conjuntamente de conformidad con un mecanismo de señalización en otra implementación combinada. El pseudocódigo en la figura 50 y 59 se explica en detalle en la sección XII. En particular, el pseudocódigo muestra la codificación y descodificación conjunta de un selector de predicción con un valor diferencial vertical, o con tamaños de valores diferenciales vertical y horizontal. Un codificador correspondiente realiza codificación conjunta que refleja la descodificación mostrada en la figura 50 ó 59. Por ejemplo, el codificador envía bits en lugar de recibir bits, realiza codificación de longitud variable en lugar de descodificación de longitud variable, etc. C. Técnicas de codificación Un codificador como el codificador (2000) de la figura 20 codifica conjuntamente la información de selector de predicción de campo de referencia e información de vector de movimiento diferencial. Por ejemplo, el codificador realiza la técnica (3700) mostrada en la figura 37A para codificar conjuntamente la información. Típicamente, el codificador realiza cierta forma de estimación de movimiento en campos de dos referencias para obtener el vector de movimiento y el campo de referencia. El vector de movimiento se codifica entonces de conformidad con la técnica (3700), en cuyo punto uno de los campos de dos referencias posibles se asocia con el vector de movimiento codificando conjuntamente la información de selector con, por ejemplo, un diferencial de vector de movimiento vertical. El codificador determina (3710) un predictor de vector de movimiento para el vector de movimiento. Por ejemplo, el codificador determina el predictor de vector de movimiento como se describe en la sección VII. Alternativamente, el codificador determina el predictor de vector de movimiento con otro mecanismo. El codificador determina (3720) el diferencial de vector de movimiento para el vector de movimiento relativo al predictor de vector de movimiento. Típicamente, el diferencial son las diferencias de componente ancho entre el vector de movimiento y el predictor del vector de movimiento. El codificador también determina (3730) la información de selector de predicción de campo de referencia. Por ejemplo, el codificador determina las polaridades dominante y no dominante para el vector de movimiento (y por lo tanto el campo de referencia dominante, polaridad dominante para el predictor de vector de movimiento, etc. Véase sección VI), en cuyo caso el selector indica si se usa o no la polaridad dominante. Alternativamente, el codificador usa una técnica diferente para determinar información de selector de predicción de campo de referencia. Por ejemplo, el codificador usa un tipo diferente de predicción de campo de referencia. Entonces el codificador codifica conjuntamente (3740) información de diferencial de vector de movimiento e información de selector de predicción de campo de referencia para el vector de movimiento. Por ejemplo, el codificador codifica la información usando uno de los mecanismos descritos en la sección anterior. Alternativamente, el codificador usa otro mecanismo. Para simplificar, la figura 37A no muestra las diversas maneras en las que la técnica (3700) puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. D. Técnicas de descodificación Un descodificador como el descodificador (2100) de la figura 21 descodifica conjuntamente la información de selector de predicción de campo de referencia de información de vector de movimiento diferencial. Por ejemplo, el descodificador realiza la técnica (3750) mostrada en la figura 37B para descodificar dicha información codificada conjuntamente. El codificador descodifica (3760) conjuntamente información de diferencial de vector de movimiento codificado conjuntamente. Por ejemplo, el descodificador descodifica la información señalada usando uno de los mecanismos descritos en la sección IX. B. Alternativamente, el descodificador descodifica información señalada usando otro mecanismo. El descodificador determina (3770) entonces el predictor de vector de movimiento. Por ejemplo, el descodificador determina las polaridades dominante y no dominante para el vector de movimiento (véase sección VI), aplica la información de selector y determina el predictor de vector de movimiento como se describe en la sección VII para la polaridad seleccionada. Alternativamente, el descodificador usa un mecanismo diferente para determinar el predictor de vector de movimiento. Por ejemplo, el descodificador usa un tipo diferente de predicción de campo de referencia. Finalmente, el descodificador reconstruye (3780) el vector de movimiento combinando el diferencial de vector de movimiento con el predictor de vector de movimiento. Para simplificar, la figura 37B no muestra las diversas maneras en las que la técnica (3700) puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. X. Derivación de vectores de movimiento de crominancia en campos-P entrelazados En algunas modalidades, un codificador y descodificador derivan vectores de movimiento de crominancia desde vectores de movimiento de luminancia que se señalan para macrobloques de campos-P entrelazados. Los vectores de movimiento de crominancia no son señalados explícitamente en el flujo de bits. Por el contrario, son determinados desde vectores de movimiento de luminancia para los macrobloques. El codificador y descodificador pueden usar derivación de vector de movimiento de crominancia adaptada para estructuras-P progresivas o estructuras-P entrelazadas, pero esto típicamente brinda rendimiento inadecuado para campos-P entrelazados. Así, el codificador y descodificador usan derivación de vector de movimiento de crominancia adaptada a la organización de campo de referencia de campos-P entrelazados. La derivación de vector de movimiento de crominancia tiene dos fases: (1) selección, y (2) sub-muestreo y redondeo de crominancia. De estas fases, la fase de selección en particular es adaptada para derivación de vector de movimiento de crominancia en los campos-P entrelazados. La producción de la fase de selección es un vector de movimiento de crominancia inicial, que depende del número (y potencialmente las polaridades) de los vectores de movimiento de luminancia para el macrobloque. Si no se usa movimiento de luminancia para el macrobloque (un macrobloque intra), no se deriva ningún vector de movimiento de crominancia. Si se usa un vector de movimiento de luminancia único para el macrobloque (un macrobloque 1MV), el vector de movimiento de luminancia única se selecciona para usarse en la segunda y tercera fases. Si se usan cuatro vectores de movimiento de luminancia para el macrobloque (un macrobloque 4MV), se selecciona un vector de movimiento de crominancia inicial usando lógica que favorece la polaridad más común entre los cuatro vectores de movimiento de luminancia. A. Submuestreo de crominancia y representaciones de vector de movimiento La derivación de vector de movimiento de crominancia para macrobloques de campos-P entrelazados depende del tipo de submuestra de crominancia usada para los macrobloques y también de la representación de vector de movimiento. Algunos formatos de submuestra de crominancia comunes son 4:2:0 y 4:1:1. La figura 38 muestra una rejilla muestra para un macrobloque YUV 4:2:0, de acuerdo con el que las muestras de crominancia son submuestreadas con respecto a muestras de luminacia en un patrón 4:1 regular. La figura 38 muestra las relaciones espaciales entre las muestras de crominancia y luminancia para un macrobloque 16x16 con cuatro bloques de luminacia 8x8, un bloque "U" de crominancia 8x8, y un bloque "V" de crominancia 8x8 (como el que se representa en la figura 22). En general, la resolución de la rejilla de crominancia es la mitad de la resolución de la rejilla de luminancia en ambas direcciones x e y, que es la base de el bajado de muestras en derivación de vector de movimiento de crominancia. Para poder escalar distancias de vector de movimiento de escala para la rejilla de luminancia para distancias correspondientes en la rejilla de crominancia, los valores de vector de movimiento son derivados por un factor de 2. La selección de las técnicas de fase descritas aquí se puede aplicar a macrobloques YUV 4:2:0 o a macrobloques con otro formato de submuestra de crominancia. La representación de vectores de movimiento de luminancia y crominancia para campos-P entrelazados depende en parte de la precisión de vectores de movimiento y compensación de movimiento. Las precisiones de vector de movimiento típicas son ½ pixel y ¼ de pixel, que funcionan con interpolación de ½ y ¼ de pixel en compensación de movimiento, respectivamente. En algunas modalidades, un vector de movimiento para campo-P entrelazado puede referenciar un campo de una referencia de polaridad superior, inferior o misma u opuesta. El desplazamiento vertical especificado por valor de vector de movimiento depende de polaridades del campo-P actual y campo de referencia. Las unidades de vector de movimiento se expresan típicamente en las unidades de película de campo. Por ejemplo, si el componente vertical de un vector de movimiento es +6 (en unidades de ¼ e pixel), esto indica generalmente un desplazamiento vertical de líneas de película de campo de 1 ½ (antes de ajusfar diferentes polaridades decampo-P actual y campo de referencia, si es necesario). Para varios valores de componente de vector de movimiento vertical y combinaciones de polaridades de campo, la figura 39 muestra ubicaciones despacio correspondientes en campos actual y de referencia de conformidad con una primera convención. Cada combinación de polaridades de campo tiene un par de columnas, una (columna izquierda) para pixeles para las líneas en el campo actual (linea numerada N = 0, 1, 2, etc.) y otra (columna derecha) para pixeles para las líneas en un campo de una referencia (también línea numerada N = 0, 1,2, etc.). Los círculos representan muestras en posiciones de píxel de entero, y las Xs representan muestras interpoladas en posiciones de sub-pixel. Con esta convención, un valor de componente de vector de movimiento vertical de 0 referencia una posición de pixel de entero (por ejemplo, una muestra en una línea real) en un campo de una referencia. Si el campo actual y el campo de referencia tienen la misma polaridad, un valor de componente vertical de 0 desde la línea N del campo actual referencia la línea N en el campo de referencia, que es el mismo offset real en una estructura. Si el campo actual y el campo de referencia tienen polaridades opuestas, un valor de componente vertical de 0 desde la línea N en el campo actual sigue referenciando la línea N en la estructura de referencia, pero la ubicación referenciada está en un offset real de ½ pixel en la estructura debido a el entrelazamiento de líneas pares e impares.
La figura 48 muestra las ubicaciones espaciales correspondientes en campos actuales y de referencia de conformidad con una segunda convención. Con esta convención, un valor de componente de vector de movimiento vertical de 0 referencia una muestra en el mismo offset real en una estructura entrelazada. La muestra referenciada está en una posición e pixel-entero en un campo de una referencia de la misma polaridad, o en una posición de 1/2 pixel en un campo de una referencia opuesto. Alternativamente, los vectores de movimiento para campos-P entrelazados usan otra representación y/o siguen otra convención para manejar desplazamientos verticales para polaridad. B. Ejemplos de fase de selección En algunas modalidades, la fase de selección de derivación de vector de movimiento de crominancia se adapta a patrones de campo de referencia usados en compensación de movimiento para campos-P entrelazados con campos de una o dos referencias. Por ejemplo, el resultado de fase de selección para un macrobloque depende del número y las polaridades de vectores de movimiento de Iuminancia para el macrobloque. El caso más simple es cuando un macrobloque entero es intra codificado. En este caso, no hay vector de movimiento de crominancia, y la segunda y tercera fases de derivación de vector de movimiento de crominancia se saltan. Los bloques de crominancia de macrobloque son ínter codificados / descodificados, sin movimiento compensado. El siguiente caso más simple es cuando el macrobloque tiene un vector de movimiento de luminancia único para todos los cuatro bloques de luminancia. Si el campo-P actual tiene campo de una referencia o campo de dos referencias, no hay operación de selección per se, ya que el vector de movimiento de luminancia único es simplemente transportado al submuestreo circundante. Cuando el macrobloque tiene hasta cuatro vectores de movimiento de luminancia, la fase de selección es más compleja. En general, la fase de selección favorece la polaridad dominante entre los vectores de movimiento de luminancia del macrobloque. Si el campo-P tiene sólo un campo de referencia, la polaridad es idéntica para todos los vectores de movimiento de luminancia del macrobloque. Si el como-P tiene dos campos de referencia, no obstante, diferentes vectores de movimiento de macrobloque pueden apuntar a campos de referencia diferentes. Por ejemplo, si la polaridad del campo-P actual es impar, ei macrobloque puede tener dos vectores de movimiento de luminancia de polaridad opuesta (referenciando el campo de referencia de polaridad par) y dos vectores de movimiento de luminancia de la misma polaridad (referenciando el campo de referencia de polaridad impar). Un codificador o descodificador determina la polaridad dominante para los vectores de movimiento de luminancia del macrobioque y determina el vector de movimiento de crominancia inicial desde los vectores de movimiento de luminancia de polaridad dominante. En algunas implementaciones, un macrobioque 4MV tiene desde cero a cuatro vectores de movimiento. Un bloque de luminacia de dicho macrobioque 4MV es intra codificado o tiene un vector de movimiento de luminancia de polaridad asociada de la misma polaridad asociado, o tiene un vector d movimiento de luminacia de la misma polaridad asociado. En otras implementaciones, un macrobioque 4MV tiene cuatro vectores de movimiento de luminancia, aun si alguno de ellos no está señalizado (por ejemplo, ya que tienen un diferencial (0, 0). Un bloque de luminancia de dicho macrobioque 4MV tiene ya sea un vector de movimiento de polaridad opuesta o un vector de movimiento de la misma polaridad. La lógica de fase de selección es ligeramente diferente para estas diferentes implementaciones. 1. acrobloques 4MV con 0 a 4 vectores de movimiento de luminancia El pseudocódigo en la figura 40 muestra un ejemplo de lógica de fase de selección que aplica para macrobloques 4 V que tienen entre 0 y 4 vectores de movimiento de luminancia. De los vectores de movimiento de luminancia, si el número de vectores de movimiento de luminancia que referencia tiene el campo de referencia de la misma polaridad es mayor que el número de referencia del campo de referencia de polaridad opuesta, el codificador/descodificador deriva el vector de movimiento de crominancia inicial desde los vectores de luminancia que referencian el campo de referencia de la misma polaridad. De otra manera, el codificador/descodificador deriva el vector de movimiento de crominancia inicial desde los vectores de movimiento de luminancia que referencian el campo de referencia de polaridad opuesta. Si cuatro vectores de luminancia tienen polaridad dominante (por ejemplo, todo el campo de referencia impar o todo el campo de referencia par), el codificador/descodificador calcula el promedio de los cuatro vectores de movimiento de luminancia. Si sólo tres vectores de movimiento de luminancia tienen polaridad dominante (por ejemplo, porque un bloque de luminancia es intra o tiene un vector de movimiento de polaridad no dominante) el codificador/descodificador calcula el promedio de los tres vectores de movimiento de luminancia. Si dos vectores de movimiento de luminancia tienen la polaridad dominante, el codificador/descodificador calcula el promedio de los dos vectores de movimiento de luminancia. (En caso de un enlace entre cuentas de la misma polaridad o polaridad opuesta, la misma polaridad (que el campo-P actual) es favorecida). Finalmente, si sólo hay un vector de movimiento de luminancia de polaridad dominante (por ejemplo, porque tres bloques de luminancia son intra), el vector de movimiento de una luminancia se toma como la producción de la fase de selección. Si todos los bloques de luminancia son intra, el macrobloque es intra, y el pseudocódigo en la figura 40 no aplica. 2. Macrobloques 4MV con 4 vectores de movimiento de luminancia El pseudocódigo en las Figuras 55A y 55B muestra otro ejemplo de lógica de fase de selección que aplica para macrobloques 4MV que siempre tienen 4 vectores de movimiento de luminancia (por ejemplo, ya que los bloques de luminancia ¡ntra codificados no están permitidos). La figura 55A dirige derivación de vector de movimiento de crominancia para dichos macrobloques 4MV en campos-P entrelazados de un campo de una referencia y la figura 55B dirige la derivación del vector de movimiento de crominancia para dichos macrobloques 4MV en campos-P entrelazados de campo de dos referencias. Con referencia a la figura 55B, un codificador/descodificador determina qué polaridad predomina entre los vectores de movimiento de luminancia de macrobloque 4MV (por ejemplo, impar o par). Si todos los cuatro vectores de movimiento de luminancia son del mismo campo (por ejemplo, todos impares o todos pares), se determina el promedio de los cuatro vectores de movimiento. Si tres de los cuatro son del mismo campo, se determina el promedio de los tres vectores de movimiento de luminancia. Finalmente, si hay dos vectores de movimiento de luminancia para cada una de las polaridades, los dos vectores de movimiento de luminancia que tienen la misma polaridad que el campo-P actual son favorecidos, y se determina su promedio. (Los casos de un vector de movimiento de sólo una luminacia y vector de movimiento de ninguna luminancia que tienen polaridad dominante no son posibles si un macrobloque de 4MV siempre tiene cuatro vectores de movimiento). Alternativamente, un codificador/descodificador usa diferente lógica de selección cuando deriva un vector de movimiento de crominancia desde vectores de movimiento de luminancia múltiple de un macrobloque de un campo-P entrelazado. O, un codificador o descodificador considera la polaridad de vector de movimiento de luminancia en la derivación del vector de movimiento de crominancia para otro tipo de macrobloque (por ejemplo, un macrobloque con diferente número de vectores de movimiento de luminancia y/o en un tipo de película diferente al campo-P entrelazado). C. Submuestra/fase circundante Para la segunda fase de derivación del vector de movimiento de crominancia, el codificador o descodificador típicamente aplica lógica circundante para eliminar ciertas posiciones de pixel de vectores de movimiento de crominancia inicial (por ejemplo, para circundar posiciones de 3/4 de pixel de manera que dichos vectores de movimiento de crominancia después de descargar las muestras no indiquen desplazamientos de 1/4 de pixel). El uso de rodear puede ser ajustado a calidad de canje de predicción contra complejidad de interpolación. Con rodeo más agresiva, por ejemplo, el codificador o descodificador elimina todos los desplazamientos de crominancia de 1/4 de pixel en los vectores de movimiento de crominancia resultantes, de manera que sólo se permitan los desplazamientos de pixel entero y 1/2 pixel, lo que simplifica la Interpolación en compensación de movimiento par los bloques cromáticos. En la segunda fase, el codificador y descodificador también bajan muestras del vector de movimiento de crominancia inicial para obtener un vector de movimiento de crominancia en la escala apropiada para la resolución de crominancia. Por ejemplo, si la resolución de crominancia es 1/2 de la resolución de luminancia tanto horizontalmente como verticalmente, se bajan muestras de los componentes de vector de movimiento horizontal y vertical mediante un factor de dos. Alternativamente, el codificador y descodificador aplica otros y/o mecanismos adicionales para circundar, sub-muestrear, retrotraer, u otros ajustes de vectores de movimiento de crominancia. D. Técnicas de derivación Un codificador como el codificador (2000) de la figura 20 deriva vectores de movimiento de crominancia para macrobloques de campos-P entrelazados. O, un descodificador como el descodificador (2100) de la figura 21 deriva vectores d movimiento de crominancia para macrobloques de campos-P entrelazados. Por ejemplo, el codificador/descodificador realiza la técnica (4100) mostrada en la figura 41 para derivar un vector de movimiento de crominancia. El codificador/descodificador determina (4110) si el macrobloque actual es o no un macrobloque intra. Si es así, el codificador/descodificador salta la derivación del vector de movimiento de crominancia y, en lugar de la compensación de movimiento, se usa la intra codificación/descodificación par el macrobloque. Si el macrobloque no es un macrobloque intra, el codificador/descodificado determina (4120) si el macrobloque es o no un macrobloque 1MV. Si es así, el codificador/descodificador usa el vector de movimiento de luminancia único para el macrobloque como el vector de movimiento de crominancia inicial pasado a la última etapa(s) de ajuste (4150) el a técnica (4100). Si el macrobloque no es un macrobloque 1MV, el codificador/descodif icador determina (4130) la polaridad dominante entre los vectores de movimiento de luminancia del macrobloque. Por ejemplo, el codificador/descodificador determina la polaridad prevaleciente entre uno o más vectores d movimiento del macrobloque como se describe en las figuras 40 o 55A y 55B. Alternativamente, el codificador/descodificador aplica otra y/o lógica de decisión adicional para determinar la polaridad prevaleciente. Si el campo-P que incluye el macrobloque tiene sólo un campo de referencia, la polaridad dominante entre los vectores de movimiento de luminancia es simplemente la polaridad de ese un campo de referencia. El codificador/descodificador determina (4140) entonces el vector de movimiento crominancia inicial como se muestra en las Figuras 40 ó 55A y 55B. Alternativamente, el codificador/descodificador determina el vector de movimiento de crominancia como el promedio, u otra combinación de vectores de movimiento de polaridad dominante usando otra y/o lógica adicional. Finalmente, el codificador/descodificador ajusta (4150) el vector de movimiento de crominancia inicial producido por una de las etapas precedentes. Por ejemplo, el codificador/descodificador realiza el rodeo y el submuestreo como se describió arriba. Alternativamente, el codificador/descodificador realiza otros y/o ajustes adicionales. Alternativamente, el codificador/descodificador verifica los diversos tipos de macrobloque y condiciones de polaridad en un orden diferente. O, el codificador/descodificador deriva vectores de movimiento de crominancia para otros y/o tipos adicionales de macrobloques en campos-P entrelazados u otros tipos de películas. Para simplificar, la figura 41 no muestra las diversas maneras en las que la técnica (4100) puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. XI. Compensación de intensidad para campos-P entrelazados El desvanecimiento, transformación y combinación se usan ampliamente en la creación y edición de contenido de video. Estas técnicas suavizan la evolución visual del video a través de transacciones de contenido. Además, ciertas secuencias de video incluyen el desvanecimiento naturalmente debido a cambios de iluminación. Para una película pronosticada afectada por desvanecimiento, transformación o combinación, etc. los cambios globales en luminacia comparados con una película de referencia reducen la efectividad de estimación de movimiento convencional y compensación. Como resultado, la predicción compensada por el movimiento es peor, y la película pronosticada requiere más bits para representarla. Este problema es combinado más tarde para campos-P entrelazados que tienen campo de una referencia o campos de múltiples referencias. En algunas modalidades, un codificador y descodificador realizan compensación de desvanecimiento (también llamado compensación de intensidad) en los campos de referencia para campos-P entrelazados. El codificador realiza la estimación de desvanecimiento correspondiente. La estimación y compensación de desvanecimiento, y el mecanismo de señalización para los parámetros de compensación de desvanecimiento, se adaptan a al organización de campo de referencia de campos-P entrelazados. Por ejemplo, para un campo-P entrelazado que tiene campo de una referencia o campos de dos referencias, la decisión de si se realiza la compensación de desvanecimiento o no se hace separadamente para cada uno de los campos de referencia. Cada campo de referencia que usa la compensación de desvanecimiento puede tener sus propios parámetros de compensación de desvanecimiento. El mecanismo de señalización para decisiones y parámetros de compensación de desvanecimiento representa eficientemente esta información. Como resultado, la calidad del video entrelazado se mejora y/o la clasificación de bits se reduce. A. Estimación y compensación de desvanecimiento y sobre campos de referencia La compensación de desvanecimiento involucra realizar un cambio a uno o más campos de referencia para compensar el desvanecimiento, combinación, transformación, etc. Generalmente, la compensación de desvanecimiento incluye cualquier compensación para desvanecimiento (por ejemplo, desvanecer a negro o desvanecer del negro), combinación, transformación u otro efecto de iluminación natural o artificial que afecte las intensidades de valor de pixel. Por ejemplo, un cambio de luminancia global puede ser expresado como un cambio en la brillantez y7o contraste de la escena. Típicamente, el campo es lineal pero también puede ser definido como incluyente de cualquier mapeo suave, no lineal dentro del mismo armazón. Un campo-P actual es entonces pronosticado mediante estimación/compensación de movimiento desde uno o más campos de referencia ajustados. Para un campo de referencia en espacio de color YUV, los ajustes se presentan ajusfando muestras en los canales e luminancia y crominancia. Los ajustes pueden incluir escalar y cambiar valores de luminancia y escalar y cambiar valores de crominancia. Alternativamente, el espacio de color es diferente (por ejemplo, YIQ o RGB) y/o la compensación usa otras técnicas de ajuste.
Un codificador/descodificador realiza estimación/compensación de desvanecimiento en una base campo por campo. Alternativamente, un codificador/descodificador realiza estimación/compensación de desvanecimiento en otra base. Así, los ajustes de compensación de desvanecimiento afectan una región definida, que puede ser un campo o una parte de un campo (por ejemplo, un bloque o macrobloque individual, o un grupo de macrobloques) y los parámetros de compensación de desvanecimiento son para la región definida. O, lo parámetros de compensación de desvanecimiento son para un campo completo, per ose aplican selectivamente y según se necesite a regiones dentro del campo. B. Organización de campo de referencia para campos-P entrelazados En algunas modalidades, un campo-P entrelazado tiene uno o dos campos de referencia para compensación de movimiento. (Por ejemplo, véase sección IV). Las Figuras 24A-24F muestran las posiciones de campos de referencia disponibles para usar en predicción compensada por el movimiento para campos-P entrelazados. Un codificador y descodificador puede usar campos de referencia en otra y/o posiciones adicionales o temporización para predicción compensada por el movimiento. Por ejemplo, los campos de referencia dentro de la misma estructura como campo-P actual están permitidos. O, ya sea el campo superior o el campo inferior de una estructura pueden ser codificados/descodificados primero. Para los campos-P entrelazados que tienen campos de una o dos referencias para compensación de movimiento, un campo-P tiene sólo un campo de una referencia. O, un campo-P puede tener campos de dos referencias entre campos de dos referencias para diferentes vectores de movimiento o en alguna otra base. Alternativamente, un campo-P tiene campos de más referencias y/o campos de referencia en posiciones diferentes. C. Codificadores y descodificadores La figura 42 muestra una armazón (4200) de codificador de ejemplo para realizar estimación y compensación de intensidad par acampos-P entrelazados que tienen campos de una o dos referencias. En esta armazón (4200), ei codificador remapea condicionalmente un campo de referencia usando parámetros obtenidos por estimación de desvanecimiento. El codificador realiza remapeo, o compensación de desvanecimiento, cuando el codificador detecta el desvanecimiento con un buen grado de certeza y consistencia a través del campo. De otra manera, la compensación del desvanecimiento es una operación de identidad (por ejemplo, salida = entrada).
Refiriéndose a la figura 42, el codificador compara un campo-P actual (4210) con un primer campo de referencia (42200) usando un módulo de detección de desvanecimiento (4230) para determinar si el desvanecimiento ocurre entre los campos (4220, 4210). El codificador compara separadamente el campo-P actual (4210) con un segundo campo de referencia (4225) usando el módulo de detección de desvanecimiento (4230) para determinar si el desvanecimiento ocurre entre esos campos (4225, 4210). El codificador produce una señal o señales (4240, 4210) de "encendido de desvanecimiento" o "apagado de desvanecimiento" basado en los resultados de la detección de desvanecimiento. La señal(es) indica si la compensación de desvanecimiento se usará del todo y, si es así, si sólo en el primer, sólo en el segundo o en ambos campos de referencia (4220, 4225). Si la compensación de desvanecimiento está encendida para el primer campo de referencia (4220), el módulo de estimación de desvanecimiento (4250) estima los parámetros de desvanecimiento (4260) para el primer campo de referencia (4220). (Los detalles de la estimación de desvanecimiento se discuten más adelante). De manera similar, si la compensación de desvanecimiento está encendida para el segundo campo de referencia (4225), el módulo de estimación de desvanecimiento (4250) estima separadamente los parámetros de desvanecimiento (4260) para el segundo campo de referencia. Los módulos de compensación de desvanecimiento (4270, 4275) usan parámetros de desvanecimiento (4260) para remapear uno o ambos campos de referencia (4220). Aunque la figura 42 muestra dos módulos de compensación de desvanecimiento (4270, 4275) (uno por campo de referencia), alternativamente, el armazón (4200) del codificador incluye un módulo de compensación de desvanecimiento único que opere en cualquier campo de referencia (4220, 4225). Otros módulos del codificador (4280) (por ejemplo, estimación y compensación de movimiento, transformador de frecuencia, y módulos de cuantificación) comprimen el campo-P actual (4210). El codificador saca vectores de movimiento, residuales y otra información (4290) que definen el campo-P codificado (4210). Aparte de la estimación/compensación de movimiento con vectores de movimiento transnacional, el armazón (4200) es aplicable a través de una gran variedad de codees de video basado en compensación de movimiento. La figura 43 muestra un armazón de descodificador de ejemplo (4300) para realizar compensación de identidad. El descodificador produce un campo-P descodificado (4310). Para descodificar un campo-P de desvanecimiento compensado codificado, el descodificador realiza compensación de desvanecimiento en uno o dos campos de referencia previamente descodificados (4320, 4325) usando módulos de compensación de desvanecimiento (4370, 4375). Alternativamente, el armazón de descodificador (4300) incluye un módulo de compensación de desvanecimiento único que opera en cualquier campo de referencia (4320, 4325). El descodificador realiza la compensación de desvanecimiento en el primer campo de referencia (4320) si las señales (4340) de encendido/apagado de desvanecimiento indican que la compensación de desvanecimiento se usa para el primer campo de referencia (4320) y campo-P (4310). Similarmente, el descodificador realiza compensación de desvanecimiento en el segundo campo de referencia (4325) si las señales (4340) de encendido/apagado de desvanecimiento indican que la compensación de desvanecimiento se usa para el segundo campo de referencia (4325) y campo-P (4310). El descodificador realiza la compensación de desvanecimiento (como se hace en el codificador) usando los equipos respectivos de parámetros de desvanecimiento (4360) obtenido durante la estimación de desvanecimiento para el primer y segundo campos de referencia (4320, 4325). Si la compensación de desvanecimiento está apagada, la compensación de desvanecimiento es una operación de identidad (por ejemplo, salida = entrada). Otros módulos de descodificador (4360) (por ejemplo, módulos de compensación de movimiento, de transformador de frecuencia inversa, y de cuantif icación inversa) descompresionan el campo-P codificado (4310) usando vectores de movimiento, residuales y otra información (4390) brindado por el codificador. D. Parametrización y compensación Entre un campo-P y un primer campo de referencia y/o entre el campo-P y un segundo campo de referencia, los parámetros representan el desvanecimiento, combinación, transformación u otro cambio. Entonces los parámetros son aplicados en la compensación de desvanecimiento. En edición de video, el desvanecimiento artificial se realiza algunas veces al aplicar un resultado lineal de pixel ancho a los canales de luminancia y crominancia. De igual manera, el desvanecimiento cruzado se realiza algunas veces como sumas lineales de dos secuencias de video, con la composición cambiando con el tiempo. De conformidad, en algunas modalidades el desvanecimiento u otro ajuste de compensación de identidad se parametriza como un resultado lineal de pixel ancho, y el desvanecimiento cruzado es parametrizado como suma lineal. Suponga / (n) es n de campo-P ny I (n — 1) es un campo de una referencia. Donde el movimiento es pequeño, el desvanecimiento simple es modelado por la relación de primer orden en la siguiente ecuación. La relación en la ecuación es aproximada debido al movimiento posible en la secuencia de video. / (n) * d i (n-1) + B1, en donde los parámetros de desvanecimiento B1 y C1 corresponden al brillo y cambios de contraste, respectivamente, para el campo de referencia. (Los parámetros B2 y C2 corresponden a brillo y cambios de contraste, respectivamente, para el otro campo de referencia). Cuando ocurre el desvanecimiento no lineal, el componente de primer orden típicamente da cuenta por la cantidad de cambio. Los desvanecimientos cruzados desde una secuencia de imagen U (n) a una secuencia de imagen V (n) pueden ser modelados por la relación en la siguiente ecuación. Otra vez, la relación en la ecuación es aproximada debido a posible movimiento en las secuencias.
l[n)*anV+ i-an)U »l{n-í)+a(V-U)
cuando n=0 representa el comienzo del desvanecimiento cruzado, y n«1/a representa el final del desvanecimiento cruzado. Para desvanecimientos cruzados que extienden varios campos, a es pequeño. Al principio del desvanecimiento cruzado, el campo enésimo está cerca de una versión atenuada (contraste < 1) del n-1ro. campo. Hacia el final, el campo enésimo es una versión amplificada (contraste > 1) del campo n-1ro. El codificador realiza compensación de intensidad al remapear un campo de referencia. El codificador remapea el campo de referencia en una base pixel por pixel, o en otra base. El campo de referencia original, no remapeado es esencialmente descartado (aunque en ciertas implementaciones, el campo de referencia no remapeado puede seguir siendo usado para compensación de movimiento). La siguiente regla lineal remapea los valores de luminancia de un campo de referencia R al campoR de referencia remapeado en términos de los dos parámetros B1 y C1: R*ClR+m, Los valores de luminancia del campo de referencia son escalados (o, "pesados") por el valor de contraste y cambiados (por ejemplo, añadiendo un offset) por el valor de brillantez. Por crominancia, el remapeo sigue la regla: ?*a(8-^)+/?. en donde µ es el medio de los valores de crominancia. En una modalidad, 128 se asume como el medio para representación de valores de crominancia de ocho bits no firmados. Esta regla para remapeo de crominancia no usa un componente de brollo. En algunas modalidades, el remapeo lineal de dos parámetros se extiende a términos de orden más altos. Por ejemplo, una ecuación de segundo orden que remapea los valores de luminancia de R a R es:
RvC^R2 +C12R + Bl. Otras modalidades usan otras reglas de remapeo. En una categoría de dichas reglas de remapeo, para desvanecimiento no lineal, los mapeos lineales son colocados con mapeos no lineales. La compensación de desvanecimiento puede ser aplicada a un campo de referencia antes de la compensación de movimiento. O, puede ser aplicado al campo de referencia según lo necesario durante la compensación de movimiento, por ejemplo, sólo a aquéllas áreas de campo de referencia que son actualmente referenciadas por vectores de movimiento. E. Estimación de parámetros La estimación es el proceso de parámetros de compensación de computación durante el proceso de codificación. Un codificador como el mostrado en el armazón (4200) de la figura 42 calcula los parámetros de brillantez (B1, B2) y contraste (C1, C2) durante el proceso de codificación. Alternativamente, dicho codificador calcula los demás parámetros de compensación. Para acelerar la estimación, el codificador considera y estima parámetros para cada campo de referencia independientemente, Además, el codificador analiza sólo el canal de luminancia. Alternativamente, el codificador incluye la crominancia en el análisis cuando más recursos computacionales están disponibles. Por ejemplo, el codificador resuelve C1 (o C2) en las ecuaciones de remapeo de luminancia y crominancia para el primer campo de referencia, no sólo el de la luminancia para hacer C1 (o C2) más robusto. El movimiento en la escena es ignorado durante el proceso de estimación del desvanecimiento. Esto se basa en las observaciones de que: (a) los desvanecimientos y desvanecimientos cruzados ocurren típicamente en escenas fijas o de movimiento lento, y (b) la utilidad de compensación de intensidad en escenas de mucho movimiento es muy baja. Alternativamente, el codificador resuelve conjuntamente los parámetros de compensación de desvanecimiento y la información de movimiento. Entonces la información de movimiento se usa para refinar la precisión de los parámetros de compensación de desvanecimiento y las últimas etapas de la técnica o en algún otro momento. Una manera de usar información de movimiento es omitir del cálculo de la estimación de desvanecimiento aquéllas partes del campo de referencia en el que se detecta el movimiento. Las sumas de error absoluto de ?abs(l(n)-R) ó ?abs(l(n)- R ) sirven como métrica para determinar la existencia y parámetros del desvanecimiento. Alternativamente, el codificador usa otras o adicionales métricas como la suma de errores cuadrados o errores cuadrados medios en el mismo término e error, o el codificador usa un término de error diferente. El codificador puede finalizar la estimación hasta la satisfacción de una condición de éxito como la descrita abajo. Para otra condición de salida, el codificador verifica si el parámetro de contraste C1 (C2) está cerca de 1.0 (en una impiementación, .99 < C < 1.02) en el principio o en una etapa intermedia de la estimación y, si es así, finaliza la técnica. El codificador comienza la estimación mediante el bajado de muestras del campo actual y el campo de referencia seleccionado (primero o segundo). En una impiementación, el codificador hace el bajado de muestras mediante un factor de 4 horizontalidad y verticalidad. Alternativamente, el codificador hace el bajado de muestras mediante otro factor, o no baja las muestras del todo. Entonces el codificador calcula la suma de error absoluto ?abs(ld(n)-Rd) en la versiones de resolución más baja ld(n) y Rd de los campos actuales y de referencia. La suma de error absoluto mide las diferencias en valores entre el campo actual de bajado de muestras y el campo de referencia del bajado de muestras. Si la suma de error absoluto es más pequeña que un cierto umbral (por ejemplo, una medición de diferencia predeterminada), el codificador concluye que ningún desvanecimiento ha ocurrido y que la compensación de desvanecimiento no se usa. De otra manera, el codificador estima los parámetros de brillantez B1 (o B2) y contraste C1 (o C2). Las primera estimaciones de corte se obtienen modelando ld(n) en términos de R¿ para diferentes valores de parámetros. Por ejemplo, los parámetros de brillantez y contraste se obtienen a través de regresiones en línea en el campo de bajado de muestra completo. O, el codificador usa otras formas de análisis de estadística como los menos cuadrados en total, menos cuadrados promedio, etc. para análisis más firme. Por ejemplo, el codificador minimiza el MSE o SSE del término de error ld(n)-Rd. En ciertas circunstancias, MSE y SSE no son firmes, de manera que el codificador también prueba la suma de error absoluto para el término de error. El codificador descarta altos valores de error para puntos particulares (que pueden ser debido a movimiento en lugar de desvanecimiento). Los primeros parámetros de corte son cuantificados y descuantificados para asegurar que mienten dentro del rango permisible y para probar el cumplimiento de la prueba. En algunas modalidades, por las imágenes típicas de ocho bits de profundidad, los parámetros son cuantificados a 6 bits cada uno. B1 (o B2) toma los valores de entero del 32 al 31 representados como un entero de seis bits firmado. C1 (o C2) varía desde 0.5 a 1.484375, en pasos uniformes de 0.015625 (1/64), correspondiendo a valores cuantificados 0 a través de 63 para C1 (o C2). La cuantificación se realiza circundando B1 (o B2) y C1 (o C2) al valor descuantificado válido más cercano y recogiendo el índice bin apropiado. El codificador calcula la suma de error absoluta límite original (S0rgBnd) y la suma de error absoluta límite remapeada (SRmPBnd). En algunas modalidades, el codificador calcula las sumas usando un análisis de adecuación de ajuste. Para conjunto aleatorio o pseudo aleatorio de pixeles en la resolución original, el codificador calcula la suma de error absoluta límite remapeada ?babs(l(n)-CfR-Bf), en donde babs (x) = min(abs(x), M) para alguna M límite como un múltiplo de parámetro de cuantificación del campo que se está codificando. El límite M es más alto cuando el parámetro de cuantificación es áspero y más bajo cuando el parámetro de cuantificación es fino. El codificador también acumula la suma de error absoluta límite original ?babs(l(n)-R). Si los recursos computacionales están disponibles, el codificador puede calcular las sumas de error límite en los campos completos. Basado en los valores relativos de las sumas de error absoluto límite remapeado y original, el codificador determina si se debe o no usar la compensación de desvanecimiento. Por ejemplo, en lagunas modalidades, el codificador no realiza compensación de desvanecimiento a menos que la suma de error absoluto límite remapeada sea menos que o igual al porcentaje de umbral s de la suma de error absoluto límite original. En una implementación, s = 95. Si se usa la compensación de desvanecimiento, el codificador re-calcula los parámetros de desvanecimiento, en esta ocasión basado en una regresión lineal entre l(n) y R, pero en la resolución completa. Para salvar el tiempo de cálculo, el codificador puede realizar la regresión lineal repetida en el muestreo aleatorio o pseudo aleatorio del campo. Otra vez, el codificador puede usar alternativamente otras formas de análisis estadístico (por ejemplo, menos cuadrado total, promedio de cuadrados, etc) para un análisis más firme. En algunas implementaciones, el codificador permite un caso especial en el que el valor reconstruido de C1 (o C2) es -1. El caso especial es señalado mediante el elemento de sintaxis para C1 (o C2) siendo igual a 0. En este modo "invertido", el campo de referencia se invierte antes de cambiar por B1 (B2) y la gama de B1 (o B2) es 193 a 319 en pasos uniformes de dos. Alternativamente, algunos o todos los parámetros de compensación de desvanecimiento usan otra representación, u otros y/o parámetros se usan.
F. Señalización A un nivel alto, la información de compensación de desvanecimiento señalado incluye (1) compensación de información de encendido/apagado y (2) parámetros de compensación. La información de encendido/apagado puede incluir en cambio: (a) si la compensación de desvanecimiento está permitida o no permitida en general (por ejemplo, para una secuencia completa); (b) si la compensación de desvanecimiento está permitida, si la compensación de desvanecimiento se usa o no para un campo-P particular; y (c) si la compensación de desvanecimiento se usa para un campo-P particular, cuyos campos de referencia deberían ajustarse mediante compensación de desvanecimiento. Cuando la compensación de desvanecimiento se usa para un campo de referencia, siguen los parámetros de compensación de desvanecimiento que se deben aplicar. 1. Señalización de encendido/apagado general En el nivel de secuencia, un bit indica si la compensación de desvanecimiento se habilita para la secuencia. Si está permitida la compensación de desvanecimiento los últimos elementos indican cuándo y cómo se realiza. Alternativamente, la compensación de desvanecimiento se habilita/inhabilita en algún otro nivel de sintaxis. O, la compensación de desvanecimiento es siempre permitida y la señalización de encendido/apagado general es saltada. 2. Señalización de encendido/apagado de campo-P Si la compensación de desvanecimiento es permitida, una o más señales adicionales indican cuándo usar la compensación de desvanecimiento, Entre los campos en una secuencia de video entrelazado típica, la ocurrencia de compensación de intensidad es rara. Es posible señalar el uso de compensación de desvanecimiento para un campo-P añadiendo un bit por campo (por ejemplo, un bit señalado en nivel de campo). No obstante, es más económico señalar el uso de compensación de desvanecimiento conjuntamente con otra información. Una opción es señalar el uso de compensación de desvanecimiento par un campo-P conjuntamente con un modo de vector de movimiento (por ejemplo, el número y configuración de vectores de movimiento, el esquema de interpolación de sub-pixel, etc.). Por ejemplo, un VLC indica conjuntamente un modo de vector de movimiento menos frecuente y la activación de compensación de desvanecimiento para un campo-P. Para detalles adicionales, véase la Publicación de Solicitud de Patente de E.U.A. No. 2003-0206593-A1 , titulada "Estimación/ compensación de desvanecimiento". O, el uso/no uso de compensación de desvanecimiento para un campo-P se señala con la información de modo de vector de movimiento como se describe en varias ¡mplementaciones combinadas más adelante. Véase sección XII, los elementos MVMODE y MVMODE2. Alternativamente, se usa otro mecanismo para señalización de información de encendido/apagado de compensación de desvanecimiento de campo-P. 3. Señalización de encendido/apagado de campo de referencia Si se usa la compensación de desvanecimiento para un campo-P, puede haber varias opciones para las cuales los campos de referencia experimentan compensación de desvanecimiento. Cuando un campo-P usa compensación de desvanecimiento y tiene campos de dos referencias, existen tres casos. La compensación de desvanecimiento se realiza para: (1) ambos campos de referencia; (2) sólo el primer campo de referencia (por ejemplo, el segundo campo de referencia más reciente temporalmente); o (3) sólo el segundo campo de referencia (por ejemplo, el campo de referencia más reciente temporalmente). La información de patrón de campo de referencia de compensación de desvanecimiento puede ser señalada como un FLC o VLC por campo-P. La tabla en la figura 44 muestra un grupo de VLCs para información de patrón para un elemento INTCOMPFIELD, que es señalado en un encabezado campo-P. Alternativamente, la tabla mostrada en la figura 47G u otra tabla se usa en el nivel de campo u otro nivel de sintaxis.
En algunas implementaciones, el patrón de campo de referencia para compensación de desvanecimiento se señala para todos los campos-P. Alternativamente, para un campo-P de campo de una referencia que usa compensación de desvanecimiento, la señalización del patrón de campo de referencia es saltada, ya que la compensación de desvanecimiento se aplica automáticamente al campo de referencia único. 4. Señalización de parámetro de compensación de desvanecimiento Si la compensación de desvanecimiento se usa para un campo de referencia, los parámetros de compensación de desvanecimiento para el campo de referencia son señalados. Por ejemplo, un primer conjunto de parámetros de compensación está presente en un encabezamiento para el campo-P. Si la compensación de desvanecimiento se usa para sólo un campo de referencia, el primer conjunto de parámetros es para ese campo de una referencia. Si se usa la compensación de desvanecimiento para campos de dos referencias del campo-P, no obstante, el primer conjunto de parámetros es para un campo de una referencia, y un segundo conjunto de parámetros de compensación está presente en el encabezamiento para compensación de desvanecimiento del otro campo de referencia. Cada conjunto de parámetros de compensación incluye, por ejemplo, un parámetro de contraste y un parámetro de brillantez. En una implementación combinada, el primer conjunto de parámetros incluye elementos LU SCALE1 y LU SH1FT1, que están presentes en el encabezamiento de campo-P con compensación de identidad es señalado para el campo-P. Si INTCOMPFIELD indica ambos campos de referencia o sólo el segundo campo de referencia más reciente usa compensación de desvanecimiento, LUMSCALE1 y LUMSHIFT1 se aplican al segundo campo de referencia más reciente. De otra manera (INTCOMPFIELD indica que sólo el campo de referencia más reciente usa compensación de desvanecimiento), LUSCALE1 Y LUMSHIFT1 son aplicados al campo de referencia más reciente. El segundo conjunto de parámetros, incluyendo los elementos LUMSCALE2 y LUMSHIT2, está presente en el encabezamiento del campo-P cuando la compensación de intensidad se señala para el campo-P e INTCOMPFIELD indica que ambos campos de referencia usan compensación de desvanecimiento. LUMSCALE2 y LUMSHIFT2 se aplican al campo de referencia más reciente. LUMSHIFT1, LUMSCALE1, LUMSHIFT2 y LUMSCALE2 corresponden a los parámetros B 1 , C1, B2 y C2., LUMSCALE1 , LUMSHIFT2, LUMSHIFT1 y LUMSCALE2 son cada uno señalados usando un FLC de seis bits. Alternativamente, los parámetros son señalados cuando VLCs. La figura 56 muestra un pseudocódigo para realizar compensación de desvanecimiento en un primer campo de referencia hasta LUMSHIFT1 , y LUMSCALE1. Un proceso análogo es realizado para compensación de desvanecimiento en un campo de segunda referencia basado en LUMSHIT2 y LUMSCALE2. Alternati amente, los parámetros de compensación de desvanecimiento tienen representación diferente y/o se señalan con un mecanismo de señalización diferente. G. Técnicas de estimación y señalización Un codificador como el codificador (2000) de la figura 20 o el codificador en el armazón (4200) de la figura 42 realiza estimación de desvanecimiento y señalización correspondiente para un campo-P entrelazado que tiene dos campos de referencia. Por ejemplo, el codificador realiza la técnica (4500) mostrada en la figura 45A. El codificador realiza la detección de desvanecimiento (4510) en el primero de los dos campos de referencia para el campo-P. Si se detecta el desvanecimiento (el trayecto "Sí" de la decisión 4512), el codificador realiza una estimación de desvanecimiento (4514) relativa al primer campo de referencia, que produce parámetros de compensación para el primer campo de referencia. El codificador también realiza detección (4520) de desvanecimiento en el segundo de los dos campos de referencia para el campo-P. Si se detecta el desvanecimiento (el trayecto "S" de la decisión 4522), el codificador realiza estimación de desvanecimiento (4524) para el campo-P relativo al segundo campo de referencia, que produce parámetros de compensación de desvanecimiento para el segundo campo de referencia. Por ejemplo, el codificador realiza detección y estimación de desvanecimiento como se describe en la sección titulada "Estimación de parámetros de desvanecimiento". Alternativamente, el codificador usa una técnica diferente para detectar el desvanecimiento y/o obtener parámetros de compensación de desvanecimiento. Si el campo-P actual tiene sólo un campo de referencia, las operaciones para el segundo campo de referencia pueden ser saltadas. El codificador señala (4530) si la compensación de desvanecimiento está encendida o apagada para el campo-P. Por ejemplo, el codificador codifica conjuntamente la información con información de modo de vector de movimiento para el campo-P. Alternativamente, el codificador usa otras y/o señales adicionales para indicar si la compensación de desvanecimiento está encendida o apagada para el campo-P. Si la compensación de desvanecimiento no está encendida para el campo-P actual (el trayecto "No" de la decisión 4532), la técnica (4500) finaliza. De otra manera (el trayecto "Sí" de la decisión 4532), el codificador señala un VLC que indica si la compensación de desvanecimiento se usa para ambos campos de frecuencia, sólo el primer campo de referencia. Alternativamente, el codificador usa otro mecanismo de señalización (por ejemplo, un FLC) para indicar el patrón de campo de referencia. En este trayecto, el codificador también señala (4542) un primer conjunto y/o segundo conjunto de parámetros de compensación, que fueron calculados en la estimación de desvanecimiento. Por ejemplo, el codificador usa la señalización como se describe en la sección XLF. Alternativamente, el codificador usa otra señalización. Aunque el codificador típicamente también realiza compensación de desvanecimiento, estimación de movimiento y compensación de movimiento, para simplificar, la figura 45A no muestra estas operaciones. Más aun, la estimación de desvanecimiento puede ser realizada antes o concurrentemente con estimación de movimiento. La figura 45A no muestra las varias maneras en las que la técnica (4500) puede ser integrada con otros aspectos de la codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. H. Técnicas de descodificación y compensación Un descodificador como el descodificador (2100) de la figura 21 o el descodificador en el armazón (4300) de la figura 43 realiza compensación de descodificación y desvanecimiento para un campo-P entrelazado que tiene campos de dos referencias. Por ejemplo, el descodificador realiza la técnica (4550) mostrada en la figura 45B. El descodificador recibe y descodifica (4560) una o más señales que indican si la compensación por desvanecimiento está encendida o apagada para el campo-P. Por ejemplo, la información se codifica conjuntamente con información de modo de vector de movimiento para el campo-P. Alternativamente, el descodificador recibe y descodifica otras y/o señales adicionales para indicar si la compensación de desvanecimiento está encendida o apagada para el campo-P. Si la compensación de desvanecimiento está encendida o apagada para el campo-P. Si la compensación de desvanecimiento no está encendida para el campo-P (el trayecto "No" de la decisión 4562), la técnica (4550) finaliza. De otra manera, (el trayecto "Sí" de la decisión 4562), el descodificador recibe y descodifica (4570) el patrón de campo de referencia para la compensación de desvanecimiento. Por ejemplo, el descodificador recibe y descodifica un VLC que indica si la compensación de desvanecimiento se usa para ambos campos de referencia, sólo el primer campo de referencia, o sólo el segundo campo de referencia. Alternativamente, el descodificador opera en conjunto con otro mecanismo de señalización (por ejemplo, un FLC) para determinar el patrón de campo de referencia.
En este trayecto, el codificador también recibe y descodifica (4572) un primer conjunto de parámetros de compensación de desvanecimiento. Por ejemplo, el descodificador funciona con señalización como se describe en la sección XI. F. Alternativamente, el descodificador funciona con otra señalización. Si la compensación de desvanecimiento se realiza para sólo uno de los dos campos de referencia (el trayecto "No" de la decisión 4575), el primer conjunto de parámetros es para el primer o segundo campo de referencia, como lo indica el patrón de campo de referencia. El descodificador realiza compensación de desvanecimiento (4592) en el campo de referencia indicado con el primer conjunto de parámetros de compensación de desvanecimiento y la técnica (4500) finaliza. De otra manera, la compensación de desvanecimiento se realiza para ambos campos de referencia (el trayecto "Sí" de la decisión 4575) y el descodificador recibe y descodifica (4580) un segundo conjunto de parámetros de compensación de desvanecimiento. Por ejemplo, el descodificador funciona con la señalización como se describe en la sección XI. F. Alternativamente, el descodificador funciona con otra señalización. En este caso, el primer conjunto de parámetros es para uno de los dos campos de referencia, y el segundo conjunto de parámetros es para el otro. El descodificador realiza compensación de desvanecimiento (4592) en un campo de referencia con el primer conjunto de parámetros, y realiza compensación de desvanecimiento (4582) en el otro campo de referencia con el segundo conjunto de parámetros. Para simplificar, la figura 45B no muestra las diversas maneras en las que la técnica (4550) puede estar integrada con otros aspectos de codificación y descodificación. Varias implementaciones combinadas se describen en detalle en la sección XII. XII. Implementaciones combinadas Las implementaciones combinadas para sintaxis, semántica y descodificadores de flujo de bits se describen ahora, con un énfasis en los campos-P. La siguiente descripción incluye una primera implementación combinada y una segunda implementación combinada alternativa. Además, la Solicitud de Patente de E.U.A. No. de Serie 10/857,473, archivado el 27 de mayo e 2004, muestra aspectos de una tercera implementación combinada. Aunque el énfasis está en los campos-P entrelazados, en varios lugares de esta sección, la aplicabilidad de elementos sintácticos, semánticos y de descodificación para otros tipos de película (por ejemplo, estructuras-P y -B, I, Bl, Pl entrelazados, y campos-B) es señalada.
A. Secuencias y semántica en la primera implementación combinada En la primera implementación combinada, una secuencia de video comprimido está formada de datos estructurados en capas jerárquicas: la capa de película, capa de macrobloque y capa de bloque. Una capa de secuencia precede la secuencia, y las capas de punto de entrada pueden ser intercaladas en la secuencia. Las Figuras 46A a la 46E muestran los elementos de flujo de bit que componen las diversas capas. 1. Sintaxis y semántica de capa de secuencia Un encabezamiento de nivel de secuencia contiene parámetros de nivel de secuencia usados para descodificar la secuencia de películas comprimidas. En algunos perfiles, los datos de secuencia relacionada se comunican al descodificador mediante la capa de transporte u otros medios. Para el perfil con campos-P entrelazados (el perfil avanzado), no obstante, esta sintaxis de encabezamiento es parte del flujo de bits de datos de video. La figura 46A muestra los elementos de sintaxis que forman el encabezamiento de secuencia para el perfil avanzado. Los elementos PROFILE (4602) especifican el perfil usado para codificar la secuencia y el nivel de codificación en el perfil, respectivamente. De particular interés para campos-P entrelazados, el elemento INTERLACE (4603) es un elemento de sintaxis de un bit que señala si el contenido de fuente es progresivo (INTERLACE = 0) o entrelazado (INTERLACE=1 ). Las estructura individuales pueden seguir siendo codificadas usando la sintaxis progresiva o entrelazada cuando I NTERLACE = 1. 2. Sintaxis y semántica de capa de punto de entrada Un encabezamiento de punto de entrada está presente en el perfil avanzado. El punto de entrada tiene dos propósitos. Primero, se usa para señalar un punto de acceso aleatorio dentro del flujo de bits. Segundo, se usa para señalar cambios en los parámetros de control de codificación. La figura 46B muestra los elementos de sintaxis que conforman la capa de punto de entrada. De particular interés para campos-P entrelazados, el indicador de distancia de estructura de referencia elemento REFDIST_FLAG (4611) es un elemento de sintaxis de un bit. REFDIST_flag = 1 indica que el elemento REFDIST (4624) está presente en los encabezamientos de película de campo l/l, l/P, P/l O P/P. REFDIST_FLAG = 0 indica que el elemento REFDIST (4624) no está presente en los encabezamientos de película de campo l/l, l/P, P/I O P/P. REFDIST_FLAG = 0 indica que el elemento REFDIST (4624) no está presente en los encabezamientos de película de campo l/l, l/P, P/l O P/P.
El elemento indicador de vector de movimiento extendido EXTENDED_MV (4612) es un elemento de un bit que indica si la capacidad de vector de movimiento extendido está encendida (EXTENDED_MV = 1) o apagada (EXTENDED_MV = 0). El elemento EXTENDED_DMV (4613) de indicador de gama de vector de movimiento diferencial es un elemento de sintaxis de un bit que está presente si EXTENDED_MV= . .Si EXTENDED_D V= , los diferenciales de vector de movimiento en una gama de de vector de movimiento diferencial son señalados en la capa de película dentro del segmento de punto de entrada. Si EXTENDED_DMV = 0, los diferenciales de vector de movimiento en la gama de vector de movimiento diferencial extendido no están señalados. La gama de vector de movimiento diferencial extendida es una opción para las películas -P y -B, incluyendo campos-P entrelazados y estructuras-P y campos-B entrelazados y estructuras-B. 3. Sintaxis y semántica de capa de película Los datos para una película consisten en un encabezamiento de película seguido por datos para la capa de macrobloque. La figura 46C muestra los elementos de flujo de bits que componen el encabezamiento de estructura para películas de campo entrelazado. En la siguiente descripción, el énfasis se coloca en los elementos usados con campos-P entrelazados, pero el encabezamiento mostrado en la figura 46C es aplicable a varias combinaciones de I-, P-, B-, y campos-BI. El elemento de modo de codificación de estructura FC (4621) está presente sólo en el perfil avanzado y sólo si la capa de secuencia INTERLACE (4603) tiene el valor 1. FCM
(4621) indica si la película se codifica como progresiva, campo-entrelazado o estructura-entrelazada. La tabla en la figura 47A incluye los VLCs usados para indicar el tipo de codificación de película con FCM. El elemento de tipo de película de campo FPTYPE
(4622) es un elemento de sintaxis de tres bits presente en los encabezamientos de película para películas de campo entrelazado. FPTYPE se descodifica de conformidad con la tabla en la figura 47B. Como muestra la tabla, una estructura entrelazada puede incluir dos campos-l entrelazados, un campo-l entrelazado y un campo-P entrelazado, dos campos-P entrelazados, dos campos-B entrelazados, un campo-B entrelazado y un campo-BI entrelazado o dos campos-Bl entrelazados. El elemento de primer campo superior TFF (4623) es un elemento de un bit presente en los encabezamientos de de película de perfil avanzado si el elemento de encabezamiento de secuencia PULLDOWN =1 y el elemento de encabezamiento de secuencia INTERLACE = 1. TFF = 1 implica que el campo superior es el primer campo descodificado. Si TFF = 0, el campo inferior es el primer campo descodificado. El elemento REFDIST de distancia de referencia P (4624) es un elemento de sintaxis de tamaño variable presente en los encabezamientos de película de campo entrelazado si el indicador de nivel de entrada REFDIST_FLAG = 1 y si el tipo de película es no B/B, B/B1, B1/B, B1/B1. Si REFDIST_FLAG = 0, REFDIST (4624) se ajusta al valor predeterminado de 0. REFDI9ST (4624) indica el número de estructuras entre la estructura actual y la estructura de referencia. La tabla en la figura 47C incluye los VLCs usados para valores REFDIST (4624). La última fila en la tabla indica las palabras código usadas para representar las distancia de estructura de referencia mayores a 2. Estas son codificadas como (binaria) 11 seguida por N-3 1s, en donde N es la distancia de estructura de referencia. El último bit en la palabra código es 0. El valor de REFDIST (4624) es menor que o igual a 16. Por e j e m p I o : N = 3, Palabra código VLC = 110, Tamaño VLC = 3, N = 4, Palabra código VLC = 1110, Tamaño VLC = 4, y N = 5, Palabra código VLC = 11110, Tamaño VLC = 5, El elemento de capa de película de campo Fl ELDPICLAYER (4625) son datos para uno de los campos separados entrelazados de la estructura entrelazada. Si la estructura entrelazada es una estructura P/P (fptype = 01 ), el flujo de bits incluye dos elementos FIELDPICLAYER (4625) para los dos campos-P entrelazados. La figura 46D muestra elementos de flujo de bit que conforman el encabezamiento de película de campo para una película de campo-P . entrelazado. El elemento de número de películas de referencia NUMREF (4631) es un elemento sintáctico de un bit presente en encabezamientos de campo-P entrelazados. Indica si un campo-P entrelazado tiene 1 película de referencia (NUMREF = 0) o 2 (NUMREF = 1). El indicador de pintura de campo de referencia REFFIELD (4632) es un elemento de sintaxis de un bit presente en los encabezamientos de campo-P entrelazado si NUMREF = 0. Indica cuál de las dos películas de referencia posibles usa el campo-P entrelazado. El indicador de gama MV MVRANGE (4633) es un elemento de sintaxis de tamaño variable que, en general, indica una gama amplia para vectores de movimiento (por ejemplo, desplazamientos horizontal y/o vertical más largo posible para los vectores de movimiento). El indicador de gama MV diferencial extendido DMVRANGE (4634) es un elemento de sintaxis de tamaño variable presente si EXTENDED_DMV= 1. La tabla en la figura 47D se usa para el elemento DMVRANGE (4634). Tanto MVRANGE (4633) y DMVRANGE (4634) se usan en la descodificación de diferenciales de vector de movimiento y gama de vector de movimiento diferencial ampliada es una opción para campos-P entrelazados, estructuras-P entrelazadas, campos-B entrelazados y estructuras-B entrelazadas. El elemento de modo de vector de movimiento VMODE
(4635) es un elemento de sintaxis de tamaño variable que señala uno de los cuatro modos de codificación de vector de movimiento o un modo de compensación de intensidad. Los modos de codificación de vector de movimiento incluyen tres modos "1MV" con diferentes reglas de interpolación de subpixel para compensación de movimiento. El 1MV significa que cada macrobloque en la película tiene por mucho un vector de movimiento. En el modo "M V-combinado", cada macrobloque en la película puede tener uno o cuatro vectores de movimiento, o puede ser saltado. Dependiendo del valor de PQUANT (un factor de cuantificación para la película), una de la tablas mostradas en la figura 47E se usa para el elemento MVMODE (4635). El elemento de vector de movimiento modo 2 MVMODE2 (4636) es un elemento de sintaxis e tamaño variable presente en los encabezamientos de campo-P si MVMODE (4635) señala compensación de intensidad. Dependiendo del valor PQUANT, cualquiera de las tablas mostradas en la figura 47F se usa para el elemento MVMODE (4635). El campo de compensación de identidad INTCOMFIELD (4637) es un elemento de sintaxis de tamaño variable presente en lo encabezamientos de película de campo-P entrelazado. Como se muestra en la tabla de la figura 47G, INTCOMPFIELD (4637) se usa para indicar qué campo(s) de referencia realizan compensación de intensidad. INTCOMPFIELD (4637) está presente aun si NUMREF = 0. Los elementos de escala de luminancia de película de campo 1 LUMSCALE1 (4638), escala de luminancia de película de campo 1 LUMSH1FT1 (4639), escala de luminancia de película de campo 2 LUMSCALE2 (4640), y cambio de luminancia de película de campo 2 LUMSHIFT2 (4641) tienen cada uno un valor de seis bits usados en compensación de intensidad. Los elementos LUMSCALE1
(4638) y LUMSHIFT1 (4639) están presentes si MVMODE (4635) señala compensación e identidad. Si el elemento
INTCOMPFIELD (4637) es ?' o ??', entonces LUMSCALE1 (4638) y LUMSHIFT1 (4639) se aplican al campo superior. De otra manera, LUMSCALE 1 (4638) y LUMSHIFT1 (4639) se aplican al campo inferior. Los elementos LUMSCALE2 (4640) y LUMSHIFT2 (4641) están presentes si MVMODE (4635) señala compensación de identidad y el elemento INTCOMPFIELD (4637) es ?'. LUMSCALE2 (4640) y LUMSHIFT2 (4641) se aplican al campo inferior. El elemento de la tabla de modo de macrobloque MBMODETAB (4642) indica cuál de las ocho tablas de código (tablas 0 a 7 como se especifica con el valor de tres bits) se usa para codificar/descodificar el elemento de sintaxis de modo de macrobloque MBMODE (4661) en la capa de macrobloque. Hay dos grupos de ocho tablas de código, y el ajuste usado depende de si los macrobloques 4MV son posibles o no en la película, como se indica por MVMODE (4635). La figura 47H muestra las ocho tablas disponibles para MBMODE (4661) en un campo-P entrelazado en modo MV combinado. La figura 47I muestra las ocho tablas disponibles para MBMODE (4661) en un campo-P entrelazado en un modo 1 M V. El elemento de tabla de vector de movimiento MVTAB (4643) es un campo de longitud fija. Para los campos-P entrelazados en los que NUMREF = 0, MVTAB (4643) es un elemento de sintaxis de dos bits que indica cuál de las cuatro tablas de código (tablas 0 a 3 como se especifica con el valor de dos bits) se usa para descodificar datos de vector de movimiento. Para campos-P entrelazados en los que NUMREF =1, MVTAB (4643) es un elemento de sintaxis de tres bits que indica cuál de las ocho tablas de código (tablas 0 a 7 como se especifica con el valor de tres bits) se usa para codificar descodificar los datos de vector de movimiento. En un encabezamiento de campo-P entrelazado, el elemento de la tabla de patrón de bloque 4MV 4MVBPTAB (4644) tiene un valor de dos bits presente si MVMODE (4635) (o MVMODE2 (4636), si MVMODE (4635) se ajusta a compensación de identidad) indica que la película es de tipo MV combinado. El elemento de sintaxis 4MVBPTAB (4644) señala cuál de las cuatro tablas (tablas 0 a 3 como se especifica con el valor de dos bits) se usa para el patrón de bloque 4MV de elemento e sintaxis 4MVBP (4664) en macrobloques 4MV. La figura 47J muestra las cuatro tablas disponibles para 4MVBP (4664). Un encabezamiento de estructura-P entrelazada (no mostrado) tiene varios de los mismos elementos que el encabezamiento de estructura entrelazada de campo codificado mostrado en la figura 46C y el encabezamiento de campo-P entrelazado mostrado en la figura 46D. Estos incluyen FCM (4621), MVRANGE (4633), DMVRANGE (4634), MBMODETAB (4642) Y MVTAB (4643), aunque la sintaxis y semántica exactas para estructuras-P entrelazadas pueden diferir de los campos-P entrelazados. Un encabezamiento de estructura-P entrelazada también incluye diferentes elementos para un tipo de película, cambiar entre modos 1MV y 4MV y señalización de compensación de intensidad. Desde que una estructura-P entrelazada puede incluir macrobloques de campo codificado con dos vectores de movimiento por macrobloque, el encabezamiento de estructura-P incluye un elemento 2MVBTAB de tabla de patrón de bloque de vector de dos movimientos. 2MVBPTAB es un valor de dos bits presente en las estructuras-P entrelazadas. Este elemento de sintaxis señala cuál de las cuatro tablas (tablas 0 a la 3 como se especifica con el valor de dos bits) se usa para descodificar el elemento de patrón de macrobloque 2MV (2MVBP) en macrobloques de campo codificado 2MV. La figura 47K muestra las cuatro tablas disponibles para 2 VBP. Los campos-B entrelazados y las estructuras-B entrelazadas tienen varios de los mismos elementos de campos-P entrelazados y estructuras-P entrelazadas. En particular, un campo-B entrelazado puede incluir un elemento de sintaxis 4MVBPTAB (4644). Una estructura-B entrelazada incluye ambos elementos de sintaxis 2 VBTAB y 4MVBTAB (4644). Una estructura-B entrelazada incluye ambos elementos de sintaxis 2MVBTAB y 4MVBTAB (4644), aunque la semántica de los elementos puede ser diferente. 4. Sintaxis y semántica de capa de macrobloque Los datos para un macrobloque consisten en un encabezamiento de macrobloque seguido de la capa de bloque. La figura 46E muestra la estructura de capa de macrobloque para campos-P entrelazados. El elemento de modo de macrobloque MBMODE (4661) es un elemento de tamaño variable. Indica conjuntamente información con el número de vectores e movimiento para un macrobloque y (en algunos casos) si los datos de diferencial de vector de movimiento están presentes para el macrobloque. Las Figuras 47H y 471 muestran tablas disponibles para MBMODE (4661) par aun campo-P entrelazado. El elemento de los datos de vector de movimiento MVDATA (4663) es un elemento de tamaño variable que codifica información de vector de movimiento (por ejemplo, diferenciales horizontales y verticales) para un vector de movimiento. Para un campo-P entrelazado, con dos campos de referencia, MVDATA (4663) también codifica información para seleccionar entre múltiples predictores de vector de movimiento posibles para el vector de movimiento. El elemento de patrón de bloque de vector de cuatro movimientos 4MVBP (4664) es un elemento de sintaxis de tamaño variable que puede ser presentado en macrobloques para campos-P, campos-B, estructuras-P y estructuras-B entrelazadas. En macroblques para campos-P, campos-B y estructuras-P, el elemento 4MVBP (4664) está presente si MBMODE (4661) indica que el macrobloque tiene vectores de 4 movimientos. En este caso, m 4mvbp (4664) indica cuál de los 4 bloques de luminancia contienen diferenciales e vector de movimiento no cero. En macrobloques para estructura-B entrelazadas, 4MVBP (4664) está presente si MBMODE (4661) indica que el macrobloque contiene 2 vectores de movimiento de 2 campos, y si el macrobloque es un macrobloque interpolado. En este caso, 4MVBP (4664) indica cuál de los vectores de cuatro movimientos (los vectores de movimiento delantero de campo superior e inferior, y los vectores de movimiento trasero de campo superior e inferior) está presente. El elemento de patrón de bloque de vector de dos movimientos 2MVBP (no mostrado) es un elemento de sintaxis de tamaño variable presente en macrobloques en estructuras-P y estructuras-B entrelazadas. En macrobloques de estructura-P entrelazada, 2MVBP está presente si MBMODE (4661) indica que el macrobloque tiene 2 vectores de movimiento de campo. En este caso, 2MVBP indica cuál de los 2 campos (superior e inferior) contiene diferenciales de vector de movimiento no cero. En macrobloques de estructura-B entrelazada, 2MVBP está presente si MBMODE (4661) indica que el macrobloque contiene 1 vector de movimiento y el macrobloque es un macrobloque interpolado. En este caso, 2mvbp indica cuál de los dos vectores de movimiento (vectores de movimiento delantero y trasero) están presentes. El elemento de datos de vector de movimiento de nivel de bloque BLKMDATA (4665) es un elemento de tamaño variable presente en ciertas situaciones. Contiene información de movimiento para un bloque de un macrobloque.
El elemento de predicción de vector de movimiento híbrido HYBRIDPRED (4666) es un elemento de sintaxis de un bit por vector de movimiento que puede estar presente en macrobloques en campos-P entrelazados. Cuando se usa predicción de vector de movimiento híbrido, HYBRIDPRED (4666) indica cuál de los dos predictores d vector se usa. 5. Sintaxis y semántica de capa de bloque La capa de bloque para películas entrelazadas sigue la sintaxis y la semántica de la capa de bloque para películas progresivas. En general, la información para coeficientes DC y AC de bloques y sub-bloques se señala en la capa de bloque. B. Descodificación en la primera im plementación combinada Cuando una secuencia de video consiste en estructuras de video entrelazadas o incluye una combinación de estructuras entrelazadas y progresivas, el elemento FC (4621) indica si una película dada es codificada como estructura progresiva, campos entrelazados o estructura entrelazada. Para una estructura codificada como campos entrelazados , FPTYPE (4622) indica si la estructura incluye dos campos-l entrelazados, un campo-I entrelazado y un campo-P entrelazado, dos campos-P entrelazados, dos campos-B entrelazados, un campo-b entrelazado y un campo Bl entrelazado o dos campos Bl entrelazados. Sigue la codificación de campos entrelazados. Las siguientes secciones se enfocan en el proceso de descodificación para campos-P entrelazados. 1. Referencias para descodificación de campo-P entrelazado Un campo-P entrelazado puede referenciar ya sea uno o dos campos descodificados previamente en compensación de movimiento. El elemento NUMREF (4631) indica si el campo P actual puede referenciar uno o dos de los campos de referencia previos. Si NUMREF = 0, entonces el campo-P actual puede sólo referenciar un campo. En este caso, el elemento REFFIELD (4632) sigue en el flujo de bits. REFFIELD (4632) indica cuál campo descodificado previamente se usa como una referencia. Si REFFIELD = 1, entonces el segundo más reciente temporalmente campo-I o campo-P se usa como referencia. Si el NUMREF = 1, entonces el campo-P actual usa los campos-l o campos-P más cercanos temporalmente (en orden de pantalla) como referencias. Los ejemplos de películas de campo de referencia para NUMREF = 0 /y NUMREF = 1 mostrados en la Figuras 24A - 24F, como se describe arriba, aplican a la primera implementación combinada. 2. Tipos de películas Los campos-P entrelazados pueden ser de dos tipos: 1MV o M V-combinado. En campos-P 1 MV, cada macrobloque es un macrobloque 1MV. En campos-P MV-combinados, cada macrobloque puede ser codificado como un macrobloque 1MV o un 4MV, como se indica por el elemento MBMODE (4661) en cada macrobloque. El modo 1MV o MV-combinado se señala para un campo-P entrelazado por los elementos MVMODE (4635) y MVMODE2 (4636). 3. Modos de macrobloque Los modos de macrobloque en campos-P entrelazados pueden ser uno de los 3 tipos posibles: 1MV, 4MV e intra. El elemento MBMODE (4661) indica el tipo de macrobloque (1MV, 4MV o intra) y también la presencia de datos CBP y MV. Dependiendo de si M VMODE/(4635)/MVMODE2 los elementos de sintaxis (4636) indican que el campo-P entrelazado es MV-combinado o todas 1 M V, MBMODE (4661) señala la información de la siguiente manera. La tabla en la figura 26 muestra cómo MBMODE (4661) señala información acerca de macrobloques en todos los campos-P 1MV. Como se muestra en la figura 47I, una de las 8 tablas se usa para codificar/descodificar MBMODE (4661) para campos-P 1MV. La tabla en figura 27 muestra cómo MBMODE (4661) señala información acerca de macrobloque en campos-P MV-combinados. Como se muestra en la figura 47H, una de las 8 tablas se usa para codificar/descodificar MBMODE (4661) para campos-P MV-combinados.
Así, los macrobloques 1 V pueden presentarse en campos-P entrelazados 1-MV y M V-combinados. Un macrobloque 1MV es uno en donde un vector de movimiento único representa el desplazamiento entre las películas actuales y de referencia para todos los 6 bloques en el macrobloque. Para los macrobloques 1 V, el elemento MBMODE (4661) indica tres aspectos: (1) el tipo de macrobloque es 1 M V; (2) si el elemento CBPY (4662) está presente para el macrobloque; y (3) si el elemento MVDATA (4663) está presente para el macrobloque. Si el elemento (4661) indica que el elemento CBPCY (4662) está presente, entonces el elemento cbpcy (4662) está presente en la capa del macrobloque en la posición correspondiente. CBPCY (4662) indica cuál de los 6 bloques están codificados en la capa de bloque. Si el elemento indica MBMODE (4661indica que CBPCY no está presente (4662), entonces CBPCY (4662) se asume como igual a 0 y ningún dato de bloque está presente para ninguno de los 6 bloques en el macrobloque. Si el elemento MBMODE (4661) indica que el elemento
MVDATA (4663) está presente, entonces el elemento MVDATA (4663) está presente en la capa de macrobloque en la posición correspondiente. El elemento MVDATA (4663) codifica el diferencial de vector de movimiento, que se combina con el predictor de vector de movimiento para reconstruir el vector de movimiento. Si el elemento MBMODE
(4661) indica que el elemento VDATA (4663) no está presente, entonces el diferencial de vector de movimiento se asume como cero y por lo tanto es igual al predictor de vector de movimiento. Los bloques 4MV se presentan en campos-P mv COMBINADOS. Un macrobloque 4MV es uno en donde cada uno de los 4 bloques de luminancia en el macrobloque pueden tener un vector de movimiento asociado que indica el desplazamiento entre las películas actuales y de referencia para dicho bloque. El desplazamiento para los bloques de crominancia se deriva desde los 4 vectores de movimiento de luminancia. La diferencia entre los bloques actuales y los de referencia se codifica en la capa de bloque. Para los macrobloques 4MV, el elemento MBMODE (4661) indica dos aspectos: (1) que el tipo de macrobloque es 4MV; y (2) si el elemento CBPCY (4662) está presente. Los intramacrobloques pueden presentarse en campos-P 1MV o MV-com binados. Un intra macrobloque es uno en el que todos los seis bloques están codificados sin referirse a ningún dato de película previa. Para intra macrobloques, el elemento MBMODE (4661) indica dos aspectos: (1) que el tipo de macrobloque es intra; y (2) si el elemento CBPCY
(4662) está presente. Para macrobloques intra, el elemento CBPCY (4662), cuando está presente, indica cuál de los 6 bloques tiene datos de coeficiente AC codificados en la capa de bloque. El coeficiente DC sigue presente para cada bloque en todos los casos. 4. Patrones de bloque de vector de movimiento El elemento 4MVBP (4664) indica cuál de los 4 bloques de luminancia contiene diferenciales de vector de movimiento. 4MVMP (4664) descodifica a un valor entre 0 y 15, que cuando se expresa como valor binario, representa un elemento de sintaxis de bit que indica si está presente el vector de movimiento para el bloque de luminancia correspondiente. La tabla en la figura 34 muestra una asociación de bloques de luminancia a bits en 4MVMP (4664). Como se muestra en la figura 47J, una de las 4 tablas se usa para codificar/descodificar 4MV P (4664). Para cada una de las 4 posiciones de bit en el 4MVMP
(4664) , un valor de 0 indica que no hay ningún diferencial de vector de movimiento (en BLKMVDATA) presente para el bloque en la posición correspondiente, y el diferencial del vector de movimiento se asume en 0. Un valor de 1 indica que un diferencial de vector de movimiento (en BLKMDATA) está presente para el bloque en la posición correspondiente. Por ejemplo, si 4MVMP (4664) descodifica a un valor binario de 1100, entonces el flujo de bits contiene BLMKDATA
(4665) para bloques 0 y 1, y ningún BLMKDATA (4665) está presente para bloques 2 y 3. El 4MVMP (4664) se usa similarmente para indicar la presencia/ausencia de información de diferencial de vector de movimiento para macrobloques 4MV en campos-B entrelazados y estructura-P entrelazado. Un macrobloque de campo codificado en una estructura-P entrelazada o estructura-B entrelazada puede incluir 2 vectores de movimiento. En el caso de los 2 macrobloques MV., el elemento 2MVBP indica cu{al de los dos campos tiene vectores de movimiento diferencial no cero. Como se muestra en la figura 47K, una de las 4 tablas se usa para codificar/descodificar 2 VBP. 5. Sistema de coordinación de película de campo En las siguientes secciones, las unidades de vector ge movimiento se expresan en las unidades de película de campo. Por ejemplo, si el componente vertical es un vector de movimiento, indica que el desplazamiento es +6 (en unidades de un cuarto de peí), entonces esto indica un desplazamiento de líneas de película de 1 ½ campo. La figura 48 muestra la relación entre el componente vertical del vector de movimiento y la ubicación espacial para ambas combinaciones de polaridades actuales y de campo de referencia (opuestas y las mismas). La figura 48 muestra una columna vertical de pixeles en los campos actual y de referencia. Los círculos representan posiciones de píxel de entero y las x's representan posiciones de un cuarto de píxel. Un valor de 0 indica ningún desplazamiento vertical entre las posiciones de campo actual y de referencia. Si los campos actual y de referencia son polaridades opuestas, entonces el vector vertical 0 apunta a una posición a la mitad entre las líneas de campo (un cambio de ½ píxel) en el campo de referencia. Si los campos actual y de referencia son de la misma polaridad, entonces el vector vertical 0 apunta a la línea de campo correspondiente en el campo de referencia. 6. Decodificación de diferenciales de vector de movimiento Los elementos MVDATA (4663) y BL MDATA (4665) codifican información de movimiento codificada para el macrobloque o bloques en el macrobloque. Los macrobloques 1MV tienen un elemento MVDATA (4663) y los macrobloques 4MV pueden tener entre cero y cuatro BLKMDATA (4665). El proceso de cálculo de diferencial de vector de movimiento de MVDATA (4663) o BLKMDATA (4665) es diferente para el caso de una referencia (NUMREF = 0) y el caso de dos referencias (NUMREF = 1). En las películas de campo que sólo tienen campo de una referencia, cada elemento de sintaxis MVDATA (4663) o BLKMVDATA (4665) codifica conjuntamente dos aspectos: (1) el componente diferencial de vector de movimiento horizontal; y 2) el componente diferencial de vector de movimiento vertical. El elemento MVDATA (4663) o BLKMDATA (4665) es un VLC seguido por un FLC. El valor de VLC determina el tamaño de FLC. El elemento de sintaxis MVTAB (4643) especifica el elemento de sintaxis que usó la tabla para descodíficar el VLC. La figura 49A muestra el pseudocódigo que ilustra la descodificación de diferencial de vector de movimiento para vectores de movimiento de bloques o macrobloques en películas de campo que tienen campo de una referencia. En el pseudocódigo, los valores dmv_x y dmv_y son calculados, en donde dmv_x es el componente del vector de movimiento horizontal diferencial y dmv_y es el componente de vector de movimiento vertical diferencia. Las variables k_x y k_y son valores de longitud fija que dependen de la gama de vector de movimiento como la define MVRANGE (4633) de conformidad con la tabla mostrada en la figura 49B. La variable extend_x es para un diferencial de vector de movimiento horizontal de gama ampliada, y la variable extend_y es para un diferencial de vector de movimiento vertical de gama ampliada. Las variables extend_x y extend_y se derivan del elemento sintáctico DMVRANGE (4634). Si DMVRANGE (4634) indica que se usa la gama ampliada para el componente horizontal, entonces extend_x = 1. De otra manera, extend_x, = 0. Similarmente, si DMVRANGE (4634) indica que se usa la gama ampliada para componente vertical, entonces extend_y = 1. De otra manera, extend_y = 0. La offset_table es una configuración definida como sigue: offset_table (9) = (0, 1, 2, 4, 8, 16, 32, 64, 128), y offset_table2 (9) = (0, 1, 3, 7, 15, 31, 63, 127, 255) en donde se usa la offset_tabla2() para un componente horizontal o vertical cuando la gama de diferencial se amplíe para ese componente. Aunque las Figuras 49A y 49B muestran descodificación de vector de movimiento diferencial ampliada para campos-P, la descodificación del vector de movimiento diferencial ampliado también se usa para campos-B entrelazados, estructuras-P entrelazadas, y estructuras-B entrelazadas en la primera implementación combinada. En las películas de campo que tienen campos de dos referencias, cada elemento de sintaxis VDATA (4663) o BLKMVDATA (4665) codifica conjuntamente tres aspectos: (1) el componente diferencial de vector de movimiento horizontal; 2) el componente diferencial de vector de movimiento vertical; y (3) si se usa el predictor dominante o no dominante, por ejemplo, cuál de los dos campos es referenciado por el vector de movimiento. Como en el caso del campo de una referencia, el elemento MVDATA (4663) o BLKMDATA (4665) es un VLC seguido por un FLC. El valor de VLC determina el tamaño de FLC y el elemento de sintaxis MVTAB (4643) especifica la tabla usada para descodificar el VLC. La figura 50 muestra el pseudocódigo que ¡lustra el diferencial de vector de movimiento y descodificación de predictor dominante/no dominante para vectores de movimiento de bloques o macrobloques en películas de campo que tienen campo de dos referencias. En el pseudocódigo, el predictor_fIag de valor es un indicador binario que indica si se usa el predictor del vector de movimiento dominante/no dominante. Si predictor_flag = 0 se usa el predictor dominante y si predictor_flag = 1, se usa el predictor no dominante. Varias de las demás variables (incluyendo dmv_x, dmv_y, k,_x, k_y, extend_x, extend_y, offset_table(), y offset_table2()) se describen para el caso de campo de una referencia. El size_table de tabla es una configuración definida de la siguiente manera: Size_table(16) = (0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
7, 7). 7. Predictores de vector de movimiento Un vector de movimiento se calcula añadiendo el diferencial del vector de movimiento calculado en la sección previa a un predictor de vector de movimiento. El predictor se calcula desde hasta tres vectores de movimiento vecinos. Los cálculos para predictores de vector de movimiento se hacen en unidades de ¼ de píxel, aun si el modo de vector de movimiento es de medio peí. En un campo-P entrelazado 1MV, hasta tres vectores de movimiento vecino se usan para calcular el predictor para el macrobloque actual. Las locaciones de macrobloques vecinos con vectores de movimiento considerados se muestran en las Figuras 5A y 5B y se describen para estructuras-P progresivas 1MV. En un campo-P entrelazado MX combinado, se usan hasta tres vectores de movimiento vecino para calcular el predictor para el bloque o macrobloque actual. Las ubicaciones de bloques y/o macrobloques vecinos con vectores de movimiento considerados se muestran en la Figuras 6A-10 y se describen para estructuras-P progresivas combinadas-M V. Si el elemento de sintaxis (4631) NUMREF en el encabezamiento de la película es 0, entonces el campo-P entrelazado actual puede referirse a sólo uno de los campos codificados previamente. Si NUMREF = 1, entonces el campo-P entrelazado actual puede referirse a las películas de campo de referencia más recientes. En el caso anterior, un predictor único se calcula para cada vector de movimiento. En el último caso, se calculan dos predictores de vector de movimiento. El pseudocódigo en las Figuras 51A y 51B describe cómo se han calculado los predictores de vector de movimiento para el caso de campo de una referencia. Las variables fieldpred_x y fieldpred_y en el pseudocódigo representan los componentes horizontal y vertical del predictor de vector de movimiento. En los campos-P entrelazados de campos de dos referencias (NU REF = 1), el campo actual puede referenciar los dos campos de referencia más recientes. En este caso, dos predictores de vector de movimiento son calculados para cada macrobloque Inter. Codificado. Un predictor es del campo de referencia de la misma polaridad y el otro es del campo de referencia con la polaridad opuesta. Del mismo campo de polaridad y campo de polaridad opuesto, uno es el campo dominante y el otro es el campo no dominante. El campo dominante es el campo que contienen la mayoría de los candidatos del predictor de vector de movimiento. En el caso de un enlace, el vector de movimiento derivado del campo opuesto se considera como predictor dominante. Los macrobloques intra codificados no son considerados en el cálculo del predictor dominante/no dominante. Si todos los macrobloques de predictor candidato son intra codificados, entonces los predictores de vector dominante no dominante se ajustan a 0 y el predictor dominante es tomado para estar desde el campo opuesto. El pseudocódigo en las Figuras 52A - 52F describe la manera en la que los predictores de vector de movimiento se calculan para el caso de campo de dos referencias., dado los candidatos del predictor de vector de 3 movimientos. Las variables samefieldpred_x y samefieldpred_y representan los componentes horizontal y vertical del predictor de vector de movimiento del mismo campo, y las variables oppsitefieldpred_x y oppositefieldpred_y representan los componentes horizontal y vertical del predictor del vector de movimiento del campo opuesto. Las variables de conteo similar y de conteo opuesto se inicializan a 0. El predictor dominante variable indica qué campo contiene el predictor dominante. El valor predicto_f lag (descodificado desde el diferencial de vector de movimiento) indica si se usa el predictor dominante o el no dominante. El pseudocódigo en las figuras 52G y 52H muestra las operaciones para escalar operaciones referenciadas en el pseudocódigo en figuras 52A - 52F, que se usan para derivar el predictor de un campo del predictor de otro campo. Los valores de SCALEOPP, SCALESAM E 1 , SCALESAM E2, SCALEZONE1_X, SCALEZONE1_Y, ZONE1 OFFSET_X y ZONE1 OFFSET_Y se muestran en la tabla de la figura 52I para caso en el que el campo actual sea el campo primero y en la tabla en la figura 52I para el caso en el que el campo actual es el primer campo, y en la tabla en la figura 52J para el caso en el que el campo actual sea el segundo campo. La distancia de estructura de referencia se codifica en el campo REFDIST (4624) en el encabezamiento de la película. La distancia de estructura de referencia es REFDIST + 1. Las figuras son pseudocódigos y tablas 52K a 52N para operaciones de escalamiento que son alternativas a aquéllas mostradas en las figuras 52H a 52J. En lugar de escalar pseudocódigo y tablas en figuras 52H a 52J (pero aún usando el pseudocódigo en figuras 52A a 52G), se usa el pseudocódigo de escalamiento y tablas en figuras 52K a 52N. Se obtiene la distancia de estructura de referencia desde un elemento de encabezamiento de capa de campo. El valor de N depende de la gama de vector de movimiento, como se muestra en la tabla de la figura 52N. 8. Predicción de vector de movimiento híbrido El predictor de movimiento calculado en la sección previa se prueba referente a los predictores A (superior) y C (izquierdo) para determinar si el predictor está explícitamente codificado en el flujo de bits. Si es así, entonces un bit está presente que indica si se usa el predictor A o el predictor C como el predictor de vector de movimiento. El pseudocódigo en la figura 53 muestra descodificación de predicción de vector de movimiento híbrido. En el pseudocódigo, las variables predictor_x y predictor_pre_y son los predictores del vector de movimiento horizontal y vertical, respectivamente, como se calcularon en la sección anterior. Las variables prdictor_post_x y pred ictor_post_y son lo predictores de vector de movimiento horizontal y vertical, respectivamente, después de verificar la predicción de vector de movimiento híbrido. Las variables predictor_pre, predictor_post, predictorA, predictorB y predictorC todos representan campos de polaridad indicada mediante el valor del predictor_flag. Por ejemplo, si el predictor_flag indica que se usa el predictor de campo opuesto, entonces: predictor_pre_x = oppositefieldpred_x predictor_pre_x = oppositefieldpred_y predictor_A_x = oppositefieldpredA_x predictor_A_y = oppositefieldpredA_y predictor_B_x = oppositefieldpredB_x predictor_B_y = oppositefieldpredB_y predictor_C_x = oppositefieldpredC_x predictor_C_y = oppositefieldpredC_y De igual manera si el predictor_flag indica que se usa el mismo predictor, entonces: predictor_pre_x = samef ieldpred_x predictor_pre_x = samef ieldpred_x predictorA_x = samefieldpred_x predictorA_y= samefieldpred_y predictorB_x = samefieldpred_x predictorB_y = samefieldpred_y predictorC_x = samefieldpred_x predictorC_y = samefieldpred_y en donde los valores de oppositefieldpred y samefieldpred se calculan como se describen en la sección previa 9. Reconstrucción de vectores de movimiento de luminancia Para ambos macrobloques 1MV y 4MV un vector de movimiento de luminancia se reconstruye añadiendo el diferencial al predictor de la siguiente manera, cuando las variables range_x y range_y dependen de MVRANGE (4633) y se especifican en la tabla que se muestra en la figura 49B. Para NUMREF = 0 (un campo-P entrelazado de campo de una referencia): mv_x = (dmv x + predictor_x) smod range_x, y m _y = (dmv_y + prledictor_y) smod (range_y) Para NUMREF = 1 (campo-P entrelazado de campo de dos referencias): mv_x = (dmv_x + predíctor_x) smod range_x, y mv_y = (d mv_y + prledictor_y) smod (range_y/2) Si el campo-P entrelazado usa películas de dos referencia (NUMREF = 1), entonces el predictor_flag (derivado al descodificar el diferencial de vector de movimiento) se combina con el valor de dominantpredictor (derivado al predecir vector de movimiento) para determinar qué campo se usa como referencia, como se muestra en la figura 54. En un macrobloque 1MV, hay un vector de movimiento único para los 4 bloques que conforman el componente de luminancia del macrobloque. Si el elemento de sintaxis MBMODE (4661) indica que no hay datos MV presentes en una capa de macrobloque, entonces dmv_x = Oy dmv_y = 0 (mv_x = predictor_x y mv_y = predictor_y). En un macrobloque 4MV, cada uno de ios bloques de luminancia ínter codificados en el macrobloque tiene su propio vector de movimiento. Por lo tanto, existen 4 vectores de movimiento de luminancia en cada macrobloque 4MV. Si el elemento sintáctico 4MVBP (4664) indica que no existe información de vector de movimiento para un bloque, entonces dmv_x = 0 y dmv_y para ese bloque (mv_x = predictor_x y mv_y = predictor_y). 10. Derivación de vectores de movimiento de crominancia Los vectores de movimiento de crominancia se derivan de los vectores de movimiento de luminancia. Los vectores de movimiento de luminancia se reconstruyen en dos pasos. Como un primer paso, el vector de movimiento de crominancia nominal se obtiene combinando y escalando los vectores de movimiento de luminancia de manera adecuada). La escala se realiza de tal manera que se prefieren Los offset de medio pixel a los offsets de un cuarto de pixel. En la segunda etapa, se usa un elemento de sintaxis FASTUVMC de un bit para determinar si es necesario un rodeo posterior de los vectores de movimiento de crominancia. Si FASTUVMC = 0, no se realiza ningún rodeo en la segunda etapa. Si FASTUVMC = 1, los vectores de movimiento de crominancia que están en offsets de un cuarto de peí serán rodeados a las posiciones de medio y un cuarto de peí más cercanas. Sólo el filtrado bilineal se usa para todas las interpolaciones de crominancia. Las variables cmv_x y cmv_y denotan los componentes de vector de movimiento de crominancia, respectivamente, y lmv_x y lmv_y denotan los componentes del vector de movimiento de luminancia, En un macrobloque 1MV, los vectores de movimiento de crominancia se derivan desde los vectores de movimiento de luminancia de la siguiente manera: cmv_x = (lmv_x + round(1mv_x & 3))> >1, y cmv_y = (lmv_y + round(1mv_x & 3))> >1, en donde round (0) = 0, round (1) = 0, round (2) = 0, round (3) = 1. El pseudocódigo en las figuras 55A y 55B muestra la primera etapa de cómo se derivan los vectores de movimiento de crominancia desde la información de movimiento en los cuatro bloques de luminancia en macrobloques 4MV. En el pseudocódigo, ¡x e iy son variables temporales. La figura 55A es un pseudocóldigo para la derivación del vector de movimiento de crominancia para los campo-P entrelazados de campo de una referencia, y la figura 55B es un pseudocódigo para derivación de vector de movimiento de crominancia para campos-P entrelazados de campo de dos referencias. 11. Compensación de intensidad Si el MVMODE (4635) indica que la compensación de intensidad se usa para el campo-P entrelazado, entonces los pixeles en uno o ambos campos de referencia se remapean antes de usarlos como predictores para el campo-P actual. Cuando se usa la compensación de intensidad, los elementos de sintaxis LUMSCALE1 (4638) y LU SHIFT 1 (4639) se presentan en el flujo de bits para un primer campo de referencia, y los elementos LUMSCALE2 (4640) y LU SHIFT2 (464) pueden estar presentes además de un segundo campo de referencia. El pseudocódigo en la figura 56 muestra cómo se usan los valores LUMSCALE1 (4638) y LUMSHIFT1 (4639) para construir la tabla de consulta que se usa para remapear los pixeles de campo de referencia para el primer campo de referencia. (El pseudocódigo se aplica similarmente para LUMSCALE2 (4640) y LUMSHIFT2 (4641) para el segundo campo de referencia). El componente Y del campo de referencia se remapea usando la tabla LUTY (), y los componentes C b/C r se remapean usando la tabla LUTUV () de la siguiente manera: pY=LUTY[pYl y ~¡>uy=WTUV[pvr],
en donde ?? es el valor de pixel de luminancia original en el campo de referencia, Pr es el valor de pixel de luminancia remapeado en el campo de referencia, Puv es el valor de pixel original Cb o Cr en el campo de referencia, pm es el valor de pixel remapeado Cb o Cr en el campo de referencia. 12. Descodificación restante El descodificador descodifica el elemento CBPCY
(4662) para un macrobloque, cuando dicho elemento está presente, en donde el elemento CBPCY (4662) indica la presencia/ausencia de datos coeficientes. En la capa de bloque, el descodificador descodifica datos coeficientes para los bloques inter codificados y bloques intra codificados (excepto para macrobloques 4MV). Para reconstruir un bloque inter codificado, el descodificador: (1) selecciona un tipo de resultado (8x8, 8x4, 4x8 ó 4x4), (2) descodifica patrón(es) de sub-bloque, (3) descodifica coeficientes, (4) realiza un resultado inverso, (5) realiza cuantificación inversa, (6) obtiene la predicción para el bloque, y (7) añade la predicción y el bloque de error. C. Secuencia y semántica en la segunda implementación combinada En la segunda implementación combinada, una secuencia de video comprimida se conforma de datos estructurados y capa de bloque. Una capa de secuencia precede la secuencia. Las Figuras 57A a la 57C muestran elementos de flujo de bits que conforman varias capas. 1. Semántica y sintaxis de capa de secuencia Un encabezamiento de nivel de secuencia está disponible para descodificador ya sea como información de configuración de descodificado comunicado externamente o como parte de flujo de bits de datos de video. La figura 57A es un diagrama de sintaxis para flujo de bits de capa de secuencia que muestra los elementos que conforman la capa de secuencia. El elemento PROFILE (5701) perfil de clip específica el perfil de codificación usado para producir el clip. Si el PROFILE es el perfil "avanzado", el elemento LEVEL (5702) nivel de clip especifica el nivel de codificación para el clip. Alternativamente, (por ejemplo, para otros perfiles) el nivel de clip se comunica al descodificado por medios externos. El elemento INTERLACE (5703) es un campo de un bit que está presente si el PROFILE es el perfil avanzado. INTERLACE (5703) especifica si el video está codificado en modo progresivo o entrelazado. Si INTERLACE = 0, entonces las estructuras de video se codifican en modo progresivo. Si I INTERLACE= 1 , entonces las estructuras de video se codifican en modo entrelazado. Si el PROFILE (5701) no es el perfil avanzado, el video se codifica en modo progresivo.
El elemento EXTENDED_MV (5704) de vectores de movimiento ampliado es un campo de un bit que indica si la capacidad de vector de movimiento ampliado está encendida o apagada. Si EXTENDED_MV=0, los vectores de movimiento no tienen gama ampliada. 2. Semántica y sintaxis de capa de película Los datos para una película consisten en un encabezamiento de película seguido de datos para la capa de macrobloque. La figura 57B es un diagrama de sintaxis para el flujo de bits de la capa de película que muestra los elementos que conforman la capa de película para campo-P entrelazado. El elemento PTYPE (5722) de tipo de película es ya sea un campo de un bit o un campo de tamaño variable. Si no hay películas-B, entonces sólo las películas -I y -P se presentan en la secuencia, y PTYPE se codifica con un bit único. Si PTYPE = 0, entonces el tipo de película es P. Si el número de películas-B es mayor a 0, entonces el PTYPE (5722) es un campo de tamaño variable que indica el tipo de película de la estructura. Si PTYPE=1, entonces el tipo de película es P. Si PTYPE = 01 en binario, entonces el tipo de película es I. Y, si PTYPE = 00 en binario, entonces el tipo de película es B. El número de elemento NUMREF (5731 ) de películas de referencia es un elemento de sintaxis de un bit presente en los encabezamientos de campo-P. Esto indica si el campo-P tiene películas de referencia 1 (NUMREF = 0) ó 2 (NUMREF=1 ). El indicador de película de campo de referencia REFFIELD (5732) es un elemento de sintaxis de un bit presente en los encabezamientos de campo-P entrelazados si NUMREF = 0. Esto indica cuál de las dos posibles películas de referencia usa el campo-P entrelazado.
El indicador de gama MV ampliada MVRANGE (5733) es un elemento de sintaxis de tamaño variable presente en pelíeulas-P de secuencias codificadas que usa un perfil particular (perfil "principal") y par el cual el elemento BROADCAST se ajusta en 1. En general, MVRANGE (5733) indica una gama ampliada para vectores de movimiento (por ejemplo, desplazamientos verticales y/o horizontales lo más largos posible para los vectores de movimiento). MVTRANGE (5733) se usa al descodificar diferenciales de vector de movimiento. El elemento MVMODE (5735) de modo de vector de movimiento es un elemento de sintaxis de tamaño variable que señala uno de los cuatro modos de codificación de vector de movimiento o uno de los modos de compensación de identidad. Los modos de codificación de vector de movimiento incluyen tres modos "1MV" con diferentes reglas de interpolación de sub-pixel para compensación de vector.
El 1MV significa que cada macrobloque en la película tiene como máximo un vector de movimiento. En el modo "MV-combinado", cada macrobloque en la película puede tener ya sea uno o cuatro vectores de movimiento, o ser saltado. Dependiendo del valor de PQUANT (un factor de cuantificación para la película), ya sea una de las tablas mostradas en la figura 47E se usa para el elemento MVMODE (5735). El elemento 2 MVMODE2 (5736) de modo de vector de movimiento es un elemento de sintaxis de tamaño variable presente en los encabezamientos de campo-P entrelazado si MVMODE (5735) señala compensación de intensidad. Las tablas anteriores (menos los códigos por compensación de identidad) pueden usarse para MVMODE2 (5736). La escala de luminancia LUMSCALE (5738) y los elementos LUMSHIFT (5739) de cambio de luminancia tienen cada uno un valor de seis bits usado en compensación e intensidad. LUMSCALE (5738) y LUMSHIFT (5739) están presentes en un encabezamiento de campo-P entrelazado si MVMODE (5735) señala compensación de intensidad. El elemento MBMODETAB (5742) de tabla de modo de macrobloque es un campo de dos bits para un encabezamiento de campo-P entrelazado. MBMODETAB (5742) indica cuál de las cuatro tablas de código (tablas 0 a la 3 como se especificó con el valor de dos bits) se usa para codificar/descodificar el elemento de sintaxis MBMODE (5761 en la capa de macrobloque. El elemento MVTAB (5743) de tabla de vector e movimiento es un campo de dos bits para campos-P entrelazados. MVTAB (5743) indica cuál de las cuatro tablas de código (tablas 0 a 3 como se especificó con el valor de dos bits) se usa para codificar/descodificar los datos de vector de movimiento. El elemento 4MVBPTAB (5744) de tabla de patrón de bloque 4MV es un valor de dos bits presente en un campo-P entrelazado si MVMODE (5735) (o MVMODE2 (5736), si MVMODE (5735) se ajusta a compensación de intensidad indica que la película es de tipo MV combinado. 4MVBPTAB (5744) señala cuál de las cuatro tabla de código (tablas 0 a 3 como se especifica con el valor de dos bits) se usa para codificar/descodificar el campo 4MVBP de patrón de bloque 4MV en macrobloques 4MV. Un encabezamiento de estructura-P entrelazada (no mostrada) tiene varios de los mismos elementos que el encabezamiento de campo-P entrelazado mostrado en la figura 57B. Estos incluyen PTYPE (5722), MBMODETAB (5742), MVTAB (5743) y 4MVBTAB (5744), aunque la semántica y sintaxis exacta para estructuras-P entrelazadas pueden diferir de los campos-P entrelazados. Por ejemplo, 4MVBPTAB es otra vez un campo de dos bits que indica cuál de las cuatro tablas de código (tablas 0 a 3 como se especifica con el valor de dos bits) se usa para codificar/descodificar el elemento 4MVBP de patrón de bloque 4MV en macrobloques 4MV. Un encabezamiento de estructura-P entrelazada también incluye diferentes elementos para cambiar entre los modos 1 MV y 4MV y para señalización de compensación de intensidad. Como una estructura-P entrelazada puede incluir macrobloques de campo codificado con vectores de dos movimientos por macrobloque, el encabezamiento de estructura-P entrelazada incluye un elemento 2MVBPTAB de tabla de patrón de bloque de vector de dos movimientos. 2MVBPTAB es un campo de dos bits presente en estructuras-P entrelazadas. Este elemento de sintaxis señala cuál de las cuatro tablas (tablas 0 a 3 como se especifica con el valor de dos bits) se usa para codificar/descodificar el elemento (2MVBP) de patrón de bloque 2MV en macrobloques de campo codificado 2MV. La figura 47K muestra cuatro tablas disponibles para 2MVBP. Los campos-B entrelazados y las estructuras-B entrelazadas pueden tener varios de los mismos elementos de campos-P entrelazados y estructuras-P entrelazadas. En particular, una estructura-B entrelazada incluye ambos elementos de sintaxis 2MVBPTAB y 4 VBPTAB (5721), aunque la semántica de los elementos puede ser diferente de los campos-P y estructuras-P entrelazados. 3. Semántica y sintaxis de capa de macrobloque Los datos para un macrobloque consisten en el encabezamiento de un macrobloque seguido de una capa de bloque. La figura 57C es u diagrama de sintaxis para el flujo de bits de capa de macrobloque que muestra los elementos que conforman la capa de macrobloque para macrobloques de un campo-P entrelazado. El elemento MBMODE (5761 ) de modo de macrobloque es un elemento de tamaño variable. Conjuntamente indica información como el número de vectores de movimiento para un macrobloque (1 V, 4MV o intra), ya sea que esté un elemento CBPCY (5762) de patrón de bloque codificado se presenta para el macrobloque y (en algunos casos) si los datos de diferencial de vector de movimiento están presentes para el macrobloque. El elemento MVDATA de datos de vector de movimiento MVDATA (es un elemento de tamaño variable que codifica información de vector de movimiento (por ejemplo, diferenciales horizontal y vertical) para un vector de movimiento para un macrobloque. Para un campo-P entrelazado con campos de dos referencias, MVDATA (5763) también codifica información para seleccionar entre predictores de vector de movimiento dominante y no dominante para el vector de movimiento.
El elemento 4MVBP (5764) está presente si el MBMODE indica que el macrobloque tiene cuatro vectores de movimiento. El elemento 4MVBP indica cuál de los cuatro bloques de luminancia contiene diferenciales de vector de movimiento no cero. Se usa una tabla de código para descodificar el elemento (4MVBP (5764) a un valor entre 0 y 14. Este valor descodificado, cuando es expresado como valor binario, representa un bit de campo que indica si el vector de movimiento para el bloque de luminancia correspondiente está presente, como se muestra en la figura 34. El elemento 2MVBP de patrón de bloque de vector de movimiento (no mostrado) es un elemento de sintaxis de tamaño variable presente en macrobloques en estructuras-P entrelazadas. En macrobloques de estructuras-P entrelazada, 2MVVBP está presente si MBMODE (5761 ) indica que el macrobloque tiene 2 vectores de movimiento de campo. En este caso, 2MVBP indica cuál de los 2 campos (superior e inferior) contiene diferenciales d vector de movimiento no cero. El elemento BLKMDATA (5765) de datos de vector de movimiento de nivel de bloque es un elemento de tamaño variable presente en ciertas situaciones. Contienen información para un bloque de un macrobloque. El elemento HYBRI DPRED (5766) de predicción de vector de movimiento híbrido es un elemento de sintaxis de un bit por vector de movimiento que puede estar presente en los macrobloques en campos-P entrelazados. Cuando se usa predicción de vector de movimiento híbrido, HYBRIDPRED (5766) indica cuál de los dos predictores de vector de movimiento se va a usar. 4. Semántica y sintaxis de capa de bloque La capa de bloque para películas entrelazadas sigue la sintaxis y semántica de la capa de bloque para películas progresivas. En general, la información para coeficientes DC y AC de bloques y subloques se señala en la capa de bloque. D. Decodificación en la segunda implementación combinada Las siguientes secciones se enfocan en el proceso de descodificación para campos-P. 1. Referencia para descodificación e campo-P entrelazado Un campo-P entrelazado puede referenciar entre uno o dos campos descodificados previamente en compensación e movimiento. El campo NUMREF (5731 ) en la capa de película indica si el campo actual puede referenciar una o dos películas de campo de referencia previas. Si NUMREF = 0, entonces el campo-P entrelazado actual puede referenciar sólo un campo. En este caso, ei elemento REFFIELD (5732) sigue en el flujo de bits de la capa de película e indica cuál campo se usa como referencia. Si REFFIELD = 0, entonces el campo-P o I más cercano temporalmente (en orden en pantalla) se usa como referencia. Si REFFIELD = 1, entonces la película-P o Temporalmente reciente se usa como referencia. Si NUMREF = 1, entonces, la película de campo-P entrelazado actual usa las dos películas de campo P o I más cercanas temporalmente (en orden en pantalla). Los ejemplos de películas de campo de referencia para NUMREF = 0 y NUMREF = 1 mostrados en Figuras 24A, como se describe arriba, aplican a la segunda implementación combinada. 2. Selecciones de tabla de capa de película y tipos de película Los campos-P entrelazados pueden ser uno de los dos tipos: 1 MV o MV-combinado. Si el campo-P 1MV, para un macrobloque 1MV, se usa un vector de movimiento único para indicar el desplazamiento de bloques pronosticados para todos los 6 bloques en el macrobloque. En campos-P de MBV-combinado, un macrobloque puede ser codificado como un macrobloque 1MV o un 4MV. Para un macrobloque 4MV, cada uno de los cuatro bloques de luminancia puede tener un vector asociado con él. El modo 1MV o MV combinado se señalan mediante los campos de capa de película MVMODE (5735) y MVMODE2 (5736). Para un campo-P entrelazado, la capa de película contiene elementos de sintaxis que controlan el modo de compensación de movimiento y la compensación de intensidad para el campo. MVMODE (5735) señala entre: 1) uno de los cuatro modos de vector de movimiento para el campo o 2) la compensación de intensidad que se usa en el campo. Si la compensación de intensidad se señala entonces siguen los campos MVMODE (5736), LUMSCALE (5738) Y LUMSHIFT (5739) en la capa de película. Una de las dos tablas en la figura 47E se usan para descodificar los campos MVMODE (5735) y MVMODE2 (5736), dependiendo si PQUANT es mayor que 12. Si el modo de vector de movimiento es modo MV combinado, entonces el MBMODETAB (5742) señala cuál de las cuatro tablas MBMODE MV combinadas se usa para señalar el modo para cada macrobloque en el campo. Si el modo de vector de movimiento no es MV combinado (en cuyo caso todos los macrobloques inter codificados usan 1 vector de movimiento), entonces MBMODETAB (5742) señala cuál de las cuatro tablas MBMODE 1MV se usa para señalar el modo de cada macrobloque en el campo. MVTAB (5743) indica la tabla de código que se usa para descodificar diferenciales de vector de movimiento para los macrobloques en un campo-P entrelazado. 4MVBPTAB (5744) indica que la tabla de código usada para descodificar el 4MVBP (5764) para los macrobloques 4MV en un campo-P entrelazado. 3. Modos de macrobloque y patrones de bloque de vector de movimiento Los macrobloques en campos-P entrelazados pueden ser de uno de los tres tipos posibles: 1MV, 4 V e intra. El tipo de macrobloque es señalado por MBMODE (5761) en la capa de macrobloque. Los macrobloques 1MV pueden presentarse en campos-P 1 MV y MV combinados. Un macrobloque 1MV es uno en el que un vector movimiento único representa el desplazamiento entre las películas actuales y de referencia para todos los 6 bloques en el macrobloque. La diferencia entre los bloques actuales y de referencia se codifica en la capa de bloque. Para un macrobloque 1MV, el MBMODE (5761) indica tres aspectos: (1) que el tipo de macrobloque es 1 M V; (2) si el CBPCY (5762) está presente; y (3) si MVDATA (5763) está presente. Si MBMODE (5761) indica que CBPCY (5762) está presente, entonces CBPCY (5762) está presente en la capa de macrobloque e indica cuál de los 6 bloques se codifican en la capa de bloque. Si MBMODE (5761 ) indica que CBPCY (5762) no está presente, entonces CBPCY (5762) se asume como igual a 0 y no se presentan datos de bloque para ninguno de los 6 bloques en el macrobloque. Si MBMODE (5761) indica que MVDATA (5763) está presente, entonces MVDATA (5763) está presente en la capa de macrobloque y codifica el diferencial de vector de movimiento, que se combina con el predictor de vector de movimiento para reconstruir el vector de movimiento. Si MBMODE (5761) indica que MVDATA (5763) no está presente, entonces el diferencial de vector de movimiento se asume como cero y por lo tanto el vector de movimiento es igual al predictor de vector de movimiento. Los macrobloques 4MV se presentan en campos-P de MV combinados. Un macrobloque 4MV es uno en los que cada uno de los cuatro bloques de luminancia en un macrobloque puede tener asociado vector de movimiento que indica el desplazamiento entre las películas actuales y de referencia para ese bloque. El desplazamiento para los bloques de crominancia se deriva de cuatro vectores de movimiento de luminancia. La diferencia entre los bloques actuales y de referencia se codifica en la capa de bloque. Para un macrobloque 4MV, MBMODE (5761) indica tres aspectos: (1) que el tipo de macrobloque es 4MV; (2) si CBPCY (5762) está presente; y (3) si 4MVBP está presente en la capa de macrobloque e indica cuál de los cuatro bloques de luminancia contiene diferenciales de vector de movimiento cero. 4MVBP (5764) descodifica a un valor entre 0 y 14, que cuando se expresa como un valor binario, representa un campo de un bit que indica si están presentes los datos de vector de movimiento para los bloques de luminancia correspondientes, como se muestra en la figura 27. Para cada una de las posiciones de cuatro bits en 4MVBP (5764), un valor de 0 indica que no hay presente ningún diferencial de vector de movimiento (BLKM VDATA (5765) para dicho bloque, y el diferencial de vector de movimiento se asume como 0. Un valor de 1 indica que un diferencial de vector de movimiento (BLKMVDATA (5765)) está presente para dicho bloque. Si MBMODE (5761) indica que 4MVBP (5764) no está presente, entonces se asume que los datos de diferencial de vector de movimiento (BLMKVDATA (5765)) están presentes para todos los cuatro bloques de luminancia. Un macrobloque de campo codificado en una estructura-P entrelazada puede incluir 2 vectores de movimiento. En el caso de los macrobloques MV de dos campos, el elemento 2MVBP indica cuál de los dos campos tiene vectores de movimiento diferencia no cero. Los macrobloques intra pueden presentarse en campos-P 1MV o MV combinados. Un macrobloque intra es uno en el que todos los seis bloques se codifican sin referenciar ningún dato de película. La diferencia entre los pixeles de bloque actual y un valor constante de 128 se codifica en la capa de bloque. Para un macrobloque intra, MBMODE (5761) indica dos aspectos: (1) que el tipo de macrobloque es intra;
y (2) si CBPCY (5762) está presente. Para macrobloques intra, CBPCY (5762), cuando está presente, indica cuál de los seis bloques tiene datos de coeficiente AC en la capa de bloque. 4. Descodificación de diferenciales de vector de movimiento Los campos MVDATA (5763) y BLKM MVDATA (5765) codifican información de movimiento para el macrobloque o los bloques en el macrobloque. Los macrobloques 1MV tienen un campo MVDATA (5763) único y los macrobloques 4MV pueden tener entre cero y cuatro BLKMVDATA (5765). El cálculo de diferencial de vector de movimiento se realiza de manera diferente para el caso de una referencia (NUMREF = 0) y el caso de dos referencias (NUMREF = 1). En las películas de campo que tienen sólo un campo de una referencia, cada campo MVDATA (5763) o BLKMVDATA (5765) en macrobloque codifica conjuntamente dos aspectos: (1) el componente diferencial de vector de movimiento horizontal; y (2) el componente diferencial del vector de movimiento vertical. El campo MVDATA (5763) o BLKMVDATA (5765) es un VLC Huffman seguido por un FLC. El valor del VLC determina el tamaño de FLC. El campo MVTAB (5743) en la capa de película especifica la tabla que se usa para descodificar el VLC. La figura 58A muestra el pseudocódigo que ilustra la descodificación de diferencial de vector de movimiento para vectores de movimiento de bloques o macrobloques en las películas de campo que tienen campo de una referencia. En el pseudocódigo, los valores dmv_x y dmv_y son calculados. El valor dm_x es el componente de vector de movimiento horizontal, y el valor dmv_y es el componente de vector de movimiento vertical diferencial. Las variables k_x y k_y son valores de longitud física para vectores de movimiento largo y dependen de la gama de vector de movimiento como se define por MVRANGE (5733), como se muestra en la tabla en la figura 58B. El valor halfpel_flag es un valor binario que indica si se usa la precisión de medio peí o un cuarto de peí para la compensación de movimiento par la película. El valor de halfpel_flag es determinado por el modo de vector de movimiento. Si el modo es 1MV o MV combinado, entonces se usa halfpel_flag = 0 y precisión de un cuarto de peí para compensación de movimiento. Si el modo es 1MV de medio peí o 1MV de medio peí bilineal, entonces se usa halfpel_flag = 1 y precisión de medio peí. Offset_table es una configuración que se define de la siguiente manera: offset_table(9) = (0, 1,2, 4, 8, 16, 32, 64, 128). En las películas de campo que tienen campos de dos referencias, cada campo MVDATA (5763) o BLKMVDATA (5765) en la capa de macrobloque codifica de manera conjunta tres aspectos: (1) el componente diferencial de vector de movimiento horizontal; (2) el componente diferencial de vector de movimiento vertical; y (3) si se usa predictor de vector de movimiento dominante o no dominante. El campo MVDATA (5763) o BLKMVDATA (5765) es un VLC Huffman seguido por un FLC, y el valor del VLC determina el tamaño del FLC. El campo MVTAB (5743) especifica la tabla que se usa para descodificar el VLC. La figura 59 muestra el pseudocódigo que ¡lustra el diferencial de vector de movimiento y la descodificación de predictor dominante/no dominante para vectores de bloques o macrobloques en películas de campo que tiene campos de dos referencias. En el pseudocódigo, el valor predictor_flag es un indicador binario que señala si se usa el predictor de vector de movimiento dominante o no dominante (0 = predictor dominante usado, 1 = predictor no dominante usado). Las diversas otras variables (incluyendo dmv_x, dmv_y, k_x, k_y, halfpel_flag, y offset_table[]) son como se describen para el caso de campo de una referencia. El size_table de tabla es una configuración definida de la siguiente manera: size__table [14] = {0,0,1,1,2,2,3,3,4,4,5,5,6,6}. 5. Predictores de vector de movimiento Un vector de movimiento se calcula añadiendo el diferencial de vector de movimiento calculado en la sección previa a un predictor de vector de movimiento. El predictor es calculado desde tres vectores de movimiento vecinos. En un campo-P entrelazado 1MV, se usan hasta tres vectores de movimiento para calcular el predictor para el macrobloque actual. Las ubicaciones de predictores vecinos A, B y C son mostradas en las Figuras 5A y 5B. Como se describe para las estructuras-P, los predictores vecinos se toman desde los macrobloques izquierdo, superior y derecho superior, excepto en el caso en donde el macrobloque actual sea el último macrobloque en la fila. En este caso, el predictor B se toma desde el macrobloque izquierdo superior en lugar del derecho superior. Para el caso especial en donde la estructura tiene el ancho de un macrobloque entonces el predictor es siempre Predictor A (el predictor superior). En un campo-P entrelazado MV combinado, se usan hasta tres vectores de movimiento para calcular el predictor para el bloque o macrobloque actuales. Las Figuras 6A-10 muestran los tres vectores de movimiento candidato para macrobloques 1MV y 4MV en campos-P MV combinados, como se describe para estructuras-P progresivas. Para el caso especial en donde la estructura tiene el ancho de un macrobloque entonces el predictor es siempre Predictor A (el predictor superior). Si el campo NUMREF (5731 ) en el encabezamiento de película es 0, entonces el campo-P entrelazado actual se puede referir a sólo una película codificada previamente. Si NUMREF = 1, entonces el campo-P entrelazado actual se puede referir a las dos películas de campo de referencia más recientes. En el caso anterior, se calcula un predictor único para cada vector de movimiento. En el último caso, se calculan dos predictores de vector de movimiento. El pseudocódigo en las Figuras 60A y 60B muestran cómo se calculan los predictores de vector de movimiento para el caso de campo de una referencia. Las variables fielpred_x y fieldpred_y representan los componentes horizontal y vertical del predictor de vector de movimiento. En campos-P entrelazados d campo de referencia (NUMREF = 1), el campo actual puede referencia los dos campos de referencia más recientes. En este caso, se calculan dos predictores de vector de movimiento para cada macrobloque ínter codificado. Un predictor es de campo de referencia de la misma polaridad y el otro es del campo de referencia con la polaridad opuesta. El pseudocódigo en las figuras 61A - 61F describe cómo se calculan los predictores de vector de movimiento para el caso de campo de dos referencia, dados los candidatos de predictor de vector de 3 movimientos. Las variables samefieldpred_x y samefieldpred_y representan los componentes horizontal y vertical del predictor de vector de movimiento desde el mismo campo, y las variables oppos¡tefieldpred_x y oppositef¡eldpred_y representan los componentes horizontal y vertical del predictor de vector de movimiento desde el campo opuesto. El predictor dominante variable indica cuál campo contiene el predictor dominante. El predictor_flag de valor (descodificado desde el diferencial de vector de movimiento) indica si se usa el predictor dominante o no dominante. 6. Predicción de vector de movimiento híbrido Si el campo-P entrelazado es 1MV o V combinado, entonces el predictor de vector de movimiento calculado en la sección anterior se prueba con relación a los predictores A (superior) y C (izquierdo) para determinar si el predictor es explícitamente codificado en el flujo de bits. Si es así, entonces un bit está presente e indica si se debe usar el predictor A o el predictor C como el predictor de vector de movimiento. El pseudocódigo en las Figuras 14A y 14B ilustra la descodificación de predicción de vector de movimiento híbrido usando las variables de la siguiente manera. Las variables predictor_pre_x y predictor_pre_y y los Predictores A, B, C candidatos se calculan como en la sección previa (por ejemplo, son predictores del campo puesto, o son predictores del mimo campo, como se señala mediante el indicador del predictor). Las variables predictor_post_x y predictor_post_y son predictores de vector de movimiento vertical, respectivamente, después de verificar la predicción de vector de movimiento. 7. Reconstrucción de vectores de movimiento Para ambos macrobloques 1 MV y 4MV, se reconstruye un vector de movimiento de luminancia al añadir la diferencial al predictor de la siguiente manera: mv_x = (dmv_x + predictor_x) smod range_x, y mv_y = (dmv_y + predictor_y) smod range_y, en donde las variables range_x y range_y dependen de MVRANGE (5733) y son especificadas en la tabla mostrada en la figura 58B, y en donde la operación "smod" es un módulo señalado definido de la siguiente manera: Un smod b = ((A +b) % 2b)-b, lo que asegura que los factores reconstruidos son válidos. (Un smod b) está con -b y b - 1. En un macrobloque 1MV, habrá un vector de movimiento único para los cuatro bloques que conforman el componente de luminancia del macrobloque. Si dmv_x indica que el macrobloque es intra codificado, entonces ningún vector está asociado con el macrobloque. Si el macrobloque es saltado, entonces dmv_x = 0 y d mv_y = 0, de manera que mv_x = predictor_x y mv_y = pred¡ctor_y. En un macrobloque 4MV, cada uno de los bloques de luminancia intercodificado en el macrobloque tiene su propio vector de movimiento. Por lo tanto, habrá entre 0 y 4 vectores de movimiento de luminancia para cada macrobloque 4MV. Un bloque no codificado en un macrobloque 4MV puede presentarse en una de las dos maneras: (1) si el macrobloque es saltado y el macrobloque es 4MV (todos los bloques en el macrobloque son saltados en este caso); o (2) si el CBPCY (5762) para el macrobloque Indica que el bloque es no codificado. Si un bloque no está codificado, entonces dmv_x = 0 y dmv__y = 0, de manera que mv_x = predictor_x = y mv_y = predictor_y. 8. Derivación de vectores de movimiento de crominancia Los vectores de movimiento de crominancia son derivados de los vectores de movimiento de luminancia. Además, para macrobloques 4MV, la decisión de si se deben codificar los bloques de crominancia como inter o intra se toma basada en el estado de los bloques de luminancia. Los vectores de movimiento de crominancia se reconstruyen en dos pasos. Como primer paso, el vector de movimiento e crominancia se obtiene combinando y escalando los vectores de movimiento de luminancia adecuadamente. La escala se realiza de manera que se prefieran los offsets de medio pixel a los offsets de un cuarto de pixel. En la segunda etapa, se usa un campo FASTUVMC de campo de nivel de secuencia de un bit para determinar si es necesario el rodeo de vectores de movimiento de crominancia. Si FASTUVCM = 0, no se realiza rodeo en la segunda etapa. Si FASTUVMC = 1, los vectores de movimiento de crominancia que están en offsets de un cuarto de peí se rodearán a las posiciones de peí completo más cercanas. Además, cuando FASTUVMC = 1 sólo se usará el filtrado bilineal para toda la interpolación de crominancia. En un macrobioque 1MV, ios vectores de movimiento de crominancia se derivan de los vectores de movimiento de luminancia de la siguiente manera: // s_RndTbl[0] = 0, s_RndTbl[1] = 0, s_RndTbl[2] = 0, s_RndTbl[3] = 1 cmv_x = (lmv_x + s_RndTbl[1 mv_x & 3])>> 1 cmv_y = (lmv_y + s_RndTbl[1 mv_x & 3])>> 1 El pseudocódigo en la figura 16B muestra la primera etapa de la manera en la que los vectores de movimiento son derivados de la información de movimiento para los cuatro bloques de luminancia en macrobloques 4MV, usando variables de la siguiente manera. La polaridad dominante entre los hasta cuatro vectores de movimiento de luminancia para macrobioque 4MV se determina y el vector de movimiento de crominancia se determina desde los vectores de movimiento de luminancia con polaridad dominante (pero no desde vectores de movimiento de luminancia de la otra polaridad). 9. Compensación de identidad Si la compensación de intensidad se usa para un campo de referencia, entonces los pixeles en el campo de referencia se remapean antes de usarlos como predictores. Cuando se usa compensación de intensidad, LUMSCALE (5738) y LUMSHIFT (5739) están presentes en el flujo de bit de la película. El pseudocódigo en la figura 18 ó 56 muestra cómo LUMSCALE (5738) y LUMSHIFT (5739) se usan para remapear los pixeles de campo de referencia. El componente Y de la referencia se remapea usando la tabla LUTY[], y los componentes U yV se remapean usando la tabla LUTUV[] de la siguiente manera:
py=LUTY[pr], y puy=LUTUV[Pur],
cuando ?? es el valor de pixel de luminancia original en el campo de referencia, ~p~ es el valor de pixel de luminancia remapeado en el campo de referencia, Puv es el valor de pixel U o V original en el campo de referencia, y pw es el valor de pixel U o V remapeado en el campo de referencia. 10. Descodificación restante El descodificador descodifica el elemento CBPCY
(5762) para un macrobloque, cuando se presenta ese elemento, en donde el elemento CBPCY (5762) indica la presencia/ausencia de datos coeficientes. En la capa de bloque, el descodificador descodifica datos de coeficiente para bloques ínter codificados y bloques intra codificados.
Para reconstruir un bloque Ínter codificado, el descodificador: (1) selecciona un tipo de resultado (8x8, 8x4, 4x8 ó 4x4), (2) descodifica patrón(es) de subbloque, (3) descodifica coeficientes, (4) realiza un resultado inverso, (5) realiza cuantificación inversa, (6) obtiene la predicción para el bloque, y (7) añade la predicción y el bloque de error. Habiendo descrito e ilustrado los principios de nuestra invención con referencia a diversas modalidades, se reconocerá que las diversas modalidades pueden ser modificadas en su disposición y en detalles sin apartarse de dichos principios. Debe entenderse que los programas, procesos o métodos descritos aquí no están relacionados ni limitados a ningún tipo particular de ambiente computacional, a menos que se indique lo contrario. Varios tipos de propósitos generales o ambientes computacionales especializados podrán usarse con o realizar operaciones de conformidad con las enseñanzas descritas en el presente. Los elementos de modalidades mostrados en el software pueden ser implementados en el hardware y viceversa. En vista de las varias posibles modalidades a las que los principios de nuestra invención se pueden aplicar, sostenemos como nuestra invención la totalidad de dichas modalidades como pudieran venir dentro del alcance y las tendencias de las siguientes reivindicaciones y equivalentes pertinentes.
Claims (152)
- REIVINDICACIONES 1. Un método que comprende: comprobar la condición de predicción del vector d P y e movimiento híbrido con base al menos en parte en una señal de polaridad del predictor que se puede aplicar a un predictor del vector de movimiento; y determinar el predictor del vector de movimiento.
- 2. El método tal y como se describe en la reivindicación 1, en donde la señal de polaridad del predictor es para seleccionar la polaridad dominante con la polaridad dominante para el predictor del vector de movimiento.
- 3. El método tal y como se describe en la reivindicación 2, en donde el predictor del vector de movimiento es para un bloque o macrobloque de un campo pronosticado delantero entrelazado, y en donde la polaridad dominante es opuesta cuando los vectores de movimiento vecinos hacen referencia de manera predominante a un campo de referencia que tiene una polaridad opuesta como el campo pronosticado delantero entrelazado actual.
- 4. El método tal y como se describe en la reivindicación 2, en donde el predictor del vector de movimiento es para un bloque o macrobloque de un campo pronosticado delantero entrelazado y en donde la polaridad dominante es igual cuando los vectores de movimiento vecinos hacen referencia predominantemente a un campo de referencia que tiene la misma polaridad que el campo pronosticado delantero entrelazado actual.
- 5. El método tal y como se describe en la reivindicación 1, en donde la determinación incluye, si se satisface la condición de predicción del vector de movimiento híbrido, la señalización explícita del vector de movimiento vecino que se usará como el predictor del vector de movimiento.
- 6. El método tal y como se describe en la reivindicación 5, en donde el vector de movimiento vecino es un vector de movimiento mejorado derivado de un vector de movimiento real (mejorado) para un bloque o macrobloque vecino.
- 7. El método tal y como se describe en la reivindicación 5, en donde el vector de movimiento vecino es un vector de movimiento real (no mejorado) para un bloque o macrobloque vecino.
- 8. El método tal y como se describe en la reivindicación 1, en donde la determinación incluye, si se satisface la condición de predicción del vector de movimiento híbrido, recibir una señal que indica cuál de los vectores de movimiento vecinos se usará como el predictor del vector de movimiento.
- 9. El método tal y como se describe en la reivindicación 1, en donde un codificador de video realiza la comprobación y la determinación.
- 10. El método tal y como se describe en la reivindicación 1, en donde un descodificador de video realiza la comprobación y la determinación.
- 11. El método tal y como se describe en la reivindicación 1, en donde el predictor del vector de movimiento es para un vector de movimiento para un bloque o macrobloque de dos campos pronosticados delanteros entrelazados con un campo de referencia.
- 12. Un método que comprende: determinar un predictor de vector de movimiento derivado, inicial para un vector de movimiento de un campo pronosticado delantero entrelazado; comprobar una condición de variación con base al menos en parte en el predictor del vector de movimiento derivado inicial y uno o más vectores de movimiento vecinos; y si se satisface la condición de la variación, usar uno de los vectores de movimiento vecinos como un predictor del vector de movimiento final para el vector de movimiento, y de otra manera usar el predictor del vector de movimiento derivado inicial como el predictor de vector de movimiento final.
- 13. El método tal y como se describe en la reivindicación 12, en donde un codificador de video realiza la determinación, la comprobación y el uso.
- 14. El método tal y como se describe en la reivindicación 12, en donde un descodificador de video realiza la determinación, la comprobación y el uso.
- 15. El método tal y como se describe en la reivindicación 12, en donde la comprobación de la condición de variación se basa adicionalmente, al menos en una parte, en una selección de polaridad del predictor.
- 16. El método tal y como se describe en la reivindicación 15, en donde la comprobación de la condición de variación incluye hacer la selección de polaridad del predictor mediante: la determinación de una polaridad dominante de uno o más de los vectores de movimiento vecinos; y recibir una señal que indica una polaridad dominante o no dominante.
- 17. El método tal y como se describe en la reivindicación 12, que además comprende, si se satisface la condición de variación, recibir una señal que indica cuál de él o los vectores de movimiento vecinos se usa como el predictor de vector de movimiento final.
- 18. Un descodificador que comprende: medios para determinar un predictor del vector de movimiento para un bloque o macrobloque de un campo pronosticado delantero entrelazado que usa la predicción de vector de movimiento híbrido, en donde la predicción de vector de movimiento híbrido incluye la selección entre las polaridades del predictor del vector de movimiento plural; y medios para reconstruir un vector de movimiento entre el predictor del vector de movimiento y un diferencial del vector de movimiento.
- 19. El descodificador de conformidad con la reivindicación 18, caracterizado además porque las polaridades el predictor del vector de movimiento plural incluyen las mismas y las opuestas, y que además la selección incluye: determinar una polaridad dominante de los vectores de movimiento vecinos plurales, caracterizado además porque la polaridad dominante puede ser la misma u opuesta; y recibir una señal que indica si se usa la polaridad del predictor dominante o no dominante.
- 20. El descodificador de conformidad reivindicación 18 caracterizado además porque la determinación del predictor del vector de movimiento que usa la predicción del vector de movimiento híbrido incluye: determinar un predictor de vector de movimiento derivado inicial; si no se satisface una condición de predicción de vector de movimiento híbrido, usar el predictor del vector de movimiento derivado inicial como el predictor del vector de movimiento determinado, y de otra manera recibir una señal que indica cuál de los vectores de movimiento vecinos plurales usar como el predictor del vector de movimiento determinado.
- 21. Un método que comprende: procesar un primer código de longitud variable que representa la primera información para un macrobloque con los vectores de movimiento de luminancia plurales, en donde la primera información incluye un indicador de presencia de datos del vector de movimiento por vector de movimiento de luminancia del macrobloque; y procesar un segundo código de longitud variable que representa la segunda información para el macrobloque, en donde la segunda información incluye indicadores de presencia de datos de coeficientes de transformación plural para bloques plurales del macrobloque.
- 22. El método tal y como se describe en la reivindicación 21, en donde cada uno de los indicadores de presencia de datos del vector de movimiento indica si los datos del vector de movimiento están señalados o no para uno de los vectores de movimiento de luminancia plural correspondiente, el método además comprende; procesar datos del vector de movimiento para cada uno de los vectores de movimiento de luminancia plurales para los que los datos del vector de movimiento se indican precedentes a través de la primera información.
- 23. El método tal y como se describe en la reivindicación 22, en donde los datos del vector de movimiento incluyen información diferencial del vector de movimiento y / o una selección de polaridad del predictor.
- 24. El método tal y como se describe en la reivindicación 21, en donde el macrobloque tiene cuatro vectores de movimiento de luminancia, y en donde la primera información consiste en cuatro indicadores de presencia de datos del vector de movimiento.
- 25. El método tal y como se describe en la reivindicación 21, en donde el macrobloque tiene dos vectores de movimiento de luminancia, y en donde la primera información consiste en dos indicadores de presencia de datos del vector de movimiento.
- 26. El método tal y como se describe en la reivindicación 21, en donde el procesamiento de los códigos de longitud variable primero y segundo comprende la codificación con los códigos de longitud variable primero y segundo.
- 27. El método tal y como se describe en la reivindicación 21, en donde el procesamiento de los códigos de longitud variable primero y segundo comprende la decodificación con los códigos de longitud variable primero y segundo.
- 28. El método tal y como se describe en la reivindicación 21, en donde cada indicador de presencia de datos del vector de movimiento es un solo bit.
- 29. El método tal y como se describe en la reivindicación 21, que además comprende el procesamiento de un código de selección de tabla que indica cuál de las tablas de códigos de longitud variable plural usar para procesar el primer código de longitud variable.
- 30. El método tal y como se describe en la reivindicación 29, en donde el código de selección de tablas se señala a al nivel de cuadro o al nivel de división.
- 31. El método tal y como se describe en la reivindicación 29, en donde el código de selección de tablas es un código de longitud fija.
- 32. Un método que comprende: para un macrobloque con un primer número de vectores de movimiento de luminancia, en donde el primer número es mayor que uno, procesar un patrón de bloque de vector de movimiento que consiste en un segundo número de bits, en donde el segundo número es igual al primer número, y en donde cada uno de los bits indica si uno de los vectores de movimiento de luminancia correspondientes tienen o no datos de vector de movimiento asociados señalados en un flujo de bits; y procesar los datos del vector de movimiento asociado con cada uno de los vectores de movimiento de luminancia para el que se indican los datos del vector de movimiento asociado para que sean señalados en el flujo de bits.
- 33. El método tal y como se describe en la reivindicación 32, que además comprende: procesar un patrón de bloques codificados que indica cuál de los bloques plurales del macrobioque tiene datos de coeficientes de transformación asociados señalados en el flujo de bits.
- 34. El método tal y como se describe en la reivindicación 32, en donde los datos del vector de movimiento asociado incluye información diferencial del vector de movimiento.
- 35. El método tal y como se describe en la reivindicación 34, en donde los datos del vector de movimiento asociado además incluyen una selección de la polaridad del predictor.
- 36. El método tal y como se describe en la reivindicación 32 en donde el macrobioque tiene cuatro vectores de movimiento de luminancia para cuatro bloques de luminancia del macrobioque, respectivamente.
- 37. El método tal y como se describe en la reivindicación 32, en donde el macrobioque tiene dos vectores de movimiento de luminancia para los campos superior e inferior del macrobioque, respectivamente.
- 38. El método tal y como se describe en la reivindicación 32, en donde el macrobloque tiene cuatro vectores de movimiento de luminancia para las partes medias izquierda y derecha de los campos superior e inferior del macrobloque, respectivamente.
- 39. El método tal y como se describe en la reivindicación 32, en donde el procesamiento del patrón de bloque de vector de movimiento comprende la codificación del patrón de bloque de vector de movimiento con un código de longitud variable.
- 40. El método tal y como se describe en la reivindicación 32, en donde el procesamiento del patrón de bloque del vector de movimiento comprende la decodificación de un código de longitud variable que representa el patrón de bloque del vector de movimiento.
- 41. El método tal y como se describe en la reivindicación 32, que además comprende procesar un código de selección de tabla que indica cuál de las tablas de códigos de longitud variable plural usar en el procesamiento del patrón de bloques de vector de movimiento.
- 42. Un descodificador que comprende: medios para descodificar códigos de longitud variable plural que representan patrones del bloque del vector de movimiento plural, en donde cada uno de los patrones del bloque del vector de movimiento plural tiene un bit por cada vector de movimiento de luminancia correspondiente de un macrobloque con múltiples vectores de movimiento de luminancia, el bit que indica si se señalan o no los datos del vector de movimiento para el vector de movimiento de luminancia correspondiente; y medios para descodificar los datos del vector de movimiento.
- 43. El descodificador de conformidad con la reivindicación 42, caracterizado además porque comprende medios para seleccionar una tabla de códigos de longitud variable entre diversas tablas de códigos de longitud variable disponibles para descodificar los códigos de longitud variable plurales que representan los patrones del bloque de vector de movimiento plural.
- 44. Un método que comprende: determinar una pluralidad dominante para un predictor de vector de movimiento; procesar el predictor del vector de movimiento con base al menos en parte en la polaridad dominante; y procesar un vector de movimiento con base al menos en parte en el predictor del vector de movimiento.
- 45. El método tal y como se describe en la reivindicación 44, en donde el vector de movimiento es para un bloque actual o un macrobloque de un campo pronosticado delantero entrelazado y en donde la polaridad dominante se basa al menos en parte en la polaridad de cada uno de los vectores de movimiento anterior plurales para los bloques o macrobloque vecinos.
- 46. El método tal y como se describe en la reivindicación 45, en donde la polaridad dominante es la misma polaridad si una mayoría de los vectores de movimiento anteriores plurales hacen referencia a un campo de la misma polaridad que el campo que está siendo codificado o decodificado actualmente, y en donde la polaridad dominante es una polaridad opuesta si la mayoría de los vectores de movimiento anterior plurales hacen referencia a un campo de la polaridad opuesta como el campo que está siendo codificado o decodificado en el momento.
- 47. El método tal y como se describe en la reivindicación 45, en donde los vectores de movimiento anteriores plurales consisten hasta en tres vectores de movimiento previos para los bloques o macrobloques, y en donde los bloques o macrobloques vecinos están a la izquierda, arriba y arriba a la derecha del bloque o macrobloque actual.
- 48. El método tal y como se describe en la reivindicación 44, en donde, durante la codificación, el procesamiento del predictor del vector de movimiento incluye determinar el predictor de vector de movimiento y después la señalización de la información de la selección de la polaridad para el predictor del vector de movimiento.
- 49. El método tal y como se describe en la reivindicación 44, en donde durante la codificación, el procesamiento del predictor del vector de movimiento incluye determinar al predictor del vector de movimiento con base al menos en parte en la información de la selección de la polaridad señalada.
- 50. El método tal y como se describe en la reivindicación 44, que además comprende, para cada uno de los vectores de movimiento adicionales plurales, repetir la determinación de la polaridad dominante, procesar el predictor del vector de movimiento y procesar el vector de movimiento.
- 51. El método tal y como se describe en la reivindicación 44, en donde el procesamiento del vector de movimiento incluye, durante la decodificación, reconstruir el vector de movimiento a partir del predictor del vector de movimiento y la información diferencial del vector de movimiento.
- 52. Ei método tal y como se describe en la reivindicación 44, en donde el procesamiento del vector de movimiento incluye, durante la codificación, determinar la información diferencial del vector de movimiento a partir del vector de movimiento y el predictor del vector de movimiento.
- 53. El método tal y como se describe en la reivindicación 44, en donde el predictor del vector de movimiento está restringido a la referencia ya sea de uno o de dos de los campos predichos delanteros o intra entrelazados más recientes.
- 54. Un método que comprende: procesar información que indica una selección entre las polaridades dominante y no dominante para un predictor del vector de movimiento, y procesar un vector de movimiento con base al menos en parte en el predictor del vector de movimiento.
- 55. El método tal y como se describe en la reivindicación 54, que además comprende, durante la decodificación: determinar las polaridades dominante y no dominante; determinar el predictor del vector de movimiento con base al menos en parte en las polaridades dominante y no dominante y la información.
- 56. El método tal y como se describe en la reivindicación 54, en donde el vector de movimiento es para un bloque o macrobloque actual de un campo predichos delantero entrelazado, el método además comprende, antes de procesar la información, procesar una señal que indica que el campo predicho delantero entrelazado tiene dos campos de referencia.
- 57. El método tal y como se describe en la reivindicación 54, en donde la información está señalizada en el nivel de macrobloque.
- 58. El método tal y como se describe en la reivindicación 54, en donde, durante la decodificación, el procesamiento de la información incluye recibir y descodificar la información, y el procesamiento del vector de movimiento incluye reconstruir el vector de movimiento a partir del predictor del vector de movimiento y la información diferencial del vector de movimiento.
- 59. El método tal y como se describe en la reivindicación 54, en donde, durante la codificación, el procesamiento del vector de movimiento incluye determinar la información diferencial del vector de movimiento a partir del vector de movimiento y el predictor del vector de movimiento, y el procesamiento de la información que indica una selección incluye la señalización de la información que indica una selección.
- 60. El método tal y como se describe en la reivindicación 54 que además comprende, para cada uno de los vectores de movimiento adicionales plurales, repetir el procesamiento de la información y el procesamiento del vector de movimiento.
- 61. Un descodificador que comprende: medios para determinar las polaridades dominante y no dominante para un predictor del vector de movimiento; medios para descodificar la información señalada que indica una selección entre las polaridades dominante y no dominante; medios para determinar el predictor del vector de movimiento con base al menos en parte en las polaridades dominante y no dominante y la información señalada; y medios para reconstruir un vector de movimiento con base al menos en parte en el predictor del vector de movimiento.
- 62. El descodificador de conformidad con la reivindicación 61, caracterizado además porque comprende: medios para descodifícar la información diferencial del vector de movimiento, en donde el vector de movimiento se basa adicionalmente al menos en parte en la información diferencial del vector de movimiento.
- 63. El descodificador de conformidad con la reivindicación 61, caracterizado además porque el vector de movimiento es para un bloque o macrobloque actual de un campo pronosticado delantero entrelazado, y en donde los medios para determinar las polaridades dominante y no dominante consideran la polaridad de cada uno de los vectores de movimiento anteriores plurales para los bloques o macrobloques vecinos.
- 64. En descodificador de conformidad con la reivindicación 61, caracterizado además porque el predictor del vector de movimiento y el vector de movimiento están restringidos a la referencia de (1) el campo pronosticado delantero o intra entrelazado más reciente, o (2) el segundo campo pronosticado delantero o intra entrelazado más reciente.
- 65. El descodificador de conformidad con la reivindicación 61, caracterizado además porque la información señalada está señalada en el nivel de macrobloque.
- 66. Un método que comprende: descodificar una selección de predictor dominante / no dominante codificada en conjunto con la información del vector de movimiento diferencial para un vector de movimiento; y reconstruir el vector de movimiento con base al menos en parte en la información del vector de movimiento diferencial y la selección del predictor dominante / no dominante.
- 67. El método tal y como se describe en la reivindicación 66, en donde la decodificación comprende: descodificar un código de longitud variable; determinar una longitud de un código para un vector de movimiento diferencial horizontal con base al menos en parte en el código de longitud variable; determinar una longitud de un código para un vector de movimiento diferencial vertical con base al menos en parte en el código de longitud variable; y determinar la selección del predictor dominante/no dominante con base al menos en parte en el código de longitud variable.
- 68. El método tal y como se describe en la reivindicación 67, en donde la decodificación del código de longitud variable ocasiona un índice de código de longitud variable, y en donde la determinación de la longitud del código para el vector de movimiento diferencial horizontal comprende: determinar un índice de longitud del código a partir del índice del código de longitud variable, en donde el índice de longitud de código al menos en parte indica la longitud del código para el vector de movimiento diferencial horizontal.
- 69. El método tal y como se describe en la reivindicación 67, en donde la decodificación del código de longitud variable ocasiona un índice de código de longitud variable, y en donde determinar la longitud del código para el vector de movimiento diferencial vertical comprende: determinar un índice de longitud de código a partir del índice de códigos de longitud variable; y determinar la longitud del código para el vector de movimiento diferencial vertical a partir de una tabla de tamaños con base al menos en parte en el índice de longitud de los códigos.
- 70. El método tal y como se describe en la reivindicación 66, en donde la decodificación comprende: descodificar un código de longitud variable, ocasionando un índice de escape; descodificar un primer código de escape que representa un valor del vector de movimiento diferencial horizontal; y descodificar un segundo código de escape que representa en conjunto la selección del predictor dominante/no dominante y un valor de vector de movimiento diferencial vertical.
- 71. El método tal y como se describe en la reivindicación 66, en donde la decodificación comprende: descodificar un código de longitud variable que representa en conjunto al menos un vector de movimiento diferencial vertical con un valor de cero y la selección del predictor dominante / no dominante.
- 72. Un método que comprende: descodificar un código de longitud variable que representa en conjunto la información del vector de movimiento diferencial y una selección del predictor del vector de movimiento para un vector de movimiento; y reconstruir el vector de movimiento con base al menos en parte en la información del vector de movimiento diferencial y la selección del predictor del vector de movimiento.
- 73. El método tal y como se describe en la reivindicación 72, en donde el código de longitud variable representa en conjunto un primer índice de longitud del código para un vector de movimiento diferencial horizontal, un segundo índice de longitud de código para un vector de movimiento diferencial vertical y la selección del predictor del vector de movimiento.
- 74. El método tal y como se describe en la reivindicación 72, en donde el código de longitud variable representa en conjunto un vector de movimiento diferencial vertical con valor de cero y la selección del predictor del vector de movimiento.
- 75. El método tal y como se describe en la reivindicación 74, en donde el código de longitud variable además representa un primer índice de longitud de código para un vector de movimiento diferencial horizontal.
- 76. El método tal y como se describe én la reivindicación 74, en donde el código de longitud variable además representa un vector de movimiento diferencial horizontal con valor de cero.
- 77. Un método que comprende: determinar una selección de predictor dominante / no dominante para un vector de movimiento; determinar la información del vector de movimiento diferencial para el vector de movimiento; y codificar en conjunto la selección del predictor dominante/no dominante con la información del vector de movimiento diferencial.
- 78. El método tal y como se describe en la reivindicación 77, en donde el código comprende: determinar un primer índice de longitud de código para un vector de movimiento diferencial horizontal; determinar un segundo índice de longitud de código para un vector de movimiento diferencial vertical; determinar un código de longitud variable que en conjunto representa el primer índice de longitud de código, el segundo índice de longitud de código y la selección del predictor dominante/no dominante.
- 79. El método tal y como se describe en la reivindicación 77, en donde el código comprende: determinar un código de longitud variable que representa un índice de escape; codificar un primer código de escape que representa un valor del vector de movimiento diferencial horizontal; y codificar un segundo código de escape que representa en conjunto la selección del predictor dominante / no dominante y un valor del vector de movimiento diferencial vertical .
- 80. El método tal y como se describe en la reivindicación 77, en donde el código comprende determinar un código de longitud variable que representa en conjunto un vector de movimiento diferencial vertical con valor de cero y la selección del predictor dominante / no dominante.
- 81. El método tal y como se describe en la reivindicación 80, en donde el código de longitud variable también representa un vector de movimiento diferencial horizontal con valor de cero.
- 82. El método tal y como se describe en la reivindicación 80 que además comprende determinar una primera longitud de código para un vector de movimiento diferencial horizontal, en donde el código de longitud variable también representa la primera longitud del código para el vector de movimiento diferencial horizontal.
- 83. Un método que comprende: determinar una selección del predictor del vector de movimiento para un vector de movimiento; determinar la información del vector de movimiento diferencial para el vector de movimiento; y codificar un código de longitud variable que representa en conjunto la selección del predictor del vector de movimiento y la información del vector de movimiento diferencial para el vector de movimiento.
- 84. El método tal y como se describe en la reivindicación 83, en donde el código de longitud variable representa en conjunto un primer índice de longitud de código para un vector de movimiento diferencial horizontal, un segundo índice de longitud del código para un vector de movimiento diferencial vertical y la selección del predictor del vector de movimiento.
- 85. El método tal y como se describe en la reivindicación 83, caracterizado además porque el código de longitud variable representa en conjunto un vector de movimiento diferencial vertical con valor de cero y la selección del predictor del vector de movimiento.
- 86. Un método que comprende: procesar un código de longitud variable que señala en conjunto la información del modo de macrobloque para un macrobloque, en donde el macrobloque tiene compensación de movimiento, y en donde la información del modo de macrobloque señalizada en conjunto incluye (1) un tipo de macrobloque, (2) en donde un patrón de bloque codificado está presente o ausente, y (3) ya sea que los datos del vector de movimiento estén presentes ausentes para el macrobloque con compensación de movimiento.
- 87. El método tal y como se describe en la reivindicación 86, en donde el tipo de macrobloque es un vector de movimiento.
- 88. El método tal y como se describe en la reivindicación 86, en donde un campo pronosticado delantero incluye el macrobloque.
- 89. El método tal y como se describe en la reivindicación 86, que además comprende procesar un segundo código de longitud variable que señala la segunda información del modo de macrobloque para un segundo macrobloque, en donde la segunda información de modo de macrobloque señalizado en conjunto incluye (1) un tipo de macrobloque y (2) si se presenta o está ausente un patrón de bloque codificado, mas no (3) si los datos del vector de movimiento estén presentes o ausentes para el segundo macrobloque.
- 90. El método tal y como se describe en la reivindicación 89, en donde el tipo de macrobloque para el segundo macrobloque es intra o cuatro vectores de movimiento.
- 91. El método tal y como se describe en la reivindicación 89, en donde el procesamiento se produce durante la decodificación.
- 92. El método tal y como se describe en la reivindicación 89, en donde el procesamiento se produce durante la codificación.
- 93. Un método que comprende: seleccionar una tabla de códigos entre diversas tablas de códigos disponibles para la información del modo de macrobloque para los campos pronosticados delanteros entrelazados; y usar la tabla de código seleccionada para procesar un código de longitud variable que indica la información del modo de macrobloque para un macrobloque, en donde la información del modo de macrobloque incluye (1) un tipo de macrobloque, (2) si está presente o ausente un patrón de bloque codificado, y (3) cuando es aplicable para el tipo de macrobloque, si están presentes o ausentes los datos del vector de movimiento.
- 94. El método tal y como se describe en la reivindicación 93, en donde las diversas tablas de códigos disponibles incluyen un primer conjunto de tablas para un primer tipo de campos pronosticados delanteros entrelazados y un segundo conjunto de tablas para un segundo tipo de campos pronosticados delanteros entrelazados.
- 95. El método tal y como se describe en la reivindicación 94, en donde el primer tipo es un vector de movimiento, y en donde el segundo tipo es un vector de movimiento mixto.
- 96. El método tal y como se describe en la reivindicación 93, que además comprende procesar un código de longitud fija que indica la selección de la tabla de códigos entre las diversas tablas de códigos disponibles.
- 97. El método tal y como se describe en la reivindicación 93, en donde la tabla de códigos seleccionada se selecciona para usarse con códigos de longitud variable para macrobloques plurales de un solo campo pronosticado delantero entrelazado.
- 98. El método tal y como se describe en la reivindicación 93, en donde el tipo de macrobloque puede ser intra o un vector de movimiento.
- 99. El método tal y como se describe en la reivindicación 93, en donde el tipo de macrobloque es uno entre intra, un vector de movimiento o cuatro vectores de movimiento.
- 100. El método tal y como se describe en la reivindicación 99, en donde si está presente o ausente el vector de movimiento se aplica si el tipo de macrobloque es un vector de movimiento, pero no aplica si el tipo de macrobloque es intra o cuatro vectores de movimiento.
- 101. El método tal y como se describe en la reivindicación 93, en donde la selección y uso se produce durante la decodificación.
- 102. El método como se describe en la reivindicación 93, en donde la selección y uso se produce durante la codificación.
- 103. Un descodificador que comprende: medios para descodificar códigos de longitud variable plurales, cada uno de los códigos de longitud variable plurales en conjunto hace una señalización a la información del modo de macrobloque para uno o más macrobloques plurales, en donde para cada uno de los macrobloques plurales la información del modo de macrobloque incluye un tipo de macrobloque y un indicador de presencia para un patrón de bloque codificado y en donde para al menos un macrobloque con movimiento compensado de los macrobloques plurales la información del modo de macrobloque además incluye un indicador de presencia para los datos del vector de movimiento; y medios para realizar una compensación de movimiento.
- 104. El descodificador de conformidad con la reivindicación 103, que además comprende: medios para seleccionar una tabla de códigos entre tablas de códigos disponibles plurales para descodificar los códigos de longitud variable plurales.
- 105. El descodificador de conformidad con la reivindicación 103, caracterizado además porque el tipo de macrobloque es intra, un vector de movimiento, o cuatro vectores de movimiento.
- 106. Un método que comprende: procesar una primera señal que indica si un campo pronosticado delantero entrelazado tiene un campo de referencia o dos campos de referencia posibles para la compensación de movimiento; si la primera señal indica que el campo pronosticado delantero entrelazado tiene un campo de referencia, se procesa una segunda señal que identifica el campo de referencia entre los dos campos de referencia posibles; y realiza la compensación de movimiento para el campo pronosticado delantero entrelazado.
- 107. El método tal y como se describe en la reivindicación 106, en donde la primera señal es un solo bit.
- 108. El método tal y como se describe en la reivindicación 106, en donde la segunda señal es un solo bit..
- 109. El método tal y como se describe en la reivindicación 106, en donde la primera señal es un nivel de imagen para el campo pronosticado delantero entrelazado.
- 110. El método tal y como se describe en la reivindicación 106, en donde la segunda señal está al nivel de imagen para el campo pronosticado delantero entrelazado.
- 111. El método tal y como se describe en la reivindicación 106, que además comprende, si la primera señal indica el campo pronosticado delantero entrelazado tiene dos campos de referencia posibles, para cada uno de los vectores de movimiento plurales para los bloques y / o macrobloques del campo pronosticado delantero entrelazado, y procesa una tercera señal para seleccionar entre los dos campos de referencia posibles.
- 112. El método tal y como se describe en la reivindicación 111, en donde las terceras señales se encuentran al nivel de macrobloque.
- 113. El método tal y como se describe en la reivindicación 106, en donde los dos campos de referencia posibles están restringidos para ser (1) el campo pronosticado delantero o intra entrelazado anterior más reciente temporalmente, y (2) el segundo campo pronosticado delantero o intra entrelazado anterior más reciente temporalmente.
- 114. El método tal y como se describe en la reivindicación 106, en donde un codificador de video realiza el procesamiento y compensación de movimiento.
- 115. El método tal y como se describe en la reivindicación 106, en donde un descodificador de video realiza el procesamiento y compensación de movimiento.
- 116. Un método que comprende: procesar una primera señal que indica si un campo pronosticado delantero entrelazado tiene un campo de referencia o dos campos de referencia posibles para la compensación de movimiento; realizar la compensación de movimiento para el campo pronosticado delantero entrelazado; y actualizar una memoria intermedia del campo de referencia para una compensación de movimiento posterior sin procesar adicionalmente las señales para manejar la memoria intermedia del campo de referencia.
- 117. El método tal y como se describe en la reivindicación 116 que además comprende, si la primera señal indica que el campo pronosticado delantero entrelazado tiene un campo de referencia, procesar una segunda señal que identifica el campo de referencia entre dos campos de referencia posibles.
- 118. El método tal y como se describe en la reivindicación 117, en donde las señales primera y segunda cada una son de un solo bit.
- 119. El método tal y como se describe en la reivindicación 117, en donde las señales primera y segunda cada una están al nivel de imagen para el campo pronosticado delantero entrelazado.
- 120. El método tal y como se describe en la reivindicación 116 que además comprende, si la primera señal indica que el campo pronosticado delantero entrelazado tiene dos campos de referencia posibles, para cada uno de los vectores de movimiento plurales para los bloques o macrobloques del campo pronosticado delantero entrelazado, procesar una segunda señal para seleccionar entre los dos campos de referencia posibles.
- 121. El método tal y como se describe en la reivindicación 116 en donde los dos campos de referencia posibles están restringidos para ser (1) el campo pronosticado delantero o intra entrelazado anterior más reciente temporalmente, y (2) el segundo campo pronosticado delantero o intra entrelazado anterior más reciente temporalmente.
- 122. El método tal y como se describe en la reivindicación 116, en donde un campo de referencia está restringido para ser (1) el campo pronosticado delantero o intra entrelazado anterior más reciente, o (2) el segundo campo pronosticado delantero o intra entrelazado anterior más reciente.
- 123. El método tal y como se describe en la reivindicación 116, en donde un codificador de video realiza el procesamiento, la compensación de movimiento y la actualización.
- 124. El método tal y como se describe en la reivindicación 116, en donde un descodificador de video realiza el procesamiento, la compensación de movimiento y la actualización.
- 125. Un descodificador que comprende: medios para procesar una primera señal que Indica si un campo pronosticado delantero entrelazado tiene un campo de referencia o dos campos de referencia posibles para la compensación de movimiento; medios para procesar una segunda señal que identifica el campo de referencia entre los dos campos de referencia posibles cuando la primera señal indica que el campo pronosticado delantero entrelazado tiene un campo de referencia; medios para procesar una tercera señal para cada uno de los vectores de movimiento plurales cuando la primera señal indica que el campo pronosticado delantero entrelazado tiene dos campos de referencia posibles, en donde cada una de las terceras señales es para seleccionar entre dos campos de referencia posibles; y medios para realizar la compensación de movimiento para el campo pronosticado delantero entrelazado.
- 126. El descodificador de conformidad con la reivindicación 125, en donde la primera señal es un solo bit y la segunda señal es un solo bit.
- 127. El descodificador de conformidad con la reivindicación 125, en donde la primera señal y la segunda señal cada una están al nivel de imagen para el campo pronosticado delantero entrelazado, y en donde la tercera señal está en el nivel de macrobloque.
- 128. El descodificador de conformidad con la reivindicación 125, en donde los dos campos de referencia posibles están restringidos para ser (1) el campo pronosticado delantero o intra entrelazado anterior más reciente, o (2) el segundo campo pronosticado delantero o intra entrelazado anterior más reciente.
- 129. El descodificador de conformidad con la reivindicación 125, caracterizado además porque comprende: medios para actualizar una memoria intermedia del campo de referencia para una compensación de movimiento posterior sin procesar señales adicionales para manejar la memoria intermedia del campo de referencia.
- 130. Un método que comprende: para un macrobloque con uno o más vectores de movimiento de luminancia, derivar un vector de movimiento de crominancia basado al menos en parte en la evaluación de la polaridad del o los vectores de movimiento de luminancia; y realizar la compensación de movimiento.
- 131. El método tal y como se describe en la reivindicación 130, en donde cada uno de los vectores de movimiento de luminancia tiene una polaridad uniforme o no uniforme, y en donde la evaluación de la polaridad incluye determinar si la polaridad es más común entre los vectores de movimiento de luminancia.
- 132. El método tal y como se describe en la reivindicación 130 en donde la derivación del vector de movimiento de crominancia incluye determinar una polaridad dominante para los vectores de movimiento de luminancia, y en donde sólo dichos vectores de movimiento de luminancia que tienen una polaridad dominante se usan en la derivación del vector de movimiento de crominancia.
- 133. El método tal y como se describe en la reivindicación 132, en donde cuatro de los vectores de movimiento de luminancia tiene la polaridad dominante y el vector de movimiento de crominancia se deriva de la media del componente acertado de los cuatro vectores de movimiento de luminancia que tienen la polaridad dominante
- 134. El método tal y como se describe en la reivindicación 132, en donde sólo tres de los vectores de movimiento de luminancia tiene la polaridad dominante y el vector de movimiento de crominancia se deriva de la media del componente acertado a de los tres vectores de movimiento de luminancia que tienen la polaridad dominante.
- 135. El método tal y como se describe en la reivindicación 132, en donde sólo dos de los vectores de movimiento de luminancia tiene la polaridad dominante y el vector de movimiento de crominancia se deriva de la media del componente acertado a de los dos vectores de movimiento de luminancia que tienen la polaridad dominante.
- 136. El método tal y como se describe en la reivindicación 132, en donde sólo uno de los vectores de movimiento de luminancia tiene la polaridad dominante y el vector de movimiento de crominancia se deriva de la media del componente acertado a del vector de movimiento de luminancia que tiene la polaridad dominante.
- 137. El método tal y como se describe en la reivindicación 130, en donde un campo P entrelazado del campo de referencia dos incluye el macrobloque, y en donde la evaluación de la polaridad incluye determinar cual de los vectores de movimiento de luminancia tiene una polaridad igual al campo P y cual de los vectores de movimiento de luminancia tiene una polaridad opuesta al campo P.
- 138. El método tal y como se describe en la reivindicación 137, en donde, si los números iguales de los vectores de movimiento de luminancia tienen la misma polaridad y la polaridad opuesta, cada uno de los vectores de movimiento de luminancia que tiene la misma polaridad contribuye a la derivación del vector de movimiento de crominancia.
- 139. El método tal y como se describe en la reivindicación 130, en donde el macrobloque tiene cuatro bloques de luminancia y en donde cada uno de los cuatro bloques de luminancia (1) tiene un vector de movimiento de luminancia del campo de referencia no uniforme y los vectores de movimiento de luminancia, o (2) tiene un vector de movimiento de luminancia del campo de referencia uniforme de los vectores de movimiento de luminancia.
- 140. El método tal y como se describe en la reivindicación 130, en donde el macrobloque tiene cuatro bloques de luminancia, y en donde cada uno de los cuatro bloques de luminancia: (1) es intra, (2) tiene un vector de movimiento de luminancia del campo de referencia no uniforme de uno o más vectores de movimiento de luminancia, o (3) tiene un vector de movimiento de luminancia del campo de referencia uniforme de uno o más vectores de movimiento de luminancia.
- 141. El método tal y como se describe en la reivindicación 130, en donde un codificador de video deriva el vector de movimiento de crominancia y realiza la compensación de movimiento.
- 142. El método tal y como se describe en la reivindicación 130, en donde un descodificador de video deriva el vector de movimiento de crominancia y realiza la compensación de movimiento.
- 143. Un método que comprende: determinar una polaridad imperante entre vectores de movimiento de luminancia plurales para un macrobloque; y derivar un vector de movimiento de crominancia para el macrobloque basado al menos en parte en uno o más de los vectores de movimiento de luminancia plurales que tienen la polaridad imperante.
- 144. El método tal y como se describe en la reivindicación 143, en donde: si la polaridad no uniforme es más común que la polaridad uniforme entre los vectores de movimiento de luminancia plurales, la polaridad imperante es una polaridad no uniforme; y si la polaridad uniforme es más común de la polaridad no uniforme entre los vectores de movimiento de luminancia plurales, la polaridad imperante es la polaridad uniforme.
- 145. El método tal y como se describe en la reivindicación 144, en donde: si la polaridad no uniforme y la polaridad uniforme son comunes de igual manera que entre los vectores de movimiento de luminancia plurales, la polaridad imperante es igual que la polaridad de un campo P entrelazado que incluye el macrobloque.
- 146. El método tal y como se describe en la reivindicación 143, en donde cuatro de los vectores de movimiento de luminancia plural tienen la polaridad imperante y los vectores de movimiento de crominancia se derivan de la media del componente acertado a de los cuatro vectores de movimiento de luminancia que tienen la polaridad imperante.
- 147. El método tal y como se describe en la reivindicación 143, en donde sólo tres de los vectores de movimiento de luminancia tienen la polaridad imperante y el vector de movimiento de crominancia se deriva de la media del componente acertado de los tres vectores de movimiento de luminancia que tienen la polaridad imperante.
- 148. El método tal y como se describe en la reivindicación 143, en donde sólo dos de los vectores de movimiento de luminancia tienen la polaridad imperante y el vector de movimiento de crominancia se deriva de la media del componente acertado de los dos vectores de movimiento de luminancia que tienen la polaridad imperante.
- 149. El método tal y como se describe en la reivindicación 143 en donde el macrobloque tiene cuatro bloques de luminancia y en donde cada uno de los cuatro bloques de luminancia tiene un vector de movimiento de luminancia del campo de referencia uniforme o no uniforme de los vectores de movimiento de luminancia plurales.
- 150. El método tal y como se describe en la reivindicación 143 en donde el macrobloque tiene cuatro bloques de luminancia y en donde cada uno de los cuatro bloques de luminancia es intra o tiene un vector de movimiento de luminancia del campo de referencia uniforme o no uniforme de los vectores de movimiento de luminancia plurales.
- 151. Un descodif icador que comprende: medios para derivar vectores de movimiento de crominancia para macrobloques en campos P, incluyendo, al menos para uno de los macrobloques plurales, la derivación de un vector de movimiento de crominancia pasado al menos en parte en la evaluación de la polaridad de los vectores de movimiento de luminancia plurales para los macrobloques; y medios para realizar la estimación de movimiento.
- 152. El descodificador de conformidad con la reivindicación 151, caracterizado además porque para un macrobloque determinado de un campo P entrelazado, los medios para derivar los vectores de movimiento de crominancia: si el macrobloque es intra, se salta la derivación del vector de movimiento de crominancia; de otra manera, si el macrobloque tiene un solo vector de movimiento de luminancia, deriva un vector de movimiento de crominancia del vector de movimiento de luminancia único; de otra manera, si el campo P entrelazado tiene un cuadro de referencia, deriva el vector de movimiento de crominancia de los vectores de movimiento de luminancia plurales; y de otra manera, deriva el vector de movimiento de crominancia de uno o más vectores de movimiento de luminancia plural del macrobloque que tiene una pluralidad imperante.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US50108103P | 2003-09-07 | 2003-09-07 | |
US10/857,473 US7567617B2 (en) | 2003-09-07 | 2004-05-27 | Predicting motion vectors for fields of forward-predicted interlaced video frames |
US10/933,958 US7599438B2 (en) | 2003-09-07 | 2004-09-02 | Motion vector block pattern coding and decoding |
PCT/US2004/029034 WO2005027496A2 (en) | 2003-09-07 | 2004-09-03 | Coding and decoding for interlaced video |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA06002525A true MXPA06002525A (es) | 2006-06-20 |
Family
ID=34317471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA06002525A MXPA06002525A (es) | 2003-09-07 | 2004-09-03 | Codificacion y descodificacion para video entrelazado. |
Country Status (9)
Country | Link |
---|---|
US (1) | US7599438B2 (es) |
EP (5) | EP2323398B1 (es) |
JP (7) | JP5030591B2 (es) |
KR (1) | KR101037816B1 (es) |
CN (7) | CN101873486B (es) |
HK (6) | HK1144989A1 (es) |
MX (1) | MXPA06002525A (es) |
PL (1) | PL2323399T3 (es) |
WO (1) | WO2005027496A2 (es) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
US7983835B2 (en) | 2004-11-03 | 2011-07-19 | Lagassey Paul J | Modular intelligent transportation system |
US8315307B2 (en) * | 2004-04-07 | 2012-11-20 | Qualcomm Incorporated | Method and apparatus for frame prediction in hybrid video compression to enable temporal scalability |
CN100411435C (zh) * | 2005-01-24 | 2008-08-13 | 威盛电子股份有限公司 | 在视讯编码中降低占用存储器频宽的系统与方法 |
JP4760551B2 (ja) * | 2006-06-05 | 2011-08-31 | ソニー株式会社 | 動きベクトル復号化方法および復号化装置 |
JP4760552B2 (ja) * | 2006-06-06 | 2011-08-31 | ソニー株式会社 | 動きベクトル復号化方法および復号化装置 |
KR100763917B1 (ko) * | 2006-06-21 | 2007-10-05 | 삼성전자주식회사 | 고속으로 움직임을 추정하는 방법 및 장치 |
DE102006043707A1 (de) * | 2006-09-18 | 2008-03-27 | Robert Bosch Gmbh | Verfahren zur Datenkompression in einer Videosequenz |
US8873932B2 (en) | 2007-12-11 | 2014-10-28 | Cisco Technology, Inc. | Inferential processing to ascertain plural levels of picture interdependencies |
US20090180546A1 (en) | 2008-01-09 | 2009-07-16 | Rodriguez Arturo A | Assistance for processing pictures in concatenated video streams |
US8875199B2 (en) | 2006-11-13 | 2014-10-28 | Cisco Technology, Inc. | Indicating picture usefulness for playback optimization |
US8416859B2 (en) | 2006-11-13 | 2013-04-09 | Cisco Technology, Inc. | Signalling and extraction in compressed video of pictures belonging to interdependency tiers |
US8958486B2 (en) | 2007-07-31 | 2015-02-17 | Cisco Technology, Inc. | Simultaneous processing of media and redundancy streams for mitigating impairments |
US8804845B2 (en) | 2007-07-31 | 2014-08-12 | Cisco Technology, Inc. | Non-enhancing media redundancy coding for mitigating transmission impairments |
US8605786B2 (en) * | 2007-09-04 | 2013-12-10 | The Regents Of The University Of California | Hierarchical motion vector processing method, software and devices |
EP2213097A2 (en) * | 2007-10-16 | 2010-08-04 | Cisco Technology, Inc. | Conveyance of concatenation properties and picture orderness in a video stream |
US8432975B2 (en) * | 2008-01-18 | 2013-04-30 | Mediatek Inc. | Apparatus and method for processing a picture frame |
US8416858B2 (en) | 2008-02-29 | 2013-04-09 | Cisco Technology, Inc. | Signalling picture encoding schemes and associated picture properties |
EP2266318B1 (en) | 2008-03-19 | 2020-04-22 | Nokia Technologies Oy | Combined motion vector and reference index prediction for video coding |
US8804831B2 (en) * | 2008-04-10 | 2014-08-12 | Qualcomm Incorporated | Offsets at sub-pixel resolution |
US9077971B2 (en) * | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
US8705622B2 (en) * | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US20090257499A1 (en) * | 2008-04-10 | 2009-10-15 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
KR101445791B1 (ko) * | 2008-05-10 | 2014-10-02 | 삼성전자주식회사 | 움직임 벡터 변환을 이용한 비월 주사 영상 부호화/복호화방법 및 장치 |
WO2009152450A1 (en) | 2008-06-12 | 2009-12-17 | Cisco Technology, Inc. | Picture interdependencies signals in context of mmco to assist stream manipulation |
US8705631B2 (en) | 2008-06-17 | 2014-04-22 | Cisco Technology, Inc. | Time-shifted transport of multi-latticed video for resiliency from burst-error effects |
US8699578B2 (en) | 2008-06-17 | 2014-04-15 | Cisco Technology, Inc. | Methods and systems for processing multi-latticed video streams |
US8971402B2 (en) | 2008-06-17 | 2015-03-03 | Cisco Technology, Inc. | Processing of impaired and incomplete multi-latticed video streams |
CN102396221B (zh) * | 2008-06-25 | 2015-03-25 | 思科技术公司 | 阻止特技模式操作的支持 |
WO2010017166A2 (en) | 2008-08-04 | 2010-02-11 | Dolby Laboratories Licensing Corporation | Overlapped block disparity estimation and compensation architecture |
US8599920B2 (en) | 2008-08-05 | 2013-12-03 | Qualcomm Incorporated | Intensity compensation techniques in video processing |
US9078007B2 (en) * | 2008-10-03 | 2015-07-07 | Qualcomm Incorporated | Digital video coding with interpolation filters and offsets |
US8503527B2 (en) | 2008-10-03 | 2013-08-06 | Qualcomm Incorporated | Video coding with large macroblocks |
EP2207357A1 (en) * | 2008-10-06 | 2010-07-14 | Lg Electronics Inc. | Method and apparatus for video coding using large macroblocks |
KR102540547B1 (ko) * | 2018-08-20 | 2023-06-05 | 현대자동차주식회사 | 차량의 연료시스템 냉각 장치 |
WO2010041855A2 (en) * | 2008-10-06 | 2010-04-15 | Lg Electronics Inc. | A method and an apparatus for processing a video signal |
TW201016017A (en) * | 2008-10-08 | 2010-04-16 | Univ Nat Taiwan | Memory management method and system of video encoder |
US8259814B2 (en) | 2008-11-12 | 2012-09-04 | Cisco Technology, Inc. | Processing of a video program having plural processed representations of a single video signal for reconstruction and output |
WO2010096767A1 (en) | 2009-02-20 | 2010-08-26 | Cisco Technology, Inc. | Signalling of decodable sub-sequences |
US20100218232A1 (en) * | 2009-02-25 | 2010-08-26 | Cisco Technology, Inc. | Signalling of auxiliary information that assists processing of video according to various formats |
US8782261B1 (en) | 2009-04-03 | 2014-07-15 | Cisco Technology, Inc. | System and method for authorization of segment boundary notifications |
JP5481923B2 (ja) * | 2009-04-28 | 2014-04-23 | 富士通株式会社 | 画像符号化装置、画像符号化方法および画像符号化プログラム |
US8949883B2 (en) | 2009-05-12 | 2015-02-03 | Cisco Technology, Inc. | Signalling buffer characteristics for splicing operations of video streams |
US8279926B2 (en) | 2009-06-18 | 2012-10-02 | Cisco Technology, Inc. | Dynamic streaming with latticed representations of video |
KR101452859B1 (ko) | 2009-08-13 | 2014-10-23 | 삼성전자주식회사 | 움직임 벡터를 부호화 및 복호화하는 방법 및 장치 |
KR101456498B1 (ko) * | 2009-08-14 | 2014-10-31 | 삼성전자주식회사 | 계층적 부호화 단위의 스캔 순서를 고려한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
US9237355B2 (en) * | 2010-02-19 | 2016-01-12 | Qualcomm Incorporated | Adaptive motion resolution for video coding |
US8736467B2 (en) | 2010-04-09 | 2014-05-27 | Ntt Docomo, Inc. | Adaptive binarization for arithmetic coding |
KR101752418B1 (ko) * | 2010-04-09 | 2017-06-29 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
US8942282B2 (en) * | 2010-04-12 | 2015-01-27 | Qualcomm Incorporated | Variable length coding of coded block pattern (CBP) in video compression |
US8971400B2 (en) * | 2010-04-14 | 2015-03-03 | Mediatek Inc. | Method for performing hybrid multihypothesis prediction during video coding of a coding unit, and associated apparatus |
US8837592B2 (en) * | 2010-04-14 | 2014-09-16 | Mediatek Inc. | Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus |
US9118929B2 (en) | 2010-04-14 | 2015-08-25 | Mediatek Inc. | Method for performing hybrid multihypothesis prediction during video coding of a coding unit, and associated apparatus |
KR101885258B1 (ko) | 2010-05-14 | 2018-08-06 | 삼성전자주식회사 | 비디오 신호의 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치 |
KR101444691B1 (ko) * | 2010-05-17 | 2014-09-30 | 에스케이텔레콤 주식회사 | 참조영상 구성 및 인덱싱 장치 및 방법 |
US9014271B2 (en) * | 2010-07-12 | 2015-04-21 | Texas Instruments Incorporated | Method and apparatus for region-based weighted prediction with improved global brightness detection |
US9357229B2 (en) * | 2010-07-28 | 2016-05-31 | Qualcomm Incorporated | Coding motion vectors in video coding |
US10104391B2 (en) | 2010-10-01 | 2018-10-16 | Dolby International Ab | System for nested entropy encoding |
US20120082228A1 (en) | 2010-10-01 | 2012-04-05 | Yeping Su | Nested entropy encoding |
US10327008B2 (en) | 2010-10-13 | 2019-06-18 | Qualcomm Incorporated | Adaptive motion vector resolution signaling for video coding |
EP2675169B1 (en) | 2011-02-09 | 2019-06-26 | LG Electronics Inc. | Method for encoding and decoding image data with a temporal motion vector predictor and device using same |
US8964852B2 (en) | 2011-02-23 | 2015-02-24 | Qualcomm Incorporated | Multi-metric filtering |
JP5729817B2 (ja) | 2011-06-29 | 2015-06-03 | 日本電信電話株式会社 | 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム及び動画像復号プログラム |
WO2013001727A1 (ja) | 2011-06-30 | 2013-01-03 | 三菱電機株式会社 | 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法 |
US10536701B2 (en) * | 2011-07-01 | 2020-01-14 | Qualcomm Incorporated | Video coding using adaptive motion vector resolution |
CA2989032C (en) * | 2011-07-01 | 2020-02-18 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding using hierarchical data unit, and method and apparatus for decoding |
US9148663B2 (en) | 2011-09-28 | 2015-09-29 | Electronics And Telecommunications Research Institute | Method for encoding and decoding images based on constrained offset compensation and loop filter, and apparatus therefor |
KR20130034566A (ko) | 2011-09-28 | 2013-04-05 | 한국전자통신연구원 | 제한된 오프셋 보상 및 루프 필터를 기반으로 하는 영상 부호화 및 복호화 방법 및 그 장치 |
US9204171B1 (en) | 2011-09-28 | 2015-12-01 | Electronics And Telecommunications Research Institute | Method for encoding and decoding images based on constrained offset compensation and loop filter, and apparatus therefor |
US9204148B1 (en) | 2011-09-28 | 2015-12-01 | Electronics And Telecommunications Research Institute | Method for encoding and decoding images based on constrained offset compensation and loop filter, and apparatus therefor |
WO2013047805A1 (ja) | 2011-09-29 | 2013-04-04 | シャープ株式会社 | 画像復号装置、画像復号方法および画像符号化装置 |
MX353235B (es) | 2011-09-29 | 2018-01-08 | Sharp Kk Star | Dispositivo de decodificación de imágenes, método de decodificación de imágenes y dispositivo de codificación de imágenes. |
RU2646307C1 (ru) * | 2011-10-17 | 2018-03-02 | Кт Корпорейшен | Способ декодирования видеосигнала |
JP5685682B2 (ja) * | 2011-10-24 | 2015-03-18 | 株式会社Gnzo | 映像信号の符号化システム及び符号化方法 |
EP2777258B1 (en) * | 2011-11-04 | 2017-01-11 | Huawei Technologies Co., Ltd. | Binarization of prediction residuals for lossless video coding |
KR20130050403A (ko) * | 2011-11-07 | 2013-05-16 | 오수미 | 인터 모드에서의 복원 블록 생성 방법 |
GB2501535A (en) * | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
WO2013168407A1 (en) * | 2012-05-09 | 2013-11-14 | Panasonic Corporation | Method of performing motion vector prediction, encoding and decoding methods, and apparatuses thereof |
ES2764988T3 (es) * | 2012-07-02 | 2020-06-05 | Samsung Electronics Co Ltd | Codificación por entropía de un vídeo y decodificación por entropía de un vídeo |
US9621909B2 (en) | 2012-07-02 | 2017-04-11 | Lg Electronics Inc. | Method for decoding image and apparatus using same |
PL2901688T3 (pl) | 2012-09-28 | 2020-05-18 | Nokia Technologies Oy | Aparat i sposób do kodowania i dekodowania wideo |
CN103869932A (zh) * | 2012-12-10 | 2014-06-18 | 建兴电子科技股份有限公司 | 光学输入装置及其操作方法 |
JP2014137099A (ja) * | 2013-01-16 | 2014-07-28 | Jatco Ltd | 変速機の制御装置 |
US9509998B1 (en) * | 2013-04-04 | 2016-11-29 | Google Inc. | Conditional predictive multi-symbol run-length coding |
GB2512829B (en) * | 2013-04-05 | 2015-05-27 | Canon Kk | Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme |
US9706229B2 (en) * | 2013-06-05 | 2017-07-11 | Texas Instruments Incorporated | High definition VP8 decoder |
FR3011429A1 (fr) * | 2013-09-27 | 2015-04-03 | Orange | Codage et decodage video par heritage d'un champ de vecteurs de mouvement |
WO2015100522A1 (en) | 2013-12-30 | 2015-07-09 | Mediatek Singapore Pte. Ltd. | Methods for inter-component residual prediction |
CN103957424B (zh) * | 2014-04-15 | 2017-04-12 | 南京第五十五所技术开发有限公司 | 一种有效消除视频的乱码或方块的方法 |
US9998745B2 (en) | 2015-10-29 | 2018-06-12 | Microsoft Technology Licensing, Llc | Transforming video bit streams for parallel processing |
US10827186B2 (en) * | 2016-08-25 | 2020-11-03 | Intel Corporation | Method and system of video coding with context decoding and reconstruction bypass |
US10701384B2 (en) * | 2018-08-01 | 2020-06-30 | Tencent America LLC | Method and apparatus for improvement on decoder side motion derivation and refinement |
US11477476B2 (en) * | 2018-10-04 | 2022-10-18 | Qualcomm Incorporated | Affine restrictions for the worst-case bandwidth reduction in video coding |
US10735745B1 (en) * | 2019-06-06 | 2020-08-04 | Tencent America LLC | Method and apparatus for video coding |
CN113869154B (zh) * | 2021-09-15 | 2022-09-02 | 中国科学院大学 | 根据语言描述的视频动作者分割方法 |
EP4300955A1 (en) * | 2022-06-29 | 2024-01-03 | Beijing Xiaomi Mobile Software Co., Ltd. | Encoding/decoding video picture data |
Family Cites Families (167)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56128070A (en) | 1980-03-13 | 1981-10-07 | Fuji Photo Film Co Ltd | Band compressing equipment of variable density picture |
JPS60158786A (ja) | 1984-01-30 | 1985-08-20 | Kokusai Denshin Denwa Co Ltd <Kdd> | 画像動き量検出方式 |
US4661849A (en) | 1985-06-03 | 1987-04-28 | Pictel Corporation | Method and apparatus for providing motion estimation signals for communicating image sequences |
DE3684047D1 (de) | 1985-07-02 | 1992-04-09 | Matsushita Electric Ind Co Ltd | Vorrichtung zur blockkodierung. |
US4661853A (en) | 1985-11-01 | 1987-04-28 | Rca Corporation | Interfield image motion detector for video signals |
FR2599577B1 (fr) | 1986-05-29 | 1988-08-05 | Guichard Jacques | Procede de codage par transformation pour la transmission de signaux d'image. |
US4800432A (en) | 1986-10-24 | 1989-01-24 | The Grass Valley Group, Inc. | Video Difference key generator |
NL8700565A (nl) | 1987-03-10 | 1988-10-03 | Philips Nv | Televisiesysteem waarin aan een transformatiekodering onderworpen gedigitaliseerde beeldsignalen worden overgebracht van een kodeerstation naar een dekodeerstation. |
DE3855114D1 (de) | 1987-05-06 | 1996-04-25 | Philips Patentverwaltung | System zur Übertragung von Videobildern |
DE3854171T2 (de) | 1987-06-09 | 1995-12-21 | Sony Corp | Bewertung von Bewegungsvektoren in Fernsehbildern. |
DE3854337T2 (de) | 1987-06-09 | 1996-02-01 | Sony Corp | Bewegungskompensierte Interpolation von digitalen Fernsehbildern. |
FR2648254B2 (fr) | 1988-09-23 | 1991-08-30 | Thomson Csf | Procede et dispositif d'estimation de mouvement dans une sequence d'images animees |
US4985768A (en) | 1989-01-20 | 1991-01-15 | Victor Company Of Japan, Ltd. | Inter-frame predictive encoding system with encoded and transmitted prediction error |
US5379351A (en) | 1992-02-19 | 1995-01-03 | Integrated Information Technology, Inc. | Video compression/decompression processing and processors |
JPH07109990B2 (ja) | 1989-04-27 | 1995-11-22 | 日本ビクター株式会社 | 適応型フレーム間予測符号化方法及び復号方法 |
JPH03117991A (ja) | 1989-09-29 | 1991-05-20 | Victor Co Of Japan Ltd | 動きベクトル符号化装置及び復号化装置 |
US5144426A (en) | 1989-10-13 | 1992-09-01 | Matsushita Electric Industrial Co., Ltd. | Motion compensated prediction interframe coding system |
NL9000424A (nl) | 1990-02-22 | 1991-09-16 | Philips Nv | Overdrachtsysteem voor gedigitaliseerde televisiebeelden. |
JPH082107B2 (ja) | 1990-03-02 | 1996-01-10 | 国際電信電話株式会社 | 動画像のハイブリッド符号化方法及びその装置 |
JPH03265290A (ja) | 1990-03-14 | 1991-11-26 | Toshiba Corp | テレビジョン信号走査線変換器 |
US5103306A (en) | 1990-03-28 | 1992-04-07 | Transitions Research Corporation | Digital image compression employing a resolution gradient |
US5091782A (en) | 1990-04-09 | 1992-02-25 | General Instrument Corporation | Apparatus and method for adaptively compressing successive blocks of digital video |
US4999705A (en) | 1990-05-03 | 1991-03-12 | At&T Bell Laboratories | Three dimensional motion compensated video coding |
US5155594A (en) | 1990-05-11 | 1992-10-13 | Picturetel Corporation | Hierarchical encoding method and apparatus employing background references for efficiently communicating image sequences |
US5068724A (en) | 1990-06-15 | 1991-11-26 | General Instrument Corporation | Adaptive motion compensation for digital television |
JP3037383B2 (ja) | 1990-09-03 | 2000-04-24 | キヤノン株式会社 | 画像処理システム及びその方法 |
EP0683615B1 (en) | 1990-10-31 | 1999-05-19 | Victor Company Of Japan, Ltd. | Compression method for interlace moving image signals |
USRE35093E (en) | 1990-12-03 | 1995-11-21 | The Trustees Of Columbia University In The City Of New York | Systems and methods for coding even fields of interlaced video sequences |
US5193004A (en) | 1990-12-03 | 1993-03-09 | The Trustees Of Columbia University In The City Of New York | Systems and methods for coding even fields of interlaced video sequences |
US5111292A (en) | 1991-02-27 | 1992-05-05 | General Electric Company | Priority selection apparatus as for a video signal processor |
JPH0630280A (ja) | 1991-03-19 | 1994-02-04 | Nec Eng Ltd | 2値画像データのブロック別選択型符号化前処理方式 |
JP3119888B2 (ja) | 1991-04-18 | 2000-12-25 | 松下電器産業株式会社 | 信号処理方法及び記録再生装置 |
DE4113505A1 (de) | 1991-04-25 | 1992-10-29 | Thomson Brandt Gmbh | Verfahren zur bildsignalcodierung |
JPH04334188A (ja) | 1991-05-08 | 1992-11-20 | Nec Corp | 動画像信号の符号化方式 |
JP3226539B2 (ja) * | 1991-05-24 | 2001-11-05 | ブリティッシュ・ブロードキャスティング・コーポレーション | ビデオ画像処理 |
US5467136A (en) | 1991-05-31 | 1995-11-14 | Kabushiki Kaisha Toshiba | Video decoder for determining a motion vector from a scaled vector and a difference vector |
US5317397A (en) | 1991-05-31 | 1994-05-31 | Kabushiki Kaisha Toshiba | Predictive coding using spatial-temporal filtering and plural motion vectors |
JP2977104B2 (ja) | 1991-07-26 | 1999-11-10 | ソニー株式会社 | 動画像データエンコード方法および装置、並びに動画像データデコード方法および装置 |
US5539466A (en) | 1991-07-30 | 1996-07-23 | Sony Corporation | Efficient coding apparatus for picture signal and decoding apparatus therefor |
JP2699703B2 (ja) | 1991-07-31 | 1998-01-19 | 松下電器産業株式会社 | 動き補償予測方法とそれを用いた画像信号符号化方法 |
JPH0541862A (ja) | 1991-08-03 | 1993-02-19 | Sony Corp | 動きベクトルの可変長符号化方式 |
US5428396A (en) | 1991-08-03 | 1995-06-27 | Sony Corporation | Variable length coding/decoding method for motion vectors |
JP2991833B2 (ja) | 1991-10-11 | 1999-12-20 | 松下電器産業株式会社 | インターレス走査ディジタルビデオ信号の符号化装置及びその方法 |
JP2586260B2 (ja) * | 1991-10-22 | 1997-02-26 | 三菱電機株式会社 | 適応的ブロッキング画像符号化装置 |
JP2962012B2 (ja) | 1991-11-08 | 1999-10-12 | 日本ビクター株式会社 | 動画像符号化装置及びその復号装置 |
JPH05137131A (ja) | 1991-11-13 | 1993-06-01 | Sony Corp | フレーム間動き予測方法 |
US5227878A (en) | 1991-11-15 | 1993-07-13 | At&T Bell Laboratories | Adaptive coding and decoding of frames and fields of video |
US5510840A (en) | 1991-12-27 | 1996-04-23 | Sony Corporation | Methods and devices for encoding and decoding frame signals and recording medium therefor |
US5594813A (en) | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
US5293229A (en) * | 1992-03-27 | 1994-03-08 | Matsushita Electric Corporation Of America | Apparatus and method for processing groups of fields in a video data compression system |
US5287420A (en) | 1992-04-08 | 1994-02-15 | Supermac Technology | Method for image compression on a personal computer |
KR0166716B1 (ko) | 1992-06-18 | 1999-03-20 | 강진구 | 블럭 dpcm을 이용한 부호화/복호화방법 및 장치 |
JP3443867B2 (ja) | 1992-06-26 | 2003-09-08 | ソニー株式会社 | 画像信号符号化、復号化方法及び画像信号記録媒体 |
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 |
US6101313A (en) | 1992-06-29 | 2000-08-08 | Sony Corporation | High efficiency encoding and decoding of picture signals and recording medium containing same |
US5412435A (en) | 1992-07-03 | 1995-05-02 | Kokusai Denshin Denwa Kabushiki Kaisha | Interlaced video signal motion compensation prediction system |
JPH06113287A (ja) | 1992-09-30 | 1994-04-22 | Matsushita Electric Ind Co Ltd | 画像符号化装置と画像復号化装置 |
KR0166722B1 (ko) | 1992-11-30 | 1999-03-20 | 윤종용 | 부호화 및 복호화방법 및 그 장치 |
US5400075A (en) | 1993-01-13 | 1995-03-21 | Thomson Consumer Electronics, Inc. | Adaptive variable length encoder/decoder |
US5491516A (en) | 1993-01-14 | 1996-02-13 | Rca Thomson Licensing Corporation | Field elimination apparatus for a video compression/decompression system |
US5544286A (en) | 1993-01-29 | 1996-08-06 | Microsoft Corporation | Digital video data compression technique |
US5376968A (en) | 1993-03-11 | 1994-12-27 | General Instrument Corporation | Adaptive compression of digital video data using different modes such as PCM and DPCM |
DE69428019T2 (de) | 1993-03-24 | 2002-05-29 | Sony Corp., Tokio/Tokyo | Verfahren und vorrichtung zur kodierung/dekodierung von bewegungsvektoren, und verfahren und vorrichtung zur kodierung/dekodierung von bildsignalen |
JP3500634B2 (ja) | 1993-04-08 | 2004-02-23 | ソニー株式会社 | 動きベクトル検出装置 |
US5442400A (en) | 1993-04-29 | 1995-08-15 | Rca Thomson Licensing Corporation | Error concealment apparatus for MPEG-like video data |
DE69416717T2 (de) | 1993-05-21 | 1999-10-07 | Nippon Telegraph And Telephone Corp., Tokio/Tokyo | Bewegtbildkoder und -dekoder |
JPH06343172A (ja) | 1993-06-01 | 1994-12-13 | Matsushita Electric Ind Co Ltd | 動きベクトル検出方法及び動きベクトル符号化方法 |
US5448297A (en) | 1993-06-16 | 1995-09-05 | Intel Corporation | Method and system for encoding images using skip blocks |
JPH0730896A (ja) | 1993-06-25 | 1995-01-31 | Matsushita Electric Ind Co Ltd | 動きベクトル符号化及び復号化方法 |
US5517327A (en) | 1993-06-30 | 1996-05-14 | Minolta Camera Kabushiki Kaisha | Data processor for image data using orthogonal transformation |
US5477272A (en) | 1993-07-22 | 1995-12-19 | Gte Laboratories Incorporated | Variable-block size multi-resolution motion estimation scheme for pyramid coding |
US5453799A (en) | 1993-11-05 | 1995-09-26 | Comsat Corporation | Unified motion estimation architecture |
JP2606572B2 (ja) * | 1993-12-28 | 1997-05-07 | 日本電気株式会社 | 動画像符号化装置 |
JP3050736B2 (ja) * | 1993-12-13 | 2000-06-12 | シャープ株式会社 | 動画像符号化装置 |
KR0155784B1 (ko) | 1993-12-16 | 1998-12-15 | 김광호 | 영상데이타의 적응형 가변장 부호화/복호화방법 |
US5465118A (en) | 1993-12-17 | 1995-11-07 | International Business Machines Corporation | Luminance transition coding method for software motion video compression/decompression |
DE69535952D1 (de) | 1994-03-30 | 2009-06-25 | Nxp Bv | Verfahren und Schaltung zur Bewegungsschätzung zwischen Bildern mit zwei Zeilensprunghalbbildern, und Vorrichtung zur digitalen Signalkodierung mit einer solchen Schaltung |
US5550541A (en) | 1994-04-01 | 1996-08-27 | Dolby Laboratories Licensing Corporation | Compact source coding tables for encoder/decoder system |
TW283289B (es) | 1994-04-11 | 1996-08-11 | Gen Instrument Corp | |
US5650829A (en) | 1994-04-21 | 1997-07-22 | Sanyo Electric Co., Ltd. | Motion video coding systems with motion vector detection |
US5457495A (en) | 1994-05-25 | 1995-10-10 | At&T Ipm Corp. | Adaptive video coder with dynamic bit allocation |
US5767898A (en) | 1994-06-23 | 1998-06-16 | Sanyo Electric Co., Ltd. | Three-dimensional image coding by merger of left and right images |
US5796438A (en) | 1994-07-05 | 1998-08-18 | Sony Corporation | Methods and apparatus for interpolating picture information |
US5594504A (en) | 1994-07-06 | 1997-01-14 | Lucent Technologies Inc. | Predictive video coding using a motion vector updating routine |
KR0126871B1 (ko) | 1994-07-30 | 1997-12-29 | 심상철 | 양방향 이동벡터 추정을 위한 고속 블럭정합 방식 |
KR0151210B1 (ko) * | 1994-09-23 | 1998-10-15 | 구자홍 | 엠펙2를 수용하는 반화소 움직임 보상조절장치 |
US5552832A (en) | 1994-10-26 | 1996-09-03 | Intel Corporation | Run-length encoding sequence for video signals |
EP0710033A3 (en) * | 1994-10-28 | 1999-06-09 | Matsushita Electric Industrial Co., Ltd. | MPEG video decoder having a high bandwidth memory |
US5623311A (en) | 1994-10-28 | 1997-04-22 | Matsushita Electric Corporation Of America | MPEG video decoder having a high bandwidth memory |
EP0720383B1 (en) | 1994-12-30 | 2000-09-13 | Daewoo Electronics Co., Ltd | Method and apparatus for detecting motion vectors in a frame decimating video encoder |
EP0721287A1 (en) | 1995-01-09 | 1996-07-10 | Daewoo Electronics Co., Ltd | Method and apparatus for encoding a video signal |
DE69619002T2 (de) * | 1995-03-10 | 2002-11-21 | Kabushiki Kaisha Toshiba, Kawasaki | Bildkodierungs-/-dekodierungsvorrichtung |
KR0171118B1 (ko) | 1995-03-20 | 1999-03-20 | 배순훈 | 비디오신호 부호화 장치 |
KR0181027B1 (ko) | 1995-03-20 | 1999-05-01 | 배순훈 | 화소 단위 움직임 추정을 이용하는 영상처리 시스템 |
KR0181063B1 (ko) | 1995-04-29 | 1999-05-01 | 배순훈 | 특징점을 이용한 움직임 보상에서의 그리드 형성방법 및 장치 |
JP3803122B2 (ja) | 1995-05-02 | 2006-08-02 | 松下電器産業株式会社 | 画像メモリ装置および動きベクトル検出回路 |
US5654771A (en) | 1995-05-23 | 1997-08-05 | The University Of Rochester | Video compression system using a dense motion vector field and a triangular patch mesh overlay model |
GB2301972B (en) | 1995-06-06 | 1999-10-20 | Sony Uk Ltd | Video compression |
US5731850A (en) | 1995-06-07 | 1998-03-24 | Maturi; Gregory V. | Hybrid hierarchial/full-search MPEG encoder motion estimation |
US6208761B1 (en) * | 1995-07-11 | 2001-03-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Video coding |
US5687097A (en) | 1995-07-13 | 1997-11-11 | Zapex Technologies, Inc. | Method and apparatus for efficiently determining a frame motion vector in a video encoder |
US5668608A (en) | 1995-07-26 | 1997-09-16 | Daewoo Electronics Co., Ltd. | Motion vector estimation method and apparatus for use in an image signal encoding system |
US5970173A (en) | 1995-10-05 | 1999-10-19 | Microsoft Corporation | Image compression and affine transformation for image motion compensation |
US6192081B1 (en) * | 1995-10-26 | 2001-02-20 | Sarnoff Corporation | Apparatus and method for selecting a coding mode in a block-based coding system |
US5991463A (en) * | 1995-11-08 | 1999-11-23 | Genesis Microchip Inc. | Source data interpolation method and apparatus |
JP2798035B2 (ja) * | 1996-01-17 | 1998-09-17 | 日本電気株式会社 | 適応動きベクトル補間による動き補償フレーム間予測方法 |
US5787203A (en) | 1996-01-19 | 1998-07-28 | Microsoft Corporation | Method and system for filtering compressed video images |
US5692063A (en) | 1996-01-19 | 1997-11-25 | Microsoft Corporation | Method and system for unrestricted motion estimation for video |
US6957350B1 (en) * | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
US6037887A (en) * | 1996-03-06 | 2000-03-14 | Burr-Brown Corporation | Programmable gain for delta sigma analog-to-digital converter |
US5764814A (en) | 1996-03-22 | 1998-06-09 | Microsoft Corporation | Representation and encoding of general arbitrary shapes |
ES2190995T3 (es) * | 1996-05-17 | 2003-09-01 | Matsushita Electric Ind Co Ltd | Decodificador de video con compensacion de movimiento. |
US6233017B1 (en) * | 1996-09-16 | 2001-05-15 | Microsoft Corporation | Multimedia compression system with adaptive block sizes |
KR100488422B1 (ko) * | 1996-09-24 | 2005-09-02 | 주식회사 팬택앤큐리텔 | 그레이스케일모양정보부호화/복호화장치및그방법 |
KR100303685B1 (ko) * | 1996-09-30 | 2001-09-24 | 송문섭 | 영상 예측부호화 장치 및 그 방법 |
JP3164292B2 (ja) * | 1996-10-11 | 2001-05-08 | 日本ビクター株式会社 | 動画像符号化装置、動画像復号化装置および動画像符号記録方法 |
US5748789A (en) | 1996-10-31 | 1998-05-05 | Microsoft Corporation | Transparent block skipping in object-based video coding systems |
JPH10145779A (ja) * | 1996-11-06 | 1998-05-29 | Sony Corp | フィールド検出装置およびフィールド検出方法、画像符号化装置および画像符号化方法、並びに記録媒体および記録方法 |
US5905542A (en) * | 1996-12-04 | 1999-05-18 | C-Cube Microsystems, Inc. | Simplified dual prime video motion estimation |
US6377628B1 (en) * | 1996-12-18 | 2002-04-23 | Thomson Licensing S.A. | System for maintaining datastream continuity in the presence of disrupted source data |
US6201927B1 (en) * | 1997-02-18 | 2001-03-13 | Mary Lafuze Comer | Trick play reproduction of MPEG encoded signals |
US6005980A (en) * | 1997-03-07 | 1999-12-21 | General Instrument Corporation | Motion estimation and compensation of video object planes for interlaced digital video |
US6404813B1 (en) * | 1997-03-27 | 2002-06-11 | At&T Corp. | Bidirectionally predicted pictures or video object planes for efficient and flexible video coding |
JP3164031B2 (ja) * | 1997-05-30 | 2001-05-08 | 日本ビクター株式会社 | 動画像符号化復号化装置、動画像符号化復号化方法、及び動画像符号化記録媒体 |
US6067322A (en) * | 1997-06-04 | 2000-05-23 | Microsoft Corporation | Half pixel motion estimation in motion video signal encoding |
EP2271116B1 (en) * | 1997-06-09 | 2013-09-11 | Hitachi, Ltd. | Image decoding method and image decoder |
US6351563B1 (en) * | 1997-07-09 | 2002-02-26 | Hyundai Electronics Ind. Co., Ltd. | Apparatus and method for coding/decoding scalable shape binary image using mode of lower and current layers |
JP2897763B2 (ja) * | 1997-07-28 | 1999-05-31 | 日本ビクター株式会社 | 動き補償符号化装置、復号化装置、符号化方法及び復号化方法 |
FR2766946B1 (fr) * | 1997-08-04 | 2000-08-11 | Thomson Multimedia Sa | Procede et dispositif de pretraitement pour estimation de mouvement |
KR100252342B1 (ko) * | 1997-08-12 | 2000-04-15 | 전주범 | 움직임 벡터 부호화 방법 및 그 장치 |
KR100249223B1 (ko) * | 1997-09-12 | 2000-03-15 | 구자홍 | 엠팩(mpeg)-4의움직임벡터코딩방법 |
JP4573366B2 (ja) * | 1997-09-25 | 2010-11-04 | 株式会社大宇エレクトロニクス | 動きベクトル符号化方法及び符号化装置 |
KR100523908B1 (ko) * | 1997-12-12 | 2006-01-27 | 주식회사 팬택앤큐리텔 | 격행주사 영상에 대한 영상신호 부호화 장치 및 그 방법 |
KR100252108B1 (ko) * | 1997-12-20 | 2000-04-15 | 윤종용 | Mpeg 압축부호화 및 복호화기를 채용한 디지털 기록 재생장치 및 그 방법 |
CN1146245C (zh) * | 1997-12-22 | 2004-04-14 | 株式会社大宇电子 | 隔行二进制形状编码方法和装置 |
US6339656B1 (en) * | 1997-12-25 | 2002-01-15 | Matsushita Electric Industrial Co., Ltd. | Moving picture encoding decoding processing apparatus |
US6122017A (en) * | 1998-01-22 | 2000-09-19 | Hewlett-Packard Company | Method for providing motion-compensated multi-field enhancement of still images from video |
JPH11275592A (ja) * | 1998-01-22 | 1999-10-08 | Victor Co Of Japan Ltd | 動画像符号列変換装置及びその方法 |
KR100281463B1 (ko) * | 1998-03-14 | 2001-02-01 | 전주범 | 물체 기반 부호화 시스템의 보조 정보 부호화 장치 |
KR100281462B1 (ko) * | 1998-03-30 | 2001-02-01 | 전주범 | 격행 부호화에서 이진 형상 신호의 움직임 벡터 부호화 방법 |
US6408029B1 (en) * | 1998-04-02 | 2002-06-18 | Intel Corporation | Method and apparatus for simplifying real-time data encoding |
US6519287B1 (en) * | 1998-07-13 | 2003-02-11 | Motorola, Inc. | Method and apparatus for encoding and decoding video signals by using storage and retrieval of motion vectors |
JP4026238B2 (ja) * | 1998-07-23 | 2007-12-26 | ソニー株式会社 | 画像復号装置及び画像復号方法 |
US6219070B1 (en) * | 1998-09-30 | 2001-04-17 | Webtv Networks, Inc. | System and method for adjusting pixel parameters by subpixel positioning |
US6563953B2 (en) * | 1998-11-30 | 2003-05-13 | Microsoft Corporation | Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock |
US6983018B1 (en) * | 1998-11-30 | 2006-01-03 | Microsoft Corporation | Efficient motion vector coding for video compression |
US6259741B1 (en) * | 1999-02-18 | 2001-07-10 | General Instrument Corporation | Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams |
JP2000278692A (ja) * | 1999-03-25 | 2000-10-06 | Victor Co Of Japan Ltd | 圧縮データ処理方法及び処理装置並びに記録再生システム |
KR100355831B1 (ko) * | 2000-12-06 | 2002-10-19 | 엘지전자 주식회사 | 2차원 최소 비트 예측 기반의 움직임 벡터 부호화 방법 |
ATE297099T1 (de) * | 2001-02-13 | 2005-06-15 | Koninkl Philips Electronics Nv | Verfahren zur codierung und decodierung von bewegungsschätzungen |
CN102025991B (zh) * | 2001-09-14 | 2017-12-29 | 株式会社Ntt都科摩 | 编码方法、译码方法、编码装置、译码装置和图像处理系统 |
US20030095603A1 (en) * | 2001-11-16 | 2003-05-22 | Koninklijke Philips Electronics N.V. | Reduced-complexity video decoding using larger pixel-grid motion compensation |
US6980596B2 (en) * | 2001-11-27 | 2005-12-27 | General Instrument Corporation | Macroblock level adaptive frame/field coding for digital video content |
PT2271115E (pt) * | 2001-11-21 | 2015-10-15 | Google Technology Holdings LLC | Codificação adaptativa de quadro/campo ao nível dos macroblocos para o conteúdo de vídeo digital |
US20030099294A1 (en) * | 2001-11-27 | 2003-05-29 | Limin Wang | Picture level adaptive frame/field coding for digital video content |
EP1827027A1 (en) * | 2002-01-18 | 2007-08-29 | Kabushiki Kaisha Toshiba | Video encoding method and apparatus and video decoding method and apparatus |
US7463684B2 (en) | 2002-05-03 | 2008-12-09 | Microsoft Corporation | Fading estimation/compensation |
US7020200B2 (en) * | 2002-08-13 | 2006-03-28 | Lsi Logic Corporation | System and method for direct motion vector prediction in bi-predictive video frames and fields |
US7426308B2 (en) * | 2003-07-18 | 2008-09-16 | Microsoft Corporation | Intraframe and interframe interlace coding and decoding |
US20050013498A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | Coding of motion vector information |
US7317839B2 (en) * | 2003-09-07 | 2008-01-08 | Microsoft Corporation | Chroma motion vector derivation for interlaced forward-predicted fields |
US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
US7961786B2 (en) * | 2003-09-07 | 2011-06-14 | Microsoft Corporation | Signaling field type information |
US7620106B2 (en) * | 2003-09-07 | 2009-11-17 | Microsoft Corporation | Joint coding and decoding of a reference field selection and differential motion vector information |
US7567617B2 (en) * | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
US7577200B2 (en) * | 2003-09-07 | 2009-08-18 | Microsoft Corporation | Extended range variable length coding/decoding of differential motion vector information |
FR2872973A1 (fr) * | 2004-07-06 | 2006-01-13 | Thomson Licensing Sa | Procede ou dispositif de codage d'une sequence d'images sources |
-
2004
- 2004-09-02 US US10/933,958 patent/US7599438B2/en active Active
- 2004-09-03 CN CN2010101107417A patent/CN101873486B/zh not_active Expired - Lifetime
- 2004-09-03 JP JP2006525510A patent/JP5030591B2/ja not_active Expired - Lifetime
- 2004-09-03 EP EP10015977.1A patent/EP2323398B1/en not_active Expired - Lifetime
- 2004-09-03 KR KR1020067002225A patent/KR101037816B1/ko active IP Right Grant
- 2004-09-03 EP EP10015978.9A patent/EP2323399B1/en not_active Expired - Lifetime
- 2004-09-03 CN CN2010101107741A patent/CN101902636B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN2010101101548A patent/CN101902635B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN2010101101815A patent/CN101778286B/zh not_active Expired - Lifetime
- 2004-09-03 MX MXPA06002525A patent/MXPA06002525A/es active IP Right Grant
- 2004-09-03 WO PCT/US2004/029034 patent/WO2005027496A2/en active Application Filing
- 2004-09-03 PL PL10015978T patent/PL2323399T3/pl unknown
- 2004-09-03 CN CN2010101101497A patent/CN101848386B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN2004800255753A patent/CN101411195B/zh not_active Expired - Lifetime
- 2004-09-03 EP EP10015979.7A patent/EP2323406B1/en not_active Expired - Lifetime
- 2004-09-03 CN CN2010101131721A patent/CN101931802B/zh not_active Expired - Lifetime
- 2004-09-03 EP EP12151222.2A patent/EP2451161B1/en not_active Expired - Lifetime
- 2004-09-03 EP EP04783324.9A patent/EP1656794B1/en not_active Expired - Lifetime
-
2010
- 2010-12-09 HK HK10111492.8A patent/HK1144989A1/xx not_active IP Right Cessation
-
2011
- 2011-01-19 JP JP2011009038A patent/JP4913245B2/ja not_active Expired - Lifetime
- 2011-01-19 JP JP2011009042A patent/JP5026602B2/ja not_active Expired - Lifetime
- 2011-01-19 JP JP2011009039A patent/JP5036884B2/ja not_active Expired - Lifetime
- 2011-01-19 JP JP2011009040A patent/JP5043206B2/ja not_active Expired - Lifetime
- 2011-01-19 JP JP2011009037A patent/JP5036883B2/ja not_active Expired - Lifetime
- 2011-01-19 JP JP2011009041A patent/JP4916579B2/ja not_active Expired - Lifetime
- 2011-02-10 HK HK11101301.9A patent/HK1147373A1/xx not_active IP Right Cessation
- 2011-04-04 HK HK11103392.5A patent/HK1149405A1/xx not_active IP Right Cessation
- 2011-04-06 HK HK11103492.4A patent/HK1149658A1/xx not_active IP Right Cessation
- 2011-04-06 HK HK11103491.5A patent/HK1149657A1/xx not_active IP Right Cessation
- 2011-05-05 HK HK11104481.5A patent/HK1150484A1/xx not_active IP Right Cessation
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA06002525A (es) | Codificacion y descodificacion para video entrelazado. | |
US7623574B2 (en) | Selecting between dominant and non-dominant motion vector predictor polarities | |
US7317839B2 (en) | Chroma motion vector derivation for interlaced forward-predicted fields | |
US7577198B2 (en) | Number of reference fields for an interlaced forward-predicted field | |
US7620106B2 (en) | Joint coding and decoding of a reference field selection and differential motion vector information | |
US7616692B2 (en) | Hybrid motion vector prediction for interlaced forward-predicted fields | |
US8009739B2 (en) | Intensity estimation/compensation for interlaced forward-predicted fields | |
US7606308B2 (en) | Signaling macroblock mode information for macroblocks of interlaced forward-predicted fields | |
KR101038794B1 (ko) | 인터레이스형 비디오의 코딩 및 디코딩 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |