ES2688359T3 - Adaptive central band offset filter for video encoding - Google Patents

Adaptive central band offset filter for video encoding Download PDF

Info

Publication number
ES2688359T3
ES2688359T3 ES12795667.0T ES12795667T ES2688359T3 ES 2688359 T3 ES2688359 T3 ES 2688359T3 ES 12795667 T ES12795667 T ES 12795667T ES 2688359 T3 ES2688359 T3 ES 2688359T3
Authority
ES
Spain
Prior art keywords
bands
band
value
video
pixel
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
Application number
ES12795667.0T
Other languages
Spanish (es)
Inventor
In Suk Chong
Sanjeev Kumar
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2688359T3 publication Critical patent/ES2688359T3/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento de codificación de vídeo para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en bandas, comprendiendo el procedimiento: agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un intervalo de valores de píxeles, y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas; determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas; caracterizado por determinar (610) valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; y en el que, para cada conjunto de píxeles, la agrupación (620) de las bandas de píxeles en dos o más grupos de bandas se determina dinámicamente basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles es adaptativa.A video encoding method for signaling, in an encoded bit stream, the offset values used in band-based sample adaptive offset (SAO) filtering, the method comprising: grouping bands of pixel values into two or more groups of bands, wherein each band of the bands of pixel values comprises a range of pixel values, and wherein each group of the two or more groups of bands comprises one or more bands; determining offset values for the bands based on the two or more groups of bands; characterized by determining (610) center values for each of a plurality of sets of pixels, wherein for each set the center value is based on the actual values of the pixels in the set; and wherein, for each set of pixels, the grouping (620) of the pixel bands into two or more band groups is dynamically determined based on the central value for the set such that the grouping of bands into pixel sets it is adaptive.

Description

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

DESCRIPCIONDESCRIPTION

Filtro de desplazamiento de banda central adaptativo para codificación de vídeo CAMPO TÉCNICOAdaptive central band offset filter for video coding TECHNICAL FIELD

[1] Esta divulgación se refiere en general a la codificación de vídeo y más particularmente se refiere al filtrado de desplazamiento adaptativo de muestras (SAO) en un proceso de codificación de vídeo.[1] This disclosure generally refers to video coding and more particularly refers to adaptive sample displacement (ODS) filtering in a video coding process.

ANTECEDENTESBACKGROUND

[2] Las capacidades del vídeo digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados “teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC) actualmente en desarrollo y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente, implementando dichas técnicas de compresión de vídeo.[2] Digital video capabilities can be incorporated into a wide range of devices, including digital TVs, digital direct broadcasting systems, wireless broadcasting systems, personal digital assistants (PDAs), laptops or desktops, tablet computers, readers of electronic books, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cell phones or satellite radio, the so-called “smart phones”, video conferencing devices, video streaming devices and the like: Digital video devices implement video compression techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part 10, Advanced Video Coding (AVC), the High Efficiency Video Coding (HEVC) standard currently in disarray development and extensions of these standards. Video devices can transmit, receive, encode, decode and / or store digital video information more efficiently, implementing such video compression techniques.

[3] Las técnicas de compresión de vídeo realizan la predicción espacial (intra-imagen) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican mediante predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen, o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas, y las imágenes de referencia pueden denominarse tramas de referencia.[3] Video compression techniques perform spatial prediction (intra-image) and / or temporal prediction (between images) to reduce or eliminate intrinsic redundancy in video sequences. For block-based video coding, a video fragment (for example, a video frame or a part of a video frame) can be divided into video blocks, which can also be called tree blocks, encoding units (CU ) and / or coding nodes. The video blocks in an intra-encoded fragment (I) of an image are encoded by spatial prediction with respect to reference samples in contiguous blocks in the same image. Video blocks in an inter-encoded fragment (P or B) of an image may use spatial prediction with respect to reference samples in contiguous blocks in the same image, or temporal prediction with respect to reference samples in other reference images . The images can be called frames, and the reference images can be called reference frames.

[4] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque inter-codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo con un modo de intra-codificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de los píxeles al dominio de las transformaciones, dando como resultado unos coeficientes de transformación residuales, que posteriormente se pueden cuantificar. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden escanearse con el fin de generar un vector unidimensional de coeficientes de transformación, y puede aplicarse la codificación por entropía para lograr aún más compresión.[4] Spatial or temporal prediction results in a predictive block for a block to be encoded. Residual data represent pixel differences between the original block to be encoded and the predictive block. An intercoded block is encoded according to a motion vector that points to a block of reference samples that form the predictive block, and residual data indicating the difference between the encoded block and the predictive block. An intra-encoded block is encoded according to an intra-coding mode and residual data. For greater compression, residual data can be transformed from the domain of the pixels to the domain of the transformations, resulting in residual transformation coefficients, which can then be quantified. The quantified transformation coefficients, initially arranged in a two-dimensional matrix, can be scanned in order to generate a one-dimensional vector of transformation coefficients, and entropy coding can be applied to achieve even more compression.

[5] El desplazamiento adaptativo se describe en el artículo "CE8 Subset3: Picture Quadtree Adaptive Offset [Desplazamiento adaptativo de árbol cuádruple de imágenes]", de C-M FU ET AL, 4. REUNIÓN DE JCT-VC; 95. REUNIÓN DE MPEG; 20-1-2011 - 28-1-2011; DAEGU; (EQUIPO DE COLABORACIÓN CONJUNTA SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL:
HTTP://WFTP3.TTU.INT/AV- ARCH/JCTVC-STTE/" n.° JCTVC -D122, 15 de enero de 2011.
[5] Adaptive scrolling is described in the article "CE8 Subset3: Picture Quadtree Adaptive Offset", by CM FU ET AL, 4. JCT-VC MEETING; 95. MPEG MEETING; 20-1-2011 - 28-1-2011; DAEGU; (JOINT COLLABORATION TEAM ON ISO / IEC JTC1 / SC29 / WG11 AND ITU-T SG.16 VIDEO CODING); URL:
HTTP://WFTP3.TTU.INT/AV- ARCH / JCTVC-STTE / "No. JCTVC -D122, January 15, 2011.

SUMARIOSUMMARY

[6] La invención se define en las reivindicaciones a las que está dirigida ahora la referencia. Esta divulgación en general describe técnicas relacionadas con el filtrado de desplazamiento adaptativo de muestras (SAO) y más particularmente describe técnicas para la señalización, en un flujo de bits codificado, de los coeficientes utilizados para el filtrado SAO basado en bandas. Esta divulgación describe técnicas para determinar de manera adaptativa agrupaciones de bandas basándose en un valor central y usar las agrupaciones determinadas para los valores de desplazamiento de señalización para las bandas.[6] The invention is defined in the claims to which the reference is now directed. This disclosure generally describes techniques related to adaptive sample displacement (ODS) filtering and more particularly describes techniques for signaling, in a coded bit stream, the coefficients used for band-based SAO filtering. This disclosure describes techniques for adaptively determining band groupings based on a central value and using the groupings determined for the signaling offset values for the bands.

BREVE DESCRIPCION DE LOS DIBUJOSBRIEF DESCRIPTION OF THE DRAWINGS

[7][7]

La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en estaFIG. 1 is a block diagram illustrating an example video coding and decoding system that can use the adaptive displacement filtering techniques of samples described in this

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

divulgación.divulgation.

La FIG. 2 es una ilustración que muestra ejemplos de clasificaciones de desplazamiento de borde para el filtrado de desplazamiento adaptativo de muestras basado en el borde.FIG. 2 is an illustration showing examples of edge displacement classifications for adaptive displacement filtering of samples based on the edge.

Las FIGs. 3A y 3B son ilustraciones que muestran un ejemplo de agrupación de bandas para clasificaciones de desplazamiento de banda para el filtrado de desplazamiento adaptativo de muestras basado en banda.FIGs. 3A and 3B are illustrations showing an example of band grouping for band shift classifications for adaptive band-based sample displacement filtering.

La FIG. 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.FIG. 4 is a block diagram illustrating an example video encoder that can implement the adaptive displacement filtering techniques of samples described in this disclosure.

La FIG. 5 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.FIG. 5 is a block diagram illustrating an example video decoder that can implement adaptive displacement sample filtering techniques described in this disclosure.

La FIG. 6 muestra un diagrama de flujo que ilustra las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.FIG. 6 shows a flow chart illustrating the adaptive displacement filtering techniques of samples described in this disclosure.

DESCRIPCIÓN DETALLADADETAILED DESCRIPTION

[8] El filtrado de desplazamiento adaptativo de muestras (SAO) es un tipo de filtrado de bucle utilizado en la codificación de vídeo. En general, la adición de valores de desplazamiento a píxeles en una trama de vídeo (por ejemplo, una imagen reconstruida) puede en algunos casos mejorar la codificación sin aumentar en gran medida la sobrecarga de bits necesaria para almacenar o transmitir datos de vídeo codificados. La mejora en la codificación que potencialmente se obtiene como resultado del filtrado SAO puede ser, por ejemplo, que una imagen descodificada se asemeja más a una imagen original. Como se explicará con mayor detalle a continuación, las técnicas de SAO permiten que diferentes valores de desplazamiento se apliquen a diferentes píxeles (o bloques de píxeles) dependiendo de las métricas de clasificación de píxeles (o bloques), tales como métricas de borde, métricas de banda u otros tipos de métrica.[8] Adaptive Sample Displacement Filtering (ODS) is a type of loop filtering used in video coding. In general, adding offset values to pixels in a video frame (for example, a reconstructed image) can in some cases improve the encoding without greatly increasing the bit overhead required to store or transmit encoded video data. The improvement in coding that is potentially obtained as a result of the ODS filtering may be, for example, that a decoded image is more similar to an original image. As will be explained in greater detail below, ODS techniques allow different offset values to be applied to different pixels (or blocks of pixels) depending on the pixel classification metrics (or blocks), such as edge metrics, metrics of band or other types of metrics.

[9] Como se explicará con mayor detalle a continuación, en algunas configuraciones, una unidad de filtro SAO puede configurarse para realizar dos tipos de filtrado de desplazamiento, en general denominados en esta divulgación filtrado de desplazamiento de banda y filtrado de desplazamiento de borde. Una unidad de filtro SAO también puede a veces no aplicar desplazamiento, lo cual puede considerarse un tercer tipo de filtrado de desplazamiento. El tipo de filtrado de desplazamiento aplicado por un filtro SAO puede señalarse explícita o implícitamente a un descodificador de vídeo. Al aplicar el filtrado de desplazamiento de borde, los píxeles se pueden clasificar basándose en la información de borde de una unidad de codificación, y se puede determinar un desplazamiento para los píxeles basándose en la clasificación de los bordes. Como se explicará con mayor detalle a continuación con referencia a la FIG. 2, típicamente hay cuatro variaciones de SAO basado en el borde, donde el valor de un píxel se compara con dos de sus ocho píxeles vecinos. Los dos píxeles que se utilizan para comparar dependen de la variación del desplazamiento basado en el borde que se utiliza. Basándose en la diferencia de magnitud, se agrega un desplazamiento al valor de píxel.[9] As will be explained in more detail below, in some configurations, an SAO filter unit may be configured to perform two types of displacement filtering, generally referred to in this disclosure as bandwidth filtering and edge shifting filtering. An SAO filter unit may also sometimes not apply displacement, which can be considered a third type of displacement filtering. The type of displacement filtering applied by an SAO filter can be explicitly or implicitly signaled to a video decoder. By applying edge shift filtering, pixels can be classified based on the edge information of a coding unit, and a offset for pixels can be determined based on the edge classification. As will be explained in greater detail below with reference to FIG. 2, there are typically four variations of ODS based on the edge, where the value of a pixel is compared with two of its eight neighboring pixels. The two pixels that are used to compare depend on the variation of the offset based on the edge that is used. Based on the difference in magnitude, a shift is added to the pixel value.

[10] Al aplicar el filtrado de desplazamiento de banda, los píxeles se pueden clasificar en bandas diferentes basándose en un valor de píxel, como un valor de intensidad, teniendo cada banda un desplazamiento asociado. Una banda incluye un rango de valores de píxeles. Por ejemplo, los valores de píxel que van de 0 a 255 se pueden dividir en 32 bandas iguales (etiquetadas de 0 a 31), de modo que los valores de píxel 0-7 son una primera banda, los valores de píxel 8-15 son una segunda banda, los valores de píxel 16-23 son una tercera banda, y así sucesivamente para las treinta y dos bandas. Las bandas se pueden usar para determinar qué valor de desplazamiento particular aplicar a un píxel o grupo de píxeles. Por ejemplo, si un píxel tiene un valor de 10 (que está dentro de la segunda banda, es decir, valores 8-15, en el ejemplo anterior), entonces se puede agregar un desplazamiento asociado con la segunda banda al valor de píxel.[10] When applying band offset filtering, pixels can be classified into different bands based on a pixel value, such as an intensity value, with each band having an associated offset. A band includes a range of pixel values. For example, pixel values ranging from 0 to 255 can be divided into 32 equal bands (labeled 0 to 31), so that pixel values 0-7 are a first band, pixel values 8-15 they are a second band, pixel values 16-23 are a third band, and so on for the thirty-two bands. Bands can be used to determine which particular offset value to apply to a pixel or group of pixels. For example, if a pixel has a value of 10 (which is within the second band, that is, values 8-15, in the previous example), then a offset associated with the second band can be added to the pixel value.

[11] A los efectos de señalar y generar los desplazamientos para las diversas bandas, las bandas se pueden agrupar en dos o más grupos. Para el filtrado de desplazamiento de banda, los píxeles pueden, por ejemplo, clasificarse en treinta y dos bandas (bandas 0-31) como se describió anteriormente, y las bandas pueden agruparse en dos grupos (por ejemplo, dos grupos de dieciséis bandas, un grupo de cuatro bandas y un grupo de veintiocho bandas, un grupo de ocho bandas y un grupo de veinticuatro bandas u otras agrupaciones similares). Las agrupaciones de bandas se pueden usar para determinar el orden en que los valores de desplazamiento para las bandas se señalan en el flujo de bits de vídeo codificado, y/o se pueden usar para determinar si una banda particular tiene un valor de desplazamiento distinto de cero. Los desplazamientos para las bandas pueden señalarse usando técnicas de codificación diferencial en las que un valor actual se señala como una diferencia entre el valor actual y un valor previo. La cantidad de ahorros de bits conseguida mediante el uso de tales técnicas de codificación puede depender en algunos casos del orden en el que se señalan los valores. Por ejemplo, se puede lograr un mayor ahorro de bits en los casos en que los valores de desplazamiento que están cerca de su valor se señalan consecutivamente. En algunos casos, se puede suponer que todos los valores de desplazamiento para un grupo en particular, como el segundo grupo, son cero.[11] For the purpose of signaling and generating displacements for the various bands, the bands can be grouped into two or more groups. For bandwidth filtering, pixels can, for example, be classified into thirty-two bands (bands 0-31) as described above, and the bands can be grouped into two groups (for example, two groups of sixteen bands, a group of four bands and a group of twenty-eight bands, a group of eight bands and a group of twenty-four bands or other similar groupings). Band groupings can be used to determine the order in which the offset values for the bands are signaled in the encoded video bit stream, and / or can be used to determine if a particular band has a offset value other than zero. The displacements for the bands can be signaled using differential coding techniques in which a current value is signaled as a difference between the current value and a previous value. The amount of bit savings achieved through the use of such coding techniques may in some cases depend on the order in which the values are indicated. For example, greater bit savings can be achieved in cases where offset values that are close to their value are signaled consecutively. In some cases, it can be assumed that all offset values for a particular group, such as the second group, are zero.

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

[12] Según algunas técnicas, las agrupaciones de bandas son estáticas. Por ejemplo, de acuerdo con una técnica, las bandas de dieciséis del medio (bandas 8-23) siempre constituyen un grupo de dieciséis bandas, mientras que las ocho bandas más a la izquierda (bandas 0-7) y las ocho bandas más a la derecha (bandas 24-31) constituyen un segundo grupo de dieciséis bandas. Esta divulgación describe técnicas para determinar dinámicamente agrupaciones de bandas. Como se explicará con mayor detalle a continuación, un codificador de vídeo o descodificador de vídeo puede determinar dinámicamente una agrupación de bandas determinando dinámicamente un valor central basándose en los valores de píxel. En algunas configuraciones, puede señalarse una indicación de un valor central en el flujo de bits de vídeo codificado de manera que un descodificador de vídeo no necesita determinar el valor central basándose en los valores de píxel, sino que puede determinar el valor central basándose en la señalización explícita en el flujo de bits. El valor central se puede usar para determinar un primer grupo de bandas, y las bandas restantes pueden constituir un segundo grupo de bandas. Como quedará claro en los ejemplos a continuación, el término valor central como se usa en esta divulgación en general se refiere a cualquier valor que pueda usarse para alinear o alinear aproximadamente el centro de un grupo de bandas con un valor de píxel particular. Por lo tanto, un valor central como se usa en esta divulgación puede ser el valor de píxel particular sobre el que se alinea el centro del grupo de bandas o puede ser algún otro valor, tal como un valor de píxel inicial o final para una banda o grupo de bandas. En algunos casos, en lugar de identificar un valor de píxel, un valor central puede identificar una banda particular como la primera banda de un grupo, la última banda de un grupo o alguna otra identificación sobre la cual se puede alinear el centro de un grupo de bandas a un valor de píxel particular.[12] According to some techniques, band groupings are static. For example, according to one technique, the middle sixteen bands (bands 8-23) always constitute a group of sixteen bands, while the eight leftmost bands (bands 0-7) and the eight most bands the right (bands 24-31) constitute a second group of sixteen bands. This disclosure describes techniques for dynamically determining band groupings. As will be explained in greater detail below, a video encoder or video decoder can dynamically determine a band grouping by dynamically determining a central value based on pixel values. In some configurations, an indication of a central value in the bit stream of encoded video may be signaled so that a video decoder does not need to determine the core value based on pixel values, but can determine the core value based on the explicit signaling in the bit stream. The central value can be used to determine a first group of bands, and the remaining bands can constitute a second group of bands. As will be clear from the examples below, the term "core value" as used in this disclosure generally refers to any value that can be used to align or approximately align the center of a group of bands with a particular pixel value. Therefore, a central value as used in this disclosure may be the particular pixel value on which the center of the band group is aligned or it may be some other value, such as an initial or final pixel value for a band or band group. In some cases, instead of identifying a pixel value, a central value can identify a particular band such as the first band of a group, the last band of a group or some other identification on which the center of a group can be aligned. of bands at a particular pixel value.

[13] La determinación dinámica de agrupaciones de bandas puede, en algunos casos, mejorar la señalización de los coeficientes de desplazamiento para el filtrado SAO y, por lo tanto, puede mejorar la calidad general de la codificación de vídeo. Esta determinación dinámica de agrupaciones de bandas también puede usarse para determinar para qué grupos de bandas el filtrado SAO beneficiará más a la calidad de codificación de vídeo, suponiéndose que otras bandas tienen un valor de desplazamiento de cero.[13] The dynamic determination of band groupings can, in some cases, improve the signaling of the displacement coefficients for the ODS filtering and, therefore, can improve the overall quality of the video coding. This dynamic determination of band groupings can also be used to determine for which band groups the SAO filtering will benefit the video coding quality most, assuming that other bands have a zero offset value.

[14] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo 10 que puede utilizar las técnicas de SAO adaptativas descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificado que un dispositivo de destino 14 va a descodificar en un momento posterior. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, equipos telefónicos tales como los denominados teléfonos “inteligentes”, los denominados paneles “inteligentes”, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.[14] FIG. 1 is a block diagram illustrating an example 10 video encoding and decoding system that can use the adaptive ODS techniques described in this disclosure. As shown in FIG. 1, the system 10 includes a source device 12 that generates encoded video data that a destination device 14 will decode at a later time. The source device 12 and the destination device 14 can comprise any of a wide range of devices, including desktop computers, folding computers (ie laptops), tablet computers, decoders, telephone equipment such as so-called "smart phones" ”, The so-called“ smart ”panels, televisions, cameras, display devices, digital media players, video game consoles, a video streaming device or the like. In some cases, the source device 12 and the destination device 14 may be equipped for wireless communication.

[15] El dispositivo objetivo 14 puede recibir los datos de vídeo codificados que se van a descodificar, mediante un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir al dispositivo de origen 12 transmitir los datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir routers, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.[15] The target device 14 can receive the encoded video data to be decoded, via a link 16. The link 16 may comprise any type of media or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 16 may comprise a communication means to allow the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the destination device 14. The communication medium may comprise any wireless or wired communication means, such as a spectrum of radio frequency (RF) or one or more physical transmission lines. The communication medium may be part of a packet-based network, such as a local area network, a wide area network or a global network such as the Internet. The communication medium may include routers, switches, base stations or any other equipment that may be useful to facilitate communication from the source device 12 to the destination device 14.

[16] De forma alternativa, los datos codificados pueden ser emitidos desde la interfaz de salida 22 a un dispositivo de almacenamiento 32. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 32 mediante una interfaz de entrada. El dispositivo de almacenamiento 32 puede incluir cualquiera de una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco duro, unos discos Blu-ray, discos DVD, discos CD-ROM, una memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado, para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que pueda retener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento 32 a través de transmisión en continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados mediante cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que sea[16] Alternatively, the encoded data can be output from the output interface 22 to a storage device 32. Similarly, the encoded data can be accessed from the storage device 32 via an input interface. The storage device 32 may include any of a variety of data storage, distributed or local access means, such as a hard disk drive, Blu-ray discs, DVD discs, CD-ROM discs, flash memory, volatile or non-volatile memory or any other suitable digital storage medium, for storing encoded video data. In a further example, the storage device 32 may correspond to a file server or other intermediate storage device that can retain the encoded video generated by the source device 12. The destination device 14 can access the stored video data from the storage device 32 through continuous transmission or download. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the target device 14. Examples of file servers include a web server (for example, for a website), a FTP server, network connected storage devices (NAS) or a local disk drive. The destination device 14 can access the encoded video data through any standard data connection, including an Internet connection. This may include a wireless channel (for example, a Wi-Fi connection), a wired connection (for example, DSL, cable modem, etc.), or a combination of both

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 32 puede ser una transmisión en continuo, una transmisión de descarga o una combinación de ambas.suitable for accessing encoded video data stored on a file server. The transmission of encoded video data from the storage device 32 may be a continuous transmission, a download transmission or a combination of both.

[17] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo, en soporte de cualquiera de una diversidad de aplicaciones de multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en continuo, por ejemplo, mediante Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para admitir la transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.[17] The techniques of this disclosure are not necessarily limited to wireless applications or configurations. The techniques can be applied to video coding, in support of any of a variety of multimedia applications, such as television broadcasts over the air, cable television transmissions, satellite television transmissions, continuous video transmissions, by for example, via the Internet, digital video coding for storage in a data storage medium, digital video decoding stored in a data storage medium, or other applications. In some examples, the system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as continuous video transmission, video playback, video broadcasting and / or video telephony.

[18] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene vídeo previamente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como el vídeo de origen, o una combinación de tales fuentes. Como un ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.[18] In the example of FIG. 1, the source device 12 includes a video source 18, a video encoder 20 and an output interface 22. In some cases, the output interface 22 may include a modulator / demodulator (modem) and / or a transmitter. In the source device 12, the video source 18 may include a source such as a video capture device, for example, a camcorder, a video file containing previously captured video, a video feed interface for receiving video from a video content provider and / or a computer graphics system to generate computer graphics data such as the source video, or a combination of such sources. As an example, if the video source 18 is a camcorder, the source device 12 and the destination device 14 can form the so-called camera phones or videophone. However, the techniques described in this disclosure may be applicable to video coding in general, and may be applied to wireless and / or wired applications.

[19] El vídeo capturado, pre-capturado o generado por ordenador puede ser codificado por el codificador de vídeo 20. Los datos de vídeo codificados pueden ser transmitidos directamente al dispositivo de destino 14 mediante la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados también (o de forma alternativa) pueden almacenarse en el dispositivo de almacenamiento 32 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.[19] The video captured, pre-captured or computer generated can be encoded by the video encoder 20. The encoded video data can be transmitted directly to the destination device 14 via the output interface 22 of the source device 12. The video data encoded also (or alternatively) may be stored in the storage device 32 for later access by the destination device 14 or other devices, for decoding and / or playback.

[20] El dispositivo objetivo 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados por el enlace 16. Los datos de vídeo codificados, comunicados por el enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una diversidad de elementos sintácticos generados por el codificador de vídeo 20, para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos sintácticos pueden incluirse con los datos de vídeo codificados, transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.[20] The target device 14 includes an input interface 28, a video decoder 30 and a display device 32. In some cases, the input interface 28 may include a receiver and / or a modem. The input interface 28 of the destination device 14 receives the video data encoded by the link 16. The video data encoded, communicated by the link 16, or provided on the storage device 32, may include a variety of generated syntactic elements. by video encoder 20, for use by a video decoder, such as video decoder 30, in decoding video data. Said syntactic elements may be included with the encoded video data, transmitted in a communication medium, stored in a storage medium or stored in a file server.

[21] El dispositivo de visualización 32 puede estar integrado con, o ser externo a, el dispositivo objetivo 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.[21] The display device 32 may be integrated with, or be external to, the target device 14. In some examples, the target device 14 may include an integrated display device and also be configured to interconnect with a display device external. In other examples, the destination device 14 may be a display device. In general, the display device 32 displays the decoded video data before a user and can comprise any of a variety of display devices, such as a liquid crystal display (LCD), a plasma screen, an organic diode screen light emitters (OLED) or other type of display device.

[22] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficacia (HEVC), actualmente en fase de elaboración, y pueden conformarse al Modelo de Prueba HEVC (HM). Un borrador reciente de la norma HEVC, denominado “Borrador 8 de trabajo de la HEVC” o “WD8”, se describe en el documento JCTVC-H1003, de Bross et al., titulado "High Efficiency vídeo Coding (HEVC) Text Specification Draft 8" [“Memoria descriptiva textual de la Codificación de Vídeo de Alta Eficacia (HEVC), Borrador 8”], Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10.a reunión: Estocolmo, SE, del 11 al 20 de julio de 2012, que, a partir del 2 de octubre de 2012, se puede descargar desde el siguiente enlace:
http://phenix.int- evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11JCTVC-J1003-v8.zip.
[22] The video encoder 20 and the video decoder 30 can operate in accordance with a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, currently being developed, and can be shaped to the HEVC Test Model (HM). A recent draft of the HEVC standard, called “Working Draft 8 of the HEVC” or “WD8”, is described in document JCTVC-H1003, by Bross et al., Entitled "High Efficiency Video Coding (HEVC) Text Specification Draft 8 "[" Textual descriptive memory of High Efficiency Video Coding (HEVC), Draft 8 "], Joint Collaboration Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, 10th meeting: Stockholm, SE, July 11-20, 2012, which, as of October 2, 2012, can be downloaded from the following link:
http: //phenix.int- evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11JCTVC-J1003-v8.zip.

[23] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, de forma alternativa denominada MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.[23] Alternatively, video encoder 20 and video decoder 30 can operate in accordance with other private or industrial standards, such as ITU-T H.264, alternatively called MPEG-4, Part 10 , Advanced Video Coding (AVC), or extensions of these standards. However, the techniques of this disclosure are not limited to any particular coding standard. Other examples of video compression standards include MPEG-2 and ITU-T H.263.

[24] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar integrados, cada uno de ellos, en un codificador y descodificador de audio, y pueden incluir[24] Although not shown in FIG. 1, in some aspects, the video encoder 20 and the video decoder 30 may each be integrated in an audio encoder and decoder, and may include

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos diferentes. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden conformarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).Suitable MUX-DEMUX units, or other hardware and software, to manage both audio and video encoding in a common data stream or in different data streams. If applicable, in some examples, MUX-DEMUX units can conform to the ITU H.223 multiplexing protocol or other protocols, such as the user datagram protocol (UDP).

