ES2705898T3 - Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo - Google Patents
Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo Download PDFInfo
- Publication number
- ES2705898T3 ES2705898T3 ES11801912T ES11801912T ES2705898T3 ES 2705898 T3 ES2705898 T3 ES 2705898T3 ES 11801912 T ES11801912 T ES 11801912T ES 11801912 T ES11801912 T ES 11801912T ES 2705898 T3 ES2705898 T3 ES 2705898T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- coefficient
- significant coefficient
- coordinate
- video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 303
- 230000003044 adaptive effect Effects 0.000 claims abstract description 62
- 230000008569 process Effects 0.000 claims description 6
- 230000000875 corresponding effect Effects 0.000 description 187
- 230000033001 locomotion Effects 0.000 description 68
- 238000013139 quantization Methods 0.000 description 22
- 238000004891 communication Methods 0.000 description 21
- 239000013598 vector Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 14
- 238000007906 compression Methods 0.000 description 13
- 230000006835 compression Effects 0.000 description 13
- 238000010408 sweeping Methods 0.000 description 13
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 11
- 238000009795 derivation Methods 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
- H03M7/4018—Context adapative binary arithmetic codes [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6035—Handling of unkown probabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Método de codificación de coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el método: codificar información que identifica una posición de un último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes de la codificación de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que la codificación de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende codificar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y en el que la codificación de la posición bidimensional del último coeficiente no nulo dentro del bloque según el orden de barrido comprende: determinar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; determinar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y codificar la coordenada horizontal y la coordenada vertical, en el que la codificación de cada una de la coordenada horizontal y la coordenada vertical comprende binarizar la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins y codificar la secuencia realizando un procedimiento de cifrado aritmético binario adaptativo según el contexto.
Description
DESCRIPCIÓN
Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo
Esta divulgación se refiere al cifrado de vídeo, y, más particularmente, al cifrado de información sintáctica relacionada con coeficientes de un bloque de vídeo.
Antecedentes
Pueden incorporarse capacidades de vídeo digital en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, agendas electrónicas (PDA), ordenadores portátiles o de sobremesa, ordenadores de tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos móviles o vía satélite, los denominados “smartphones” (teléfonos inteligentes), dispositivos de vídeo/teleconferencia, dispositivos de emisión de vídeo en continuo, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, H.263 de ITU-T, H.264 de ITU-T/MPEG-4, Parte 10, Advanced Video Coding (Cifrado de vídeo avanzado, AVC), la norma High Efficiency Video Coding (Cifrado de vídeo de alta eficacia, HEVC) que está en desarrollo actualmente, y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficaz implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intra-imagen) y/o predicción temporal (inter imagen) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para el cifrado de vídeo basada en bloques, puede dividirse un segmento de vídeo (es decir, un fotograma de vídeo o una parte de un fotograma de vídeo) en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de cifrado (CU) y/o nodos de cifrado. Los bloques de vídeo en un segmento sometido a cifrado intra (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un segmento sometido a cifrado inter (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos 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 fotogramas, y las imágenes de referencia pueden denominarse fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para que se cifre un bloque. Los datos residuales representan diferencias de píxel entre el bloque original que va a cifrarse y el bloque predictivo. Un bloque sometido a cifrado inter se codifica según 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 cifrado y el bloque predictivo. Un bloque sometido a cifrado intra se codifica según un modo de cifrado intra y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que entonces pueden cuantificarse. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden someterse a barrido para producir un vector unidimensional de coeficientes de transformada, y puede aplicarse cifrado por entropía para lograr incluso una mayor compresión.
Los siguientes documentos comentan modelos de probabilidad para cifrar coeficientes de transformada cuantificados en el marco de H.264/AVC:
WEI YU ETAL “Probability Modeling for Encoding Quantized Transform Coefficients”, SIMPOSIO SOBRE CIFRADO DE IMÁGENES, 24 de abril de 2006 (24-04-2006), - 26 de abril de 2006 (26-04-2006), documento XP030080334; DAVIES (BBC) T ET AL: “Suggestion for a Test Model”, 1. ENCUENTRO JCT-VC; 15-4-2010 - 23-4-2010; DRESDE; (EQUIPO DE COLABORACIÓN CONJUNTA SOBRE CIFRADO DE VÍDEO DE JTC1/SC29/WG11 DE ISO/IEC Y SG.16 DE ITU-T); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVCSITE/. n.° JCTVC-A033, 7 de mayo de 2010 (07 05-2010), documento XP030007526, ISSN: 0000-0049;
Documento US 2003/128886 Al (SAID AMIR [US]) 10 de julio 2003 (2003-07-10);
Documento EP 2154894 Al (THOMSON LICENSING [FR]) 17 de febrero de 2010 (17-02-2010).
Sumario
La invención se define en las reivindicaciones adjuntas. Esta divulgación describe técnicas para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo. Las técnicas incluyen cifrar información que identifica la posición del último coeficiente no nulo, o “significativo” dentro del bloque según un orden de barrido asociado con el bloque, es decir, información de posición del último coeficiente significativo para el bloque, antes de cifrar información que identifica posiciones de otros coeficientes significativos dentro del bloque, es decir, información de posición de coeficiente significativo para el bloque. Las técnicas incluyen además cifrar la
información de posición del último coeficiente significativo para el bloque realizando al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las técnicas de esta divulgación pueden permitir que los sistemas de cifrado tengan menor complejidad en relación con otros sistemas, y pueden permitir métodos de cifrado más eficaces en relación con otros métodos, cuando se cifra la información de posición del último coeficiente significativo para el bloque y la información de posición de coeficiente significativo para el bloque. Cifrar la información de posición del último coeficiente significativo antes de cifrar la información de posición de coeficiente significativo tiene el efecto de separar estas etapas de cifrado, lo que puede facilitar cifrar la información en paralelo, y puede facilitar usar sistemas de cifrado que tienen menor complejidad en relación con otros sistemas, por ejemplo, sistemas que cifran la información de manera intercalada. Adicionalmente, la disponibilidad de la información de posición del último coeficiente significativo antes de cifrar la información de posición de coeficiente significativo puede facilitar usar la información de posición del último coeficiente significativo para cifrar la propia información y otra información para el bloque. En algunos ejemplos, la información de posición del último coeficiente significativo puede usarse como contexto para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento de cifrado aritmético binario adaptativo según el contexto (CABAC)) que incluye aplicar un modelo de contexto basado en el contexto. De esta manera, usar la información de posición del último coeficiente significativo puede dar como resultado el uso de una estadística precisa para cifrar la propia información, y cifrar la información de posición de coeficiente significativo, lo que puede facilitar cifrar la información de manera más eficaz, por ejemplo, usando un menor número de bits, que cuando se usan otros métodos.
En otros ejemplos, la información de posición del último coeficiente significativo puede usarse como información sintáctica para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo, lo que puede facilitar una vez más usar sistemas de cifrado que tienen menor complejidad en relación con otros sistemas, y métodos de cifrado más eficaces en relación con otros métodos.
Como un ejemplo, la información de posición del último coeficiente significativo puede usarse para determinar cómo va a cifrarse la propia información, por ejemplo, usando diferentes técnicas para cifrar la información dependiendo de la posición del último coeficiente significativo dentro del bloque según el orden de barrido, lo que puede facilitar cifrar la información de manera más eficaz que cuando se usan otros métodos.
Como otro ejemplo, la información de posición del último coeficiente significativo puede usarse para determinar un contexto para cifrar la información de posición de coeficiente significativo, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto. Por ejemplo, la significación de los coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido puede cifrarse en un orden de barrido invertido, empezando desde el último coeficiente significativo y avanzando hasta el primer coeficiente en el orden de barrido. En este ejemplo, la significación de cada coeficiente puede cifrarse usando la significación de coeficientes cifrados previamente como contexto, lo que puede dar como resultado el uso de una estadística precisa para cifrar la información de posición de coeficiente significativo, y permitir cifrar la información de manera más eficaz que cuando se usan otros métodos.
Todavía como otro ejemplo, la información de posición del último coeficiente significativo puede usarse para cifrar conjuntamente la información de posición de coeficiente significativo. Por ejemplo, la información de posición de coeficiente significativo puede cifrarse disponiendo múltiples coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido en uno o más grupos, y cifrando conjuntamente la significación de los coeficientes dentro de cada grupo. Usar la información de posición del último coeficiente significativo de esta manera puede permitir cifrar la propia información de posición de coeficiente significativo en paralelo, lo que puede facilitar una vez más usar sistemas de cifrado que tienen menor complejidad que otros sistemas, y cifrar la información de manera más eficaz que cuando se usan otros métodos.
Las técnicas de esta divulgación pueden usarse con cualquier metodología de cifrado por entropía adaptativo según el contexto, incluyendo CABAC, cifrado por entropía de división de intervalo de probabilidad (PIPE), u otra metodología de cifrado por entropía adaptativo según el contexto. CABAC se describe en esta divulgación con propósitos ilustrativos, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta divulgación. Además, las técnicas pueden aplicarse al cifrado de otros tipos de datos generalmente, por ejemplo, además de los datos de vídeo.
Por consiguiente, las técnicas de esta divulgación pueden facilitar usar sistemas de cifrado que tienen menor
complejidad en relación con otros sistemas, y métodos de cifrado más eficaces en relación con otros métodos, cuando se cifra la información de posición del último coeficiente significativo para el bloque y la información de posición de coeficiente significativo para el bloque. De esta manera, puede haber ahorros de bits relativos para un flujo de bits cifrado que incluye la información, y una reducción relativa de la complejidad para un sistema usado para cifrar la información, cuando se usan las técnicas de esta divulgación.
En un ejemplo, un método de cifrado de coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo incluye cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que el cifrado de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluye al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
En otro ejemplo, un aparato para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo incluye un cifrador de vídeo configurado para cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que para el cifrado de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, el cifrador de vídeo está configurado para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
En otro ejemplo, un dispositivo para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo incluye medios para cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que los medios para el cifrado de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluyen al menos uno de los siguientes: medios para cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; medios para cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y medios para cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las técnicas descritas en esta divulgación pueden implementarse en hardware, software, firmware, o combinaciones de las mismas. Si se implementan en hardware, un aparato puede realizarse como un circuito integrado, un procesador, lógica discreta, o cualquier combinación de los mismos. Si se implementan en software, el software puede ejecutarse en uno o más procesadores, tales como un microprocesador, circuito integrado para aplicaciones específicas (ASIC), matriz de puertas programables in situ (FPGA) o procesador de señales digitales (DSP). El software que ejecuta las técnicas puede almacenarse inicialmente en un medio legible por ordenador, tangible y cargarse y ejecutarse en el procesador.
Por consiguiente, esta divulgación también contempla un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, hacen que un procesador cifre información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que las instrucciones que hacen que el procesador cifre la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluyen instrucciones que hacen que el procesador realice al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo que puede implementar técnicas para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque, de manera acorde con las técnicas de esta divulgación.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas para codificar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes de la codificación de información de posición de coeficiente significativo para el bloque, de manera acorde con las técnicas de esta divulgación.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas para decodificar información de posición del último coeficiente significativo codificada para un bloque de datos de vídeo antes de la decodificación de información de posición de coeficiente significativo codificada para el bloque, de manera acorde con las técnicas de esta divulgación.
Las figuras 4A-4C son diagramas conceptuales que ilustran un ejemplo de un bloque de datos de vídeo e información de posición de coeficiente significativo e información de posición del último coeficiente significativo correspondientes.
Las figuras 5A-5C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo sometidos a barrido usando un orden de barrido en zigzag, un orden de barrido en horizontal y un orden de barrido en vertical. Las figuras 6A-6B son diagramas conceptuales que ilustran ejemplos de información de posición del último coeficiente significativo para bloques de datos de vídeo.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un método para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque.
La figura 8 es un diagrama de flujo que ilustra un ejemplo de un método para codificar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes de la codificación de información de posición de coeficiente significativo para el bloque.
La figura 9 es un diagrama de flujo que ilustra un ejemplo de un método para decodificar información de posición del último coeficiente significativo codificada para un bloque de datos de vídeo antes de la decodificación de información de posición de coeficiente significativo codificada para el bloque.
Descripción detallada
Esta divulgación describe técnicas para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo. Las técnicas incluyen cifrar información que identifica la posición del último coeficiente no nulo, o “significativo” dentro del bloque según un orden de barrido asociado con el bloque, es decir, información de posición del último coeficiente significativo para el bloque, antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, es decir, información de posición de coeficiente significativo para el bloque. Las técnicas incluyen además cifrar la información de posición del último coeficiente significativo para el bloque realizando al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las técnicas de esta divulgación pueden permitir que los sistemas de cifrado tengan menor complejidad en relación con otros sistemas, y pueden permitir métodos de cifrado más eficaces en relación con otros métodos, cuando se cifra la información de posición del último coeficiente significativo para el bloque y la información de posición de coeficiente significativo para el bloque.
En esta divulgación, el término “cifrado” se refiere a codificación que se produce en el codificador o decodificación que se produce en el decodificador. De manera similar, el término “cifrador” se refiere a un codificador, un decodificador o un codificador/decodificador combinado (“CODEC”). Los términos cifrador, codificador, decodificador y CODEC se refieren todos a máquinas específicas diseñadas para el cifrado (codificación y/o decodificación) de
datos de vídeo de manera acorde con esta divulgación.
Cifrar la información de posición del último coeficiente significativo para el bloque antes de cifrar la información de posición de coeficiente significativo para el bloque tiene el efecto de separar estas etapas de cifrado, lo que puede facilitar cifrar la información en paralelo, y puede facilitar usar sistemas de cifrado que tienen menor complejidad que otros sistemas. Por ejemplo, en vez de cifrar la información de manera intercalada, por ejemplo, cifrando una bandera de coeficiente significativo seguido por cifrar una bandera de último coeficiente significativo para cada coeficiente del bloque según el orden de barrido, tal como se realiza según algunas técnicas, las técnicas de esta divulgación separan el cifrado de la información. Como tal, usar las técnicas de esta divulgación puede facilitar cifrar la información usando algoritmos de cifrado paralelo, y pueden dar como resultado el uso de sistemas de cifrado que tienen menor complejidad que otros sistemas para cifrar la información.
Adicionalmente, la disponibilidad de la información de posición del último coeficiente significativo antes de cifrar la información de posición de coeficiente significativo puede facilitar usar la información de posición del último coeficiente significativo para cifrar la propia información y otra información para el bloque. En algunos ejemplos, la información de posición del último coeficiente significativo puede usarse como contexto para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento de cifrado aritmético binario adaptativo según el contexto (CABAC)) que incluye aplicar un modelo de contexto basado en el contexto. De esta manera, usar la información de posición del último coeficiente significativo puede dar como resultado el uso de una estadística precisa para cifrar la propia información, y cifrar la información de posición de coeficiente significativo, lo que puede facilitar cifrar la información de manera más eficaz, por ejemplo, usando un menor número de bits, que cuando se usan otros métodos. Por ejemplo, el modelo de contexto puede proporcionar la estadística, o las estimaciones de probabilidad, para la información de posición del último coeficiente significativo o la información de posición de coeficiente significativo usada para cifrar la información como parte de la realización del procedimiento de cifrado por entropía adaptativo según el contexto, por ejemplo, un procedimiento CABAC. Además, las estimaciones de probabilidad para el modelo de contexto pueden actualizarse basándose en la información cifrada para reflejar qué información de posición del último coeficiente significativo o información de posición de coeficiente significativo es más o menos probable que aparezca dado el contexto. En particular, las estimaciones de probabilidad actualizadas para el modelo de contexto pueden usarse para cifrar bloques posteriores de datos de vídeo usando el mismo modelo de contexto.
En otros ejemplos, la información de posición del último coeficiente significativo puede usarse como información sintáctica para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo, lo que puede facilitar una vez más usar sistemas de cifrado que tienen menor complejidad que otros sistemas, y métodos de cifrado más eficaces que otros métodos.
Como un ejemplo, la información de posición del último coeficiente significativo puede usarse como información sintáctica para determinar cómo va a cifrarse la propia información, por ejemplo, usando diferentes técnicas para cifrar la información dependiendo de la posición del último coeficiente significativo dentro del bloque según el orden de barrido, lo que puede facilitar cifrar la información de manera más eficaz que cuando se usan otros métodos. Por ejemplo, en algunos casos, los coeficientes significativos, incluyendo el último coeficiente significativo, del bloque pueden concentrarse en un subconjunto de posiciones de bloque, por ejemplo, antes en el orden de barrido, mientras que en otros casos, los coeficientes pueden estar ubicados en la totalidad del bloque, por ejemplo, por todo o la mayor parte del orden de barrido. En este ejemplo, cifrar la posición unidimensional puede requerir usar menos bits que cifrar la posición bidimensional cuando el último coeficiente significativo está ubicado antes en el orden de barrido. De manera similar, cifrar la posición bidimensional puede requerir usar menos bits que cifrar la posición unidimensional cuando el último coeficiente significativo está ubicado después en el orden de barrido.
En vez de cifrar la información de posición del último coeficiente significativo usando un método fijo, por ejemplo, cifrando la posición unidimensional o la posición bidimensional, las técnicas de esta divulgación pueden cifrar una bandera que indica si el último coeficiente significativo está ubicado dentro de una gama de posiciones dentro del bloque. Por ejemplo, la gama puede corresponder a posiciones dentro del bloque que aparecen relativamente antes en el orden de barrido. Las técnicas pueden cifrar además la posición unidimensional cuando el último coeficiente significativo está ubicado dentro de la gama, y si no, cifrar la posición bidimensional. Usar la información de posición del último coeficiente significativo de esta manera puede permitir cifrar la información de manera más eficaz que cuando se usan el método fijo u otros métodos.
Como otro ejemplo, la información de posición del último coeficiente significativo puede usarse como información sintáctica para determinar un contexto para cifrar la información de posición de coeficiente significativo, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto. Por ejemplo, la significación de los coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido puede cifrarse en un orden de barrido invertido, empezando desde el último coeficiente significativo y avanzando hasta el primer coeficiente en el orden de barrido. En este ejemplo, la significación de cada coeficiente puede cifrarse usando la significación de coeficientes cifrados previamente como contexto, lo que puede dar como resultado el uso de una estadística precisa, o las estimaciones de probabilidad, para cifrar la información de posición
de coeficiente significativo, y permitir cifrar la información de manera más eficaz que cuando se usan otros métodos.
Todavía como otro ejemplo, la información de posición del último coeficiente significativo puede usarse como información sintáctica para cifrar conjuntamente la información de posición de coeficiente significativo. Por ejemplo, la información de posición de coeficiente significativo puede cifrarse disponiendo múltiples coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido en uno o más grupos, y cifrando conjuntamente la significación de los coeficientes dentro de cada grupo. Usar la información de posición del último coeficiente significativo de esta manera puede permitir cifrar la propia información de posición de coeficiente significativo en paralelo, lo que puede facilitar una vez más usar sistemas de cifrado que tienen menor complejidad que otros sistemas, y cifrar la información de manera más eficaz que cuando se usan otros métodos.
Las técnicas de esta divulgación pueden usarse con cualquier metodología de cifrado por entropía adaptativo según el contexto, incluyendo CABAC, cifrado por entropía de división de intervalo de probabilidad (PIPE), u otra metodología de cifrado por entropía adaptativo según el contexto. CABAC se describe en esta divulgación con propósitos ilustrativos, pero sin limitación en cuanto a las técnicas ampliamente descritas en esta divulgación. Además, las técnicas pueden aplicarse generalmente al cifrado de otros tipos de datos, por ejemplo, además de los datos de vídeo.
Por consiguiente, las técnicas de esta divulgación pueden facilitar usar sistemas de cifrado que tienen menor complejidad en relación con otros sistemas, y métodos de cifrado más eficaces en relación con otros métodos, cuando se cifra la información de posición del último coeficiente significativo para el bloque y la información de posición de coeficiente significativo para el bloque. De esta manera, puede haber ahorros de bits relativos para un flujo de bits cifrado que incluye la información, y una reducción relativa de la complejidad para un sistema usado para cifrar la información, cuando se usan las técnicas de esta divulgación.
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo 10 que puede implementar técnicas para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque, de manera acorde con las técnicas de esta divulgación. Tal como se muestra en la figura 1, el sistema 10 incluye un dispositivo fuente 12 que transmite vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender dispositivos de comunicación inalámbrica, tales como terminales inalámbricos, denominados radioteléfonos móviles o vía satélite, o cualquier dispositivo inalámbrico que pueda comunicar información de vídeo por un canal de comunicación 16, en cuyo caso el canal de comunicación 16 es inalámbrico.
Sin embargo, las técnicas de esta divulgación, que se refieren a cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque, no se limitan necesariamente a prácticas o aplicaciones inalámbricas. Estas técnicas pueden aplicarse generalmente a cualquier escenario en el que se realiza codificación o decodificación, incluyendo radiodifusiones de televisión sin hilo, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de emisión en Internet en continuo, vídeo digital codificado que se codifica sobre un medio de almacenamiento o se recupera y se decodifica a partir de un medio de almacenamiento, u otros escenarios. Por consiguiente, no se requiere el canal de comunicación 16 y las técnicas de esta divulgación pueden aplicarse a prácticas en las que se aplica codificación o en las que se aplica decodificación, por ejemplo, sin ninguna comunicación de datos entre dispositivos de codificación y decodificación.
En el ejemplo de la figura 1, el dispositivo fuente 12 incluye una fuente de vídeo 18, un codificador de vídeo 20, un modulador/demodulador (módem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un módem 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. Según esta divulgación, el codificador de vídeo 20 del dispositivo fuente 12 y/o el decodificador de vídeo 30 del dispositivo de destino 14 pueden estar configurados para aplicar las técnicas para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque. En otros ejemplos, un dispositivo fuente y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo fuente 12 puede recibir datos de vídeo procedentes de una fuente de vídeo externa 18, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede interconectarse con un dispositivo de visualización externo, en vez de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la figura 1 es simplemente un ejemplo. Las técnicas para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque puede realizarlas cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque generalmente las técnicas de esta divulgación se realizan por un dispositivo de codificación de vídeo, las técnicas también puede realizarlas un codificador/decodificador de vídeo, normalmente denominado “CODEC”. Además, las técnicas de esta divulgación también puede realizarlas un preprocesador de vídeo. El dispositivo fuente 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de cifrado en los que el dispositivo fuente 12 genera datos de vídeo codificados para la transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera sustancialmente simétrica de tal manera que
cada uno de los dispositivos 12, 14 incluye componentes de codificación y decodificación de vídeo. Por tanto, el sistema 10 puede soportar transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para emisión de vídeo en continuo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
La fuente de vídeo 18 del dispositivo fuente 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una señal de vídeo procedente de un proveedor de contenido de vídeo. Como alternativa adicional, la fuente de vídeo 18 puede generar datos basados en gráficos por ordenador como vídeo fuente, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o teléfonos con vídeo. Tal como se mencionó anteriormente, sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables al cifrado de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o por cable. En cada caso, el vídeo capturado, capturado previamente o generado por ordenador puede codificarse por el codificador de vídeo 20. La información de vídeo codificada puede entonces modularse por el módem 22 según una norma de comunicación, y transmitirse al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de señal. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, que incluyen amplificadores, filtros, y una o más antenas.
El receptor 26 del dispositivo de destino 14 recibe información por el canal 16, y el módem 28 demodula la información. De nuevo, el procedimiento de codificación de vídeo descrito anteriormente puede implementar una o más de las técnicas descritas en el presente documento para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque. La información comunicada por el canal 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también se usa por el decodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o el procesamiento de bloques de datos de vídeo (por ejemplo, macrobloques, o unidades de cifrado), por ejemplo, información de posición del último coeficiente significativo e información de posición de coeficiente significativo para los bloques, y otra información. El dispositivo de visualización 32 presenta visualmente los datos de vídeo decodificados a un usuario, y pueden comprender cualquiera de una variedad de dispositivos de visualización tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo orgánico emisor de luz (OLED), u otro tipo de dispositivo de visualización.
En el ejemplo de la figura 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos o por cable. El canal de comunicación 16 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 canal de comunicación 16 representa generalmente cualquier medio de comunicación adecuado, o colección de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo fuente 12 hasta el dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios por cable o inalámbricos. El canal de comunicación 16 puede incluir encaminadores, conmutadores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo fuente 12 hasta el dispositivo de destino 14. En otros ejemplos, dispositivos de codificación o decodificación pueden implementar técnicas de esta divulgación sin ninguna comunicación entre tales dispositivos. Por ejemplo, un dispositivo de codificación puede codificar y almacenar un flujo de bits codificado de manera acorde con las técnicas de esta divulgación. Alternativamente, un dispositivo de decodificación puede recibir o recuperar un flujo de bits codificado, y decodificar el flujo de bits de manera acorde con las técnicas de esta divulgación.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar según una norma de compresión de vídeo, tal como la norma H.264 de ITU-T, denominada alternativamente MPEG-4, parte 10, Cifrado de vídeo avanzado (AVC). Sin embargo, las técnicas de esta divulgación, no se limitan a ninguna norma de cifrado particular. Otros ejemplos incluyen MPEG-2, H.263 de ITU-T, y la norma High Efficiency Video Coding (Cifrado de vídeo de alta eficacia, h Ev C) actualmente en desarrollo. En general, las técnicas de esta divulgación se describen con respecto a HEVC, pero debe entenderse que estas técnicas también pueden usarse junto con otras normas de cifrado de vídeo. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades de MUX-DEMUX apropiadas, u otro hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o flujos de datos independientes. Si es aplicable, las unidades de MUX-DEMUX pueden ser conformes al protocolo de multiplexor H.223 de ITU, u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como uno cualquiera de una variedad de conjuntos de circuito de codificador adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 puede estar incluido en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en una cámara, ordenador, dispositivo móvil, dispositivo de abonado,
dispositivo de radiodifusión, decodificador, servidor respectivo, o similar.
Una secuencia de vídeo incluye normalmente una serie de fotogramas de vídeo. Un grupo de imágenes (GOP) comprende generalmente una serie de uno o más fotogramas de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, una cabecera de uno o más fotogramas de vídeo del GOP o en otro lugar, que describe un número de fotogramas incluidos en el GOP. Cada fotograma puede incluir datos sintácticos que describen un modo de codificación para el fotograma respectivo. Un codificador de vídeo, por ejemplo el codificador de vídeo 20, funciona normalmente en bloques de vídeo dentro de fotogramas de vídeo individuales para codificar los datos de vídeo. Según la norma H.264 de ITU-T, un bloque de vídeo puede corresponder a un macrobloque o una división de un macrobloque. Según otras normas, por ejemplo, la HEVC descrita en mayor detalle a continuación, un bloque de vídeo puede corresponder a una unidad de cifrado (por ejemplo, una unidad de cifrado de mayor tamaño), o una división de una unidad de cifrado. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño según una norma de cifrado especificada. Cada fotograma de vídeo puede incluir una pluralidad de segmentos, es decir, partes del fotograma de vídeo. Cada segmento puede incluir una pluralidad de bloques de vídeo, que pueden disponerse en divisiones, también denominadas sub-bloques.
Dependiendo de la norma de cifrado especificada, los bloques de vídeo pueden dividirse en diversos tamaños de sub-bloque “NxN”, tales como 16x16, 8x8, 4x4, 2x2, etcétera. En esta divulgación, “NxN” y “N por N” pueden usarse de manera intercambiable para referirse a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones vertical y horizontal, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de NxN generalmente tiene N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor de número entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N. Como un ejemplo, en la norma H.264 de ITU-T, los bloques que tienen un tamaño de 16 por 16 píxeles pueden denominarse macrobloques, y los bloques que son menores de 16 por 16 píxeles pueden denominarse divisiones de un macrobloque de 16 por 16. En otras normas, por ejemplo, HEVC, los bloques pueden definirse más generalmente con respecto a su tamaño, por ejemplo, como unidades de cifrado y divisiones de las mismas, que tienen cada una un tamaño variable, en vez de uno fijo.
Los bloques de vídeo pueden comprender bloques de datos de píxel en el dominio de píxeles, o bloques de coeficientes de transformada en el dominio de transformada, por ejemplo, tras la aplicación de una transformada, tal como una transformada discreta del coseno (DCT), una transformada entera, una transformada de ondícula, o una transformada conceptualmente similar a datos residuales para un bloque de vídeo dado, en el que los datos residuales representan diferencias de píxel entre datos de vídeo para el bloque y datos predictivos generados para el bloque. En algunos casos, los bloques de vídeo pueden comprender bloques de coeficientes de transformada cuantificados en el dominio de transformada, en los que, tras la aplicación de una transformada a datos residuales para un bloque de vídeo dado, también se cuantifican los coeficientes de transformada resultantes.
La división de bloques sirve para un propósito importante en las técnicas de cifrado de vídeo basadas en bloques. Usar bloques más pequeños para cifrar datos de vídeo puede dar como resultado una mejor predicción de los datos para ubicaciones de un fotograma de vídeo que incluye altos niveles de detalle y, por tanto, puede reducir el error resultante (es decir, la desviación de los datos de predicción con respecto a datos de vídeo fuente), representados como datos residuales. Aunque posiblemente reducen los datos residuales, sin embargo, tales técnicas pueden requerir información sintáctica adicional para indicar cómo se dividen bloques más pequeños en relación con un fotograma de vídeo, y pueden dar como resultado una tasa de transmisión de bits de vídeo cifrado aumentada. Por consiguiente, en algunas técnicas, la división de bloques puede depender del equilibrio entre la reducción deseada de los reducción en datos residuales frente al aumento de la tasa de transmisión de bits de los datos de vídeo cifrados debido a la información sintáctica adicional.
En general, los bloques y las diversas divisiones de los mismos (es decir, sub-bloques) pueden considerarse bloques de vídeo. Además, puede considerarse que un segmento es una pluralidad de bloques de vídeo (por ejemplo, macrobloques, o unidades de cifrado), y/o sub-bloques (divisiones de macrobloques, o sub-unidades de cifrado). Cada segmento puede ser una unidad que puede decodificarse independientemente de un fotograma de vídeo. Alternativamente, los propios fotogramas pueden ser unidades que pueden decodificarse, u otras partes de un fotograma pueden definirse como unidades que pueden decodificarse. Además, un GOP, también denominado secuencia, puede definirse como unidad que puede decodificarse.
Actualmente se realizan esfuerzos para desarrollar una nueva norma de cifrado de vídeo, denominada actualmente Cifrado de vídeo de alta eficacia (HEVC). La norma HEVC emergente también puede denominarse H.265. Los esfuerzos de normalización de HEVC se basan en un modelo de dispositivo de cifrado de vídeo denominado modelo de prueba (HM) de HEVC. El HM supone varias capacidades de dispositivos de cifrado de vídeo con respecto a dispositivos según, por ejemplo, H.264 de ITU-T/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de predicción intra, HM proporciona hasta treinta y cuatro modos de codificación de predicción intra, por ejemplo basándose en el tamaño de un bloque que está sometiéndose a cifrado de predicción intra.
HM se refiere a un bloque de datos de vídeo como unidad de cifrado (CU). Una CU puede referirse a una región de imagen rectangular que sirve como unidad básica a la que se aplican diversas herramientas de cifrado para su compresión. En H.264, también puede denominarse macrobloque. Los datos sintácticos dentro de un flujo de bits pueden definir una unidad de cifrado de mayor tamaño (LCU), que es la CU de mayor tamaño en términos del número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto porque una CU no tiene una distinción de tamaño. Por tanto, una CU puede dividirse en CU secundarias.
Una LCU puede estar asociada con una estructura de datos de árbol cuaternario que indica cómo se divide la LCU. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU de una LCU, en el que un nodo raíz corresponde a la LCU y otros nodos corresponden a CU secundarias de la LCU. Si se divide una CU dada en cuatro CU secundarias, el nodo en el árbol cuaternario correspondiente a la CU dividida incluye cuatro nodos hijos, cada uno de los cuales corresponde a una de las CU secundarias. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar información sintáctica para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir una bandera de división, que indica si la CU correspondiente al nodo se divide en cuatro CU secundarias. La información sintáctica para una CU dada puede definirse de manera recursiva, y puede depender de si la CU se divide en CU secundarias.
Una CU que no se divide (es decir, una CU que corresponde a un nodo terminal, u “hoja” en un árbol cuaternario dado) puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una parte de la Cu correspondiente e incluye datos para recuperar una muestra de referencia para la PU con propósitos de realizar predicción para la CU. Por ejemplo, cuando se codifica la CU en modo intra, la PU puede incluir datos que describen un modo de predicción intra para la PU. Como otro ejemplo, cuando se codifica la CU en modo inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento 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), un fotograma de referencia al que apunta el vector de movimiento, y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU que define la una o más PU de la Cu también pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir dependiendo de si la CU no está cifrada, está codificada mediante el modo de predicción intra, o está codificada mediante el modo de predicción inter.
Una CU que tiene una o más PU también puede incluir uno o más unidades de transformada (TU). Tras la predicción para una CU usando una o más PU, tal como se describió anteriormente, un codificador de vídeo puede calcular uno o más bloques residuales para las partes respectivas de la CU correspondiente en la una o más PU. Los bloques residuales pueden representar una diferencia de píxel entre los datos de vídeo para la CU y los datos predichos para la una o más PU. Un conjunto de valores residuales puede transformarse, someterse a barrido y cuantificarse para definir un conjunto de coeficientes de transformada cuantificados. Una TU puede definir una estructura de datos de división que indica información de división para los coeficientes de transformada que es sustancialmente similar a la estructura de datos de árbol cuaternario descrita anteriormente con referencia a una CU. Una TU no se limita necesariamente al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que las PU correspondientes para la misma CU. En algunos ejemplos, el tamaño máximo de una TU puede corresponder al tamaño de la CU correspondiente. En un ejemplo, pueden subdividirse muestras residuales correspondientes a una CU en unidades más pequeñas usando una estructura de árbol cuaternario conocida como “árbol cuaternario residual” (RQT). En este caso, los nodos hoja del RQT pueden denominarse las TU para las cuales las muestras residuales correspondientes puedan transformarse y cuantificarse.
Tras la codificación de predicción intra o predicción inter para producir datos predictivos y datos residuales, y tras cualquier transformada (tal como la transformada entera de 4x4 u 8x8 número usada en H.264/AVC o una transformada discreta del coseno, DCT) para producir coeficientes de transformada, puede realizarse la cuantificación de coeficientes de transformada. La cuantificación se refiere generalmente a un procedimiento en el que se cuantifican los coeficientes de transformada para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El procedimiento de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes. Por ejemplo, puede redondearse a la baja un valor de n bits a un valor de m bits durante la cuantificación, donde n es mayor que m.
Tras la cuantificación, puede realizarse el cifrado por entropía de los datos cuantificados (es decir, coeficientes de transformada cuantificados). El cifrado por entropía puede ser conforme a las técnicas de esta divulgación con respecto al cifrado de información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque, y también puede usar otras técnicas de cifrado por entropía, tales como cifrado de longitud variable adaptativa según el contexto (CAVLC), CABAC, PIPE, u otra metodología de cifrado por entropía. Por ejemplo, pueden codificarse valores de coeficiente, representados como sus magnitudes y signos correspondientes (por ejemplo, “+1”, o “-1 ”) para los coeficientes de transformada cuantificados, usando las técnicas de cifrado por entropía.
Obsérvese que pueden realizarse la predicción, transformada y cuantificación descritas anteriormente para cualquier bloque de datos de vídeo, por ejemplo, a una PU y/o TU de una CU, o a un macrobloque, dependiendo de la norma de cifrado especificada. Por consiguiente, las técnicas de esta divulgación, relativas al cifrado de información de
posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque, pueden aplicarse a cualquier bloque de datos de vídeo, por ejemplo, a cualquier bloque de coeficientes de transformada cuantificados, incluyendo un macrobloque, o una TU de una CU. Además, un bloque de datos de vídeo (por ejemplo, un macrobloque, o una TU de una CU) puede incluir cada una de una componente de luminancia (Y), una primera componente de crominancia (U), y una segunda componente de crominancia (V) de los datos de vídeo correspondientes. Como tal, las técnicas de esta divulgación pueden realizarse para cada una de las componentes Y, U, y V de un bloque de datos de vídeo dado.
Para codificar bloques de datos de vídeo tal como se describió anteriormente, también puede generarse y codificarse información referente a la posición de coeficientes significativos dentro de un bloque dado. Posteriormente, los valores de los coeficientes significativos pueden codificarse, tal como se describió anteriormente. En H.264/AVC y la norma HEVC emergente, cuando se usa un procedimiento de cifrado por entropía adaptativo según el contexto, por ejemplo, un procedimiento CABAC, puede codificarse la posición de coeficientes significativos dentro de un bloque de datos de vídeo antes de la codificación de los valores de los coeficientes significativos. El procedimiento de codificación de la posición de todos los coeficientes significativos dentro del bloque puede denominarse codificación de mapa de significación (SM). Las figuras 4A-4C, descritas en mayor detalle a continuación, son diagramas conceptuales que ilustran un ejemplo de un bloque 4x4 de coeficientes de transformada cuantificados y datos de SM correspondientes.
Un procedimiento de codificación de SM típico puede describirse de la siguiente manera. Para un bloque de datos de vídeo dado, puede codificarse un SM sólo si existe al menos un coeficiente significativo dentro del bloque. Puede indicarse la presencia de coeficientes significativos dentro de un bloque de datos de vídeo dado en un patrón de bloque cifrado (por ejemplo, usando el elemento sintáctico “coded_block_pattern”, o CBP (patrón de bloque cifrado)), que es un valor binario cifrado para un conjunto de bloques (tales como bloques de luminancia y crominancia) asociados con un área de píxeles en los datos de vídeo. Cada bit en el CBP se denomina bandera de bloque cifrado (por ejemplo, correspondiente al elemento sintáctico “coded_block_flag”) y se usa para indicar si existe al menos un coeficiente significativo dentro de su bloque correspondiente. Dicho de otro modo, una bandera de bloque cifrado es un símbolo de un bit que indica si existe cualquier coeficiente significativo en el interior de un único bloque de coeficientes de transformada, y un CBP es un conjunto de banderas de bloque cifrado para un conjunto de bloques de datos de vídeo relacionados.
Si una bandera de bloque cifrado indica que no están presentes coeficientes significativos dentro del bloque correspondiente (por ejemplo, la bandera es igual a “0”), no puede codificarse información adicional para el bloque. Sin embargo, si una bandera de bloque cifrado indica que existe al menos un coeficiente significativo dentro del bloque correspondiente (por ejemplo, la bandera es igual a “1”), puede codificarse un SM para el bloque siguiendo un orden de barrido de coeficientes asociado con el bloque. El orden de barrido puede definir el orden en el que la significación de cada coeficiente dentro del bloque se codifica como parte de la codificación de SM. Dicho de otro modo, el barrido puede serializar el bloque bidimensional de coeficientes a una representación unidimensional para determinar la significación de los coeficientes. Pueden usarse diferentes órdenes de barrido (por ejemplo, en zigzag, horizontal y vertical). Las figuras 5A-5C, también descritas en mayor detalle a continuación, ilustran ejemplos de algunos de los diversos órdenes de barrido que pueden usarse para bloques 8x8 de datos de vídeo. Sin embargo, las técnicas de esta divulgación también pueden aplicarse con respecto a una amplia variedad de otros órdenes de barrido, incluyendo un orden de barrido en diagonal, órdenes de barrido que son combinaciones de órdenes de barrido en zigzag, horizontal, vertical y/o diagonal, así como órdenes de barrido que son parcialmente en zigzag, parcialmente en horizontal, parcialmente en vertical y/o parcialmente en diagonal. Además, las técnicas de esta divulgación también pueden considerar un orden de barrido que es en sí mismo adaptativo basándose en estadísticas asociadas con bloques de datos de vídeo cifrados previamente (por ejemplo, bloques que tienen el mismo tamaño de bloque o modo de cifrado que el bloque actual que está cifrándose). Por ejemplo, un orden de barrido adaptativo podría ser el orden de barrido asociado con el bloque, en algunos casos.
Dada una bandera de bloque cifrado que indica que existe al menos un coeficiente significativo dentro de un bloque dado, y un orden de barrido para el bloque, puede codificarse un SM para el bloque de la siguiente manera. El bloque bidimensional de coeficientes de transformada cuantificados puede mapearse en primer lugar en una matriz unidimensional usando el orden de barrido. Para cada coeficiente en la matriz, siguiendo el orden de barrido, puede codificarse una bandera de coeficiente significativo de un bit (por ejemplo, correspondiente al elemento sintáctico “significant_coeff_flag”). Es decir, a cada posición en la matriz puede asignársele un valor binario, que puede establecerse en “1” si el coeficiente correspondiente es significativo y establecerse en “0” si no es significativo (es decir, cero). Si una bandera de coeficiente significativo dada es igual a “1”, lo que indica que el coeficiente correspondiente es significativo, también puede codificarse una bandera de último coeficiente significativo de un bit adicional (por ejemplo, correspondiente a elemento sintáctico “last_significant_coeff_flag”), lo que puede indicar si el coeficiente correspondiente es el último coeficiente significativo dentro de la matriz (es decir, dentro del bloque dado el orden de barrido). Específicamente, cada bandera de último coeficiente significativo puede establecerse en “1” si el coeficiente correspondiente es el último coeficiente significativo dentro de la matriz, y establecerse en “0” si no. Si se alcanza la última posición de la matriz de esta manera, y el procedimiento de codificación de SM no se terminó por una bandera de último coeficiente significativo igual a “1”, entonces puede deducirse que el último coeficiente en la matriz (y de ese modo el bloque dado el orden de barrido) es significativo, y no puede codificarse ninguna bandera de último coeficiente significativo para la última posición de la matriz.
Las figuras 4B-4C son diagramas conceptuales que ilustran ejemplos de conjuntos de banderas de coeficiente significativo y banderas de último coeficiente significativo, respectivamente, correspondientes a datos de SM para el bloque representado en la figura 4A, presentado en forma de mapa, en vez de matriz. Obsérvese que pueden establecerse banderas de coeficiente significativo y banderas de último coeficiente significativo, tal como se describió anteriormente, en diferentes valores (por ejemplo, una bandera de coeficiente significativo puede establecerse en “0” si el coeficiente correspondiente es significativo, y “1” si no es significativo, y puede establecerse una bandera de último coeficiente significativo en “0” si el coeficiente correspondiente es el último coeficiente significativo, y “1” si no es el último coeficiente significativo) en otros ejemplos.
Después de codificarse el SM, tal como se describió anteriormente, también puede codificarse el valor de cada coeficiente significativo (es decir, la magnitud y el signo de cada coeficiente significativo, por ejemplo, indicado por los elementos sintácticos “coeff_absJevel_minus1” y “coeff_sign_flag”, respectivamente) en el bloque.
Un inconveniente de las técnicas descritas anteriormente es que la decisión referente a cifrar información de posición del último coeficiente significativo, por ejemplo, last_significant_coeff_flag, para un coeficiente particular de un bloque depende de la información de posición de coeficiente significativo correspondiente de ese coeficiente, por ejemplo, significant_coeff_flag. Como resultado de usar las técnicas de cifrado intercalado descritas anteriormente, un cifrador de vídeo usado para cifrar la información puede tener mayor complejidad en relación con otros sistemas. Además, la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo pueden consumir un alto porcentaje de la velocidad de transmisión de bits de vídeo comprimido global si se cifra de manera ineficaz, por ejemplo, usando modelos de contexto que contienen estadísticas imprecisas cuando se cifra la información realizando un procedimiento de cifrado por entropía adaptativo según el contexto, por ejemplo, un procedimiento CABAC, o sin usar otra información sintáctica útil. Por tanto, el diseño y la aplicación apropiados del modelo de contexto, y el uso de otra información sintáctica útil, son muy importantes para lograr un cifrado eficaz de la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo, y para una compresión de datos de vídeo global eficaz.
Por consiguiente, esta divulgación describe técnicas que pueden facilitar usar sistemas de cifrado que tienen menor complejidad (y/o compresión mejorada) en relación con otros sistemas cuando se cifra la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo, y cifrar la información de manera más eficaz que cuando se usan otros métodos. En particular, esta divulgación proporciona técnicas para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque. Cifrar la información de posición del último coeficiente significativo para el bloque antes de cifrar la información de posición de coeficiente significativo para el bloque tiene el efecto de separar estas etapas de cifrado, lo que puede facilitar cifrar la información en paralelo, y puede facilitar usar sistemas de cifrado que tienen menor complejidad que otros sistemas.
Adicionalmente, esta divulgación proporciona técnicas para usar la información de posición del último coeficiente significativo para cifrar la propia información y la información de posición de coeficiente significativo. En algunos ejemplos, la información de posición del último coeficiente significativo puede usarse como contexto para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto. En otros ejemplos, la información de posición del último coeficiente significativo puede usarse como información sintáctica para cifrar la propia información, y para cifrar la información de posición de coeficiente significativo.
Como un ejemplo, el codificador de vídeo 20 del dispositivo fuente 12 puede estar configurado para codificar determinados bloques de datos de vídeo (por ejemplo, uno o más macrobloques, o las TU de una CU), y el decodificador de vídeo 30 del dispositivo de destino 14 puede estar configurado para recibir los datos de vídeo codificados procedentes del codificador de vídeo 20, por ejemplo, del módem 28 y el receptor 26. Según las técnicas de esta divulgación, como un ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar información que identifica la posición del último coeficiente significativo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Como un ejemplo, para cifrar la posición unidimensional dentro del bloque, el decodificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar la información de posición del último coeficiente significativo usando el orden de barrido. Por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30
pueden cifrar un bit, o un “bin”, para cada uno de uno o más coeficientes en el orden de barrido, empezando con el primer coeficiente en el orden de barrido, y finalizando con el último coeficiente significativo. En este ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar cada bin realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del coeficiente correspondiente al bin dentro del bloque según el orden de barrido. Las estimaciones de probabilidad para el modelo de contexto usado para cifrar cada bin puede indicar la probabilidad de que el bin sea igual a un valor particular (por ejemplo, “0” o “1”).
Como otro ejemplo, para cifrar la posición bidimensional dentro del bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para usar la información de posición del último coeficiente significativo como contexto para cifrar la propia información. En los siguientes ejemplos, la posición bidimensional puede comprender coordenadas horizontal y vertical (por ejemplo, coordenadas x e y) de la posición del último coeficiente significativo dentro del bloque, en la que la coordenada horizontal corresponde al número de columna de la posición, y la coordenada vertical corresponde al número de fila de la posición. Por ejemplo, los números de fila y columna pueden ser en relación con números de fila y columna correspondientes a una posición de referencia, u “origen”, dentro del bloque, por ejemplo, la posición del bloque arriba a la izquierda, también denominada posición “DC”.
Adicionalmente, en los siguientes ejemplos, cada coordenada puede representarse como una secuencia de uno o más bins, o “binarizarse”, en la que la secuencia comprende una palabra de código unitaria que incluye el uno o más bins. Una vez más, las estimaciones de probabilidad para el modelo de contexto usado para cifrar cada bin pueden indicar la probabilidad de que el bin sea igual a un valor particular (por ejemplo, “0” o “1”). En estos ejemplos, cada bin de una palabra de código unitaria dada puede corresponder a un número de fila o columna, empezando desde la fila o columna de la posición de origen dentro del bloque, y finalizando con la fila o columna correspondiente a la posición del último coeficiente significativo dentro del bloque. En algunos ejemplos, el bin correspondiente a la posición del último coeficiente significativo puede establecerse en un valor de “0”, mientras que todos los bins restantes de la palabra de código pueden establecerse en un valor de “1”. En otros ejemplos, los bins pueden establecerse en otros valores. Obsérvese que, en otros ejemplos de manera acorde con las técnicas de esta divulgación, pueden usarse otros tipos de palabras de código, por ejemplo, palabras de código unitarias truncadas, palabras de código Golomb exponencial, palabras de código concatenadas, así como combinaciones de diversas técnicas de cifrado.
En un ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar cada bin de una palabra de código unitaria para una coordenada dada realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unitaria. Tal como se describió previamente, la posición del bin dentro de la palabra de código unitaria puede corresponder a un número de fila o columna de una posición dentro del bloque correspondiente al bin. Dicho de otro modo, el contexto usado para cifrar el bin puede ser una posición dentro del bloque en la dirección x o y que corresponde al bin.
En algunos casos, pueden correlacionarse las coordenadas horizontal y vertical de la posición del último coeficiente significativo. Por ejemplo, si la coordenada horizontal es igual a un valor pequeño, es más probable que la coordenada sea igual a un valor pequeño en vez de uno grande. Es decir, diferentes valores de una coordenada pueden dar como resultado una estadística diferente para la otra coordenada, es decir, diferentes estimaciones de probabilidad para bins de una palabra de código unitaria para la otra coordenada. Como tal, cuando se cifra una coordenada de la posición del último coeficiente significativo usando estadística correspondiente a la coordenada, por ejemplo, cuando se realiza un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC), usar estadística que incluye información sobre un valor de la otra coordenada puede dar como resultado que la estadística sea precisa y, por tanto, puede permitir un cifrado eficaz.
Por consiguiente, en otro ejemplo, cuando se cifra la información de posición del último coeficiente significativo en casos en los que se cifra una coordenada (por ejemplo, vertical) después de otra coordenada (por ejemplo, horizontal), el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar cada bin de una palabra de código unitaria para la primera coordenada realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unitaria, tal como se describió previamente, y un valor de la otra coordenada cifrada previamente.
De manera similar, en algunos casos, diferentes valores de un bin de una palabra de código unitaria para una coordenada de la posición del último coeficiente significativo pueden dar como resultado diferentes estimaciones de probabilidad para un bin de una palabra de código unitaria para la otra coordenada. Como tal, cuando se cifra un bin de una palabra de código unitaria para una coordenada de la posición del último coeficiente significativo usando las estimaciones de probabilidad correspondiente al bin, tal como se describió anteriormente, usar las estimaciones de probabilidad que incluyen información sobre un valor de un bin, por ejemplo, un bin correspondiente, de una palabra de código unitaria para la otra coordenada puede dar como resultado que las estimaciones de probabilidad sean
precisas, y, por tanto, puede permitir un cifrado eficaz.
Por ejemplo, para cifrar la coordenada horizontal y la coordenada vertical, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada. Por ejemplo, el al menos un bin de la secuencia correspondiente a la otra coordenada puede ser un bin que corresponde a al menos un bin de la secuencia correspondiente a la primera de las coordenadas, por ejemplo, los bins pueden estar ubicados en las mismas o similares posiciones de bin dentro de sus palabras de código respectivas. Como un ejemplo, para cifrar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada. Por consiguiente, todavía en otro ejemplo, cuando se cifra la información de posición del último coeficiente significativo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar las coordenadas horizontal y vertical de manera intercalada usando bins cifrados previamente como contextos. Es decir, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar cada bin de una palabra de código unitaria para una coordenada dada realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unitaria, tal como se describió previamente, y un valor de uno o más bins cifrados previamente de una palabra de código unitaria para la otra coordenada.
Adicionalmente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada, generalmente. En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar bins individuales de cada palabra de código de manera intercalada. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar grupos de bins de cada palabra de código de manera intercalada. Por ejemplo, al menos un bin de cada uno del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada pueden comprender un bin codificado usando un modo de cifrado normal, y al menos un bin de cada una de las secuencias puede comprender un bin cifrado usando un modo de cifrado de derivación.
En este ejemplo, para cifrar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado normal antes de cifrar el al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado normal, seguido por el cifrado del al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado de derivación antes de cifrar el al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado de derivación. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para cifrar los bins de las secuencias codificadas usando el modo de cifrado de derivación conjuntamente.
Todavía en otro ejemplo, el codificador de vídeo 20 puede disponer los coeficientes de bloque en una secuencia continua basándose en el orden de barrido, es decir, serializar los coeficientes, y mapear los coeficientes en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido. Posteriormente, el codificador de vídeo 20 puede codificar la posición del último coeficiente significativo dentro del segundo bloque según el segundo orden de barrido usando las coordenadas horizontal y vertical, tal como se describió previamente. El decodificador de vídeo 30 puede decodificar, a su vez, las coordenadas horizontal y vertical de la posición del último coeficiente significativo dentro del segundo bloque según el segundo orden de barrido, disponer los coeficientes de bloque en una secuencia continua basándose en el segundo orden de barrido, y mapear los coeficientes en un tercer bloque diferente usando un tercer orden de barrido diferente.
En este ejemplo, puede ser más probable que los coeficientes significativos, incluyendo el último coeficiente significativo, del bloque original estén ubicados más bien antes que después en el orden de barrido original. El que el codificador de vídeo 20 y/o el decodificador de vídeo 30 realicen las etapas anteriores puede dar como resultado que varíe la probabilidad de que una posición dada dentro del segundo bloque contenga el último coeficiente significativo, dependiendo de las coordenadas horizontal y vertical de la posición. Por ejemplo, en casos en los que el segundo orden de barrido es el orden de barrido en horizontal, la probabilidad de que el último coeficiente significativo esté ubicado en una primera fila del segundo bloque puede ser mayor que la probabilidad de que el último coeficiente significativo esté ubicado en filas posteriores. Además, para una fila dada, la probabilidad de que el último coeficiente significativo esté ubicado en una primera columna (es decir, antes en la fila) del segundo bloque también puede ser mayor que la probabilidad de que el último coeficiente significativo esté ubicado en columnas posteriores (es decir, después en la fila). Dicho de otro modo, diferentes valores de una coordenada pueden dar como resultado diferentes estimaciones de probabilidad para bins de una palabra de código unitaria para la otra
coordenada. Adicionalmente, diferentes posiciones de los bins de la palabra de código unitaria para la otra coordenada dentro de la palabra de código pueden dar como resultado diferentes estimaciones de probabilidad para los bins de la palabra de código. Es decir, diferentes números de fila o columna de posiciones dentro del segundo bloque correspondiente a los bins pueden dar como resultado diferentes estimaciones de probabilidad para los bins. Puede aparecer un fenómeno similar cuando el segundo orden de barrido es otro orden de barrido, por ejemplo, el orden de barrido en vertical.
En este ejemplo, cuando se cifra una coordenada de la posición del último coeficiente significativo dentro del segundo bloque usando estadística correspondiente a la primera coordenada, es decir, las estimaciones de probabilidad para bins de una palabra de código unitaria para la primera coordenada, usar estadística que incluye información sobre un valor de la otra coordenada, y posiciones de los bins de la palabra de código unitaria para la primera coordenada dentro de la palabra de código, pueden dar como resultado que la estadística sea precisa y, por tanto, puede permitir un cifrado eficaz. Como tal, en este ejemplo, cuando se cifra la información de posición del último coeficiente significativo en casos en los que se cifra una coordenada después de otra coordenada, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar cada bin de una palabra de código unitaria para la primera coordenada realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unitaria, tal como se describió previamente, y un valor de la otra coordenada cifrada previamente.
Tal como se ilustró mediante los ejemplos anteriores, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo como contexto para cifrar la propia información. En otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo como contexto para cifrar la información de posición de coeficiente significativo, por ejemplo, realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto. En estos ejemplos, las estimaciones de probabilidad para el modelo de contexto usado para cifrar la información de posición de coeficiente significativo pueden indicar la probabilidad de que un coeficiente particular sea significativo (por ejemplo, la probabilidad de que una bandera de coeficiente significativo para el coeficiente sea igual a “0” o “1”). Específicamente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la significación de coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido usando la posición del último coeficiente significativo como contexto.
Como un ejemplo, la posición del último coeficiente significativo que está ubicada por encima de un umbral de posición dado en el orden de barrido puede corresponder a un contexto, mientras que la posición que está ubicada en, o por debajo del umbral de posición puede corresponder a otro contexto. En este ejemplo, la probabilidad de que un coeficiente particular de los coeficientes sea significativo puede variar dependiendo de si los coeficientes están ubicados antes o después en el orden de barrido, tal como se indica mediante la posición del último coeficiente significativo. Es decir, diferentes posiciones de último coeficiente significativo pueden dar como resultado estadística diferente para la significación de los coeficientes.
De manera similar a como se describió anteriormente, en este ejemplo, cuando se cifra la información de posición de coeficiente significativo usando la estadística correspondiente, es decir, las estimaciones de probabilidad para la significación de cada coeficiente, usar estadística que incluye información sobre la posición del último coeficiente significativo puede dar como resultado que la estadística sea precisa y, por tanto, puede permitir un cifrado eficaz. Por consiguiente, en este ejemplo, cuando se cifra la información de posición de coeficiente significativo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la significación de cada coeficiente realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir la posición del último coeficiente significativo, y por ejemplo, la posición del coeficiente dentro del bloque según el orden de barrido.
Como otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo como información sintáctica para cifrar la información de posición de coeficiente significativo. En un ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo para cifrar la información de posición de coeficiente significativo, usando la propia información de posición de coeficiente significativo como contexto.
Por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la información de posición de coeficiente significativo cifrando la significación de los coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido en un orden de barrido invertido, empezando desde el último coeficiente significativo y avanzando hasta el primer coeficiente en el orden de barrido (por ejemplo, correspondiente a la posición DC). El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la significación de cada coeficiente usando la significación de coeficientes cifrados previamente como contexto, por ejemplo, realizando una vez más un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto.
De esta manera, las estimaciones de probabilidad para el modelo de contexto usado para cifrar la significación de cada coeficiente pueden incorporar conocimientos de significación de coeficientes ubicados después en el orden de barrido original, lo que puede dar como resultado el uso de estimaciones de probabilidad precisas y, por tanto, puede permitir un cifrado eficaz. Además, tal información de significación no puede obtenerse usando otras técnicas porque, para un coeficiente dado, no puede conocerse la significación de coeficientes ubicados después en el orden de barrido original.
Todavía como otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo para cifrar conjuntamente la información de posición de coeficiente significativo. Por ejemplo, según algunas técnicas, la significación de los coeficientes se cifra con un coeficiente cada vez. Dicho de otro modo, se realiza la determinación de si los coeficientes son significativos de manera secuencial para cada coeficiente según el orden de barrido. Según las técnicas de esta divulgación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo para disponer múltiples coeficientes ubicados antes que el último coeficiente significativo dentro del bloque según el orden de barrido en uno o más grupos, y cifrar conjuntamente la significación de los coeficientes dentro de cada grupo, lo que puede permitir una vez más implementaciones de cifrado en paralelo y cifrado eficaz.
Por ejemplo, para cada grupo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden generar una bandera que indica si los coeficientes dentro del grupo tienen todos un valor nulo, y, cuando al menos uno de los coeficientes es significativo, una bandera de coeficiente significativo para cada uno de los coeficientes, que indica si el coeficiente respectivo es significativo.
Todavía como otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la información de posición del último coeficiente significativo como información sintáctica para cifrar la propia información. Por ejemplo, en algunos casos, los coeficientes significativos, incluyendo el último coeficiente significativo, del bloque pueden concentrarse en un subconjunto de posiciones de bloque, por ejemplo, antes en el orden de barrido y dentro de una estrecha proximidad a la posición DC, mientras que en otros casos, los coeficientes pueden estar ubicados en la totalidad del bloque, por ejemplo, por todo o la mayor parte del orden de barrido.
En este ejemplo, el cifrado de la posición unidimensional del último coeficiente significativo puede requerir usar menos bits que el cifrado de la posición bidimensional del último coeficiente significativo cuando el último coeficiente significativo está ubicado antes en el orden de barrido. De manera similar, el cifrado de la posición bidimensional puede requerir usar menos bits que el cifrado de la posición unidimensional cuando el último coeficiente significativo está ubicado después en el orden de barrido.
Como tal, en vez de cifrar la posición del último coeficiente significativo usando un método fijo, por ejemplo, cifrando la posición unidimensional o bidimensional, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden aprovecharse de este fenómeno cifrando una bandera que indica si el último coeficiente significativo está ubicado dentro de una gama de posiciones dentro del bloque, y cifrando la posición unidimensional cuando el último coeficiente significativo está ubicado dentro de la gama, y si no, cifrando la posición bidimensional. Dicho de otro modo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden usar la posición del último coeficiente significativo en relación con la gama para indicar si el último coeficiente significativo está ubicado antes o después en el orden de barrido.
Por ejemplo, la gama puede definirse como un sub-bloque dentro del bloque, por ejemplo, un sub-bloque de 4x4 dentro del bloque de 16x16, o como una gama de posiciones dentro del bloque según el orden de barrido, por ejemplo, las primeras 10 posiciones en el orden de barrido. Como tal, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la información de posición del último coeficiente significativo de diferente manera dependiendo de la propia información, lo que puede facilitar un cifrado eficaz.
Por consiguiente, las técnicas de esta divulgación pueden permitir que el codificador de vídeo 20 y/o el decodificador de vídeo 30 tengan menor complejidad en relación con otros sistemas, y pueden permitir que el codificador de vídeo 20 y/o el decodificador de vídeo 30 cifren la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo de manera más eficaz que cuando se usan otros métodos. De esta manera, puede haber ahorros de bits relativos para un flujo de bits cifrado que incluye la información, y una reducción relativa de la complejidad para el codificador de vídeo 20 y/o el decodificador de vídeo 30 usados para cifrar la información, cuando se usan las técnicas de esta divulgación.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse, cada uno, como cualquiera de una variedad de conjuntos de circuitos de codificador o decodificador adecuados, según sea aplicable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables in situ (FPGA), conjuntos de circuitos de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 puede estar incluido en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC). Un aparato que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono móvil.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20 que puede implementar técnicas para codificar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes de la codificación de información de posición de coeficiente significativo para el bloque, de manera acorde con las técnicas de esta divulgación. El codificador de vídeo 20 puede realizar cifrado intra e inter de bloques dentro de fotogramas de vídeo, incluyendo macrobloques, o CU, o divisiones o subdivisiones de los mismos. El cifrado intra se basa en la predicción espacial para reducir o eliminar redundancia espacial en vídeo dentro de un fotograma de vídeo dado. El cifrado inter se basa en la predicción temporal para reducir o eliminar redundancia temporal en vídeo dentro de fotogramas adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión de base espacial, y los modos inter, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a varios modos de compresión de base temporal.
Tal como se muestra en la figura 2, el codificador de vídeo 20 recibe un bloque actual de datos de vídeo dentro de un fotograma de vídeo que va a codificarse. En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una memoria 64, un sumador 50, un módulo de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye una unidad de cuantificación inversa 58, un módulo de transformada inversa 60 y un sumador 62. Un filtro de desbloqueo (no se muestra en la figura 2) también puede incluirse para filtrar límites de bloque para eliminar artefactos con capacidad de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo filtrará normalmente la salida del sumador 62.
Durante el procedimiento de codificación, el codificador de vídeo 20 recibe un segmento o fotograma de vídeo que va a cifrarse. El fotograma o segmento puede dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden realizar cifrado de predicción inter de un bloque de vídeo recibido dado en relación con uno o más bloques en uno o más fotogramas de referencia para proporcionar compresión temporal. El módulo de predicción intra 46 puede realizar cifrado de predicción intra de un bloque de vídeo recibido dado en relación con uno o más bloques vecinos en el mismo fotograma o segmento como el bloque que va a cifrarse para proporcionar compresión espacial.
La unidad de selección de modo 40 puede seleccionar uno de los modos de cifrado, es decir, un modo o múltiples modos de cifrado intra o inter, basándose en resultados de cifrado (por ejemplo, velocidad de cifrado resultante y nivel de distorsión), y basándose en un tipo de fotograma o segmento para el fotograma o segmento que incluye el bloque recibido dado que está cifrándose, y proporcionar el bloque sometido a cifrado intra o inter resultante al sumador 50 para generar datos de bloques residuales y al sumador 62 para reconstruir el bloque codificado para su uso en un fotograma de referencia o segmento de referencia. En general, la predicción intra implica predecir un bloque actual en relación con bloques vecinos, cifrados previamente, mientras que la predicción inter implica estimación de movimiento y compensación de movimiento para predecir de manera temporal el bloque actual.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 representan elementos de predicción inter del codificador de vídeo 20. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integrados, pero se ilustran de manera independiente con propósitos conceptuales. La estimación de movimiento es el procedimiento de generación de vectores de movimiento, que estiman movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo dentro de un fotograma de referencia de predicción (u otra unidad cifrada) en relación con el bloque actual (u otra unidad cifrada). Un bloque predictivo puede ser un bloque que se encuentra que coincide en gran medida con el bloque que va a cifrarse, en términos de diferencia de píxel, lo que puede determinarse mediante la suma de diferencias absolutas (SAD), suma de diferencias al cuadrado (SSD), u otra métrica de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una división de un bloque. La compensación de movimiento puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado mediante la estimación de movimiento. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar integradas funcionalmente, en algunos ejemplos.
La unidad de estimación de movimiento 42 puede calcular un vector de movimiento para un bloque de vídeo de un fotograma sometido a cifrado inter comparando el bloque de vídeo con bloques de vídeo de un fotograma de referencia en la memoria 64. La unidad de compensación de movimiento 44 también puede interpolar píxeles enteros secundarios del fotograma de referencia, por ejemplo, un fotograma I o un fotograma P, con los propósitos de esta comparación. La norma H.264 de ITU, como ejemplo, describe dos listas: la lista 0, que incluye fotogramas de referencia que tienen un orden de visualización antes que el fotograma actual que está codificándose, y la lista 1, que incluye fotogramas de referencia que tienen un orden de visualización después del fotograma actual que está codificándose. Por tanto, pueden organizarse los datos almacenados en la memoria 64 según estas listas.
La unidad de estimación de movimiento 42 puede comparar bloques de uno o más fotogramas de referencia de la memoria 64 con un bloque que va a codificarse de un fotograma actual, por ejemplo, un fotograma P o un fotograma B. Cuando los fotogramas de referencia en la memoria 64 incluyen valores para píxeles enteros secundarios, un vector de movimiento calculado por la unidad de estimación de movimiento 42 puede referirse a una ubicación de píxel entero secundario de un fotograma de referencia. La unidad de estimación de movimiento 42 y/o la unidad de compensación de movimiento 44 también pueden estar configuradas para calcular valores para posiciones de píxel
entero secundario de fotogramas de referencia almacenados en la memoria 64 si no se almacenan valores para posiciones de píxel entero secundario en la memoria 64. La unidad de estimación de movimiento 42 puede enviar el vector de movimiento calculado a la unidad de codificación por entropía 56 y la unidad de compensación de movimiento 44. El fotograma de bloque de referencia identificado por un vector de movimiento puede denominarse bloque de predicción inter, o, más generalmente, bloque predictivo. La unidad de compensación de movimiento 44 puede calcular datos de predicción basándose en el bloque predictivo.
El módulo de predicción intra 46 puede someter a predicción intra un bloque actual, como alternativa a la predicción inter realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, tal como se describió anteriormente. En particular, el módulo de predicción intra 46 puede determinar un modo de predicción intra para su uso para cifrar un bloque actual. En algunos ejemplos, el módulo de predicción intra 46 puede codificar el bloque actual usando diversos modos de predicción intra, por ejemplo, durante pases de codificación independientes, y el módulo de predicción intra 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de predicción intra apropiado para su uso a partir de los modos sometidos a prueba. Por ejemplo, el módulo de predicción intra 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de predicción intra sometidos a prueba, y seleccionar el modo de predicción intra que tiene las mejores características de velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina generalmente la cantidad de distorsión (o error) entre un bloque codificado y un bloque original, no codificado que se codificó para producir el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) usada para producir el bloque codificado. El módulo de predicción intra 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de predicción intra presenta el mejor valor de velocidad-distorsión para el bloque.
Después de predecir un bloque actual, por ejemplo, usando la predicción intra o la predicción inter, el codificador de vídeo 20 puede formar un bloque de vídeo residual restando los datos de predicción calculados por la unidad de compensación de movimiento 44 o el módulo de predicción intra 46 del bloque original de vídeo que está cifrándose. El sumador 50 representa el componente o componentes que pueden realizar esta operación de resta. El módulo de transformada 52 puede aplicar una transformada, tal como una transformada discreta del coseno (DCT) o una transformada similar conceptualmente, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. El módulo de transformada 52 puede realizar otras transformadas, tales como las definidas por la norma H.264, que son similares conceptualmente a DCT. También podrían usarse transformadas de ondícula, transformadas enteras, transformadas de sub-banda u otros tipos de transformadas. En cualquier caso, el módulo de transformada 52 puede aplicar la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual de un dominio de píxeles a un dominio de transformada, tal como un dominio de frecuencia. La unidad de cuantificación 54 puede cuantificar los coeficientes de transformada residuales para reducir adicionalmente la velocidad de transmisión de bits. El procedimiento de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
Tras la cuantificación, la unidad de codificación por entropía 56 puede someter a cifrado por entropía los coeficientes de transformada cuantificados usando las técnicas de esta divulgación para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque. Sin embargo, para otros tipos de elementos sintácticos, la unidad de codificación por entropía 56 puede realizar otras técnicas de cifrado por entropía, que pueden incluir CAVLC, CABAC, PIPE, u otra técnica de cifrado por entropía. Tras el cifrado por entropía por la unidad de codificación por entropía 56, puede transmitirse el vídeo codificado a otro dispositivo o archivarse para una transmisión o recuperación posterior.
En algunos casos, la unidad de codificación por entropía 56 u otra unidad del codificador de vídeo 20 puede estar configurada para realizar otras funciones de cifrado, además de someter a cifrado por entropía los coeficientes de transformada cuantificados tal como se describió anteriormente. Por ejemplo, la unidad de codificación por entropía 56 puede construir información de cabecera para el bloque (por ejemplo, macrobloque, CU o LCU) o fotograma de vídeo que contiene el bloque, con elementos sintácticos apropiados para la transmisión en el flujo de bits de vídeo codificado. Según algunas normas de cifrado, tales elementos sintácticos pueden incluir información de posición del último coeficiente significativo e información de posición de coeficiente significativo para el bloque, tal como se describió previamente. También tal como se describió previamente, el cifrado de esta información según algunas técnicas puede requerir usar sistemas de cifrado que tienen mayor complejidad en relación con otros sistemas, y la información cifrada resultante puede consumir un alto porcentaje de la velocidad de transmisión de bits de vídeo comprimido global si se cifra de manera ineficaz. Como tal, esta divulgación describe técnicas que pueden facilitar usar sistemas de cifrado que tienen menor complejidad en relación con otros sistemas cuando se cifra la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo, y cifrar la información de manera más eficaz que cuando se usan otros métodos.
Como un ejemplo, la unidad de codificación por entropía 56 del codificador de vídeo 20 puede estar configurada para codificar determinados bloques de datos de vídeo (por ejemplo, uno o más macrobloques, o las TU de una CU). Por ejemplo, tal como se describió anteriormente con referencia a la figura 1, la unidad de codificación por entropía 56 puede estar configurada para cifrar información que identifica la posición del último coeficiente significativo dentro
de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en la que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, la unidad de codificación por entropía 56 puede estar configurada para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Como un ejemplo, para cifrar la posición unidimensional dentro del bloque, la unidad de codificación por entropía 56 puede estar configurada para determinar, para cada uno de uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente significativo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, si el coeficiente es el último coeficiente significativo dentro del bloque según el orden de barrido, y generar una bandera de último coeficiente significativo que indica si el coeficiente es el último coeficiente significativo dentro del bloque según el orden de barrido. La unidad de codificación por entropía 56 puede estar configurada además para disponer las banderas de último coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el orden de barrido, y codificar la secuencia.
Como otro ejemplo, para cifrar la posición bidimensional dentro del bloque, la unidad de codificación por entropía 56 puede estar configurada para determinar una coordenada horizontal de la posición del último coeficiente significativo dentro del bloque según el orden de barrido, determinar una coordenada vertical de la posición del último coeficiente significativo dentro del bloque según el orden de barrido, y codificar la coordenada horizontal y la coordenada vertical. En este ejemplo, el bloque puede ser un primer bloque, el orden de barrido puede ser un primer orden de barrido, y la unidad de codificación por entropía 56 puede estar configurada además para disponer coeficientes asociados con un segundo bloque en una secuencia continua basándose en un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, y mapear la secuencia en el primer bloque usando el primer orden de barrido para generar el primer bloque. También en este ejemplo, tal como se describió previamente, para codificar cada una de la coordenada horizontal y la coordenada vertical, la unidad de codificación por entropía 56 puede estar configurada para binarizar la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins, y codificar la secuencia. Por ejemplo, la secuencia de uno o más bins puede comprender una de una palabra de código unitaria, una palabra de código unitaria truncada, una palabra de código Golomb exponencial y una palabra de código concatenada.
Como un ejemplo, la palabra de código unitaria truncada puede comprender, en el caso en el que la coordenada respectiva tiene un valor que es menor que un valor truncado predeterminado, una palabra de código unitaria que comprende un número variable de un primer símbolo (por ejemplo, “1”), correspondiendo el número variable al valor de la coordenada, seguido por un segundo símbolo (por ejemplo, “0”), en el que el primer símbolo es diferente del segundo símbolo, y en el caso en el que la coordenada tiene un valor que es mayor que o igual al valor truncado, un número predeterminado del primer símbolo, correspondiendo el número predeterminado al valor truncado.
Como otro ejemplo, la palabra de código concatenada puede comprender una concatenación de una primera palabra de código (por ejemplo, una palabra de código generada usando un primer método de cifrado) y una segunda palabra de código (por ejemplo, una palabra de código generada usando un segundo método de cifrado), en la que la primera palabra de código es diferente de la segunda palabra de código. En este ejemplo, la palabra de código concatenada puede usarse en casos en los que el bloque de datos de vídeo es suficientemente grande de tal manera que usar una palabra de código unitaria, o una palabra de código unitaria truncada, para representar la coordenada respectiva puede requerir más bits que usar la palabra de código concatenada.
También tal como se describió previamente, para cifrar la coordenada horizontal y la coordenada vertical, la unidad de codificación por entropía 56 puede estar configurada para codificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada. Como un ejemplo, para codificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada, la unidad de codificación por entropía 56 puede estar configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
Adicionalmente, la unidad de codificación por entropía 56 puede estar configurada para codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada. Por ejemplo, al menos un bin de cada uno del uno o más bins de la
secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada pueden comprender un bin cifrado usando un modo de cifrado normal, y al menos un bin de cada una de las secuencias pueden comprender un bin cifrado usando un modo de cifrado de derivación.
En este ejemplo, para codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada, la unidad de codificación por entropía 56 puede estar configurada para codificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado normal antes de la codificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado normal, seguido por codificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado de derivación antes de la codificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado de derivación. En otros ejemplos, la unidad de codificación por entropía 56 puede estar configurada para codificar los bins de las secuencias cifradas usando el modo de cifrado de derivación conjuntamente.
Como otro ejemplo, para cifrar la información de posición de coeficiente significativo, en el que el orden de barrido puede ser un primer orden de barrido, la unidad de codificación por entropía 56 puede estar configurada para determinar, para cada uno de uno o más coeficientes asociados con el bloque, empezando con el último coeficiente significativo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, si el coeficiente es un coeficiente significativo, y generar una bandera de coeficiente significativo que indica si el coeficiente es un coeficiente significativo. La unidad de codificación por entropía 56 puede estar configurada además para disponer las banderas de coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el segundo orden de barrido, y codificar la secuencia.
Como otro ejemplo, para cifrar la información de posición de coeficiente significativo, la unidad de codificación por entropía 56 puede estar configurada para disponer uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente significativo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, para dar uno o más grupos, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes. La unidad de codificación por entropía 56 puede estar configurada además para determinar, para cada uno del uno o más grupos, si el uno o más de los coeficientes son coeficientes significativos, y generar una o más banderas, en la que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo (es decir, no significativos), y, cuando al menos uno del uno o más de los coeficientes es un coeficiente significativo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente significativo. La unidad de codificación por entropía 56 puede ser todavía además configurado para disponer la una o más banderas para el uno o más grupos en una secuencia continua basándose en el orden de barrido, y codificar la secuencia.
Todavía en otro ejemplo, para cifrar la información de posición del último coeficiente significativo, y para cifrar la información de posición de coeficiente significativo, la unidad de codificación por entropía 56 puede estar configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye la aplicación por la unidad de codificación por entropía 56 de un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información de posición del último coeficiente significativo, y la información de posición de coeficiente significativo. Como un ejemplo, para codificar la secuencia de uno o más bins correspondiente a cada una de la coordenada horizontal y la coordenada vertical, la unidad de codificación por entropía 56 puede estar configurada para codificar cada bin de la secuencia realizando un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una posición del bin respectivo dentro de la secuencia. Tal como se describió previamente, la posición del bin dentro de la secuencia puede corresponder a un número de fila o columna de una posición dentro del bloque correspondiente al bin. Dicho de otro modo, el contexto usado para cifrar el bin puede ser una posición dentro del bloque en la dirección x o y que corresponde al bin. En este ejemplo, la unidad de codificación por entropía 56 configurado tal como se describe puede permitir que la unidad de codificación por entropía 56 cifre la información de manera más eficaz, por ejemplo, usando un menor número de bits, que cuando se usan otros métodos.
Como tal, las técnicas de esta divulgación pueden permitir que la unidad de codificación por entropía 56 tenga menor complejidad en relación con otros sistemas, y pueden permitir que la unidad de codificación por entropía 56 cifre la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo de manera más eficaz que cuando se usan otros métodos. De esta manera, puede haber ahorros de bits relativos para un flujo de bits cifrado que incluye la información, y una reducción relativa de la complejidad de la unidad de codificación por entropía 56 usada para cifrar la información, cuando se usan las técnicas de esta divulgación.
La unidad de cuantificación inversa 58 y el módulo de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un
de bloque de referencia añadiendo el bloque residual a un bloque predictivo de uno de los fotogramas de la memoria 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxel entero secundario para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción con movimiento compensado producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como bloque de referencia para someter a cifrado inter un bloque en un fotograma de vídeo posterior.
De esta manera, el codificador de vídeo 20 representa un ejemplo de un cifrador de vídeo configurado para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el cifrador de vídeo está configurado para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas para decodificar información de posición del último coeficiente significativo codificada para un bloque de datos de vídeo antes de la decodificación de información de posición de coeficiente significativo codificada para el bloque, de manera acorde con las técnicas de esta divulgación. En el ejemplo de la figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, una unidad de compensación de movimiento 72, un módulo de predicción intra 74, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria 82 y un sumador 80. El decodificador de vídeo 30 puede realizar, en algunos ejemplos, un pase de decodificación generalmente recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 (figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad de decodificación por entropía 70.
El decodificador de vídeo 30 puede estar configurado para recibir datos de vídeo codificados (por ejemplo, uno o más macrobloques, o las TU de una CU) desde el codificador de vídeo 20. Según las técnicas de esta divulgación, como un ejemplo, el decodificador de vídeo 30 puede estar configurado para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el decodificador de vídeo 30 puede estar configurado para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Como un ejemplo, para cifrar la posición unidimensional dentro del bloque, la unidad de decodificación por entropía 70 puede estar configurada para decodificar una secuencia continua de banderas de último coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente significativo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada una de las banderas de último coeficiente significativo indica si el coeficiente respectivo es el último coeficiente significativo dentro del bloque según el orden de barrido. La unidad de decodificación por entropía 70 puede estar configurada además para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es el último coeficiente significativo dentro del bloque según el orden de barrido, basándose en la secuencia.
Como otro ejemplo, para cifrar la posición bidimensional dentro del bloque, la unidad de decodificación por entropía 70 puede estar configurada para decodificar una coordenada horizontal de la posición del último coeficiente significativo dentro del bloque según el orden de barrido, y decodificar una coordenada vertical de la posición del último coeficiente significativo dentro del bloque según el orden de barrido. La unidad de decodificación por entropía 70 puede estar configurada además para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es el último coeficiente significativo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical. En este ejemplo, el bloque puede ser un primer bloque, el orden de barrido puede ser un primer orden de barrido, y la unidad de decodificación por entropía 70 puede estar configurada además para disponer los coeficientes asociados con el primer bloque en una secuencia continua basándose en el primer
orden de barrido, y mapear la secuencia en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, para generar el segundo bloque. La unidad de decodificación por entropía 70 puede ser todavía además configurado para determinar, para cada coeficiente asociado con el segundo bloque, si el coeficiente es el último coeficiente significativo dentro del segundo bloque según el segundo orden de barrido, basándose en las determinaciones para el primer bloque.
También en este ejemplo, tal como se describió previamente, cada una de la coordenada horizontal y la coordenada vertical pueden comprender una coordenada binarizada, de tal manera que la coordenada comprende una secuencia de uno o más bins, y en el que para decodificar cada una de la coordenada horizontal y la coordenada vertical, la unidad de decodificación por entropía 70 puede estar configurada para decodificar la secuencia respectiva. Por ejemplo, la secuencia de uno o más bins puede comprender una de una palabra de código unitaria, una palabra de código unitaria truncada, una palabra de código Golomb exponencial y una palabra de código concatenada.
Como un ejemplo, la palabra de código unitaria truncada pueden comprender, en el caso en el que la coordenada respectiva tiene un valor que es menor que un valor truncado predeterminado, una palabra de código unitaria que comprende un número variable de un primer símbolo (por ejemplo, “1”), correspondiendo el número variable al valor de la coordenada, seguido por un segundo símbolo (por ejemplo, “0”), en el que el primer símbolo es diferente del segundo símbolo, y en el caso en el que la coordenada tiene un valor que es mayor que o igual al valor truncado, un número predeterminado del primer símbolo, correspondiendo el número predeterminado al valor truncado.
Como otro ejemplo, la palabra de código concatenada pueden comprender una concatenación de una primera palabra de código (por ejemplo, una palabra de código generada usando un primer método de cifrado) y una segunda palabra de código (por ejemplo, una palabra de código generada usando un segundo método de cifrado), en el que la primera palabra de código es diferente de la segunda palabra de código. En este ejemplo, la palabra de código concatenada puede usarse en casos en los que el bloque de datos de vídeo es suficientemente grande de tal manera que usar una palabra de código unitaria, o una palabra de código unitaria truncada, para representar la coordenada respectiva puede requerir más bits que usar la palabra de código concatenada.
También tal como se describió previamente, para decodificar la coordenada horizontal y la coordenada vertical, la unidad de decodificación por entropía 70 puede estar configurada para decodificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada. Como un ejemplo, para decodificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada, la unidad de decodificación por entropía 70 puede estar configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
Adicionalmente, la unidad de decodificación por entropía 70 puede estar configurada para decodificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada. Por ejemplo, al menos un bin de cada uno del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada pueden comprender un bin codificado usando un modo de cifrado normal, y al menos un bin de cada una de las secuencias pueden comprender un bin cifrado usando un modo de cifrado de derivación.
En este ejemplo, para decodificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada, la unidad de decodificación por entropía 70 puede estar configurada para decodificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado normal antes de la decodificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado normal, seguido por decodificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada cifrada usando el modo de cifrado de derivación antes de la decodificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada cifrada usando el modo de cifrado de derivación. En otros ejemplos, la unidad de decodificación por entropía 70 puede estar configurada para decodificar los bins de las secuencias cifradas usando el modo de cifrado de derivación conjuntamente.
Como otro ejemplo, para cifrar la información de posición de coeficiente significativo, en el que el orden de barrido puede ser un primer orden de barrido, la unidad de decodificación por entropía 70 puede estar configurada para decodificar una secuencia continua de banderas de coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con el último coeficiente significativo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, en el que cada una de las banderas de coeficiente significativo indica si el coeficiente respectivo es un coeficiente significativo. La unidad de decodificación por entropía 70 puede estar configurada además para determinar, para cada coeficiente asociado con
el bloque, si el coeficiente es un coeficiente significativo, basándose en la secuencia.
Como otro ejemplo, para cifrar la información de posición de coeficiente significativo, la unidad de decodificación por entropía 70 puede estar configurada para decodificar una secuencia continua de banderas para uno o más coeficientes asociados con el bloque dispuesto en uno o más grupos, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente significativo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes. En este ejemplo, para cada uno del uno o más grupos, la secuencia puede comprender una o más banderas, incluyendo una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo (es decir, no significativos), y, cuando al menos uno del uno o más de los coeficientes es un coeficiente significativo, una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente significativo. La unidad de decodificación por entropía 70 puede estar configurada además para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es un coeficiente significativo, basándose en la secuencia.
Todavía en otro ejemplo, para cifrar la información de posición del último coeficiente significativo, y para cifrar la información de posición de coeficiente significativo, la unidad de decodificación por entropía 70 puede estar configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye la aplicación por la unidad de decodificación por entropía 70 de un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información de posición del último coeficiente significativo, y la información de posición de coeficiente significativo. Como un ejemplo, para decodificar la secuencia de uno o más bins correspondiente a cada una de la coordenada horizontal y la coordenada vertical, la unidad de decodificación por entropía 70 puede estar configurada para decodificar cada bin de la secuencia realizando un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una posición del bin respectivo dentro de la secuencia. Tal como se describió previamente, la posición del bin dentro de la secuencia puede corresponder a un número de fila o columna de una posición dentro del bloque correspondiente al bin. Dicho de otro modo, el contexto usado para cifrar el bin puede ser una posición dentro del bloque en la dirección x o y que corresponde al bin. En este ejemplo, la unidad de decodificación por entropía 70 configurada tal como se describe puede permitir que la unidad de decodificación por entropía 70 cifre la información de manera más eficaz, por ejemplo, usando un menor número de bits, que cuando se usan otros métodos.
Como tal, las técnicas de esta divulgación pueden permitir que la unidad de decodificación por entropía 70 tenga menor complejidad en relación con otros sistemas, y pueden permitir que la unidad de decodificación por entropía 70 cifre la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo de manera más eficaz que cuando se usan otros métodos. De esta manera, puede haber ahorros de bits relativos para un flujo de bits cifrado que incluye la información, y una reducción relativa de la complejidad de la unidad de decodificación por entropía 70 usada para cifrar la información, cuando se usan las técnicas de esta divulgación.
La unidad de compensación de movimiento 72 puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de predicción en fotogramas de referencia en la memoria 82. El módulo de predicción intra 74 puede usar modos de predicción intra recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques adyacentes espacialmente.
El módulo de predicción intra 74 puede usar una indicación de un modo de predicción intra para el bloque codificado para someter a predicción intra el bloque codificado, por ejemplo, usando píxeles de bloques vecinos, decodificados previamente. Para ejemplos en los que el bloque se somete a codificación en modo de predicción inter, la unidad de compensación de movimiento 72 puede recibir información que define un vector de movimiento, para recuperar datos de predicción con movimiento compensado para el bloque codificado. En cualquier caso, la unidad de compensación de movimiento 72 o el módulo de predicción intra 74 puede proporcionar información que define un bloque de predicción al sumador 80.
La unidad de cuantificación inversa 76 somete a cuantificación inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 70. El procedimiento de cuantificación inversa puede incluir un procedimiento convencional, por ejemplo, definido por la norma de decodificación H.264 o realizado por el modelo de prueba de HEVC. El procedimiento de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QPy calculado por el codificador de vídeo 20 para cada bloque para determinar el grado de cuantificación y, asimismo, el grado de cuantificación inversa que debería aplicarse.
El módulo de transformada inversa 78 aplica un procedimiento de transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa, o una transformada similar conceptualmente, a los coeficientes de transformada para producir bloques residuales en el dominio de píxeles. La unidad de compensación de movimiento 72 produce bloques con movimiento compensado, realizando posiblemente una interpolación basándose en filtros de interpolación. Los identificadores para los filtros de interpolación que van a usarse para la estimación de movimiento con precisión inferior a píxel pueden incluirse en los elementos sintácticos. La unidad de compensación
de movimiento 72 puede usar filtros de interpolación tal como se usan por el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular valores interpolados para píxeles enteros secundarios de un bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 según la información sintáctica recibida y usar los filtros de interpolación para producir bloques predictivos.
La unidad de compensación de movimiento 72 usa parte de la información sintáctica para el bloque codificado para determinar tamaños de bloques usados para codificar fotograma(s) de la secuencia de vídeo codificada, información de división que describe cómo se divide cada bloque de un fotograma o segmento de la secuencia de vídeo codificada, modos que indican cómo se codifica cada división, uno o más fotogramas de referencia (y listas de fotogramas de referencia) para cada división o bloque sometido a codificación inter, y otra información para decodificar la secuencia de vídeo codificada. El módulo de predicción intra 74 también puede usar la información sintáctica para el bloque codificado para someter a predicción intra el bloque codificado, por ejemplo, usando píxeles de bloques vecinos, decodificados previamente, tal como se describió anteriormente.
El sumador 80 suma los bloques residuales con los bloques de predicción correspondientes generados por la unidad de compensación de movimiento 72 o el módulo de predicción intra 74 para formar bloques decodificados. Si se desea, un filtro de desbloqueo también puede aplicarse para filtrar los bloques decodificados para eliminar artefactos con capacidad de bloqueo. Los bloques de vídeo decodificados se almacenan entonces en la memoria 82, que proporciona bloques de referencia para compensación de movimiento posterior y también produce vídeo decodificado para su presentación en un dispositivo de visualización (tal como el dispositivo de visualización 32 de la figura 1).
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un cifrador de vídeo configurado para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el cifrador de vídeo está configurado para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las figuras 4A-4C son diagramas conceptuales que ilustran un ejemplo de un bloque de datos de vídeo e información de posición de coeficiente significativo e información de posición del último coeficiente significativo correspondientes. Tal como se muestra en la figura 4A, un bloque de datos de vídeo, por ejemplo, un macrobloque, o una TU de una CU, puede incluir coeficientes de transformada cuantificados. Por ejemplo, tal como se muestra en la figura 4A, el bloque 400 puede incluir coeficientes de transformada cuantificados generados usando técnicas de predicción, transformada y cuantificación descritas previamente. Supóngase, para este ejemplo, que el bloque 400 tiene un tamaño de 2Nx2N, en el que N es igual a dos. Por consiguiente, el bloque 400 tiene un tamaño de 4x4, e incluye dieciséis coeficientes de transformada cuantificados, tal como se muestra también en la figura 4A. Supóngase además que el orden de barrido asociado con el bloque 400 es el orden de barrido en zigzag, tal como se muestra en la figura 5A descrita en mayor detalle a continuación.
En este ejemplo, el último coeficiente significativo dentro del bloque 400 según el orden de barrido en zigzag es un coeficiente de transformada cuantificado igual a “1”, ubicado en la posición 406 dentro del bloque 400. En otros ejemplos, tal como se describió anteriormente, un bloque puede tener un tamaño que es menor o mayor que el tamaño del bloque 400, y puede incluir más o menos coeficientes de transformada cuantificados que el bloque 400. Todavía en otros ejemplos, el orden de barrido asociado con el bloque 400 puede ser un orden de barrido diferente, por ejemplo, un orden de barrido en horizontal, un orden de barrido en vertical, un orden de barrido en diagonal, u otro orden de barrido.
La figura 4B ilustra un ejemplo de datos de bandera de coeficiente significativo, es decir, banderas de coeficiente significativo representadas en forma de mapa, o de bloque, tal como se describió previamente. En el ejemplo de la figura 4B, el bloque 402 puede corresponder al bloque 400 representado en la figura 4A. Dicho de otro modo, las banderas de coeficiente significativo del bloque 402 pueden corresponder a los coeficientes de transformada cuantificados del bloque 400. Tal como se muestra en la figura 4B, las banderas de coeficiente significativo del bloque 402 que son iguales a “1” corresponden a coeficientes significativos del bloque 400. De manera similar, las banderas de coeficiente significativo del bloque 402 que son iguales a “0” corresponden a coeficientes nulos, no significativos del bloque 400.
En este ejemplo, una bandera de coeficiente significativo del bloque 402 correspondiente al último coeficiente significativo dentro del bloque 400 según el orden de barrido en zigzag es una bandera de coeficiente significativo igual a “1”, ubicada en la posición 408 dentro del bloque 402. En otros ejemplos, los valores de banderas de
coeficiente significativo usadas para indicar coeficientes significativos o no significativos pueden variar (por ejemplo, banderas de coeficiente significativo iguales a “0” pueden corresponder a coeficientes significativos, y banderas de coeficiente significativo iguales a “1” pueden corresponder a non-coeficientes significativos).
La figura 4C ilustra un ejemplo de datos de bandera de último coeficiente significativo, es decir, banderas de último coeficiente significativo representadas en forma de mapa, o de bloque, también tal como se describió previamente. En el ejemplo de la figura 4C, el bloque 404 puede corresponder al bloque 400 y el bloque 402 representados en la figura 4a y la figura 4B, respectivamente. Dicho de otro modo, las banderas de último coeficiente significativo del bloque 404 pueden corresponder a los coeficientes de transformada cuantificados del bloque 400, y a las banderas de coeficiente significativo del bloque 402.
Tal como se muestra en la figura 4C, la bandera de último coeficiente significativo del bloque 404 que es igual a “1”, ubicada en la posición 410 dentro del bloque 404, corresponde al último coeficiente significativo del bloque 400, y a la última bandera de las banderas de coeficiente significativo del bloque 402 que son iguales a “1”, según el orden de barrido en zigzag. De manera similar, las banderas de último coeficiente significativo del bloque 404 que son iguales a “0” (es decir, todas las banderas de último coeficiente significativo restantes) corresponden a coeficientes nulos, no significativos del bloque 400, y a todas las banderas de coeficiente significativo del bloque 402 que son iguales a “1” distinta de la última bandera de tales banderas de coeficiente significativo según el orden de barrido en zigzag.
Los valores de las banderas de último coeficiente significativo usadas para indicar el último coeficiente significativo según un orden de barrido pueden variar (por ejemplo, una bandera de último coeficiente significativo igual a “0” puede corresponder al último coeficiente significativo según el orden de barrido, y banderas de último coeficiente significativo iguales a “1” pueden corresponder a todos los coeficientes restantes). En cualquier caso, las banderas de coeficiente significativo del bloque 402, y las banderas de último coeficiente significativo del bloque 404, pueden denominarse colectivamente datos de SM para el bloque 400.
Tal como se describió anteriormente, puede indicarse la información de posición de coeficiente significativo para un bloque de datos de vídeo mediante la serialización de banderas de coeficiente significativo para el bloque a partir de una representación de bloque bidimensional, tal como se representa en bloque 402 mostrado en la figura 4B, en una matriz unidimensional, usando un orden de barrido asociado con el bloque. En el ejemplo de los bloques 400-402 mostrados en las figuras 4A-4B, suponiendo de nuevo el orden de barrido en zigzag, puede indicarse la información de posición de coeficiente significativo para el bloque 400 mediante la serialización de las banderas de coeficiente significativo del bloque 402 en una matriz unidimensional. Es decir, puede indicarse la información de posición de coeficiente significativo para el bloque 400 generando una secuencia de banderas de coeficiente significativo del bloque 402 según el orden de barrido en zigzag.
En este ejemplo, la secuencia generada puede corresponder a un valor “111111”, que representan las primeras 6 banderas de coeficiente significativo del bloque 402 según el orden de barrido en zigzag. Obsérvese que la secuencia generada puede contener banderas de coeficiente significativo correspondientes a una gama de posiciones de bloque dentro del bloque 400, empezando desde una primera posición de bloque en el orden de barrido en zigzag (es decir, la posición DC) y finalizando con un bloque posición correspondiente al último coeficiente significativo del bloque 400 según el orden de barrido en zigzag (es decir, correspondiente a la bandera de último coeficiente significativo igual a “1” del bloque 404).
También tal como se describió anteriormente, según las técnicas de esta divulgación, información de posición del último coeficiente significativo para el bloque puede indicarse usando una posición unidimensional, que indica la posición del último coeficiente significativo dentro del bloque, por ejemplo, mediante la serialización de banderas de último coeficiente significativo para el bloque a partir de una representación de bloque bidimensional, tal como se representa en el bloque 404 mostrado en la figura 4C, en una matriz unidimensional, usando un orden de barrido asociado con el bloque. En el ejemplo de los bloques 400-404 mostrados en las figuras 4A-4C, suponiendo de nuevo el orden de barrido en zigzag, puede indicarse la información de posición del último coeficiente significativo para el bloque 400 mediante la serialización de las banderas de último coeficiente significativo del bloque 404 en una matriz unidimensional. Es decir, puede indicarse la información de posición del último coeficiente significativo para el bloque 400 generando una secuencia de banderas de último coeficiente significativo del bloque 404 según el orden de barrido en zigzag. En este ejemplo, la secuencia generada puede corresponder a un valor “000001”, que representa las primeras 6 banderas de último coeficiente significativo del bloque 404 según el orden de barrido en zigzag.
Una vez más, obsérvese que la secuencia generada puede contener banderas de último coeficiente significativo correspondiente a una gama de posiciones de bloque dentro del bloque 400, empezando desde la primera posición de bloque en el orden de barrido en zigzag, y finalizando con la posición de bloque correspondiente al último coeficiente significativo del bloque 400 según el orden de barrido en zigzag (es decir, correspondiente a la bandera de último coeficiente significativo igual a “1” del bloque 404). Por consiguiente, en este ejemplo, no se incluyen en la secuencia banderas de último coeficiente significativo tras la bandera de último coeficiente significativo igual a “1” según el orden de barrido en zigzag. En términos generales, pueden no ser necesarias banderas de último coeficiente significativo tras una bandera de último coeficiente significativo igual a “1” según un orden de barrido
asociado con un bloque de datos de vídeo para indicar información de posición del último coeficiente significativo para el bloque. Como tal, en algunos ejemplos, se omiten estas banderas de la secuencia generada de banderas de último coeficiente significativo usado para indicar la información.
Obsérvese también que, tal como se describió anteriormente, si el último coeficiente significativo está ubicado dentro de la posición de último bloque según el orden de barrido (por ejemplo, la posición de bloque abajo a la derecha), la secuencia generada puede no incluir una bandera de último coeficiente significativo correspondiente a la posición de último bloque, porque puede deducirse que la posición contiene el último coeficiente significativo para el bloque. Por consiguiente, en este ejemplo, la secuencia generada puede corresponder a un valor “000000000000000”, en el que la bandera de último coeficiente significativo correspondiente a la posición de último bloque no se incluye en la secuencia, y se deduce que es igual a “1”.
También tal como se describió anteriormente, según las técnicas de esta divulgación, puede indicarse la información de posición del último coeficiente significativo para el bloque usando una posición bidimensional, por ejemplo, usando coordenadas horizontal y vertical, que indican la posición del último coeficiente significativo dentro del bloque. Por ejemplo, de nuevo con referencia a las figuras 4A-4C puede indicarse, la información de posición del último coeficiente significativo para el bloque 400 usando una coordenada horizontal igual a “2”, y una coordenada vertical igual a “0”. Las coordenadas pueden corresponder a la posición 406 dentro del bloque 400, en la que la posición de referencia, o de origen es la posición DC, que corresponde a coordenadas horizontal y vertical que son ambas iguales a “0”. Tal como se describió previamente, las coordenadas pueden representarse usando palabras de código unitarias. En este ejemplo, la coordenada horizontal puede corresponder a una palabra de código unitaria “110”, y la coordenada vertical puede corresponder a una palabra de código unitaria “0”.
En cualquier caso, tal como se describió previamente, la información de posición del último coeficiente significativo para el bloque, representada como la secuencia de banderas de último coeficiente significativo, o las coordenadas horizontal y vertical, representadas a su vez como palabras de código unitarias, puede cifrarse antes de cifrar la información de posición de coeficiente significativo para el bloque, representada como la secuencia de banderas de coeficiente significativo, lo que puede facilitar cifrar la información en paralelo, y puede dar como resultado baja complejidad del sistema de cifrado. También tal como se describió previamente, la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo pueden cifrarse cada una usando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una de la información de posición del último coeficiente significativo y la información de posición de coeficiente significativo, lo que puede facilitar un cifrado eficaz, por ejemplo, usando un pequeño número de bits para cifrar la información.
De esta manera, el codificador de vídeo 20 de la figura 2 y/o el decodificador de vídeo 30 de la figura 3 pueden estar configurados para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el cifrador de vídeo está configurado para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las figuras 5A-5C son diagramas conceptuales que ilustran ejemplos de bloques de datos de vídeo sometidos a barrido usando un orden de barrido en zigzag, un orden de barrido en horizontal y un orden de barrido en vertical, respectivamente. Tal como se muestra en las figuras 5A-5C, un bloque de 8x8 de datos de vídeo, por ejemplo, un macrobloque, o una TU de una CU, puede incluir sesenta y cuatro coeficientes de transformada cuantificados en posiciones de bloque correspondientes, indicadas con círculos. Por ejemplo, los bloques 500-504 pueden incluir cada uno sesenta y cuatro coeficientes de transformada cuantificados generados usando técnicas de predicción, transformada y cuantificación descritas previamente, de nuevo, en las que cada posición de bloque correspondiente se indica con un círculo. Supóngase, para este ejemplo, que los bloques 500-504 tienen un tamaño de 2Nx2N, en el que N es igual a cuatro. Por consiguiente, los bloques 500-504 tienen un tamaño de 8x8.
Tal como se muestra en la figura 5A, el orden de barrido asociado con el bloque 500 es el orden de barrido en zigzag. El orden de barrido en zigzag somete a barrido los coeficientes de transformada cuantificados del bloque 500 de manera diagonal tal como se indica mediante las flechas en la figura 5A. De manera similar, tal como se muestra en las figuras 5B y 5C, los órdenes de barrido asociados con los bloques 502 y 504 son el orden de barrido en horizontal y el orden de barrido en vertical, respectivamente. El orden de barrido en horizontal somete a barrido los coeficientes de transformada cuantificados del bloque 502 de manera horizontal línea a línea, o “rasterizada”, mientras que el orden de barrido en vertical somete a barrido los coeficientes de transformada cuantificados del bloque 504 de manera vertical línea a línea, o “rasterizada rotada”, también tal como se indica mediante las flechas
en las figuras 5B y 5C.
En otros ejemplos, tal como se describió anteriormente, un bloque puede tener un tamaño que es menor o mayor que el tamaño de los bloques 500-504, y puede incluir más o menos coeficientes de transformada cuantificados y posiciones de bloque correspondientes. En estos ejemplos, un orden de barrido asociado con el bloque puede someter a barrido los coeficientes de transformada cuantificados del bloque de manera sustancialmente similar a como se muestra en los ejemplos de los bloques 500-504 de 8x8 de las figuras 5A-5C, por ejemplo, un bloque de 4x4, o un bloque de 16x16, puede someterse a barrido siguiendo cualquiera de los órdenes de barrido descritos previamente.
Tal como se describió previamente, las técnicas de esta divulgación también pueden aplicarse con respecto a una amplia variedad de otros órdenes de barrido, incluyendo un orden de barrido en diagonal, órdenes de barrido que son combinaciones de órdenes de barrido en zigzag, horizontal, vertical y/o diagonal, así como órdenes de barrido que son parcialmente en zigzag, parcialmente en horizontal, parcialmente en vertical y/o parcialmente en diagonal. Además, las técnicas de esta divulgación también pueden considerar un orden de barrido que es adaptativo en sí mismo basándose en estadística asociada con bloques cifrados previamente de datos de vídeo (por ejemplo, bloques que tienen el mismo tamaño de bloque o modo de cifrado que el bloque actual que está cifrándose). Por ejemplo, un orden de barrido adaptativo podría ser el orden de barrido asociado con un bloque de datos de vídeo, en algunos casos.
De esta manera, el codificador de vídeo 20 de la figura 2 y/o el decodificador de vídeo 30 de la figura 3 pueden estar configurados para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido (por ejemplo, el orden de barrido en zigzag, horizontal o vertical mostrados en las figuras 5A-5C, respectivamente) asociados con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
Las figuras 6A-6B son diagramas conceptuales que ilustran ejemplos de información de posición del último coeficiente significativo para los bloques de datos de vídeo. De manera similar a como se describió anteriormente con referencia a la figura 4A, tal como se muestra en la figura 6A, el bloque 600 puede incluir coeficientes de transformada cuantificados. En este ejemplo, el último coeficiente significativo para el bloque 600, una vez más según el orden de barrido en zigzag, es un coeficiente de transformada cuantificado igual a “1”, ubicado en la posición 604 dentro de bloque 600. Tal como se describió previamente, según las técnicas de esta divulgación, puede indicarse la información de posición del último coeficiente significativo para el bloque 600 usando una posición bidimensional, que comprende una coordenada horizontal y una vertical. En este ejemplo, puede indicarse la información de posición del último coeficiente significativo para el bloque 600 usando una coordenada horizontal igual a “2”, y una coordenada vertical igual a “0”. En este ejemplo, la coordenada horizontal puede corresponder a una palabra de código unitaria “110”, y la coordenada vertical puede corresponder a una palabra de código unitaria “0”.
La figura 6B ilustra un ejemplo de un bloque de coeficientes de transformada cuantificados generados disponiendo los coeficientes de bloque 600 de la figura 6A en una secuencia continua basándose en el orden de barrido asociado con el bloque 600 (por ejemplo, el orden de barrido en zigzag), y mapeando la secuencia en bloque 602 usando un orden de barrido en horizontal. En este ejemplo, el último coeficiente significativo para el bloque 602, esta vez según el orden de barrido en horizontal, es un coeficiente de transformada cuantificado igual a “1”, ubicado en la posición 606 dentro de bloque 602. Tal como se describió previamente, según las técnicas de esta divulgación, puede indicarse la información de posición del último coeficiente significativo para el bloque 602 usando una posición bidimensional, que comprende una coordenada horizontal y una vertical. En este ejemplo, puede indicarse la información de posición del último coeficiente significativo para el bloque 602 usando una coordenada horizontal igual a “1”, y una coordenada vertical igual a “1”, que puede cada corresponden a una palabra de código unitaria “10”.
Tal como se describió previamente, como resultado del mapeo de los coeficientes de bloque 600 en el bloque 602 de la manera descrita anteriormente, diferentes valores de una coordenada de la información de posición del último coeficiente significativo para el bloque 602 pueden dar como resultado diferentes estimaciones de probabilidad para bins de una palabra de código unitaria para la otra coordenada. Adicionalmente, también tal como se describió previamente, diferentes posiciones de los bins de la palabra de código unitaria para la otra coordenada dentro de la palabra de código pueden dar como resultado diferentes estimaciones de probabilidad para los bins de la palabra de código. Es decir, diferentes números de fila o columna de posiciones dentro de bloque 602 correspondiente a los
bins pueden dar como resultado diferentes estimaciones de probabilidad para los bins. Como tal, cuando se cifra una coordenada de la información de posición del último coeficiente significativo después de que tiene cifrada la otra coordenada, cada bin de una palabra de código unitaria para la primera coordenada puede cifrarse realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto puede incluir una posición del bin dentro de la palabra de código unitaria, tal como se describió previamente, y un valor de la otra coordenada cifrada previamente. En otros ejemplos, la secuencia puede mapearse en el bloque 602 usando un orden de barrido diferente, por ejemplo, un orden de barrido en vertical, lo que puede dar como resultado diferentes coordenadas horizontales y verticales, y diferentes estimaciones de probabilidad para los bins de la palabra de código unitarias para las coordenadas horizontal y vertical.
De esta manera, el codificador de vídeo 20 de la figura 2 y/o el decodificador de vídeo 30 de la figura 3 pueden estar configurados para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden estar configurados para realizar al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de un método para cifrar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes del cifrado de información de posición de coeficiente significativo para el bloque. Las técnicas de la figura 7 pueden realizarse generalmente por cualquier unidad de procesamiento o procesador, si se implementan en hardware, software, firmware, o una combinación de los mismos, y cuando se implementan en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Con propósitos de ejemplo, las técnicas de la figura 7 se describen con respecto al codificador de vídeo 20 (figuras 1 y 2) y/o el decodificador de vídeo 30 (figuras 1 y 3), aunque debe entenderse que otros dispositivos pueden estar configurados para realizar técnicas similares. Además, las etapas ilustradas en la figura 7 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse determinadas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar un contexto para cifrar información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque (700). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una CU. Además, el orden de barrido asociado con el bloque puede ser un orden de barrido en zigzag, un orden de barrido en horizontal, un orden de barrido en vertical, u otro orden de barrido, tal como se describió previamente. También tal como se describió previamente, la información de posición del último coeficiente significativo puede representarse como una secuencia de banderas de último coeficiente significativo, o como coordenadas horizontal y vertical de la posición del último coeficiente significativo dentro del bloque. También tal como se describió previamente, el contexto para cifrar la información de posición del último coeficiente significativo puede ser la propia información.
El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar además la información de posición del último coeficiente significativo (702). Por ejemplo, la información puede codificarse en el caso del codificador de vídeo 20, o decodificarse en el caso del decodificador de vídeo 30, realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado, tal como se describió anteriormente. En ejemplos en los que la información se representa como una secuencia de banderas de último coeficiente significativo, el modelo de contexto puede contener las estimaciones de probabilidad que indican la posibilidad de que una bandera de último coeficiente significativo que está cifrándose corresponda al último coeficiente significativo para el bloque según el orden de barrido (por ejemplo, la bandera de último coeficiente significativo que es igual a “0” o “1”). En ejemplos en los que la información se representa usando coordenadas horizontal y vertical de la posición del último coeficiente significativo dentro del bloque, en el que cada coordenada se representa además como una palabra de código unitaria, el modelo de contexto puede contener las estimaciones de probabilidad que indican la posibilidad de que un bin de una palabra de código unitaria para una coordenada dada que está cifrándose sea igual a un valor particular (por ejemplo, “0” o “1”). En cualquier caso, usando estas estimaciones de probabilidad, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la información de posición del último coeficiente significativo realizando el procedimiento de cifrado por entropía adaptativo según el contexto.
El codificador de vídeo 20 y/o el decodificador de vídeo 20 pueden determinar además un contexto para cifrar la información que identifica las posiciones de los otros coeficientes significativos dentro del bloque (704). Tal como se describió previamente, la información de posición de coeficiente significativo puede representarse como una
secuencia de banderas de coeficiente significativo. También tal como se describió previamente, el contexto puede incluir la información de posición del último coeficiente significativo, y la información de posición de coeficiente significativo.
El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar además la información de posición de coeficiente significativo (706). Una vez más, la información puede codificarse en el caso del codificador de vídeo 20, o decodificarse en el caso del decodificador de vídeo 30, realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado, tal como se describió anteriormente. En este ejemplo, el modelo de contexto puede contener las estimaciones de probabilidad que indican la posibilidad de que una bandera de coeficiente significativo que está cifrándose corresponda a un coeficiente significativo para el bloque (por ejemplo, la bandera de coeficiente significativo que es igual a “0” o “1”). Una vez más, usando estas estimaciones de probabilidad, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden cifrar la información de posición de coeficiente significativo realizando el procedimiento de cifrado por entropía adaptativo según el contexto.
De esta manera, el método de la figura 7 representa un ejemplo de un método de cifrado de información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que el cifrado de la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido incluye al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
La figura 8 es un diagrama de flujo que ilustra un ejemplo de un método para codificar información de posición del último coeficiente significativo para un bloque de datos de vídeo antes de la codificación de información de posición de coeficiente significativo para el bloque. Una vez más, las técnicas de la figura 8 pueden realizarse generalmente por cualquier unidad de procesamiento o procesador, si se implementan en hardware, software, firmware, o una combinación de los mismos, y cuando se implementan en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Con propósitos de ejemplo, las técnicas de la figura 8 se describen con respecto a la unidad de codificación por entropía 56 (figura 2), aunque debe entenderse que otros dispositivos pueden estar configurados para realizar técnicas similares. Además, las etapas ilustradas en la figura 8 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse determinados etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de codificación por entropía 56 puede recibir un bloque de datos de vídeo (800). Por ejemplo, el bloque puede ser un macrobloque, o una TU de una CU. La unidad de codificación por entropía 56 puede determinar además información que identifica la posición del último coeficiente significativo dentro del bloque según un orden de barrido asociado con el bloque (802), es decir, información de posición del último coeficiente significativo para el bloque. Tal como se describió anteriormente, la información puede comprender una secuencia de banderas de último coeficiente significativo, o coordenadas horizontal y vertical de la posición del último coeficiente significativo dentro del bloque. La unidad de codificación por entropía 56 puede determinar además un contexto para codificar la posición del último coeficiente significativo (804). Por ejemplo, el contexto de codificación puede incluir la propia información de posición del último coeficiente significativo. La unidad de codificación por entropía 56 puede codificar además la información de posición del último coeficiente significativo (806). Por ejemplo, la información puede codificarse realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado. Finalmente, la unidad de codificación por entropía 56 puede emitir la información codificada al flujo de bits (808).
La unidad de codificación por entropía 56 puede determinar además información que identifica posiciones de otros coeficientes significativos dentro del bloque (810), es decir, información de posición de coeficiente significativo para el bloque. Tal como se describió anteriormente, la información de posición de coeficiente significativo puede comprender una secuencia de banderas de coeficiente significativo. La unidad de codificación por entropía 56 puede determinar además un contexto para codificar la información de posición de coeficiente significativo (812). Por ejemplo, el contexto de codificación puede incluir la posición del último coeficiente significativo, y la propia información de posición de coeficiente significativo. La unidad de codificación por entropía 56 puede codificar además la información de posición de coeficiente significativo (814). Por ejemplo, la información puede codificarse realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado. Finalmente, la unidad de codificación por entropía 56 puede emitir la información codificada al flujo de bits (816).
De esta manera, el método de la figura 8 representa un ejemplo de un método de cifrado de información que
identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que el cifrado de la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido incluye al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
La figura 9 es un diagrama de flujo que ilustra un ejemplo de un método para decodificar información de posición del último coeficiente significativo codificada para un bloque de datos de vídeo antes de la decodificación de información de posición de coeficiente significativo codificada para el bloque. Una vez más, las técnicas de la figura 9 pueden realizarse generalmente por cualquier unidad de procesamiento o procesador, si se implementan en hardware, software, firmware, o una combinación de los mismos, y cuando se implementan en software o firmware, puede proporcionarse hardware correspondiente para ejecutar instrucciones para el software o firmware. Con propósitos de ejemplo, las técnicas de la figura 9 se describen con respecto a la unidad de decodificación por entropía 70 (figura 3), aunque debe entenderse que otros dispositivos pueden estar configurados para realizar técnicas similares. Además, las etapas ilustradas en la figura 9 pueden realizarse en un orden diferente o en paralelo, y puede añadirse etapas adicionales y omitirse determinadas etapas, sin apartarse de las técnicas de esta divulgación.
Inicialmente, la unidad de decodificación por entropía 70 puede recibir información codificada que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque (900), es decir, información de posición del último coeficiente significativo para el bloque. Una vez más, el bloque puede ser un macrobloque, o una TU de una CU. La unidad de decodificación por entropía 70 puede determinar además un contexto para decodificar la información de posición del último coeficiente significativo codificada (902). Por ejemplo, el contexto de decodificación puede incluir la propia información de posición del último coeficiente significativo. La unidad de decodificación por entropía 70 puede decodificar además la información de posición del último coeficiente significativo (904). Por ejemplo, la información puede decodificarse realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado. Tal como se describió anteriormente, la información decodificada puede comprender una secuencia de banderas de último coeficiente significativo, o coordenadas horizontal y vertical de la posición del último coeficiente significativo dentro del bloque.
Posteriormente, la unidad de decodificación por entropía 70 puede recibir información codificada que identifica posiciones de otros coeficientes significativos dentro de un bloque (906), es decir, información de posición de coeficiente significativo para el bloque. La unidad de decodificación por entropía 70 puede determinar además un contexto para decodificar la información de posición de coeficiente significativo codificada (908). Por ejemplo, el contexto de decodificación puede incluir la información de posición del último coeficiente significativo, y la propia información de posición de coeficiente significativo. La unidad de decodificación por entropía 70 puede decodificar además la información de posición de coeficiente significativo codificada (910). Por ejemplo, la información puede decodificarse realizando un procedimiento de cifrado por entropía adaptativo según el contexto (por ejemplo, un procedimiento CABAC) que incluye aplicar un modelo de contexto basado en el contexto determinado. Tal como se describió anteriormente, la información decodificada puede comprender una secuencia de banderas de coeficiente significativo. Finalmente, la unidad de decodificación por entropía 70 puede decodificar el bloque basándose en la información decodificada de posición del último coeficiente significativo y la información de coeficiente significativo decodificada (912).
De esta manera, el método de la figura 9 representa un ejemplo de un método de cifrado de información que identifica la posición del último coeficiente significativo dentro de un bloque de datos de vídeo según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes significativos dentro del bloque, en el que el cifrado de la información que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido incluye al menos uno de los siguientes: cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente significativo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente significativo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse por, como una o más instrucciones o código, un medio legible por ordenador y ejecutarse por 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 medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un sitio a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder generalmente a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una onda portadora o señal. Los medios de almacenamiento de datos pueden ser medios disponibles a los que pueden acceder 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. A modo de ejemplo, y no de limitación, tales medios legibles por ordenador pueden comprender RAM, ROM, EEPROM, c D-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 estructuras de datos o instrucciones y al que pueda acceder un ordenador. Además, cualquier conexión se denomina con propiedad medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, servidor, u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (DSL), o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL, o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debe 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 su lugar se refieren a medios de almacenamiento no transitorios, tangibles. Disco, tal como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco de Blu-ray, en los que unos discos reproducen habitualmente datos de manera magnética, mientras que otros discos reproducen datos de manera óptica con láseres. También deben incluirse combinaciones de los anteriores dentro del alcance de los medios legibles por ordenador.
Pueden ejecutarse instrucciones por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de uso general, circuitos integrados para aplicaciones específicas (ASIC), matrices de puertas programables in situ (FPGA), u otro conjunto de circuitos lógico integrado o discreto equivalente. Por consiguiente, el término “procesador”, tal como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o 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 decodificación, o incorporados en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un terminal 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 funcionales de los dispositivos configurados para realizar las técnicas dadas a conocer, pero no requieren necesariamente su realización por unidades de hardware diferentes. Más bien, tal como se describió anteriormente, pueden combinarse diversas unidades en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluyendo uno o más procesadores tal como se describió anteriormente, junto con software y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos se encuentran dentro del alcance de las siguientes reivindicaciones.
Pueden describirse realizaciones de la invención con referencia a las siguientes cláusulas numeradas, exponiéndose características preferidas en las cláusulas dependientes:
1. Un método de cifrado de coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el método:
cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que el cifrado de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluye al menos uno de los siguientes:
cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y
cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el
orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
2. El método según la cláusula 1, en el que el cifrado comprende codificación, y en el que la codificación de la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, y generar una bandera de último coeficiente significativo que indica si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido;
disponer las banderas de último coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el orden de barrido; y
codificar la secuencia.
3. El método según la cláusula 1, en el que el cifrado comprende codificación, y en el que la codificación de la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende:
determinar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
determinar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
codificar la coordenada horizontal y la coordenada vertical.
4. El método según la cláusula 3, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, comprendiendo el método además:
disponer coeficientes asociados con un segundo bloque en una secuencia continua basándose en un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido; y
mapear la secuencia en el primer bloque usando el primer orden de barrido para generar el primer bloque.
5. El método según la cláusula 3, en el que codificar cada una de la coordenada horizontal y la coordenada vertical comprende binarizar la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins, y codificar la secuencia.
6. El método según la cláusula 5, en el que la secuencia de uno o más bins comprende una de una palabra de código unitaria, una palabra de código unitaria truncada, una palabra de código Golomb exponencial y una palabra de código concatenada.
7. El método según la cláusula 6, en el que la palabra de código unitaria truncada comprende:
en el caso en el que la coordenada respectiva tiene un valor que es menor que un valor truncado predeterminado, una palabra de código unitaria que comprende un número variable de un primer símbolo, correspondiendo el número variable al valor de la coordenada, seguido por un segundo símbolo, en el que el primer símbolo es diferente del segundo símbolo; y
en el caso en el que la coordenada tiene un valor que es mayor que o igual al valor truncado, un número predeterminado del primer símbolo, correspondiendo el número predeterminado al valor truncado.
8. El método según la cláusula 6, en el que la palabra de código concatenada comprende una concatenación de una primera palabra de código y una segunda palabra de código, en el que la primera palabra de código es diferente de la segunda palabra de código.
9. El método según la cláusula 5, en el que codificar cada bin de la secuencia comprende realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una posición del bin respectivo dentro de la secuencia.
10. El método según la cláusula 5, en el que codificar la coordenada horizontal y la coordenada vertical comprende:
codificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
11. El método según la cláusula 10, en el que codificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprende realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
12. El método según la cláusula 5, que comprende además codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
13. El método según la cláusula 12, en el que al menos un bin de cada uno del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada comprende un bin codificado usando un modo de cifrado normal, y al menos un bin de cada una de las secuencias comprende un bin codificado usando un modo de cifrado de derivación, y en el que codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada comprende:
codificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada codificada usando el modo de cifrado normal antes de la codificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada codificada usando el modo de cifrado normal, seguido por codificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada codificada usando el modo de cifrado de derivación antes de codificar el al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada codificada usando el modo de cifrado de derivación.
14. El método según la cláusula 1, en el que el orden de barrido comprende un primer orden de barrido, en el que el cifrado comprende codificación, y en el que la codificación de la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprende:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, determinar si el coeficiente es un coeficiente no nulo, y generar una bandera de coeficiente significativo que indica si el coeficiente es un coeficiente no nulo;
disponer las banderas de coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el segundo orden de barrido; y
codificar la secuencia.
15. El método según la cláusula 1, en el que el cifrado comprende codificación, y en el que la codificación de la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprende:
disponer uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en uno o más grupos, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes;
para cada uno del uno o más grupos, determinar si el uno o más de los coeficientes son coeficientes no nulos, y generar una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo;
disponer la una o más banderas para el uno o más grupos en una secuencia continua basándose en el orden de barrido; y
codificar la secuencia.
16. El método según la cláusula 1, en el que el cifrado comprende decodificación, y en el que la decodificación de la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende:
decodificar una secuencia continua de banderas de último coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada una de las banderas de último coeficiente significativo indica si el coeficiente respectivo es el último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la secuencia.
17. El método según la cláusula 1, en el que el cifrado comprende decodificación, y en el que la decodificación de la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende:
decodificar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
decodificar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical.
18. El método según la cláusula 17, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, comprendiendo el método además:
disponer los coeficientes asociados con el primer bloque en una secuencia continua basándose en el primer orden de barrido;
mapear la secuencia en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, para generar el segundo bloque; y
para cada coeficiente asociado con el segundo bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del segundo bloque según el segundo orden de barrido, basándose en las determinaciones para el primer bloque.
19. El método según la cláusula 17, en el que cada una de la coordenada horizontal y la coordenada vertical comprende una coordenada binarizada, de tal manera que la coordenada comprende una secuencia de uno o más bins, y en el que la decodificación de cada una de la coordenada horizontal y la coordenada vertical comprende decodificar la secuencia respectiva.
20. El método según la cláusula 19, en el que la secuencia de uno o más bins comprende una de una palabra de código unitaria, una palabra de código unitaria truncada, una palabra de código Golomb exponencial, y una palabra de código concatenada.
21. El método según la cláusula 20, en el que la palabra de código unitaria truncada comprende:
en el caso en el que la coordenada respectiva tiene un valor que es menor que un valor truncado predeterminado, una palabra de código unitaria que comprende un número variable de un primer símbolo, correspondiendo el número variable al valor de la coordenada, seguido por un segundo símbolo, en el que el primer símbolo es diferente del segundo símbolo; y
en el caso en el que la coordenada tiene un valor que es mayor que o igual al valor truncado, un número predeterminado del primer símbolo, correspondiendo el número predeterminado al valor truncado.
22. El método según la cláusula 20, en el que la palabra de código concatenada comprende una concatenación de una primera palabra de código y una segunda palabra de código, en el que la primera palabra de código es diferente de la segunda palabra de código.
23. El método según la cláusula 19, en el que la decodificación de cada bin de la secuencia comprende realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una posición del bin respectivo dentro de la secuencia.
24. El método según la cláusula 19, en el que la decodificación de la coordenada horizontal y la coordenada vertical comprende:
decodificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
25. El método según la cláusula 24, en el que la decodificación del al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprende realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra
coordenada.
26. El método según la cláusula 19, que comprende además la decodificación del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
27. El método según la cláusula 26, en el que al menos un bin de cada uno del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada comprende un bin decodificado usando un modo de cifrado normal, y al menos un bin de cada una de las secuencias comprende un bin decodificado usando un modo de cifrado de derivación, y en el que la decodificación del uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada comprende:
decodificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada decodificada usando el modo de cifrado normal antes de la decodificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada decodificada usando el modo de cifrado normal, seguido por decodificar el al menos un bin del uno o más bins de la secuencia correspondiente a la primera coordenada decodificada usando el modo de cifrado de derivación antes de la decodificación del al menos un bin del uno o más bins de la secuencia correspondiente a la otra coordenada decodificada usando el modo de cifrado de derivación. 28. El método según la cláusula 1, en el que el orden de barrido comprende un primer orden de barrido, en el que el cifrado comprende decodificación, y en el que la decodificación de la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprende:
decodificar una secuencia continua de banderas de coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, en el que cada una de las banderas de coeficiente significativo indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
29. El método según la cláusula 1, en el que el cifrado comprende decodificación, y en el que la decodificación de la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprende: decodificar una secuencia continua de banderas para uno o más coeficientes asociados con el bloque dispuesto en uno o más grupos, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes,
en el que para cada uno del uno o más grupos, la secuencia comprende una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
30. El método según la cláusula 1, en el que el cifrado de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido y el cifrado de la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprende cada uno realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque.
31. Un aparato para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el aparato un cifrador de vídeo configurado para:
cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que para cifrar la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, el cifrador de vídeo está configurado para realizar al menos uno de los siguientes:
cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro
del bloque según el orden de barrido;
cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
32. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de codificación por entropía, y en el que para cifrar la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, la unidad de codificación por entropía está configurada para:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, y generar una bandera de último coeficiente significativo que indica si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido;
disponer las banderas de último coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el orden de barrido; y
codificar la secuencia.
33. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de codificación por entropía, y en el que para cifrar la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, la unidad de codificación por entropía está configurada para:
determinar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
determinar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
codificar la coordenada horizontal y la coordenada vertical.
34. El aparato según la cláusula 33, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, y en el que la unidad de codificación por entropía está configurada además para:
disponer coeficientes asociados con un segundo bloque en una secuencia continua basándose en un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido; y
mapear la secuencia en el primer bloque usando el primer orden de barrido para generar el primer bloque.
35. El aparato según la cláusula 33, en el que para codificar cada una de la coordenada horizontal y la coordenada vertical, la unidad de codificación por entropía está configurada para binarizar la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins, y codificar la secuencia.
36. El aparato según la cláusula 35, en el que para codificar la coordenada horizontal y la coordenada vertical, la unidad de codificación por entropía está configurada para:
codificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
37. El aparato según la cláusula 36, en el que para codificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada, la unidad de codificación por entropía está configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye que la unidad de codificación por entropía aplique un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
38. El aparato según la cláusula 35, en el que la unidad de codificación por entropía está configurada además para codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
39. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de codificación por entropía, en el que el orden de barrido comprende un primer orden de barrido, y en el que para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque, la unidad de codificación por entropía está configurada para:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, determinar si el coeficiente es un coeficiente no nulo, y generar una bandera de coeficiente significativo que indica si el coeficiente es un coeficiente no nulo;
disponer las banderas de coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el segundo orden de barrido; y
codificar la secuencia.
40. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de codificación por entropía, y en el que para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque, la unidad de codificación por entropía está configurada para:
disponer uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en uno o más grupos, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes;
para cada uno del uno o más grupos, determinar si el uno o más de los coeficientes son coeficientes no nulos, y generar una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo;
disponer la una o más banderas para el uno o más grupos en una secuencia continua basándose en el orden de barrido; y
codificar la secuencia.
41. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de decodificación por entropía, y en el que para cifrar la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, la unidad de decodificación por entropía está configurada para:
decodificar una secuencia continua de banderas de último coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada una de las banderas de último coeficiente significativo indica si el coeficiente respectivo es el último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la secuencia.
42. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de decodificación por entropía, y en el que para cifrar la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, la unidad de decodificación por entropía está configurada para:
decodificar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
decodificar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical.
43. El aparato según la cláusula 42, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, y en el que la unidad de decodificación por entropía está configurada además para:
disponer los coeficientes asociados con el primer bloque en una secuencia continua basándose en el primer orden de barrido;
mapear la secuencia en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, para generar el segundo bloque; y
para cada coeficiente asociado con el segundo bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del segundo bloque según el segundo orden de barrido, basándose en las determinaciones para el primer bloque.
44. El aparato según la cláusula 42, en el que cada una de la coordenada horizontal y la coordenada vertical comprende una coordenada binarizada, de tal manera que la coordenada comprende una secuencia de uno o más bins, y en el que para decodificar cada una de la coordenada horizontal y la coordenada vertical, la unidad de decodificación por entropía está configurada para decodificar la secuencia respectiva.
45. El aparato según la cláusula 44, en el que para decodificar la coordenada horizontal y la coordenada vertical, la unidad de decodificación por entropía está configurada para:
decodificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
46. El aparato según la cláusula 45, en el que para decodificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada, la unidad de decodificación por entropía está configurada para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye que la unidad de decodificación por entropía aplique un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
47. El aparato según la cláusula 44, en el que la unidad de decodificación por entropía está configurada además para decodificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
48. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de decodificación por entropía, en el que el orden de barrido comprende un primer orden de barrido, y en el que para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque, la unidad de decodificación por entropía está configurada para:
decodificar una secuencia continua de banderas de coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, en el que cada una de las banderas de coeficiente significativo indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
49. El aparato según la cláusula 31, en el que el cifrador de vídeo comprende una unidad de decodificación por entropía, y en el que para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque, la unidad de decodificación por entropía está configurada para:
decodificar una secuencia continua de banderas para uno o más coeficientes asociados con el bloque dispuesto en uno o más grupos, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes, en el que para cada uno del uno o más grupos, la secuencia comprende una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determinar si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
50. El aparato según la cláusula 31, en el que para cifrar la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido y para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque, el cifrador de vídeo está configurado para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluye que el cifrador de vídeo aplique un
modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque.
51. El aparato según la cláusula 31, en el que el aparato comprende al menos uno de:
un circuito integrado;
un microprocesador; y
un dispositivo de comunicación inalámbrica que incluye el cifrador de vídeo.
52. Un dispositivo para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el dispositivo:
medios para cifrar información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que los medios para cifrar la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluyen al menos uno de los siguientes: medios para cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
medios para cifrar una posición bidimensional del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
medios para cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y codificar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
53. El dispositivo según la cláusula 52, en el que el cifrado comprende codificación, y en el que los medios para codificar la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden:
medios para determinar, para cada uno de uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, y generar una bandera de último coeficiente significativo que indica si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido;
medios para disponer las banderas de último coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el orden de barrido; y
medios para codificar la secuencia.
54. El dispositivo según la cláusula 52, en el que el cifrado comprende codificación, y en el que los medios para codificar la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden:
medios para determinar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
medios para determinar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
medios para codificar la coordenada horizontal y la coordenada vertical.
55. El dispositivo según la cláusula 54, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, comprendiendo el dispositivo además:
medios para disponer coeficientes asociados con un segundo bloque en una secuencia continua basándose en un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido; y
medios para mapear la secuencia en el primer bloque usando el primer orden de barrido para generar el primer bloque.
56. El dispositivo según la cláusula 54, en el que los medios para codificar cada una de la coordenada horizontal y la coordenada vertical comprenden medios para binarizar la coordenada respectiva, de tal manera que la
coordenada comprende una secuencia de uno o más bins, y medios para codificar la secuencia.
57. El dispositivo según la cláusula 56, en el que los medios para codificar la coordenada horizontal y la coordenada vertical comprenden:
medios para codificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
58. El dispositivo según la cláusula 57, en el que los medios para codificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprenden medios para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluyen medios para aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
59. El dispositivo según la cláusula 56, que comprende además medios para codificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
60. El dispositivo según la cláusula 52, en el que el orden de barrido comprende un primer orden de barrido, en el que el cifrado comprende codificación, y en el que los medios para codificar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden:
medios para determinar, para cada uno de uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, si el coeficiente es un coeficiente no nulo, y generar una bandera de coeficiente significativo que indica si el coeficiente es un coeficiente no nulo;
medios para disponer las banderas de coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el segundo orden de barrido; y
medios para codificar la secuencia.
61. El dispositivo según la cláusula 52, en el que el cifrado comprende codificación, y en el que los medios para codificar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden:
medios para disponer uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en uno o más grupos, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes;
medios para determinar, para cada uno del uno o más grupos, si el uno o más de los coeficientes son coeficientes no nulos, y generar una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo;
medios para disponer la una o más banderas para el uno o más grupos en una secuencia continua basándose en el orden de barrido; y
medios para codificar la secuencia.
62. El dispositivo según la cláusula 52, en el que el cifrado comprende decodificación, y en el que los medios para decodificar la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden:
medios para decodificar una secuencia continua de banderas de último coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada una de las banderas de último coeficiente significativo indica si el coeficiente respectivo es el último coeficiente no nulo dentro del bloque según el orden de barrido; y
medios para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la secuencia.
63. El dispositivo según la cláusula 52, en el que el cifrado comprende decodificación, y en el que los medios para
decodificar la posición bidimensional dentro del bloque comprenden:
medios para decodificar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
medios para decodificar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
medios para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical.
64. El dispositivo según la cláusula 63, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, y en el que el dispositivo además comprende:
medios para disponer los coeficientes asociados con el primer bloque en una secuencia continua basándose en el primer orden de barrido;
medios para mapear la secuencia en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, para generar el segundo bloque; y
medios para determinar, para cada coeficiente asociado con el segundo bloque, si el coeficiente es el último coeficiente no nulo dentro del segundo bloque según el segundo orden de barrido, basándose en las determinaciones para el primer bloque.
65. El dispositivo según la cláusula 63, en el que cada una de la coordenada horizontal y la coordenada vertical comprende una coordenada binarizada, de tal manera que la coordenada comprende una secuencia de uno o más bins, y en el que los medios para decodificar cada una de la coordenada horizontal y la coordenada vertical comprenden medios para decodificar la secuencia respectiva.
66. El dispositivo según la cláusula 65, en el que los medios para decodificar la coordenada horizontal y la coordenada vertical comprenden:
medios para decodificar al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
67. El dispositivo según la cláusula 66, en el que los medios para decodificar el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprenden medios para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluyen medios para aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
68. El dispositivo según la cláusula 65, que comprende además medios para decodificar el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
69. El dispositivo según la cláusula 52, en el que el orden de barrido comprende un primer orden de barrido, en el que el cifrado comprende decodificación, y en el que los medios para decodificar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden:
medios para decodificar una secuencia continua de banderas de coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, en el que cada una de las banderas de coeficiente significativo indica si el coeficiente respectivo es un coeficiente no nulo; y
medios para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
70. El dispositivo según la cláusula 52, en el que el cifrado comprende decodificación, y en el que los medios para decodificar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden:
medios para decodificar una secuencia continua de banderas para uno o más coeficientes asociados con el bloque dispuesto en uno o más grupos, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido y avanzando según el orden de barrido, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes, en el que para cada uno del uno o más grupos, la secuencia comprende una o más banderas, en el que la una o más banderas incluyen
una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo; y
medios para determinar, para cada coeficiente asociado con el bloque, si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
71. El dispositivo según la cláusula 52, en el que los medios para cifrar la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido y los medios para cifrar la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden cada uno medios para realizar un procedimiento de cifrado por entropía adaptativo según el contexto que incluyen medios para aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque.
72. Un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, hacen que un procesador cifre coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, en el que las instrucciones hacen que el procesador:
cifre información que identifica la posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes del cifrado de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que las instrucciones que hacen que el procesador cifre la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido incluyen instrucciones que hacen que el procesador realice al menos uno de los siguientes:
cifrar una posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
cifrar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
cifrar una bandera que indica si el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de una gama de posiciones dentro del bloque, y cifrar la posición unidimensional dentro del bloque cuando el último coeficiente no nulo dentro del bloque según el orden de barrido está ubicado dentro de la gama, y si no, cifrar la posición bidimensional dentro del bloque.
73. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden instrucciones que hacen que el procesador codifique la posición unidimensional, haciendo las instrucciones que el procesador:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido, y avanzando según el orden de barrido, determine si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, y genere una bandera de último coeficiente significativo que indica si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido;
disponga las banderas de último coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el orden de barrido; y
codifique la secuencia.
74. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden instrucciones que hacen que el procesador codifique la posición bidimensional, haciendo las instrucciones que el procesador:
determine una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
determine una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
codifique la coordenada horizontal y la coordenada vertical.
75. El medio legible por ordenador según la cláusula 74, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, que comprende además instrucciones que hacen que el procesador:
disponga coeficientes asociados con un segundo bloque en una secuencia continua basándose en un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido; y
mapee la secuencia en el primer bloque usando el primer orden de barrido para generar el primer bloque.
76. El medio legible por ordenador según la cláusula 74, en el que las instrucciones que hacen que el procesador codifique cada una de la coordenada horizontal y la coordenada vertical comprenden instrucciones que hacen que el procesador binarice la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins, e instrucciones que hacen que el procesador codifique la secuencia.
77. El medio legible por ordenador según la cláusula 76, en el que las instrucciones que hacen que el procesador codifique la coordenada horizontal y la coordenada vertical comprenden:
instrucciones que hacen que el procesador codifique al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
78. El medio legible por ordenador según la cláusula 77, en el que las instrucciones que hacen que el procesador codifique el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprenden instrucciones que hacen que el procesador realice un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
79. El medio legible por ordenador según la cláusula 76, que comprende además instrucciones que hacen que el procesador codifique el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
80. El medio legible por ordenador según la cláusula 72, en el que el orden de barrido comprende un primer orden de barrido, y en el que las instrucciones que hacen que el procesador cifre la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden instrucciones que hacen que el procesador codifique la información, haciendo las instrucciones que el procesador:
para cada uno de uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalizando con un primer coeficiente dentro del bloque según el orden de barrido, y avanzando según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, determine si el coeficiente es un coeficiente no nulo, y genere una bandera de coeficiente significativo que indica si el coeficiente es un coeficiente no nulo;
disponga las banderas de coeficiente significativo para el uno o más coeficientes en una secuencia continua basándose en el segundo orden de barrido; y
codifique la secuencia.
81. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden instrucciones que hacen que el procesador codifique la información, haciendo las instrucciones que el procesador: disponga uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido, y avanzando según el orden de barrido, en uno o más grupos, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes;
para cada uno del uno o más grupos, determine si el uno o más de los coeficientes son coeficientes no nulos, y genere una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo;
disponga la una o más banderas para el uno o más grupos en una secuencia continua basándose en el orden de barrido; y
codifique la secuencia.
82. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la posición unidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden instrucciones que hacen que el procesador decodifique la posición
unidimensional, haciendo las instrucciones que el procesador:
decodifique una secuencia continua de banderas de último coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido, y avanzando según el orden de barrido, en el que cada una de las banderas de último coeficiente significativo indica si el coeficiente respectivo es el último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determine si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la secuencia.
83. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprenden instrucciones que hacen que el procesador decodifique la posición bidimensional, haciendo las instrucciones que el procesador:
decodifique una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;
decodifique una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; y
para cada coeficiente asociado con el bloque, determine si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical.
84. El medio legible por ordenador según la cláusula 83, en el que el bloque comprende un primer bloque y el orden de barrido comprende un primer orden de barrido, que comprende además instrucciones que hacen que el procesador:
disponga los coeficientes asociados con el primer bloque en una secuencia continua basándose en el primer orden de barrido;
mapee la secuencia en un segundo bloque usando un segundo orden de barrido, en el que el segundo bloque es diferente del primer bloque, y el segundo orden de barrido es diferente del primer orden de barrido, para generar el segundo bloque; y
para cada coeficiente asociado con el segundo bloque, determine si el coeficiente es el último coeficiente no nulo dentro del segundo bloque según el segundo orden de barrido, basándose en las determinaciones para el primer bloque.
85. El medio legible por ordenador según la cláusula 83, en el que cada una de la coordenada horizontal y la coordenada vertical comprende una coordenada binarizada, de tal manera que la coordenada comprende una secuencia de uno o más bins, y en el que las instrucciones que hacen que el procesador decodifique cada una de la coordenada horizontal y la coordenada vertical comprenden instrucciones que hacen que el procesador decodifique la secuencia respectiva.
86. El medio legible por ordenador según la cláusula 85, en el que las instrucciones que hacen que el procesador decodifique la coordenada horizontal y la coordenada vertical comprenden:
instrucciones que hacen que el procesador decodifique al menos un bin de la secuencia correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia correspondiente a la otra coordenada.
87. El medio legible por ordenador según la cláusula 86, en el que las instrucciones que hacen que el procesador decodifique el al menos un bin de la secuencia correspondiente a la primera de las coordenadas basándose al menos en parte en el valor del al menos un bin de la secuencia correspondiente a la otra coordenada comprenden instrucciones que hacen que el procesador realice un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye el valor del al menos un bin de la secuencia correspondiente a la otra coordenada.
88. El medio legible por ordenador según la cláusula 85, que comprende además instrucciones que hacen que el procesador decodifique el uno o más bins de la secuencia correspondiente a la primera coordenada y el uno o más bins de la secuencia correspondiente a la otra coordenada de manera intercalada.
89. El medio legible por ordenador según la cláusula 72, en el que el orden de barrido comprende un primer orden de barrido, y en el que las instrucciones que hacen que el procesador cifre la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden instrucciones que hacen que el procesador decodifique la información, haciendo las instrucciones que el procesador:
decodifique una secuencia continua de banderas de coeficiente significativo para uno o más coeficientes asociados con el bloque, empezando con el último coeficiente no nulo dentro del bloque según el orden de barrido y finalice con un primer coeficiente dentro del bloque según el orden de barrido, y avance según un segundo orden de barrido que está invertido en relación con el primer orden de barrido, en el que cada una de las banderas de coeficiente significativo indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determine si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
90. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden instrucciones que hacen que el procesador para decodifique la información, haciendo las instrucciones que el procesador:
decodifique una secuencia continua de banderas para uno o más coeficientes asociados con el bloque dispuesto en uno o más grupos, empezando con un primer coeficiente dentro del bloque según el orden de barrido y finalizando con el último coeficiente no nulo dentro del bloque según el orden de barrido, y avanzando según el orden de barrido, en el que cada uno del uno o más grupos comprende uno o más de los coeficientes, en el que para cada uno del uno o más grupos, la secuencia comprende una o más banderas, en el que la una o más banderas incluyen una bandera de grupo que indica si el uno o más de los coeficientes son todos coeficientes de valor nulo, y, cuando al menos uno del uno o más de los coeficientes es un coeficiente no nulo, la una o más banderas incluyen además una bandera de coeficiente significativo para cada uno del uno o más de los coeficientes que indica si el coeficiente respectivo es un coeficiente no nulo; y
para cada coeficiente asociado con el bloque, determine si el coeficiente es un coeficiente no nulo, basándose en la secuencia.
91. El medio legible por ordenador según la cláusula 72, en el que las instrucciones que hacen que el procesador cifre la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido y las instrucciones que hacen que el procesador cifre la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque comprenden cada una instrucciones que hacen que el procesador realice un procedimiento de cifrado por entropía adaptativo según el contexto que incluye aplicar un modelo de contexto basándose en al menos un contexto, en el que el al menos un contexto incluye una de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y la información que identifica las posiciones de los otros coeficientes no nulos dentro del bloque.
Claims (5)
- REIVINDICACIONESi . Método de codificación de coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el método:codificar información que identifica una posición de un último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes de la codificación de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que la codificación de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende codificar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido, y en el que la codificación de la posición bidimensional del último coeficiente no nulo dentro del bloque según el orden de barrido comprende:determinar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;determinar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; ycodificar la coordenada horizontal y la coordenada vertical, en el que la codificación de cada una de la coordenada horizontal y la coordenada vertical comprende binarizar la coordenada respectiva, de tal manera que la coordenada comprende una secuencia de uno o más bins y codificar la secuencia realizando un procedimiento de cifrado aritmético binario adaptativo según el contexto.
- 2. Método de decodificación de coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el método:decodificar información que identifica una posición del último coeficiente no nulo dentro del bloque según un orden de barrido asociado con el bloque antes de la decodificación de información que identifica posiciones de otros coeficientes no nulos dentro del bloque, en el que la decodificación de la información que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido comprende decodificar una posición bidimensional dentro del bloque que identifica la posición del último coeficiente no nulo dentro del bloque según el orden de barrido:decodificar una coordenada horizontal de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido;decodificar una coordenada vertical de la posición del último coeficiente no nulo dentro del bloque según el orden de barrido; ypara cada coeficiente asociado con el bloque, determinar si el coeficiente es el último coeficiente no nulo dentro del bloque según el orden de barrido, basándose en la coordenada horizontal y la coordenada vertical, en el que cada una de la coordenada horizontal y la coordenada vertical comprende una coordenada binarizada, de tal manera que la coordenada respectiva comprende una secuencia de uno o más bins, y en el que la decodificación de cada una de la coordenada horizontal y la coordenada vertical comprende decodificar la secuencia correspondiente realizando un procedimiento de cifrado aritmético binario adaptativo según el contexto.
- 3. Método según la reivindicación 2, en el que la decodificación de la coordenada horizontal y la coordenada vertical comprende decodificar al menos un bin de la secuencia de uno o más bins correspondiente a una de las coordenadas basándose al menos en parte en un valor de al menos un bin de la secuencia de uno o más bins correspondiente a otra de las coordenadas.
- 4. Aparato para cifrar coeficientes asociados con un bloque de datos de vídeo durante un procedimiento de cifrado de vídeo, comprendiendo el aparato un cifrador de vídeo configurado para realizar el método según una cualquiera de las reivindicaciones anteriores.
- 5. Medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, hacen que un procesador cifre coeficientes asociados con un bloque de datos de vídeo, durante un procedimiento de cifrado de vídeo, en el que las instrucciones hacen que el procesador realice el método según una cualquiera de las reivindicaciones 1 a 3.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41974010P | 2010-12-03 | 2010-12-03 | |
US13/302,996 US8976861B2 (en) | 2010-12-03 | 2011-11-22 | Separately coding the position of a last significant coefficient of a video block in video coding |
PCT/US2011/062700 WO2012075181A1 (en) | 2010-12-03 | 2011-11-30 | Separately coding the position of a last significant coefficient of a video block in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2705898T3 true ES2705898T3 (es) | 2019-03-27 |
Family
ID=46162209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES11801912T Active ES2705898T3 (es) | 2010-12-03 | 2011-11-30 | Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo |
Country Status (17)
Country | Link |
---|---|
US (1) | US8976861B2 (es) |
EP (3) | EP3709653B8 (es) |
JP (1) | JP5868995B2 (es) |
KR (1) | KR101552027B1 (es) |
CN (2) | CN108337518A (es) |
AU (1) | AU2011336589B2 (es) |
BR (1) | BR112013013651B1 (es) |
CA (1) | CA2817360C (es) |
ES (1) | ES2705898T3 (es) |
IL (1) | IL226208A (es) |
MX (1) | MX2013006103A (es) |
MY (1) | MY170249A (es) |
RU (1) | RU2563681C2 (es) |
SG (1) | SG190202A1 (es) |
UA (2) | UA106162C2 (es) |
WO (1) | WO2012075181A1 (es) |
ZA (1) | ZA201304932B (es) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2947878B1 (en) * | 2010-04-23 | 2017-02-15 | M&K Holdings Inc. | Apparatus for encoding an image |
PL3104616T3 (pl) | 2010-07-09 | 2017-10-31 | Samsung Electronics Co Ltd | Urządzenie do entropijnego dekodowania współczynników przekształcenia |
US10091529B2 (en) * | 2010-07-09 | 2018-10-02 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding/decoding a transform coefficient |
US9497472B2 (en) | 2010-11-16 | 2016-11-15 | Qualcomm Incorporated | Parallel context calculation in video coding |
US9042440B2 (en) | 2010-12-03 | 2015-05-26 | Qualcomm Incorporated | Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding |
US20120163456A1 (en) | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Using a most probable scanning order to efficiently code scanning order information for a video block in video coding |
US10142637B2 (en) * | 2011-03-08 | 2018-11-27 | Texas Instruments Incorporated | Method and apparatus for parallelizing context selection in video processing |
US10397577B2 (en) | 2011-03-08 | 2019-08-27 | Velos Media, Llc | Inverse scan order for significance map coding of transform coefficients in video coding |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
US9491491B2 (en) * | 2011-06-03 | 2016-11-08 | Qualcomm Incorporated | Run-mode based coefficient coding for video coding |
US9379736B2 (en) | 2011-06-03 | 2016-06-28 | Qualcomm Incorporated | Context-adaptive coding video data |
US9167253B2 (en) | 2011-06-28 | 2015-10-20 | Qualcomm Incorporated | Derivation of the position in scan order of the last significant transform coefficient in video coding |
ES2711671T3 (es) | 2011-06-28 | 2019-05-06 | Samsung Electronics Co Ltd | Procedimiento de decodificación de vídeo usando decodificación |
CN106101727B (zh) | 2011-08-04 | 2019-10-08 | 寰发股份有限公司 | 基于上下文自适应二进制算术编码的方法及装置 |
US9800870B2 (en) * | 2011-09-16 | 2017-10-24 | Qualcomm Incorporated | Line buffer reduction for short distance intra-prediction |
IN2014CN03598A (es) * | 2011-11-04 | 2015-07-31 | Sharp Kk | |
EP2779648A4 (en) * | 2011-11-07 | 2016-06-01 | Panasonic Ip Corp America | PICTURE CODING METHOD, PICTURE DECODING METHOD, PICTURE CODING DEVICE, PICTURE DECODING DEVICE, AND PICTURE CODING / DECODING DEVICE |
MX355319B (es) | 2011-11-08 | 2018-04-16 | Kt Corp | Método y aparato para exploración de coeficientes con base en el modo de división de la unidad de predicción. |
US9503717B2 (en) | 2012-01-09 | 2016-11-22 | Texas Instruments Incorporated | Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency |
US9008184B2 (en) * | 2012-01-20 | 2015-04-14 | Blackberry Limited | Multiple sign bit hiding within a transform unit |
TWI613908B (zh) * | 2012-04-13 | 2018-02-01 | Jvc Kenwood Corp | 影像解碼裝置、影像解碼方法、影像解碼程式 |
EP3637621B1 (en) * | 2012-04-15 | 2023-06-07 | Samsung Electronics Co., Ltd. | Video decoding method using parameter update for de-binarization of entropy coded transformation coefficient, encoding apparatus using same for binarization |
US11025922B2 (en) * | 2012-06-13 | 2021-06-01 | Texas Instruments Incorporated | Inverse transformation using pruning for video coding |
SI2869563T1 (en) * | 2012-07-02 | 2018-08-31 | Samsung Electronics Co., Ltd. | The process of entropic video decoding |
WO2014024491A1 (ja) | 2012-08-09 | 2014-02-13 | パナソニック株式会社 | 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置および画像符号化復号装置 |
CN105122797A (zh) * | 2013-01-04 | 2015-12-02 | 三星电子株式会社 | 在无损编码下对视频进行编码的方法和设备以及在无损编码下对视频进行解码的方法和设备 |
WO2014110651A1 (en) * | 2013-01-16 | 2014-07-24 | Blackberry Limited | Transform coefficient coding for context-adaptive binary entropy coding of video |
US9304703B1 (en) * | 2015-04-15 | 2016-04-05 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US9445132B2 (en) * | 2013-09-09 | 2016-09-13 | Qualcomm Incorporated | Two level last significant coefficient (LSC) position coding |
US9215464B2 (en) | 2013-09-19 | 2015-12-15 | Blackberry Limited | Coding position data for the last non-zero transform coefficient in a coefficient group |
US9813737B2 (en) * | 2013-09-19 | 2017-11-07 | Blackberry Limited | Transposing a block of transform coefficients, based upon an intra-prediction mode |
US10362333B2 (en) | 2014-01-02 | 2019-07-23 | Qualcomm Incorporated | Color index coding for palette-based video coding |
US10404988B2 (en) * | 2014-03-16 | 2019-09-03 | Vid Scale, Inc. | Method and apparatus for the signaling of lossless video coding |
CN104079943B (zh) * | 2014-06-26 | 2017-11-28 | 华为技术有限公司 | 一种帧内深度图像块编码、解码的方法及装置 |
US9781424B2 (en) * | 2015-01-19 | 2017-10-03 | Google Inc. | Efficient context handling in arithmetic coding |
US10531102B2 (en) | 2015-09-10 | 2020-01-07 | Samsung Electronics Co., Ltd. | Encoding device, decoding device, and encoding and decoding method thereof |
US10269360B2 (en) * | 2016-02-03 | 2019-04-23 | Dolby International Ab | Efficient format conversion in audio coding |
EP3264763A1 (en) * | 2016-06-29 | 2018-01-03 | Thomson Licensing | Method and apparatus for improved significance flag coding using simple local predictor |
EP3270594A1 (en) * | 2016-07-15 | 2018-01-17 | Thomson Licensing | Method and apparatus for advanced cabac context adaptation for last coefficient coding |
EP4236321A3 (en) | 2016-08-31 | 2023-09-13 | KT Corporation | Method and device for processing video signal |
US10264264B2 (en) * | 2016-09-24 | 2019-04-16 | Apple Inc. | Multi-bin decoding systems and methods |
CA3222632A1 (en) | 2017-04-13 | 2018-10-18 | Lg Electronics Inc. | Method and device for entropy encoding and decoding video signal |
WO2019027200A1 (ko) * | 2017-07-31 | 2019-02-07 | 에스케이텔레콤 주식회사 | 비-제로 계수들의 위치를 표현하는 방법 및 장치 |
US10523968B2 (en) | 2017-09-18 | 2019-12-31 | Google Llc | Coding of last significant coefficient flags |
AU2018204786A1 (en) * | 2018-06-29 | 2020-01-16 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a transformed block of video samples |
CN112840655B (zh) * | 2018-10-08 | 2023-12-01 | 寰发股份有限公司 | 图像与视频编解码中最后有效系数的编解码方法及装置 |
KR20230154085A (ko) * | 2018-12-17 | 2023-11-07 | 엘지전자 주식회사 | 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치 |
RU2767513C1 (ru) | 2018-12-28 | 2022-03-17 | Телефонактиеболагет Лм Эрикссон (Пабл) | Способ и оборудование для проведения выбора преобразования в кодере и декодере |
CN117278752A (zh) | 2019-03-12 | 2023-12-22 | Lg 电子株式会社 | 基于变换的图像编译方法及其装置 |
US11336893B2 (en) * | 2020-01-07 | 2022-05-17 | Qualcomm Incorporated | Context derivation and entropy coding initialization parameters for coordinates of last position coding in video coding |
Family Cites Families (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1679903A (en) | 1928-01-12 | 1928-08-07 | Chase Appliance Corp | Anticreeping device for railway rails |
US5295203A (en) | 1992-03-26 | 1994-03-15 | General Instrument Corporation | Method and apparatus for vector coding of video transform coefficients |
JPH06205388A (ja) | 1992-12-28 | 1994-07-22 | Canon Inc | 画像符号化装置 |
EP0607484B1 (en) | 1993-01-20 | 1998-09-09 | Samsung Electronics Co. Ltd. | Method and device for encoding and decoding image data |
EP1802136A3 (en) | 1995-03-15 | 2008-11-12 | Kabushiki Kaisha Toshiba | Moving picture coding and/or decoding systems |
US5838825A (en) | 1996-01-17 | 1998-11-17 | Matsushita Electric Industrial Co., Ltd. | Apparatus for decompressing image data which has been compressed using a linear transform |
US5818877A (en) | 1996-03-14 | 1998-10-06 | The Regents Of The University Of California | Method for reducing storage requirements for grouped data values |
US6301304B1 (en) | 1998-06-17 | 2001-10-09 | Lsi Logic Corporation | Architecture and method for inverse quantization of discrete cosine transform coefficients in MPEG decoders |
US6553147B2 (en) | 1998-10-05 | 2003-04-22 | Sarnoff Corporation | Apparatus and method for data partitioning to improving error resilience |
EP1041826A1 (en) | 1999-04-01 | 2000-10-04 | Lucent Technologies Inc. | Apparatus for coding data and apparatus for decoding block transform coefficients |
US6680974B1 (en) | 1999-12-02 | 2004-01-20 | Lucent Technologies Inc. | Methods and apparatus for context selection of block transform coefficients |
EP1391121B1 (en) | 2001-03-23 | 2012-08-15 | Nokia Corporation | Variable length coding |
US6870963B2 (en) * | 2001-06-15 | 2005-03-22 | Qualcomm, Inc. | Configurable pattern optimizer |
US6856701B2 (en) * | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
US7190840B2 (en) | 2002-01-07 | 2007-03-13 | Hewlett-Packard Development Company, L.P. | Transform coefficient compression using multiple scans |
JP3866580B2 (ja) | 2002-01-30 | 2007-01-10 | 日本電信電話株式会社 | 画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム及びそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7099387B2 (en) | 2002-03-22 | 2006-08-29 | Realnetorks, Inc. | Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses |
JP4090862B2 (ja) | 2002-04-26 | 2008-05-28 | 松下電器産業株式会社 | 可変長符号化方法および可変長復号化方法 |
PT1467491E (pt) * | 2002-05-02 | 2007-03-30 | Fraunhofer Ges Forschung | Codificação aritmética de coeficientes de transformação |
US7376280B2 (en) | 2002-07-14 | 2008-05-20 | Apple Inc | Video encoding and decoding |
US6795584B2 (en) * | 2002-10-03 | 2004-09-21 | Nokia Corporation | Context-based adaptive variable length coding for adaptive block transforms |
US7483575B2 (en) | 2002-10-25 | 2009-01-27 | Sony Corporation | Picture encoding apparatus and method, program and recording medium |
US6646578B1 (en) | 2002-11-22 | 2003-11-11 | Ub Video Inc. | Context adaptive variable length decoding system and method |
US20050036549A1 (en) | 2003-08-12 | 2005-02-17 | Yong He | Method and apparatus for selection of scanning mode in dual pass encoding |
US7379608B2 (en) | 2003-12-04 | 2008-05-27 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. | Arithmetic coding for transforming video and picture data units |
US7522774B2 (en) | 2004-03-10 | 2009-04-21 | Sindhara Supermedia, Inc. | Methods and apparatuses for compressing digital image data |
US20060008009A1 (en) * | 2004-07-09 | 2006-01-12 | Nokia Corporation | Method and system for entropy coding for scalable video codec |
KR100612015B1 (ko) * | 2004-07-22 | 2006-08-11 | 삼성전자주식회사 | 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치 |
KR100648258B1 (ko) * | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
US20060078049A1 (en) | 2004-10-13 | 2006-04-13 | Nokia Corporation | Method and system for entropy coding/decoding of a video bit stream for fine granularity scalability |
NO322043B1 (no) | 2004-12-30 | 2006-08-07 | Tandberg Telecom As | Fremgangsmate for forenklet entropikoding |
US8311119B2 (en) | 2004-12-31 | 2012-11-13 | Microsoft Corporation | Adaptive coefficient scan order |
JP4937741B2 (ja) * | 2005-01-07 | 2012-05-23 | 日本電信電話株式会社 | 映像符号化方法及び装置、映像復号方法及び装置、それらのプログラムおよびそれらプログラムを記録した記録媒体 |
US7609904B2 (en) | 2005-01-12 | 2009-10-27 | Nec Laboratories America, Inc. | Transform coding system and method |
JP2006211304A (ja) | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | 映像符号化装置、映像復号化装置、映像符号化方法、映像復号化方法、映像符号化プログラムおよび映像復号化プログラム |
US20060227865A1 (en) | 2005-03-29 | 2006-10-12 | Bhaskar Sherigar | Unified architecture for inverse scanning for plurality of scanning scheme |
EP1768415A1 (en) | 2005-09-27 | 2007-03-28 | Matsushita Electric Industrial Co., Ltd. | Adaptive scan order of DCT coefficients and its signaling |
CN1719903A (zh) * | 2005-06-24 | 2006-01-11 | 清华大学 | 用于图象算术编码中的一种二值化和概率模型选择方法 |
US8599925B2 (en) * | 2005-08-12 | 2013-12-03 | Microsoft Corporation | Efficient coding and decoding of transform blocks |
US20070071331A1 (en) | 2005-09-24 | 2007-03-29 | Xiteng Liu | Image compression by economical quaternary reaching method |
WO2007043583A1 (ja) | 2005-10-11 | 2007-04-19 | Matsushita Electric Industrial Co., Ltd. | 画像符号化装置、画像復号化装置及びこれらの方法 |
EP1958453B1 (en) | 2005-11-30 | 2017-08-09 | Koninklijke Philips N.V. | Encoding method and apparatus applying coefficient reordering |
CN100488254C (zh) * | 2005-11-30 | 2009-05-13 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的熵编码方法及解码方法 |
US7884742B2 (en) | 2006-06-08 | 2011-02-08 | Nvidia Corporation | System and method for efficient compression of digital data |
US8275045B2 (en) | 2006-07-12 | 2012-09-25 | Qualcomm Incorporated | Video compression using adaptive variable length codes |
US8942292B2 (en) | 2006-10-13 | 2015-01-27 | Qualcomm Incorporated | Efficient significant coefficients coding in scalable video codecs |
US8098735B2 (en) | 2006-12-21 | 2012-01-17 | Lsi Corporation | Efficient 8×8 CABAC residual block decode |
US7369066B1 (en) | 2006-12-21 | 2008-05-06 | Lsi Logic Corporation | Efficient 8×8 CABAC residual block transcode system |
EP2109993B1 (de) | 2006-12-27 | 2012-08-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes |
BRPI0720806B1 (pt) * | 2007-01-18 | 2023-03-28 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Corrente de dados de vídeo de qualidade escalonável |
KR101356733B1 (ko) * | 2007-03-07 | 2014-02-05 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치 |
WO2008111511A1 (ja) | 2007-03-14 | 2008-09-18 | Nippon Telegraph And Telephone Corporation | 符号量推定方法、装置、そのプログラムおよび記録媒体 |
US7813567B2 (en) | 2007-04-26 | 2010-10-12 | Texas Instruments Incorporated | Method of CABAC significance MAP decoding suitable for use on VLIW data processors |
US7885473B2 (en) | 2007-04-26 | 2011-02-08 | Texas Instruments Incorporated | Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors |
US8428133B2 (en) * | 2007-06-15 | 2013-04-23 | Qualcomm Incorporated | Adaptive coding of video block prediction mode |
US8571104B2 (en) | 2007-06-15 | 2013-10-29 | Qualcomm, Incorporated | Adaptive coefficient scanning in video coding |
US7535387B1 (en) | 2007-09-10 | 2009-05-19 | Xilinx, Inc. | Methods and systems for implementing context adaptive binary arithmetic coding |
US8204327B2 (en) | 2007-10-01 | 2012-06-19 | Cisco Technology, Inc. | Context adaptive hybrid variable length coding |
US8483282B2 (en) * | 2007-10-12 | 2013-07-09 | Qualcomm, Incorporated | Entropy coding of interleaved sub-blocks of a video block |
KR101394153B1 (ko) | 2007-12-11 | 2014-05-16 | 삼성전자주식회사 | 양자화 방법 및 장치, 역양자화 방법 및 장치 |
US8891615B2 (en) * | 2008-01-08 | 2014-11-18 | Qualcomm Incorporated | Quantization based on rate-distortion modeling for CABAC coders |
US8977064B2 (en) | 2008-02-13 | 2015-03-10 | Qualcomm Incorporated | Rotational transcoding for JPEG or other coding standards |
KR101375668B1 (ko) * | 2008-03-17 | 2014-03-18 | 삼성전자주식회사 | 변환 계수의 부호화, 복호화 방법 및 장치 |
US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
EP2154894A1 (en) * | 2008-08-15 | 2010-02-17 | Thomson Licensing | Video coding with coding of the locations of significant coefficients in a block of coefficients |
US7932843B2 (en) | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
EP2182732A1 (en) | 2008-10-28 | 2010-05-05 | Panasonic Corporation | Switching between scans in image coding |
CA2745314A1 (en) | 2008-12-03 | 2010-06-10 | Nokia Corporation | Switching between dct coefficient coding modes |
US8004431B2 (en) | 2008-12-09 | 2011-08-23 | Qualcomm Incorporated | Fast parsing of variable-to-fixed-length codes |
WO2010070897A1 (ja) | 2008-12-16 | 2010-06-24 | パナソニック株式会社 | 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、プログラム、及び集積回路 |
KR20110106402A (ko) | 2009-01-27 | 2011-09-28 | 톰슨 라이센싱 | 비디오 인코딩 및 디코딩에서 변환 선택을 위한 방법 및 장치 |
JP5004986B2 (ja) | 2009-03-19 | 2012-08-22 | キヤノン株式会社 | スキャン変換装置及び画像符号化装置、並びにそれらの制御方法 |
JP5302769B2 (ja) | 2009-05-14 | 2013-10-02 | キヤノン株式会社 | スキャン変換装置及び画像符号化装置及びそれらの制御方法 |
WO2010143853A2 (ko) | 2009-06-07 | 2010-12-16 | 엘지전자 주식회사 | 비디오 신호의 디코딩 방법 및 장치 |
KR20100136890A (ko) | 2009-06-19 | 2010-12-29 | 삼성전자주식회사 | 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법 |
WO2011002914A1 (en) | 2009-06-30 | 2011-01-06 | Massachusetts Institute Of Technology | System and method for providing high throughput entropy coding using syntax element partitioning |
US8218645B2 (en) | 2009-07-17 | 2012-07-10 | Nec Corporation | Method and apparatus for encoding and decoding by wavelet transform |
US8619866B2 (en) | 2009-10-02 | 2013-12-31 | Texas Instruments Incorporated | Reducing memory bandwidth for processing digital image data |
US8477845B2 (en) | 2009-10-16 | 2013-07-02 | Futurewei Technologies, Inc. | Predictive adaptive scan ordering for video coding |
KR20110045949A (ko) | 2009-10-28 | 2011-05-04 | 삼성전자주식회사 | 회전 변환을 이용한 영상 부호화, 복호화 방법 및 장치 |
KR101457894B1 (ko) * | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
TW201119407A (en) | 2009-11-19 | 2011-06-01 | Thomson Licensing | Method for coding and method for reconstruction of a block of an image |
WO2011087908A1 (en) | 2010-01-15 | 2011-07-21 | Thomson Licensing | Video coding using compressive sensing |
US8588536B2 (en) | 2010-02-22 | 2013-11-19 | Texas Instruments Incorporated | Guaranteed-rate tiled image data compression |
US20110243220A1 (en) | 2010-04-05 | 2011-10-06 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order |
DK3435674T3 (da) | 2010-04-13 | 2023-08-21 | Ge Video Compression Llc | Kodning af signifikanskort og transformationskoefficientblokke |
CN103119849B (zh) * | 2010-04-13 | 2017-06-16 | 弗劳恩霍夫应用研究促进协会 | 概率区间分割编码器和译码器 |
PL3104616T3 (pl) * | 2010-07-09 | 2017-10-31 | Samsung Electronics Co Ltd | Urządzenie do entropijnego dekodowania współczynników przekształcenia |
US9215470B2 (en) | 2010-07-09 | 2015-12-15 | Qualcomm Incorporated | Signaling selected directional transform for video coding |
US9154801B2 (en) | 2010-09-30 | 2015-10-06 | Texas Instruments Incorporated | Method and apparatus for diagonal scan and simplified coding of transform coefficients |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
US8861593B2 (en) | 2011-03-15 | 2014-10-14 | Sony Corporation | Context adaptation within video coding modules |
US8446301B2 (en) | 2011-04-15 | 2013-05-21 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
US9167253B2 (en) | 2011-06-28 | 2015-10-20 | Qualcomm Incorporated | Derivation of the position in scan order of the last significant transform coefficient in video coding |
US9392301B2 (en) * | 2011-07-01 | 2016-07-12 | Qualcomm Incorporated | Context adaptive entropy coding for non-square blocks in video coding |
-
2011
- 2011-11-22 US US13/302,996 patent/US8976861B2/en active Active
- 2011-11-30 UA UAA201308350A patent/UA106162C2/uk unknown
- 2011-11-30 BR BR112013013651-0A patent/BR112013013651B1/pt active IP Right Grant
- 2011-11-30 SG SG2013035316A patent/SG190202A1/en unknown
- 2011-11-30 CA CA2817360A patent/CA2817360C/en active Active
- 2011-11-30 WO PCT/US2011/062700 patent/WO2012075181A1/en active Application Filing
- 2011-11-30 ES ES11801912T patent/ES2705898T3/es active Active
- 2011-11-30 MX MX2013006103A patent/MX2013006103A/es active IP Right Grant
- 2011-11-30 EP EP20169522.8A patent/EP3709653B8/en active Active
- 2011-11-30 RU RU2013130238/08A patent/RU2563681C2/ru active
- 2011-11-30 CN CN201810310674.XA patent/CN108337518A/zh active Pending
- 2011-11-30 JP JP2013542146A patent/JP5868995B2/ja active Active
- 2011-11-30 MY MYPI2013001660A patent/MY170249A/en unknown
- 2011-11-30 EP EP11801912.4A patent/EP2647203B1/en active Active
- 2011-11-30 CN CN201180057705.1A patent/CN103238322B/zh active Active
- 2011-11-30 UA UAA201308357A patent/UA109684C2/ru unknown
- 2011-11-30 AU AU2011336589A patent/AU2011336589B2/en active Active
- 2011-11-30 KR KR1020137017303A patent/KR101552027B1/ko active IP Right Grant
- 2011-11-30 EP EP18196663.1A patent/EP3484161B1/en active Active
-
2013
- 2013-05-07 IL IL226208A patent/IL226208A/en active IP Right Grant
- 2013-07-02 ZA ZA2013/04932A patent/ZA201304932B/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP3484161B1 (en) | 2020-05-20 |
EP3709653B8 (en) | 2021-11-10 |
SG190202A1 (en) | 2013-06-28 |
EP3709653A1 (en) | 2020-09-16 |
MY170249A (en) | 2019-07-12 |
AU2011336589A1 (en) | 2013-06-06 |
JP5868995B2 (ja) | 2016-02-24 |
AU2011336589B2 (en) | 2015-10-01 |
UA106162C2 (uk) | 2014-07-25 |
KR20130095309A (ko) | 2013-08-27 |
ZA201304932B (en) | 2014-03-26 |
MX2013006103A (es) | 2013-07-15 |
CN108337518A (zh) | 2018-07-27 |
US20120140813A1 (en) | 2012-06-07 |
BR112013013651A2 (pt) | 2016-09-06 |
IL226208A0 (en) | 2013-07-31 |
CA2817360A1 (en) | 2012-06-07 |
UA109684C2 (uk) | 2015-09-25 |
EP2647203B1 (en) | 2018-09-26 |
JP2014504077A (ja) | 2014-02-13 |
KR101552027B1 (ko) | 2015-09-09 |
EP3709653B1 (en) | 2021-09-22 |
WO2012075181A1 (en) | 2012-06-07 |
US8976861B2 (en) | 2015-03-10 |
RU2563681C2 (ru) | 2015-09-20 |
EP2647203A1 (en) | 2013-10-09 |
RU2013130238A (ru) | 2015-01-10 |
CA2817360C (en) | 2016-09-27 |
IL226208A (en) | 2017-05-29 |
CN103238322A (zh) | 2013-08-07 |
BR112013013651B1 (pt) | 2021-12-28 |
CN103238322B (zh) | 2018-05-04 |
EP3484161A1 (en) | 2019-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2705898T3 (es) | Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo | |
ES2673939T3 (es) | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo en base a un orden de exploración para el bloque en codificación de vídeo | |
CN109274974B (zh) | 图像预测的方法及装置 | |
ES2546678T3 (es) | Codificación de vídeo usando resolución adaptativa de vectores de movimiento | |
US20130121417A1 (en) | Constrained reference picture sets in wave front parallel processing of video data | |
US20120163448A1 (en) | Coding the position of a last significant coefficient of a video block in video coding | |
KR20140120909A (ko) | 비디오 코딩에서 변환 계수 데이터를 코딩하기 위한 콘텍스트들의 결정 | |
WO2012088331A1 (en) | Efficiently coding scanning order information for a video block in video coding |