ES2992660T3 - Method and apparatus for chroma intra prediction in video coding - Google Patents
Method and apparatus for chroma intra prediction in video coding Download PDFInfo
- Publication number
- ES2992660T3 ES2992660T3 ES20776473T ES20776473T ES2992660T3 ES 2992660 T3 ES2992660 T3 ES 2992660T3 ES 20776473 T ES20776473 T ES 20776473T ES 20776473 T ES20776473 T ES 20776473T ES 2992660 T3 ES2992660 T3 ES 2992660T3
- Authority
- ES
- Spain
- Prior art keywords
- chroma
- intra prediction
- video
- predmodeintra
- prediction mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/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/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/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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Color Television Systems (AREA)
Abstract
Se proporcionan dispositivos y métodos de predicción intra direccional para el componente cromático de una imagen. El método incluye obtener un modo de predicción intra inicial del componente cromático y derivar un modo de predicción intra cromático (intraPredModeC) a partir de una tabla de búsqueda (LUT) utilizando el modo de predicción intra inicial del componente cromático. El componente cromático tiene diferentes relaciones de submuestreo en direcciones horizontales y verticales. El método incluye además realizar un mapeo de gran angular en el modo de predicción intra cromático (intraPredModeC) para obtener un intraPredModeC modificado; obtener un parámetro intraPredAngle para el componente cromático basándose en el intraPredModeC modificado; y obtener muestras predichas del componente cromático basándose en el parámetro intraPredAngle. El método proporciona el número mínimo de entradas en la LUT que se utiliza para determinar el modo de predicción intra cromático a partir del modo de predicción intra cromático inicial. (Traducción automática con Google Translate, sin valor legal)Devices and methods for intra-directional prediction for the chromatic component of an image are provided. The method includes obtaining an initial intra prediction mode of the chromatic component and deriving an intra chromatic prediction mode (intraPredModeC) from a look-up table (LUT) using the initial intra prediction mode of the chromatic component. The chromatic component has different subsampling ratios in horizontal and vertical directions. The method further includes performing wide-angle mapping in the intra chromatic prediction mode (intraPredModeC) to obtain a modified intraPredModeC; obtaining an intraPredAngle parameter for the chromatic component based on the modified intraPredModeC; and obtaining predicted samples of the chromatic component based on the intraPredAngle parameter. The method provides the minimum number of entries in the LUT that is used to determine the intra chromatic prediction mode from the initial intra chromatic prediction mode. (Automatic translation with Google Translate, no legal value)
Description
DESCRIPCIÓNDESCRIPTION
Método y aparato para intrapredicción de croma en la codificación de vídeo Method and apparatus for chroma intraprediction in video coding
Campo técnico Technical field
Las realizaciones de la presente solicitud (descripción) se refieren generalmente al campo del procesamiento de imágenes y más particularmente a métodos de intrapredicción de croma en la codificación de vídeo. Embodiments of the present application (description) relate generally to the field of image processing and more particularly to chroma intra prediction methods in video coding.
Antecedentes Background
La codificación de vídeo (codificación y decodificación de vídeo) se utiliza en una amplia gama de aplicaciones de vídeo digital, por ejemplo, difusión de TV digital, transmisión de vídeo a través de Internet y redes móviles, aplicaciones de conversación en tiempo real tales como vídeo chat, videoconferencia, discos de DVD y Blu-ray, sistemas de edición y adquisición de contenido de vídeo y videocámaras de aplicaciones de seguridad. Video coding (video encoding and decoding) is used in a wide range of digital video applications, for example, digital TV broadcasting, video streaming over the Internet and mobile networks, real-time conversation applications such as video chat, video conferencing, DVD and Blu-ray discs, video content acquisition and editing systems, and video cameras for security applications.
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede resultar en dificultades cuando los datos han de transmitirse o comunicarse a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones de hoy en día. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo utilizan software y/o hardware en el origen para codificar los datos de vídeo antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar imágenes de vídeo digitales. Los datos comprimidos, a continuación, son recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de la imagen. The amount of video data required to represent even a relatively short video can be substantial, which can result in difficulties when the data has to be transmitted or communicated over a communications network with limited bandwidth capacity. Therefore, video data is usually compressed before being communicated over today's telecommunications networks. The size of a video could also be an issue when the video is stored on a storage device because memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode the video data before transmission or storage, thereby decreasing the amount of data required to represent digital video images. The compressed data is then received at the destination by a video decompression device that decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques that improve the compression ratio with little or no sacrifice in image quality are desirable.
BRO SS B Y CO L.:”Versatile Video Coding (Draft 4)”, 13. Reunión JV E T : 20190109 - 20190118; MARRAKECH; (E L EQUIPO CONJUNTO DE EXPLORACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16), n° JVET-M1001 17 de Marzo de 2019 (2019-03-17), XP030255166, da a conocer el texto de borrador de la especificación de codificación de vídeo. BRO SS B Y CO L.:”Versatile Video Coding (Draft 4)”, 13th JV E T Meeting: 20190109 - 20190118; MARRAKECH; (THE JOINT VIDEO SCANNING TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16), n° JVET-M1001 17 March 2019 (2019-03-17), XP030255166, releases the draft text of the video coding specification.
Compendio Compendium
Las realizaciones de la presente solicitud proporcionan aparatos y métodos para codificar y decodificar según las reivindicaciones independientes. Embodiments of the present application provide apparatus and methods for encoding and decoding according to the independent claims.
Los objetos anteriores y otros se consiguen mediante el objeto de las reivindicaciones independientes. Otras formas de implementación son evidentes a partir de las reivindicaciones dependientes, la descripción y las figuras. La invención se expone en el conjunto de reivindicaciones adjuntas. The above and other objects are achieved by the subject matter of the independent claims. Other embodiments are apparent from the dependent claims, the description and the figures. The invention is set forth in the appended claims.
Las realizaciones de la presente invención proporcionan el número mínimo de entradas en la LUT que se utiliza para determinar el modo de intrapredicción de croma a partir del modo de intrapredicción de croma inicial. El modo de intrapredicción de croma inicial puede ser igual al modo de intrapredicción de luma inicial. Esto se logra mediante el orden de las etapas realizadas, es decir, mediante la asignación del modo de intrapredicción de crominancia al modo de luminancia que se realiza antes de la asignación de gran angular. Embodiments of the present invention provide the minimum number of entries in the LUT that is used to determine the chroma intra prediction mode from the initial chroma intra prediction mode. The initial chroma intra prediction mode may be equal to the initial luma intra prediction mode. This is achieved by the order of the steps performed, i.e. by the assignment of the chrominance intra prediction mode to the luma mode which is performed before the wide angle assignment.
Los detalles de una o más realizaciones se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones. Details of one or more embodiments are set forth in the accompanying drawings and description below. Other features, objects and advantages will become apparent from the description, drawings and claims.
Breve descripción de los dibujos Brief description of the drawings
En las siguientes realizaciones de la invención se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que: In the following embodiments of the invention they are described in more detail with reference to the accompanying figures and drawings, in which:
La fig. 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar las realizaciones de la invención; Fig. 1A is a block diagram showing an example of a video coding system configured to implement embodiments of the invention;
La fig. 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de vídeo configurado para implementar las realizaciones de la invención; Fig. 1B is a block diagram showing another example of a video coding system configured to implement embodiments of the invention;
La fig. 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar las realizaciones de la invención; Fig. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention;
La fig. 3 es un diagrama de bloques que muestra una estructura ejemplar de un decodificador de vídeo configurado para implementar las realizaciones de la invención; Fig. 3 is a block diagram showing an exemplary structure of a video decoder configured to implement embodiments of the invention;
La fig. 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación; Fig. 4 is a block diagram illustrating an example of an encoding apparatus or a decoding apparatus;
La fig. 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación; Fig. 5 is a block diagram illustrating another example of an encoding apparatus or a decoding apparatus;
La fig. 6 es un dibujo que muestra direcciones angulares de intrapredicción y los modos de intrapredicción asociados en el borrador v.4 de especificación VTM-4 y VVC; Fig. 6 is a drawing showing intraprediction angular directions and associated intraprediction modes in the VTM-4 and VVC draft specification v.4;
La fig. 7 es un dibujo que muestra planos de color de luma y croma para los formatos de croma YUV 4:2:0 y YUV 4:2:2; Fig. 7 is a drawing showing luma and chroma color planes for YUV 4:2:0 and YUV 4:2:2 chroma formats;
La fig. 8 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción de gran angular e IntraPredModeC es un modo de intrapredicción de ángulo sin gran angular; Fig. 8 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode;
La fig. 9 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo de intrapredicción de ángulo sin gran angular; Fig. 9 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode;
La fig. 10 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo intrapredicción de ángulo de gran angular; Fig. 10 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a wide-angle intraprediction mode;
La fig. 11 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY utilizando un recorte del modo de predicción y donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo de intrapredicción de ángulo sin gran angular; Fig. 11 shows an example of the case where IntraPredModeC is derived from IntraPredModeY using a prediction mode crop and where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode;
La fig. 12A ilustra las realizaciones de un bloque 1200 de intrapredicción de un componente de croma implementado según la presente invención; Fig. 12A illustrates embodiments of a chroma component intra prediction block 1200 implemented in accordance with the present invention;
La fig. 12B ilustra las realizaciones de un bloque 1210 de intrapredicción de un componente de croma implementado según la presente invención; Fig. 12B illustrates embodiments of a chroma component intra prediction block 1210 implemented in accordance with the present invention;
La fig. 13 ilustra las realizaciones de un método 1300 de intrapredicción de un componente de croma implementado según la presente invención; Fig. 13 illustrates embodiments of a chroma component intra-prediction method 1300 implemented in accordance with the present invention;
La fig. 14 ilustra las realizaciones de un dispositivo 1400 de intrapredicción de un componente de croma implementado según la presente invención; Fig. 14 illustrates embodiments of a chroma component intra prediction device 1400 implemented in accordance with the present invention;
La fig. 15 es un diagrama de bloques que muestra una estructura ejemplar de un sistema 3100 de suministro de contenido que realiza un servicio de entrega de contenido; y Fig. 15 is a block diagram showing an exemplary structure of a content delivery system 3100 that performs a content delivery service; and
La fig. 16 es un diagrama de bloques que muestra una estructura de un ejemplo de un dispositivo terminal. A continuación, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes si no se especifica explícitamente lo contrario. Fig. 16 is a block diagram showing a structure of an example of a terminal device. In the following, identical reference signs refer to identical or at least functionally equivalent features unless otherwise explicitly specified.
Descripción detallada de las realizaciones Detailed description of the achievements
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la descripción y que muestran, a modo de ilustración, aspectos específicos de las realizaciones de la invención o aspectos específicos en los que se pueden utilizar las realizaciones de la presente invención. Se comprende que las realizaciones de la invención pueden utilizarse en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. La siguiente descripción detallada, por lo tanto, no debe tomarse en un sentido limitativo, y el alcance de la presente invención está definido por las reivindicaciones adjuntas. In the following description, reference is made to the accompanying figures, which form part of the description and which show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present invention may be used. It is understood that embodiments of the invention may be used in other aspects and include structural or logical changes not shown in the figures. The following detailed description, therefore, should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
Por ejemplo, se comprende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o una pluralidad de etapas específicas del método, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o la pluralidad de etapas del método descritas (por ejemplo, una unidad que realiza la una o la pluralidad de etapas, o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si tales una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe basándose en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de la una o una pluralidad de unidades (por ejemplo, una etapa que realiza la funcionalidad de la una o una pluralidad de unidades, o una pluralidad de etapas, cada una de los cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si tal una o la pluralidad de etapas no se describen o ilustran explícitamente en las figuras. Además, se comprende que las características de las diversas realizaciones ejemplares y/o aspectos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario. For example, it is understood that a description relating to a disclosed method may also apply to a corresponding device or system configured to perform the method and vice versa. For example, if one or a plurality of specific method steps are described, a corresponding device may include one or a plurality of units, e.g., functional units, for performing the one or plurality of described method steps (e.g., one unit performing the one or plurality of steps, or a plurality of units each performing one or more of the plurality of steps), even if such one or more units are not explicitly described or illustrated in the figures. On the other hand, for example, if a specific apparatus is described based on one or a plurality of units, e.g., functional units, a corresponding method may include a step for realizing the functionality of the one or a plurality of units (e.g., a step realizing the functionality of the one or a plurality of units, or a plurality of steps each of which realizing the functionality of one or more of the plurality of units), even if such one or the plurality of steps are not explicitly described or illustrated in the figures. Furthermore, it is understood that features of the various exemplary embodiments and/or aspects described herein may be combined with each other, unless specifically indicated otherwise.
La codificación de vídeo generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término “imagen”, el término “fotograma” o “imagen” se pueden utilizar como sinónimos en el campo de la codificación de vídeo. La codificación de vídeo (o codificación en general) comprende dos partes de codificación y decodificación de vídeo. La codificación de vídeo se realiza en el lado de origen, y típicamente comprende el procesamiento (por ejemplo, mediante compresión) de las imágenes de vídeo originales para reducir la cantidad de datos requeridos para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficiente). La decodificación de vídeo se realiza en el lado de destino y típicamente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Las realizaciones que se refieren a la “codificación” de imágenes de vídeo (o imágenes en general) se comprenderán relacionadas con la “codificación” o la “decodificación” de imágenes de vídeo o secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de decodificación también se conoce como CODEC (Codificación y Decodificación). Video coding generally refers to the processing of a sequence of images, which form the video or video sequence. Instead of the term “image”, the term “frame” or “picture” can be used as synonyms in the field of video coding. Video coding (or coding in general) comprises two parts of video encoding and decoding. Video encoding is performed at the source side, and typically comprises processing (e.g. by compression) of the original video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed at the destination side and typically comprises reverse processing compared to the encoder to reconstruct the video images. Embodiments referring to “encoding” of video images (or images in general) will be understood as relating to “encoding” or “decoding” of respective video images or video sequences. The combination of encoding part and decoding part is also known as CODEC (Encoding and Decoding).
En caso de codificación de vídeo sin pérdida, las imágenes de vídeo originales se pueden reconstruir, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de vídeo con pérdida, compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no se pueden reconstruir completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación con la calidad de las imágenes de vídeo originales. In case of lossless video coding, the original video images can be reconstructed, i.e. the reconstructed video images have the same quality as the original video images (assuming no transmission loss or other data loss during storage or transmission). In case of lossy video coding, additional compression, e.g. by quantization, is used to reduce the amount of data representing the video images, which cannot be completely reconstructed in the decoder, i.e. the quality of the reconstructed video images is lower or worse compared to the quality of the original video images.
Varios estándares de codificación de vídeo pertenecen al grupo de “códecs de vídeo híbridos con pérdidas” (es decir, combinan la predicción espacial y temporal en el dominio de muestra y la codificación de transformada 2D para aplicar la cuantificación en el dominio de transformada). Cada imagen de una secuencia de vídeo se divide normalmente en un conjunto de bloques que no se superponen y la codificación se realiza normalmente a nivel de bloque. En otras palabras, en el codificador, el vídeo se procesa típicamente, es decir, se codifica, en un nivel de bloque (bloque de vídeo), por ejemplo, mediante el uso de la predicción espacial (intraimagen) y/o la predicción temporal (interimágenes) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/por procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de transformada para reducir la cantidad de datos que se ha de transmitir (compresión), mientras que en el decodificador el procesamiento inverso comparado con el codificador se aplica al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador de tal manera que ambos generarán predicciones idénticas (por ejemplo, intra- e interpredicciones) y/o reconstrucciones para procesar, es decir, codificar los bloques posteriores. Several video coding standards belong to the group of “hybrid lossy video codecs” (i.e. they combine spatial and temporal prediction in the sample domain and 2D transform coding to apply quantization in the transform domain). Each frame in a video sequence is typically divided into a set of non-overlapping blocks and coding is typically performed at the block level. In other words, in the encoder, video is typically processed, i.e. encoded, at a block level (video block), for example by using spatial (intra-frame) prediction and/or temporal (inter-frame) prediction to generate a prediction block, subtracting the prediction block from the current block (currently processed/to-be-processed block) to obtain a residual block, transforming the residual block and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression), while in the decoder the inverse processing compared to the encoder is applied to the encoded or compressed block to reconstruct the current block for representation. Furthermore, the encoder duplicates the decoder's processing loop such that both will generate identical predictions (e.g., intra- and inter-predictions) and/or reconstructions to process, i.e., encode, subsequent blocks.
En las siguientes realizaciones de un sistema 10 de codificación de vídeo, se describen un codificador 20 de vídeo y un decodificador 30 de vídeo basándose en las figs. 1 a 3. In the following embodiments of a video coding system 10, a video encoder 20 and a video decoder 30 are described based on Figs. 1 to 3.
La fig. 1A es un diagrama de bloques esquemático que ilustra un de sistema 10 de codificación ejemplar, por ejemplo, un sistema 10 de codificación de vídeo (o sistema 10 de codificación corta) que puede utilizar técnicas de esta presente solicitud. El codificador 20 de vídeo (o codificador 20 corto) y el decodificador 30 de vídeo (o decodificador 30 corto) del sistema 10 de codificación de vídeo representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según varios ejemplos descritos en la presente solicitud. Fig. 1A is a schematic block diagram illustrating an exemplary encoding system 10, e.g., a video encoding system 10 (or short encoding system 10) that may utilize techniques of this present application. The video encoder 20 (or short encoder 20) and the video decoder 30 (or short decoder 30) of the video coding system 10 represent examples of devices that may be configured to perform techniques according to various examples described in this application.
Como se muestra en la fig. 1A, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para proporcionar datos 21 de imagen codificada, por ejemplo, a un dispositivo 14 de destino para decodificar los datos 13 de imagen codificada. As shown in Fig. 1A, the encoding system 10 comprises a source device 12 configured to provide encoded image data 21, for example, to a destination device 14 for decoding the encoded image data 13.
El dispositivo 12 de origen comprende un codificador 20 y, además, es decir, opcionalmente, puede comprender una fuente 16 de imagen, un preprocesador 18 (o unidad de preprocesamiento), por ejemplo, un preprocesador 18 de imagen y una interfaz de comunicación o unidad 22 de comunicación. The source device 12 comprises an encoder 20 and may further, i.e. optionally, comprise an image source 16, a preprocessor 18 (or preprocessing unit), for example an image preprocessor 18 and a communication interface or communication unit 22.
La fuente 16 de imagen puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes, por ejemplo, un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier otro dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)) y/o cualquier combinación de las mismas (por ejemplo, una imagen de realidad aumentada (AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente. The image source 16 may comprise or be any type of image capture device, for example, a camera for capturing a real-world image, and/or any type of image generation device, for example, a computer graphics processor for generating a computer animated image, or any other device for obtaining and/or providing a real-world image, a computer generated image (e.g., a screen content, a virtual reality (VR) image), and/or any combination thereof (e.g., an augmented reality (AR) image). The image source may be any type of memory or storage that stores any of the aforementioned images.
A diferencia del preprocesador 18 y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen o datos 17 de imagen también pueden denominarse imagen sin procesar o datos 17 de imagen sin procesar. Unlike the preprocessor 18 and the processing performed by the preprocessing unit 18, the image or image data 17 may also be referred to as a raw image or raw image data 17.
El preprocesador 18 está configurado para recibir los datos 17 de imagen (sin procesar) y para realizar el preprocesamiento de los datos 17 de imagen para obtener una imagen 19 preprocesada o datos 19 de imagen preprocesados. El preprocesamiento realizado por el procesador 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede comprenderse que la unidad 18 de preprocesamiento puede ser un componente opcional. The preprocessor 18 is configured to receive the (raw) image data 17 and to perform preprocessing of the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. The preprocessing performed by the processor 18 may comprise, for example, cropping, color format conversion (e.g., from RGB to YCbCr), color correction, or noise removal. It can be understood that the preprocessing unit 18 may be an optional component.
El codificador 20 de vídeo está configurado para recibir los datos 19 de imagen preprocesados y proporcionar datos 21 de imagen codificada (se describirán más detalles a continuación, por ejemplo, basándose en la fig. 2). La interfaz 22 de comunicación del dispositivo 12 de origen puede configurarse para recibir los datos 21 de imagen codificada y transmitir los datos 21 de imagen codificada (o cualquier versión procesada adicional de los mismos) a través del canal 13 de comunicación a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa. The video encoder 20 is configured to receive the preprocessed image data 19 and provide encoded image data 21 (further details will be described below, e.g. based on FIG. 2). The communication interface 22 of the source device 12 may be configured to receive the encoded image data 21 and transmit the encoded image data 21 (or any further processed version thereof) via the communication channel 13 to another device, e.g., the destination device 14 or any other device, for storage or direct reconstruction.
El dispositivo 14 de destino comprende un decodificador 30 (por ejemplo, un decodificador 30 de vídeo), y puede comprender adicionalmente, es decir, opcionalmente, una interfaz 28 de comunicación o unidad de comunicación, un postprocesador 32 (o unidad 32 de postprocesamiento) y un dispositivo 34 de visualización. The destination device 14 comprises a decoder 30 (for example, a video decoder 30), and may additionally comprise, i.e. optionally, a communication interface 28 or communication unit, a post-processor 32 (or post-processing unit 32) and a display device 34.
La interfaz 28 de comunicación del dispositivo 14 de destino está configurada para recibir los datos 21 de imagen codificada (o cualquier versión procesada adicional de los mismos), por ejemplo, directamente desde el dispositivo 12 de origen o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificada, y proporcionar los datos 21 de imagen codificada al decodificador 30. The communication interface 28 of the destination device 14 is configured to receive the encoded image data 21 (or any further processed version thereof), for example, directly from the source device 12 or from any other source, for example, a storage device, for example, an encoded image data storage device, and provide the encoded image data 21 to the decoder 30.
La interfaz 22 de comunicación y la interfaz 28 de comunicación pueden configurarse para transmitir o recibir los datos 21 de imagen codificada o los datos 13 codificados a través de un enlace de comunicación directa entre el dispositivo 12 de origen y el dispositivo 14 de destino, por ejemplo, una conexión directa por cable o inalámbrica, o mediante cualquier tipo de red, por ejemplo, una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red pública y privada, o cualquier tipo de combinación de las mismas. The communication interface 22 and the communication interface 28 may be configured to transmit or receive the encoded image data 21 or the encoded data 13 over a direct communication link between the source device 12 and the destination device 14, for example, a direct wired or wireless connection, or over any type of network, for example, a wired or wireless network or any combination thereof, or any type of public and private network, or any type of combination thereof.
La interfaz 22 de comunicación puede configurarse, por ejemplo, para empaquetar los datos 21 de imagen codificada en un formato apropiado, por ejemplo, paquetes y/o procesar los datos de imagen codificada utilizando cualquier tipo de codificación de transmisión o procesamiento para su transmisión a través de un enlace de comunicación o red de comunicación. The communication interface 22 may be configured, for example, to package the encoded image data 21 into an appropriate format, for example, packets, and/or process the encoded image data using any type of transmission encoding or processing for transmission over a communication link or communication network.
La interfaz 28 de comunicación, que forma la contraparte de la interfaz 22 de comunicación, puede configurarse, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación de transmisión correspondiente o procesamiento y/o desempaquetado para obtener los datos 21 de imagen codificada. The communication interface 28, which forms the counterpart of the communication interface 22, may be configured, for example, to receive the transmitted data and process the transmission data using any corresponding type of transmission decoding or processing and/or unpacking to obtain the encoded image data 21.
Tanto la interfaz 22 de comunicación como la interfaz 28 de comunicación pueden configurarse como interfaces de comunicación unidireccionales como lo indica la flecha para el canal 13 de comunicación en la fig. 1A que apunta desde el dispositivo 12 de origen al dispositivo 14 de destino, o interfaces de comunicación bidireccionales, y se puede configurar, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o la transmisión de datos, por ejemplo, transmisión de datos de imagen codificada. Both the communication interface 22 and the communication interface 28 may be configured as one-way communication interfaces as indicated by the arrow for the communication channel 13 in Fig. 1A pointing from the source device 12 to the destination device 14, or two-way communication interfaces, and may be configured, for example, to send and receive messages, for example, to establish a connection, to acknowledge and exchange any other information related to the communication link and/or the transmission of data, for example, transmission of encoded image data.
El decodificador 30 está configurado para recibir los datos 21 de imagen codificada y proporcionar datos 31 de imagen decodificada o una imagen 31 decodificada (se describirán más detalles a continuación, por ejemplo, basándose en la fig. 3 o en la fig. 5). The decoder 30 is configured to receive the encoded image data 21 and provide decoded image data 31 or a decoded image 31 (more details will be described below, for example, based on Fig. 3 or Fig. 5).
El postprocesador 32 del dispositivo 14 de destino está configurado para procesar posteriormente los datos 31 de imagen decodificada (también llamados datos de imagen reconstruida), por ejemplo, la imagen 31 decodificada, para obtener datos 33 de imagen postprocesada, por ejemplo, una imagen 33 postprocesada. El postprocesamiento realizado por la unidad 32 de postprocesamiento puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o repetición de muestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos 31 de imagen decodificada para su visualización, por ejemplo, por el dispositivo 34 de visualización. The post processor 32 of the destination device 14 is configured to further process the decoded image data 31 (also called reconstructed image data), e.g., the decoded image 31, to obtain post-processed image data 33, e.g., a post-processed image 33. The post-processing performed by the post-processing unit 32 may comprise, for example, color format conversion (e.g., from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded image data 31 for display, e.g., by the display device 34.
El dispositivo 34 de visualización del dispositivo 14 de destino está configurado para recibir los datos 33 de imagen postprocesada para visualizar la imagen, por ejemplo, a un usuario o espectador. El dispositivo 34 de visualización puede ser o comprender cualquier tipo de visualización para representar la imagen reconstruida, por ejemplo, un dispositivo de visualización o monitor integrado o externo. Los dispositivos de visualización pueden, por ejemplo, comprender pantallas de cristal líquido (LCD), pantallas de diodos orgánicos de emisión de luz (OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier otro tipo de pantalla. The display device 34 of the target device 14 is configured to receive the post-processed image data 33 to display the image, for example, to a user or viewer. The display device 34 may be or comprise any type of display for representing the reconstructed image, for example, an integrated or external display device or monitor. The display devices may, for example, comprise liquid crystal displays (LCDs), organic light emitting diode displays (OLEDs), plasma displays, projectors, micro LED displays, liquid crystal on silicon (LCoS), digital light processor (DLP), or any other type of display.
Aunque la fig. 1A representa el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambas o ambas funcionalidades, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente. En tales realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse utilizando el mismo hardware y/o software o mediante hardware y/o software separados o cualquier combinación de los mismos. Although FIG. 1A depicts the source device 12 and the destination device 14 as separate devices, embodiments of the devices may also comprise both or both of the source device 12 or corresponding functionality and the destination device 14 or corresponding functionality. In such embodiments, the source device 12 or corresponding functionality and the destination device 14 or corresponding functionality may be implemented using the same hardware and/or software or by separate hardware and/or software or any combination thereof.
Como resultará evidente para el experto basándose en la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo 12 de origen y/o del dispositivo 14 de destino como se muestra en la fig. 1A puede variar dependiendo del dispositivo y aplicación reales. As will be apparent to the skilled person based on the description, the (exact) existence and division of functionalities of the different units or functionalities within the source device 12 and/or the destination device 14 as shown in Fig. 1A may vary depending on the actual device and application.
El codificador20(por ejemplo, un codificador 20 de vídeo) o el decodificador30(por ejemplo, un decodificador 30 de vídeo) o tanto el codificador 20 como el decodificador 30 pueden implementarse mediante circuitos de procesamiento como se muestra en la fig. 1B, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), conjuntos de puertas programables en campo (FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 puede implementarse a través de los circuitos 46 de procesamiento para incorporar los diversos módulos como se da a conocer con respecto al codificador 20 de la fig. 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente memoria. El decodificador 30 puede implementarse a través de los circuitos 46 de procesamiento para incorporar los diversos módulos como se da a conocer con respecto al decodificador 30 de la fig. 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente memoria. Los circuitos de procesamiento pueden configurarse para realizar las diversas operaciones como se da a conocer más adelante. Como se muestra en la fig. 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio, legible por ordenador y puede ejecutar las instrucciones en hardware utilizando uno o más procesadores para realizar las técnicas de esta descripción. Tanto el codificador 20 de vídeo como el decodificador 30 de vídeo pueden integrarse como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, como se muestra en la fig. 1B. The encoder 20 (e.g., a video encoder 20) or the decoder 30 (e.g., a video decoder 30) or both the encoder 20 and the decoder 30 may be implemented by processing circuitry as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding, or any combination thereof. The encoder 20 may be implemented via processing circuitry 46 to incorporate the various modules as disclosed with respect to the encoder 20 of FIG. 2 and/or any other encoding system or subsystem described herein. The decoder 30 may be implemented via processing circuitry 46 to incorporate the various modules as disclosed with respect to the decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuitry may be configured to perform the various operations as disclosed below. As shown in FIG. 5, if the techniques are partially implemented in software, a device may store instructions for the software on a suitable, non-transitory, computer-readable storage medium and may execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Both the video encoder 20 and the video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in a single device, for example, as shown in FIG. 1B.
El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo cualquier tipo de dispositivo de mano o estacionario, por ejemplo, ordenadores portátiles o portátiles, teléfonos móviles, teléfonos inteligentes, tabletas, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (tales como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de difusión, dispositivo transmisor de difusión, o similares y no pueden utilizar ningún tipo de sistema operativo. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica. Por tanto, el dispositivo 12 de origen y el dispositivo 14 de destino pueden ser dispositivos de comunicación inalámbrica. The source device 12 and the destination device 14 may comprise any of a wide range of devices, including any type of handheld or stationary device, for example, laptop or notebook computers, mobile phones, smart phones, tablets, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast receiver device, broadcast transmitter device, or the like and may not utilize any type of operating system. In some instances, the source device 12 and the destination device 14 may be equipped for wireless communication. Thus, the source device 12 and the destination device 14 may be wireless communication devices.
En algunos casos, el sistema10de codificación de vídeo ilustrado en la fig. 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación se realiza mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria. In some instances, the video encoding system 10 illustrated in FIG. 1A is merely an example and the techniques of the present application may be applied to video encoding configurations (e.g., video encoding or video decoding) that do not necessarily include any data communication between the encoding and decoding devices. In other examples, data is retrieved from a local memory, transmitted over a network, or the like. A video encoding device may encode and store data in memory and/or a video decoding device may retrieve and decode data from memory. In some examples, the encoding and decoding is performed by devices that do not communicate with each other, but simply encode data in memory and/or retrieve and decode data from memory.
Por conveniencia de la descripción, en la presente memoria se describen realizaciones de la invención, por ejemplo, por referencia a la codificación de vídeo de alta eficiencia (HEVC) o al software de referencia de codificación de vídeo versátil (VVC), el estándar de codificación de vídeo de próxima generación desarrollado por el equipo de colaboración conjunta en codificación de vídeo (JCT-VC) del grupo de expertos en codificación de vídeo de ITU-T (VCEG ) y el grupo de expertos en imágenes en movimiento de ISO/IEC (MPEG). Un experto en la técnica comprenderá que las realizaciones de la invención no se limitan a HEVC o VVC. For convenience of description, embodiments of the invention are described herein, for example, by reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, the next generation video coding standard developed by the Joint Collaboration Team on Video Coding (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Moving Picture Experts Group (MPEG). One skilled in the art will understand that embodiments of the invention are not limited to HEVC or VVC.
Codificador y Método de Codificación Encoder and Coding Method
La fig. 2 muestra un diagrama de bloques esquemático de un codificador 20 de vídeo ejemplar que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la fig. 2, el codificador 20 de vídeo comprende una entrada 201 (o interfaz 201 de entrada), una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformada, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa y una unidad 212 de procesamiento de transformada inversa, una unidad 214 de reconstrucción, una unidad 220 de filtro en bucle, una memoria intermedia 230 de imagen decodificada (DPB), una unidad 260 de selección de modo, una unidad 270 de codificación por entropía y una salida 272 (o interfaz 272 de salida). La unidad 260 de selección de modo puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción y una unidad 262 de división en particiones. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostradas). Un codificador 20 de vídeo como se muestra en la fig. 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido. [0031] FIG. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the techniques of the present application. In the example of FIG. 2 , the video encoder 20 comprises an input 201 (or input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210 and an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 220, a decoded picture buffer (DPB) 230, a mode selection unit 260, an entropy encoding unit 270, and an output 272 (or output interface 272). The mode selection unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a partitioning unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). A video encoder 20 as shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder according to a hybrid video codec.
La unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformada, la unidad 208 de cuantificación, la unidad 260 de selección de modo pueden referirse a la formación de una ruta de señal hacia delante del codificador 20, mientras que la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, la memoria intermedia 216, el filtro 220 en bucle, la memoria intermedia 230 de imagen decodificada (DPB), la unidad 244 de interpredicción y la unidad 254 de intrapredicción pueden denominarse formando una ruta de señal hacia atrás del codificador 20 de vídeo, en donde la ruta de señal hacia atrás del codificador 20 de vídeo corresponde a la ruta de señal del decodificador (véase decodificador 30 de vídeo en la fig. 3). La unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el filtro 220 en bucle, la memoria intermedia 230 de imagen decodificada (DPB), la unidad 244 de interpredicción y la unidad 254 de intrapredicción también se refieren a la formación del “decodificador incorporado” del codificador 20 de vídeo. The residual calculation unit 204, the transform processing unit 206, the quantization unit 208, the mode selection unit 260 may be referred to as forming a forward signal path of the encoder 20, while the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244 and the intra prediction unit 254 may be referred to as forming a backward signal path of the video encoder 20, wherein the backward signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in FIG. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244 and the intra prediction unit 254 also refer to the formation of the “embedded decoder” of the video encoder 20.
Imágenes y división en particiones de imagen (Imágenes y Bloques) Images and Image Partitioning (Images and Blocks)
El codificador 20 puede configurarse para recibir, por ejemplo, a través de la entrada 201, una imagen 17 (o datos 17 de imagen), por ejemplo, imagen de una secuencia de imágenes que forman un vídeo o secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen 19 preprocesada (o datos 19 de imagen preprocesada). En aras de la simplicidad, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen que se ha de codificar (en particular en la codificación de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, codificadas previamente y/o imágenes decodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual). The encoder 20 may be configured to receive, for example, via input 201, a picture 17 (or picture data 17), for example a picture from a sequence of pictures forming a video or video sequence. The received picture or picture data may also be a pre-processed picture 19 (or pre-processed picture data 19). For the sake of simplicity, the following description refers to picture 17. Picture 17 may also be referred to as current picture or picture to be encoded (in particular in video coding to distinguish the current picture from other, for example previously encoded pictures and/or decoded pictures of the same video sequence, i.e. the video sequence also comprising the current picture).
Una imagen (digital) es o puede considerarse como una agrupación o matriz bidimensional de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma abreviada de elemento de imagen) o un pel. El número de muestras en dirección (o eje) horizontal y vertical de la matriz o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, se emplean típicamente tres componentes de color, es decir, la imagen se puede representar o incluir tres matrices de muestra. En formato RBG o espacio de color, una imagen comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada píxel se representa típicamente en un formato de luminancia y crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se utiliza L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen en escala de grises), mientras que los dos componentes de crominancia (o crominancia corta) Cb y Cr representan los componentes de información cromática o de color. Por consiguiente, una imagen en formato YCbCr comprende una matriz de muestra de luminancia de valores de muestra de luminancia (Y) y dos matrices de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato r G b se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestra de luminancia. Por consiguiente, una imagen puede ser, por ejemplo, una matriz de muestras de luminancia en formato monocromático o una matriz de muestras de luminancia y dos matrices correspondientes de muestras de croma en formato de color 4:2:0, 4:2:2 y 4:4:4. A (digital) image is or can be thought of as a two-dimensional grouping or array of samples with intensity values. A sample in the array may also be called a pixel (short for picture element) or a pel. The number of samples in the horizontal and vertical direction (or axis) of the array or image defines the size and/or resolution of the image. For color representation, typically three color components are used, i.e. the image can be represented or include three sample arrays. In RGB format or color space, an image comprises a corresponding red, green and blue sample array. However, in video coding, each pixel is typically represented in a luminance and chrominance format or color space, for example YCbCr, which comprises one luminance component denoted by Y (sometimes L is also used instead) and two chrominance components denoted by Cb and Cr. The luminance (or short luma) component Y represents the brightness or gray level intensity (e.g. as in a grayscale image), while the two chrominance (or short chrominance) components Cb and Cr represent the chromatic or color information components. Accordingly, an image in YCbCr format comprises a luminance sample array of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). Images in rG b format can be converted or transformed to YCbCr format and vice versa, the process is also known as color transformation or conversion. If an image is monochrome, the image may comprise only one luminance sample matrix. Thus, an image may be, for example, one luminance sample matrix in monochrome format or one luminance sample matrix and two corresponding chroma sample matrices in 4:2:0, 4:2:2 and 4:4:4 color format.
Las realizaciones del codificador 20 de vídeo pueden comprender una unidad de división en particiones de imagen (no representada en la fig. 2) configurada para dividir en particiones la imagen 17 en una pluralidad de bloques 203 de imagen (normalmente no superpuestos). Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (CTB) o unidades de árbol de codificación (CTU) (H.265/HEVC y VVC). La unidad de división en particiones de imagen puede configurarse para utilizar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir en particiones cada imagen en los bloques correspondientes. Embodiments of the video encoder 20 may comprise a picture partitioning unit (not shown in FIG. 2 ) configured to partition the picture 17 into a plurality of (typically non-overlapping) picture blocks 203. These blocks may also be referred to as root blocks, macroblocks (H.264/AVC), or coding tree blocks (CTB) or coding tree units (CTU) (H.265/HEVC and VVC). The picture partitioning unit may be configured to use the same block size for all pictures in a video sequence and a corresponding grid defining the block size, or to change the block size between pictures or subsets or groups of pictures, and to partition each picture into corresponding blocks.
En las realizaciones adicionales, el codificador de vídeo puede configurarse para recibir directamente un bloque 203 de la imagen 17, por ejemplo, uno, varios o todos los bloques que forman la imagen 17. El bloque 203 de imagen también puede denominarse bloque de imagen actual o bloque de imagen que se ha de codificar. In further embodiments, the video encoder may be configured to directly receive a block 203 of the image 17, for example, one, several, or all of the blocks that make up the image 17. The image block 203 may also be referred to as the current image block or the image block to be encoded.
Como la imagen 17, el bloque 203 de imagen es nuevamente o puede ser considerado como una agrupación o matriz bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestra (por ejemplo, una matriz de luma en el caso de una imagen 17 monocromática, o una matriz de luma o croma en el caso de una imagen en color) o tres matrices de muestra (por ejemplo, una matriz de luma y dos de croma en el caso de una imagen 17 de color) o cualquier otro número y/o tipo de matrices según el formato de color aplicado. El número de muestras en la dirección (o eje) horizontal y vertical del bloque 203 define el tamaño del bloque 203. Por consiguiente, un bloque puede ser, por ejemplo, una matriz de muestras MxN (columna M por fila N), o una matriz MxN de coeficientes de transformada. Like image 17, image block 203 is again or can be considered as a two-dimensional array or matrix of samples with intensity values (sample values), although of lower dimension than image 17. In other words, block 203 may comprise, for example, one sample matrix (e.g., one luma matrix in the case of a monochrome image 17, or one luma or chroma matrix in the case of a color image) or three sample matrices (e.g., one luma and two chroma matrices in the case of a color image 17) or any other number and/or type of matrices according to the applied color format. The number of samples in the horizontal and vertical direction (or axis) of block 203 defines the size of block 203. Accordingly, a block may be, for example, an MxN sample matrix (M column by N row), or an MxN matrix of transform coefficients.
Las realizaciones del codificador 20 de vídeo como se muestra en la fig. 2 pueden configurarse para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y predicción se realiza por bloque 203. Embodiments of the video encoder 20 as shown in Fig. 2 may be configured to encode the image 17 block by block, for example, the encoding and prediction is performed per block 203.
Las realizaciones del codificador 20 de vídeo como se muestra en la fig. 2 pueden configurarse adicionalmente para dividir en particiones y/o codificar la imagen utilizando segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse en particiones o codificarse utilizando uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU). Embodiments of the video encoder 20 as shown in FIG. 2 may be further configured to partition and/or encode the image using segments (also referred to as video segments), wherein an image may be partitioned or encoded using one or more (typically non-overlapping) segments, and each segment may comprise one or more blocks (e.g., CTUs).
Las realizaciones del codificador 20 de vídeo como se muestra en la fig. 2 pueden configurarse además para dividir en particiones y/o codificar la imagen utilizando grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen puede dividirse en particiones o codificarse utilizando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios. Embodiments of the video encoder 20 as shown in FIG. 2 may be further configured to partition and/or encode the image using groups of tiles (also referred to as video tile groups) and/or tiles (also referred to as video tiles), wherein an image may be partitioned or encoded using one or more groups of tiles (typically non-overlapping), and each group of tiles may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles, wherein each tile, for example, may be rectangular in shape and may comprise one or more blocks (e.g., CTUs), for example, full or fractional blocks.
Cálculo Residual Residual Calculation
La unidad 204 de cálculo residual puede configurarse para calcular un bloque 205 residual (también denominado residual 205) basándose en el bloque 203 de imagen y un bloque 265 de predicción (más adelante se proporcionan más detalles sobre el bloque 265 de predicción), por ejemplo, restando valores de muestra del bloque 265 de predicción de los valores de muestra del bloque 203 de imagen, muestra por muestra (píxel por píxel) para obtener el bloque 205 residual en el dominio de muestra. The residual calculation unit 204 may be configured to calculate a residual block 205 (also referred to as residual 205) based on the image block 203 and a prediction block 265 (more details on the prediction block 265 are provided below), for example, by subtracting sample values of the prediction block 265 from the sample values of the image block 203, sample by sample (pixel by pixel) to obtain the residual block 205 in the sample domain.
Transformada Transformed
La unidad 206 de procesamiento de transformada puede configurarse para aplicar una transformada, por ejemplo, una transformada de coseno discreta (DCT) o transformada de seno discreta (DST), en los valores de muestra del bloque 205 residual para obtener los coeficientes 207 de transformada en un dominio de transformada. Los coeficientes 207 de transformada también pueden denominarse coeficientes residuales de transformada y representan el bloque 205 residual en el dominio de transformada. The transform processing unit 206 may be configured to apply a transform, for example, a discrete cosine transform (DCT) or discrete sine transform (DST), on the sample values of the residual block 205 to obtain the transform coefficients 207 in a transform domain. The transform coefficients 207 may also be referred to as transform residual coefficients and represent the residual block 205 in the transform domain.
La unidad 206 de procesamiento de transformada puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformadas especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, estas aproximaciones de números enteros se escalan típicamente por un cierto factor. Para preservar la norma del bloque residual que se procesa mediante transformadas directas e inversas, se aplican factores de escala adicionales como parte del proceso de transformada. Los factores de escala generalmente se eligen basándose en ciertas restricciones, como los factores de escala que son una potencia de dos para las operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformada, el compromiso entre la precisión y los costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo mediante la unidad 212 de procesamiento de transformada inversa (y la correspondiente transformada inversa, por ejemplo, mediante la unidad 312 de procesamiento de transformada inversa en el decodificador 30 de vídeo) y los factores de escala correspondientes para la transformada directa, por ejemplo, mediante la unidad 206 de procesamiento de transformada, en un codificador 20 se puede especificar en consecuencia. The transform processing unit 206 may be configured to apply integer approximations of DCT/DST, such as the transforms specified for H.265/HEVC. Compared to an orthogonal DCT transform, these integer approximations are typically scaled by a certain factor. To preserve the norm of the residual block being processed by forward and inverse transforms, additional scaling factors are applied as part of the transform process. The scaling factors are typically chosen based on certain constraints, such as scaling factors being a power of two for shift operations, bit depth of the transform coefficients, trade-off between accuracy and implementation costs, etc. Specific scale factors are specified, for example, for the inverse transform, for example by the inverse transform processing unit 212 (and the corresponding inverse transform, for example, by the inverse transform processing unit 312 in the video decoder 30) and corresponding scale factors for the forward transform, for example, by the transform processing unit 206, in an encoder 20 may be specified accordingly.
Las realizaciones del codificador 20 de vídeo (respectivamente la unidad 206 de procesamiento de transformada) pueden configurarse para dar salida a parámetros de transformada, por ejemplo, un tipo de transformada o transformadas, por ejemplo, directamente o codificado o comprimido a través de la unidad 270 de codificación por entropía, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y utilizar los parámetros de transformada para decodificar. Embodiments of the video encoder 20 (respectively the transform processing unit 206) may be configured to output transform parameters, e.g., a type of transform or transforms, e.g., directly or encoded or compressed via the entropy encoding unit 270, such that, for example, the video decoder 30 may receive and use the transform parameters for decoding.
Cuantificación Quantification
La unidad 208 de cuantificación puede configurarse para cuantificar los coeficientes 207 de transformada para obtener coeficientes 209 cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes 209 cuantificados también pueden denominarse coeficientes 209 de transformada cuantificados o coeficientes 209 residuales cuantificados. The quantization unit 208 may be configured to quantize the transform coefficients 207 to obtain quantized coefficients 209, for example, by applying scalar quantization or vector quantization. The quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes 207 de transformada. Por ejemplo, un coeficiente de transformada de n bits puede redondearse hacia abajo a un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación (QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más gruesa. Los tamaños de etapa de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de etapa de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de la etapa de cuantificación aplicable puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice para un conjunto predefinido de tamaños de etapa de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de etapa de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de etapa de cuantificación grandes) o viceversa. La cuantificación puede incluir división por un tamaño de etapa de cuantificación y una descuantificación correspondiente y/o inversa, por ejemplo, por la unidad 210 de cuantificación inversa, puede incluir la multiplicación por el tamaño de la etapa de cuantificación. Las realizaciones según algunos estándares, por ejemplo, HEVC, puede configurarse para utilizar un parámetro de cuantificación para determinar el tamaño de la etapa de cuantificación. Generalmente, el tamaño de la etapa de cuantificación puede calcularse basándose en un parámetro de cuantificación utilizando una aproximación de punto fijo de una ecuación que incluye la división. Se pueden introducir factores de escala adicionales para la cuantificación y descuantificación para restaurar la norma del bloque residual, que podría modificarse debido a la escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño de la etapa de cuantificación y el parámetro de cuantificación. En una implementación ejemplar, la escala de la transformada inversa y la descuantificación podrían combinarse. Alternativamente, pueden utilizarse tablas de cuantificación personalizadas y señalizarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en donde la pérdida aumenta al aumentar los tamaños de las etapas de cuantificación. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform coefficient may be rounded down to an m-bit transform coefficient during quantization, where n is greater than m. The degree of quantization may be modified by adjusting a quantization parameter (QP). For example, for scalar quantization, different scales may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be indicated by a quantization parameter (QP). The quantization parameter may be, for example, an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes) and large quantization parameters may correspond to coarse quantization (large quantization step sizes) or vice versa. Quantization may include division by a quantization step size and corresponding and/or inverse dequantization, for example, by inverse quantization unit 210, may include multiplication by the quantization step size. Embodiments according to some standards, for example, HEVC, may be configured to use a quantization parameter to determine the quantization step size. Generally, the quantization step size may be calculated based on a quantization parameter using a fixed-point approximation of an equation that includes division. Additional scaling factors may be introduced for quantization and dequantization to restore the residual block norm, which could be modified due to the scaling used in the fixed-point approximation of the equation for the quantization step size and the quantization parameter. In an exemplary implementation, the inverse transform scaling and dequantization could be combined. Alternatively, custom quantization tables can be used and signaled from an encoder to a decoder, e.g. in a bitstream. Quantization is a lossy operation, where the loss increases with increasing quantization stage sizes.
Las realizaciones del codificador 20 de vídeo (respectivamente la unidad 208 de cuantificación) pueden configurarse para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificado mediante la unidad 270 de codificación por entropía, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y aplicar los parámetros de cuantificación para la decodificación. Embodiments of the video encoder 20 (respectively the quantization unit 208) may be configured to output quantization parameters (QP), for example, directly or encoded by the entropy encoding unit 270, so that, for example, the video decoder 30 may receive and apply the quantization parameters for decoding.
Cuantificación Inversa Reverse Quantification
La unidad 210 de cuantificación inversa está configurada para aplicar la cuantificación inversa de la unidad 208 de cuantificación en los coeficientes cuantificados para obtener coeficientes 211 descuantificados, por ejemplo, aplicando la inversa del esquema de cuantificación aplicado por la unidad 208 de cuantificación basándose en o utilizando el mismo tamaño de la etapa de cuantificación que la unidad 208 de cuantificación. Los coeficientes 211 descuantificados también pueden denominarse coeficientes 211 residuales descuantificados y corresponden, aunque normalmente no son idénticos a los coeficientes de transformada debido a la pérdida por cuantificación, a los coeficientes 207 de transformada. The inverse quantization unit 210 is configured to apply the inverse quantization of the quantization unit 208 on the quantized coefficients to obtain dequantized coefficients 211, for example, by applying the inverse of the quantization scheme applied by the quantization unit 208 based on or using the same quantization step size as the quantization unit 208. The dequantized coefficients 211 may also be referred to as dequantized residual coefficients 211 and correspond, although are typically not identical to the transform coefficients due to quantization loss, to the transform coefficients 207.
Transformada Inversa Inverse Transform
La unidad 212 de procesamiento de transformada inversa está configurada para aplicar la transformada inversa de la transformada aplicada por la unidad 206 de procesamiento de transformada, por ejemplo, una transformada de coseno discreta inversa (DCT) o una transformada de seno discreta inversa (DST) u otras transformadas inversas, para obtener un bloque 213 residual reconstruido (o los coeficientes 213 descuantificados correspondientes) en el dominio de muestra. El bloque 213 residual reconstruido también puede denominarse bloque 213 de transformada. The inverse transform processing unit 212 is configured to apply the inverse transform of the transform applied by the transform processing unit 206, for example, an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transforms, to obtain a reconstructed residual block 213 (or the corresponding dequantized coefficients 213) in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 213.
Reconstrucción Reconstruction
La unidad 214 de reconstrucción (por ejemplo, sumador (adder or summer) 214) está configurada para añadir el bloque 213 de transformada (es decir, el bloque 213 residual reconstruido) al bloque 265 de predicción para obtener un bloque 215 reconstruido en el dominio de muestra, por ejemplo, añadiendo, muestra por muestra, los valores de muestra del bloque 213 residual reconstruido y los valores de muestra del bloque 265 de predicción. The reconstruction unit 214 (e.g., adder or summer 214) is configured to add the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain a reconstructed block 215 in the sample domain, for example, by adding, sample by sample, the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265.
Filtración Filtration
La unidad 220 de filtro en bucle (o “filtro en bucle” 220 corto), está configurada para filtrar el bloque 215 reconstruido para obtener un bloque 221 filtrado o, en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro en bucle está configurada, por ejemplo, para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. La unidad 220 de filtro en bucle puede comprender uno o más filtros en bucle tales como un filtro de desbloqueo, un filtro de desplazamiento adaptable a la muestra (SAO) o uno o más de otros filtros, por ejemplo, un filtro bilateral, un filtro en bucle adaptable (ALF), un filtro de nitidez, unos filtros de suavizado o unos filtros colaborativos, o cualquier combinación de los mismos. Aunque la unidad 220 de filtro en bucle se muestra en la fig. 2 como un filtro en bucle, en otras configuraciones, la unidad 220 de filtro en bucle puede implementarse como un filtro en bucle posterior. El bloque 221 filtrado también puede denominarse bloque 221 reconstruido filtrado. The loop filter unit 220 (or “loop filter” 220 for short), is configured to filter the reconstructed block 215 to obtain a filtered block 221 or, in general, to filter reconstructed samples to obtain filtered samples. The loop filter unit is configured, for example, to smooth pixel transitions or otherwise improve video quality. The loop filter unit 220 may comprise one or more loop filters such as a deblocking filter, a sample adaptive shift (SAO) filter, or one or more other filters, for example, a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, anti-aliasing filters, or collaborative filters, or any combination thereof. Although the loop filter unit 220 is shown in FIG. 2 as a loop filter, in other configurations, the loop filter unit 220 may be implemented as a post loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221.
Las realizaciones del codificador 20 de vídeo (respectivamente la unidad 220 de filtro en bucle) pueden configurarse para emitir parámetros de filtro en bucle (tales como información de desplazamiento adaptable a la muestra), por ejemplo, directamente o codificado a través de la unidad 270 de codificación por entropía, de modo que, por ejemplo, un decodificador 30 pueda recibir y aplicar los mismos parámetros de filtro en bucle o filtros en bucle respectivos para decodificar. Embodiments of the video encoder 20 (respectively the loop filter unit 220) may be configured to output loop filter parameters (such as sample adaptive shift information), for example, directly or encoded via the entropy encoding unit 270, so that, for example, a decoder 30 may receive and apply the same or respective loop filter parameters for decoding.
Memoria intermedia de imagen decodificada Decoded image buffer
La memoria intermedia 230 de imagen decodificada (DPB) puede ser una memoria que almacena imágenes de referencia, o en general datos de imágenes de referencia, para codificar datos de vídeo mediante el codificador 20 de vídeo. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria intermedia 230 de imagen decodificada (DPB) puede configurarse para almacenar uno o más bloques 221 filtrados. La memoria intermedia 230 de imagen decodificada puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas (y bloques de referencia y muestras correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques de referencia y muestras correspondientes), por ejemplo, para interpredicción. La memoria intermedia 230 de imagen decodificada (DPB) también puede configurarse para almacenar uno o más bloques 215 reconstruidos sin filtrar o, en general, muestras reconstruidas sin filtrar, por ejemplo, si el bloque 215 reconstruido no es filtrado por la unidad 220 de filtro en bucle, o cualquier otra versión procesada adicional de los bloques reconstruidos o muestras. The decoded picture buffer (DPB) 230 may be a memory that stores reference pictures, or generally reference picture data, for encoding video data by the video encoder 20. The DPB 230 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded image buffer 230 may be further configured to store other previously filtered blocks, e.g., previously reconstructed and filtered blocks 221, of the same current image or of different images, e.g., previously reconstructed images, and may provide complete previously reconstructed, i.e., decoded images (and corresponding reference blocks and samples) and/or a partially reconstructed current image (and corresponding reference blocks and samples), e.g., for inter prediction. The decoded image buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215 or, in general, unfiltered reconstructed samples, e.g., if the reconstructed block 215 is not filtered by the loop filter unit 220, or any other further processed version of the reconstructed blocks or samples.
Selección de modo (división en particiones y predicción) Mode selection (partitioning and prediction)
La unidad 260 de selección de modo comprende la unidad 262 de división en particiones, la unidad 244 de interpredicción y la unidad 254 de intrapredicción, y está configurada para recibir u obtener datos de imagen originales, por ejemplo, un bloque 203 original (bloque 203 actual de la imagen 17 actual), y datos de imagen reconstruida, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar de la misma imagen (actual) y/o de una o una pluralidad de imágenes decodificadas previamente, por ejemplo, desde la memoria intermedia 230 de imagen decodificada u otras memorias intermedias (por ejemplo, memoria intermedia de línea, no mostrada). Los datos de imagen reconstruida se utilizan como datos de imagen de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque 265 de predicción o predictor 265. The mode selection unit 260 comprises the partitioning unit 262, the inter prediction unit 244 and the intra prediction unit 254, and is configured to receive or obtain original image data, for example, an original block 203 (current block 203 of the current image 17), and reconstructed image data, for example, filtered and/or unfiltered reconstructed samples or blocks of the same (current) image and/or of one or a plurality of previously decoded images, for example, from the decoded image buffer 230 or other buffers (e.g., line buffer, not shown). The reconstructed image data is used as reference image data for prediction, for example, inter prediction or intra prediction, to obtain a prediction block 265 or predictor 265.
La unidad 260 de selección de modo puede configurarse para determinar o seleccionar una división en particiones para un modo de predicción de bloque actual (que no incluye división en particiones) y un modo de predicción (por ejemplo, un modo de inter- o intrapredicción) y generar un bloque 265 de predicción correspondiente, que se utiliza para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido. The mode selection unit 260 may be configured to determine or select a partitioning for a current block prediction mode (which does not include partitioning) and a prediction mode (for example, an inter- or intra-prediction mode) and generate a corresponding prediction block 265, which is used for calculating the residual block 205 and reconstructing the reconstructed block 215.
Las realizaciones de la unidad 260 de selección de modo pueden configurarse para seleccionar la división en particiones y el modo de predicción (por ejemplo, de los soportados por o disponibles para la unidad 260 de selección de modo), que proporcionan la mejor coincidencia o, en otras palabras, el residuo mínimo (el residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una mínima sobrecarga de señalización (mínima sobrecarga de señalización significa mejor compresión para transmisión o almacenamiento), o que considera o equilibra ambos. La unidad 260 de selección de modo puede configurarse para determinar el modo de división en particiones y predicción basándose en la optimización de la distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de tasa mínima. Términos como “mejor”, “mínimo”, “óptimo”, etc. en este contexto no se refieren necesariamente a un “mejor”, “mínimo”, “óptimo” general, etc., sino que también pueden referirse al cumplimiento de una rescisión o criterio de selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “selección subóptima” pero que reducen la complejidad y el tiempo de procesamiento. Embodiments of the mode selection unit 260 may be configured to select the partitioning and prediction mode (e.g., from those supported by or available to the mode selection unit 260), which provide the best match, or in other words, minimum residue (minimum residue means better compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which considers or balances both. The mode selection unit 260 may be configured to determine the partitioning and prediction mode based on rate distortion optimization (RDO), i.e., select the prediction mode which provides minimum rate distortion. Terms such as “best,” “minimum,” “optimal,” etc. In this context they do not necessarily refer to an overall “best”, “minimum”, “optimal”, etc., but may also refer to compliance with a selection criterion or criterion such as a value exceeding or falling below a threshold or other constraints potentially leading to a “suboptimal selection” but reducing complexity and processing time.
En otras palabras, la unidad 262 de división en particiones puede configurarse para dividir el bloque 203 en divisiones de bloques o sub-bloques más pequeños (que forman nuevamente bloques), por ejemplo, utilizando iterativamente la división en particiones de árbol cuaternario (QT), la división en particiones binaria (BT) o la división en particiones de árbol ternario (TT) o cualquier combinación de las mismas, y para realizar, por ejemplo, la predicción para cada una de las particiones de bloques o sub-bloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque 203 dividido en particiones y los modos de predicción se aplican a cada una de las particiones de bloque o sub-bloques. In other words, the partitioning unit 262 may be configured to partition the block 203 into smaller block or sub-block partitions (which again form blocks), for example, by iteratively using quaternary tree (QT) partitioning, binary partitioning (BT) or ternary tree (TT) partitioning or any combination thereof, and to perform, for example, prediction for each of the block or sub-block partitions, wherein the mode selection comprises selecting the tree structure of the partitioned block 203 and the prediction modes are applied to each of the block or sub-block partitions.
A continuación, se explicará con más detalle la división (por ejemplo, mediante la unidad 260 de división) y el procesamiento de predicción (mediante la unidad 244 de interpredicción y la unidad 254 de intrapredicción) realizados por un codificador 20 de vídeo de ejemplo. Next, the division (for example, by division unit 260) and prediction processing (by inter prediction unit 244 and intra prediction unit 254) performed by an example video encoder 20 will be explained in more detail.
División en particiones Partitioning
La unidad 262 de división en particiones puede dividir en particiones (o dividir) un bloque 203 actual en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse sub-bloques) pueden dividirse además en particiones aún más pequeñas. Esto también se refiere a la división en particiones de árboles o la división en particiones jerárquica de árboles, en donde un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), puede dividirse de forma recursiva en particiones, por ejemplo, dividido en particiones en dos o más bloques de un siguiente nivel de árbol inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques pueden volver a dividirse en dos o más bloques de un nivel inferior siguiente, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que finalice la división en particiones, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad máxima de árbol o un tamaño mínimo de bloque. Los bloques que no se dividen en particiones más también se denominan bloques hoja o nodos hoja del árbol. Un árbol que utiliza la división en dos particiones se denomina árbol binario (BT), un árbol que utiliza la división en tres particiones se denomina árbol ternario (TT) y un árbol que utiliza la división en cuatro particiones se denomina árbol cuaternario (QT). The partitioning unit 262 can partition (or split) a current block 203 into smaller partitions, for example, smaller blocks of square or rectangular size. These smaller blocks (which may also be referred to as sub-blocks) can be further split into even smaller partitions. This also refers to tree partitioning or hierarchical tree partitioning, where a root block, for example, at root tree level 0 (hierarchy level 0, depth 0), can be recursively partitioned, for example, partitioned into two or more blocks of a next lower tree level, for example, nodes at tree level 1 (hierarchy level 1, depth 1), where these blocks can be further split into two or more blocks of a next lower level, for example, tree level 2 (hierarchy level 2, depth 2), etc. until partitioning is complete, for example because a termination criterion is met, such as a maximum tree depth or minimum block size is reached. Blocks that are not further partitioned are also called leaf blocks or leaf nodes of the tree. A tree that uses two-partition partitioning is called a binary tree (BT), a tree that uses three-partition partitioning is called a ternary tree (TT), and a tree that uses four-partition partitioning is called a quaternary tree (QT).
Como se ha mencionado anteriormente, el término “bloque” como se utiliza en la presente memoria puede ser una parte, en particular una parte cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y VVC, el bloque puede ser o corresponder a una unidad de árbol de codificación (CTU), una unidad de codificación (CU), una unidad de predicción (PU) y una unidad de transformada (TU) y/o bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformada (TB) o un bloque de predicción (PB). As mentioned above, the term “block” as used herein may be a portion, in particular a square or rectangular portion, of an image. With reference to, for example, HEVC and VVC, the block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, for example, a coding tree block (CTB), a coding block (CB), a transform block (TB) or a prediction block (PB).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un CTB de muestras de una imagen monocromática o una imagen que está codificada utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de árbol de codificación (CTB) puede ser un bloque NxN de muestras para algún valor de N, de tal manera que la división de un componente en CTB es una división en particiones. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis que se utilizan para codificar las muestras. De manera correspondiente, un bloque de codificación (CB) puede ser un bloque MxN de muestras para algunos valores de M y N, de tal manera que la división de un CTB en bloques de codificación es una división en particiones. For example, a coding tree unit (CTU) may be or comprise a CTB of luma samples, two corresponding CTBs of chroma samples of an image having three sample arrays, or a CTB of samples of a monochrome image or an image that is encoded using three separate color planes and syntax structures used to encode the samples. Accordingly, a coding tree block (CTB) may be an NxN block of samples for some value of N, such that partitioning a component into CTBs is a partitioning. A coding unit (CU) may be or comprise a coding block of luma samples, two corresponding coding blocks of chroma samples of an image having three sample arrays, or a coding block of samples of a monochrome image or an image that is encoded using three separate color planes and syntax structures used to encode the samples. Correspondingly, a coding block (CB) can be an MxN block of samples for some values of M and N, such that dividing a CTB into coding blocks is a partitioning.
En las realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificación (CTU) puede dividirse en CU utilizando una estructura de árbol cuaternaria indicada como árbol de codificación. La decisión de codificar un área de imagen utilizando predicción interimagen (temporal) o intraimagen (espacial) se toma a nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU según el tipo de división de P<u>. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador por PU. Después de obtener el bloque residual aplicando el proceso de predicción basado en el tipo de división de PU, una CU puede dividirse en unidades de transformada (TU) según otra estructura de árbol cuaternaria similar al árbol de codificación de la CU. In embodiments, for example according to HEVC, a coding tree unit (CTU) may be split into CUs using a quaternary tree structure denoted as a coding tree. The decision to encode an image area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU may be split into one, two or four PUs based on the PU split type. Within a PU, the same prediction process is applied and relevant information is transmitted to the decoder per PU. After obtaining the residual block by applying the prediction process based on the PU split type, a CU may be split into transform units (TUs) based on another quaternary tree structure similar to the coding tree of the CU.
En las realizaciones, por ejemplo, según el último estándar de codificación de vídeo actualmente en desarrollo, que se denomina codificación de vídeo versátil (VVC), se utiliza una división en particiones combinada de árbol cuaternario y árbol binario (QTBT) para dividir en particiones un bloque de codificación. En la estructura de bloques QTBt , una CU puede tener, bien forma cuadrada, o bien rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero en una estructura de árbol cuaternario. Los nodos de hojas de árbol cuaternario se dividen aún más mediante un árbol binario o una estructura de árbol ternario (o triple). Los nodos hoja del árbol de división en particiones se denominan unidades de codificación (CU), y esa segmentación se utiliza para la predicción y el procesamiento de transformada sin más divisiones en particiones. Esto significa que CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación QTBT. En paralelo, la división en particiones múltiple, por ejemplo, la partición de árbol ternario se puede utilizar junto con la estructura de bloques QTBT. In embodiments, for example, according to the latest video coding standard currently under development, which is called Versatile Video Coding (VVC), a combined quad-tree and binary tree (QTBT) partitioning is used to partition a coding block. In the QTBt block structure, a CU may be either square or rectangular in shape. For example, a coding tree unit (CTU) is first partitioned into a quad-tree structure. The quad-tree leaf nodes are further partitioned by a binary tree or a ternary (or triple) tree structure. The leaf nodes of the partitioning tree are called coding units (CU), and that segmentation is used for prediction and transform processing without further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel, multiple partitioning, e.g. ternary tree partitioning can be used together with the QTBT block structure.
En un ejemplo, la unidad 260 de selección de modo del codificador 20 de vídeo puede configurarse para realizar cualquier combinación de las técnicas de partición descritas en la presente memoria. In one example, the mode selection unit 260 of the video encoder 20 may be configured to perform any combination of the partitioning techniques described herein.
Como se ha descrito anteriormente, el codificador 20 de vídeo está configurado para determinar o seleccionar el mejor o un modo de predicción óptimo de un conjunto de modos de predicción (por ejemplo, predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción. As described above, the video encoder 20 is configured to determine or select the best or an optimal prediction mode from a set of (e.g., predetermined) prediction modes. The set of prediction modes may comprise, for example, intra-prediction modes and/or inter-prediction modes.
Intrapredicción Intra prediction
El conjunto de modos de intrapredicción puede comprender 35 modos diferentes de intrapredicción, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define para VVC. The set of intra prediction modes may comprise 35 different intra prediction modes, for example non-directional modes such as DC (or half) mode and flat mode, or directional modes, for example as defined in HEVC, or it may comprise 67 different intra prediction modes, for example non-directional modes such as DC (or half) mode and flat mode, or directional modes, for example as defined for VVC.
La unidad 254 de intrapredicción está configurada para utilizar muestras reconstruidas de bloques contiguos de la misma imagen actual para generar un bloque 265 de intrapredicción según un modo de intrapredicción del conjunto de modos de intrapredicción. The intra prediction unit 254 is configured to use reconstructed samples from contiguous blocks of the same current image to generate an intra prediction block 265 according to an intra prediction mode from the set of intra prediction modes.
La unidad 254 de intrapredicción (o en general la unidad 260 de selección de modo) está configurada además para enviar parámetros de intrapredicción (o en general información indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad 270 de codificación por entropía en forma de elementos 266 de sintaxis para su inclusión en los datos 21 de imagen codificada, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y utilizar los parámetros de predicción para la descodificación. The intra prediction unit 254 (or generally the mode selection unit 260) is further configured to send intra prediction parameters (or generally information indicative of the intra prediction mode selected for the block) to the entropy encoding unit 270 in the form of syntax elements 266 for inclusion in the encoded image data 21, so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.
Interpredicción Interprediction
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes previas al menos parcialmente decodificadas, por ejemplo, almacenadas en DBP 230) y otros parámetros de interpredicción, por ejemplo, si la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se utiliza para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio/semi-pel y/o cuarto de pel, o no. The set of (or possible) inter-prediction modes depends on the available reference pictures (i.e., at least partially decoded previous pictures, e.g., stored in DBP 230) and other inter-prediction parameters, e.g., whether the entire reference picture or only a portion, e.g., a search window area around the current block area, of the reference picture is used to search for a best-matching reference block, and/or e.g., whether pixel interpolation, e.g., half-/semi-pel and/or quarter-pel interpolation, is applied or not.
Además de los modos de predicción anteriores, se puede aplicar el modo de salto y/ o el modo directo. In addition to the above prediction modes, jump mode and/or direct mode can be applied.
La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la fig. 2). La unidad de estimación de movimiento puede configurarse para recibir u obtener el bloque 203 de imagen (bloque 203 de imagen actual de la imagen 17 actual) y una imagen 231 decodificada, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes 231 previamente decodificadas, para la estimación del movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes 231 previamente decodificadas, o, en otras palabras, la imagen actual y las imágenes 231 previamente decodificadas pueden ser parte o formar una secuencia de imágenes que forman una secuencia de vídeo. The inter-prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (both not shown in FIG. 2 ). The motion estimation unit may be configured to receive or obtain the image block 203 (current image block 203 of the current image 17) and a decoded image 231, or at least one or a plurality of previously reconstructed blocks, e.g., reconstructed blocks from one or a plurality of other/different previously decoded images 231, for motion estimation. For example, a video sequence may comprise the current image and the previously decoded images 231, or, in other words, the current image and the previously decoded images 231 may be part of or form a sequence of images that form a video sequence.
El codificador 20 puede, por ejemplo, estar configurado para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción para la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (MV). The encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from the plurality of other pictures and provide a reference picture (or reference picture index) and/or an offset (spatial displacement) between the position (x,y coordinates) of the reference block and the position of the current block as inter-prediction parameters for the motion estimation unit. This offset is also called a motion vector (MV).
La unidad de compensación de movimiento está configurada para obtener, por ejemplo, recibir, un parámetro de interpredicción y realizar una interpredicción basada en o utilizando el parámetro de interpredicción para obtener un bloque 265 de interpredicción. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar buscar o generar el bloque de predicción basándose en el vector de movimiento/bloque determinado por estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden utilizarse para codificar un bloque de imagen. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia. The motion compensation unit is configured to obtain, for example, receive, an inter prediction parameter and perform an inter prediction based on or using the inter prediction parameter to obtain an inter prediction block 265. The motion compensation, performed by the motion compensation unit, may involve searching for or generating the prediction block based on the motion vector/block determined by motion estimation, possibly performing sub-pixel accurate interpolations. The interpolation filtering may generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. Upon receiving the motion vector for the current image block's PU, the motion compensation unit may locate the prediction block pointed to by the motion vector in one of the reference image lists.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para su uso por el decodificador 30 de vídeo al decodificar los bloques de imagen del segmento de vídeo. Además, o como una alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden generar o utilizar grupos de mosaicos y/o mosaicos y los elementos de sintaxis respectivos. The motion compensation unit may also generate syntax elements associated with the video blocks and segments for use by the video decoder 30 in decoding the image blocks of the video segment. In addition to, or as an alternative to, the segments and the respective syntax elements, tile groups and/or tiles and the respective syntax elements may be generated or used.
Codificación por entropía Entropy coding
La unidad 270 de codificación por entropía está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación por entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto (CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptable al contexto (CABAC), una codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), una codificación por entropía de división de particiones de intervalo de probabilidad (P IPE) u otra metodología o técnica de codificación por entropía) o derivación (sin compresión) en los coeficientes 209 cuantificados, parámetros de interpredicción, parámetros de intrapredicción, parámetros de filtro en bucle y/u otros elementos de sintaxis para obtener datos 21 de imagen codificada que se pueden emitir a través de la salida 272, por ejemplo, en forma de un flujo de bits 21 codificado, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y utilizar los parámetros para decodificar. El flujo de bits 21 codificado puede transmitirse al decodificador 30 de vídeo o almacenarse en una memoria para su posterior transmisión o recuperación mediante el decodificador 30 de vídeo. The entropy coding unit 270 is configured to apply, for example, an entropy coding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic coding scheme, a binarization, a context adaptive binary arithmetic coding (CABAC), a syntax-based context adaptive binary arithmetic coding (SBAC), a probability interval partitioning entropy coding (PIPE), or other entropy coding methodology or technique) or derivation (without compression) on the quantized coefficients 209, inter prediction parameters, intra prediction parameters, loop filter parameters, and/or other syntax elements to obtain encoded image data 21 that can be output via the output 272, for example, in the form of an encoded bit stream 21, such that, for example, the video decoder 30 can receive and use the encoded image data 21. the parameters for decoding. The encoded bit stream 21 may be transmitted to the video decoder 30 or stored in a memory for later transmission or retrieval by the video decoder 30.
Se pueden utilizar otras variaciones estructurales del codificador 20 de vídeo para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no basado en transformada puede cuantificar la señal residual directamente sin la unidad 206 de procesamiento de transformada para ciertos bloques o tramas. En otra implementación, un codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa combinadas en una sola unidad. Other structural variations of the video encoder 20 may be used to encode the video stream. For example, a non-transform-based encoder 20 may quantize the residual signal directly without the transform processing unit 206 for certain blocks or frames. In another implementation, an encoder 20 may have the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.
Decodificador y Método de Decodificación Decoder and Decoding Method
La fig. 3 muestra un ejemplo de un decodificador 30 de vídeo que está configurado para implementar las técnicas de esta presente solicitud. El decodificador 30 de vídeo está configurado para recibir datos 21 de imagen codificada (por ejemplo, flujo de bits 21 codificado), por ejemplo, codificado por el codificador 20, para obtener una imagen 331 decodificada. Los datos de imagen codificada o el flujo de bits comprenden información para decodificar los datos de imagen codificada, por ejemplo, datos que representan bloques de imagen de un segmento de vídeo codificado (y/o grupos de mosaicos o mosaicos) y elementos de sintaxis asociados. 3 shows an example of a video decoder 30 that is configured to implement the techniques of this present application. The video decoder 30 is configured to receive encoded image data 21 (e.g., encoded bitstream 21), e.g., encoded by the encoder 20, to obtain a decoded image 331. The encoded image data or bitstream comprises information for decoding the encoded image data, e.g., data representing image blocks of an encoded video segment (and/or groups of tiles or mosaics) and associated syntax elements.
En el ejemplo de la fig. 3, el decodificador 30 comprende una unidad 304 de decodificación por entropía, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformada inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), un filtro 320 en bucle, una memoria intermedia 330 de imagen decodificada (DBP), una unidad 360 de aplicación de modo, una unidad 344 de interpredicción y una unidad 354 354 de intrapredicción. La unidad 344 de interpredicción puede ser o incluir una unidad de compensación de movimiento. El decodificador 30 de vídeo puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador 100 de vídeo de la fig. 2. In the example of FIG. 3, the decoder 30 comprises an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., an adder 314), a loop filter 320, a decoded picture buffer (DBP) 330, a mode application unit 360, an inter prediction unit 344, and an intra prediction unit 354. The inter prediction unit 344 may be or include a motion compensation unit. The video decoder 30 may, in some examples, perform a decoding pass generally reciprocal to the encoding pass described with respect to the video encoder 100 of FIG. 2.
Como se explica con respecto al codificador 20, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el filtro 220 en bucle, la memoria intermedia 230 de imagen decodificada (DPB), la unidad 344 de interpredicción y la unidad 354 de intrapredicción también se denominan formando el “decodificador incorporado” del codificador 20 de vídeo. Por consiguiente, la unidad 310 de cuantificación inversa puede ser idéntica en función a la unidad 110 de cuantificación inversa, la unidad 312 de procesamiento de transformada inversa puede ser idéntica en función a la unidad 212 de procesamiento de transformada inversa, la unidad 314 de reconstrucción puede ser idéntica en función a la unidad 214 de reconstrucción, el filtro 320 en bucle puede ser idéntico en función al filtro 220 en bucle, y la memoria intermedia 230 de imagen decodificada puede ser idéntica en función a la memoria intermedia 230 de imagen decodificada. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador 20 de vídeo se aplican correspondientemente a las respectivas unidades y funciones del decodificador 30 de vídeo. As explained with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 344, and the intra prediction unit 354 are also referred to as forming the “embedded decoder” of the video encoder 20. Accordingly, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decoded picture buffer 230 may be functionally identical to the decoded picture buffer 230. Therefore, the explanations provided for the respective units and functions of the video encoder 20 correspondingly apply to the respective units and functions of the video decoder 30.
Decodificación por Entropía Decoding by Entropy
La unidad 304 de decodificación por entropía está configurada para analizar el flujo de bits 21 (o en general datos 21 de imagen codificada) y realizar, por ejemplo, decodificación por entropía a los datos 21 de imagen codificada para obtener, por ejemplo, coeficientes 309 cuantificados y/o parámetros de codificación decodificados (no se muestra en la fig. 3), por ejemplo, cualquiera o todos los parámetros de interpredicción (por ejemplo, índice y vector de movimiento de imagen de referencia), parámetro de intrapredicción (por ejemplo, modo o índice de intrapredicción), parámetros de transformada, parámetros de cuantificación, parámetros de filtro en bucle y/u otros elementos de sintaxis. La unidad 304 de decodificación por entropía puede configurarse para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación descritos con respecto a la unidad 270 de codificación por entropía del codificador 20. La unidad 304 de decodificación por entropía puede configurarse además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad 360 de aplicación de modo y otros parámetros a otras unidades del decodificador 30. El decodificador 30 de vídeo puede recibir los elementos de sintaxis en el nivel de segmento de vídeo y/o en el nivel de bloque de vídeo. Además, o como alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden recibir y/o utilizar grupos de mosaicos y/o mosaicos y los elementos de sintaxis respectivos. The entropy decoding unit 304 is configured to analyze the bit stream 21 (or generally encoded image data 21) and perform, for example, entropy decoding to the encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded coding parameters (not shown in FIG. 3), for example, any or all of inter prediction parameters (e.g., reference picture motion vector and index), intra prediction parameter (e.g., intra prediction mode or index), transform parameters, quantization parameters, loop filter parameters, and/or other syntax elements. The entropy decoding unit 304 may be configured to apply decoding algorithms or schemes corresponding to the coding schemes described with respect to the entropy coding unit 270 of the encoder 20. The entropy decoding unit 304 may be further configured to provide inter prediction parameters, intra prediction parameters, and/or other syntax elements to the mode application unit 360 and other parameters to other units of the decoder 30. The video decoder 30 may receive the syntax elements at the video segment level and/or at the video block level. In addition to, or as an alternative to segments and the respective syntax elements, tile groups and/or tiles and the respective syntax elements may be received and/or used.
Cuantificación Inversa Reverse Quantification
La unidad 310 de cuantificación inversa puede configurarse para recibir parámetros de cuantificación (QP) (o en general información relacionada con la cuantificación inversa) y coeficientes cuantificados de los datos 21 de imagen codificada (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad 304 de decodificación por entropía) y para aplicar basándose en los parámetros de cuantificación, una cuantificación inversa sobre los coeficientes 309 cuantificados decodificados para obtener los coeficientes 311 descuantificados, que también pueden denominarse coeficientes 311 de transformada. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador 20 de vídeo para cada bloque de vídeo en el segmento de vídeo (o mosaico o grupo de mosaico) para determinar un grado de cuantificación y, de la misma manera, un grado de cuantificación inversa que debería aplicarse. The inverse quantization unit 310 may be configured to receive quantization parameters (QP) (or in general inverse quantization related information) and quantized coefficients of the encoded image data 21 (e.g., by analysis and/or decoding, e.g., by the entropy decoding unit 304) and to apply based on the quantization parameters, an inverse quantization on the decoded quantized coefficients 309 to obtain the dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by the video encoder 20 for each video block in the video segment (or tile or tile group) to determine a quantization degree and, likewise, a degree of inverse quantization that should be applied.
Transformada Inversa Inverse Transform
La unidad 312 de procesamiento de transformada inversa puede configurarse para recibir coeficientes 311 descuantificados, también denominados coeficientes 311 de transformada, y para aplicar una transformada a los coeficientes 311 descuantificados para obtener bloques 213 residuales reconstruidos en el dominio de muestras. Los bloques 213 residuales reconstruidos también pueden denominarse bloques 313 de transformada. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada de entero inverso o un proceso de transformada inversa conceptualmente similar. La unidad 312 de procesamiento de transformada inversa puede configurarse además para recibir parámetros de transformada o información correspondiente de los datos 21 de imagen codificada (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad 30 de decodificación por entropía) para determinar la transformada que se ha de aplicar a los coeficientes 311 descuantificados. The inverse transform processing unit 312 may be configured to receive dequantized coefficients 311, also referred to as transform coefficients 311, and to apply a transform to the dequantized coefficients 311 to obtain reconstructed residual blocks 213 in the sample domain. The reconstructed residual blocks 213 may also be referred to as transform blocks 313. The transform may be an inverse transform, for example, an inverse DCT, an inverse DST, an inverse integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may further be configured to receive transform parameters or corresponding information from the encoded image data 21 (e.g., by analyzing and/or decoding, for example, by the entropy decoding unit 30) to determine the transform to be applied to the dequantized coefficients 311.
Reconstrucción Reconstruction
La unidad 314 de reconstrucción (por ejemplo, sumador 314) puede configurarse para añadir el bloque 313 residual reconstruido, al bloque 365 de predicción para obtener un bloque 315 reconstruido en el dominio de muestras, por ejemplo, sumando los valores de muestras del bloque 313 residual reconstruido y los valores de muestras del bloque 365 de predicción. The reconstruction unit 314 (e.g., adder 314) may be configured to add the reconstructed residual block 313 to the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365.
Filtración Filtration
La unidad 320 de filtro en bucle (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles o mejorar, de otro modo, la calidad del vídeo. La unidad 320 de filtro en bucle puede comprender uno o más filtros en bucle tales como un filtro de desbloqueo, un filtro de desplazamiento adaptable a la muestra (SAO) o uno o más de otros filtros, por ejemplo, un filtro bilateral, un filtro en bucle adaptable (ALF), uno de nitidez, un filtro de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad 320 de filtro en bucle se muestra en la fig. 3 como un filtro en bucle, en otras configuraciones, la unidad 320 de filtro en bucle puede implementarse como un filtro posterior al bucle. The in-loop filter unit 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The in-loop filter unit 320 may comprise one or more in-loop filters such as a deblocking filter, a sample adaptive shift (SAO) filter, or one or more other filters, for example, a bilateral filter, an adaptive loop filter (ALF), a sharpening filter, a smoothing filter, or a collaborative filter, or any combination thereof. Although the in-loop filter unit 320 is shown in FIG. 3 as an in-loop filter, in other configurations, the in-loop filter unit 320 may be implemented as a post-loop filter.
Memoria intermedia de imagen decodificada Decoded image buffer
Los bloques 321 de vídeo decodificados de una imagen se almacenan, a continuación, en la memoria intermedia 330 de imagen decodificada, que almacena las imágenes 331 decodificadas como imágenes de referencia para la compensación de movimiento subsiguiente para otras imágenes y/o para la visualización de salida respectivamente. The decoded video blocks 321 of a picture are then stored in the decoded picture buffer 330, which stores the decoded pictures 331 as reference pictures for subsequent motion compensation for other pictures and/or for output display respectively.
El decodificador 30 está configurado para emitir la imagen 311 decodificada, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario. The decoder 30 is configured to output the decoded image 311, for example, through the output 312, for presentation or display to a user.
Predicción Prediction
La unidad 344 de interpredicción puede ser idéntica a la unidad 244 de interpredicción (en particular a la unidad de compensación de movimiento) y la unidad 354 de intrapredicción puede ser idéntica a la unidad 254 de interpredicción en función, y realiza decisiones de división o división en particiones y predicciones basadas sobre los parámetros de división en particiones y/o predicción o la información respectiva recibida de los datos 21 de imagen codificada (por ejemplo, mediante análisis y/o decodificación, por ejemplo, por la unidad 304 de decodificación por entropía). La unidad 360 de aplicación de modo puede configurarse para realizar la predicción (intra- o interpredicción) por bloque basándose en imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque 365 de predicción. The inter prediction unit 344 may be identical to the inter prediction unit 244 (in particular the motion compensation unit) and the intra prediction unit 354 may be identical to the inter prediction unit 254 in function, and makes splitting or partitioning decisions and predictions based on the partitioning and/or prediction parameters or respective information received from the encoded image data 21 (e.g., by analysis and/or decoding, e.g., by the entropy decoding unit 304). The mode applying unit 360 may be configured to perform prediction (intra or inter prediction) on a block basis based on respective reconstructed images, blocks, or samples (filtered or unfiltered) to obtain the prediction block 365.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de aplicación de modo está configurada para generar el bloque 365 de predicción para un bloque de imagen del segmento de vídeo actual basado en un modo de intrapredicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo se codifica como un segmento intercodificado (es decir, B o P), la unidad 344 de interpredicción (por ejemplo, la unidad de compensación de movimiento) de la unidad 360 de aplicación de modo se configura para producir bloques 365 de predicción para un bloque de vídeo del segmento de vídeo actual basado en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad 304 de decodificación por entropía. Para la interpredicción, los bloques de predicción pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de vídeo puede construir las listas de tramas de referencia, Lista 0 y Lista 1, utilizando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 330. Se puede aplicar lo mismo o similar para o mediante las realizaciones utilizando grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o alternativamente a los segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar utilizando grupos de mosaicos y/o mosaicos I, P o B. When the video segment is encoded as an intra coded (I) segment, the intra prediction unit 354 of the mode application unit 360 is configured to generate the prediction block 365 for a picture block of the current video segment based on a signaled intra prediction mode and previously decoded block data of the current picture. When the video picture is encoded as an inter coded (i.e., B or P) segment, the inter prediction unit 344 (e.g., motion compensation unit) of the mode application unit 360 is configured to produce prediction blocks 365 for a video block of the current video segment based on the motion vectors and other syntax elements received from the entropy decoding unit 304. For inter prediction, the prediction blocks may be produced from one of the reference pictures within one of the reference picture lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using predetermined construction techniques based on reference pictures stored in DPB 330. The same or similar may be applied to or by embodiments using tile groups (e.g., video tile groups) and/or tiles (e.g., video tiles) in addition to or alternatively to segments (e.g., video segments), for example, a video may be encoded using tile groups and/or I, P, or B tiles.
La unidad 360 de aplicación de modo está configurada para determinar la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento o información relacionada y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 360 de aplicación de modo utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o interpredicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento interpredicción (por ejemplo, segmento B, segmento P, o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual. Se puede aplicar lo mismo o similar para o mediante las realizaciones que utilizan grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o alternativamente a los segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar utilizando grupos de mosaicos y/o mosaicos I, P o B. The mode applying unit 360 is configured to determine prediction information for a video block of the current video segment by analyzing motion vectors or related information and other syntax elements, and uses the prediction information to produce prediction blocks for the current video block being decoded. For example, the mode applying unit 360 uses some of the received syntax elements to determine a prediction mode (e.g., intra- or inter-prediction) used to encode the video blocks of the video segment, an inter-prediction segment type (e.g., B segment, P segment, or GPB segment), construction information for one or more of the reference picture lists for the segment, motion vectors for each inter-coded video block of the segment, inter-prediction status for each inter-coded video block of the segment, and other information to decode the video blocks in the current video segment. The same or similar may apply to or by embodiments using groups of tiles (e.g., video tile groups) and/or tiles (e.g., video tiles) in addition to or alternatively to segments (e.g., video segments), for example, a video may be encoded using groups of tiles and/or I, P, or B tiles.
Las realizaciones del decodificador 30 de vídeo como se muestra en la fig. 3 pueden configurarse para dividir en particiones y/o decodificar la imagen utilizando segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse o decodificarse utilizando uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU). Embodiments of the video decoder 30 as shown in FIG. 3 may be configured to partition and/or decode the image using segments (also referred to as video segments), wherein an image may be partitioned or decoded using one or more (typically non-overlapping) segments, and each segment may comprise one or more blocks (e.g., CTUs).
Las realizaciones del decodificador 30 de vídeo como se muestra en la fig. 3 pueden configurarse para dividir en particiones y/o decodificar la imagen utilizando grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen puede dividirse en particiones o decodificarse utilizando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o en fracciones. Embodiments of the video decoder 30 as shown in FIG. 3 may be configured to partition and/or decode the image using groups of tiles (also referred to as video tile groups) and/or tiles (also referred to as video tiles), wherein an image may be partitioned or decoded using one or more groups of tiles (typically non-overlapping), and each group of tiles may comprise, for example, one or more blocks (e.g., CTUs) or one or more tiles, wherein each tile may, for example, be rectangular in shape and may comprise one or more blocks (e.g., CTUs), for example, whole blocks or in fractions.
Se pueden utilizar otras variaciones del decodificador 30 de vídeo para decodificar los datos 21 de imagen codificada. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad 320 de filtrado en bucle. Por ejemplo, un decodificador 30 sin transformada puede invertir, cuantificar la señal residual directamente sin la unidad 312 de procesamiento de transformada inversa para ciertos bloques o tramas. En otra implementación, el decodificador 30 de vídeo puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa combinadas en una sola unidad. Other variations of the video decoder 30 may be used to decode the encoded image data 21. For example, the decoder 30 may produce the output video stream without the loop filtering unit 320. For example, a transform-less decoder 30 may invert, quantize the residual signal directly without the inverse transform processing unit 312 for certain blocks or frames. In another implementation, the video decoder 30 may have the inverse quantization unit 310 and the inverse transform processing unit 312 combined into a single unit.
Debería comprenderse que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de una etapa actual puede procesarse adicionalmente y, a continuación, enviarse a la siguiente etapa. Por ejemplo, después del filtrado de interpolación, la derivación del vector de movimiento o el filtrado en bucle, se puede realizar una operación adicional, tal como recortar o desplazar, sobre el resultado del procesamiento del filtrado de interpolación, la derivación del vector de movimiento o el filtrado en bucle. It should be understood that, in the encoder 20 and the decoder 30, a processing result of a current stage may be further processed and then sent to the next stage. For example, after interpolation filtering, motion vector derivation, or loop filtering, a further operation, such as cropping or shifting, may be performed on the processing result of the interpolation filtering, motion vector derivation, or loop filtering.
Debería observarse que se pueden aplicar operaciones adicionales a los vectores de movimiento derivados del bloque actual (incluidos, entre otros, los vectores de movimiento puntuales del modo afín, los vectores de movimiento de sub-bloques en los modos afín, plano, ATMVP, vectores de movimiento temporal, etc.). Por ejemplo, el valor del vector de movimiento está restringido a un intervalo predefinido según su bit de representación. Si el bit de representación del vector de movimiento es bitDepth, entonces el intervalo es -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, donde “A” significa exponenciación. Por ejemplo, si bitDepth se establece en 16, el intervalo es -32768 ~ 32767; si bitDepth se establece en 18, el intervalo es -131072 ~ 131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro sub-bloques 4x4 dentro de un bloque 8x8) está restringido de tal manera que la diferencia máxima entre las partes enteras de los cuatro sub-bloques 4x4 MV no sea más de N píxeles, tal como no más de 1 píxel. Aquí se proporcionan dos métodos para restringir el vector de movimiento según el bitDepth. It should be noted that additional operations can be applied to motion vectors derived from the current block (including but not limited to affine mode pointwise motion vectors, affine, planar, ATMVP mode sub-block motion vectors, temporal motion vectors, etc.). For example, the value of the motion vector is restricted to a predefined range according to its representation bit. If the representation bit of the motion vector is bitDepth, then the range is -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, where "A" means exponentiation. For example, if bitDepth is set to 16, the range is -32768 ~ 32767; If bitDepth is set to 18, the range is -131072~131071. For example, the value of the derived motion vector (e.g., the MVs of four 4x4 sub-blocks within an 8x8 block) is restricted such that the maximum difference between the integer parts of the four 4x4 sub-blocks MVs is no more than N pixels, such as no more than 1 pixel. Two methods are provided here to restrict the motion vector according to the bitDepth.
Método 1: eliminar el MSB sobrante (bit más significativo) mediante operaciones de flujo Method 1: Remove the leftover MSB (most significant bit) using stream operations
ux= (mvx+2bitDepth) % 2bitDepth (1) ux= (mvx+2bitDepth) % 2bitDepth (1)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (2) mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (2)
uy= (mvy+2bitDepth) % 2bitDepth (3) uy= (mvy+2bitDepth) % 2bitDepth (3)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy (4) mvy = (oops >= 2bitDepth-1) ? (oops - 2bitDepth) : oops (4)
donde mvx es un componente horizontal de un vector de movimiento de un bloque o un sub-bloque de imagen, mvy es un componente vertical de un vector de movimiento de un bloque o un sub-bloque de imagen, y ux y uy indican un valor intermedio; where mvx is a horizontal component of a motion vector of a block or an image sub-block, mvy is a vertical component of a motion vector of a block or an image sub-block, and ux and uy indicate an intermediate value;
Por ejemplo, si el valor de mvx es -32769, después de aplicar la fórmula (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales se almacenan como complemento a dos. El complemento a dos de -32769 es 1,0111,1111,1111,1111 (17 bits), a continuación, se descarta el MSB, por lo que el complemento a dos resultantes es 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo como salida aplicando la fórmula (1) y (2). For example, if the value of mvx is -32769, then after applying formula (1) and (2), the resulting value is 32767. In computer system, decimal numbers are stored as two's complement. The two's complement of -32769 is 1,0111,1111,1111,1111 (17 bits), then MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal number is 32767), which is the same as output by applying formula (1) and (2).
ux= (mvpx mvdx 2bitDepth) % 2bitDepth (5) ux= (mvpx mvdx 2bitDepth) % 2bitDepth (5)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (6) mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (6)
uy= (mvpy mvdy 2bitDepth) % 2bitDepth (7) uy= (mvpy mvdy 2bitDepth) % 2bitDepth (7)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy (8) mvy = (oops >= 2bitDepth-1) ? (oops - 2bitDepth) : oops (8)
Las operaciones se pueden aplicar durante la suma de mvp y mvd, como se muestra en la fórmula (5) a (8). Método 2: eliminar el MSB sobrante recortando el valor The operations can be applied during the addition of mvp and mvd, as shown in formula (5) to (8). Method 2: Remove the excess MSB by trimming the value
vx = Clip3(-2bitDepth_1, 2bitDepth'1 -1, vx) vx = Clip3(-2bitDepth_1, 2bitDepth'1 -1, vx)
vy = Clip3(-2bitDepth_1, 2bitDepth'1 -1, vy) vy = Clip3(-2bitDepth_1, 2bitDepth'1 -1, vy)
donde vx es un componente horizontal de un vector de movimiento de un bloque o sub-bloque de imagen, vy es un componente vertical de un vector de movimiento de un bloque o sub-bloque de imagen; x, y, y z corresponden respectivamente a tres valores de entrada del proceso de recorte de MV, y la definición de la función Clip3 es la siguiente: where vx is a horizontal component of a motion vector of an image block or sub-block, vy is a vertical component of a motion vector of an image block or sub-block; x, y, and z respectively correspond to three input values of the MV clipping process, and the definition of the Clip3 function is as follows:
x ; z < xx ; z < x
y ; z > yand ; z > y
Clip3(x, y, z) =<z de otro modo>Clip3(x, y, z) = <z otherwise>
La fig. 4 es un diagrama esquemático de un dispositivo 400 de codificación de vídeo según una forma de realización de la descripción. El dispositivo 400 de codificación de vídeo es adecuado para implementar las realizaciones descritas como se describe en la presente memoria. En una realización, el dispositivo 400 de codificación de vídeo puede ser un decodificador tal como el decodificador 30 de vídeo de la fig. 1A o un codificador, tal como el codificador 20 de vídeo de la fig. 1A. Fig. 4 is a schematic diagram of a video encoding device 400 according to one embodiment of the disclosure. The video encoding device 400 is suitable for implementing the disclosed embodiments as described herein. In one embodiment, the video encoding device 400 may be a decoder such as the video decoder 30 of Fig. 1A or an encoder, such as the video encoder 20 of Fig. 1A.
El dispositivo 400 de codificación de vídeo comprende puertos 410 de acceso (o puertos 410 de entrada) y unidades 420 receptoras (Rx) para recibir datos; un procesador, una unidad lógica o una unidad central de procesamiento (CPU) 430 para procesar los datos; unidades 440 transmisoras (Tx) y puertos 450 de salida (o puertos 450 de salida) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo 400 de codificación de vídeo también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 410 de acceso, las unidades 420 receptoras, las unidades 440 transmisoras y los puertos 450 de salida para salida o entrada de señales ópticas o eléctricas. The video encoding device 400 comprises access ports 410 (or input ports 410) and receiver (Rx) units 420 for receiving data; a processor, logic unit, or central processing unit (CPU) 430 for processing the data; transmitter (Tx) units 440 and output ports 450 (or output ports 450) for transmitting the data; and a memory 460 for storing the data. The video encoding device 400 may also comprise optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to the access ports 410, receiver units 420, transmitter units 440, and output ports 450 for outputting or inputting optical or electrical signals.
El procesador 430 se implementa mediante hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos 410 de acceso, las unidades 420 receptoras, las unidades 440 transmisoras, los puertos 450 de salida y la memoria 460. El procesador 430 comprende un módulo 470 de codificación. El módulo 470 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 470 de codificación implementa, procesa, prepara o proporciona las diversas operaciones de codificación. Por tanto, la inclusión del módulo 470 de codificación proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de vídeo y efectúa una transformación del dispositivo 400 de codificación de vídeo a un estado diferente. Alternativamente, el módulo 470 de codificación se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430. The processor 430 is implemented by hardware and software. The processor 430 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), FPGA, ASIC, and DSP. The processor 430 is in communication with access ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. The processor 430 comprises an encoding module 470. The encoding module 470 implements the embodiments described above. For example, the encoding module 470 implements, processes, prepares, or provides the various encoding operations. Thus, the inclusion of the encoding module 470 provides a substantial enhancement to the functionality of the video encoding device 400 and effects a transformation of the video encoding device 400 to a different state. Alternatively, the encoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y puede utilizarse como un dispositivo de almacenamiento de datos sobrantes, para almacenar programas cuando dichos programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que son leer durante la ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria de contenido direccionable (TCAM) y/o una memoria estática de acceso aleatorio (SRAM). Memory 460 may comprise one or more disk drives, tape drives, and solid state drives and may be used as a spare data storage device, for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution. Memory 460 may be, for example, volatile and/or nonvolatile and may be read-only memory (ROM), random access memory (RAM), ternary content addressable memory (TCAM), and/or static random access memory (SRAM).
La fig. 5 es un diagrama de bloques simplificado de un aparato 500 que puede utilizarse como uno o ambos del dispositivo 12 de origen y del dispositivo 14 de destino de la fig. 1 según una realización ejemplar. Fig. 5 is a simplified block diagram of an apparatus 500 that may be used as one or both of the source device 12 and the destination device 14 of Fig. 1 in accordance with an exemplary embodiment.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información existente ahora o desarrollada en el futuro. Aunque las implementaciones dadas a conocer se pueden poner en práctica con un solo procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia utilizando más de un procesador. A processor 502 in apparatus 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device, or multiple devices, capable of manipulating or processing information now existing or developed in the future. Although the disclosed implementations may be implemented with a single processor as shown, for example, processor 502, advantages in speed and efficiency may be achieved by using more than one processor.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de sólo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento puede utilizarse como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 utilizando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación, incluyendo los programas 510 de aplicación al menos un programa que permite al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas 510 de aplicación pueden incluir aplicaciones 1 a N, que además incluyen una aplicación de codificación de vídeo que realiza los métodos descritos aquí. A memory 504 in the apparatus 500 may be a read-only memory (ROM) device or a random access memory (RAM) device in one implementation. Any other suitable type of storage device may be used as memory 504. The memory 504 may include code and data 506 that is accessed by the processor 502 using a bus 512. The memory 504 may further include an operating system 508 and application programs 510, the application programs 510 including at least one program that enables the processor 502 to perform the methods described herein. For example, the application programs 510 may include applications 1 through N, further including a video encoding application that performs the methods described herein.
El aparato 500 también puede incluir uno o más dispositivos de salida, tales como un dispositivo 518 de visualización. El dispositivo 518 de visualización puede ser, en un ejemplo, un dispositivo de visualización sensible al tacto que combina un dispositivo de visualización con un elemento sensible al tacto que es operable para detectar entradas táctiles. El dispositivo 518 de visualización se puede acoplar al procesador 502 a través del bus 512. The apparatus 500 may also include one or more output devices, such as a display device 518. The display device 518 may be, in one example, a touch-sensitive display device that combines a display device with a touch-sensitive element that is operable to detect touch inputs. The display device 518 may be coupled to the processor 502 via bus 512.
Aunque se muestra aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento 514 secundario se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una única unidad integrada tal como una tarjeta de memoria o varias unidades como varias tarjetas de memoria. Por tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones. Although shown here as a single bus, the bus 512 of the apparatus 500 may be comprised of multiple buses. In addition, the secondary storage 514 may be directly coupled to the other components of the apparatus 500 or may be accessed over a network and may comprise a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thus, the apparatus 500 may be implemented in a wide variety of configurations.
La intrapredicción direccional es una técnica bien conocida que incluye la propagación de los valores de las muestras contiguas en el bloque predicho según lo especificado por la dirección de predicción. La fig. 6 ilustra las 93 direcciones de predicción, donde las direcciones discontinuas están asociadas con los modos de gran angular que solo se aplican a bloques no cuadrados. Directional intraprediction is a well-known technique that involves propagating the values of neighboring samples in the predicted block as specified by the prediction direction. Fig. 6 illustrates the 93 prediction directions, where the dashed directions are associated with wide-angle modes that only apply to non-square blocks.
La dirección podría especificarse mediante el aumento de un desplazamiento entre la posición de la muestra predicha y la de referencia. La mayor magnitud de este aumento corresponde a un mayor sesgo de la dirección de predicción. La tabla 1 especifica la tabla de asignación entre predModeIntra y el parámetro de ángulo intraPredAngle. Este parámetro es de hecho el aumento de este desplazamiento por fila (o por columna) especificado en la resolución de muestra 1/32. The direction could be specified by increasing an offset between the predicted sample position and the reference position. The larger magnitude of this increase corresponds to a larger bias of the prediction direction. Table 1 specifies the mapping table between predModeIntra and the angle parameter intraPredAngle. This parameter is in fact the increase of this offset per row (or per column) specified at the sample resolution 1/32.
Tabla 1 - Especificación de intraPredAngle Table 1 - intraPredAngle specification
Los modos de gran angular se pueden identificar por el valor absoluto de intraPredAngle mayor de 32 (1 muestra), que corresponde a la pendiente de la dirección de predicción mayor de 45 grados. Wide-angle modes can be identified by the absolute value of intraPredAngle greater than 32 (1 sample), which corresponds to the slope of the prediction direction greater than 45 degrees.
Las muestras predichas (“predSamples”) se pueden obtener de las muestras contiguas “p” como se describe a continuación: Predicted samples (“predSamples”) can be obtained from the neighboring samples “p” as described below:
Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- Si predModeIntra es mayor que o igual a 34, aplican las siguientes etapas ordenadas: - If predModeIntra is greater than or equal to 34, the following ordered stages apply:
1. La matriz de muestra de referencia ref[x] se especifica como sigue: 1. The reference sample array ref[x] is specified as follows:
- Lo siguiente aplica: - The following applies:
ref[x] = p[-1 - refIdx x][-1 - refIdx], con x = 0..nTbW refIdx ref[x] = p[-1 - refIdx x][-1 - refIdx], with x = 0..nTbW refIdx
- Si intraPredAngle es menor que 0, la matriz de muestra de referencia principal se amplía como sigue: - Cuando (nTbH * intraPredAngle) >> 5 es menor que -1, - If intraPredAngle is less than 0, the main reference sample array is extended as follows: - When (nTbH * intraPredAngle) >> 5 is less than -1,
ref[x] = p[-1 - refIdx][-1 - refIdx ((x * invAngle 128) >> 8)], ref[x] = p[-1 - refIdx][-1 - refIdx ((x * invAngle 128) >> 8)],
con x = -1..(nTbH * intraPredAngle) >> 5 with x = -1..(nTbH * intraPredAngle) >> 5
ref[((nTbH * intraPredAngle) >> 5) - 1] = ref[(nTbH * intraPredAngle) >> 5] ref[((nTbH * intraPredAngle) >> 5) - 1] = ref[(nTbH * intraPredAngle) >> 5]
ref[nTbW 1 refIdx] = ref[nTbW refIdx] ref[nTbW 1 refIdx] = ref[nTbW refIdx]
- De lo contrario, - Otherwise,
ref[x] = p[-1 - refIdx x][-1 - refIdx], con x = nTbW 1 refIdx..refW refIdx ref[x] = p[-1 - refIdx x][-1 - refIdx], with x = nTbW 1 refIdx..refW refIdx
ref[-1] = ref[0] ref[-1] = ref[0]
- Las muestras adicionales ref[refW refldx x] con x = 1..(Max(1, nTbW/nTbH) * refldx 1) se derivan como sigue: - The additional samples ref[refW refldx x] with x = 1..(Max(1, nTbW/nTbH) * refldx 1) are derived as follows:
ref[refW refIdx x] = p[-1 refW][-1 - refIdx] ref[refW refIdx x] = p[-1 refW][-1 - refIdx]
2. Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: 2. The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan como sigue: - The index variable iIdx and the multiplication factor iFact are derived as follows:
iIdx = ((y 1 refIdx) * intraPredAngle) >> 5 refIdx iIdx = ((y 1 refIdx) * intraPredAngle) >> 5 refIdx
iFact = ((y 1 refIdx) * intraPredAngle) & 31 iFact = ((y 1 refIdx) * intraPredAngle) & 31
- Si cIdx es igual a 0, se aplica lo siguiente: - If cIdx is equal to 0, the following applies:
- Los coeficientes de filtro de interpolación fT[j] con j = 0..3 se derivan como sigue: - The interpolation filter coefficients fT[j] with j = 0..3 are derived as follows:
fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j] fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - The value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y] = C lip1Y(((£f=gfT[i ] * r e f [ s ildx-H i ]) 32) » 6) predSamples[x][y] = C lip1Y(((£f=gfT[i ] * r e f [ s ildx-H i ]) 32) » 6)
- De lo contrario (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = - If iFact is not equal to 0, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] =
((32 - iFact) * ref[x iIdx 1] iFact * ref[x iIdx 2] 16) >> 5 ((32 - iFact) * ref[x iIdx 1] iFact * ref[x iIdx 2] 16) >> 5
- De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = ref[x iIdx 1] - Otherwise, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] = ref[x iIdx 1]
- De lo contrario (predModeIntra es menor que 34), las siguientes etapas ordenadas aplican: - Otherwise (predModeIntra is less than 34), the following ordered stages apply:
1. La matriz de muestra de referencia ref[x] se especifica como sigue: 1. The reference sample array ref[x] is specified as follows:
- Se aplica lo siguiente: - The following applies:
ref[x] = p[-1 - refIdx][-1 - refIdx x], con x = 0..nTbH refIdx ref[x] = p[-1 - refIdx][-1 - refIdx x], with x = 0..nTbH refIdx
- Si intraPredAngle es menor que 0, la matriz de muestra de referencia principal se amplía como sigue: - Cuando (nTbW * intraPredAngle) >> 5 es menor que -1, - If intraPredAngle is less than 0, the main reference sample array is extended as follows: - When (nTbW * intraPredAngle) >> 5 is less than -1,
ref[x] = p[-1 - refIdx ((x * invAngle 128) >> 8)][-1 - refIdx], ref[x] = p[-1 - refIdx ((x * invAngle 128) >> 8)][-1 - refIdx],
con x = -1..(nTbW * intraPredAngle) >> 5 with x = -1..(nTbW * intraPredAngle) >> 5
ref[((nTbW * intraPredAngle) >> 5) - 1] = ref[((nTbW * intraPredAngle) >> 5) - 1] =
ref[(nTbW * intraPredAngle) >> 5] (8-145) ref[(nTbW * intraPredAngle) >> 5] (8-145)
ref[nTbG 1 refIdx] = ref[nTbH refIdx] ref[nTbG 1 refIdx] = ref[nTbH refIdx]
- De lo contrario, - Otherwise,
ref[x] = p[-1 - refIdx][-1 - refIdx x], con x = nTbH 1 refIdx..refH refIdx ref[x] = p[-1 - refIdx][-1 - refIdx x], with x = nTbH 1 refIdx..refH refIdx
ref[-1] = ref[0] ref[-1] = ref[0]
- Las muestras adicionales ref[refH refldx x] con x = 1..(Max(1, nTbW/nTbH) * refldx 1) se derivan como sigue: - The additional samples ref[refH refldx x] with x = 1..(Max(1, nTbW/nTbH) * refldx 1) are derived as follows:
ref[refH refIdx x] = p[-1 refH][-1 - refIdx] ref[refH refIdx x] = p[-1 refH][-1 - refIdx]
2. Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: 2. The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan como sigue: - The index variable iIdx and the multiplication factor iFact are derived as follows:
iIdx = ((x 1 refIdx) * intraPredAngle) >> 5 iIdx = ((x 1 refIdx) * intraPredAngle) >> 5
iFact = ((x 1 refIdx) * intraPredAngle) & 31 iFact = ((x 1 refIdx) * intraPredAngle) & 31
- Si cIdx es igual a 0, se aplica lo siguiente: - If cIdx is equal to 0, the following applies:
- Los coeficientes de filtro de interpolación fT[j] con j = 0..3 se derivan como sigue: - The interpolation filter coefficients fT[j] with j = 0..3 are derived as follows:
fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j] fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - The value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y] = CMp1Y(((2f=afT [ i ] * re f[> ild x-H i ]) 32) » 6) predSamples[x][y] = CMp1Y(((2f=afT [ i ] * re f[> ild x-H i ]) 32) » 6)
- De lo contrario (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = - If iFact is not equal to 0, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] =
((32 - iFact) * ref[y iIdx 1] iFact * ref[y iIdx 2] 16) >> 5 ((32 - iFact) * ref[y iIdx 1] iFact * ref[y iIdx 2] 16) >> 5
- De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = ref[y iIdx 1] - Otherwise, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] = ref[y iIdx 1]
La señalización de los modos de intrapredicción para los componentes de luma y croma se podría realizar de tal manera que el modo de intrapredicción de croma se deriva del modo de intrapredicción de luma: The signaling of the intraprediction modes for the luma and chroma components could be done in such a way that the chroma intraprediction mode is derived from the luma intraprediction mode:
El modo de intrapredicción de croma IntraPredModeC[xCb ][ yCb ] se deriva utilizando intra_chroma_pred_mode[ xCb ][ yCb ] e IntraPredModeY[ xCb cbWidth / 2 ][ yCb cbHeight / 2 ] como se ha especificado en la tabla 2 y en la tabla 3. The chroma intraprediction mode IntraPredModeC[xCb ][ yCb ] is derived using intra_chroma_pred_mode[ xCb ][ yCb ] and IntraPredModeY[ xCb cbWidth / 2 ][ yCb cbHeight / 2 ] as specified in Table 2 and Table 3 .
Tabla 2 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 0 Table 2 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag is equal to 0
Tabla 3 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 1 Table 3 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag is equal to 1
El parámetro “intra_chroma_pred_mode” se señaliza dentro de un flujo de bits. A partir de la tabla 2 y la tabla 3 se puede observar que en ciertos casos (indicados por “X ”), el modo de intrapredicción para el componente de croma (IntraPredModeC) se establece igual al modo de intrapredicción especificado para el bloque de luma ubicados de manera simultánea. The parameter “intra_chroma_pred_mode” is signaled within a bitstream. From Table 2 and Table 3 it can be observed that in certain cases (indicated by “X ”), the intra prediction mode for the chroma component (IntraPredModeC) is set equal to the intra prediction mode specified for the simultaneously located luma block.
El formato de croma determina la precedencia y el submuestreo de las matrices de croma, como se muestra en la fig. 7. En el muestreo monocromático, solo hay una matriz de muestras, que nominalmente se considera la matriz de luma. The chroma format determines the precedence and subsampling of the chroma matrices, as shown in Fig. 7. In monochrome sampling, there is only one sample matrix, which is nominally considered the luma matrix.
En el muestreo 4:2:0, cada una de las dos matrices de croma tiene la mitad de la altura y la mitad de la anchura de la matriz de luma. In 4:2:0 sampling, each of the two chroma matrices is half the height and half the width of the luma matrix.
En el muestreo 4:2:2, cada una de las dos matrices de croma tiene la misma altura y la mitad de la anchura de la matriz de luma. In 4:2:2 sampling, each of the two chroma matrices has the same height and is half the width of the luma matrix.
Esta solución proporciona la misma dirección de intrapredicción para predecir muestras de crominancia que se especifica para muestras de luma. Sin embargo, cuando la relación de submuestreo de croma en dirección horizontal no es igual a la relación de submuestreo de croma en dirección vertical, las direcciones de intrapredicción para croma se verán afectadas por el submuestreo, lo que dará como resultado una asignación diferente del modo de intrapredicción al ángulo de la dirección de intrapredicción. Para compensar este efecto, en las extensiones de intervalo de HM se ha propuesto realizar una etapa de asignación de modo, es decir, realizar una búsqueda de la tabla de consulta dedicada (LUT) para el modo de intrapredicción de luma correspondiente (IntraPredModeY) y utilizar el valor de búsqueda para el modo de intrapredicción de croma (IntraPredModeC). La tabla 4 proporciona esta LUT para el conjunto de modos especificados en el estándar HEVC. This solution provides the same intra prediction direction for predicting chrominance samples as is specified for luma samples. However, when the chroma subsampling ratio in horizontal direction is not equal to the chroma subsampling ratio in vertical direction, the intra prediction directions for chroma will be affected by subsampling, resulting in a different mapping of the intra prediction mode to the angle of the intra prediction direction. To compensate for this effect, it has been proposed in HM range extensions to perform a mode mapping step, i.e. to perform a lookup of the dedicated look-up table (LUT) for the corresponding luma intra prediction mode (IntraPredModeY) and use the lookup value for the chroma intra prediction mode (IntraPredModeC). Table 4 provides this LUT for the set of modes specified in the HEVC standard.
Tabla 4 - Especificación de la LUT para la asignación del modo de intrapredicción para formato de croma 4:2:2 Table 4 - LUT specification for intra prediction mode assignment for 4:2:2 chroma format
En el borrador 4 de la especificación VVC en el proceso de intrapredicción, el índice del modo de intrapredicción (intraPredMode) se modifica según la relación de aspecto como sigue: In draft 4 of the VVC specification in the intra prediction process, the intra prediction mode index (intraPredMode) is modified according to the aspect ratio as follows:
Las variables nW y nH se derivan como sigue: The variables nW and nH are derived as follows:
- Si IntraSubPartitionsSplitType es igual a ISP_N O _SPLIT o cIdx no es igual a 0, se aplica lo siguiente: nW = nTbW - If IntraSubPartitionsSplitType is equal to ISP_N OR _SPLIT or cIdx is not equal to 0, the following applies: nW = nTbW
nH = nTbH nH = nTbH
- De lo contrario (IntraSubPartitionsSplitType no es igual a ISP_N O _SPLIT y cldx es igual a 0), se aplica lo siguiente: - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_N OR _SPLIT and cldx is equal to 0), the following applies:
nW = nCbW nW = nCbW
nH = nCbH nH = nCbH
La variable whRatio se establece igual a Abs(Log2(nW/nH)). The variable whRatio is set equal to Abs(Log2(nW/nH)).
La variable wideAngle se establece igual a 0. The wideAngle variable is set equal to 0.
Para bloques no cuadrados (nW no es igual a nH), el modo de intrapredicción predModeIntra se modifica como sigue: For non-square blocks (nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows:
- Si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra 65). - If all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra 65).
- nW es mayor que nH - nW is greater than nH
- predModeIntra es mayor que o igual a 2 - predModeIntra is greater than or equal to 2
- predModeIntra es menor que (whRatio > 1) ? (8 2 * whRatio) : 8 - predModeIntra is less than (whRatio > 1) ? (8 2 * whRatio) : 8
- De lo contrario, si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra - 67). - Otherwise, if all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra - 67).
- nH es mayor que nW - nH is greater than nW
- predModeIntra es menor que o igual a 66 - predModeIntra is less than or equal to 66
- predModeIntra es mayor que (whRatio > 1) ? (60 - 2 * whRatio) : 60 - predModeIntra is greater than (whRatio > 1) ? (60 - 2 * whRatio) : 60
El proceso de modificación del modo de intrapredicción (predModeIntra) con respecto a la relación de aspecto (whRatio) descrita anteriormente se denominaría además “asignación de gran angular”. The process of modifying the intra prediction mode (predModeIntra) with respect to the aspect ratio (whRatio) described above would also be called “wide angle mapping”.
Si se aplica el enfoque de última generación, la dirección de intrapredicción para las muestras de croma puede ser opuesta a la dirección especificada para las muestras de luma ubicadas de manera simultánea, porque las condiciones para los bloques de luma y croma serían diferentes debido al submuestreo de croma horizontal como se especifica para el formato de croma YUV 4:2:2. Las realizaciones de la invención proponen considerar conjuntamente la relación de aspecto del bloque y el formato de submuestreo de croma cuando se utiliza el modo de intrapredicción luma para la intrapredicción de croma. If the state-of-the-art approach is applied, the intra prediction direction for chroma samples may be opposite to the direction specified for simultaneously located luma samples, because the conditions for luma and chroma blocks would be different due to horizontal chroma subsampling as specified for YUV 4:2:2 chroma format. Embodiments of the invention propose to jointly consider the block aspect ratio and the chroma subsampling format when using the luma intra prediction mode for chroma intra prediction.
La presente descripción proporciona varios métodos para resolver este problema. Un método introduce la operación de recorte para garantizar que la intrapredicción direccional de luma y croma utilice el mismo lado del bloque. Otro método incluye la modificación del proceso de asignación de gran angular para garantizar que el modo de predicción de croma resultante tenga el mismo ángulo de la dirección asignada. Como se desprende de la descripción anterior, estas direcciones no coinciden. (“(PredModeIntra - 67)” y “(predModeIntra 65)”). This description provides several methods to solve this problem. One method introduces the cropping operation to ensure that the directional intra prediction of luma and chroma uses the same side of the block. Another method involves modifying the wide angle assignment process to ensure that the resulting chroma prediction mode has the same angle of the assigned direction. As can be seen from the above description, these directions do not match. (“(PredModeIntra - 67)” and “(predModeIntra 65)”).
El tercer método según las realizaciones de esta invención incluye el ajuste de los parámetros de entrada para el proceso de asignación de gran angular. Específicamente, se propone utilizar una relación de aspecto de luma en lugar de una de croma. Además, el parámetro intraPredAngle se desplaza hacia la izquierda o hacia la derecha para compensar el efecto del submuestreo de croma. The third method according to embodiments of this invention includes adjusting the input parameters for the wide angle mapping process. Specifically, it is proposed to use a luma aspect ratio instead of a chroma aspect ratio. In addition, the intraPredAngle parameter is shifted left or right to compensate for the effect of chroma subsampling.
Alternativamente, para el conjunto de modos de intrapredicción de luma señalizados dados en el borrador de la especificación VVC (que están en el intervalo de 0..66), se podría utilizar la siguiente tabla de consulta (Tabla 5). Alternatively, for the set of signaled luma intraprediction modes given in the draft VVC specification (which are in the range 0..66), the following lookup table (Table 5) could be used.
Una de las posibles soluciones incluye aplicar la LUT especificada en la tabla 5 al valor del modo de intrapredicción de luma (IntraPredModeY) y utilizar el modo obtenido como un modo de intrapredicción de entrada (IntraPredModeC) del proceso de intrapredicción direccional para el bloque de croma, que comprende: One of the possible solutions includes applying the LUT specified in Table 5 to the luma intraprediction mode value (IntraPredModeY) and using the obtained mode as an input intraprediction mode (IntraPredModeC) of the directional intraprediction process for the chroma block, which comprises:
- asignación de gran angular de IntraPredModeC - IntraPredModeC wide angle assignment
- derivación de la matriz de muestra de referencia (“ref”) y el parámetro intraPredAngle - derivation of the reference sample matrix (“ref”) and the intraPredAngle parameter
- obtención de los valores de las muestras de croma predichas utilizando muestras de referencia determinadas anteriormente (“ref”) y el parámetro intraPredAngle. - obtaining the values of the predicted chroma samples using previously determined reference samples (“ref”) and the intraPredAngle parameter.
Este enfoque funciona bien si cuando el modo de intrapredicción de luma (IntraPredModeY) no es un modo de gran angular. Como se muestra en la fig. 9, las muestras de croma y luma predichas en las mismas posiciones espaciales “A” utilizarían muestras de referencia que también se encuentran en las mismas posiciones espaciales. Este método también funciona en el caso que se muestra en la fig. 11, porque especifica el recorte de la dirección de intrapredicción de croma de salida en el ángulo de 45 grados (modo 2). Este recorte se implementa especificando el mismo valor para un conjunto de entradas en la LUT (por favor, observe las entradas IntraPredModeY = 2 .. 8). This approach works well if the luma intra prediction mode (IntraPredModeY) is not a wide angle mode. As shown in Fig. 9, the chroma and luma samples predicted at the same spatial positions “A” would use reference samples which are also at the same spatial positions. This method also works in the case shown in Fig. 11, because it specifies clipping the output chroma intra prediction direction at the angle of 45 degrees (mode 2). This clipping is implemented by specifying the same value for a set of inputs in the LUT (please note the entries IntraPredModeY = 2.. 8).
Otra realización de la invención incluye la modificación del proceso de asignación de gran angular para el caso en el que se realiza la etapa de “asignación de gran angular de IntraPredModeC”. Another embodiment of the invention includes modifying the wide angle allocation process for the case where the “IntraPredModeC wide angle allocation” step is performed.
La siguiente descripción especifica la dependencia adicional del proceso de asignación de gran angular de si la dirección asignada se realiza para la intrapredicción de croma para el formato de croma especificando diferentes proporciones de submuestreo en direcciones horizontal y vertical (indicadas además como “SubWidthC” y “SubHeightC”, respectivamente): The following description specifies the additional dependency of the wide angle mapping process on whether the mapped direction is performed for chroma intra prediction for the chroma format by specifying different subsampling ratios in horizontal and vertical directions (further indicated as “SubWidthC” and “SubHeightC”, respectively):
Las variables nW y nH se derivan como sigue: The variables nW and nH are derived as follows:
- Si IntraSubPartitionsSplitType es igual a ISP_N O _SPLIT o cIdx no es igual a 0, se aplica lo siguiente: nW = nTbW - If IntraSubPartitionsSplitType is equal to ISP_N OR _SPLIT or cIdx is not equal to 0, the following applies: nW = nTbW
nH = nTbH nH = nTbH
- De lo contrario (IntraSubPartitionsSplitType no es igual a ISP_N O _SPLIT y cIdx es igual a 0), se aplica lo siguiente: - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_N OR _SPLIT and cIdx is equal to 0), the following applies:
nW = nCbW nW = nCbW
nH = nCbH nH = nCbH
Si SubWidthC no es igual a SubHeightC, el valor de la variable modeDelta se establece como (cIdx==0?0:1), de lo contrario modeDelta se establece como 0. If SubWidthC is not equal to SubHeightC, the value of the variable modeDelta is set to (cIdx==0?0:1), otherwise modeDelta is set to 0.
La variable whRatio se establece igual a Abs(Log2(nW/nH)). The variable whRatio is set equal to Abs(Log2(nW/nH)).
La variable wideAngle se establece igual a 0. The wideAngle variable is set equal to 0.
Para bloques no cuadrados (nW no es igual a nH), el modo de intrapredicción predModeIntra se modifica como sigue: For non-square blocks (nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows:
- Si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra 65 modeDelta). - If all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra 65 modeDelta).
- nW es mayor que nH - nW is greater than nH
- predModeIntra es mayor que o igual a 2 - predModeIntra is greater than or equal to 2
- predModeIntra es menor que (whRatio > 1) ? (8 2 * whRatio) : 8 - predModeIntra is less than (whRatio > 1) ? (8 2 * whRatio) : 8
- De lo contrario, si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra - 67 modeDelta). - Otherwise, if all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra - 67 modeDelta).
- nH es mayor que nW - nH is greater than nW
- predModeIntra es menor que o igual a 66 - predModeIntra is less than or equal to 66
- predModeIntra es mayor que (whRatio > 1) ? (60 - 2 * whRatio) : 60 - predModeIntra is greater than (whRatio > 1) ? (60 - 2 * whRatio) : 60
Sin embargo, los enfoques descritos anteriormente pueden dar como resultado direcciones opuestas de los modos de intrapredicción de luma y croma en caso de que el modo de intrapredicción de luma (IntraPredModeY) corresponda a la dirección de gran angular. La fig. 8 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción de gran angular e IntraPredModeC es un modo de intrapredicción de ángulo sin gran angular. El ejemplo del caso en el que el modo de intrapredicción esperado (como se muestra en la fig. 8) no se produce mediante el método dado a conocer anteriormente. La fig. 9 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo de intrapredicción sin gran angular. La fig. 10 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo de intrapredicción de gran angular. El ejemplo del caso (como se muestra en la fig. 10) cuando el modo de intrapredicción de luma de entrada sin gran angular (IntraPredModeY) produce el modo de intrapredicción de croma de gran angular (IntraPredModeC). La fig. 11 muestra un ejemplo del caso en el que IntraPredModeC se deriva de IntraPredModeY utilizando el recorte del modo de predicción y donde IntraPredModeY es un modo de intrapredicción sin gran angular e IntraPredModeC es un modo de intrapredicción sin gran angular. However, the above-described approaches may result in opposite directions of the luma and chroma intraprediction modes in case the luma intraprediction mode (IntraPredModeY) corresponds to the wide-angle direction. Fig. 8 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode. The example of the case where the expected intraprediction mode (as shown in Fig. 8) is not produced by the above-disclosed method. Fig. 9 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode. Fig. 10 shows an example of the case where IntraPredModeC is derived from IntraPredModeY where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a wide-angle intraprediction mode. The example of the case (as shown in Fig. 10) when the input luma intraprediction mode without wide-angle (IntraPredModeY) produces the wide-angle chroma intraprediction mode (IntraPredModeC). Fig. 11 shows an example of the case where IntraPredModeC is derived from IntraPredModeY using prediction mode clipping and where IntraPredModeY is a non-wide-angle intraprediction mode and IntraPredModeC is a non-wide-angle intraprediction mode.
- Una realización ejemplar que especifica el método (“Método 3”) que se muestra en la fig. 8 y en la fig. 10 podría describirse en forma de las siguientes etapas cuando el formato de croma se define como YUV 4:2:2 y el modo de intrapredicción de luma de entrada (IntraPredModeY) es direccional (es decir, no es igual a DC y no es igual a un PLANO): asignación de gran angular de (IntraPredModeY) utilizando la relación de aspecto de un bloque de luma que da como resultado IntraPredModeFinalY; - An exemplary embodiment specifying the method (“Method 3”) shown in Fig. 8 and Fig. 10 could be described as the following steps when the chroma format is defined as YUV 4:2:2 and the input luma intra prediction mode (IntraPredModeY) is directional (i.e. not equal to DC and not equal to a PLANE): wide angle mapping (IntraPredModeY) using the aspect ratio of a luma block resulting in IntraPredModeFinalY;
- derivación de la matriz de muestra de referencia (“ref”) y el parámetro intraPredAngle para el bloque de croma utilizando el modo de predicción de entrada IntraPredModeFinalY, que comprende los siguientes etapas: - derivation of the reference sample matrix (“ref”) and the intraPredAngle parameter for the chroma block using the input prediction mode IntraPredModeFinalY, which comprises the following steps:
- en caso de que IntraPredModeFinalY no sea menor que 34, el parámetro intraPredAngle se redefine de la siguiente manera: - in case IntraPredModeFinalY is not less than 34, the intraPredAngle parameter is redefined as follows:
intraPredAngle = intraPredAngle >>1 intraPredAngle = intraPredAngle >>1
- de lo contrario, el parámetro intraPredAngle se redefine como sigue - otherwise the intraPredAngle parameter is redefined as follows
intraPredAngle = intraPredAngle <<1 intraPredAngle = intraPredAngle <<1
- obtención de los valores de muestras de croma predichas utilizando muestras de referencia determinadas anteriormente (“ref”) y el parámetro intraPredAngle. - obtaining the values of predicted chroma samples using previously determined reference samples (“ref”) and the intraPredAngle parameter.
Alternativamente, en vez de la operación “intraPredAngle = intraPredAngle >>1” se puede utilizar otra implementación de división por 2, tal como: “intraPredAngle = sign(intraPredAngle) * ((Abs(intraPredAngle)+1) >>1)” o “intraPredAngle = intraPredAngle/2”. Alternatively, instead of the operation “intraPredAngle = intraPredAngle >>1” another implementation of division by 2 can be used, such as: “intraPredAngle = sign(intraPredAngle) * ((Abs(intraPredAngle)+1) >>1)” or “intraPredAngle = intraPredAngle/2”.
También se podría aplicar una combinación de ambos métodos. Una realización comprendería las siguientes etapas para un modo de intrapredicción de luma de entrada (IntraPredModeY) que es direccional (es decir, no es igual a DC y no es igual a un PLANO): A combination of both methods could also be applied. One embodiment would comprise the following steps for an input luma intraprediction mode (IntraPredModeY) that is directional (i.e. not equal to DC and not equal to a PLANE):
- si IntraPredModeY no es menor de 18 ni mayor de 50, se aplican las siguientes etapas - if IntraPredModeY is not less than 18 nor more than 50, the following steps apply
o obtención de la LUT (por ejemplo, como se especifica en la tabla 5) utilizando el valor clave del modo de intrapredicción de luma (IntraPredModeY) que da como resultado el modo de intrapredicción de entrada de croma (IntraPredModeC) or obtaining the LUT (e.g. as specified in Table 5) using the luma intra prediction mode (IntraPredModeY) key value which results in the chroma input intra prediction mode (IntraPredModeC)
o asignación de gran angular de IntraPredModeC or IntraPredModeC wide angle assignment
o derivación de la matriz de muestra de referencia (“ref”) y el parámetro intraPredAngle or derivation of the reference sample matrix (“ref”) and the intraPredAngle parameter
o obtención de los valores de las muestras de croma predichas utilizando muestras de referencia determinadas (“ref”) anteriormente y el parámetro intraPredAngle. or obtaining the values of the predicted chroma samples using previously determined reference samples (“ref”) and the intraPredAngle parameter.
- De lo contrario, realizar las etapas especificadas en la descripción del “Método 3”. - Otherwise, perform the steps specified in the description of “Method 3”.
Una realización de la invención también podría representarse de la siguiente forma: An embodiment of the invention could also be represented as follows:
8.4.3 Proceso de derivación para el modo de intrapredicción de croma 8.4.3 Derivation process for chroma intra prediction mode
Las entradas a este proceso son: The inputs to this process are:
- una ubicación de luma (xCb, yCb) que especifica la muestra superior izquierda del bloque de codificación de croma actual en relación con la muestra de luma superior izquierda de la imagen actual, - a luma location (xCb, yCb) that specifies the top-left sample of the current chroma encoding block relative to the top-left luma sample of the current image,
- una variable cbWidth que especifica la anchura del bloque de codificación actual en muestras de luma, - una variable cbHeight que especifica la altura del bloque de codificación actual en muestras de luma. En este proceso, se deriva el modo de intrapredicción de croma IntraPredModeC [xCb] [yCb]. - a cbWidth variable specifying the width of the current coding block in luma samples, - a cbHeight variable specifying the height of the current coding block in luma samples. In this process, the chroma intra prediction mode IntraPredModeC[xCb][yCb] is derived.
El modo de intrapredicción de croma IntraPredModeC[xCb][yCb] se deriva utilizando intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] como se especifica en la tabla 8-2 y en la tabla 8-3. The chroma intraprediction mode IntraPredModeC[xCb][yCb] is derived using intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] as specified in Table 8-2 and Table 8-3.
El modo de intrapredicción de croma IntraPredModeC[xCb][yCb] se deriva utilizando el proceso map422. The chroma intra prediction mode IntraPredModeC[xCb][yCb] is derived using the map422 process.
Tabla 8-2 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 0 Table 8-2 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag equals 0
Tabla 8-3 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 1 Table 8-3 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag equals 1
En el proceso de asignación, map422() del modo de intrapredicción de salida Y se deriva del modo de intrapredicción de entrada X como sigue: In the mapping process, map422() of output intra prediction mode Y is derived from input intra prediction mode X as follows:
- El modo de intrapredicción de salida Y se establece igual al modo de intrapredicción de entrada X si una de las siguientes condiciones es verdadera: - The output intraprediction mode Y is set equal to the input intraprediction mode X if one of the following conditions is true:
- SubWidthC es igual a SubHeightC, - SubWidthC is equal to SubHeightC,
- X es menor que 2, - X is less than 2,
- X es mayor que 66 - X is greater than 66
- De lo contrario, el modo de intrapredicción Y se establece igual al valor según la tabla de consulta definida en la Tabla 8-4. - Otherwise, the intraprediction mode Y is set equal to the value according to the lookup table defined in Table 8-4.
Tabla 8-4 - Especificación de la tabla de consulta para el proceso de asignación del mapa 422 () Table 8-4 - Lookup table specification for the 422 map assignment process ()
Otra realización de la invención también podría representarse de la siguiente forma: Another embodiment of the invention could also be represented as follows:
8.4.3 Proceso de derivación para el modo de intrapredicción de croma 8.4.3 Derivation process for chroma intra prediction mode
Las entradas a este proceso son: The inputs to this process are:
- una ubicación de luma (xCb, yCb) que especifica la muestra superior izquierda del bloque de codificación de croma actual en relación con la muestra de luma superior izquierda de la imagen actual, - a luma location (xCb, yCb) that specifies the top-left sample of the current chroma encoding block relative to the top-left luma sample of the current image,
- una variable cbWidth que especifica la anchura del bloque de codificación actual en muestras de luma, - una variable cbHeight que especifica la altura del bloque de codificación actual en muestras de luma. En este proceso, se deriva el modo de intrapredicción de croma IntraPredModeC [xCb] [yCb]. - a cbWidth variable specifying the width of the current coding block in luma samples, - a cbHeight variable specifying the height of the current coding block in luma samples. In this process, the chroma intra prediction mode IntraPredModeC[xCb][yCb] is derived.
El modo de intrapredicción de croma IntraPredModeC[xCb][yCb] se deriva utilizando intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] como se especifica en la Tabla 8-2 y en la Tabla 8-3. The chroma intraprediction mode IntraPredModeC[xCb][yCb] is derived using intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] as specified in Table 8-2 and Table 8-3.
El modo de intrapredicción de croma IntraPredModeC[xCb][yCb] se deriva utilizando el proceso map422. The chroma intra prediction mode IntraPredModeC[xCb][yCb] is derived using the map422 process.
Tabla 8-2 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb+ cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 0 Table 8-2 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb+ cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag equals 0
Tabla 8-3 - Especificación de IntraPredModeC[xCb][yCb] dependiendo de intra_chroma_pred_mode[xCb][yCb] e IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] cuando sps_cclm_enabled_flag es igual a 1 Table 8-3 - IntraPredModeC[xCb][yCb] specification depending on intra_chroma_pred_mode[xCb][yCb] and IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2] when sps_cclm_enabled_flag equals 1
En el proceso de asignación, map422() del modo de intrapredicción de salida Y se deriva del modo de intrapredicción de entrada X como sigue: In the mapping process, map422() of output intra prediction mode Y is derived from input intra prediction mode X as follows:
- El modo de intrapredicción de salida Y se establece igual un modo de intrapredicción de entrada X si una de las siguientes condiciones es verdadera: - The output intraprediction mode Y is set equal to an input intraprediction mode X if one of the following conditions is true:
- SubWidthC es igual a SubHeightC, - SubWidthC is equal to SubHeightC,
- X es menor que 2, - X is less than 2,
- X es mayor que 66 - X is greater than 66
- De lo contrario, el modo de intrapredicción Y se establece igual al valor según la tabla de consulta definida en la Tabla 8-4. - Otherwise, the intraprediction mode Y is set equal to the value according to the lookup table defined in Table 8-4.
La variable nW se establece igual a cbWidth, la variable nH se establece igual a cbHeight. La variable whRatio se establece igual a Abs(Log2(nW/nH)). The variable nW is set equal to cbWidth, the variable nH is set equal to cbHeight. The variable whRatio is set equal to Abs(Log2(nW/nH)).
Para bloques no cuadrados (nW no es igual a nH), el recorte del modo de intrapredicción de salida Y se realiza como sigue: For non-square blocks (nW is not equal to nH), the output intraprediction mode Y clipping is performed as follows:
- Si todas las siguientes condiciones son verdaderas, Y se establece igual a ((whRatio > 1) ? (8 2 * whRatio) : 8): - If all of the following conditions are true, Y is set equal to ((whRatio > 1) ? (8 2 * whRatio) : 8):
- nW es mayor que nH - nW is greater than nH
- Y es mayor que o igual a 2 - And it is greater than or equal to 2
- Y es menor que (whRatio > 1) ? (8 2 * whRatio) : 8 - And is it less than (whRatio > 1) ? (8 2 * whRatio) : 8
- De lo contrario, si todas las siguientes condiciones son verdaderas, Y se establece igual a ((whRatio > 1) ? (60 - 2 * whRatio) : 60): - Otherwise, if all of the following conditions are true, AND is set equal to ((whRatio > 1) ? (60 - 2 * whRatio) : 60):
- nH es mayor que nW - nH is greater than nW
- Y es menor que o igual a 66 - And it is less than or equal to 66
- Y es mayor que (whRatio > 1) ? (60 - 2 * whRatio) : 60 - And is it greater than (whRatio > 1) ? (60 - 2 * whRatio) : 60
Tabla 8-4 - Especificación de la tabla de consulta para el proceso de asignación del mapa 422() Table 8-4 - Lookup table specification for the 422() map assignment process
Un método de ajuste del parámetro intraPredAngle también podría implementarse de la siguiente forma: A method for setting the intraPredAngle parameter could also be implemented as follows:
8.4.4.2.7Especificación de modos de intrapredicción INTRA_ANGULAR2..INTRA_ANGULAR66 8.4.4.2.7Specification of intra-prediction modes INTRA_ANGULAR2..INTRA_ANGULAR66
Las entradas a este proceso son: The inputs to this process are:
- el modo de intrapredicción predModeIntra, - the intraprediction mode predModeIntra,
- una variable refIdx que especifica el índice de la línea de referencia de intrapredicción, - a refIdx variable specifying the index of the intraprediction reference line,
- una variable nTbW que especifica la anchura del bloque de transformada, - an nTbW variable specifying the width of the transform block,
- una variable nTbH que especifica la altura del bloque de transformada, - a nTbH variable specifying the height of the transform block,
- una variable refW que especifica la anchura de las muestras de referencia, - a refW variable specifying the width of the reference samples,
- una variable refH que especifica la altura de las muestras de referencia, - a refH variable specifying the height of the reference samples,
- una variable nCbW que especifica la anchura del bloque de codificación, - an nCbW variable specifying the width of the coding block,
- una variable nCbH que especifica la altura del bloque de codificación, - an nCbH variable specifying the height of the coding block,
- una variable cIdx que especifica el componente de color del bloque actual, - a cIdx variable that specifies the color component of the current block,
- las muestras contiguas p[x][y], con x = -1 - refIdx, y = -1 - refIdx..refH - 1 y x = -refIdx..refW - 1, y = -1 -refIdx. - the adjacent samples p[x][y], with x = -1 - refIdx, y = -1 - refIdx..refH - 1 and x = -refIdx..refW - 1, y = -1 -refIdx.
Las salidas de este proceso son el modo de intrapredicción modificado predModeIntra y las muestras predichas predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1. The outputs of this process are the modified intra prediction mode predModeIntra and the predicted samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1.
La variable nTbS se establece igual a (Log2 (nTbW) Log2 (nTbH)) >> 1. The variable nTbS is set equal to (Log2(nTbW) Log2(nTbH)) >> 1.
Las variables nW y nH se derivan como sigue: The variables nW and nH are derived as follows:
- Si IntraSubPartitionsSplitType es igual a ISP_N O _SPLIT o cIdx no es igual a 0, se aplica lo siguiente: nW = nTbW - If IntraSubPartitionsSplitType is equal to ISP_N OR _SPLIT or cIdx is not equal to 0, the following applies: nW = nTbW
nH = nTbH nH = nTbH
- De lo contrario (IntraSubPartitionsSplitType no es igual a ISP_N O _SPLIT y cldx es igual a 0), se aplica lo siguiente: - Otherwise (IntraSubPartitionsSplitType is not equal to ISP_N OR _SPLIT and cldx is equal to 0), the following applies:
nW = nCbW nW = nCbW
nH = nCbH nH = nCbH
La variable whRatio se establece igual a Abs(Log2(nW/nH)). The variable whRatio is set equal to Abs(Log2(nW/nH)).
Si cIdx no es igual a 0 y subWidthC es mayor que subHeightC, whRatio se incrementa en 1. If cIdx is not equal to 0 and subWidthC is greater than subHeightC, whRatio is incremented by 1.
La variable wideAngle se establece igual a 0. The wideAngle variable is set equal to 0.
Para bloques no cuadrados (nW no es igual a nH), el modo de intrapredicción predModeIntra se modifica como sigue: For non-square blocks (nW is not equal to nH), the intra prediction mode predModeIntra is modified as follows:
- Si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra 65). - If all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra 65).
- nW es mayor que nH - nW is greater than nH
- predModeIntra es mayor que o igual a 2 - predModeIntra is greater than or equal to 2
- predModeIntra es menor que (whRatio > 1) ? (8 2 * whRatio) : 8 - predModeIntra is less than (whRatio > 1) ? (8 2 * whRatio) : 8
- De lo contrario, si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra - 67). - Otherwise, if all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra - 67).
- nH es mayor que nW - nH is greater than nW
- predModeIntra es menor que o igual a 66 - predModeIntra is less than or equal to 66
- predModeIntra es mayor que (whRatio > 1) ? (60 - 2 * whRatio) : 60 - predModeIntra is greater than (whRatio > 1) ? (60 - 2 * whRatio) : 60
La variable filterFlag se deriva como sigue: The filterFlag variable is derived as follows:
- Si una o más de las siguientes condiciones son verdaderas, filterFlag se establece igual a 0. - If one or more of the following conditions are true, filterFlag is set equal to 0.
- predModeIntra es igual a INTRA_ANGULAR2, INTRA_ANGULAR34 o INTRA_ANGULAR66 - predModeIntra is equal to INTRA_ANGULAR2, INTRA_ANGULAR34 or INTRA_ANGULAR66
- refIdx no es igual a 0 - refIdx is not equal to 0
- IntraSubPartitionsSplitType no es igual a ISP_N O _SPLIT y cIdx es igual a 0 y predModeIntra es mayor que o igual a INTRA_ANG<u>L<a r>34 y nW es mayor que 8 - IntraSubPartitionsSplitType is not equal to ISP_N O _SPLIT and cIdx is equal to 0 and predModeIntra is greater than or equal to INTRA_ANG<u>L<a r>34 and nW is greater than 8
- IntraSubPartitionsSplitType no es igual a ISP_N O _SPLIT y cIdx es igual a 0 y predModeIntra es menor que INTRA_ANGULAR34 y nH es mayor que 8. - IntraSubPartitionsSplitType is not equal to ISP_N OR _SPLIT and cIdx is equal to 0 and predModeIntra is less than INTRA_ANGULAR34 and nH is greater than 8.
- De lo contrario, aplica lo siguiente: - Otherwise, the following applies:
- La variable minDistVerHor se establece igual a Min(Abs(predModeIntra - 50), Abs(predModeIntra - 18)). - La variable intraHorVerDistThres[nTbS] se especifica en la Tabla 8-4. - The variable minDistVerHor is set equal to Min(Abs(predModeIntra - 50), Abs(predModeIntra - 18)). - The variable intraHorVerDistThres[nTbS] is specified in Table 8-4.
- La variable filterFlag se deriva como sigue: - The filterFlag variable is derived as follows:
- Si minDistVerHor es mayor que intraHorVerDistThres[nTbS] o wideAngle es igual a 1, filterFlag se establece igual a 1. - If minDistVerHor is greater than intraHorVerDistThres[nTbS] or wideAngle is equal to 1, filterFlag is set equal to 1.
- De lo contrario, filterFlag se establece igual a 0. - Otherwise, filterFlag is set equal to 0.
Tabla 8-4 - Especificación de intraHorVerDistThres[nTbS] para varios tamaños de bloques de transformación nTbS Table 8-4 - intraHorVerDistThres[nTbS] specification for various nTbS transform block sizes
| intraHorVerDistThres[nTbS] |16_________| J 4 __________\_2___________ |_0___________ |_0_____________ |_0____________ | La fig. 6 ilustra las 93 direcciones de predicción, donde las direcciones discontinuas están asociadas con los modos de gran angular que solo se aplican a bloques no cuadrados. | intraHorVerDistThres[nTbS] |16_________| J 4 __________\_2___________ |_0___________ |_0_____________ |_0____________ | Fig. 6 illustrates the 93 prediction directions, where the dashed directions are associated with wide-angle modes that only apply to non-square blocks.
La tabla 8-5 especifica la tabla de asignación entre predModeIntra y el parámetro de ángulo intraPredAngle. Table 8-5 specifies the mapping table between predModeIntra and the angle parameter intraPredAngle.
Si cldx no es igual a 0, y subWidthC es mayor que subHeightC se aplica lo siguiente: If cldx is not equal to 0, and subWidthC is greater than subHeightC, the following applies:
- Si predModeIntra es mayor que o igual a 34, intraPredAngle se establece igual a intraPredAngle >> 1 - De lo contrario, intraPredAngle se establece igual a intraPredAngle << 1 - If predModeIntra is greater than or equal to 34, intraPredAngle is set equal to intraPredAngle >> 1 - Otherwise, intraPredAngle is set equal to intraPredAngle << 1
El parámetro de ángulo inverso invAngle se deriva basándose en intraPredAngle como sigue: The inverse angle parameter invAngle is derived based on intraPredAngle as follows:
/ 256*32 \ / 256*32 \
invAngle = RedondoMntiaPrsdAngW invAngle = RoundMntiaPrsdAngW
Los coeficientes del filtro de interpolación fC[phase][j] y fG[phase][j] con phase = 0..31 y j = 0..3 se especifican en la tabla 8-6. The interpolation filter coefficients fC[phase][j] and fG[phase][j] with phase = 0..31 and j = 0..3 are specified in Table 8-6.
Tabla 8-6 - Especificación de coeficientes del filtro de interpolación fC y fG Table 8-6 - Specification of interpolation filter coefficients fC and fG
Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- Si predModeIntra es mayor que o igual a 34, aplican las siguientes etapas ordenadas: - If predModeIntra is greater than or equal to 34, the following ordered stages apply:
3. La matriz de muestra de referencia ref[x] se especifica como sigue: 3. The reference sample array ref[x] is specified as follows:
- Se aplica lo siguiente: - The following applies:
ref[x] = p[-1 - refIdx x][-1 - refIdx], con x = 0..nTbW refIdx ref[x] = p[-1 - refIdx x][-1 - refIdx], with x = 0..nTbW refIdx
- Si intraPredAngle es menor que 0, la matriz de muestra de referencia principal se amplía como sigue: - Cuando (nTbH * intraPredAngle) >> 5 es menor que -1, - If intraPredAngle is less than 0, the main reference sample array is extended as follows: - When (nTbH * intraPredAngle) >> 5 is less than -1,
ref[x] = p[-1 - refIdx][-1 - refIdx ((x * invAngle 128) >> 8)], ref[x] = p[-1 - refIdx][-1 - refIdx ((x * invAngle 128) >> 8)],
con x = -1..(nTbH * intraPredAngle) >> 5 with x = -1..(nTbH * intraPredAngle) >> 5
ref[((nTbH * intraPredAngle) >> 5) - 1] = ref[(nTbH * intraPredAngle) >> 5] ref[((nTbH * intraPredAngle) >> 5) - 1] = ref[(nTbH * intraPredAngle) >> 5]
ref[nTbW 1 refIdx] = ref[nTbW refIdx] ref[nTbW 1 refIdx] = ref[nTbW refIdx]
- De lo contrario, - Otherwise,
ref[x] = p[-1 - refIdx x][-1 - refIdx], con x = nTbW 1 refIdx..refW refIdx ref[x] = p[-1 - refIdx x][-1 - refIdx], with x = nTbW 1 refIdx..refW refIdx
ref[-1] = ref[0] ref[-1] = ref[0]
- Las muestras adicionales ref[refW refIdx x] con x = 1..(Max(1, nTbW/nTbH) * refIdx 1) se derivan como sigue: - The additional samples ref[refW refIdx x] with x = 1..(Max(1, nTbW/nTbH) * refIdx 1) are derived as follows:
ref[refW refIdx x] = p[-1 refW][-1 - refIdx] ref[refW refIdx x] = p[-1 refW][-1 - refIdx]
4. Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: 4. The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan como sigue: - The index variable iIdx and the multiplication factor iFact are derived as follows:
iIdx = ((y 1 refIdx) * intraPredAngle) >> 5 refIdx iIdx = ((y 1 refIdx) * intraPredAngle) >> 5 refIdx
iFact = ((y 1 refIdx) * intraPredAngle) & 31 iFact = ((y 1 refIdx) * intraPredAngle) & 31
- Si cIdx es igual a 0, se aplica lo siguiente: - If cIdx is equal to 0, the following applies:
- Los coeficientes del filtro de interpolación fT[j] con j = 0..3 se derivan como sigue: - The coefficients of the interpolation filter fT[j] with j = 0..3 are derived as follows:
fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j] fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - The value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y]=CliplY(((Sf=ftfT[I ] *r e f [ s+ ildx+- i ])32)» 6) predSamples[x][y]=CliplY(((Sf=ftfT[I ] *r e f [ s+ ildx+- i ])32)» 6)
- De lo contrario (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = - If iFact is not equal to 0, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] =
((32 - iFact) * ref[x iIdx 1] iFact * ref[x iIdx 2] 16) >> 5 ((32 - iFact) * ref[x iIdx 1] iFact * ref[x iIdx 2] 16) >> 5
- De lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: predSamples[x][y] = ref[x iIdx 1] - Otherwise, the value of the prediction samples predSamples[x][y] is derived as follows: predSamples[x][y] = ref[x iIdx 1]
- De lo contrario (predModeIntra es menor que 34), se aplican las siguientes etapas ordenadas: - Otherwise (predModeIntra is less than 34), the following ordered steps apply:
3. La matriz de muestra de referencia ref[x] se especifica como sigue: 3. The reference sample array ref[x] is specified as follows:
- Se aplica lo siguiente: - The following applies:
ref[x] = p[-1 - refIdx][-1 - refIdx x], con x = 0..nTbH refIdx ref[x] = p[-1 - refIdx][-1 - refIdx x], with x = 0..nTbH refIdx
- Si intraPredAngle es menor que 0, la matriz de muestra de referencia principal se amplía como sigue: - Cuando (nTbW * intraPredAngle) >> 5 es menor que -1, - If intraPredAngle is less than 0, the main reference sample array is extended as follows: - When (nTbW * intraPredAngle) >> 5 is less than -1,
ref[x] = p[-1 - refIdx ((x * invAngle 128) >> 8)][-1 - refIdx], ref[x] = p[-1 - refIdx ((x * invAngle 128) >> 8)][-1 - refIdx],
con x = -1..(nTbW * intraPredAngle) >> 5 with x = -1..(nTbW * intraPredAngle) >> 5
ref[((nTbW * intraPredAngle) >> 5) - 1] = ref[((nTbW * intraPredAngle) >> 5) - 1] =
ref[(nTbW * intraPredAngle) >> 5] (8-145) ref[(nTbW * intraPredAngle) >> 5] (8-145)
ref[nTbG 1 refIdx] = ref[nTbH refIdx] ref[nTbG 1 refIdx] = ref[nTbH refIdx]
- De lo contrario, - Otherwise,
ref[x] = p[-1 - refIdx][-1 - refIdx x], con x = nTbH 1 refIdx..refH refIdx ref[x] = p[-1 - refIdx][-1 - refIdx x], with x = nTbH 1 refIdx..refH refIdx
ref[-1] = ref[0] ref[-1] = ref[0]
- las muestras adicionales ref[refH refIdx x] con x = 1..(Max(1, nTbW/nTbH) * refIdx 1) se derivan como sigue: ref[refH refIdx x] = p[-1 refH][-1 - refIdx] - the additional samples ref[refH refIdx x] with x = 1..(Max(1, nTbW/nTbH) * refIdx 1) are derived as follows: ref[refH refIdx x] = p[-1 refH][-1 - refIdx]
4. Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan como sigue: 4. The values of the prediction samples predSamples[x][y], with x = 0..nTbW - 1, y = 0..nTbH - 1 are derived as follows:
- la variable de índice iIdx y el factor de multiplicación iFact se derivan como sigue: - the index variable iIdx and the multiplication factor iFact are derived as follows:
iIdx = ((x 1 refIdx) * intraPredAngle) >> 5 iIdx = ((x 1 refIdx) * intraPredAngle) >> 5
iFact = ((x 1 refIdx) * intraPredAngle) & 31 iFact = ((x 1 refIdx) * intraPredAngle) & 31
- si cIdx es igual a 0, se aplica lo siguiente: - if cIdx is equal to 0, the following applies:
- los coeficientes del filtro de interpolación fT[j] con j = 0..3 se derivan como sigue: - the coefficients of the interpolation filter fT[j] with j = 0..3 are derived as follows:
fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j] fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j]
- el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - the value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y] = CMp1Y(((2f=afT [ i ] * re f[? -H iId s i ] ) 32) » 6) predSamples[x][y] = CMp1Y(((2f=afT [ i ] * re f[? -H iId s i ] ) 32) » 6)
- de lo contrario (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - otherwise (cIdx is not equal to 0), depending on the value of iFact, the following applies:
- Si iFact no es igual a 0, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - If iFact is not equal to 0, the value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y] = predSamples[x][y] =
((32 - iFact) * ref[y iIdx 1] iFact * ref[y iIdx 2] 16) >> 5 ((32 - iFact) * ref[y iIdx 1] iFact * ref[y iIdx 2] 16) >> 5
- de lo contrario, el valor de las muestras de predicción predSamples[x][y] se deriva como sigue: - otherwise, the value of the prediction samples predSamples[x][y] is derived as follows:
predSamples[x][y] = ref[y iIdx 1] predSamples[x][y] = ref[y iIdx 1]
En particular, los siguientes métodos y realizaciones de codificación de predicción de un bloque actual implementados por un dispositivo de decodificación o codificación. El dispositivo de decodificación puede ser el decodificador 30 de vídeo de la fig. 1A, o el decodificador 30 de la fig. 3. El dispositivo de codificación puede ser el codificador 20 de vídeo de la fig. 1A o el codificador 20 de la fig. 2. In particular, the following methods and embodiments of predictive coding of a current block implemented by a decoding or encoding device. The decoding device may be the video decoder 30 of FIG. 1A, or the decoder 30 of FIG. 3. The encoding device may be the video encoder 20 of FIG. 1A or the encoder 20 of FIG. 2.
Según una realización 1200 (véase la fig. 12A), cuando el valor de idc_chrom_format indica formato de croma 4:2:2, un modo de intrapredicción de croma (intraPredModeC) 1203 se deriva de una tabla de consulta (LUT) 1202 utilizando un modo de intrapredicción inicial del componente de croma. El valor del modo de intrapredicción inicial del componente de croma puede ser igual al valor del modo de intrapredicción de luma intraPredModeY. La tabla 2, la tabla 3, la tabla 8-2 o la tabla 8-3 dan un ejemplo entre el valor del modo de intrapredicción inicial del componente de croma intra_chroma_pred_mode [xCb] [yCb] y el valor del modo de intrapredicción de luma intraPredModeY IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2]. According to one embodiment 1200 (see FIG. 12A ), when the value of idc_chrom_format indicates 4:2:2 chroma format, a chroma intra prediction mode (intraPredModeC) 1203 is derived from a look-up table (LUT) 1202 using an initial intra prediction mode of the chroma component. The value of the initial intra prediction mode of the chroma component may be equal to the value of the luma intra prediction mode intraPredModeY. Table 2, Table 3, Table 8-2 or Table 8-3 give an example between the initial intra prediction mode value of chroma component intra_chroma_pred_mode[xCb][yCb] and the luma intra prediction mode value intraPredModeY IntraPredModeY[xCb cbWidth/2][yCb cbHeight/2].
El ejemplo de la tabla de consulta 1202 es la tabla 5 o la tabla 8-4. La tabla de consulta incluye 67 entradas, con índice 0-66. The example for lookup table 1202 is table 5 or table 8-4. The lookup table includes 67 entries, with index 0-66.
Después de realizar la asignación 1204 de gran angular en el modo 1203 de intrapredicción de croma, se obtiene un modo de intrapredicción de croma modificado. Se obtiene un parámetro 1205 intraPredAngle basado en el modo de intrapredicción de croma modificado. Por ejemplo, utilizando el modo de intrapredicción de croma modificado como predModeIntra, se obtiene intraPredAngle 1205 de la tabla 1. Las muestras predichas del componente de croma se obtienen realizando la intrapredicción1206 direccional de croma basada en el parámetro intraPredAngle. After performing wide-angle assignment 1204 in chroma intra prediction mode 1203, a modified chroma intra prediction mode is obtained. A parameter 1205 intraPredAngle is obtained based on the modified chroma intra prediction mode. For example, using modified chroma intra prediction mode as predModeIntra, intraPredAngle 1205 is obtained from Table 1. The predicted samples of chroma component are obtained by performing directional chroma intra prediction1206 based on the parameter intraPredAngle.
Según un ejemplo 1210 que no es parte de la invención (véase la fig. 12B), la asignación 1212 de gran angular se realiza en el modo 1211 de intrapredicción de luma intraPredModeY para obtener un intraPredModeY modificado. Cuando el valor de idc_chrom_format indica formato de croma 4:2:2, un modo 1214 de intrapredicción de croma (intraPredModeC) se deriva de una tabla de consulta (LUT) 1213 utilizando el intraPredModeY modificado. La tabla de consulta 1213 puede tener 95 entradas, con índice 0-94. According to an example 1210 not part of the invention (see FIG. 12B ), the wide angle assignment 1212 is performed in the luma intra prediction mode 1211 intraPredModeY to obtain a modified intraPredModeY. When the value of idc_chrom_format indicates 4:2:2 chroma format, a chroma intra prediction mode 1214 (intraPredModeC) is derived from a look-up table (LUT) 1213 using the modified intraPredModeY. The look-up table 1213 may have 95 entries, with index 0-94.
Se obtiene un parámetro 1215 intraPredAngle basado en el modo 1214 de intrapredicción de croma. Por ejemplo, al utilizar el modo de intrapredicción de croma como el predModeIntra, se obtiene intraPredAngle 1215 de la tabla 1. Las muestras predichas del componente de croma se obtienen realizando la intrapredicción 1216 direccional de croma basada en el parámetro intraPredAngle. A 1215 intraPredAngle parameter is obtained based on the chroma intra prediction mode. For example, by using the chroma intra prediction mode as the predModeIntra, intraPredAngle is obtained from Table 1. The predicted samples of the chroma component are obtained by performing directional chroma intra prediction based on the intraPredAngle parameter.
La realización 1300 incluye las siguientes etapas: etapa 1301, el dispositivo obtiene el valor de un modo de intrapredicción de luma (intraPredModeY). Por ejemplo, el dispositivo obtiene el valor de intraPredModeY analizando un flujo de bits. Etapa 1302, el dispositivo obtiene el modo de intrapredicción inicial del componente de croma (IntraPredModeC) basado en el valor del modo de intrapredicción de luma (intraPredModeY), por ejemplo, basado en la tabla 2, tabla 3, tabla 8-2 o tabla 8-3. Etapa 1303, el dispositivo deriva un modo de intrapredicción de croma (intraPredModeC) a partir de una tabla de consulta (LUT) utilizando el modo de intrapredicción inicial del componente de croma (intraPredModeC) cuando el formato de croma es 4:2:2. En el ejemplo de la tabla 8-4, el modo de intrapredicción inicial del componente de croma es el modo X, un modo de intrapredicción de croma (intraPredModeC) es el modo Y. Eso significa que el intraPredModeC original se ajusta para obtener el intraPredModeC. Embodiment 1300 includes the following steps: Step 1301, the device obtains the value of a luma intra prediction mode (intraPredModeY). For example, the device obtains the value of intraPredModeY by analyzing a bitstream. Step 1302, the device obtains the initial chroma component intra prediction mode (IntraPredModeC) based on the value of the luma intra prediction mode (intraPredModeY), for example, based on Table 2, Table 3, Table 8-2, or Table 8-3. Step 1303, the device derives a chroma intra prediction mode (intraPredModeC) from a look-up table (LUT) using the initial chroma component intra prediction mode (intraPredModeC) when the chroma aspect ratio is 4:2:2. In the example in Table 8-4, the initial intra prediction mode of the chroma component is mode X, a chroma intra prediction mode (intraPredModeC) is mode Y. That means the original intraPredModeC is adjusted to get the intraPredModeC.
La etapa 1304 incluye realizar una asignación de gran angular en el modo de intrapredicción de croma (intraPredModeC) para obtener un intraPredModeC modificado. Como se ha descrito anteriormente, la asignación de gran angular se incluye para bloques no cuadrados (nW no es igual a nH): Step 1304 includes performing a wide-angle mapping in the intra chroma prediction mode (intraPredModeC) to obtain a modified intraPredModeC. As described above, wide-angle mapping is included for non-square blocks (nW is not equal to nH):
Si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra 65): If all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra 65):
nW es mayor que nH nW is greater than nH
predModeIntra es mayor que o igual a 2 predModeIntra is greater than or equal to 2
predModeIntra es menor que (whRatio > 1) ? (8 2 * whRatio) : 8 predModeIntra is less than (whRatio > 1) ? (8 2 * whRatio) : 8
De lo contrario, si todas las siguientes condiciones son verdaderas, wideAngle se establece igual a 1 y predModeIntra se establece igual a (predModeIntra - 67): Otherwise, if all of the following conditions are true, wideAngle is set equal to 1 and predModeIntra is set equal to (predModeIntra - 67):
nH es mayor que nW nH is greater than nW
predModeIntra es menor que o igual a 66 predModeIntra is less than or equal to 66
predModeIntra es mayor que (whRatio > 1) ? (60 - 2 * whRatio) : 60 predModeIntra is greater than (whRatio > 1) ? (60 - 2 * whRatio) : 60
La etapa 1305 incluye la obtención de un parámetro intraPredAngle para el componente de croma basado en el intraPredModeC modificado. Por ejemplo, utilizando intraPredModeC modificado como predModeIntra, intraPredAngle 1215 se obtiene de la tabla 1. La etapa 1306 incluye la obtención de muestras predichas del componente de croma basándose en el parámetro intraPredAngle. Step 1305 includes obtaining an intraPredAngle parameter for the chroma component based on the modified intraPredModeC. For example, using modified intraPredModeC as the predModeIntra, intraPredAngle 1215 is obtained from Table 1. Step 1306 includes obtaining predicted samples of the chroma component based on the intraPredAngle parameter.
La información detallada de esta forma de realización 1300 se muestra en las realizaciones mencionadas anteriormente. Detailed information of this embodiment 1300 is shown in the above-mentioned embodiments.
La fig. 14 ilustra realizaciones de un dispositivo 1400. El dispositivo 1400 puede ser un decodificador 30 de vídeo de la fig. 1A, o un decodificador 30 de la fig. 3, o puede ser un codificador 20 de vídeo de la fig. 1A, o un codificador 20 de la fig. 2. El dispositivo 1400 puede utilizarse para implementar la forma de realización 1200, 1210, 1300 y las otras realizaciones descritas anteriormente. Fig. 14 illustrates embodiments of a device 1400. The device 1400 may be a video decoder 30 of Fig. 1A, or a decoder 30 of Fig. 3, or it may be a video encoder 20 of Fig. 1A, or an encoder 20 of Fig. 2. The device 1400 may be used to implement embodiment 1200, 1210, 1300, and the other embodiments described above.
El dispositivo de intrapredicción direccional para el componente de croma de una imagen, incluye una unidad 1401 de obtención, una unidad de derivación 1402 y una unidad 1403 de asignación. The directional intra prediction device for the chroma component of an image includes a obtaining unit 1401, a derivation unit 1402 and an assignment unit 1403.
La unidad 1401 de obtención, configurada para obtener un modo de intrapredicción inicial del componente de croma. La unidad 1402 de derivación, configurada para derivar un modo de intrapredicción de croma (intraPredModeC) a partir de una tabla de consulta (LUT) utilizando el modo de intrapredicción inicial del componente de croma, teniendo el componente de croma diferentes relaciones de submuestreo en direcciones horizontal y vertical. La unidad 1402 de derivación se puede utilizar para derivar el modo de intrapredicción de croma IntraPredModeC [xCb] [yCb] utilizando intra_chroma_pred_mode [xCb] [yCb] e IntraPredModeY [xCb cbWidth/2] [yCb cbHeight/2] como se especifica en la tabla 2 y tabla 83. The obtaining unit 1401, configured to obtain an initial intra prediction mode of the chroma component. The derivation unit 1402, configured to derive a chroma intra prediction mode (intraPredModeC) from a look-up table (LUT) using the initial intra prediction mode of the chroma component, the chroma component having different subsampling ratios in horizontal and vertical directions. The derivation unit 1402 may be used to derive the chroma intra prediction mode IntraPredModeC [xCb] [yCb] by using intra_chroma_pred_mode [xCb] [yCb] and IntraPredModeY [xCb cbWidth/2] [yCb cbHeight/2] as specified in Table 2 and Table 83.
La unidad 1403 de asignación, configurada para realizar asignación de gran angular en el modo de intrapredicción de croma (intraPredModeC) para obtener un intraPredModeC modificado. Como ejemplo, la unidad 1403 de asignación realiza la asignación de gran angular en un modo de intrapredicción original (predModeIntra) para obtener un predModeIntra modificado, donde el valor del predModeIntra original es igual al valor del modo de intrapredicción de croma (intraPredModeC). The mapping unit 1403, configured to perform wide-angle mapping in the chroma intra prediction mode (intraPredModeC) to obtain a modified intraPredModeC. As an example, the mapping unit 1403 performs wide-angle mapping in an original intra prediction mode (predModeIntra) to obtain a modified predModeIntra, where the value of the original predModeIntra is equal to the value of the chroma intra prediction mode (intraPredModeC).
La unidad 1401 de obtención, configurada además para obtener un parámetro intraPredAngle para el componente de croma, por ejemplo, de una tabla de asignación, basada en el intraPredModeC modificado; y obtener muestras predichas del componente de croma basándose en el parámetro intraPredAngle. The obtaining unit 1401, further configured to obtain an intraPredAngle parameter for the chroma component, for example, from a mapping table, based on the modified intraPredModeC; and obtain predicted samples of the chroma component based on the intraPredAngle parameter.
La unidad 1401 de obtención también puede configurarse para obtener el valor de un modo de intrapredicción de luma (intraPredModeY) a partir de un flujo de bits, y, a continuación, obtener el modo de intrapredicción inicial del componente de croma basándose en el valor del modo de intrapredicción de luma (intraPredModeY). The obtaining unit 1401 may also be configured to obtain the value of a luma intra prediction mode (intraPredModeY) from a bit stream, and then obtain the initial intra prediction mode of the chroma component based on the value of the luma intra prediction mode (intraPredModeY).
El proceso de derivación en modo de croma según el método propuesto está dotado de efectos beneficiosos en comparación con los enfoques convencionales. Uno de estos efectos es que las realizaciones de la invención proporcionan el número mínimo de entradas en la LUT que se utiliza para determinar el modo de intrapredicción de croma desde el modo de intrapredicción de luma inicial. Esto se logra mediante el orden de las etapas realizadas, es decir, mediante la asignación del modo de intrapredicción de crominancia al modo de luminancia que se realiza antes de la asignación de gran angular. Al aplicar LUT de croma a luma sin asignación de gran angular, es necesario especificar la asignación solo para la forma de bloque cuadrado, limitando así las entradas de LUT requeridas a 67. The chroma mode derivation process according to the proposed method is endowed with beneficial effects compared to conventional approaches. One of these effects is that embodiments of the invention provide the minimum number of entries in the LUT which is used to determine the chroma intra prediction mode from the initial luma intra prediction mode. This is achieved by the order of the steps performed, i.e. by the mapping of the chrominance intra prediction mode to the luminance mode which is performed before the wide angle mapping. When applying chroma to luma LUT without wide angle mapping, it is necessary to specify the mapping only for the square block shape, thus limiting the required LUT entries to 67.
Además, en un ejemplo que no forma parte de la invención reivindicada, la derivación del modo de crominancia no requiere obtener la forma del bloque de luminancia ubicado de manera simultánea. En el método convencional, la asignación de direcciones de intrapredicción de luminancia que es el resultado del proceso de asignación de gran angular requeriría considerar también la relación de aspecto del bloque de luminancia. La razón de esta dependencia es que el proceso de asignación de gran angular requiere información sobre la relación de aspecto del bloque para determinar el valor del modo de intrapredicción asignado. En las realizaciones de esta invención, la asignación de angular ancho no se realiza para el modo de intrapredicción de luminancia de entrada y, por lo tanto, el modo de intrapredicción de luminancia de entrada podría obtenerse mediante análisis sintáctico de flujo de bits. Dado que no se requiere manejar la estructura de división en particiones del componente de luminancia, la latencia de decodificación se mejora si se utiliza el orden sugerido de etapas. Furthermore, in an example not forming part of the claimed invention, the derivation of the chrominance mode does not require obtaining the shape of the simultaneously located luminance block. In the conventional method, the luminance intra prediction address assignment that is the result of the wide angle assignment process would require considering the aspect ratio of the luminance block as well. The reason for this dependency is that the wide angle assignment process requires information about the aspect ratio of the block to determine the value of the assigned intra prediction mode. In embodiments of this invention, the wide angle assignment is not performed for the input luminance intra prediction mode and therefore the input luminance intra prediction mode could be obtained by bitstream parsing. Since the partitioning structure of the luminance component is not required to be handled, the decoding latency is improved if the suggested order of steps is used.
A continuación, se ofrece una explicación de las aplicaciones del método de codificación, así como del método de decodificación como se muestra en las realizaciones mencionadas anteriormente, y un sistema que las utiliza. The following provides an explanation of the applications of the encoding method as well as the decoding method as shown in the above-mentioned embodiments, and a system using them.
La fig. 15 es un diagrama de bloques que muestra un sistema 3100 de suministro de contenido para realizar un servicio de distribución de contenido. Este sistema 3100 de suministro de contenido incluye el dispositivo 3102 de captura, el dispositivo 3106 terminal y opcionalmente incluye el dispositivo 3126 de visualización. El dispositivo 3102 de captura se comunica con el dispositivo 3106 terminal a través del enlace 3104 de comunicación. El enlace de comunicación puede incluir el canal 13 de comunicación descrito anteriormente. El enlace 3104 de comunicación incluye, entre otros, WIFI, Ethernet, cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares. 15 is a block diagram showing a content delivery system 3100 for performing a content distribution service. This content delivery system 3100 includes the capture device 3102, the terminal device 3106, and optionally includes the display device 3126. The capture device 3102 communicates with the terminal device 3106 via the communication link 3104. The communication link may include the communication channel 13 described above. The communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G/4G/5G), USB, or any combination thereof, or the like.
El dispositivo 3102 de captura genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo 3102 de captura puede distribuir los datos a un servidor de transmisión (no mostrado en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo 3106 terminal. El dispositivo 3102 de captura incluye, entre otros, una cámara, teléfono inteligente o Pad, ordenador u ordenador portátil, sistema de videoconferencia, PDA, dispositivo montado en un vehículo o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo 3102 de captura puede incluir el dispositivo 12 de origen como se ha descrito anteriormente. Cuando los datos incluyen vídeo, el codificador 20 de vídeo incluido en el dispositivo 3102 de captura puede realmente realizar el procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo 3102 de captura puede realizar realmente el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo 3102 de captura distribuye los datos de audio y vídeo codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo, en el sistema de vídeoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. El dispositivo 3102 de captura distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo 3106 terminal por separado. The capture device 3102 generates data and may encode the data by the encoding method as shown in the above embodiments. Alternatively, the capture device 3102 may distribute the data to a transmission server (not shown in the figures), and the server encodes the data and transmits the encoded data to the terminal device 3106. The capture device 3102 includes, but is not limited to, a camera, smartphone or Pad, computer or laptop, video conferencing system, PDA, vehicle-mounted device, or a combination of any of them, or the like. For example, the capture device 3102 may include the source device 12 as described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform the video encoding processing. When the data includes audio (i.e., voice), an audio encoder included in the capture device 3102 may actually perform the audio encoding processing. For some practical scenarios, the capture device 3102 distributes the encoded audio data and video data by multiplexing them together. For other practical scenarios, for example, in the video conference system, the encoded audio data and the encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.
En el sistema 3100 de suministro de contenido, el dispositivo 310 terminal recibe y reproduce los datos codificados. El dispositivo 3106 terminal podría ser un dispositivo con capacidad de recepción y recuperación de datos, como un teléfono inteligente o Pad 3108, ordenador u ordenador portátil 3110, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferencia 3118, sistema de vídeo vigilancia 3120, asistente digital personal (PDA) 3122, dispositivo montado en un vehículo 3124, o una combinación de cualquiera de ellos, o similar capaz de decodificar los datos codificados antes mencionados. Por ejemplo, el dispositivo 3106 terminal puede incluir el dispositivo 14 de destino como se ha descrito anteriormente. Cuando los datos codificados incluyen vídeo, se prioriza el decodificador 30 de vídeo incluido en el dispositivo terminal para realizar la decodificación de vídeo. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar el procesamiento de decodificación de audio. In content delivery system 3100, terminal device 310 receives and plays back the encoded data. Terminal device 3106 could be a device capable of receiving and retrieving data, such as a smartphone or Pad 3108, computer or laptop 3110, network video recorder (NVR)/digital video recorder (DVR) 3112, TV 3114, set-top box (STB) 3116, video conferencing system 3118, video surveillance system 3120, personal digital assistant (PDA) 3122, vehicle-mounted device 3124, or a combination of any of these, or the like capable of decoding the aforementioned encoded data. For example, terminal device 3106 may include destination device 14 as described above. When the encoded data includes video, the video decoder 30 included in the terminal device is prioritized to perform video decoding. When the encoded data includes audio, an audio decoder included in the terminal device is prioritized to perform audio decoding processing.
Para un dispositivo terminal con su dispositivo de visualización, por ejemplo, teléfono inteligente o Pad 3108, ordenador u ordenador portátil 3110, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, asistente digital personal (PDA) 3122 o vehículo dispositivo montado 3124, el dispositivo terminal puede alimentar los datos decodificados a su dispositivo de visualización. Para un dispositivo terminal equipado sin dispositivo de visualización, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de vídeo vigilancia 3120, se contacta con un dispositivo 3126 de visualización externa para recibir y mostrar los datos decodificados. For a terminal device with its display device, for example, smartphone or Pad 3108, computer or laptop 3110, network video recorder (NVR)/digital video recorder (DVR) 3112, TV 3114, personal digital assistant (PDA) 3122, or vehicle mounted device 3124, the terminal device may feed the decoded data to its display device. For a terminal device equipped without a display device, for example, STB 3116, video conferencing system 3118, or video surveillance system 3120, it contacts an external display device 3126 to receive and display the decoded data.
Cuando cada dispositivo de este sistema realiza la codificación o decodificación, se puede utilizar el dispositivo de codificación de imagen o el dispositivo de decodificación de imagen, como se muestra en las realizaciones mencionadas anteriormente. When each device of this system performs encoding or decoding, the image encoding device or the image decoding device may be used, as shown in the above-mentioned embodiments.
La fig. 16 es un diagrama que muestra una estructura de un ejemplo del dispositivo 3106 terminal. Después de que el dispositivo 3106 terminal reciba el flujo desde el dispositivo 3102 de captura, la unidad 3202 de procedimiento de protocolo analiza el protocolo de transmisión del flujo. El protocolo incluye, entre otros, protocolo de transmisión en tiempo real (RTSP), protocolo de transferencia de hipertexto (HTTP), protocolo de transmisión en vivo HTTP (HLS), MPEG-DASH, protocolo de transporte en tiempo real (RTP), protocolo de mensajería en tiempo real (RTMP), o cualquier tipo de combinación de los mismos, o similares. Después de que la unidad 3202 de procedimiento de protocolo procese el flujo, se genera el archivo de flujo. El archivo se envía a una unidad 3204 de demultiplexación. La unidad 3204 de demultiplexación puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Como se ha descrito anteriormente, para algunos escenarios prácticos, por ejemplo, en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador 3206 de vídeo y al decodificador 3208 de audio sin atravesar la unidad 3204 de demultiplexación. Fig. 16 is a diagram showing a structure of an example of the terminal device 3106. After the terminal device 3106 receives the stream from the capture device 3102, the protocol processing unit 3202 parses the transmission protocol of the stream. The protocol includes, but is not limited to, real-time streaming protocol (RTSP), hypertext transfer protocol (HTTP), HTTP live streaming protocol (HLS), MPEG-DASH, real-time transport protocol (RTP), real-time messaging protocol (RTMP), or any combination thereof, or the like. After the protocol processing unit 3202 processes the stream, the stream file is generated. The file is sent to a demultiplexing unit 3204. The demultiplexing unit 3204 may separate the multiplexed data into the encoded audio data and the encoded video data. As described above, for some practical scenarios, for example, in the video conferencing system, the encoded audio data and the encoded video data are not multiplexed. In this situation, the encoded data is transmitted to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexing unit 3204.
A través del procesamiento de demultiplexación, se generan el flujo elemental de vídeo (ES), el ES de audio y, opcionalmente, los subtítulos. El decodificador 3206 de vídeo, que incluye el decodificador 30 de vídeo como se explica en las realizaciones mencionadas anteriormente, decodifica el ES de vídeo mediante el método de decodificación como se muestra en las realizaciones mencionadas anteriormente para generar una trama de vídeo, y alimenta estos datos a la unidad 3212 síncrona. El decodificador 3208 de audio decodifica el ES de audio para generar una trama de audio y alimenta estos datos a la unidad 3212 síncrona. Alternativamente, la trama de vídeo puede almacenarse en una memoria intermedia (no se muestra en la fig. Y) antes de alimentarla a la unidad 3212 síncrona. De manera similar, el cuadro de audio puede almacenarse en una memoria intermedia (no mostrada en la fig. Y) antes de alimentarla a la unidad 3212 síncrona. Through the demultiplexing processing, the video elementary stream (ES), the audio ES, and optionally the subtitles are generated. The video decoder 3206, which includes the video decoder 30 as explained in the aforementioned embodiments, decodes the video ES by the decoding method as shown in the aforementioned embodiments to generate a video frame, and feeds this data to the synchronous unit 3212. The audio decoder 3208 decodes the audio ES to generate an audio frame and feeds this data to the synchronous unit 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. Y) before being fed to the synchronous unit 3212. Similarly, the audio frame may be stored in a buffer (not shown in FIG. Y) before being fed to the synchronous unit 3212.
La unidad 3212 síncrona sincroniza la trama de vídeo y la trama de audio, y suministra el vídeo/audio a un dispositivo 3214 de visualización de vídeo/audio. Por ejemplo, la unidad 3212 síncrona sincroniza la presentación de la información de vídeo y audio. La información puede codificarse en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos de audio y visuales codificados y marcas de tiempo relativas a la entrega del flujo de datos en sí. The synchronous unit 3212 synchronizes the video frame and the audio frame, and delivers the video/audio to a video/audio display device 3214. For example, the synchronous unit 3212 synchronizes the presentation of the video and audio information. The information may be encoded in the syntax using time stamps relative to the presentation of encoded audio and visual data and time stamps relative to the delivery of the data stream itself.
Si se incluyen subtítulos en la secuencia, el decodificador 3210 de subtítulos decodifica el subtítulo y lo sincroniza con la trama de vídeo y la trama de audio, y suministra el vídeo/audio/subtítulo a un dispositivo 3216 de visualización de vídeo/audio/subtítulos. If subtitles are included in the stream, the subtitle decoder 3210 decodes the subtitle and synchronizes it with the video frame and the audio frame, and supplies the video/audio/subtitle to a video/audio/subtitle display device 3216.
La presente invención no se limita al sistema mencionado anteriormente, y, bien el dispositivo de codificación de imagen, o bien el dispositivo de decodificación de imagen en las realizaciones mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil. The present invention is not limited to the above-mentioned system, and either the image coding device or the image decoding device in the above-mentioned embodiments may be incorporated into another system, for example, an automobile system.
Operadores Matemáticos Mathematical Operators
Los operadores matemáticos utilizados en esta aplicación son similares a los utilizados en el lenguaje de programación C. Sin embargo, los resultados de la división de enteros y las operaciones de desplazamiento aritmético se definen con mayor precisión, y se definen operaciones adicionales, tales como exponenciación y división en valores reales. Las convenciones de numeración y conteo generalmente comienzan desde 0, por ejemplo, “el primero” es equivalente al 0-ésimo, “el segundo” es equivalente al 1-ésimo, etc. The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more precisely defined, and additional operations such as exponentiation and division on real values are defined. Numbering and counting conventions generally start from 0, for example, “the first” is equivalent to the 0-th, “the second” is equivalent to the 1-th, etc.
Operadores Aritméticos Arithmetic Operators
Los siguientes operadores aritméticos se definen de la siguiente manera: The following arithmetic operators are defined as follows:
+ Suma + Add
- Resta (como un operador de dos argumentos) o negación (como un operador de prefijo unario) - Subtraction (as a two-argument operator) or negation (as a unary prefix operator)
* Multiplicación, incluyendo multiplicación de matrices * Multiplication, including matrix multiplication
xy Exponenciación. Especifica x elevado a y. En otros contextos, dicha notación se utiliza para superíndices no destinados a la interpretación como exponenciación. xy Exponentiation. Specifies x raised to the power of y. In other contexts, this notation is used for superscripts not intended to be interpreted as exponentiation.
/ División entera con truncamiento del resultado hacia cero. Por ejemplo, 7/4 y -7/-4 se truncan a 1 y -7/4 y 7/-4 se truncan a -1. / Integer division with truncation of the result towards zero. For example, 7/4 and -7/-4 are truncated to 1 and -7/4 and 7/-4 are truncated to -1.
Se utiliza para indicar división en ecuaciones matemáticas donde no se pretende truncamiento o redondeo. It is used to indicate division in mathematical equations where truncation or rounding is not intended.
Se utiliza para indicar división en ecuaciones matemáticas donde no se pretende truncamiento o It is used to indicate division in mathematical equations where truncation or division is not intended.
redondeo. rounding.
La sumatoria de f (i) con i toma todos los valores enteros desde x hasta y, incluyendo y. The summation of f(i) with i takes all integer values from x to y, including y.
x % y Módulo. Resto de x dividido por y, definido solo para enteros x e y con x> = 0 e y> 0. x % y Modulus. Remainder of x divided by y, defined only for integers x and y with x>=0 and y>0.
Operadores Lógicos Logical Operators
Los siguientes operadores lógicos se definen como sigue: The following logical operators are defined as follows:
x && y Booleano lógico "y" de x e y x && y Logical boolean "and" of x and y
x | | y Booleano lógico "o" de x e y x | | y Boolean logical "or" of x and y
! "No" lógico booleano ! Boolean logical "not"
X ? y: z Si x es VERDADERO o no es igual a 0, se evalúa como el valor de y; de lo contrario, evalúa el valor de z. Operadores Relacionales X ? y: z If x is TRUE or not equal to 0, evaluates to the value of y; otherwise, evaluates to the value of z. Relational Operators
Los siguientes operadores relacionales se definen como sigue: The following relational operators are defined as follows:
> Mayor que > Greater than
> = Mayor que o igual a > = Greater than or equal to
< Menor que < Less than
<= Menor que o igual a <= Less than or equal to
= = Igual a = = Equal to
! = No es igual a ! = Not equal to
Cuando se aplica un operador relacional a un elemento de sintaxis o variable al que se le ha asignado el valor “na” (no aplicable), el valor “na” se trata como un valor distinto para el elemento de sintaxis o variable. Se considera que el valor “na” no es igual a ningún otro valor. When a relational operator is applied to a syntax element or variable that has been assigned the value “na” (not applicable), the value “na” is treated as a distinct value for the syntax element or variable. The value “na” is considered not to be equal to any other value.
Operadores de Bit a bit Bitwise Operators
Los siguientes operadores bit a bit se definen como sigue: The following bitwise operators are defined as follows:
& Bit a bit “y”. Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0. & Bitwise “and”. When operating on integer arguments, operates on a two’s complement representation of the integer value. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by adding more significant bits equal to 0.
| Bit a bit “o”. Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0. | Bitwise “or”. When operating on integer arguments, operates on a two’s complement representation of the integer value. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by adding more significant bits equal to 0.
<a>Bit a bit “o exclusivo”. Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0. <a>Bitwise “exclusive or”. When operating on integer arguments, operates on a two's complement representation of the integer value. When operating on a binary argument that contains fewer bits than another argument, the shorter argument is extended by adding more significant bits equal to 0.
x >> y Desplazamiento aritmético a la derecha de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento. x >> y Arithmetic shift right of a two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bits shifted to the most significant bits (MSB) as a result of the right shift have a value equal to the MSB of x before the shift operation.
x << y Desplazamiento aritmético a la izquierda de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits menos significativos (LSB) como resultado del desplazamiento a la izquierda tienen un valor igual a 0. x << y Arithmetic shift left of a two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) as a result of the left shift have a value equal to 0.
Operadores de Asignación Assignment Operators
Los siguientes operadores aritméticos se definen como sigue: The following arithmetic operators are defined as follows:
= Operador de asignación = Assignment operator
+ Incremento, es decir, x es equivalente a x = x 1; cuando se utiliza en un índice de matriz, se evalúa como el valor de la variable antes de la operación de incremento. + Increment, that is, x is equivalent to x = x 1; when used on an array index, it evaluates to the value of the variable before the increment operation.
- - Decremento, es decir, x- - es equivalente a x = x - 1; cuando se utiliza en un índice de matriz, evalúa el valor de la variable antes de la operación de decremento. - - Decrement, that is, x- - is equivalent to x = x - 1; when used on an array index, it evaluates the value of the variable before the decrement operation.
+ = Incremento por la cantidad especificada, es decir, x = 3 es equivalente a x = x 3, y x = (-3) es equivalente a x = x (-3). + = Increase by the specified amount, that is, x = 3 is equivalent to x = x 3, and x = (-3) is equivalent to x = x (-3).
- = Decremento por la cantidad especificada, es decir, x - = 3 es equivalente a x = x - 3, y x - = (-3 ) es equivalente a x = x - (-3). - = Decrease by the specified amount, that is, x - = 3 is equivalent to x = x - 3, and x - = (-3 ) is equivalent to x = x - (-3).
Notación de intervalo Interval notation
La siguiente notación se utiliza para especificar un intervalo de valores: The following notation is used to specify a range of values:
x = y..z x toma valores enteros comenzando desde y hasta z, inclusive, siendo x, y, y z números enteros y siendo z mayor que y. x = y..z x takes integer values starting from y to z, inclusive, where x, y, and z are integers and z is greater than y.
Funciones Matemáticas Mathematical Functions
Se definen las siguientes funciones matemáticas: The following mathematical functions are defined:
( x ; x >= O ( x ; x >= O
Abs(x) = t - x í Abs(x) = t - x
ASen(x) la función trigonométrica de seno inversa, que opera sobre un argumento x que está en el intervalo de -1.0 a 1.0, inclusive, con un valor de salida en el intervalo de - n 2 a n 2, inclusive, en unidades de radianes Atan(x) la función trigonométrica de tangente inversa, que opera sobre un argumento x, con un valor de salida en el intervalo de - n 2 a n 2, inclusive, en unidades de radianes ASin(x) the inverse trigonometric sine function, operating on an argument x that is in the range -1.0 to 1.0, inclusive, with an output value in the range -n 2 to n 2, inclusive, in units of radians Atan(x) the inverse trigonometric tangent function, operating on an argument x, with an output value in the range -n 2 to n 2, inclusive, in units of radians
Ceil(x) el entero más pequeño mayor que o igual a x. Ceil(x) the smallest integer greater than or equal to x.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) - 1, x) Clip1Y(x) = Clip3(0, (1 << BitDepthY) - 1, x)
Clip1c(x) = Clip3(0, (1 << BitDepthC) - 1, x) Clip1c(x) = Clip3(0, (1 << BitDepthC) - 1, x)
x ; z<x x ; z < x
y ; s > y and ; s > and
Clip3(x, y, z) = £ ; de otro modo Clip3(x, y, z) = £ ; otherwise
Cos(x) la función trigonométrica de coseno que opera sobre un argumento x en unidades de radianes. Cos(x) is the trigonometric cosine function that operates on an argument x in units of radians.
Piso(x) el entero más grande menor que o igual a x. Floor(x) the largest integer less than or equal to x.
Ln(x) el logaritmo natural de x (el logaritmo base e, donde e es el logaritmo natural base constante 2.718 281 828 ...). Ln(x) the natural logarithm of x (the logarithm to base e, where e is the natural logarithm to the constant base 2.718 281 828 ...).
Log2(x) el logaritmo base 2 de x. Log2(x) is the base 2 logarithm of x.
Log10(x) el logaritmo base 10 de x. Log10(x) is the base 10 logarithm of x.
Redondo (x) = Signo (x) * Piso (Abs (x) 0.5) Round (x) = Sign (x) * Floor (Abs (x) 0.5)
Sen(x) la función trigonométrica de seno que opera sobre un argumento x en unidades de radianes Sen(x) is the trigonometric sine function that operates on an argument x in units of radians
Raiz(x) = V * Root(x) = V *
Intercambio(x, y) = (y, x) Exchange(x, y) = (y, x)
Tan (x) la función trigonométrica de tangente que opera sobre un argumento x en unidades de radianes Orden de precedencia de la operación Tan(x) the trigonometric tangent function that operates on an argument x in units of radians Order of precedence of the operation
Cuando un orden de precedencia en una expresión no se indica explícitamente mediante el uso de paréntesis, se aplican las siguientes reglas: When an order of precedence in an expression is not explicitly indicated by the use of parentheses, the following rules apply:
- Las operaciones de mayor precedencia se evalúan antes que cualquier operación de menor precedencia. - Las operaciones de la misma precedencia se evalúan secuencialmente de izquierda a derecha. - Operations of higher precedence are evaluated before any operations of lower precedence. - Operations of the same precedence are evaluated sequentially from left to right.
La siguiente tabla especifica la precedencia de las operaciones de mayor a menor; una posición más alta en la tabla indica una precedencia más alta. The following table specifies the precedence of operations from highest to lowest; a higher position in the table indicates a higher precedence.
Para aquellos operadores que también se utilizan en el lenguaje de programación C, el orden de precedencia utilizado en esta especificación es el mismo que se utiliza en el lenguaje de programación C. For those operators that are also used in the C programming language, the order of precedence used in this specification is the same as that used in the C programming language.
Tabla: precedencia de operaciones desde la más alta (en la parte superior de la tabla) hasta la más baja (en la parte inferior de la tabla) Table: precedence of operations from highest (at the top of the table) to lowest (at the bottom of the table)
Descripción de texto de operaciones lógicas Text description of logical operations
En el texto, una instrucción de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if( condition 0 ) In the text, a logical operations statement would be described mathematically as follows: if( condition 0 )
statement 0 statement 0
else if( condition 1 ) else if( condition 1 )
statement 1 statement 1
else /* informative remark on remaining condition */ else /* informative remark on remaining condition */
statement n statement n
puede describirse de la siguiente manera:: can be described as follows:
... as follows / ... the following applies: ... as follows / ... the following applies:
- If condition 0, statement 0 - If condition 0, statement 0
- Otherwise, if condition 1, statement 1 - Otherwise, if condition 1, statement 1
- Otherwise (informative remark on remaining condition), statement n - Otherwise (informative remark on remaining condition), statement n
Cada instrucción "if ... Otherwise, if ... Otherwise, ..." en el texto se introduce con "... as follows" o "... the following applies" seguido inmediatamente por "If ... ". La última condición de "If ... De otro modo, If ... De otro modo, ..." siempre es un " Otherwise, ...". Instrucciones intercaladas "If ... Otherwise, If ... Otherwise, ..." pueden identificarse al coincidir "... as follows" o "... the following applies" con el final " Otherwise, ...". Each "if ... Otherwise, if ... Otherwise, ..." statement in the text is introduced with "... as follows" or "... the following applies" followed immediately by "If ... ". The last condition of an "If ... Otherwise, If ... Otherwise, ..." is always an " Otherwise, ...". Interleaved "If ... Otherwise, If ... Otherwise, ..." statements can be identified by matching "... as follows" or "... the following applies" with the trailing " Otherwise, ...".
En el texto, una instrucción de operaciones lógicas se describiría matemáticamente de la siguiente forma: In the text, a logical operations instruction would be described mathematically as follows:
If(condition 0a && contidion 0b) If(condition 0a && condition 0b)
statement 0 statement 0
else if( condition 1a | | condition 1b) else if(condition 1a | | condition 1b)
statement 1 statement 1
else else
statement n statement n
puede describirse de la siguiente manera:: can be described as follows:
...a s follows /... the following applies: ...a s follows /... the following applies:
- If all the following conditions are true, statement 0: - If all the following conditions are true, statement 0:
- condition 0a - condition 0a
- condition 0b - condition 0b
- Otherwise, if one or more of the following conditions are true, statement 1: - Otherwise, if one or more of the following conditions are true, statement 1:
- condition 1a - condition 1a
- condition 1b - condition 1b
- Otherwise, statement n. - Otherwise, statement n.
En el texto, una instrucción de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if( condition 0 ) In the text, a logical operations statement would be described mathematically as follows: if( condition 0 )
statement 0 statement 0
if( condition 1 ) if( condition 1 )
statement 1 statement 1
puede describirse de la siguiente manera:: can be described as follows:
When condition 0, statement 0 When condition 0, statement 0
When condition 1, statement 1 When condition 1, statement 1
Aunque las realizaciones de la invención se han descrito principalmente basándose en la codificación de vídeo, debería observarse que las realizaciones del sistema 10 de codificación, el codificador 20 y el decodificador 30 (y en consecuencia el sistema 10) y las otras realizaciones descritas en la presente memoria también pueden configurarse para procesamiento o codificación de imagen, es decir, el procesamiento o codificación de una imagen individual independientemente de cualquier imagen anterior o consecutiva como en la codificación de vídeo. En general, solo las unidades 244 de interpredicción (codificador) y 344 (decodificador) pueden no estar disponibles en caso de que la codificación de procesamiento de imagen se limite a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador 20 de vídeo y el decodificador 30 de vídeo pueden utilizarse igualmente para el procesamiento de imagen fija, por ejemplo, cálculo 204/304 residual, transformada 206, cuantificación 208, cuantificación 210/310 inversa, transformada 212/312 (inversa), división en particiones 262/362, intrapredicción 254/354 y/o filtrado 220 en bucle, 320 y codificación 270 por entropía y decodificación 304 por entropía. Although embodiments of the invention have been described primarily on the basis of video coding, it should be noted that embodiments of the coding system 10, the encoder 20 and the decoder 30 (and hence the system 10) and the other embodiments described herein may also be configured for image processing or coding, i.e., processing or coding an individual image independently of any preceding or consecutive images as in video coding. In general, only the inter prediction (encoder) and decoder units 244 (344) may not be available in case the image processing encoding is limited to a single image 17. All other functionalities (also called tools or technologies) of the video encoder 20 and video decoder 30 may equally be used for still image processing, e.g., residual calculation 204/304, transform 206, quantization 208, inverse quantization 210/310, transform 212/312 (inverse), partitioning 262/362, intra prediction 254/354 and/or loop filtering 220, 320 and entropy encoding 270 and entropy decoding 304.
Las realizaciones, por ejemplo, del codificador 20 y del decodificador 30, y las funciones descritas en la presente memoria, por ejemplo, con referencia al codificador 20 y al decodificador 30, pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o transmitirse a través de medios de comunicación como una o más instrucciones o código y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tales como medios de almacenamiento de datos, o medios de comunicación, incluyendo cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta descripción. Un producto de programa informático puede incluir un medio legible por ordenador. Embodiments of, for example, encoder 20 and decoder 30, and the functions described herein, for example, with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted via communication media as one or more instructions or code and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium, such as a data storage media, or communication media, including any medium that facilitates the transfer of a computer program from one location to another, for example, in accordance with a communication protocol. Thus, computer-readable media may generally correspond to (1) tangible computer-readable storage media that is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
A modo de ejemplo, y no limitativo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM , CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (DSL) o tecnologías inalámbricas, tales como infrarrojos, radio y microondas, a continuación, el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas, tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería comprenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles y no transitorios. El disco y el disco, como se utilizan en la presente memoria, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, donde los discos generalmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láser. Las combinaciones de los anteriores también deberían incluirse dentro del alcance de los medios legibles por ordenador. By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included within the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient media, but are directed to tangible and non-transient storage media. Disk and disc as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs generally reproduce data magnetically, while disks reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término “procesador”, como se utiliza en la presente memoria, puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos. The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor,” as used herein, may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured to encode and decode, or incorporated into a combined codec. Furthermore, the techniques could be implemented entirely in one or more circuits or logic elements.
Las técnicas de esta descripción pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta descripción se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas descritas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se ha descrito anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se ha descrito anteriormente, junto con software y/o firmware adecuados. The techniques of this disclosure may be implemented in a wide variety of devices or apparatus, including a wireless telephone, an integrated circuit (IC), or an array of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to emphasize the functional aspects of devices configured to perform the described techniques, but do not necessarily require implementation by different hardware units. Rather, as described above, various units may be combined into one codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, together with suitable software and/or firmware.
Claims (12)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962822981P | 2019-03-24 | 2019-03-24 | |
| PCT/RU2020/050059 WO2020197445A1 (en) | 2019-03-24 | 2020-03-24 | Method and apparatus for chroma intra prediction in video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2992660T3 true ES2992660T3 (en) | 2024-12-16 |
Family
ID=72609078
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20776473T Active ES2992660T3 (en) | 2019-03-24 | 2020-03-24 | Method and apparatus for chroma intra prediction in video coding |
Country Status (15)
| Country | Link |
|---|---|
| US (2) | US11871033B2 (en) |
| EP (2) | EP3888361B1 (en) |
| JP (2) | JP7299331B2 (en) |
| KR (2) | KR102862262B1 (en) |
| CN (4) | CN118264805A (en) |
| AU (2) | AU2020248651B2 (en) |
| BR (1) | BR112021012480A2 (en) |
| CA (1) | CA3122752A1 (en) |
| ES (1) | ES2992660T3 (en) |
| HU (1) | HUE066833T2 (en) |
| IL (1) | IL284281B2 (en) |
| MX (1) | MX2021009504A (en) |
| PL (1) | PL3888361T3 (en) |
| WO (1) | WO2020197445A1 (en) |
| ZA (1) | ZA202104204B (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12316859B2 (en) | 2021-12-16 | 2025-05-27 | Intel Corporation | Apparatus, articles of manufacture, and methods for clipping index identification in adaptive loop filtering for video encoding |
| CN114449354B (en) * | 2022-02-07 | 2023-12-08 | 上海幻电信息科技有限公司 | Video editing method and system |
| WO2023200206A1 (en) * | 2022-04-11 | 2023-10-19 | 현대자동차주식회사 | Image encoding/decoding method and apparatus, and recording medium storing bitstream |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9654785B2 (en) * | 2011-06-09 | 2017-05-16 | Qualcomm Incorporated | Enhanced intra-prediction mode signaling for video coding using neighboring mode |
| CN103918269B (en) * | 2012-01-04 | 2017-08-01 | 联发科技(新加坡)私人有限公司 | Chroma intra prediction method and device |
| EP3955573A1 (en) * | 2012-04-16 | 2022-02-16 | Electronics And Telecommunications Research Institute | Encoding method and decoding method, and computer-readable recording medium |
| GB2501535A (en) | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
| US9300964B2 (en) * | 2013-01-24 | 2016-03-29 | Sharp Kabushiki Kaisha | Image decoding apparatus and image coding apparatus |
| CN105122807B (en) | 2013-03-29 | 2018-11-27 | Jvc建伍株式会社 | Image decoding device and image decoding method |
| AU2013202653A1 (en) * | 2013-04-05 | 2014-10-23 | Canon Kabushiki Kaisha | Method, apparatus and system for generating intra-predicted samples |
| JP6362370B2 (en) | 2014-03-14 | 2018-07-25 | 三菱電機株式会社 | Image encoding device, image decoding device, image encoding method, and image decoding method |
| US20160373770A1 (en) * | 2015-06-18 | 2016-12-22 | Qualcomm Incorporated | Intra prediction and intra mode coding |
| US10602138B2 (en) * | 2015-08-27 | 2020-03-24 | Lg Electronics Inc. | Method and device for chroma sample intra prediction in video coding system |
| JP2019216294A (en) * | 2016-10-14 | 2019-12-19 | シャープ株式会社 | Entropy decoding apparatus, entropy coding apparatus, image decoding device, and image coding device |
| US10531085B2 (en) * | 2017-05-09 | 2020-01-07 | Futurewei Technologies, Inc. | Coding chroma samples in video compression |
| CN119629336A (en) * | 2018-05-14 | 2025-03-14 | 交互数字Vc控股公司 | Method, device, apparatus, medium and program product for video encoding and decoding |
-
2020
- 2020-03-24 CA CA3122752A patent/CA3122752A1/en active Pending
- 2020-03-24 MX MX2021009504A patent/MX2021009504A/en unknown
- 2020-03-24 KR KR1020217020041A patent/KR102862262B1/en active Active
- 2020-03-24 CN CN202410184357.3A patent/CN118264805A/en active Pending
- 2020-03-24 ES ES20776473T patent/ES2992660T3/en active Active
- 2020-03-24 CN CN202410181814.3A patent/CN118264804A/en active Pending
- 2020-03-24 AU AU2020248651A patent/AU2020248651B2/en active Active
- 2020-03-24 EP EP20776473.9A patent/EP3888361B1/en active Active
- 2020-03-24 BR BR112021012480A patent/BR112021012480A2/en unknown
- 2020-03-24 CN CN202410182430.3A patent/CN118540474A/en active Pending
- 2020-03-24 IL IL284281A patent/IL284281B2/en unknown
- 2020-03-24 WO PCT/RU2020/050059 patent/WO2020197445A1/en not_active Ceased
- 2020-03-24 EP EP24159295.5A patent/EP4351135A3/en active Pending
- 2020-03-24 CN CN202080006360.6A patent/CN113170118B/en active Active
- 2020-03-24 PL PL20776473.9T patent/PL3888361T3/en unknown
- 2020-03-24 HU HUE20776473A patent/HUE066833T2/en unknown
- 2020-03-24 KR KR1020257030934A patent/KR20250139893A/en active Pending
- 2020-03-24 JP JP2021549313A patent/JP7299331B2/en active Active
-
2021
- 2021-06-18 ZA ZA2021/04204A patent/ZA202104204B/en unknown
- 2021-07-12 US US17/373,347 patent/US11871033B2/en active Active
-
2023
- 2023-06-15 JP JP2023098183A patent/JP7553007B2/en active Active
- 2023-12-08 US US18/533,506 patent/US12395677B2/en active Active
-
2025
- 2025-01-22 AU AU2025200416A patent/AU2025200416A1/en active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2989421T3 (en) | An encoder, a decoder and corresponding methods for intra prediction | |
| JP7106744B2 (en) | Encoders, decoders and corresponding methods using IBC dedicated buffers and default refresh for luma and chroma components | |
| ES2946909T3 (en) | Method, apparatus and computer program product for interprediction | |
| ES2973667T3 (en) | A video encoder, a video decoder and corresponding methods | |
| ES3024974T3 (en) | An encoder, a decoder and corresponding methods for sub-block partitioning mode | |
| ES2987742T3 (en) | Method and apparatus for intraprediction | |
| ES2992657T3 (en) | Method and apparatus for affine based inter prediction of chroma subblocks | |
| ES2993252T3 (en) | An encoder, a decoder and corresponding methods using ibc merge list | |
| ES2975941T3 (en) | Matrix-based intraprediction harmonization and secondary transform kernel selection | |
| CN113748677A (en) | Encoder, decoder and corresponding intra prediction method | |
| ES2972326T3 (en) | An encoder, decoder, and corresponding methods for blending mode | |
| ES2963621T3 (en) | An encoder, a decoder, and corresponding methods that use palette encoding | |
| WO2020177520A1 (en) | An encoder, a decoder and corresponding methods using ibc search range optimization for abitrary ctu size | |
| ES3041489T3 (en) | An encoder, a decoder and corresponding methods | |
| ES2985369T3 (en) | An encoder, a decoder and corresponding intra-mode chroma derivation methods | |
| WO2021170132A1 (en) | An encoder, a decoder and corresponding methods simplifying signalling slice header syntax elements | |
| ES2984321T3 (en) | Method and apparatus for mode- and size-dependent block-level constraints | |
| ES3014838T3 (en) | Method for deriving interpolation filter index for a current block; devices for video compression | |
| ES2988839T3 (en) | Method and apparatus for cross-component linear modeling for intraprediction | |
| WO2021159962A1 (en) | An encoder, a decoder and corresponding methods for subpicture signalling in sequence parameter set | |
| JP7553007B2 (en) | METHOD AND APPARATUS FOR CHROMA INTRA PREDICTION IN VIDEO CODING - Patent application | |
| ES2967903T3 (en) | Encoder, decoder and corresponding methods using interpolation filtering | |
| ES2946058T3 (en) | An encoder, decoder, and corresponding methods that use intramode coding for intraprediction | |
| WO2020259476A1 (en) | Sample distance calculation for geometric partition mode | |
| WO2021045655A9 (en) | Method and apparatus for intra prediction |