[25] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera de entre una variedad de circuitos adecuados de codificadores, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables de campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio, legible por ordenador, y ejecutar las instrucciones en hardware mediante uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CODEC) combinado en un dispositivo respectivo.[25] Video encoder 20 and video decoder 30 can be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSP), application-specific integrated circuits ( ASIC), field programmable door matrices (FPGA), discrete logic, software, hardware, firmware or any combination thereof. When the techniques are partially implemented in software, a device may store instructions for the software in a suitable non-transient, computer-readable medium, and execute the instructions in hardware by one or more processors to perform the techniques of this disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in a respective device.

[26] El equipo JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a dispositivos existentes de acuerdo, por ejemplo, a la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación de intra-predicción, el HM puede proporcionar hasta treinta y tres modos de codificación de intra-predicción.[26] The JCT-VC team is working on the development of the HEVC standard. HEVC's standardization efforts are based on an evolving model of a video coding device called the HEVC (HM) test model. The HM assumes several additional capabilities of video encoding devices with respect to existing devices according, for example, to the ITU-T H.264 / AVC standard. For example, while the H.264 standard provides nine intra-prediction coding modes, the HM can provide up to thirty-three intra-prediction coding modes.

[27] En general, el modelo de funcionamiento del HM describe que una trama o imagen de vídeo puede dividirse en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de árbol tiene un fin similar al de un macrobloque de la norma H.264. Un fragmento incluye un cierto número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, como nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, y también pueden definir un tamaño mínimo de los nodos de codificación.[27] In general, the HM's operating model describes that a video frame or image can be divided into a sequence of wooded blocks or maximum size coding units (LCUs), which include both luma and chroma samples. A tree block has an end similar to that of a macroblock of the H.264 standard. A fragment includes a certain number of consecutive wooded blocks in coding order. A plot or video image can be divided into one or more fragments. Each wooded block can be divided into coding units (CU) according to a quad tree. For example, a tree block, such as a root node of the quaternary tree, can be divided into four child nodes, and each child node can, in turn, be a parent node and be divided into four other child nodes. A final, undivided child node, as the leaf node of the quaternary tree, comprises an encoding node, that is, a block of encoded video. The syntactic data associated with an encoded bit stream can define a maximum number of times a tree block can be divided, and they can also define a minimum size of the coding nodes.

[28] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformación (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir basándose en si la CU está codificada en modo de salto o directo, codificada en modo de intra-predicción o codificada en modo de inter-predicción. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede tener forma cuadrada o no cuadrada.[28] A CU includes a coding node and prediction units (PU) and transformation units (TU) associated with the coding node. A CU size corresponds to a coding node size and must be square. The size of the CU can vary from 8x8 pixels to the size of the wooded block, with a maximum of 64x64 pixels or more. Each CU may contain one or more PU and one or more TU. The syntactic data associated with a CU may describe, for example, the division of the CU into one or more PU. The division modes may differ based on whether the CU is encoded in skip or direct mode, encoded in intra-prediction mode or encoded in inter-prediction mode. PUs can be divided to have a non-square shape. The syntactic data associated with a CU can also describe, for example, the division of the CU into one or more TU according to a quad tree. A TU can have a square or non-square shape.

[29] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes Cu. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no siempre sea así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencias de píxeles, asociados a las TU, pueden transformarse para generar coeficientes de transformación, que pueden cuantificarse.[29] The HEVC standard admits transformations according to TU, which may be different for different Cu. The size of the TU is typically based on the size of the PUs of a given CU, defined for a divided LCU, although this may not always be the case. TUs are typically the same size or smaller than PU. In some examples, the residual samples corresponding to a CU can be subdivided into smaller units by a quadruple tree structure known as "residual quadruple tree" (RQT). The leaf nodes of the RQT can be called transformation units (TU). Pixel difference values, associated with TU, can be transformed to generate transformation coefficients, which can be quantified.

[30] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU está codificada de manera intramodal, la PU puede incluir datos que describan un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU está codificada de modo de inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la Lista 0, la Lista 1 o la Lista C) para el vector de movimiento.[30] In general, a PU includes data related to the prediction process. For example, when the PU is encoded intramodally, the PU may include data describing an intraprediction mode for the PU. As another example, when the PU is intercoded, the PU may include data defining a motion vector for the PU. The data defining the motion vector for a PU can describe, for example, a horizontal component of the motion vector, a vertical component of the motion vector, a resolution for the motion vector (for example, precision of a quarter pixel or accuracy of an eighth pixel), a reference image pointed to by the motion vector and / or a list of reference images (for example, List 0, List 1 or List C) for the vector of movement.

[31] En general, se usa una TU para los procesos de transformación y cuantificación. Una CU dada que presenta una o más PU también puede incluir una o más unidades de transformación (TU). Tras la predicción, el codificador de vídeo 20 puede calcular los valores residuales correspondientes a la PU. Los valores residuales[31] In general, a TU is used for transformation and quantification processes. A given CU that has one or more PUs can also include one or more transformation units (TU). After prediction, the video encoder 20 can calculate the residual values corresponding to the PU. Residual values

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

comprenden valores de diferencias de píxeles que se pueden transformar en coeficientes de transformación, cuantificar y escanear mediante las TU, para generar coeficientes de transformación en serie para la codificación por entropía. Esta divulgación usa típicamente el término “bloque de vídeo” para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede usar el término “bloque de vídeo” para referirse a un bloque de árbol, es decir, una LCU o una CU, que incluye un nodo de codificación y unas PU y TU.they include values of pixel differences that can be transformed into transformation coefficients, quantified and scanned by the TU, to generate series transformation coefficients for entropy coding. This disclosure typically uses the term "video block" to refer to a coding node of a CU. In some specific cases, this disclosure may also use the term "video block" to refer to a tree block, that is, an LCU or a CU, which includes an encoding node and PU and TU.

[32] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes o en otras ubicaciones, que describen un cierto número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. Un codificador de vídeo 20 actúa típicamente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden presentar tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.[32] A video sequence typically includes a series of frames or video images. A group of images (GOP) generally comprises a series of one or more of the video images. A GOP may include syntactic data in a GOP header, in a header of one or more of the images or in other locations, which describe a certain number of images included in the GOP. Each fragment of an image may include syntactic fragment data that describes a coding mode for the respective fragment. A video encoder 20 typically acts on video blocks within individual video fragments in order to encode the video data. A video block may correspond to an encoding node within a CU. Video blocks may have fixed or variable sizes and may differ in size according to a specified coding standard.

[33] En un ejemplo, el HM admite la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una Cu particular es 2Nx2N, el HM admite intra-predicción en tamaños de PU de 2Nx2N o NxN e inter-predicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida en el 25 % y el 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una “n” seguida de una indicación de “arriba”, “abajo”, “izquierda” o “derecha”. Así pues, por ejemplo, “2NxnU” se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.[33] In one example, the HM supports prediction in various PU sizes. Assuming that the size of a particular Cu is 2Nx2N, the HM supports intra-prediction in PU sizes of 2Nx2N or NxN and inter-prediction in symmetric PU sizes of 2Nx2N, 2NxN, Nx2N or NxN. The HM also supports asymmetric division for interprediction in PU sizes of 2NxnU, 2NxnD, nLx2N and nRx2N. In asymmetric division, one direction of a CU is not divided, while the other direction is divided into 25% and 75%. The part of the CU corresponding to the 25% division is indicated by an “n” followed by an indication of “up”, “down”, “left” or “right”. Thus, for example, "2NxnU" refers to a CU of size 2Nx2N that is horizontally divided with a PU of size 2Nx0.5N above and a PU of size 2Nx1.5N below.

[34] En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de tamaño 16x16 tendrá 16 píxeles en la dirección vertical (y = 16) y 16 píxeles en la dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN presenta, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, no es necesario que los bloques presenten necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.[34] In this disclosure, "NxN" and "N by N" can be used interchangeably to refer to the pixel dimensions of a video block in terms of vertical and horizontal dimensions, for example, 16x16 pixels or 16 by 16 pixels. . In general, a block of size 16x16 will have 16 pixels in the vertical direction (y = 16) and 16 pixels in the horizontal direction (x = 16). Likewise, a block of size NxN generally has N pixels in a vertical direction and N pixels in a horizontal direction, where N represents a non-negative integer value. Pixels in a block can be arranged in rows and columns. In addition, it is not necessary that the blocks necessarily have the same number of pixels in the horizontal direction and in the vertical direction. For example, the blocks can comprise NxM pixels, where M is not necessarily equal to N.

[35] Tras la codificación de intra-predicción o inter-predicción mediante las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de las transformaciones tras la aplicación de una transformación, por ejemplo, una transformación de coseno discreta (DCT), una transformación de enteros, una transformación de ondícula o una transformación similar desde un punto de vista conceptual a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformación para la CU.[35] Following the coding of intra-prediction or inter-prediction by means of the PUs of a CU, the video encoder 20 can calculate residual data for the TUs of the CU. PUs can comprise pixel data in the spatial domain (also called pixel domain) and TUs can comprise coefficients in the transformation domain after the application of a transformation, for example, a discrete cosine transformation (DCT), a integer transformation, a waveform transformation or a similar transformation from a conceptual point of view to residual video data. The residual data may correspond to pixel differences between pixels of the uncoded image and the prediction values corresponding to the PU. The video encoder 20 can form the TUs including residual data for the CU and then transform the TUs to generate transformation coefficients for the CU.

[36] Tras cualquier transformación para generar coeficientes de transformación, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformación. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformación se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o la totalidad de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.[36] After any transformation to generate transformation coefficients, the video encoder 20 can quantify the transformation coefficients. Quantification refers, in general, to a process in which the transformation coefficients are quantified to possibly reduce the amount of data used to represent the coefficients, providing additional compression. The quantification process can reduce the bit depth associated with some or all of the coefficients. For example, a value of n bits can be rounded down to a value of m bits during quantization, where n is greater than m.

[37] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de escaneo predefinido para escanear los coeficientes de transformación cuantificados, para producir un vector en serie que pueda ser codificado por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptativo. Después de escanear los coeficientes de transformación cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa de acuerdo con el contexto (CAVLC), la codificación aritmética binaria adaptativa según el contexto (CABAC), la codificación aritmética binaria adaptativa según el contexto basada en la sintaxis (SBAC), la codificación por entropía por división de intervalos de probabilidad (PIPE) u otros procedimientos de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso mediante el descodificador de vídeo 30 en la descodificación de los datos de vídeo.[37] In some examples, video encoder 20 can use a predefined scan order to scan quantified transformation coefficients, to produce a serial vector that can be encoded by entropy. In other examples, video encoder 20 can perform adaptive scanning. After scanning the quantified transformation coefficients to form a one-dimensional vector, the video encoder 20 can perform entropy coding of the one-dimensional vector, for example, according to the adaptive variable length coding according to the context (CAVLC), adaptive binary arithmetic coding according to the context (CABAC), adaptive binary arithmetic coding according to the context based on syntax (SBAC), entropy coding by division of probability intervals (PIPE) or other entropy coding procedures. The video encoder 20 can also perform the entropy coding of the syntactic elements associated with the encoded video data, for use by the video decoder 30 in decoding the video data.

[38] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo contextual a un símbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un[38] To perform the CABAC, video encoder 20 can assign a context within a contextual model to a symbol to be transmitted. The context may refer, for example, to whether the contiguous values of the symbol are nonzero or not. To perform the CAVLC, video encoder 20 can select a

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la VLC pueden construirse de tal manera que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de la VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad puede basarse en un contexto asignado al símbolo.variable length code for a symbol to be transmitted. The code words in the VLC can be constructed in such a way that the relatively shorter codes correspond to more likely symbols, while the longer codes correspond to less probable symbols. In this way, the use of the VLC can achieve savings in bits with respect, for example, to the use of code words of equal length for each symbol to be transmitted. The determination of the probability can be based on a context assigned to the symbol.

[39] En general, la adición de valores de desplazamiento a píxeles en una trama de vídeo puede mejorar la codificación en algunos casos. Por ejemplo, los valores de desplazamiento pueden aplicarse a los píxeles de un bloque de vídeo reconstruido para compensar los cambios de iluminación, los errores de cuantificación, o más en general, para hacer que los datos de vídeo descodificados se parezcan más a los datos de vídeo originales. Las técnicas de SAO permiten que se apliquen diferentes valores de desplazamiento a diferentes píxeles (o bloques de píxeles) dependiendo de los valores de píxel de un píxel (o bloque). El valor de desplazamiento que se aplicará a un píxel se puede determinar basándose en el valor de un píxel. Por ejemplo, si un píxel tiene un valor que está dentro de una primera banda, entonces se puede aplicar un desplazamiento asociado con la primera banda al píxel. Si el píxel tiene un valor que está dentro de una segunda banda, entonces se puede aplicar un desplazamiento asociado con la segunda banda al píxel, y así sucesivamente para todas las bandas.[39] In general, adding offset values to pixels in a video frame may improve coding in some cases. For example, offset values can be applied to the pixels of a reconstructed video block to compensate for lighting changes, quantization errors, or more in general, to make decoded video data more like data from original video ODS techniques allow different offset values to be applied to different pixels (or blocks of pixels) depending on the pixel values of a pixel (or block). The offset value that will be applied to a pixel can be determined based on the value of a pixel. For example, if a pixel has a value that is within a first band, then a offset associated with the first band can be applied to the pixel. If the pixel has a value that is within a second band, then a offset associated with the second band can be applied to the pixel, and so on for all bands.

[40] En un tipo de implementación de SAO, cada partición (que consiste en un conjunto de LCU) puede tener uno de tres tipos de desplazamiento (también llamados clasificaciones de píxeles). Los tres tipos de desplazamiento no son desplazamiento, tipo de desplazamiento basado en la clasificación de banda 0/1 y tipo basado en la clasificación de bordes 0/1/2/3. Cada tipo de desplazamiento de clasificación de banda tiene 16 valores de desplazamiento posibles, mientras que cada tipo basado en la clasificación de bordes tiene 4 valores de desplazamiento posibles. Si se elige uno de estos tipos de desplazamiento para ser utilizado para la partición, la información que indica el tipo de desplazamiento correspondiente y los valores de desplazamiento se puede señalar en el flujo de bits de vídeo codificado.[40] In one type of ODS implementation, each partition (consisting of a set of LCUs) can have one of three types of offset (also called pixel classifications). The three types of displacement are not displacement, type of displacement based on the 0/1 band classification and type based on the 0/1/2/3 edge classification. Each type of band classification offset has 16 possible offset values, while each type based on edge classification has 4 possible offset values. If one of these types of offset is chosen to be used for the partition, the information indicating the corresponding type of offset and offset values can be signaled in the bit stream of encoded video.

[41] La FIG. 2 es un diagrama conceptual que muestra las cuatro posibles clasificaciones de desplazamiento de borde utilizadas en una implementación de filtrado SAO. En el ejemplo de la FIG. 2, el tipo de desplazamiento de borde clasifica cada píxel basándose en la información de borde. Para cada una de las clasificaciones de borde mostradas en la FIG. 2, se calcula un tipo de borde para el píxel actual (es decir, un píxel particular que se está codificando) comparando el valor del píxel actual (C) con los valores de los píxeles vecinos (1 y 2). Para el desplazamiento de borde SAO de la clasificación cero (SAO_EO_0), el píxel actual se compara con los píxeles vecinos izquierdo y derecho. Para el desplazamiento de borde SAO de la clasificación uno (SAO_EO_1), el píxel actual se compara con los píxeles vecinos superior e inferior. Para el desplazamiento de borde SAO de la clasificación dos (SAO_ EO_2), el píxel actual se compara con los píxeles vecinos superior izquierdo e inferior derecho. Para el desplazamiento de borde SAO de la clasificación tres (SAO_EO_3), el píxel actual se compara con los píxeles vecinos inferior izquierdo y superior derecho.[41] FIG. 2 is a conceptual diagram showing the four possible edge offset classifications used in an SAO filtering implementation. In the example of FIG. 2, the type of border offset classifies each pixel based on the edge information. For each of the edge classifications shown in FIG. 2, a border type is calculated for the current pixel (i.e. a particular pixel that is being encoded) by comparing the value of the current pixel (C) with the values of the neighboring pixels (1 and 2). For the SAO edge offset of the zero classification (SAO_EO_0), the current pixel is compared with the neighboring left and right pixels. For the SAO edge offset of classification one (SAO_EO_1), the current pixel is compared to the upper and lower neighboring pixels. For the SAO edge offset of classification two (SAO_ EO_2), the current pixel is compared to the upper left and lower right neighboring pixels. For the SAO edge offset of classification three (SAO_EO_3), the current pixel is compared with the lower left and upper right neighboring pixels.

[42] Inicialmente, se supone que el tipo de borde del píxel actual es cero. Si el valor del píxel actual C es igual a los valores de los píxeles vecinos izquierdo y derecho (1 y 2), el tipo de borde permanece en cero. Si el valor del píxel actual C es mayor que el valor del píxel vecino 1, el tipo de borde se incrementa en uno. Si el valor del píxel actual C es menor que el valor del píxel vecino 1, el tipo de borde se reduce en uno. Del mismo modo, si el valor del píxel actual C es menor que el valor del píxel vecino 2, el tipo de borde se incrementa en uno, y si el valor del píxel actual C es menor que el valor del píxel vecino 2, el tipo de borde se reduce en 1.[42] Initially, the current pixel border type is assumed to be zero. If the value of the current pixel C is equal to the values of the neighboring left and right pixels (1 and 2), the border type remains zero. If the value of the current pixel C is greater than the value of the neighboring pixel 1, the border type is increased by one. If the value of the current pixel C is less than the value of the neighboring pixel 1, the border type is reduced by one. Similarly, if the value of the current pixel C is less than the value of neighboring pixel 2, the border type is increased by one, and if the value of the current pixel C is less than the value of neighboring pixel 2, the type Edge is reduced by 1.

[43] Como tal, el píxel V actual puede tener un tipo de borde de -2, -1, 0, 1 o 2. El tipo de borde es -2 si el valor del píxel C actual es menor que ambos valores de los píxeles vecinos 1 y 2. El tipo de borde es -1 si el valor del píxel C actual es menor que un píxel vecino, pero igual al otro píxel vecino. El tipo de borde es 0 si el valor del píxel actual C es el mismo que el de ambos píxeles vecinos, o si el valor del píxel actual C es mayor que un píxel vecino, pero menor que el del otro píxel vecino. El tipo de borde es 1 si el valor del píxel actual C es mayor que un píxel vecino, pero igual al otro píxel vecino. El tipo de borde es 2 si el valor del píxel actual C es mayor que ambos valores de los píxeles vecinos 1 y 2. Para cada valor de tipo de borde distinto de cero, se determinan y señalan cuatro valores de desplazamiento en el flujo de bits de vídeo codificado para uso por un descodificador (es decir, eoffset .2, eoffset .1, eoffset 1, eoffset 2).[43] As such, the current pixel V can have a border type of -2, -1, 0, 1 or 2. The border type is -2 if the value of the current pixel C is less than both values of the neighboring pixels 1 and 2. The border type is -1 if the value of the current pixel C is less than a neighboring pixel, but equal to the other neighboring pixel. The border type is 0 if the value of the current pixel C is the same as that of both neighboring pixels, or if the value of the current pixel C is greater than a neighboring pixel, but less than that of the other neighboring pixel. The border type is 1 if the value of the current pixel C is greater than a neighboring pixel, but equal to the other neighboring pixel. The border type is 2 if the value of the current pixel C is greater than both values of neighboring pixels 1 and 2. For each non-zero edge type value, four offset values are determined and indicated in the bit stream video encoded for use by a decoder (ie, eoffset .2, eoffset .1, eoffset 1, eoffset 2).

[44] A la vista de la descripción anterior, para cada clasificación de desplazamiento de borde, los valores de tipo de borde se pueden calcular con el siguiente pseudocódigo:[44] In view of the above description, for each edge offset classification, edge type values can be calculated with the following pseudocode:

EdgeType = 0;EdgeType = 0;

if (C > Pixel1) EdgeType = EdgeType + 1;if (C> Pixel1) EdgeType = EdgeType + 1;

if (c < Pixel1) EdgeType = EdgeType - 1;if (c <Pixel1) EdgeType = EdgeType - 1;

if (c > Pixel2) EdgeType = EdgeType + 1;if (c> Pixel2) EdgeType = EdgeType + 1;

if (c < Pixel2) EdgeType = EdgeType - 1if (c <Pixel2) EdgeType = EdgeType - 1

[45] La FIG. 3A es un diagrama conceptual que muestra bandas de ejemplo basadas en valores de intensidad.[45] FIG. 3A is a conceptual diagram showing sample bands based on intensity values.

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

A modo de ejemplo, suponga que los valores de píxel oscilan entre 0 y 255, aunque también se pueden usar otros rangos. En tal ejemplo, el valor máximo mostrado en la FIG. 3A sería igual a 255, y cada una de las treinta y dos bandas mostradas en la FIG. 3A tendría un rango de 8. La banda más a la izquierda serían los valores de píxel 0-7, la siguiente banda sería para los valores de píxel de 8-15, la siguiente banda sería para los valores de píxel 16-23, y así sucesivamente, hasta la banda más a la derecha que sería para los valores de píxel 248-255. Para el desplazamiento de banda, los píxeles se clasifican en bandas diferentes basándose en la intensidad (es decir, para la clasificación de desplazamiento de banda, los píxeles se clasifican en una de las treinta y dos bandas). Basándose en la banda en la que se encuentra el valor de un píxel, se agrega un desplazamiento al píxel. Por ejemplo, si un píxel tiene un valor de 19, entonces el valor de píxel se encuentra dentro de la tercera banda que varía desde el valor de píxel 16 a 23. Por lo tanto, un desplazamiento asociado con la tercera banda se agregaría al valor de píxel de 19.As an example, assume that pixel values range from 0 to 255, although other ranges can also be used. In such an example, the maximum value shown in FIG. 3A would be equal to 255, and each of the thirty-two bands shown in FIG. 3A would have a range of 8. The leftmost band would be pixel values 0-7, the next band would be for pixel values of 8-15, the next band would be for pixel values 16-23, and so on, to the rightmost band that would be for pixel values 248-255. For band offset, pixels are classified into different bands based on intensity (that is, for band offset classification, pixels are classified into one of the thirty-two bands). Based on the band in which the value of a pixel is found, a shift is added to the pixel. For example, if a pixel has a value of 19, then the pixel value is within the third band that varies from the pixel value 16 to 23. Therefore, a offset associated with the third band would be added to the value 19 pixel

[46] Para fines de señalización de los valores de desplazamiento asociados con cada banda, las bandas se pueden agrupar en dos o más grupos. En algunas implementaciones, las dieciséis bandas en el centro (bandas 823) se clasifican en un grupo y las bandas restantes (bandas 0-7 y 24-31) se clasifican en un segundo grupo. Para cada grupo de bandas, se determinan 16 valores de desplazamiento (es decir, boffsetü,..., boffset15) y se señalan en el flujo de bits de vídeo codificado para su uso por un descodificador de vídeo. En algunas implementaciones, se puede suponer que todos los valores de desplazamiento para un grupo, como el segundo grupo, son 0, en cuyo caso no se debe incluir señalización de valores de desplazamiento para ese grupo en el flujo de bits de vídeo codificado.[46] For signaling purposes of the offset values associated with each band, the bands can be grouped into two or more groups. In some implementations, the sixteen bands in the center (bands 823) are classified in one group and the remaining bands (bands 0-7 and 24-31) are classified in a second group. For each group of bands, 16 offset values (ie, boffsetü, ..., boffset15) are determined and signaled in the video bit stream encoded for use by a video decoder. In some implementations, it can be assumed that all offset values for a group, such as the second group, are 0, in which case signaling of offset values for that group should not be included in the encoded video bit stream.

[47] Como se muestra en la FIG. 3A, las dieciséis bandas medias (bandas 8-23) constituyen el primer grupo de bandas, mientras que las ocho bandas más a la izquierda (banda 0-7) constituyen la primera parte de un segundo grupo de bandas, y las ocho bandas más a la derecha (bandas 24-31) constituyen una segunda parte del segundo grupo de bandas. De acuerdo con las técnicas actuales, esta agrupación de bandas es fija. Esta divulgación describe técnicas para determinar de manera adaptativa las agrupaciones de bandas. Por ejemplo, esta divulgación describe técnicas para determinar un valor central para un conjunto de píxeles basado en valores de píxeles. El valor central puede, por ejemplo, determinarse basándose en un centro determinado para un grupo de bandas, y el centro para el grupo de bandas se puede determinar basándose en un valor medio para el conjunto de píxeles, un valor mediano de un conjunto de píxeles, o determinando el píxel donde se encuentra el pico de un histograma.[47] As shown in FIG. 3A, the sixteen middle bands (bands 8-23) constitute the first group of bands, while the eight most left bands (band 0-7) constitute the first part of a second group of bands, and the eight more bands on the right (bands 24-31) constitute a second part of the second group of bands. According to current techniques, this band grouping is fixed. This disclosure describes techniques for adaptively determining band groupings. For example, this disclosure describes techniques for determining a central value for a set of pixels based on pixel values. The central value can, for example, be determined based on a given center for a band group, and the center for the band group can be determined based on an average value for the set of pixels, a median value of a set of pixels. , or determining the pixel where the peak of a histogram is located.

[48] Las bandas de valores de píxeles se pueden dividir en grupos basándose en el valor central. Por ejemplo, el valor central puede usarse para determinar un centro para un grupo de bandas. Nuevamente suponiendo treinta y dos bandas (bandas 0-31) y dos grupos, las ocho bandas a la derecha del centro y las ocho bandas a la izquierda del centro pueden ser el primer grupo de bandas. Las dieciséis bandas restantes pueden ser el segundo grupo. Por lo tanto, a diferencia de las técnicas anteriores en las que un grupo siempre consistía en las dieciséis bandas medias, esta divulgación describe técnicas en las que las agrupaciones de bandas pueden ser adaptativas basándose en un valor central que se determina basándose en los valores de píxel reales.[48] Pixel value bands can be divided into groups based on the central value. For example, the central value can be used to determine a center for a group of bands. Again assuming thirty-two bands (bands 0-31) and two groups, the eight bands to the right of the center and the eight bands to the left of the center may be the first group of bands. The remaining sixteen bands may be the second group. Therefore, unlike previous techniques in which a group always consisted of the sixteen middle bands, this disclosure describes techniques in which band groupings can be adaptive based on a core value that is determined based on the values of real pixels

[49] La FIG. 3B muestra una de muchas agrupaciones posibles que pueden usarse de acuerdo con las técnicas de esta divulgación. En el ejemplo de la FIG. 3B, un centro se determina cerca de la banda 18. En consecuencia, el primer grupo de bandas incluye las ocho bandas a la izquierda del centro (bandas 11-18) y las ocho bandas a la derecha del centro (bandas 19-26). El segundo grupo de bandas incluye las bandas restantes, que en este ejemplo son las bandas 0-4 y las bandas 27-31. De nuevo, la FIG. 3B representa uno de los muchos escenarios posibles. El objetivo principal de la FIG. 3B es mostrar que, de acuerdo con las técnicas de esta divulgación, el centro para determinar el primer grupo de bandas puede determinarse de forma adaptativa y no necesita ser fijado en la ubicación mostrada en la FIG. 3A ni fijada en cualquier otra ubicación. Las técnicas para determinar un valor central y determinar de manera adaptativa agrupaciones de bandas se explicarán con mayor detalle a continuación.[49] FIG. 3B shows one of many possible groupings that can be used in accordance with the techniques of this disclosure. In the example of FIG. 3B, a center is determined near band 18. Consequently, the first group of bands includes the eight bands to the left of the center (bands 11-18) and the eight bands to the right of the center (bands 19-26) . The second group of bands includes the remaining bands, which in this example are bands 0-4 and bands 27-31. Again, FIG. 3B represents one of the many possible scenarios. The main objective of FIG. 3B is to show that, according to the techniques of this disclosure, the center for determining the first group of bands can be determined adaptively and does not need to be fixed at the location shown in FIG. 3A or fixed at any other location. The techniques for determining a central value and adaptively determining band groupings will be explained in more detail below.

[50] La FIG. 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo 20 que puede implementar las técnicas de filtrado SAO descritas en esta divulgación. El codificador de vídeo 20 puede realizar la intra-codificación y la inter-codificación de bloques de vídeo dentro de fragmentos de vídeo. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los modos inter, tales como la predicción unidireccional (modo P) o la bi-predicción (modo B), pueden referirse a cualquiera de varios modos de compresión de base temporal.[50] FIG. 4 is a block diagram illustrating an example video encoder 20 that can implement the SAO filtering techniques described in this disclosure. The video encoder 20 can perform intra-coding and inter-coding of video blocks within video fragments. Intra-coding relies on spatial prediction to reduce or eliminate spatial redundancy in the video within a given frame or video image. Intercoding is based on temporal prediction to reduce or eliminate temporal redundancy in the video within frames or adjacent images of a video sequence. The intra mode (mode I) may refer to any of several spatial compression modes. Inter modes, such as unidirectional prediction (P mode) or bi-prediction (B mode), can refer to any of several time-based compression modes.

[51] En el ejemplo de la FIG. 4, el codificador de vídeo 20 incluye un módulo de partición 35, un módulo de predicción 41, una memoria de imágenes de referencia 64, un sumador 50, un módulo de transformación 52, un módulo de cuantificación 54 y un módulo de codificación por entropía 56. El módulo de predicción 41 incluye un módulo de estimación de movimiento 42, un módulo de compensación de movimiento 44 y un módulo de intra- predicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye además un módulo de cuantificación inversa 58, un módulo de transformación inversa 60 y un sumador 62. El filtro de desbloqueo 72 también se puede incluir para filtrar los límites del bloque para eliminar distorsiones de bloqueo del vídeo[51] In the example of FIG. 4, the video encoder 20 includes a partition module 35, a prediction module 41, a reference image memory 64, an adder 50, a transformation module 52, a quantization module 54 and an entropy coding module 56. The prediction module 41 includes a motion estimation module 42, a motion compensation module 44 and an intra-prediction module 46. For the reconstruction of video blocks, the video encoder 20 further includes a video module. reverse quantization 58, a reverse transformation module 60 and an adder 62. The unblocking filter 72 can also be included to filter the block boundaries to eliminate blockage distortions of the video.

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

reconstruido. Como se muestra en la FIG. 4, el codificador de vídeo 20 también incluye filtros de bucle adicionales, incluyendo el filtro 74 de desplazamiento adaptativo de muestras (SAO) y el filtro de bucle adaptativo (ALF) 76. Aunque el filtro de desbloqueo 72, el filtro SAO 74 y el ALF 76 se muestran como filtros en bucle en la FIG. 4, en algunas configuraciones, el filtro de desbloqueo 72, el filtro SAO 74 y la ALF 76 pueden implementarse como filtros de post-bucle.rebuilt. As shown in FIG. 4, the video encoder 20 also includes additional loop filters, including the adaptive sample shift filter (SAO) 74 and the adaptive loop filter (ALF) 76. Although the unlock filter 72, the SAO filter 74 and the ALF 76 are shown as loop filters in FIG. 4, in some configurations, the release filter 72, the SAO filter 74 and the ALF 76 can be implemented as post-loop filters.

[52] Como se representa en la FIG. 4, el codificador de vídeo 20 recibe datos de vídeo, y el módulo de división 35 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, elementos u otras unidades mayores, así como la división de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de unas LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican bloques de vídeo de un fragmento de vídeo que se va a codificar. El fragmento puede dividirse en varios bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados elementos). El módulo de predicción 41 puede seleccionar una entre una pluralidad de posibles modos de codificación, tal como una entre una pluralidad de modos de intra-codificación, o una entre una pluralidad de modos de inter-codificación, para el bloque de vídeo actual, basándose en resultados de errores (por ejemplo, la velocidad de codificación y el nivel de distorsión). El módulo de predicción 41 puede proporcionar el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia.[52] As depicted in FIG. 4, the video encoder 20 receives video data, and the division module 35 divides the data into video blocks. This division may also include the division into fragments, elements or other larger units, as well as the division of video blocks, for example, according to a quaternary tree structure of some LCU and CU. The video encoder 20 illustrates, in general, the components encoding video blocks of a video fragment to be encoded. The fragment can be divided into several video blocks (and possibly into sets of video blocks called elements). The prediction module 41 may select one from a plurality of possible coding modes, such as one from a plurality of intra-coding modes, or one from a plurality of inter-coding modes, for the current video block, based in error results (for example, coding speed and distortion level). The prediction module 41 can provide the resulting intra-encoded or inter-encoded block to adder 50 to generate residual block data, and to adder 62 to reconstruct the encoded block for use as a reference image.

[53] El módulo de intra-predicción 46, dentro del módulo de procesamiento de predicción 41, puede realizar la codificación intra-predictiva del bloque de vídeo actual con respecto a uno o más bloques vecinos en la misma trama o fragmento que el bloque que va a codificarse, para proporcionar compresión espacial. El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44, dentro del módulo de predicción 41, realizan la codificación inter-predictiva del bloque de vídeo actual con respecto a uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.[53] The intra-prediction module 46, within the prediction processing module 41, can perform the intra-predictive coding of the current video block with respect to one or more neighboring blocks in the same frame or fragment as the block that is going to be encoded, to provide spatial compression. The motion estimation module 42 and the motion compensation module 44, within the prediction module 41, perform the inter-predictive coding of the current video block with respect to one or more predictive blocks in one or more reference images, to provide temporary compression.

[54] El módulo de estimación de movimiento 42 puede estar configurado para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos predichos (fragmentos P), fragmentos predichos en dos direcciones (sectores B), o fragmentos P/B generalizados (fragmentos GPB). El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44 pueden estar altamente integrados, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada mediante el módulo de estimación de movimiento 42, es el proceso de generar vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo de una trama o imagen de vídeo actual con respecto a un bloque predictivo de una imagen de referencia.[54] The motion estimation module 42 may be configured to determine the mode of interpretation for a video fragment according to a predetermined pattern for a video sequence. The predetermined pattern may designate video fragments in the sequence as predicted fragments (P fragments), predicted fragments in two directions (sectors B), or generalized P / B fragments (GPB fragments). The motion estimation module 42 and the motion compensation module 44 may be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation, performed by motion estimation module 42, is the process of generating motion vectors, which estimate movement for video blocks. A motion vector, for example, may indicate the displacement of a PU from a video block of a current video frame or image with respect to a predictive block of a reference image.

[55] Un bloque predictivo es un bloque del que se descubre que se corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionarias de la imagen de referencia. Por lo tanto, el módulo de estimación de movimiento 42 puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completos y a las posiciones de fracciones de píxel, y emitir un vector de movimiento con una precisión de fracciones de píxel.[55] A predictive block is a block that is found to correspond closely with the PU of the video block to be encoded in terms of pixel difference, which can be determined by the sum of an absolute difference (SAD), sum of squared difference (SSD) or other difference metrics. In some examples, video encoder 20 can calculate values for fractional pixel positions of reference images stored in reference image memory 64. For example, video encoder 20 can interpolate values of positions of a quarter pixel, positions of an eighth pixel or other fractional pixel positions of the reference image. Therefore, the motion estimation module 42 can perform a motion search with respect to the positions of full pixels and the positions of pixel fractions, and emit a motion vector with an accuracy of pixel fractions.

[56] El módulo de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento inter-codificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. El módulo de estimación de movimiento 42 envía el vector de movimiento calculado al módulo de codificación por entropía 56 y al módulo de compensación de movimiento 44.[56] Motion estimation module 42 calculates a motion vector for a PU of a video block in an inter-encoded fragment, comparing the position of the PU with the position of a predictive block of a reference image. The reference image may be selected from a first list of reference images (List 0) or a second list of reference images (List 1), each of which identifies one or more reference images stored in the image memory of reference 64. The motion estimation module 42 sends the calculated motion vector to the entropy coding module 56 and the motion compensation module 44.

[57] La compensación de movimiento, realizada por el módulo de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado por la estimación de movimiento, realizando posiblemente interpolaciones hasta la precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, el módulo de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo a los valores de píxeles del bloque de vídeo actual que se está codificando, generando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia de luminancia y croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. El módulo de compensación de movimiento 44 también puede generar elementos sintácticos asociados a los bloques de vídeo y al fragmento de vídeo para su uso mediante el descodificador de vídeo 30 en la descodificación[57] Motion compensation, performed by the motion compensation module 44, may involve extracting or generating the predictive block based on the motion vector determined by the motion estimate, possibly performing interpolations up to the sub-pixel accuracy. After receiving the motion vector for the PU of the current video block, the motion compensation module 44 can locate the predictive block to which the motion vector points in one of the reference image lists. The video encoder 20 forms a residual video block by subtracting the pixel values of the predictive block from the pixel values of the current video block being encoded, generating pixel difference values. Pixel difference values form residual data for the block, and may include components of luminance and chroma difference. Adder 50 represents the component or components that perform this subtraction operation. The motion compensation module 44 can also generate syntactic elements associated with the video blocks and the video fragment for use by the video decoder 30 in decoding

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

de los bloques de vídeo del fragmento de vídeo.of the video blocks of the video fragment.

[58] El módulo de intra-predicción pue46 de realizar la intra-predicción en un bloque actual, como una alternativa a la inter-predicción realizada por el módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44, como se describió anteriormente. En particular, el módulo de intra-predicción 46 puede determinar un modo de intra-predicción a usar para codificar un bloque actual. En algunos ejemplos, el módulo de intra- predicción 46 puede codificar un bloque actual usando varios modos de intra-predicción, por ejemplo, durante pasadas de codificación independientes, y el módulo de intra-predicción 46 (o el módulo de selección de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de intra-predicción a usar, entre los modos probados. Por ejemplo, el módulo de intra-predicción 46 puede calcular valores de distorsión de velocidad usando un análisis de distorsión de velocidad para los diversos modos de intra-predicción probados, y seleccionar el modo de intra- predicción que tenga las mejores características de distorsión de velocidad entre los modos probados. El análisis de distorsión de velocidad determina, en general, una magnitud de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para generar el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) utilizada para generar el bloque codificado. El módulo de intra- predicción 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intra-predicción presenta el mejor valor de distorsión de velocidad para el bloque.[58] The intra-prediction module can perform the intra-prediction in a current block, as an alternative to the inter-prediction performed by the motion estimation module 42 and the motion compensation module 44, as described previously. In particular, the intra-prediction module 46 can determine an intra-prediction mode to be used to encode a current block. In some examples, the intra-prediction module 46 may encode a current block using several intra-prediction modes, for example, during independent coding passes, and the intra-prediction module 46 (or the mode selection module 40 , in some examples) you can select a suitable intra-prediction mode to use, among the modes tested. For example, the intra-prediction module 46 can calculate velocity distortion values using a velocity distortion analysis for the various intra-prediction modes tested, and select the intra-prediction mode that has the best distortion characteristics of Speed between tested modes. The speed distortion analysis determines, in general, a magnitude of distortion (or error) between an encoded block and an original uncoded block that was encoded to generate the encoded block, as well as a bit rate (i.e., a number of bits) used to generate the encoded block. The intra-prediction module 46 can calculate ratios from the distortions and speeds for the various encoded blocks, to determine which intra-prediction mode has the best speed distortion value for the block.

[59] En cualquier caso, tras seleccionar un modo de intra-predicción para un bloque, el módulo de intra- predicción 46 puede proporcionar información que indica el modo de intra-predicción seleccionado para el bloque al módulo de codificación por entropía 56. El módulo de codificación por entropía 56 puede codificar la información que indica el modo de intra-predicción seleccionado de acuerdo con las técnicas de esta divulgación. El codificador de vídeo 20 puede incluir datos de configuración en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índices de modos de intra-predicción y una pluralidad de tablas de índices de modos de intra-predicción modificadas (también denominadas tablas de asignación de palabras de código), definiciones de contextos de codificación para varios bloques e indicaciones del modo de intra-predicción más probable, una tabla de índices de modos de intra-predicción y una tabla de índices de modos de intra-predicción modificadas a utilizar para cada uno de los contextos.[59] In any case, after selecting an intra-prediction mode for a block, the intra-prediction module 46 can provide information indicating the intra-prediction mode selected for the block to the entropy coding module 56. The Entropy coding module 56 may encode the information indicating the selected intra-prediction mode in accordance with the techniques of this disclosure. The video encoder 20 may include configuration data in the transmitted bit stream, which may include a plurality of index tables of intra-prediction modes and a plurality of index tables of modified intra-prediction modes (also called tables code word assignment), coding context definitions for several blocks and indications of the most likely intra-prediction mode, an index table of intra-prediction modes and a table of indexes of modified intra-prediction modes to use for each of the contexts.

[60] Después de que el módulo de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, ya sea mediante la inter-predicción o la intra-predicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residual en el bloque residual pueden ser incluidos en una o más TU y aplicados al módulo de procesamiento de transformación 52. El módulo de transformación 52 transforma los datos de vídeo residual en coeficientes de transformación residual, usando una transformación, tal como una transformación de coseno discreta (DCT) o una transformación conceptualmente similar. El módulo de procesamiento de transformación 52 puede convertir los datos de vídeo residual, desde un dominio de píxeles a un dominio de transformación, tal como un dominio de frecuencia.[60] After the prediction module 41 generates the predictive block for the current video block, either by inter-prediction or intra-prediction, the video encoder 20 forms a residual video block by subtracting the predictive block to the current video block. The residual video data in the residual block may be included in one or more TU and applied to the transformation processing module 52. The transformation module 52 transforms the residual video data into residual transformation coefficients, using a transformation, such as a discrete cosine transformation (DCT) or a conceptually similar transformation. The transformation processing module 52 can convert the residual video data, from a pixel domain to a transformation domain, such as a frequency domain.

[61] El módulo de transformación 52 puede enviar los coeficientes de transformación resultantes al módulo de cuantificación 54. El módulo de cuantificación 54 cuantifica los coeficientes de transformación para reducir adicionalmente la velocidad de transmisión de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o la totalidad de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, el módulo de cuantificación 54 puede realizar, a continuación, un escaneo de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, el módulo de codificación por entropía 56 puede realizar el escaneo.[61] The transformation module 52 can send the resulting transformation coefficients to the quantization module 54. The quantization module 54 quantifies the transformation coefficients to further reduce the bit rate. The quantification process can reduce the bit depth associated with some or all of the coefficients. The degree of quantification can be modified by adjusting a quantification parameter. In some examples, the quantization module 54 can then perform a matrix scan that includes the quantified transformation coefficients. Alternatively, the entropy coding module 56 can perform the scan.

[62] Tras la cuantificación, el módulo de codificación por entropía 56 codifica por entropía los coeficientes de[62] After quantification, the entropy coding module 56 encodes entropy the coefficients of

transformación cuantificados. Por ejemplo, el módulo de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa según el contexto (CAVLC), una codificación aritmética binaria adaptativa según el contexto (CABAC), una codificación aritmética binaria adaptativa según el contexto basándose en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Tras la codificación por entropía realizada por el módulo de codificación por entropía 56, el flujo de bits codificado puede transmitirse al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación mediante el descodificador de vídeo 30. El módulo de codificación por entropía 56 también puedequantified transformation. For example, the entropy coding module 56 can perform adaptive variable length coding according to the context (CAVLC), an adaptive binary arithmetic coding according to the context (CABAC), an adaptive binary arithmetic coding according to the context based on the syntax ( SBAC), an entropy coding by division of probability intervals (PIPE) or other entropy coding methodology or technique. Following the entropy coding performed by the entropy coding module 56, the encoded bit stream can be transmitted to the video decoder 30, or archived for later transmission or recovery by the video decoder 30. The entropy coding module 56 also can

realizar la codificación por entropía de los vectores de movimiento y los otros elementos sintácticos para elperform entropy coding of motion vectors and other syntactic elements for the

fragmento de vídeo actual que se está codificando.Current video snippet that is being encoded.

[63] El módulo de cuantificación inversa 58 y el módulo de transformación inversa 60 aplican una cuantificación[63] The inverse quantization module 58 and the inverse transformation module 60 apply a quantification

inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, para su uso posterior como un bloque de referencia de una imagen de referencia. El módulo de compensación de movimiento 44 puede calcular un bloque de referencia sumando el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. El módulo de compensación deinverse and an inverse transformation, respectively, to reconstruct the residual block in the pixel domain, for later use as a reference block of a reference image. The motion compensation module 44 can calculate a reference block by adding the residual block to a predictive block of one of the reference images of one of the reference image lists. The compensation module of

movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcularmovement 44 can also apply one or more interpolation filters to the reconstructed residual block to calculate

valores de píxeles fraccionarios para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento generado por el módulo de compensación defractional pixel values for use in motion estimation. Adder 62 adds the reconstructed residual block to the predictive block with motion compensation generated by the compensation module of

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64.movement 44 to generate a reference block for storage in the reference image memory 64.

[64] Antes del almacenamiento en la memoria 64, el bloque residual reconstruido se puede filtrar mediante uno o más filtros. Si se desea, el filtro 72 de desbloqueo también se puede aplicar para filtrar los bloques residuales reconstruidos con el fin de eliminar las distorsiones de bloqueo. También pueden utilizarse otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Un ejemplo de estos otros filtros es el filtro SAO 74. El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la inter-predicción de un bloque en una imagen o trama de vídeo subsiguiente.[64] Prior to storage in memory 64, the reconstructed residual block can be filtered by one or more filters. If desired, the release filter 72 can also be applied to filter the reconstructed residual blocks in order to eliminate blockage distortions. Other loop filters can also be used (either in the encoding loop or after the encoding loop) to smooth pixel transitions or otherwise improve video quality. An example of these other filters is the SAO filter 74. The motion estimation module 42 and the motion compensation module 44 can use the reference block as a reference block to perform the inter-prediction of a block in an image or subsequent video frame.

[65] El filtro SAO 74 puede determinar valores de desplazamiento para el filtrado SAO de una manera que mejora la calidad de la codificación de vídeo. La mejora de la calidad de codificación de vídeo puede, por ejemplo, implicar la determinación de valores de desplazamiento que hacen que una imagen reconstruida se asemeje más a una imagen original. El codificador 20 de vídeo puede, por ejemplo, codificar los datos de vídeo utilizando múltiples pasadas con diferentes valores de desplazamiento y elegir, para su inclusión en un flujo de bits codificado, los valores de desplazamiento que ofrecen la mejor calidad de codificación, determinada basándose en un cálculo de distorsión de velocidad.[65] The SAO 74 filter can determine offset values for the SAO filtering in a manner that improves the quality of the video encoding. Improving the quality of video encoding may, for example, involve the determination of offset values that make a reconstructed image more closely resemble an original image. The video encoder 20 can, for example, encode the video data using multiple passes with different offset values and choose, for inclusion in an encoded bit stream, the offset values that offer the best encoding quality, determined based on in a speed distortion calculation.

[66] En algunas configuraciones, el filtro SAO 74 puede configurarse para aplicar dos tipos de desplazamiento (por ejemplo, desplazamiento de banda y desplazamiento de borde) como se describió anteriormente. El filtro SAO 74 también puede a veces no aplicar desplazamiento, lo cual puede considerarse un tercer tipo de desplazamiento. El tipo de desplazamiento aplicado por el filtro SAO 74 puede señalarse explícita o implícitamente a un descodificador de vídeo. Al aplicar el desplazamiento del borde, los píxeles pueden clasificarse según la información de borde de acuerdo con la FIG. 2 y un filtro se puede determinar basándose en la clasificación de los bordes. Al aplicar el desplazamiento de banda, el filtro SAO 74 puede clasificar píxeles en diferentes bandas basándose en un valor de píxel, tal como un valor de intensidad, teniendo cada banda un desplazamiento asociado.[66] In some configurations, the SAO 74 filter can be configured to apply two types of offset (eg, band offset and edge offset) as described above. The SAO filter 74 may also sometimes not apply displacement, which can be considered a third type of displacement. The type of offset applied by the SAO 74 filter can be explicitly or implicitly signaled to a video decoder. When applying the offset of the border, the pixels can be classified according to the border information according to FIG. 2 and a filter can be determined based on the classification of the edges. By applying the band offset, the SAO 74 filter can classify pixels in different bands based on a pixel value, such as an intensity value, each band having an associated offset.

[67] Con el fin de señalar y generar los desplazamientos para las diversas bandas, el filtro SAO 74 puede agrupar las treinta y dos bandas en dos o más grupos, como se muestra en los ejemplos de las FIGs. 3A y 3B. El filtro SAO 74 puede, por ejemplo, agrupar cada una de las treinta y dos bandas en dos grupos (es decir, dos grupos de dieciséis bandas). Aunque esta divulgación en general describe bandas de agrupación en dos grupos de igual tamaño, también se pueden usar más de dos grupos y grupos de tamaños desiguales. Esta divulgación describe técnicas para determinar cómo se determinan estos grupos.[67] In order to signal and generate the displacements for the various bands, the SAO filter 74 can group the thirty-two bands into two or more groups, as shown in the examples of FIGs. 3A and 3B. The SAO 74 filter can, for example, group each of the thirty-two bands into two groups (ie, two groups of sixteen bands). Although this disclosure generally describes grouping bands in two groups of equal size, more than two groups and groups of unequal sizes can also be used. This disclosure describes techniques to determine how these groups are determined.

[68] Cada banda puede abarcar un rango de valores de píxeles. Un valor de píxel puede ser, por ejemplo, un valor de intensidad de píxel y puede describir cualquiera de un valor RGB, un valor de luminancia, un valor de crominancia, o cualquier otro tipo de valor de píxel. Las técnicas descritas en esta divulgación pueden, por ejemplo, aplicarse a las muestras de croma de los datos de vídeo, a las muestras de luma de los datos de vídeo, o a las muestras de croma y luma de los datos de vídeo.[68] Each band can cover a range of pixel values. A pixel value can be, for example, a pixel intensity value and can describe any of an RGB value, a luminance value, a chrominance value, or any other type of pixel value. The techniques described in this disclosure may, for example, be applied to chroma samples of video data, luma samples of video data, or chroma and luma samples of video data.

[69] En algunas implementaciones, un primer grupo de bandas puede centrarse en el centro del rango de valores de píxeles posibles (es decir, max/2). Así, por ejemplo, si el rango de valores de píxeles es 0-255, el centro del primer grupo de bandas podría estar entre el valor de píxel 127 y el valor de píxel 128, con el primer grupo abarcando valores de 64-191. Una primera parte del segundo grupo puede abarcar valores de píxeles 0-63 y una segunda parte del segundo grupo puede abarcar valores de píxeles de 192 a 255. El primer grupo incluye dieciséis bandas, y el segundo grupo incluye dieciséis bandas (ocho bandas en la primera parte y ocho bandas en la segunda parte). Este ejemplo de agrupación se muestra en la FIG. 3A. Si bien los ejemplos de esta divulgación en general suponen que cada banda de las treinta y dos bandas tiene el mismo tamaño, en algunas implementaciones, se pueden usar bandas de tamaño desigual.[69] In some implementations, a first group of bands may focus on the center of the range of possible pixel values (ie, max / 2). Thus, for example, if the range of pixel values is 0-255, the center of the first band group could be between pixel value 127 and pixel value 128, with the first group encompassing values of 64-191. A first part of the second group can cover pixel values 0-63 and a second part of the second group can cover pixel values from 192 to 255. The first group includes sixteen bands, and the second group includes sixteen bands (eight bands in the first part and eight bands in the second part). This grouping example is shown in FIG. 3A. While the examples of this disclosure generally assume that each band of the thirty-two bands has the same size, in some implementations, bands of unequal size can be used.

[70] De acuerdo con las técnicas de esta divulgación, el filtro SAO 74 puede determinar de manera adaptativa el centro del primer grupo en lugar de usar una agrupación estática de bandas. El filtro SAO 74 puede, por ejemplo, determinar el centro del primer grupo basándose en una media o mediana de valores de píxel para los píxeles en una región de una trama. El filtro sAo 74 también puede determinar el centro del primer grupo basándose en el píxel donde se encuentra el pico de un histograma. Una vez que el filtro SAO 74 determina el centro del primer grupo, el filtro SAO 74 puede a continuación determinar el segundo grupo. Nuevamente, suponiendo treinta y dos bandas, el primer grupo puede incluir aproximadamente ocho bandas a la izquierda del centro y aproximadamente ocho bandas a la derecha del centro. Las bandas restantes pueden formar el segundo grupo.[70] In accordance with the techniques of this disclosure, the SAO 74 filter can adaptively determine the center of the first group instead of using a static band grouping. The SAO filter 74 may, for example, determine the center of the first group based on a mean or median pixel value for the pixels in a region of a frame. The sAo 74 filter can also determine the center of the first group based on the pixel where the peak of a histogram is located. Once the SAO filter 74 determines the center of the first group, the SAO filter 74 can then determine the second group. Again, assuming thirty-two bands, the first group may include approximately eight bands to the left of the center and approximately eight bands to the right of the center. The remaining bands can form the second group.

[71] Como ejemplo, supongamos que el valor máximo de píxel es 256, y el filtro SAO 74 determina un centro para un primer grupo de banda, basado en cualquiera de las técnicas descritas anteriormente, en el valor de píxel 90. En tal caso, con relación a la agrupación estática de la FIG. 3A, el primer grupo de bandas puede desplazarse hacia la izquierda, haciendo que la primera parte del segundo grupo sea más pequeña, al mismo tiempo que aumenta la segunda parte del segundo grupo. Sin embargo, si el filtro SAO 74 determina un centro para el primer[71] As an example, suppose the maximum pixel value is 256, and the SAO filter 74 determines a center for a first band group, based on any of the techniques described above, at the pixel value 90. In that case , in relation to the static grouping of FIG. 3A, the first group of bands can move to the left, making the first part of the second group smaller, while increasing the second part of the second group. However, if the SAO filter 74 determines a center for the first

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

grupo de bandas en 170, entonces el primer grupo se desplaza hacia la derecha con relación a la agrupación estática de la FIG. 3A, haciendo que la primera parte del segundo grupo sea más grande y la segunda parte del segundo grupo más pequeña. El filtro SAO 74 puede determinar el centro de acuerdo con cualquiera de las técnicas descritas en esta divulgación para determinar una media, mediana o pico de un valor de histograma, o puede determinarse de alguna otra manera.band group at 170, then the first group moves to the right in relation to the static grouping of FIG. 3A, making the first part of the second group larger and the second part of the second group smaller. The SAO filter 74 may determine the center according to any of the techniques described in this disclosure to determine a mean, median or peak of a histogram value, or it may be determined in some other way.

[72] Después de determinar un centro, el filtro SAO 74 puede determinar un primer grupo de bandas. El filtro SaO 74 puede determinar el primer grupo de bandas identificando las ocho bandas a la izquierda del centro y las ocho bandas a la derecha del centro. En algunos casos, el centro determinado puede encontrarse dentro de una banda. Suponiendo nuevamente 32 bandas iguales (bandas 0-31) y valores de píxel de 0-255, la banda 12 tiene un rango de valores de 96 a 103. Si, por ejemplo, el filtro SAO 74 determina un centro de 99, entonces el centro se encuentra dentro del rango de valores de píxeles cubiertos por la banda 12. En tal caso, el filtro SAO 74 puede configurarse para incluir siempre la banda 12 como una de las ocho bandas a la izquierda del centro o siempre incluir la banda 12 como una de las ocho bandas a la derecha del centro. Si el filtro SAO 74 identifica la banda 12 como una de las ocho bandas a la izquierda del centro, entonces el primer grupo de bandas incluye las bandas 5-20, mientras que el segundo grupo incluye las bandas 0-4 y 21-31. Si el filtro SAO 74 identifica la banda 12 como una de las ocho bandas a la derecha del centro, entonces el primer grupo de bandas incluye las bandas 6-21, mientras que el segundo grupo incluye las bandas 0-5 y las bandas 22-31. El filtro SAO 74 también se puede configurar para determinar si se debe incluir la banda 12 con las bandas a la izquierda del centro o las bandas a la derecha del centro, basándose en dónde se encuentra dentro de la banda. Como 99 está más cerca de 96 que de 103, el filtro SAO 74 puede configurarse para identificar la banda 12 como una de las bandas a la izquierda del centro en respuesta a la determinación de un centro de 99. En respuesta a la determinación de un centro de 101, sin embargo, que está más cerca de 103 que de 96, el filtro SAO 74 puede configurarse para identificar la banda 12 como una de las bandas a la derecha del centro.[72] After determining a center, the SAO filter 74 can determine a first group of bands. The SaO 74 filter can determine the first group of bands by identifying the eight bands to the left of the center and the eight bands to the right of the center. In some cases, the given center can be found within a band. Assuming again 32 equal bands (bands 0-31) and pixel values of 0-255, band 12 has a range of values from 96 to 103. If, for example, the SAO 74 filter determines a center of 99, then the center is within the range of pixel values covered by band 12. In this case, the SAO 74 filter can be configured to always include band 12 as one of the eight bands to the left of the center or always include band 12 as one of the eight bands to the right of the center. If the SAO filter 74 identifies band 12 as one of the eight bands to the left of the center, then the first group of bands includes bands 5-20, while the second group includes bands 0-4 and 21-31. If the SAO filter 74 identifies band 12 as one of the eight bands to the right of the center, then the first group of bands includes bands 6-21, while the second group includes bands 0-5 and bands 22- 31. The SAO filter 74 can also be configured to determine whether band 12 should be included with the bands to the left of the center or the bands to the right of the center, based on where it is within the band. Since 99 is closer to 96 than 103, the ODS filter 74 can be configured to identify band 12 as one of the bands to the left of the center in response to the determination of a center of 99. In response to the determination of a center 101, however, which is closer to 103 than 96, the SAO filter 74 can be configured to identify band 12 as one of the bands to the right of center.

[73] Aunque las técnicas de esta divulgación se han descrito en general usando ejemplos con treinta y dos bandas y dos grupos de dieciséis bandas, las técnicas de esta divulgación son en general aplicables a esquemas de SAO que usan más o menos bandas y más o menos grupos. Como uno de muchos ejemplos posibles, las técnicas de esta divulgación se pueden usar para determinar un primer grupo de cuatro bandas y un segundo grupo de veintiocho bandas, suponiéndose que todos los desplazamientos para el segundo grupo tienen un valor de cero. En otro ejemplo, se pueden usar dieciséis bandas, sesenta y cuatro bandas o alguna otra cantidad de bandas.[73] Although the techniques of this disclosure have been generally described using examples with thirty-two bands and two groups of sixteen bands, the techniques of this disclosure are generally applicable to ODS schemes that use more or less bands and more or less groups As one of many possible examples, the techniques of this disclosure can be used to determine a first group of four bands and a second group of twenty-eight bands, assuming that all displacements for the second group have a value of zero. In another example, sixteen bands, sixty-four bands or some other number of bands can be used.

[74] El filtro SAO 74 puede generar y señalar desplazamientos para las bandas basándose en estas agrupaciones. Para cada grupo de bandas (suponiendo de nuevo grupos de dieciséis bandas), se pueden determinar dieciséis valores de desplazamiento y señalarse en el flujo de bits de vídeo codificado para usarlos en un descodificador de vídeo. En un ejemplo, el número de bits requeridos para enviar un grupo de dieciséis valores de desplazamiento de banda se puede reducir aprovechando las correlaciones entre los valores de desplazamiento de banda dentro del grupo. En otro ejemplo, los valores de desplazamiento de banda de una partición vecina se pueden usar para predecir los valores de desplazamiento de banda para un grupo de una partición actual. La partición vecina puede ser una partición causal para la partición actual (es decir, la partición vecina ya ha sido codificada). Los ejemplos de particiones vecinas incluyen particiones vecinas espacialmente tales como las particiones anteriores o a la izquierda de la partición actual, o particiones temporalmente vecinas tales como particiones en tramas previamente codificadas (por ejemplo, particiones co-ubicadas).[74] The SAO 74 filter can generate and signal displacements for bands based on these groupings. For each band group (again assuming sixteen band groups), sixteen offset values can be determined and signaled in the bit stream of encoded video for use in a video decoder. In one example, the number of bits required to send a group of sixteen band offset values can be reduced by taking advantage of the correlations between band offset values within the group. In another example, the band offset values of a neighboring partition can be used to predict the band offset values for a group of a current partition. The neighboring partition can be a causal partition for the current partition (that is, the neighboring partition has already been encoded). Examples of neighboring partitions include spatially neighboring partitions such as the previous or left partitions of the current partition, or temporarily neighboring partitions such as partitions in previously encoded frames (eg, co-located partitions).

[75] Las técnicas para encontrar un centro se pueden aplicar a cada LCU o a grupos de LCU. Las técnicas pueden, por ejemplo, aplicarse a regiones de una trama que se determinan de manera análoga a la división de árbol cuádruple analizada anteriormente. Una trama puede dividirse en cuatro regiones; cada región puede dividirse en cuatro regiones más pequeñas, y así sucesivamente. El filtro SAO 74 puede determinar valores centrales como se describió anteriormente basándose en todos los valores de píxel dentro de un grupo de LCU u otra región de trama o puede determinar valores centrales submuestreando píxeles de una manera que utiliza menos que todos los valores de píxel disponibles en el LCU o grupo de LCU.[75] The techniques for finding a center can be applied to each LCU or to LCU groups. The techniques can, for example, be applied to regions of a frame that are determined analogously to the quadruple tree division discussed above. A plot can be divided into four regions; Each region can be divided into four smaller regions, and so on. The SAO filter 74 can determine core values as described above based on all pixel values within an LCU group or other frame region or it can determine core values by subsampling pixels in a way that uses less than all available pixel values. in the LCU or LCU group.

[76] El codificador de vídeo 20 de la FIG. 4 representa un ejemplo de un codificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basado en los valores de; dividir las bandas de valores de píxeles en grupos basándose en el valor central; y, determinar valores de desplazamiento para las bandas basándose en los grupos. El codificador de vídeo 20 puede determinar un centro para un primer conjunto de píxeles determinando un valor medio para el conjunto de píxeles, determinando un valor mediano para el conjunto de píxeles y/o determinando el píxel donde se encuentra el pico de un histograma. El codificador de vídeo 20 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El codificador de vídeo 20 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua. El codificador de vídeo 20 también puede señalar valores de desplazamiento de banda a un descodificador de vídeo basándose en los grupos. En algunas implementaciones, el codificador de vídeo 20 puede generar un elemento sintáctico para su inclusión en un flujo de bits codificado que indica el valor central determinado. En algunos casos, el elemento sintáctico puede[76] The video encoder 20 of FIG. 4 represents an example of a video encoder configured to determine a central value for a set of pixels based on the values of; divide bands of pixel values into groups based on the central value; and, determine offset values for bands based on groups. The video encoder 20 can determine a center for a first set of pixels by determining an average value for the set of pixels, determining a median value for the set of pixels and / or determining the pixel where the peak of a histogram is located. The video encoder 20 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a second band offset of the first group. The video encoder 20 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a particular band offset for a contiguous partition. The video encoder 20 can also signal band offset values to a video decoder based on the groups. In some implementations, video encoder 20 can generate a syntactic element for inclusion in an encoded bit stream indicating the determined core value. In some cases, the syntactic element may

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

ser una indicación explícita del centro determinado para un grupo de bandas, pero el elemento sintáctico no necesariamente tiene que ser una indicación explícita del centro determinado. Por ejemplo, el valor central puede identificar la primera o la última banda de un grupo particular para permitir que un descodificador de vídeo reconstruya las mismas agrupaciones de bandas determinadas por el codificador de vídeo 20. En tal caso, las agrupaciones de bandas reconstruidas por el descodificador de vídeo se pueden alinear al mismo centro que las agrupaciones determinadas por el codificador de vídeo, aunque el centro no se señale explícitamente en el flujo de bits codificado.be an explicit indication of the given center for a group of bands, but the syntactic element does not necessarily have to be an explicit indication of the given center. For example, the central value may identify the first or last band of a particular group to allow a video decoder to reconstruct the same band groupings determined by video encoder 20. In this case, the band groupings reconstructed by the Video decoders can be aligned to the same center as the groupings determined by the video encoder, even if the center is not explicitly signaled in the encoded bit stream.

[77] La FIG. 5 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la FIG. 5, el descodificador de vídeo 30 incluye un módulo de descodificación por entropía 80, un módulo de predicción 81, un módulo de cuantificación inversa 86, un módulo de transformación inversa 88, un sumador 90, y memoria de imágenes de referencia 92. El módulo de predicción 81 incluye un módulo de compensación de movimiento 82 y un módulo de intra-predicción 84. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación que en general es recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 4.[77] FIG. 5 is a block diagram illustrating an example of video decoder 30 that can implement the techniques described in this disclosure. In the example of FIG. 5, the video decoder 30 includes an entropy decoding module 80, a prediction module 81, a reverse quantization module 86, a reverse transformation module 88, an adder 90, and reference image memory 92. The module Prediction 81 includes a motion compensation module 82 and an intra-prediction module 84. In some examples, the video decoder 30 can perform a decoding pass that is generally reciprocal to the described encoding pass with respect to the encoder of video 20 of FIG. Four.

[78] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. El módulo de descodificación por entropía 80 del descodificador de vídeo 30 realiza la descodificación por entropía del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. El módulo de descodificación por entropía 80 remite los vectores de movimiento y otros elementos sintácticos al módulo de predicción 81. El descodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel del fragmento de vídeo y/o el nivel del bloque de vídeo.[78] During the decoding process, the video decoder 30 receives a bit stream of encoded video representing video blocks of an encoded video fragment and associated syntactic elements, from the video encoder 20. The decoding module by entropy 80 of video decoder 30 performs decoding by entropy of the bit stream to generate quantified coefficients, motion vectors and other syntactic elements. The entropy decoding module 80 refers the motion vectors and other syntactic elements to the prediction module 81. The video decoder 30 can receive the syntactic elements at the level of the video fragment and / or the level of the video block.

[79] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), el módulo de predicción intra 84 del módulo de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de predicción intra señalado y datos de bloques descodificados previamente de la trama o imagen actual. Cuando la trama de vídeo es codificada como un fragmento inter-codificado (es decir, B, P o GPB), el módulo de compensación de movimiento 82 del módulo de predicción 81 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos 55 recibidos desde el módulo de descodificación por entropía 80. Los bloques predictivos pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.[79] When the video fragment is encoded as an intracoded fragment (I), the intra prediction module 84 of the prediction module 81 can generate prediction data for a video block of the current video fragment, based on a mode of Intra-pointed prediction and previously decoded block data of the current frame or image. When the video frame is encoded as an inter-encoded fragment (ie, B, P or GPB), the motion compensation module 82 of the prediction module 81 generates predictive blocks for a video block of the current video fragment, based on motion vectors and other syntactic elements 55 received from the entropy decoding module 80. Predictive blocks can be generated from one of the reference images within one of the reference image lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using predetermined construction techniques based on the reference images stored in the reference image memory 92.

[80] El módulo de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para bloque de vídeo actual que se está descodificando. Por ejemplo, el módulo de compensación de movimiento 82 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intra-predicción o inter-predicción), usada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de inter-predicción (por ejemplo, fragmento B, fragmento P o fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo inter-codificado del fragmento, estado de inter-predicción para cada bloque de vídeo inter-codificado del fragmento y otra información, para descodificar los bloques de vídeo en el fragmento de vídeo actual.[80] Motion compensation module 82 determines the prediction information for a video block of the current video fragment by analyzing the motion vectors and other syntactic elements, and uses the prediction information to generate the predictive blocks for video block current that is being decoded. For example, motion compensation module 82 uses some of the received syntactic elements to determine a prediction mode (for example, intra-prediction or inter-prediction), used to encode the video blocks of the video fragment, a type inter-prediction fragment (eg, fragment B, fragment P or fragment GPB), construction information for one or more of the reference image lists for the fragment, motion vectors for each block of inter-encoded video of the fragment, inter-prediction status for each block of inter-encoded video of the fragment and other information, to decode the video blocks in the current video fragment.

[81] El módulo de compensación de movimiento 82 también puede realizar la interpolación basándose en filtros de interpolación. El módulo de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles sub-enteros de bloques de referencia. En este caso, el módulo de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para generar bloques predictivos.[81] Motion compensation module 82 can also perform interpolation based on interpolation filters. Motion compensation module 82 may use interpolation filters such as those used by video encoder 20 during video block encoding to calculate interpolated values for sub-integer pixels of reference blocks. In this case, the motion compensation module 82 can determine the interpolation filters used by the video encoder 20 from the received syntactic elements and use the interpolation filters to generate predictive blocks.

[82] El módulo de cuantificación inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y descodificados por el módulo de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse. El módulo de transformación inversa 88 aplica una transformación inversa, por ejemplo, una DCT inversa, una transformación inversa entera o un proceso de transformación inversa conceptualmente similar a los coeficientes de transformación, a fin de producir bloques residuales en el dominio de píxeles.[82] The inverse quantization module 86 quantifies inversely, that is, it quantifies, the quantified transformation coefficients provided in the bit stream and decoded by the entropy decoding module 80. The inverse quantization process may include the use of a quantification parameter calculated by the video encoder 20 for each video block in the video fragment, to determine a degree of quantification and, also, a degree of inverse quantification that should be applied. The inverse transformation module 88 applies an inverse transformation, for example, an inverse DCT, an entire inverse transformation or an inverse transformation process conceptually similar to the transformation coefficients, in order to produce residual blocks in the pixel domain.

[83] Después de que el módulo de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales del módulo de transformación inversa[83] After the motion compensation module 82 generates the predictive block for the current video block based on the motion vectors and other syntactic elements, the video decoder 30 forms a decoded video block by adding the residual blocks of the reverse transformation module

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

88 y los correspondientes bloques predictivos generados por el módulo de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operación de suma. Los bloques de vídeo descodificados formados por el sumador 90 pueden a continuación ser filtrados por un filtro de desbloqueo 93, un filtro SAO 94 y un filtro de bucle adaptativo 95. Los bloques de vídeo descodificados en una trama o imagen dada son a continuación almacenados en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La memoria de imágenes de referencia 92 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.88 and the corresponding predictive blocks generated by the motion compensation module 82. Adder 90 represents the component or components that perform this summing operation. The decoded video blocks formed by adder 90 can then be filtered by an unblocking filter 93, an ODS filter 94 and an adaptive loop filter 95. The decoded video blocks in a given frame or image are then stored in reference image memory 92, which stores reference images used for subsequent motion compensation. Reference image memory 92 also stores decoded video for later display in a display device, such as display device 32 of FIG. one.

[84] El filtro SAO 94 puede configurarse para aplicar el mismo filtrado (por ejemplo, desplazamiento de borde y desplazamiento de banda) como filtro SAO 74 descrito anteriormente. De esta manera, como parte de la realización del desplazamiento de banda, el filtro SAO 74 puede determinar un valor central para un primer grupo de bandas como se describió anteriormente en referencia a la FIG. 4. El valor central puede, por ejemplo, determinarse basándose en una métrica tal como el valor medio de píxeles, el valor mediano de píxeles, o determinado basándose en un píxel donde el pico de un histograma corresponde a una LCU o un grupo de LCU.[84] The SAO 94 filter can be configured to apply the same filtering (for example, edge offset and band offset) as the SAO 74 filter described above. Thus, as part of the realization of the band offset, the SAO filter 74 can determine a central value for a first group of bands as described above in reference to FIG. 4. The central value can, for example, be determined based on a metric such as the average pixel value, the median pixel value, or determined based on a pixel where the peak of a histogram corresponds to an LCU or a group of LCU .

[85] En algunas implementaciones, el filtro SAO 94 puede recibir en el flujo de bits de vídeo una indicación de un centro determinado en un codificador de vídeo. La indicación puede tomar la forma de un valor central real calculado por un codificador de vídeo o puede tomar la forma de una identificación de una primera banda para el primer grupo, una indicación de una última banda de una primera parte de un segundo grupo, un valor medio para el primer grupo, u otro tipo de información que permita que el filtro SAO 94 determine la misma agrupación de bandas utilizada por un codificador de vídeo. Basándose en un primer grupo y un segundo grupo determinados basándose en el valor central, el filtro SAO 94 puede generar valores de desplazamiento basándose en la información recibida en un flujo de bits de vídeo codificado. Para uno de los grupos, como el segundo grupo, se puede suponer que todos los valores de desplazamiento son iguales a cero.[85] In some implementations, the SAO 94 filter may receive an indication of a particular center in a video encoder in the video bit stream. The indication can take the form of a real central value calculated by a video encoder or it can take the form of an identification of a first band for the first group, an indication of a last band of a first part of a second group, a average value for the first group, or other information that allows the SAO 94 filter to determine the same band grouping used by a video encoder. Based on a first group and a second group determined based on the core value, the SAO filter 94 can generate offset values based on the information received in a bit stream of encoded video. For one of the groups, such as the second group, it can be assumed that all offset values are equal to zero.

[86] Para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando un valor de píxel medio para el grupo de LCU. El filtro SAO 94 puede determinar el valor medio del píxel sumando los valores de píxel de todos o algunos de los píxeles en el grupo de LCU y dividiendo por el número de píxeles cuyos valores forman parte de la suma, siendo el valor resultante el valor medio del píxel para el grupo de LCU. La unidad de filtro SAO 94 puede entonces usar el valor medio de píxel determinado de la manera descrita anteriormente para determinar agrupaciones de bandas.[86] For an LCU group, the SAO 94 filter can determine a central value by determining an average pixel value for the LCU group. The SAO 94 filter can determine the average pixel value by adding the pixel values of all or some of the pixels in the LCU group and dividing by the number of pixels whose values are part of the sum, the resulting value being the average value of the pixel for the LCU group. The SAO 94 filter unit can then use the average pixel value determined in the manner described above to determine band groupings.

[87] De forma alternativa, para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando un valor medio de píxeles para el grupo de LCU. El filtro SAO 94 puede determinar el valor de píxel mediano identificando el valor en el que la mitad de los valores de píxel del grupo de LCU es mayor que el valor, y la mitad de los valores de píxel para el grupo de LCU es menor que el valor. La unidad de filtro SAO 94 puede usar entonces el valor de píxel medio determinado de la manera descrita anteriormente para determinar agrupaciones de bandas.[87] Alternatively, for an LCU group, the SAO 94 filter can determine a central value by determining an average pixel value for the LCU group. The SAO 94 filter can determine the median pixel value by identifying the value at which half of the pixel values of the LCU group is greater than the value, and half of the pixel values for the LCU group is less than the value. The SAO filter unit 94 can then use the average pixel value determined in the manner described above to determine band groupings.

[88] De forma alternativa, para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando dónde se encuentra el pico de un histograma para una LCU o un grupo de LCU. En general, se puede considerar que un histograma es una representación estadística de la distribución de los valores de píxel para el grupo de LCU. Por lo tanto, el filtro SAO 94 puede determinar el pico del histograma identificando el valor de píxel o los valores de píxel que aparecen con mayor frecuencia en el grupo de LCU. La unidad de filtro SAO 94 puede entonces usar el valor determinado del pico en el histograma de la manera descrita anteriormente para determinar agrupaciones de bandas.[88] Alternatively, for an LCU group, the SAO 94 filter can determine a central value by determining where the peak of a histogram for an LCU or an LCU group is located. In general, a histogram can be considered a statistical representation of the distribution of pixel values for the LCU group. Therefore, the SAO 94 filter can determine the peak of the histogram by identifying the pixel value or pixel values that appear most frequently in the LCU group. The SAO filter unit 94 can then use the determined value of the peak in the histogram in the manner described above to determine band groupings.

[89] Los tres ejemplos de cómo determinar un valor central (p. ej., media, mediana, pico del histograma) pueden realizarse mediante uno o ambos filtros SAO 74 y SAO 94 y no son las tres únicas técnicas posibles por las que puede determinarse un valor central. Se contempla que las técnicas de esta divulgación, que en general se refieren a determinar dinámicamente las agrupaciones de bandas para señalar valores de desplazamiento de banda, pueden ser compatibles con otras técnicas de este tipo para determinar un valor central.[89] The three examples of how to determine a central value (eg, mean, median, peak of the histogram) can be performed using one or both filters SAO 74 and SAO 94 and are not the only three possible techniques by which you can determine a central value. It is contemplated that the techniques of this disclosure, which generally refer to dynamically determining band groupings to indicate band offset values, may be compatible with other techniques of this type to determine a central value.

[90] El descodificador de vídeo 30 de la FIG. 5 representa un ejemplo de un descodificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basándose en los valores de los píxeles, dividir las bandas de valores de píxeles en grupos basándose en el valor central y determinar valores de desplazamiento para las bandas basándose en los grupos. En algunas implementaciones, el descodificador de vídeo 30 puede determinar el valor central al recibir un elemento sintáctico que indica el valor central. Como se describió anteriormente, el elemento sintáctico puede ser o no una indicación explícita del valor central. En algunas implementaciones, el descodificador de vídeo 30 puede determinar el valor central determinando un valor medio para el conjunto de píxeles, determinando un valor medio para el conjunto de píxeles, y/o determinando el píxel donde se encuentra el pico de un histograma. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de[90] The video decoder 30 of FIG. 5 represents an example of a video decoder configured to determine a central value for a set of pixels based on pixel values, divide the bands of pixel values into groups based on the central value and determine offset values for the bands based on the groups. In some implementations, video decoder 30 may determine the core value upon receiving a syntactic element indicating the core value. As described above, the syntactic element may or may not be an explicit indication of the core value. In some implementations, video decoder 30 can determine the central value by determining an average value for the set of pixels, determining an average value for the set of pixels, and / or determining the pixel where the peak of a histogram is located. The video decoder 30 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a second band offset of the first group. The video decoder 30 can determine offset values for the bands based on the groups generating a value of

55

1010

15fifteen

20twenty

2525

3030

3535

4040

45Four. Five

50fifty

5555

6060

6565

desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua. El descodificador de vídeo 30 también puede reconstruir los valores de desplazamiento de banda señalados desde un codificador de vídeo basándose en los grupos.band offset for a band of a first group based on a particular band offset for a contiguous partition. The video decoder 30 can also reconstruct the band offset values signaled from a video encoder based on the groups.

[91] De esta manera, el descodificador de vídeo 30 de la FIG. 5 representa un ejemplo de un descodificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basándose en valores de píxeles para el grupo; dividir las bandas de valores de píxeles en grupos basándose en el valor central; y determinar valores de desplazamiento para las bandas basándose en los grupos. El descodificador de vídeo 30 puede determinar el valor central recibiendo un elemento sintáctico que indica el valor central, determinar el valor central determinando un valor medio para el conjunto de píxeles, determinar el valor central determinando un valor mediano para el conjunto de píxeles, o determinar el valor central comprende determinar el píxel donde se encuentra el pico de un histograma. El conjunto de píxeles puede, por ejemplo, incluir un grupo de unidades de codificación (LCU) más grandes. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua.[91] Thus, the video decoder 30 of FIG. 5 represents an example of a video decoder configured to determine a central value for a set of pixels based on pixel values for the group; divide bands of pixel values into groups based on the central value; and determine offset values for bands based on groups. The video decoder 30 can determine the central value by receiving a syntactic element indicating the central value, determine the central value by determining an average value for the set of pixels, determine the central value by determining a median value for the set of pixels, or determine The central value comprises determining the pixel where the peak of a histogram is located. The pixel set may, for example, include a group of larger coding units (LCUs). The video decoder 30 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a second band offset of the first group. The video decoder 30 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a particular band offset for a contiguous partition.

[92] La FIG. 6 muestra un diagrama de flujo que ilustra las técnicas de filtrado SAO descritas en esta divulgación. Las técnicas de la FIG. 6 puede realizarse mediante un codificador de vídeo con un módulo de filtrado SAO tal como un codificador de vídeo 20 o un descodificador de vídeo 30. Las técnicas de la FIG. 6 se describirán con referencia al descodificador de vídeo 30, aunque debe entenderse que las técnicas de la FIG. 6 son aplicables a una amplia gama de dispositivos de codificación de vídeo y no están limitadas solo a descodificadores de vídeo.[92] FIG. 6 shows a flow chart illustrating the SAO filtering techniques described in this disclosure. The techniques of FIG. 6 can be performed by a video encoder with an SAO filtering module such as a video encoder 20 or a video decoder 30. The techniques of FIG. 6 will be described with reference to video decoder 30, although it should be understood that the techniques of FIG. 6 are applicable to a wide range of video encoding devices and are not limited only to video decoders.

[93] El descodificador de vídeo 30 determina un valor central para un conjunto de píxeles basándose en valores de píxeles (610). El descodificador de vídeo 30 puede, por ejemplo, determinar el valor central determinando un valor medio para el conjunto de píxeles, determinando un valor medio para el conjunto de píxeles, determinando un píxel donde se encuentra el pico de un histograma. El descodificador de vídeo 30 divide las bandas de valores de píxeles en grupos basándose en el valor central (620). El descodificador de vídeo 30 determina los valores de desplazamiento para las bandas basándose en los grupos (630). El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 también puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua.[93] Video decoder 30 determines a central value for a set of pixels based on pixel values (610). The video decoder 30 can, for example, determine the central value by determining an average value for the set of pixels, determining an average value for the set of pixels, determining a pixel where the peak of a histogram is located. The video decoder 30 divides the bands of pixel values into groups based on the central value (620). The video decoder 30 determines the offset values for the bands based on the groups (630). The video decoder 30 can determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a second band offset of the first group. The video decoder 30 can also determine offset values for the bands based on the groups by generating a band offset value for a band of a first group based on a particular band offset for a contiguous partition.

[94] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de estos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, en un medio legible por ordenador o 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 tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento tangibles legibles por ordenador que son no transitorios, o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser medios disponibles cualesquiera a los que se puede acceder desde 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 divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.[94] In one or more examples, the described functions can be implemented in hardware, software, firmware or any combination of these. If implemented in software, the functions can be stored in or transmitted through, as one or more instructions or code, in a computer-readable medium or executed through a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to a tangible media such as data storage media or communication media that include any media that facilitates the transfer of a computer program from one location to another. , for example, according to a communication protocol. Thus, the computer-readable media may generally correspond to (1) a computer-readable tangible storage media that are non-transient, or (2) a communication medium such as a signal or a carrier wave. The data storage media may be any available media that can be accessed from one or more computers or one or more processors to retrieve instructions, code and / or data structures for the implementation of the techniques described in this disclosure. A computer program product may include a computer readable medium.

[95] A modo de ejemplo, y no de manera limitativa, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. También, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse 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, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, tal como se utiliza en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos habitualmente emiten datos magnéticamente, mientras que otros discos emiten datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de los medios legibles por ordenador.[95] 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 means that can be used to store desired program code in the form of instructions or data structures and which can be accessed by a computer. Also, any connection duly receives the name of computer readable media. For example, if instructions are transmitted from a website, server or other remote source using a 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 in 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 instead are geared towards tangible non-transient storage media. The term disc, as used herein, includes a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a flexible disc and a Blu-ray disc, where some discs they usually emit data magnetically, while other discs emit data optically with lasers. Combinations of the above should also be included within the scope of computer readable media.

[96] 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 específicos de la aplicación (ASIC), formaciones lógicas programables en el terreno (FPGA) u otros circuitos lógicos integrados o discretos[96] The instructions can be executed by one or more processors, such as one or more digital signal processors (DSP), general purpose microprocessors, application specific integrated circuits (ASIC), field programmable logic formations (FPGA) ) or other integrated or discrete logic circuits

5 equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y la descodificación, o incorporarse en un codec combinado. Además, las técnicas podrían5 equivalents Accordingly, the term "processor", as used herein, may refer to any of the above structures or to any other structure suitable for the implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. In addition, the techniques could

10 implementarse completamente en uno o más circuitos o elementos lógicos.10 be fully implemented in one or more circuits or logical elements.

[97] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos[97] The techniques of the present disclosure can be implemented in a wide variety of devices or devices, including a cordless telephone, an integrated circuit (IC) or a set of ICs (eg, a chipset). Various components, modules or units are described in this disclosure to emphasize aspects

15 funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de codec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.15 functional devices configured to perform the disclosed techniques, but do not necessarily require their realization through different hardware units. Instead, as described above, various units may be combined in a codec hardware unit or provided by means of a group of interoperable hardware units, which include one or more processors such as those described above, in conjunction with software and / or adequate firmware.

20twenty

[98] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.[98] Various examples have been described. These and other examples are within the scope of the following claims.

Claims (12)

1010 15fifteen 20twenty 2.2. 2525 3.3. 3030 4.Four. 3535 4040 5.5. 45 6.45 6. 50 7.50 7. 55 8.55 8. 9.9. 6060 REIVINDICACIONES Un procedimiento de codificación de vídeo para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en bandas, comprendiendo el procedimiento:A video coding method for signaling, in a coded bit stream, the offset values used in the band-based adaptive sample shift (ODS) filtering, the method comprising: agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un intervalo de valores de píxeles, y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas;grouping bands of pixel values into two or more band groups, in which each band of the pixel value bands comprises a range of pixel values, and in which each group of the two or more band groups comprises a or more bands; determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas; caracterizado pordetermine offset values for bands based on the two or more band groups; characterized by determinar (610) valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; ydetermine (610) core values for each of a plurality of sets of pixels, in which for each set the core value is based on the actual values of the pixels in the set; Y en el que, para cada conjunto de píxeles, la agrupación (620) de las bandas de píxeles en dos o más grupos de bandas se determina dinámicamente basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles es adaptativa.wherein, for each pixel set, the grouping (620) of the pixel bands into two or more band groups is determined dynamically based on the central value for the set so that the grouping of bands into pixel sets is adaptive El procedimiento según la reivindicación 1, en el que el procedimiento es realizado por un descodificador de vídeo y para cada conjunto de píxeles, en el que determinar el valor central comprende recibir un elemento sintáctico, y en el que dividir las bandas de valores de píxel en dos o más grupos de bandas comprende determinar los dos o más grupos de bandas basándose en el elemento sintáctico, comprendiendo además el procedimiento la aplicación de un filtro de desplazamiento adaptativo de muestras, SAO, basado en los valores de desplazamiento.The method according to claim 1, wherein the method is performed by a video decoder and for each set of pixels, in which determining the central value comprises receiving a syntactic element, and in which dividing the pixel value bands in two or more groups of bands it comprises determining the two or more groups of bands based on the syntactic element, the method further comprising the application of an adaptive sample displacement filter, ODS, based on the offset values. El procedimiento según la reivindicación 1, en el que el procedimiento se realiza mediante un codificador de vídeo, y en el que el procedimiento comprende adicionalmente para cada conjunto de píxeles:The method according to claim 1, wherein the method is performed by a video encoder, and wherein the method further comprises for each set of pixels: generar un elemento sintáctico para su inclusión en un flujo de bits codificado, en el que el elemento sintáctico indica el valor central.generate a syntactic element for inclusion in an encoded bit stream, in which the syntactic element indicates the central value. El procedimiento según la reivindicación 1, en el que la determinación del valor central comprende uno de:The method according to claim 1, wherein the determination of the core value comprises one of: a) determinar un valor medio para el conjunto de píxeles; oa) determine an average value for the set of pixels; or b) determinar un valor mediano para el conjunto de píxeles; ob) determine a median value for the set of pixels; or c) determinar el valor donde se encuentra el pico de un histograma de los valores de píxel del conjunto.c) determine the value where the peak of a histogram of the set pixel values is located. El procedimiento según la reivindicación 1, en el que cada conjunto de píxeles comprende un grupo de unidades de codificación más grandes, LCU.The method according to claim 1, wherein each set of pixels comprises a group of larger coding units, LCU. El procedimiento según la reivindicación 1, en el que la determinación de valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprende generar un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo.The method according to claim 1, wherein determining offset values for bands based on the two or more band groups comprises generating a band offset value for a band of a first group based on a second band offset from the first group. El procedimiento según la reivindicación 1, en el que determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprende generar un valor de desplazamiento de banda para una banda de un primer grupo en el conjunto actual de píxeles basándose en un desplazamiento de banda determinado para otro conjunto de píxeles.The method according to claim 1, wherein determining offset values for the bands based on the two or more groups of bands comprises generating a band offset value for a band of a first group in the current set of pixels based on a determined band offset for another set of pixels. Un medio de almacenamiento legible por ordenador que almacena instrucciones operables para hacer que uno o más procesadores lleven a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 7.A computer readable storage medium that stores operable instructions to cause one or more processors to carry out the procedure of any one of claims 1 to 7. Un aparato de codificación de vídeo (20; 30) para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en banda, comprendiendo el aparato:A video coding apparatus (20; 30) for signaling, in a coded bit stream, the offset values used in the band-based adaptive sample shift (ODS) filtering, the apparatus comprising: medios (74; 94) para agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un rango de valores de píxel y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas;means (74; 94) for grouping bands of pixel values into two or more groups of bands, in which each band of the pixel value bands comprises a range of pixel values and in which each group of the two or more groups of bands comprises one or more bands; medios (74; 94) para determinar valores de desplazamiento para las bandas basados en los dos o másmeans (74; 94) for determining offset values for bands based on the two or more 55 1010 15fifteen 20twenty 2525 3030 3535 4040 45Four. Five grupos de bandas; caracterizado por:band groups; characterized by: medios (74; 94) para determinar los valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; ymeans (74; 94) for determining the core values for each of a plurality of sets of pixels, in which for each set the core value is based on the actual values of the pixels in the set; Y en el que los medios para agrupar bandas de valores de píxel en dos o más grupos de bandas se configuran dinámicamente para determinar la división de las bandas de píxeles en dos o más grupos de bandas basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles sea adaptativa.wherein the means for grouping bands of pixel values into two or more band groups are dynamically configured to determine the division of pixel bands into two or more band groups based on the core value for the set so that the Grouping bands into pixel sets is adaptive. 10. El aparato según la reivindicación 9, en el que el aparato comprende un descodificador de vídeo (30), y en el que los medios para determinar el valor central comprenden medios para recibir un elemento sintáctico y los medios para dividir las bandas de valores de píxel en dos o más grupos de bandas comprenden medios para determinar los dos o más grupos de bandas basándose en el elemento sintáctico; y en el que el aparato comprende además medios para aplicar un filtro de desplazamiento adaptativo de muestras, SAO, basado en los valores de desplazamiento.10. The apparatus according to claim 9, wherein the apparatus comprises a video decoder (30), and wherein the means for determining the central value comprise means for receiving a syntactic element and means for dividing the value bands Pixel in two or more band groups comprise means for determining the two or more band groups based on the syntactic element; and wherein the apparatus further comprises means for applying an adaptive sample displacement filter, ODS, based on the displacement values. 11. El aparato de la reivindicación 9, en el que el aparato comprende un codificador de vídeo (20), y en el que el aparato comprende, además:11. The apparatus of claim 9, wherein the apparatus comprises a video encoder (20), and wherein the apparatus further comprises: medios para generar un elemento sintáctico para su inclusión en un flujo de bits codificado, en el que el elemento sintáctico indica el valor central.means for generating a syntactic element for inclusion in an encoded bit stream, in which the syntactic element indicates the central value. 12. El aparato de la reivindicación 9, en el que el medio para determinar el valor central comprende uno de:12. The apparatus of claim 9, wherein the means for determining the core value comprises one of: a) medios para determinar un valor medio para el conjunto de píxeles; oa) means for determining an average value for the set of pixels; or b) medios para determinar un valor medio para el conjunto de píxeles; ob) means for determining an average value for the set of pixels; or c) medios para determinar el valor donde se encuentra el pico de un histograma de los valores de píxel del conjunto.c) means to determine the value where the peak of a histogram of the set pixel values is located. 13. El aparato de la reivindicación 9, en el que cada conjunto de píxeles comprende un grupo de unidades de codificación más grandes, LCU.13. The apparatus of claim 9, wherein each set of pixels comprises a group of larger coding units, LCU. 14. El aparato de la reivindicación 9, en el que los medios para determinar los valores de desplazamiento para las14. The apparatus of claim 9, wherein the means for determining the offset values for the bandas basados en los dos o más grupos de bandas comprenden medios para generar un valor debands based on the two or more groups of bands comprise means for generating a value of desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo.band offset for a band of a first group based on a second band offset of the first group. 15. El aparato según la reivindicación 9, en el que los medios para determinar los valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprenden medios para generar un valor de desplazamiento de banda para una banda de un primer grupo en el conjunto actual de píxeles basándose en un desplazamiento de banda determinado para otro conjunto de píxeles.15. The apparatus according to claim 9, wherein the means for determining the offset values for the bands based on the two or more band groups comprise means for generating a band offset value for a band of a first group in the current set of pixels based on a particular band offset for another set of pixels.
ES12795667.0T 2011-11-04 2012-11-02 Adaptive central band offset filter for video encoding Active ES2688359T3 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161556085P 2011-11-04 2011-11-04
US201161556085P 2011-11-04
US13/646,102 US10051289B2 (en) 2011-11-04 2012-10-05 Adaptive center band offset filter for video coding
US201213646102 2012-10-05
PCT/US2012/063273 WO2013067318A1 (en) 2011-11-04 2012-11-02 Adaptive center band offset filter for video coding

Publications (1)

Publication Number Publication Date
ES2688359T3 true ES2688359T3 (en) 2018-11-02

Family

ID=47291233

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12795667.0T Active ES2688359T3 (en) 2011-11-04 2012-11-02 Adaptive central band offset filter for video encoding

Country Status (16)

Country Link
US (1) US10051289B2 (en)
EP (1) EP2774372B1 (en)
JP (1) JP5833249B2 (en)
KR (1) KR101622860B1 (en)
CN (1) CN104012091B (en)
AU (1) AU2012332318B2 (en)
BR (1) BR112014010337B1 (en)
CA (1) CA2853798C (en)
ES (1) ES2688359T3 (en)
HU (1) HUE039957T2 (en)
IL (1) IL232237A (en)
IN (1) IN2014CN03163A (en)
MY (1) MY169625A (en)
SG (1) SG11201401490VA (en)
WO (1) WO2013067318A1 (en)
ZA (1) ZA201404050B (en)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10051289B2 (en) 2011-11-04 2018-08-14 Qualcomm Incorporated Adaptive center band offset filter for video coding
GB201119206D0 (en) * 2011-11-07 2011-12-21 Canon Kk Method and device for providing compensation offsets for a set of reconstructed samples of an image
US9277194B2 (en) * 2011-11-08 2016-03-01 Texas Instruments Incorporated Method and apparatus for image and video coding using hierarchical sample adaptive band offset
BR112014011149A2 (en) 2011-11-08 2017-05-16 Motorola Mobility Llc devices and methods for coding and / or sample adaptive displacement signaling
US9955153B2 (en) 2012-01-05 2018-04-24 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding
US9716882B2 (en) 2012-01-05 2017-07-25 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding and/or selection of edge offset parameters
US20130188741A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Devices and methods for sample adaptive offset coding and/or selection of band offset parameters
US9549176B2 (en) 2012-04-06 2017-01-17 Google Technology Holdings LLC Devices and methods for signaling sample adaptive offset (SAO) parameters
CA2841112C (en) 2012-05-25 2019-09-17 Panasonic Corporation Moving picture coding and decoding using context adaptive binary arithmetic coding with fixed probability for some sample adaptive offset parameters
AU2013264361B2 (en) 2012-05-25 2017-01-05 Sun Patent Trust Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device
WO2013175736A1 (en) 2012-05-25 2013-11-28 パナソニック株式会社 Video encoding method, video encoding device, video decoding method, video decoding device, and video encoding/decoding device
WO2013183232A1 (en) * 2012-06-04 2013-12-12 パナソニック株式会社 Video image encoding method, video image encoding device, video image decoding method, and video image decoding device
US10477208B2 (en) * 2012-09-24 2019-11-12 Intel Corporation Histogram segmentation based local adaptive filter for video encoding and decoding
GB2509563A (en) * 2013-01-04 2014-07-09 Canon Kk Encoding or decoding a scalable video sequence using inferred SAO parameters
JP2015076866A (en) * 2013-10-11 2015-04-20 日本放送協会 Image encoder, image decoder, and program
WO2015088285A1 (en) * 2013-12-12 2015-06-18 삼성전자 주식회사 Video encoding method and apparatus, and video decoding method and apparatus, for signaling sao parameter
CN110177283B (en) * 2014-04-04 2021-08-03 北京三星通信技术研究有限公司 Method and device for processing pixel identification
WO2015165030A1 (en) 2014-04-29 2015-11-05 Microsoft Technology Licensing, Llc Encoder-side decisions for sample adaptive offset filtering
CN104506867B (en) * 2014-12-01 2017-07-21 北京大学 Sample point self-adapted offset parameter method of estimation and device
WO2016182266A1 (en) * 2015-05-12 2016-11-17 삼성전자 주식회사 Method and apparatus for encoding and decoding image
KR102423880B1 (en) 2015-10-06 2022-07-21 삼성전자주식회사 Method for operating of encoder, and method for operating system on chip including encoder
GB2567881B (en) 2017-10-30 2021-02-10 Imagination Tech Ltd Systems and methods for processing a stream of data values
GB2568038B (en) * 2017-10-30 2020-12-02 Imagination Tech Ltd Systems and methods for processing a stream of data values
CN111587576B (en) 2018-01-05 2023-03-31 株式会社索思未来 Encoding method, decoding method, encoding device, decoding device, and recording medium

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678411B1 (en) 1999-06-04 2004-01-13 Look Dynamics, Inc. Apparatus and method for characterizing, encoding, storing, and searching images by shape
US6990637B2 (en) 2003-10-23 2006-01-24 Microsoft Corporation Graphical user interface for 3-dimensional view of a data collection based on an attribute of the data
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
DE102004044111B4 (en) 2004-09-08 2015-05-07 Seereal Technologies Gmbh Method and device for coding and reconstructing computer-generated video holograms
CN101867820B (en) 2005-09-20 2013-05-29 三菱电机株式会社 Image decoding device and image decoding method
US7668382B2 (en) 2006-02-24 2010-02-23 Microsoft Corporation Block-based fast image compression
KR100846512B1 (en) 2006-12-28 2008-07-17 삼성전자주식회사 Method and apparatus for video encoding and decoding
WO2009045682A2 (en) 2007-09-28 2009-04-09 Athanasios Leontaris Treating video information
KR101489785B1 (en) 2008-07-22 2015-02-06 에스케이 텔레콤주식회사 Apparatus and Method of adaptive filter tab decision for wavelet transformed coefficients coding, Apparatus and Method of Wavelet Transform using the same, and recording medium therefor
WO2011003326A1 (en) 2009-07-06 2011-01-13 Mediatek Singapore Pte. Ltd. Single pass adaptive interpolation filter
US20110116545A1 (en) 2009-11-17 2011-05-19 Jinwen Zan Methods and devices for in-loop video deblocking
US8995530B2 (en) 2010-03-09 2015-03-31 Panasonic Intellectual Property Management Co., Ltd. Moving image decoding apparatus, moving image coding apparatus, moving image decoding circuit, and moving image decoding method
CN101790092B (en) 2010-03-15 2013-02-06 河海大学常州校区 Intelligent filter designing method based on image block encoding information
KR101529992B1 (en) 2010-04-05 2015-06-18 삼성전자주식회사 Method and apparatus for video encoding for compensating pixel value of pixel group, method and apparatus for video decoding for the same
US9055305B2 (en) * 2011-01-09 2015-06-09 Mediatek Inc. Apparatus and method of sample adaptive offset for video coding
US8861617B2 (en) 2010-10-05 2014-10-14 Mediatek Inc Method and apparatus of region-based adaptive loop filtering
US9161041B2 (en) * 2011-01-09 2015-10-13 Mediatek Inc. Apparatus and method of efficient sample adaptive offset
CN102137263B (en) 2011-05-09 2013-07-03 松日数码发展(深圳)有限公司 Distributed video coding and decoding methods based on classification of key frames of correlation noise model (CNM)
WO2012175195A1 (en) * 2011-06-20 2012-12-27 Panasonic Corporation Simplified pipeline for filtering
US9344743B2 (en) * 2011-08-24 2016-05-17 Texas Instruments Incorporated Flexible region based sample adaptive offset (SAO) and adaptive loop filter (ALF)
US8913656B2 (en) * 2011-10-14 2014-12-16 Mediatek Inc. Method and apparatus for in-loop filtering
US10051289B2 (en) 2011-11-04 2018-08-14 Qualcomm Incorporated Adaptive center band offset filter for video coding

Also Published As

Publication number Publication date
CA2853798A1 (en) 2013-05-10
AU2012332318A1 (en) 2014-05-29
IL232237A (en) 2017-01-31
RU2014122539A (en) 2015-12-10
IN2014CN03163A (en) 2015-08-14
AU2012332318B2 (en) 2015-12-03
CN104012091B (en) 2017-05-24
CN104012091A (en) 2014-08-27
BR112014010337B1 (en) 2022-05-17
BR112014010337A2 (en) 2017-04-18
WO2013067318A1 (en) 2013-05-10
US10051289B2 (en) 2018-08-14
SG11201401490VA (en) 2014-06-27
MY169625A (en) 2019-04-23
US20130114674A1 (en) 2013-05-09
CA2853798C (en) 2017-03-07
JP2014533048A (en) 2014-12-08
IL232237A0 (en) 2014-06-30
JP5833249B2 (en) 2015-12-16
HUE039957T2 (en) 2019-02-28
KR20140088214A (en) 2014-07-09
KR101622860B1 (en) 2016-05-19
ZA201404050B (en) 2017-08-30
EP2774372B1 (en) 2018-06-27
EP2774372A1 (en) 2014-09-10

Similar Documents

Publication Publication Date Title
ES2688359T3 (en) Adaptive central band offset filter for video encoding
ES2715555T3 (en) Residual adaptive cross-component prediction
ES2884375T3 (en) Intra linear model chroma prediction for video encoding
ES2611349T3 (en) Encoded Block Indicator (CBF) encoding for the 4: 2: 2 sample format in video coding
ES2779461T3 (en) Improved video intra-prediction using a combination of position-dependent prediction for video encoding
ES2928248T3 (en) Segment padding in NAL units of the encoded portion
ES2637490T3 (en) Coefficient groups and coefficient coding for coefficient sweeps
ES2549145T3 (en) Context reduction for adaptive binary arithmetic coding according to context
ES2977203T3 (en) Restricting prediction units in B-segments to one-way interprediction
ES2705746T3 (en) Initialization of states and context probabilities for adaptive entropy coding in context
ES2742026T3 (en) Motion vector determination for video encoding
ES2891175T3 (en) Adaptively Perform Smoothing Operations
ES2656494T3 (en) Intra-softening filter for video coding
ES2677100T3 (en) Loop filtering around segment limits or mosaic limits in video encoding
ES2763443T3 (en) Video encoding in intra mode
ES2608595T3 (en) Performance improvement for coding the level of CABAC coefficients
ES2973247T3 (en) Improved intra-prediction mode indication for video encoding using contiguous mode
ES2613136T3 (en) Conditional signaling of image timing count information for video timing in video encoding
ES2750124T3 (en) Signaling syntax elements for transform coefficients for subsets of a sheet-level encoding unit
ES2616486T3 (en) Obtaining context for last position encoding for video encoding
ES2736308T3 (en) Textures prediction between layers for video coding
ES2842082T3 (en) Indication of image type alignment between layers in multilayer video encoding
ES2856099T3 (en) Improved signaling of layer identifiers for operating points of a video encoder
RU2575418C2 (en) Filter of central band adaptive shift for video coding