ES2700296T3 - Indicación de selección de modo de intrapredicción para codificación de vídeo - Google Patents

Indicación de selección de modo de intrapredicción para codificación de vídeo Download PDF

Info

Publication number
ES2700296T3
ES2700296T3 ES11770284T ES11770284T ES2700296T3 ES 2700296 T3 ES2700296 T3 ES 2700296T3 ES 11770284 T ES11770284 T ES 11770284T ES 11770284 T ES11770284 T ES 11770284T ES 2700296 T3 ES2700296 T3 ES 2700296T3
Authority
ES
Spain
Prior art keywords
intra
prediction mode
mode
index
prediction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES11770284T
Other languages
English (en)
Inventor
Marta Karczewicz
Xianglin Wang
Wei-Jung Chien
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2700296T3 publication Critical patent/ES2700296T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/18Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un procedimiento de descodificación de datos de vídeo, el procedimiento que comprende: determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción; caracterizado por que: seleccionar el modo de intrapredicción como el primer o el segundo modo de intrapredicción más probable donde los datos de vídeo incluyen una palabra de código de longitud fija que indica si y cuál del primer o el segundo modo de intrapredicción más probable se selecciona para el bloque actual, y, cuándo el primer o el segundo modo de intrapredicción más probable no se selecciona para el bloque actual: seleccionar el modo de intrapredicción como el modo de intrapredicción que tiene un índice de modo de intrapredicción correspondiente a un índice de modo de intrapredicción modificado donde los datos de vídeo incluyen una palabra de código de longitud variable correspondiente a un índice de modo de intrapredicción modificado de la tabla seleccionada de las palabras de código, donde los índices de modo de intrapredicción se determinan a partir de los índices de modo de intrapredicción modificados de manera que, cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y mayor o igual al índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en dos que el índice de modo de intrapredicción modificado; cuando el índice de modo de intrapredicción modificado es menor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción que tiene un índice de modo de intrapredicción igual al índice de modo de intrapredicción modificado; y, cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en uno que el índice de modo de intrapredicción modificado; y descodificar (604) el bloque actual usando el modo de intrapredicción seleccionado.

Description

DESCRIPCIÓN
indicación de selección de modo de intrapredicción para codificación de vídeo
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación de vídeo y, de forma más particular, a la señalización de características de codificación para datos de vídeo codificados.
ANTECEDENTES
[0002] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, dispositivos de teleconferencia de vídeo y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263 o ITU-T H.264/MPEG-4, parte 10, codificación de vídeo avanzada (AVC) y ampliaciones de dichas normas, para transmitir y recibir información de vídeo digital de manera más eficiente.
[0003] Las técnicas de compresión de vídeo realizan una predicción espacial y/o una predicción temporal para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, una trama o un fragmento de vídeo puede dividirse en bloques de vídeo. Cada bloque de vídeo puede dividirse adicionalmente. Los bloques de vídeo de una trama o fragmento intracodificado (I) se codifican mediante predicción espacial con respecto a bloques de vídeo contiguos. Los bloques de vídeo de una trama o fragmento intercodificado (P o B) pueden usar predicción espacial con respecto a macrobloques o unidades de codificación contiguos en la misma trama o fragmento o predicción temporal con respecto a otras tramas de referencia.
Un documento pertinente de técnica anterior es: «Definition of New Coding Elements from Telenor [Definición de nuevos elementos de codificación de Telenor]», GISLE BJONTEGAARD ET AL., 10.a REUNIÓN VCEG; 16-05-2000 -19-05-2000; Osaka, JP; (GRUPO DE EXPERTOS EN CODIFICACIÓN DE VÍDEO DE ITU-T SG.16), n.° q15j28, 9 de mayo de 2000 (09-05-2000), XP030003057, ISSN: 0000-0466.
SUMARIO
[0004] La presente invención se expone en las reivindicaciones.
En general, esta divulgación describe técnicas para señalizar características de codificación para datos de vídeo codificados. Las técnicas de esta divulgación pueden mejorar la eficacia para la señalización de un modo de intrapredicción usado para codificar un bloque de datos de vídeo. Las técnicas de esta divulgación incluyen señalizar en un flujo de bits codificado modos de intrapredicción para bloques de datos de vídeo usando palabras de código de longitud variable que tienen longitudes inversamente proporcionales a las probabilidades de las palabras de código, por ejemplo, basándose en contextos para los bloques. De esta manera, puede obtenerse un ahorro de bits relativo para un flujo de bits codificado cuando se usan las técnicas de esta divulgación.
[0005] En un ejemplo, un procedimiento de descodificación de datos de vídeo incluye determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar uno de los índices de modo de intrapredicción modificados que corresponde a la palabra de código recibida usando la tabla de palabras de código; seleccionar un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados; y descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0006] En otro ejemplo, un aparato para descodificar datos de vídeo incluye un descodificador de vídeo configurado para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar uno de los índices de modo de intrapredicción modificados que corresponde a una palabra de código recibida usando la tabla de palabras de código; seleccionar un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados; y descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0007] En otro ejemplo, un procedimiento de codificación de datos de vídeo incluye determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; codificar el bloque actual usando uno de los modos de intrapredicción distinto al primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción usando la tabla de palabras de código; y facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al uno de los índices de modo de intrapredicción modificados.
[0008] En otro ejemplo, un aparato para codificar datos de vídeo incluye un codificador de vídeo configurado para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; codificar el bloque actual usando uno de los modos de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción usando la tabla de palabras de código; y facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al uno de los índices de modo de intrapredicción modificados.
[0009] En otro ejemplo, un aparato para codificar datos de vídeo incluye medios para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; medios para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; medios para codificar el bloque actual usando uno de los modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; medios para determinar uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción usando la tabla de palabras de código; y medios para facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde a uno de los índices de modo de intrapredicción modificados.
[0010] En otro ejemplo, un aparato para descodificar vídeo incluye medios para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual; medios para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; medios para determinar uno de los índices de modo de intrapredicción modificados que corresponde a una palabra de código recibida usando la tabla de palabras de código; medios para seleccionar un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados; y medios para descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0011] En otro ejemplo, un medio de almacenamiento legible por ordenador tiene almacenadas instrucciones que cuando se ejecutan hacen que uno o más procesadores determinen un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual; seleccionen una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinen uno de los índices de modo de intrapredicción modificados que corresponde a una palabra de código recibida usando la tabla de palabras de código; seleccionen un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados; y descodifiquen el bloque actual usando el modo de intrapredicción seleccionado.
[0012] En otro ejemplo más, un medio de almacenamiento legible por ordenador tiene almacenadas instrucciones que cuando se ejecutan hacen que uno o más procesadores determinen un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionen una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; codifiquen el bloque actual usando uno de los modos de intrapredicción distinto al primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinen uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción usando la tabla de palabras de código; y faciliten una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al uno de los índices de modo de intrapredicción modificados.
[0013] En otro ejemplo, un procedimiento de descodificación de datos de vídeo incluye determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; determinar un índice de palabra de código modificado que corresponde a una palabra de código recibida usando la tabla de palabras de código; seleccionar un modo de intrapredicción diferente del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde a un índice de palabra de código seleccionado basándose en el índice de palabra de código modificado, el primer modo de intrapredicción más probable, y el segundo modo de intrapredicción más probable; y descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0014] En otro ejemplo, un aparato para descodificar datos de vídeo incluye un descodificador de vídeo configurado para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; determinar un índice de palabra de código modificado que corresponde a una palabra de código recibida usando la tabla de palabras de código; seleccionar un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde a un índice de palabra de código seleccionado basándose en el índice de palabras de código modificado, el primer modo de intrapredicción más probable, y el segundo modo de intrapredicción más probable; y descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0015] En otro ejemplo, un aparato para descodificar vídeo incluye medios para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto para el bloque actual; medios para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; medios para determinar un índice de palabra de código modificado que corresponde a una palabra de código recibida usando la tabla de palabras de código; medios para seleccionar un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde a un índice de palabra de código seleccionado basándose en el índice de palabra de código modificado, el primer modo de intrapredicción más probable, y el segundo modo de intrapredicción más probable; y medios para descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0016] En otro ejemplo, un medio de almacenamiento legible por ordenador tiene almacenadas instrucciones que cuando se ejecutan hacen que uno o más procesadores determinen un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándoseen un contexto para el bloque actual; seleccionen una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; determinen un índice de palabra de código modificado que corresponde a una palabra de código recibida usando la tabla de palabras de código; seleccionen un modo de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde a un índice de palabra de código seleccionado basándose en el índice de palabra de código modificado, el primer modo de intrapredicción más probable, y el segundo modo de intrapredicción más probable; y descodifiquen el bloque actual usando el modo de intrapredicción seleccionado.
[0017] En otro ejemplo, un procedimiento de codificación de datos de vídeo incluye determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; codificar el bloque actual usando uno de los modos de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar un índice de palabra de código modificado basándose en el índice de palabra de código del uno de los modos de intrapredicción usados para codificar el bloque actual, un índice de palabra de código correlacionado con el primer modo más probable, y un índice de palabra de código correlacionado con el segundo modo más probable; y facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al índice de palabra de código modificado.
[0018] En otro ejemplo, un aparato para codificar datos de vídeo incluye un codificador de vídeo configurado para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; codificar el bloque actual usando uno de los modos de intrapredicción distinto al primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinar un índice de palabra de código modificado basándose en el índice de palabra de código del uno de los modos de intrapredicción usados para codificar el bloque actual, un índice de palabra de código correlacionado con el primer modo más probable, y un índice de palabra de código correlacionado con el segundo modo más probable; y facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al índice de palabra de código modificado.
[0019] En otro ejemplo, un aparato para codificar vídeo incluye medios para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; medios para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; medios para codificar el bloque actual usando uno de los modos de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; medios para determinar un índice de palabra de código modificado basándose en el índice de palabra de código del uno de los modos de intrapredicción usado para codificar el bloque actual, un índice de palabra de código correlacionado con el primer modo más probable, y un índice de palabra de código correlacionado con el segundo modo más probable; y medios para facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al índice de palabra de código modificado.
[0020] En otro ejemplo, un medio de almacenamiento legible por ordenador tiene almacenadas instrucciones que cuando se ejecutan hacen que uno o más procesadores determinen un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual; seleccionen una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de palabra de código, en el que los índices de palabra de código se correlacionan con modos de intrapredicción; codifiquen el bloque actual usando uno de los modos de intrapredicción distinto del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable; determinen un índice de palabra de código modificado basándose en el índice de palabra de código del uno de los modos de intrapredicción usado para codificar el bloque actual, un índice de palabra de código correlacionado con el primer modo más probable, y un índice de palabra de código correlacionado con el segundo modo más probable; y faciliten una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al índice de palabra de código modificado.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0021]
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar técnicas para codificar datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar técnicas para codificar información indicativa de un modo de intrapredicción.
La figura 3 muestra un ejemplo de modos de intrapredicción e índices de modo correspondientes.
La figura 4 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo, que descodifica una secuencia de vídeo codificada.
La figura 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificación de intrapredicción de un bloque de datos de vídeo.
Las figuras 6A y 6B son diagramas de flujo que ilustran procedimientos de ejemplo para seleccionar una palabra de código indicativa de un modo de intrapredicción para un bloque codificado.
La figura 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificación de intrapredicción de un bloque de datos de vídeo.
Las figuras 8A y 8B son diagramas de flujo que ilustran procedimientos de ejemplo para determinar un modo de intrapredicción para un bloque usando una palabra de código recibida indicativa del modo de intrapredicción para un bloque codificado.
La figura 9 es un diagrama conceptual que ilustra un conjunto de ejemplo de datos de configuración, que indica las relaciones entre una tabla de índices de modo de intrapredicción, una tabla de índices de modo de intrapredicción modificados, y datos de contexto.
DESCRIPCIÓN DETALLADA
[0022] En general, esta divulgación describe técnicas para señalizar características de codificación para datos de vídeo codificados. Las técnicas de esta divulgación pueden mejorar la eficiencia para la señalización de un modo de intrapredicción usado para intracodificar un bloque de datos de vídeo. Un codificador de vídeo, por ejemplo, puede incluir datos de configuración que indican índices para modos de intrapredicción basándoseen contextos de codificación para bloques codificados usando los diversos modos de intrapredicción. Los contextos de codificación pueden incluir, por ejemplo, modos de codificación para bloques contiguos previamente codificados y/o tamaños de bloque.
[0023] Los datos de configuración pueden usarse para definir un modo de intrapredicción más probable para cada contexto o pueden definir dos o más modos de intrapredicción más probables para cada contexto. Estos modos de intrapredicción más probables pueden denominarse a veces en esta divulgación simplemente modos más probables. Los datos de configuración también pueden definir una tabla de códigos de longitud variable (VLC) que se va a usar para codificar datos sintácticos que describen el modo de intrapredicción para modos distintos de los modos más probables en un contexto dado. En particular, la tabla de VLC puede incluir una correlación de índices con palabras de código VLC. Como se describirá con más detalle a continuación, la tabla de VLC puede correlacionar índices de modo de intrapredicción modificados con palabras de código, o puede correlacionar índices de modo de intrapredicción con índices de palabra de código que luego se ajustan como índices de palabra de código modificados. Las palabras de código para índices de modos de intrapredicción pueden ser relativamente más cortas para modos de intrapredicción relativamente más probables.
[0024] En consecuencia, el codificador de vídeo puede estar configurado para determinar un contexto de codificación para que un bloque sea codificado en modo de intrapredicción. El contexto de codificación puede estar relacionado con un modo de intrapredicción más probable, así como con las probabilidades para otros modos de intrapredicción. Cuando se selecciona el modo de intrapredicción más probable para usar para codificar un bloque actual, el codificador de vídeo puede seleccionar una palabra de código de un bit (por ejemplo, «1») para indicar que el bloque está codificado en el modo más probable para el contexto en que se encuentra el bloque. En casos en los que se usa más de un modo de intrapredicción más probable, un primer bit puede indicar si se selecciona uno de los modos de intrapredicción más probables para su uso en la codificación de un bloque actual, y si se usa uno de los modos de intrapredicción más probables, entonces un segundo bit (o serie de bits) puede indicar cuál de los modos de intrapredicción más probables se selecciona. A veces a lo largo de esta divulgación, la combinación de este primer bit y un segundo bit puede denominarse palabra de código, en la que el primer bit de la palabra de código señaliza que un modo de intrapredicción seleccionado es uno de los modos de intrapredicción más probables, y el segundo bit (o serie de bits) indica cuál de los modos de intrapredicción más probables es.
[0025] A cada uno de los otros modos de intrapredicción (es decir, los modos de intrapredicción distintos del modo o los modos de intrapredicción más probables) también se puede le puede asignar un valor de índice modificado, basándose en el contexto de codificación. Por otro lado, el contexto de codificación puede corresponder además a una tabla que tiene un conjunto de palabras de código (por ejemplo, palabras de código de longitud variable) indexadas mediante valores de índice relacionados con los índices para los modos de intrapredicción. En particular, como se ha analizado anteriormente, no es necesario asignar, al valor de índice para los modos de intrapredicción más probables, otra palabra de código de longitud variable, distinta de la palabra de código de bit único (o posiblemente más larga) que representa que se ha seleccionado el modo de intrapredicción más probable. Para correlacionar una palabra de código de longitud variable a cada modo de intrapredicción restante, el índice de cada modo de intrapredicción restante puede modificarse primero para excluir los asignados originalmente para los modos más probables. En consecuencia, los índices de modo de intrapredicción modificados pueden ser iguales a los índices de modo de intrapredicción que son menores que el índice de modo para el modo más probable. Por otro lado, los índices de modo de intrapredicción modificados pueden ser menores en uno que los índices de modo de intrapredicción para índices de modo de intrapredicción que son mayores que el índice para el modo más probable. De esta manera, puede haber una palabra de código de longitud variable menos que modos de intrapredicción, y las palabras de código pueden correlacionarse con los modos de intrapredicción de modo que las palabras de código relativamente más cortas se correlacionan con modos de intrapredicción relativamente más probables, basándoseen el contexto de codificación. Cuando se usa más de un modo de intrapredicción más probable, puede haber dos o más palabras de código de longitud variable menos en la tabla de palabras de código que modos de intrapredicción, y las palabras de código pueden igualmente correlacionarse con los modos de intrapredicción de tal forma que palabras de código relativamente más cortas se correlacionan con modos de intrapredicción relativamente más probables, basándose en el contexto de codificación.
[0026] Un descodificador de vídeo pueden estar configurado de manera similar, por ejemplo, para realizar técnicas similares cuando se determina un modo de intrapredicción para un bloque codificado. De acuerdo con las técnicas de esta divulgación, un descodificador de vídeo puede recibir datos para un bloque codificado, así como una palabra de código indicativa de un modo de intrapredicción para usar a fin de descodificar el bloque codificado. El descodificador de vídeo puede determinar un contexto para el bloque de una manera similar a un codificador de vídeo. Basándose en el contexto, el descodificador de vídeo puede determinar un modo o unos modos de intrapredicción más probables para el bloque. Cuando se usa un modo de intrapredicción más probable, se puede descodificar un único bit para determinar si se selecciona el modo más probable. Si el único bit indica que se selecciona el modo más probable, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción más probable. De lo contrario, el descodificador de vídeo puede referirse al índice de modo de intrapredicción modificado correlacionado con la palabra de código recibida. Si el índice de modo de intrapredicción modificado es mayor o igual al índice de modo para el modo de intrapredicción más probable, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es mayor en uno que el índice de modo de intrapredicción modificado. Si el índice de modo de intrapredicción modificado es menor que el índice de modo para el modo de intrapredicción más probable, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es igual al índice de modo de intrapredicción modificado.
[0027] De manera similar, cuando se usan dos modos de codificación de intrapredicción más probables, si el primer bit indica que el modo de intrapredicción seleccionado es uno de los modos de intrapredicción más probables, entonces el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción más probable identificado por un segundo bit. De lo contrario, el descodificador de vídeo puede referirse al índice de modo de intrapredicción modificado correlacionado con la palabra de código recibida. Si el índice de modo de intrapredicción modificado es menor que el índice de modo para el primer modo de intrapredicción más probable, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es igual al índice de modo de intrapredicción modificado. De lo contrario, si el índice de modo de intrapredicción modificado más uno es menor que el índice de modo para el segundo modo de intrapredicción más probable, entonces el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es mayor en uno que el índice de modo de intrapredicción modificado. De lo contrario, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es mayor en dos que el índice de modo de intrapredicción modificado, y así sucesivamente.
[0028] Las frases «primero más probable» y «segundo más probable» se usan en general en esta divulgación para referirse a dos modos de intrapredicción más probables independientes, y no pretenden dar a entender una probabilidad relativa de los dos modos de intrapredicción. Sin embargo, como se explicará más adelante mediante ejemplos, en general se puede suponer, a efectos de explicación en esta divulgación, que el primer modo de intrapredicción más probable tiene un valor de índice de modo correspondiente menor que el segundo modo de intrapredicción más probable. Por lo tanto, si se dice que un valor de índice de modo de intrapredicción es menor que el índice de modo para el primer modo más probable, se puede suponer que el valor de índice de modo de intrapredicción modificado es también menor que el índice de modo para un segundo modo de intrapredicción más probable, un tercer modo de intrapredicción más probable, y así sucesivamente.
[0029] Las técnicas de esta divulgación se pueden extender a implementaciones que utilizan más de dos modos de intrapredicción más probables. Por ejemplo, suponiendo que hay N modos de intrapredicción más probables, un primer bit o serie de bits puede indicar si el modo de intrapredicción seleccionado es uno de los N modos de intrapredicción más probables. Si el modo de intrapredicción seleccionado es uno de los N modos de intrapredicción más probables, entonces una segunda serie de bits puede indicar cuál de los N modos de intrapredicción más probables es el modo de intrapredicción seleccionado. En algunos casos, los modos de intrapredicción más probables pueden señalizarse en uno o más grupos, donde un primer bit o serie de bits señaliza si el modo de intrapredicción más probable seleccionado es de un primer grupo. Si el modo de intrapredicción seleccionado no es del primer grupo, los bits subsiguientes pueden señalizar si es de un segundo grupo, y así sucesivamente.
[0030] Si, por ejemplo, se usan cinco modos más probables, entonces un primer bit o serie de bits puede señalizar si el modo de intrapredicción seleccionado es de un primer grupo de dos modos de intrapredicción más probables. Si el modo seleccionado es uno de los dos, entonces un segundo bit podría identificar cuál de los dos es el modo seleccionado. Si el modo seleccionado no es ninguno de los dos, entonces un segundo grupo de bits podría identificar el modo seleccionado. Si, por ejemplo, el segundo grupo de bits incluye dos bits, entonces una primera combinación de bits (por ejemplo, 00) podría indicar que el modo seleccionado es un tercer modo más probable, una segunda combinación de bits (por ejemplo, 01) podría indicar que el modo seleccionado es un cuarto el modo más probable, y una tercera combinación de bits (por ejemplo, 10) podría indicar que el modo seleccionado es un quinto modo más probable. Si el modo seleccionado es uno de los cinco modos de intrapredicción más probables, entonces el descodificador puede descodificar el bloque usando el modo más probable. Una cuarta combinación de bits (por ejemplo, 11) puede indicar que el modo seleccionado no es uno de los cinco modos más probables, en cuyo caso la cuarta combinación de bits puede estar seguida por bits subsiguientes que identifican el modo seleccionado de acuerdo con las técnicas descritas en esta divulgación.
[0031] En los casos donde un modo seleccionado no es un modo más probable, el descodificador de vídeo puede referirse al índice de modo de intrapredicción modificado correlacionado con la palabra de código recibida. A modo de ejemplo, se puede suponer que un primer modo de intrapredicción más probable tiene un valor de índice de modo correspondiente menor que un segundo modo de intrapredicción más probable, y el segundo tiene un índice menor que el tercero, y así sucesivamente. De acuerdo con las técnicas de esta divulgación, si el índice de modo de intrapredicción modificado es menor que el índice de modo para el primer modo de intrapredicción más probable, el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es igual al índice de modo de intrapredicción modificado. De lo contrario, si el índice de modo de intrapredicción modificado más uno es menor que el índice de modo para el segundo modo de intrapredicción más probable, entonces el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es mayor en uno que el índice de modo de intrapredicción modificado. De lo contrario, si el índice de modo de intrapredicción modificado más dos es menor que el índice de modo para el tercer modo de intrapredicción más probable, entonces el descodificador de vídeo puede descodificar el bloque usando el modo de intrapredicción correlacionado con un índice de modo que es mayor en dos que el índice de modo de intrapredicción modificado, y así sucesivamente. Como se explicará con mayor detalle a continuación, el índice de modo de intrapredicción modificado puede no incluir las entradas para los modos más probables, razón por la cual el índice de modo de intrapredicción se puede correlacionar con el índice de modo de intrapredicción modificado más uno, el índice de modo de intrapredicción modificado más dos, etc., dependiendo del índice de modo de los modos más probables.
[0032] La figura 1 es un diagrama de bloques que ilustra un sistema 10 de codificación y descodificación de vídeo de ejemplo que puede utilizar técnicas para codificar datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo 12 de origen que transmite vídeo codificado a un dispositivo 14 de destino a través de un canal 16 de comunicación. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender uno cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender dispositivos de comunicación inalámbrica, tales como teléfonos inalámbricos, los denominados radioteléfonos celulares o vía satélite, o cualquier dispositivo inalámbrico que pueda transmitir información de vídeo a través de un canal 16 de comunicación, en cuyo caso el canal 16 de comunicación es inalámbrico.
[0033] Las técnicas de esta divulgación, sin embargo, que conciernen a la codificación de datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo, no están necesariamente limitadas a aplicaciones o configuraciones inalámbricas. Por ejemplo, estas técnicas pueden aplicarse a radiodifusiones televisivas inalámbricas, a transmisiones televisivas por cable, a transmisiones televisivas vía satélite, a transmisiones de vídeo por Internet, a vídeo digital codificado que está codificado en un medio de almacenamiento y a otros contextos. Por consiguiente, el canal 16 de comunicación puede comprender cualquier combinación de medios inalámbricos o alámbricos adecuados para la transmisión de datos de vídeo codificados. Además, el canal 16 de comunicación pretende representar solo una de las muchas maneras en las que un dispositivo de codificación de vídeo puede transmitir datos a un dispositivo de descodificación de vídeo. Por ejemplo, en otras configuraciones del sistema 10, el dispositivo 12 de origen podría generar vídeo codificado para su descodificación por el dispositivo 14 de destino y almacenar el vídeo codificado en un medio de almacenamiento o servidor de archivos, de modo que el dispositivo 14 de destino pueda acceder al vídeo codificado cuando lo desee.
[0034] En el ejemplo de la figura 1, el dispositivo 12 de origen incluye una fuente 18 de vídeo, un codificador 20 de vídeo, un modulador/desmodulador (módem) 22 y un transmisor 24. El dispositivo 14 de destino incluye un receptor 26, un módem 28, un descodificador 30 de vídeo y un dispositivo 32 de visualización. De acuerdo con esta divulgación, el codificador 20 de vídeo del dispositivo 12 de origen puede estar configurado para aplicar las técnicas para codificar datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo 12 de origen puede recibir datos de vídeo desde una fuente 18 de vídeo externa, tal como una cámara externa. Del mismo modo, el dispositivo 14 de destino puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0035] El sistema ilustrado 10 de la figura 1 es meramente un ejemplo. Las técnicas para codificar datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo pueden realizarse mediante cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se realizan mediante un dispositivo de codificación de vídeo, las técnicas también pueden realizarse mediante un codificador/descodificador de vídeo, denominado habitualmente «códec». Además, las técnicas de esta divulgación también pueden realizarse mediante un preprocesador de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo 12 de origen genera datos de vídeo codificados para su transmisión al dispositivo 14 de destino. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificación y de descodificación de vídeo. Por lo tanto, el sistema 10 puede admitir la transmisión de vídeo unidireccional o bidireccional entre los dispositivos 12, 14 de vídeo, por ejemplo para transmisión de vídeo en continuo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
[0036] La fuente 18 de vídeo del dispositivo 12 de origen puede incluir un dispositivo de captación de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo captado previamente y/o una transmisión de vídeo de un proveedor de contenido de vídeo. Como alternativa adicional, la fuente 18 de vídeo puede generar datos basados en gráficos por ordenador como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente 18 de vídeo es una videocámara, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el codificador 20 de vídeo puede codificar el vídeo captado, precaptado o generado por ordenador. La información de vídeo codificada puede modularse después mediante el módem 22, de acuerdo con una norma de comunicación, y transmitirse al dispositivo 14 de destino 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ñales. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y una o más antenas.
[0037] El receptor 26 del dispositivo 14 de destino recibe información a través del canal 16, y el módem 28 desmodula la información. De nuevo, el proceso de codificación de vídeo puede implementar una o más de las técnicas descritas en el presente documento para codificar datos sintácticos representativos de modos de intrapredicción para bloques de datos de vídeo. La información transmitida a través del canal 16 puede incluir información sintáctica definida por el codificador 20 de vídeo, que también es usada por el descodificador 30 de vídeo, que incluye elementos sintácticos que describen características y/o el procesamiento de macrobloques y otras unidades codificadas, por ejemplo GOP. El dispositivo 32 de visualización muestra los datos de vídeo descodificados a un usuario, y puede 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 diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0038] En el ejemplo de la figura 1, el canal 16 de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y alámbricos. El canal 16 de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa o una red global tal como Internet. El canal 16 de comunicación representa en general cualquier medio de comunicación adecuado, o un conjunto de medios de comunicación diferentes, para transmitir datos de vídeo desde el dispositivo 12 de origen hasta el dispositivo 14 de destino, incluida cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal 16 de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo 12 de origen hasta el dispositivo 14 de destino.
[0039] El codificador 20 de vídeo y el descodificador 30 de vídeo pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, parte 10, codificación de vídeo avanzada (AVC). Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden estar integrados en un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para ocuparse de la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexador ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0040] La norma ITU-T H.264/MPEG-4 (AVC) fue redactada por el Grupo de expertos en codificación de vídeo de ITU-T (VCEG) junto con el Grupo de expertos en imágenes en movimiento de ISO/IEC (MPEG), como el producto de una asociación conocida como Equipo mixto de vídeo (JVT, por sus siglas en inglés). En algunos aspectos, las técnicas descritas en esta divulgación pueden aplicarse a dispositivos que se ajustan en general a la norma H.264. La norma H.264 se describe en la recomendación ITU-T H.264, codificación avanzada de vídeo para servicios audiovisuales genéricos, por el Grupo de estudio de la ITU-T, con fecha de marzo de 2005, que puede denominarse en el presente documento norma H.264 o especificación H.264, o norma o especificación H.264/AVC. El Equipo mixto de vídeo (JVT) continúa trabajando en ampliaciones de la norma H.264/MPEG-4 AVC.
[0041] El codificador 20 de vídeo y el descodificador 30 de vídeo pueden implementarse como cualquiera de una variedad de circuitos de codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden incluirse en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador combinado (códec) en una respectiva cámara, ordenador, dispositivo móvil, dispositivo de abonado, dispositivo de radiodifusión, codificador, servidor o similar.
[0042] Una secuencia de vídeo incluye típicamente una serie de tramas de vídeo. Un grupo de imágenes (GOP) comprende en general una serie de una o más tramas de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, una cabecera de una o más tramas del GOP, o en otras ubicaciones, que indican el número de tramas incluidas en el GOP. Cada trama puede incluir datos sintácticos de trama que describen un modo de codificación para la respectiva trama. Un codificador 20 de vídeo actúa típicamente sobre bloques de vídeo de tramas de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un macrobloque o una división de un macrobloque. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada. Cada trama de vídeo puede incluir una pluralidad de fragmentos. Cada fragmento puede incluir una pluralidad de macrobloques, que pueden disponerse en divisiones, también denominadas subbloques.
[0043] En un ejemplo, la norma UIT-T H.264 admite la intrapredicción en diversos tamaños de bloque, tales como 16 por 16, 8 por 8 o 4 por 4 para componentes de luma, y 8x8 para componentes de croma, así como la interpredicción en diversos tamaños de bloque, tales como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4 para componentes de luma y tamaños escalados correspondientes para componentes de croma. En esta divulgación, «NxN» y «N por N» pueden usarse de manera intercambiable para referirse a las dimensiones de píxel del bloque en lo que respecta a las 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 tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque pueden disponerse en filas y columnas. Además, no es necesario que los bloques presenten necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N. Los tamaños de bloques que son menores que 16x16 se pueden denominar divisiones de un macrobloque de 16x16 en ITU-T H.264.
[0044] Los bloques de vídeo pueden comprender bloques de datos de píxeles en el dominio del píxel, o bloques de coeficientes de transformada en el dominio de la transformada, por ejemplo, tras la aplicación de una transformada, tal como una transformada discreta del coseno (DCT), una transformada de números enteros, una transformada de wavelet o una transformada conceptualmente similar a los datos de bloques de vídeo residuales que representan diferencias de píxeles entre bloques de vídeo codificados y bloques de vídeo predictivos. En algunos casos, un bloque de vídeo puede comprender bloques de coeficientes de transformada cuantificados en el dominio de la transformada.
[0045] Los bloques de vídeo más pequeños pueden proporcionar una mejor resolución y pueden usarse para ubicaciones de una trama de vídeo que incluye altos niveles de detalle. En general, los macrobloques y las diversas divisiones, denominadas en ocasiones subbloques, pueden considerarse bloques de vídeo. De forma adicional, un fragmento puede considerarse una pluralidad de bloques de vídeo, tales como macrobloques y/o subbloques. Cada fragmento puede ser una unidad independientemente descodificable de una trama de vídeo. De forma alternativa, las propias tramas pueden ser unidades descodificables, o pueden definirse otras partes de una trama como unidades descodificables. El término «unidad codificada» puede referirse a cualquier unidad independientemente descodificable de una trama de vídeo, tal como una trama completa, un fragmento de una trama, un grupo de imágenes (GOP), denominado también secuencia, u otra unidad independientemente descodificable definida de acuerdo con unas técnicas de codificación aplicables.
[0046] En la actualidad se están dedicando esfuerzos a la elaboración de una nueva norma de codificación de vídeo, conocida actualmente como codificación de vídeo de alta eficiencia (HEVC). La próxima norma HVEC también puede denominarse H.265. Las labores de normalización se basan en un modelo de dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades de los dispositivos de codificación de vídeo respecto a los dispositivos de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de intrapredicción, el HM proporciona hasta treinta y tres modos de intrapredicción, por ejemplo, basándose en el tamaño de un bloque que se está codificando con intrapredicción.
[0047] El HM se refiere a un bloque de datos de vídeo como unidad de codificación (CU). Los datos sintácticos de un flujo de bits pueden definir una unidad de codificación más grande (LCU), que es una unidad de codificación de mayor tamaño en lo que respecta al número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto en que una CU no tiene distinción de tamaño. Por lo tanto, una CU puede dividirse en varias sub-CU. En general, las referencias de esta divulgación a una CU pueden referirse a una unidad de codificación más grande de una imagen o a una sub-CU de una LCU. Una LCU puede dividirse en varias sub-CU, y cada sub-CU puede dividirse en varias sub-CU. Los datos sintácticos para un flujo de bits pueden definir un número máximo de veces en que puede dividirse una LCU, lo que se denomina profundidad de CU. Por consiguiente, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). Esta divulgación también usa el término «bloque» para referirse a cualquiera de entre una CU, una unidad de predicción (PU) o una unidad de transformada (TU).
[0048] Una LCU puede asociarse a una estructura de datos de árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo del árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida en varias sub-CU.
[0049] Una CU que no está dividida 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. Por ejemplo, cuando la PU está codificada en modo de intrapredicción, la PU puede incluir datos que describen un modo de intrapredicción para la PU. En otro ejemplo, cuando la PU está codificada 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, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una trama de referencia a la 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 definen la(s) PU también pueden describir, por ejemplo, una división de la CU en una o más PU. Los modos de división pueden diferir en si la Cu está sin codificar, codificada en modo de intrapredicción o codificada en modo de interpredicción.
[0050] Una CU que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Tras la predicción usando una PU, un codificador de vídeo puede calcular un valor residual para la parte de la CU correspondiente a la PU. Un conjunto de valores residuales puede transformarse, explorarse y cuantificarse para definir un conjunto de coeficientes de transformada. La TU define una estructura de datos que incluye los coeficientes de transformada. Una TU no está necesariamente limitada al tamaño de una PU. Por lo 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.
[0051] De acuerdo con las técnicas de esta divulgación, el codificador 20 de vídeo puede codificar determinados bloques de datos de vídeo usando codificación en modo de intrapredicción, y proporcionar información que indica un modo de intrapredicción seleccionado usado para codificar el bloque. El codificador 20 de vídeo puede codificar mediante intrapredicción bloques de cualquier tipo de trama o fragmento usando un modo de intrapredicción, por ejemplo, tramas I o fragmentos I, además de tramas P o fragmentos P y tramas B o fragmentos B. Cuando el codificador 20 de vídeo determina que un bloque debería codificarse en modo de intrapredicción, el codificador 20 de vídeo puede realizar un análisis de velocidad-distorsión para seleccionar un modo de intrapredicción más apropiado. Por ejemplo, el codificador 20 de vídeo puede calcular valores de velocidad-distorsión para uno o más modos de intrapredicción, y seleccionar uno de los modos que tiene características de velocidad-distorsión aceptables.
[0052] El codificador 20 de vídeo también puede estar configurado para determinar un contexto de codificación para el bloque. El contexto puede incluir diversas características del bloque tales como, por ejemplo, un tamaño del bloque, que pueden determinarse en términos de dimensiones de píxeles, tipo de unidad de predicción (PU) tal como, en el ejemplo de HEVC, 2Nx2N, Nx2N, 2NxN, NxN, tipos de intrapredicción de corta distancia (SDIP) tales como 2NxN/2, N/2x2N, 2Nx1, 1 x2N, un tipo de macrobloque en el ejemplo de H.264, una profundidad de unidad de codificación (CU) para el bloque, u otras mediciones de tamaño para un bloque de datos de vídeo. En algunos ejemplos, el contexto puede corresponder a alguno o todos los modos de intrapredicción para un bloque contiguo superior, un bloque contiguo izquierdo, un bloque contiguo superior izquierdo, un bloque contiguo superior derecho u otros bloques contiguos. En algunos ejemplos, el contexto puede incluir tanto modos de intrapredicción para uno o más bloques como información de tamaño para el bloque actual que se está codificando.
[0053] En cualquier caso, el codificador 20 de vídeo puede incluir datos de configuración que correlacionan el contexto para el bloque con diversas características de codificación para el bloque actual. Por ejemplo, basándose en el contexto para el bloque, los datos de configuración pueden indicar uno o más modos de intrapredicción más probables, una tabla de índices de modo de intrapredicción y una tabla de códigos de longitud variable (VLC). Es decir, los datos de configuración pueden incluir una pluralidad de tablas de índices de modo de intrapredicción y tablas de VLC, así como una indicación de una de la pluralidad de tablas de índices de modo de intrapredicción y una de las tablas de VLC para usar a fin de codificar una indicación de un modo de intrapredicción para un bloque actual basándose en el contexto de codificación para el bloque actual. Los datos de configuración pueden proporcionar además una indicación de uno o más modos más probables para el bloque actual basándose en el contexto de codificación. El número de modos de intrapredicción más probables usados puede ser fijo de tal forma que siempre se usa un modo de intrapredicción más probable, siempre se usan dos modos de intrapredicción más probables, siempre se usan tres modos de intrapredicción más probables, y así sucesivamente., o de forma alternativa, el número de modos de intrapredicción más probables puede depender del contexto, de tal forma que algunos contextos usan un modo de intrapredicción más probable mientras que otros contextos usan dos o más modos de intrapredicción más probables.
[0054] La tabla de índices de modo puede incluir un conjunto de modos de intrapredicción, así como índices correlacionados con cada uno de los modos de intrapredicción. En algunos ejemplos, el número de modos de intrapredicción disponibles puede depender del tamaño del bloque que se está codificando, y por lo tanto, la pluralidad de tablas de índices de modo de intrapredicción y tablas de VLC puede tener diferentes números de entradas, dependiendo de, por ejemplo, un tamaño del bloque que se está codificando y/u otros factores. Puede haber una relación de uno a varios entre las tablas de VLC y las tablas de índices de modo de intrapredicción en los datos de configuración. Es decir, la misma tabla de VLC se puede usar para codificar modos de intrapredicción seleccionados de una o más tablas de índices de modo de predicción. De esta manera, las tablas de VLC se pueden reusar para múltiples tablas de índices de modo de intrapredicción. Del mismo modo, las mismas tablas de índices de modo de intrapredicción pueden reusarse en una variedad de contextos, por ejemplo, cuando dos o más contextos comparten el mismo conjunto de modos de intrapredicción y probabilidades relativas similares o idénticas de modos de intrapredicción usados en esos contextos. Además, en algunos casos, se puede usar la misma tabla de índices de modo de predicción y tabla de VLC para todos los bloques de un tamaño particular, y el modo de intrapredicción más probable se puede determinar basándose en, por ejemplo, los modos de intrapredicción para bloques contiguos a un bloque del tamaño particular.
[0055] En cualquier caso, de acuerdo con las técnicas de esta divulgación, el codificador 20 de vídeo puede determinar uno o más modos más probables para un bloque, basándose en un contexto de codificación para el bloque, así como una tabla de índices de modo de intrapredicción y una tabla de VLC basándose en el contexto de codificación para el bloque. Después de seleccionar el modo de intrapredicción para usar a fin de codificar el bloque, el codificador 20 de vídeo puede determinar si el modo de intrapredicción seleccionado es el modo de intrapredicción más probable para el bloque. Si el modo seleccionado es el modo más probable, el codificador 20 de vídeo puede señalizar el modo de intrapredicción usando una palabra de código de un solo bit (por ejemplo, «0» o «1») o serie de bits.
[0056] Además, el modo de intrapredicción más probable puede tener un valor de índice de la tabla de índices de modo de intrapredicción seleccionada para el bloque basándose en el contexto de codificación del bloque. En particular, la tabla de índices de modo de intrapredicción puede incluir un valor de índice único para cada modo de intrapredicción de la tabla. Se supondrá que m representa el valor del índice para el modo de intrapredicción más probable. Debido a que la palabra de código para el modo de intrapredicción más probable puede señalizarse por separado, la tabla de VLC no necesita incluir una palabra de código adicional para el modo de intrapredicción más probable. Por lo tanto, si el conjunto de modos de intrapredicción disponibles tiene K+1 miembros correlacionados con un intervalo de índices que varían de 0 a K, la tabla de VLC puede asignar K palabras de código a los índices 0 a K-1.
[0057] Para determinar una palabra de código de acuerdo con este sistema de ejemplo, se va a suponer que el modo de intrapredicción seleccionado no es el modo de intrapredicción más probable, y que tiene un valor de índice de modo de j. Se supondrá que el valor n representa el índice del modo de intrapredicción modificado correspondiente a j. De acuerdo con la descripción previa, la palabra de código que está correlacionada con el índice n se señaliza desde el codificador al descodificador para indicar el modo de intrapredicción seleccionado j. Si el valor de índice de modo para el modo de intrapredicción seleccionado es menor que el valor de índice de modo del modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j. En otras palabras, si j < m, entonces n = j. Por otro lado, si el valor de índice de modo para el modo de intrapredicción seleccionado es mayor o igual que el valor de índice de modo del modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j-1. En otras palabras, si j > m, entonces n = j-1.
[0058] En los casos en que se selecciona más de un modo de intrapredicción más probable, el codificador 20 de vídeo puede señalizar en el flujo de bits codificado si el modo seleccionado es uno de los modos de intrapredicción más probables determinados usando un primer bit (por ejemplo «0» o «1»). Si el modo seleccionado es uno de los modos de intrapredicción más probables determinados, entonces el codificador 20 de vídeo puede señalizar cuál de los modos de intrapredicción más probables es el modo seleccionado usando un segundo bit. Si el modo seleccionado no es uno de los modos de intrapredicción más probables determinados, entonces el codificador 20 de vídeo puede señalizar cuál de los otros modos de intrapredicción es el modo seleccionado usando una palabra de código de una tabla de VLC. Suponiendo de nuevo sin pérdida de generalidad que el primer bit tiene un valor de «0» para indicar que el modo seleccionado es uno de los modos de intrapredicción más probables, y que el codificador 20 de vídeo determina dos modos de intrapredicción más probables, entonces el codificador 20 de vídeo puede señalizar cuál de los dos modos de intrapredicción más probables es el modo seleccionado con un valor de «00» o «01», donde el primer 0 representa el primer bit. Si el modo seleccionado no es uno de los modos de intrapredicción más probables, entonces el codificador 20 de vídeo puede señalizar el modo seleccionado señalizando un primer bit de «1» seguido de una palabra de código.
[0059] Por otra parte, los dos modos de intrapredicción más probables pueden tener valores de índice de la tabla de índices de modo de intrapredicción seleccionada para el bloque basándose en el contexto de codificación del bloque. En particular, la tabla de índices de modo de intrapredicción puede incluir un valor de índice único para cada modo de intrapredicción de la tabla. Se supondrá que mi representa el valor del índice para el primer modo de intrapredicción más probable y m2 representa el valor del índice para el segundo modo de intrapredicción más probable. Debido a que la palabra de código para el primer modo de intrapredicción más probable y el segundo más probable pueden señalizarse usando un primer bit y un segundo bit como se ha descrito anteriormente; la tabla de VLC no necesita incluir palabras de código adicionales para el primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable. Por lo tanto, si el conjunto de modos de intrapredicción disponibles tiene K+1 miembros correlacionados con un intervalo de índices que van de 0 a K, la tabla de VLC puede asignar K-1 palabras de código a los índices 0 a K-2.
[0060] Para determinar una palabra de código de acuerdo con este sistema de ejemplo donde se identifican dos modos más probables, se va a suponer que el modo de intrapredicción seleccionado no es uno de los modos de intrapredicción más probables, y tiene un valor de índice de modo de j. Se supondrá que el valor n representa el modo de intrapredicción modificado correspondiente a j. De acuerdo con la descripción previa, la palabra de código que está correlacionada con el índice n se señaliza desde el codificador al descodificador para indicar el modo de intrapredicción seleccionado j. Si el valor de índice de modo para el modo de intrapredicción seleccionado es menor que el valor de índice de modo del primer modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j. En otras palabras, si j < mi, entonces n = j. Por otro lado, si el valor de índice de modo para el modo de intrapredicción seleccionado es mayor o igual que el valor de índice de modo del primer modo de intrapredicción más probable, pero menor que el segundo modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j - 1. En otras palabras, si j > mi y j < m2, entonces n = j - 1. Por último, si el valor de índice de modo para el modo de intrapredicción seleccionado es mayor que el valor de índice de modo del primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j - 2. En otras palabras, si j > mi y j > m2, entonces n = j - 2. Las tablas de VLC para los modos de intrapredicción restantes se pueden construir de manera más eficiente reasignando índices para tener en cuenta el hecho de que los modos más probables no están incluidos en las tablas de VLC, lo cual puede significar ahorros de bits cuando uno o más modos más probables no seleccionados tendrían índices de VLC definidos de otra forma inferiores al del modo seleccionado.
[0061] El codificador 20 de vídeo puede, en algunos ejemplos, estar configurado para comenzar el análisis para la selección de un modo de intrapredicción con el modo más probable, basándose en el contexto. Cuando el modo más probable alcanza características de velocidad-distorsión adecuadas, en algunos ejemplos, el codificador 20 de vídeo puede seleccionar el modo más probable. En otros ejemplos, el codificador 20 de vídeo no necesita comenzar el proceso de selección con el modo más probable.
[0062] Tras una codificación intrapredictiva o interpredictiva para generar datos predictivos y datos residuales, y tras cualquier transformada (tal como la transformada de enteros 4x4 u 8x8 usada en la norma H.264/AVC o una transformada discreta del coseno DCT) para generar coeficientes de transformada, puede realizarse la cuantificación de los coeficientes de transformada. La cuantificación se refiere en general a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja a un valor de m bits durante la cuantificación, donde n es mayor que m.
[0063] T ras la cuantificación, puede realizarse la codificación de entropía de los datos cuantificados, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa según el contenido (CAVLC), la codificación aritmética binaria adaptativa según el contexto (CABAC) u otra metodología de codificación de entropía. Una unidad de procesamiento configurada para la codificación de entropía, u otra unidad de procesamiento, puede desempeñar otras funciones de procesamiento, tales como la codificación de longitud de recorrido cero de coeficientes cuantificados y/o la generación de información sintáctica, tal como valores de patrón de bloque codificado (CBP), tipo de macrobloque, modo de codificación, tamaño máximo de macrobloque para una unidad codificada (tal como una trama, un fragmento, un macrobloque o una secuencia) o similares.
[0064] El descodificador 30 de vídeo puede finalmente recibir datos de vídeo codificados, por ejemplo, desde el módem 28 y el receptor 26. De acuerdo con las técnicas de esta divulgación, el descodificador 30 de vídeo puede recibir una palabra de código representativa de un modo de intrapredicción usado para codificar un bloque de datos de vídeo. El descodificador 30 de vídeo puede estar configurado para determinar un contexto de codificación para el bloque de una manera sustancialmente similar al codificador 20 de vídeo. Además, el descodificador 30 de vídeo puede incluir datos de configuración similares a los del codificador 20 de vídeo, por ejemplo, indicaciones de un modo más probable, una tabla de índices de modo de intrapredicción y una tabla de VLC para cada contexto de codificación.
[0065] Cuando se usa un modo de intrapredicción más probable, un solo bit puede usarse para indicar si el modo de intrapredicción usado para codificar el bloque es el modo más probable. Si se determina que el modo seleccionado no es el modo más probable, entonces el descodificador 30 de vídeo puede determinar el modo de intrapredicción usado para codificar el bloque de datos de vídeo de una manera en general recíproca a la del codificador 20 de vídeo.
[0066] Específicamente, de nuevo n representa el índice del modo de intrapredicción modificado con el cual está correlacionada una palabra de código recibida de la tabla de VLC, j representa el índice de modo del modo de intrapredicción que se va a usar para descodificar el bloque codificado, y m representa el índice de modo del modo más probable. Si el índice n de modo de intrapredicción modificado es menor que el índice de modo del modo más probable m, entonces el descodificador 30 de vídeo puede descodificar el bloque codificado usando el modo de intrapredicción que tiene el índice n. Es decir, si n < m, entonces j = n. Por otro lado, si el índice n de modo de intrapredicción modificado es mayor o igual que el índice de modo del modo más probable m, entonces el descodificador 30 de vídeo puede descodificar el bloque codificado usando el modo de intrapredicción que tiene el índice n 1. En otras palabras, si n > m, entonces j = n+1.
[0067] Cuando se usan dos o más modos de intrapredicción más probables, si la palabra de código comprende un primer bit que indica que un modo seleccionado es uno de los dos modos de intrapredicción más probables, entonces el descodificador 30 de vídeo puede determinar el modo de intrapredicción usado para codificar el bloque codificado basándose en bits adicionales que identifican cuál de los dos o más modos de intrapredicción más probables corresponde al modo seleccionado. Si el primer bit indica que el modo seleccionado no es uno de los dos modos de intrapredicción más probables, entonces el descodificador 30 de vídeo puede determinar el modo de intrapredicción usado para codificar el bloque de datos de vídeo de una manera en general recíproca a la del codificador 20 de vídeo.
[0068] Específicamente, nuevamente se supondrá que n representa el índice de modo de intrapredicción modificado con el cual está correlacionada una palabra de código recibida de la tabla de VLC, j representa el índice de modo del modo de intrapredicción que se va a usar para descodificar el bloque codificado, mi representa el índice de modo del primer modo más probable, y m2 representa el índice de modo del segundo modo más probable. Como se ha indicado anteriormente, se puede suponer que el índice de modo de mi es menor que el índice de modo de m2. Si el índice n de modo de intrapredicción modificado es menor que el índice de modo del primer modo más probable mi, entonces el descodificador 30 de vídeo puede descodificar el bloque codificado usando el modo de intrapredicción que tiene el índice n. Es decir, si n < mi, entonces j = n. De lo contrario, si el índice de modo de intrapredicción modificado más uno (n+1) es menor que el índice de modo para el segundo modo más probable m2, entonces el descodificador 30 de vídeo puede descodificar el bloque codificado usando el modo de intrapredicción que tiene el índice n+1. En otras palabras, si n+1 < m2, entonces j = n+1. De lo contrario, el descodificador 30 de vídeo puede descodificar el bloque codificado usando el modo de intrapredicción que tiene el índice n+2. En otras palabras, si n+1 > m2, entonces j = n+2.
[0069] Para dos modos más probables, la correlación de los índices de modo con los índices de modo de intrapredicción modificados, realizada por el codificador 20 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo:
if( /> «';)
n = j - 2
else i f ( j > m¡)
n = j - 1
clsc
« ./■
[0070] Para N modos más probables, donde mi representa el primer modo más probable y mN representa el N-ésimo modo más probable, la correlación de índices de modo con los índices de modo de intrapredicción modificados, realizada por el codificador 20 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo: i f ( /> mN)
n = j - N
clscif
Figure imgf000015_0001
n = j - N 1
clscif(/> m2)
n = j -2
clscif(/> m¡)
n = j - 1
else
n=j .
[0071] Para dos modos más probables, la correlación de un índice de modo de intrapredicción modificado con un índice de modo, realizada por el descodificador 30 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo:
if(n < mi)
j = n-,
else if (n + 1 < )
j = n 1;
clsc
j = n 2.
[0072] Para N modos más probables, la correlación de un índice de modo de intrapredicción modificado con un índice de modo, realizada por el descodificador 30 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo:
if( n < m ¡ )
./ = «;
else if (« 1 < m¡)
j - n 1;
else if (n 2 < «;.?)
j = n 2;
else if («+3 < m4)
j = n 3;
else if(« (N-l) < ni\r
j - n (N-l)
clsc
j = n+ N.
[0073] De acuerdo con las técnicas de la presente divulgación, los modos también se pueden correlacionar directamente con los índices de palabra de código que indican palabras de código correspondientes. En general, los valores de índice de palabra de código inferiores se asignan a palabras de código más cortas, y los valores de índice de palabra de código superiores se asignan a palabras de código más largas. De manera similar a los índices modificados de modo de intrapredicción descritos anteriormente, en lugar de enviar la palabra de código con un índice correspondiente al índice de modo, se puede lograr un ahorro de bits enviando una palabra de código con un índice de palabra de código modificado, donde la modificación es un resultado del uso de índices de palabra de código asociados originalmente con los modos más probables para indicar modos que no son los modos más probables. Dado que los modos más probables se señalizan usando un bit o una serie de bits inicial como se ha descrito anteriormente, los modos más probables pueden excluirse de la consideración cuando se señaliza un índice de palabra de código de un modo que no es uno de los modos más probables. Como resultado, un índice de palabra de código que está originalmente correlacionado con uno de los modos más probables se puede usar para indicar un modo que no es uno de los modos más probables.
[0074] Suponiendo, por ejemplo, que se usan dos modos de intrapredicción más probables, como con los modos de intrapredicción modificados anteriores, si el conjunto de modos de intrapredicción disponibles tiene K+1 miembros correlacionados con un intervalo de índices de palabra de código que van de 0 a K, la tabla de índices de palabra de código modificados puede asignar K-1 palabras de código a los índices de palabra de código 0 a K-2.
[0075] Se va a suponer que C representa un índice de palabra de código, y Cmod representa un índice de palabra de código modificado. Se va a suponer además que Cmi representa el índice de palabra de código más bajo de un modo más probable, Cm2 representa el segundo índice de palabra de código más bajo correspondiente a un modo más probable, y así sucesivamente. Como se explicará con más detalle a continuación, la correlación de modos con índices de palabra de código puede ser dinámica. Por lo tanto, un primer modo más probable con un índice de modo más bajo puede no tener también un índice de palabra de código más bajo. En consecuencia, Cmi puede no necesariamente corresponder a un primer modo más probable, Cm2 puede no corresponder a un segundo modo más probable, y así sucesivamente. Para N modos más probables, la correlación de índices de palabra de código con índices de palabra de código modificados, tal como la realizada por el codificador 20 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo:
Figure imgf000016_0001
[0076] Para N modos más probables, la correlación de índices de palabra de código modificados con índices de palabra de código, como la realizada por el descodificador 30 de vídeo, puede por lo tanto representarse mediante el siguiente seudocódigo:
Figure imgf000017_0001
clsc i
Figure imgf000017_0002
else i f (Cw 2 < c m¡)
r — c + ? •
else i f ( t w 3 < Cm4)
C = C»w+ 3;
else i f (Cmorf (N-T) < C,„,v
£-’ = ( w (N - l)
clsc
C = C maí N.
[0077] Tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden implementarse como cualquiera de entre una variedad de circuitos codificadores o descodificadores adecuados, según corresponda, tales como uno o más de entre microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), circuitos de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden estar incluidos en uno o más codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (códec) de vídeo combinado. Un aparato que incluye un codificador 20 de vídeo y/o un descodificador 30 de vídeo puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0078] La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador 20 de vídeo que puede implementar técnicas para codificar información indicativa de un modo de intrapredicción. El codificador 20 de vídeo puede realizar una intra e intercodificación de bloques dentro de tramas de vídeo, incluidos macrobloques o divisiones o subdivisiones de macrobloques. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas adyacentes de una secuencia de vídeo. El modo de intrapredicción (modo I) puede referirse a cualquiera de varios modos de compresión espacial, y los modos inter tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B) pueden referirse a cualquiera de varios modos de compresión temporal. Aunque los componentes para codificación en modo inter se representan en la figura 2, debe entenderse que el codificador 20 de vídeo puede incluir además componentes para codificación en modo de intrapredicción. Sin embargo, dichos componentes no se ilustran en aras de la brevedad y la claridad.
[0079] Como se muestra en la figura 2, el codificador 20 de vídeo recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la figura 2, el codificador 20 de vídeo incluye la unidad 44 de compensación de movimiento, la unidad 42 de estimación de movimiento, la memoria 64, el sumador 50, el módulo 52 de transformada, la unidad 54 de cuantificación y la unidad 56 de codificación de entropía. Para la reconstrucción de bloques de vídeo, el codificador 20 de vídeo incluye también la unidad 58 de cuantificación inversa, la unidad 60 de transformada inversa y el sumador 62. Puede incluirse, asimismo, un filtro de eliminación de bloques (no mostrado en la figura 2) para filtrar fronteras de bloques, a fin de eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará típicamente la salida del sumador 62.
[0080] Durante el proceso de codificación, el codificador 20 de vídeo recibe una trama o un fragmento de vídeo que se va a codificar. La trama o el fragmento pueden dividirse en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento realizan una codificación interpredictiva del bloque de vídeo recibido con respecto a uno o más bloques de una o más tramas de referencia para proporcionar una compresión temporal. La unidad 46 de intrapredicción puede llevar a cabo una codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques contiguos de la misma trama o fragmento que el bloque que se va a codificar para proporcionar compresión espacial.
[0081] La unidad 40 de selección de modo puede seleccionar una de los modos de codificación, intra o inter, por ejemplo, basándose en resultados de errores y basándose en un tipo de trama o fragmento para la trama o fragmento que incluye un bloque actual que se está codificando, y proporciona el bloque intra o intercodificado resultante al sumador 50 para generar datos de bloque residuales, y al sumador 62 para reconstruir el bloque codificado para su uso en una trama de referencia o un fragmento de referencia. En general, la intrapredicción implica la predicción de un bloque actual con respecto a bloques contiguos codificados previamente, mientras que la interpredicción implica la estimación de movimiento y la compensación de movimiento para predecir temporalmente el bloque actual.
[0082] La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento representan los elementos de interpredicción del codificador 20 de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo de una trama de referencia predictiva (u otra unidad codificada) con respecto al bloque actual que está codificándose en la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque que se va a codificar, en lo que respecta a la diferencia de píxeles, lo cual puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una división de un macrobloque. La compensación de movimiento puede implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado mediante estimación de movimiento. De nuevo, la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden integrarse funcionalmente, en algunos ejemplos.
[0083] La unidad 42 de estimación de movimiento calcula un vector de movimiento para el bloque de vídeo de una trama intercodificada comparando del bloque de vídeo con los bloques de vídeo de una trama de referencia de la memoria 64 de tramas de referencia. La unidad 44 de compensación de movimiento también puede interpolar píxeles de subentero de la trama de referencia, por ejemplo, una trama I o una trama P. La norma ITU H.264, por ejemplo, describe dos listas: la lista 0, que incluye tramas de referencia que tienen un orden de visualización anterior a una trama actual que se está codificando, y la lista 1, que incluye tramas de referencia que tienen un orden de visualización posterior a la trama actual que se está codificando. Por lo tanto, los datos almacenados en la memoria 64 de tramas de referencia pueden organizarse de acuerdo con estas listas.
[0084] La unidad 42 de estimación de movimiento compara bloques de una o más tramas de referencia de la memoria 64 de tramas de referencia con un bloque que se va a codificar de una trama actual, por ejemplo, una trama P o una trama B. Cuando las tramas de referencia de la memoria 64 de tramas de referencia incluyen valores para píxeles de subentero, un vector de movimiento calculado por la unidad 42 de estimación de movimiento puede referirse a una ubicación de píxel de subentero de una trama de referencia. La unidad 42 de estimación de movimiento y/o la unidad 44 de compensación de movimiento también pueden estar configuradas para calcular valores para posiciones de píxeles de subentero de tramas de referencia almacenadas en la memoria 64 de tramas de referencia si no hay valores para posiciones de píxeles de subentero almacenados en la memoria 64 de tramas de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación de entropía y a la unidad 44 de compensación de movimiento. El bloque de trama de referencia identificado por un vector de movimiento puede denominarse bloque predictivo. La unidad 44 de compensación de movimiento puede calcular datos de predicción basándose en el bloque interpredictivo.
[0085] La unidad 46 de intrapredicción puede realizar la intrapredicción de un bloque actual, como alternativa a la interpredicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se ha descrito anteriormente. En particular, la unidad 46 de intrapredicción puede determinar un modo de intrapredicción para usar a fin de codificar un bloque actual. En algunos ejemplos, la unidad 46 de intrapredicción puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante diferentes pasadas de codificación, y la unidad 46 de intrapredicción (o la unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intrapredicción adecuado para usar a partir de los modos probados. Por ejemplo, la unidad 46 de intrapredicción puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidaddistorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para generar el bloque codificado. La unidad 46 de intrapredicción puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, a fin de determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0086] En cualquier caso, tras seleccionar un modo de intrapredicción para un bloque, la unidad 46 de intrapredicción puede proporcionar información que indica el modo de intrapredicción seleccionado para el bloque a la unidad 56 de codificación de entropía. La unidad 56 de codificación de entropía puede codificar la información que indica el modo de intrapredicción seleccionado de acuerdo con las técnicas de esta divulgación. Como se ilustra en la figura 2, el codificador 20 de vídeo puede incluir datos 66 de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intrapredicción y una pluralidad de tablas de índices de modo de intrapredicción modificados (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques, e indicaciones de un modo de intrapredicción más probable, una tabla de índices de modo de intrapredicción, y una tabla de índices de modo de intrapredicción modificados que se va a usar para cada uno de los contextos.
[0087] La tabla 1 siguiente representa un ejemplo de índices de modo de intrapredicción, modos de intrapredicción correspondientes, y una indicación de cuál de los modos es el modo más probable para un contexto particular. La tabla 1 también muestra los índices de modo de intrapredicción modificados que se correlacionan con cada índice de modo, en este ejemplo particular. La tabla 2 proporciona una tabla de correlación de ejemplo que correlaciona palabras de código con los índices de modo de intrapredicción modificados que en general corresponden a los índices de modo de la tabla 1. Como se ha analizado anteriormente, también se puede usar más de un modo más probable, pero los ejemplos de la tabla 1 y la tabla 2 suponen que solo se usa un modo más probable. Debido a que se usa un modo más probable, la tabla 2 incluye una entrada menos que la tabla 1. Dado que el modo más probable se señaliza por separado de los modos restantes, el índice de modo 5 no tiene un índice de modo de intrapredicción modificado correspondiente. De forma similar, la tabla 2 no necesita incluir una palabra de código para el modo más probable.
Tabla 1
Índice de Modo Más Índice de modo de intrapredicción
modo probable modificado
0 DC No 0
1 Vertical No 1
2 Horizontal No 2
3 Diagonal No 3
inferior/derecho
4 Diagonal No 4
inferior/izquierdo
5 Vertical-derecho Sí X
6 Vertical-izquierdo No 5
7 Horizontal-superior No 6
8 Horizontal-inferior No 7
Tabla 2
Índice de modo de intrapredicción Palabra de código
modificado
0 0
1 10
2 1100
3 1101
4 11100
5 11101
6 11110
7 11111
[0088] A modo de ejemplo, se supondrá que m representa el índice de modo del modo más probable de la tabla 1, y se supondrá que n representa el índice del modo de intrapredicción modificado correspondiente a j. Si el modo seleccionado es el modo más probable, entonces se usa un primer bit (por ejemplo, «0») para representar el modo, en este ejemplo, y el modo se determina como el modo más probable, como se indica en la tabla 1 (vertical-derecho, en este ejemplo). Si se envía un primer bit distinto de 0 (es decir, un «1»), entonces el modo no es el modo más probable. Se supondrá que n corresponde al índice de modo de intrapredicción modificado indicado por la palabra de código que se envía para representar el modo. La palabra de código que se correlaciona con el índice n se señaliza desde el codificador al descodificador para indicar el modo j de intrapredicción seleccionado. Si el valor de índice de modo para el modo de intrapredicción seleccionado es menor que el valor de índice de modo del modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j. En otras palabras, si j < m, entonces n = j. Por otro lado, si el valor de índice de modo para el modo de intrapredicción seleccionado es mayor o igual que el valor de índice de modo del modo de intrapredicción más probable, entonces el codificador 20 de vídeo puede codificar la indicación del modo de intrapredicción usado para codificar el bloque actual usando la palabra de código correspondiente a j - 1. En otras palabras, si j > m, entonces n = j-1.
[0089] Un descodificador, tal como el descodificador 30 en general realizará la correlación opuesta del codificador 20. Por lo tanto, el descodificador 30 puede determinar que si n < m, entonces el índice de modo es igual a n. Por otro lado, si n > m, entonces el índice de modo es igual a n+1. En otras palabras, si el índice de modo de intrapredicción modificado (por ejemplo, el índice de modo de intrapredicción modificado de la tabla 2 correspondiente a la palabra de código que se envía) es mayor o igual que el índice de modo más probable (de la tabla 1, en este ejemplo), entonces el modo de intrapredicción está de hecho indicado por n+1, en lugar de n. De esta manera, cuando el índice de modo para el modo de intrapredicción usado para codificar el bloque actual (por ejemplo, n+1) es mayor que el índice para el modo de codificación más probable (m), la palabra de código usada para representar el modo de intrapredicción seleccionado corresponde a un índice (n) de modo de intrapredicción modificado que es menor en uno que el índice (n+1) de modo para el modo de intrapredicción usado a fin de codificar el bloque actual.
[0090] A modo de ejemplo con respecto a los ejemplos de las tablas 1 y 2, se va a suponer que para un bloque actual, que tiene un contexto que indica un modo más probable vertical-derecho, el modo seleccionado es horizontalinferior. El índice m para el modo más probable es 5, en este ejemplo, mientras que el índice de modo para el modo seleccionado (según la tabla 1) es 8. En este ejemplo, dado que el índice de modo para el modo seleccionado es mayor que el índice de modo para el modo más probable, entonces n = j-1, donde n es el índice de modo de intrapredicción modificado y es igual a 7. Por lo tanto, con la tabla 2, el codificador 20 de vídeo usaría la palabra de código 11111 para representar el modo seleccionado, en este ejemplo. La palabra de código 11111 seguiría a un bit inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit inicial y la palabra de código 11111 y determinaría que el valor de n es 7. Debido a que 7 es mayor que 5 (es decir, n > m) en este ejemplo, el descodificador 30 de vídeo recuperaría de la tabla 1 el modo que tiene el índice n+1 de modo, que es 8, correspondiente a horizontal-inferior, en este ejemplo.
[0091] En otro ejemplo, de nuevo con respecto a los ejemplos de las tablas 1 y 2, se va a suponer que, para el bloque actual, el modo seleccionado es DC. Nuevamente, el índice m para el modo más probable es 5, en este ejemplo, mientras que el índice de modo para el modo seleccionado (según la tabla 1) es 0. En este ejemplo, dado que el índice de modo para el modo seleccionado es menor que el índice de modo para el modo más probable, el índice de modo es igual a n, donde n es el índice de modo de intrapredicción modificado. Por lo tanto, con la tabla 2, el codificador 20 de vídeo usaría la palabra de código 0 para representar el modo seleccionado, en este ejemplo. La palabra de código 0 seguiría a un bit inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit inicial y la palabra de código 0 y determinaría que el valor de n es 0. Dado que 0 es menor que 5 (es decir, n < m) en este ejemplo, el descodificador 30 de vídeo recuperaría de la tabla 1 el modo que tiene el índice n de modo, que es 0, correspondiente a DC, en este ejemplo.
[0092] La tabla 3 siguiente representa un ejemplo de índices de modo de intrapredicción, modos de intrapredicción correspondientes, y una indicación de cuál de los modos es el modo más probable para un contexto particular. La tabla 3 también muestra los índices de modo de intrapredicción modificados que se correlacionan con cada índice de modo, en este ejemplo particular. La tabla 4 proporciona una tabla de correlación de ejemplo que correlaciona palabras de código con índices de modo de intrapredicción modificados que en general corresponden a los índices de modo de la tabla 3. Como se ha analizado anteriormente, también se pueden usar más de dos modos más probables, pero los ejemplos de la tabla 3 y la tabla 4 suponen que solo se usan dos modos más probables. Dado que se usan dos modos más probables, la tabla 4 contiene dos entradas menos que la tabla 3.
Tabla 3
Índice de Modo Más Índice de modo de intrapredicción
modo probable modificado
0 DC No 0
1 Vertical No 1
2 Horizontal No 2
3 Diagonal No 3
inferior/derecho
4 Diagonal Sí X
inferior/izquierdo
5 Vertical-derecho No 4
6 Vertical-izquierdo Sí X
7 Horizontal-superior No 5
8 Horizontal-inferior No 6
Tabla 4
Índice de modo de intrapredicción Palabra de código
modificado
0 0
1 100
2 101
3 1100
4 1101
5 1110
6 1111
[0093] En particular, se supondrá que mi representa el índice de modo del primer modo más probable de la tabla 3, y m2 representa el índice de modo del segundo modo más probable. Si el modo seleccionado es uno de los modos más probables, se usa un primer bit (por ejemplo, «0») para señalizar que el modo es uno de los dos modos más probables. Si el modo es uno de los dos modos más probables, entonces se usa un segundo bit para señalizar cuál de los dos modos más probables corresponde al modo seleccionado. Por lo tanto, los dos modos más probables pueden señalizarse con las secuencias de bits iniciales de «00» y «01», respectivamente. Si se envía un primer bit distinto de «0» (es decir, un «1»), entonces el modo seleccionado no es uno de los dos modos más probables. Se supondrá que n corresponde al índice de modo de intrapredicción modificado indicado por la palabra de código que se envía para representar el modo.
[0094] El codificador 20 de vídeo puede determinar el índice de modo del modo seleccionado (j) y correlacionar el índice de modo con un índice (n) de modo modificado. Si j > m2, entonces n = j - 2. De lo contrario, si j > mi, entonces n = j - 1. De lo contrario, n = j. El descodificador 30 de vídeo recibe el índice (n) de modo de intrapredicción modificado y puede comparar primero n con mi. Si n < mi, entonces el índice de modo j ) es igual a n. Si n no es menor que mi, entonces n+ i se puede comparar con m2. Si n 1 < m2, entonces el índice de modo es igual a n 1. De lo contrario, el índice de modo es igual a n 2.
[0095] A modo de ejemplo con respecto a los ejemplos de las tablas 3 y 4, se va a suponer que para un bloque actual, que tiene un contexto que indica los modos más probables vertical-izquierdo y diagonal inferior/izquierdo, el modo seleccionado es horizontal-inferior. Los índices mi y m2 para los modos más probables son 4 y 6, en este ejemplo, mientras que el índice j de modo para el modo seleccionado (según la tabla 3) es 8. En este ejemplo, dado que el índice de modo para el modo seleccionado es mayor que el índice de modo para los dos modos más probables, el índice j de modo es igual a n 2, donde n es igual al índice del modo de intrapredicción modificado de la tabla 4. Por lo tanto, si el índice j de modo es igual a 8, entonces n = 6. Por lo tanto, el codificador 20 de vídeo usaría la palabra de código 1111 para representar el modo seleccionado, en este ejemplo. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría la palabra de código 1111 y determinaría que el valor de n es 6. Dado que 6 no es menor que 4 (es decir, n > mi) y 6 más 1 no es menor que 6 (es decir, n+1 > m2) en este ejemplo, el descodificador 30 de vídeo recuperaría de la tabla 3 el modo que tiene el índice j de modo igual a n+2, que es 8, correspondiente a horizontalinferior, en este ejemplo.
[0096] En otro ejemplo, de nuevo con respecto a los ejemplos de las tablas 3 y 4, se va a suponer que, para el bloque actual, el modo seleccionado es DC. De nuevo, los índices mi y m2 para los modos más probables son 4 y 6, en este ejemplo, mientras que el índice j de modo para el modo seleccionado (según la tabla 3) es 0. En este ejemplo, dado que el índice de modo para el modo seleccionado es menor que los índices de modo para los dos modos más probables (es decir, n < mi), el índice j de modo es igual a n, donde n es igual al índice del modo de intrapredicción modificado de la tabla 4. Por lo tanto, n es igual a 0. Por lo tanto, basándose en la tabla 4, el codificador 20 de vídeo usaría la palabra de código 0 para representar el modo seleccionado, en este ejemplo. La palabra de código 0 sigue a un bit o una serie de bits inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit o serie de bits inicial y la palabra de código 0 y determinaría que el valor de n es 0. Dado que 0 es menor que 4 y 6 (es decir, n < mi) en este ejemplo, el descodificador 30 de vídeo recuperaría de la tabla 3 el modo que tiene el índice j de modo que es igual a n, que es 0, correspondiente a DC, en este ejemplo.
[0097] En otro ejemplo más con respecto a los ejemplos de las tablas 3 y 4, se va a suponer que para un bloque actual, el modo seleccionado es vertical-derecho. Los índices mi y m2 para los modos más probables son 4 y 6, en este ejemplo, mientras que el índice j de modo para el modo seleccionado (según la tabla 3) es 5. En este ejemplo, dado que el índice de modo para el modo seleccionado es mayor o igual que el índice de modo para el primer modo más probable pero menor que el índice de modo para el segundo modo más probable, el índice j de modo es igual a n+1, donde n es igual al índice del modo de intrapredicción modificado de la tabla 4. Por lo tanto, si el índice j de modo es 5, entonces n = 4. Por lo tanto, el codificador 20 de vídeo usaría la palabra de código 1101 para representar el modo seleccionado, en este ejemplo. La palabra de código 1101 sigue a un bit o una serie de bits inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit y la serie de bits inicial y la palabra de código 1101 y determinaría que el valor de n es 4. Dado que 4 es mayor que o igual a 4, pero 4 más 1 es menor que 6 (es decir, n > mi pero n 1 < m2) en este ejemplo, el descodificador 30 de vídeo recuperaría de la tabla 3 el modo que tiene el índice j de modo igual a n+1, que es 5, correspondiente a vertical-derecho, en este ejemplo.
[0098] Debe entenderse que las tablas 1, 2, 3 y 4 son simplemente ejemplos de tablas de modos más probables, índices para los modos y palabras de código asignadas a diversos índices. En otros ejemplos, se puede determinar que otros modos son los más probables, por ejemplo, basándose en un contexto de codificación para un determinado bloque. Por ejemplo, el modo más probable puede determinarse basándose en los modos de codificación usados para codificar los bloques contiguos izquierdo y superior. Los datos 66 de configuración pueden incluir una pluralidad de tablas diferentes asociadas con diferentes modos de codificación identificados como el modo más probable, en general de forma similar a los ejemplos de las tablas 1 y 3. Asimismo, los datos 66 de configuración pueden incluir una pluralidad de tablas de correlación de palabras de código, tales como las tablas 2 y 4, que correlacionan modos más probables con una palabra de código relativamente corta (por ejemplo, una palabra de código de uno o dos bits) e índices restantes con palabras de código, de tal forma que la probabilidad de uso de un modo particular es inversamente proporcional a la longitud de su palabra de código. Los modos más probables y las tablas de codificación para cualquier caso dado también se pueden definir basándose en otros tipos de contextos, en lugar de o además del modo de codificación usado en ese caso. De esta forma, se puede lograr un ahorro de bits, debido a que los modos de codificación de probabilidad relativamente mayor se correlacionan con palabras de código relativamente más cortas.
[0099] En algunas implementaciones, la correlación de palabras de código con índices de modo de intrapredicción modificados, como los ejemplos mostrados en las tablas 2 y 4, puede ser adaptativa, de modo que las palabras de código más cortas se asignan dinámicamente a índices de modo de intrapredicción modificados que aparecen con mayor frecuencia. En algunos ejemplos, para contextos particulares, se hace un seguimiento del número de veces que se selecciona cada índice de modo de intrapredicción usando contadores y, basándose en el número de selecciones, se asignan, a los índices de modo de intrapredicción modificados que aparecen con mayor frecuencia, palabras de código más cortas que a los índices de modo de intrapredicción que aparecen con menor frecuencia. En otros ejemplos, siempre que se codifica (es decir, se codifica o descodifica) un índice de modo de intrapredicción modificado, este índice de modo de intrapredicción modificado intercambia las palabras de código con otro índice de modo de intrapredicción modificado que está correlacionado con la palabra de código inmediatamente anterior a la actual palabra de código en una tabla de VLC. Por ejemplo, en la tabla 4, si se codifica un índice de modo de intrapredicción modificado de 4, la tabla de correlación de la tabla 4 se ajusta de manera que un índice de mod intrapredicción modificado de 4 se correlaciona con la palabra de código 1100, mientras que un índice de mod intrapredicción modificado de 3 se correlaciona con la palabra de código 1101 para codificar o descodificar futur bloques. En consecuencia, aunque las tablas 2 y 4 muestran que la longitud de la palabra de código aumenta a medida
que aumentan los modos de intrapredicción modificados, esta relación puede no establecerse siempre. Si, por ejemplo, el índice 6 de modo de intrapredicción modificado es el modo de intrapredicción modificado que aparece con mayor frecuencia, entonces al modo 6 de intrapredicción modificado se le puede asignar la palabra de código más corta.
[0100] En general, las tablas 1 y 3 pueden denominarse tablas de índices de modo, mientras que las tablas 2 y 4 pueden denominarse tablas de correlación de índices de modo de intrapredicción modificados, o simplemente tablas de correlación. Como se ha indicado anteriormente, las tablas 1 y 2 son simplemente un ejemplo de tabla de índices de modo y tabla de correlación. En algunos ejemplos, los datos 66 de configuración pueden incluir datos para una pluralidad de tablas de índices de modo y una pluralidad de tablas de correlación. En algunos ejemplos, múltiples contextos de codificación pueden corresponder a una tabla de índices de modo común. Del mismo modo, múltiples tablas de índices de modo se pueden correlacionar con una tabla de correlación común.
[0101] De acuerdo con las técnicas de esta divulgación, los modos también pueden correlacionarse con índices de palabra de código en lugar de índices de modo de intrapredicción modificados. A continuación, los índices de palabra de código se pueden correlacionar con índices de palabra de código modificados, que se usan para buscar palabras de código. La tabla 5 a continuación representa un ejemplo de índices de modo de intrapredicción y modos que se correlacionan con un índice de palabra de código. La tabla 5 también muestra una indicación de qué modos son los modos más probables para un contexto particular, y muestra los índices de palabra de código modificados correspondientes a los índices de palabra de código para este ejemplo particular.
Tabla 5
Índice de Modo Más probable Índice de palabra Índice de palabra de
modo de código código modificado
0 DC No 3 2
1 Vertical No 0 0
2 Horizontal No 4 3
3 Diagonal Sí 5 X
inferior/derecho
4 Diagonal No 6 4
inferior/izquierdo
5 Vertical-derecho No 1 1
6 Vertical-izquierdo Sí 2 X
7 Horizontal-superior No 7 5
8 Horizontal-inferior No 8 6
Tabla 6
Índice de palabra de código Palabra de
modificado código
0 0
1 100
2 101
3 1100
4 1101
5 1110
6 1111
[0102] A modo de ejemplo, se va a suponer que Cmi representa un índice de palabra de código de un modo más probable y Cm2 representa un índice de palabra de código de otro modo más probable, donde Cmi tiene un valor de índice de palabra de código inferior a Cm2. Como se ha analizado anteriormente, Cmi y Cm2 se determinan basándose en los valores de índice de palabra de código al contrario que los valores de índice de modo. Por lo tanto, Cmi puede no corresponderse necesariamente con el primer modo más probable, y Cm2 puede no corresponderse necesariamente con el segundo modo más probable. En el ejemplo de la tabla 5, por ejemplo, el modo 3 (diagonal inferior/derecho) es el primer modo más probable, ya que tiene el índice de modo más bajo de los modos más probables, y el modo 6 es el segundo modo más probable. El segundo modo más probable, sin embargo, tiene un índice de palabra de código correspondiente menor que el primer modo más probable. Por lo tanto, en el ejemplo de la tabla 5, Cmi corresponde al índice de palabra de código del segundo modo más probable, y Cm2 corresponde al índice de palabra de código del primer modo más probable. En la siguiente descripción, se supone que Cmi es menor que Cm2.
[0103] Si el modo seleccionado es uno de los modos más probables, se usa un primer bit (por ejemplo, «0») para señalizar que el modo es uno de los dos modos más probables. Si el modo es uno de los dos modos más probables, entonces se usa un segundo bit para señalizar cuál de los dos modos más probables corresponde al modo seleccionado. Por lo tanto, los dos modos más probables pueden señalizarse con las secuencias de bits iniciales de «00» y «01», respectivamente. Si se envía un primer bit distinto de «0» (es decir, un «1»), entonces el modo seleccionado no es uno de los dos modos más probables, y el modo seleccionado se envía como una palabra de código correspondiente a un índice de palabra de código. En lugar de enviar una palabra de código que corresponde directamente a un índice de palabra de código para el modo seleccionado, sin embargo, el codificador 20 de vídeo puede lograr un ahorro de bits enviando una palabra de código correspondiente a un índice de palabra de código modificado. El descodificador 30 de vídeo puede recibir la palabra de código correspondiente al índice de palabra de código modificado y a continuación determinar el índice de palabra de código correspondiente al modo de intrapredicción seleccionado.
[0104] El codificador 20 de vídeo puede determinar el índice de palabra de código del modo seleccionado (C) y correlacionar el índice de modo con un índice de modo modificado (Cmod). Si C > Cm2, entonces Cmod = C - 2. De lo contrario, si C > Cmi, entonces Cmod = C - 1. De lo contrario, Cmod = C. El descodificador 30 de vídeo recibe el índice de modo de intrapredicción modificado (Cmod) y puede primero compararlo con Cmi. Si Cmod < Cmi, entonces el índice de modo (C) es igual a Cmod. Si Cmod no es menor que Cmi, entonces Cmod + i se puede comparar con Cm2. Si Cmod + 1 < Cm2, entonces el índice de modo es igual a Cmod + 1. De lo contrario, el índice de modo es igual a Cmod + 2.
[0105] A modo de ejemplo con respecto a los ejemplos de las tablas 5 y 6, se va a suponer que para un bloque actual, que tiene un contexto que indica los modos más probables vertical izquierdo (índice de modo 6) y diagonal inferior/derecho (índice de modo 3), el modo seleccionado es horizontal-inferior (índice de modo 8). Los índices de palabra de código Cmi y Cm2 para los modos más probables son 2 y 5, en este ejemplo, mientras que el índice de modo para el modo seleccionado (según la tabla 5) es 8. De acuerdo con la tabla 5, los índices de modo 3, 6 y 8 se correlacionan con los índices de palabra de código 5, 2 y 8, respectivamente. En este ejemplo, debido a que el índice de palabra de código para el modo seleccionado (es decir, índice de palabra de código 8) es mayor que los índices de palabra de código para los dos modos más probables (es decir índices de palabra de código 5 y 2), el índice de palabra de código es igual a Cmod + 2, donde Cmod es igual al índice de palabra de código modificado correspondiente a una palabra de código de la tabla 6. Por lo tanto, si el índice de palabra de código del modo seleccionado es igual a 8, entonces Cmod = 6. Por lo tanto, el codificador 20 de vídeo usaría la palabra de código 1111 para representar el modo seleccionado, en este ejemplo. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría la palabra de código 1111 y determinaría que el valor de Cmod es 6. Dado que 6 no es menor que 2 (es decir, Cmod > Cmi) y 6 más 1 no es menor que 5 (es decir, Cmod + 1 > Cm2) en este ejemplo, el descodificador 30 de vídeo recuperaría el modo de la tabla 5 que tiene el índice de modo Cmod + 2, que es 8, correspondiente a horizontal-inferior, en este ejemplo.
[0106] En otro ejemplo, de nuevo con respecto a los ejemplos de las tablas 5 y 6, se supone que para el bloque actual, el modo seleccionado es vertical (índice de modo 1 e índice de palabra de código 0). De nuevo, los índices Cmi y Cm2 para los modos más probables son 5 y 2. En este ejemplo, dado que el índice de palabra de código para el modo seleccionado es menor que los índices de palabra de código para los dos modos más probables (es decir, C < Cmi), el índice de palabra de código modificado Cmod es igual al índice de palabra de código. Por lo tanto, el codificador 20 de vídeo usaría la palabra de código 0 para representar el modo seleccionado, en este ejemplo. La palabra de código 0 sigue a un bit o una serie de bits inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit o serie de bits inicial y la palabra de código 0 y determinaría que el valor de Cmod es 0. Dado que 0 es menor que 5 y 2 (es decir, Cmod < Cmi) en este ejemplo, el descodificador 30 de vídeo recuperaría el modo de la tabla 5 que tiene un índice de modo C igual a Cmod, que es 0, correspondiente a vertical, en este ejemplo.
[0107] En otro ejemplo más con respecto a los ejemplos de las tablas 5 y 6, se va a suponer que para un bloque actual, el modo seleccionado es horizontal (índice de modo 2 e índice de palabra de código 4). Los índices Cmi y Cm2 para los modos más probables son 2 y 5, en este ejemplo. En este ejemplo, dado que el índice de palabra de código para el modo seleccionado es mayor o igual que Cmi pero menor que Cm2, el índice de palabra de código es igual a Cmod + 1, donde Cmod es el índice de palabra de código modificado. Por lo tanto, si el índice de palabra de código es 4, entonces Cmod = 3. Por lo tanto, el codificador 20 de vídeo usaría la palabra de código 1100 para representar el modo seleccionado, en este ejemplo. La palabra de código 1100 sigue a un bit o una serie de bits inicial que indica que el modo seleccionado no es un modo más probable. En consecuencia, el descodificador 30 de vídeo (figuras 1 y 4) recibiría el bit y la serie de bits inicial y la palabra de código 1100 y determinaría que el valor de Cmod es 3. Dado que 3 no es menor que 2, pero 3 más 1 es menor que 5 (es decir, Cmod s Cmi pero Cmod + 1 < Cm2) en este ejemplo, el descodificador 30 de vídeo recuperaría el modo de la tabla 5 que tiene el índice de modo igual a Cmod + 1, que es 4, correspondiente a horizontal.
[0108] Debe entenderse que las tablas 1-6 son meramente ejemplos de tablas de los modos más probables, índices para los modos, índices de palabra de código y palabras de código asignadas a diversos índices. En otros ejemplos, se puede determinar que otros modos de intrapredicción son el modo más probable, por ejemplo, basándose en un contexto de codificación para un determinado bloque. Por ejemplo, el modo más probable se puede determinar basándose en los modos de intrapredicción usados para codificar los bloques contiguos izquierdo y superior. Los datos 66 de configuración pueden incluir una pluralidad de tablas diferentes asociadas con modos de intrapredicción diferentes identificados como el modo más probable, así como un número diferente de modos más probables identificados, en general similares a los ejemplos de las tablas 1,3 y 5. Del mismo modo, los datos 66 de configuración pueden incluir una pluralidad de tablas de correlación de palabras de código, tales como las tablas 2, 4 y 6, que correlacionan los índices de modo de intrapredicción restantes con palabras de código, de modo que la probabilidad de uso de un modo particular es inversamente proporcional a la longitud de su palabra de código. Como se ha descrito anteriormente, los modos más probables se señalizan usando un bit o una serie de bits inicial. Dicho bit o serie de bits inicial también puede ser dependiente del contexto. Por ejemplo, se puede usar una serie de bits diferente para señalizar los modos más probables dependiendo de qué modos de intrapredicción se identifican como el modo más probable, así como de cuántos modos más probables se identifican. Los modos más probables y las tablas de codificación para cualquier caso determinado también se pueden definir basándose en otros tipos de contextos, en lugar de o además del modo de intrapredicción de bloque contiguo usado en ese caso. De esta forma, se puede lograr un ahorro de bits, debido a que los modos de codificación de probabilidad relativamente mayor se correlacionan con palabras de código relativamente más cortas.
[0109] En algunas implementaciones, la correlación de modos con índices de palabras de código, como en la tabla 5, puede ser adaptativa, de modo que para contextos particulares, se hace un seguimiento del número de veces que se selecciona cada modo y, basándose en el número de selecciones, los modos que aparecen con mayor frecuencia se asignan a índices de palabra de código relativamente inferiores que tienen palabras de código correspondientes relativamente más cortas, mientras que los modos que aparecen con menor frecuencia se asignan a índices de palabra de código relativamente superiores que tienen palabras de código correspondientes relativamente más largas.
[0110] Los ejemplos de las tablas 1,2, 3, 4 y 5 se proporcionan con respecto a los nueve modos de intrapredicción de H.264. Sin embargo, debe entenderse que las técnicas de esta divulgación se pueden aplicar a otras normas y técnicas de codificación, tales como la codificación de vídeo de alta eficiencia (HEVC). En algunos ejemplos, como en HEVC, el número de modos de intrapredicción disponibles puede depender del tamaño de un bloque (por ejemplo, una «unidad de codificación» o «CU» en HEVC) que se está codificando. Para cada modo de intrapredicción, se puede asignar un índice de modo basándose en la probabilidad de aparición de cada modo de intrapredicción. La figura 3 muestra un ejemplo de modos de intrapredicción e índices de modo correspondientes que pueden usarse con HEVC. Las flechas de la figura 3 representan una dirección de predicción y los números representan un índice de modo. La tabla 7 siguiente proporciona una correspondencia entre un tamaño de CU y varios modos de intrapredicción disponibles para codificar las CU de ese tamaño. Como se puede ver en la tabla 7, las CU 8x8, 16x16 y 32x32 pueden usar los 35 modos de intrapredicción mostrados en la figura 3, mientras que las CU 4x4 y 64x64 usan un conjunto más pequeño de modos de intrapredicción.
Tabla 7
Tamaño de la Número de modos de
unidad de intrapredicción
codificación
4x4 18
8x8 35
16x16 35
32x32 35
64x64 4
[0111] En los ejemplos donde el número de modos de intrapredicción varía basándose en el tamaño de bloque, los datos 66 de configuración pueden incluir diferentes tablas para diferentes tamaños de bloques. Por consiguiente, un contexto para codificar una indicación de un modo de intrapredicción usado para codificar un bloque puede incluir un tamaño del bloque, así como unos modos de codificación usadospara codificar unos bloques contiguos. La unidad 56 de codificación de entropía puede seleccionar la tabla de índices de modo y la tabla de correlación de palabras de código usada para seleccionar una palabra de código representativa del modo de intrapredicción seleccionado usado para codificar el bloque basándose en el contexto para el bloque. Además, las tablas de índices de modo para bloques de un tamaño particular pueden tener números de entradas iguales al número de modos de intrapredicción para bloques de ese tamaño. Por lo tanto, las tablas de índices de modo para bloques de tamaño 4x4 pueden tener 18 entradas, las tablas de índices de modo para bloques de tamaño 8x8, 16x16 y 32x32 pueden tener 35 entradas, y las tablas de índices de modo para bloques de tamaño 64x64 pueden tener 4 entradas. Otros tamaños de bloques, por ejemplo, 128x128, también pueden tener un número determinado de modos de intrapredicción disponibles.
[0112] Los modos de intrapredicción disponibles para bloques de tamaño 8x8, 16x16 y 32x32 pueden ser iguales y, por lo tanto, se pueden usar las mismas tablas de índices de modo para bloques de tamaños 8x8, 16x16 y 32x32. Sin embargo, aunque los mismos modos pueden ser posibles para bloques de estos tamaños, la probabilidad de usar un modo particular para codificar un bloque puede variar sobre la base del tamaño del bloque. En consecuencia, la unidad 56 de codificación de entropía puede determinar una tabla de correlación de palabras de código para una tabla de índices de modo particular basándose en el tamaño del bloque para el cual se debe señalizar un modo de intrapredicción, en algunos ejemplos.
[0113] A modo de ejemplo, la tabla 2 anterior es simplemente una tabla de ejemplo para representar diversos modos de codificación. Sin embargo, debe entenderse que pueden usarse otros tipos de códigos de longitud variable, tales como palabras de código unarias, en otros ejemplos. Cualquier conjunto de palabras de código se puede usar para la tabla de correlación de palabras de código (es decir, la tabla de VLC o la tabla de índices de modo de intrapredicción modificados), siempre que cada una de las palabras de código sea descodificable de manera única (por ejemplo, que ninguna de las palabras de código sea un prefijo de otra palabra de código de la misma tabla).
[0114] La pluralidad de tablas de correlación de palabras de código incluidas en los datos 66 de configuración pueden tener una estructura de palabra de código diferente cada una, donde la estructura de palabra de código se refiere en general a la longitud de las palabras de código de la tabla de correlación de palabras de código. La estructura de palabra de código para una tabla de correlación de palabras de código particular puede depender del contexto de codificación para un bloque determinado. La tabla 8 a continuación identifica cuatro ejemplos diferentes de estructuras de palabra de código (indicadas como lista VLC0, lista VLC1, lista VLC2 y lista VLC3) para tablas de correlación de palabras de código, aunque también se pueden usar estructuras adicionales. Para hacer que las listas sean más compactas, se incluyen varias x al final de muchas palabras de código. Las x pueden ser 0 o 1. Por ejemplo, 0X representa dos palabras de código (01 y 00), 0XX representa 4 palabras de código (000, 001, 010 y 011), y así sucesivamente.
Tabla 8
Figure imgf000027_0001
[0115] Como puede verse en la tabla 8, el uso de un número menor de bits para las primeras palabras de código de una tabla puede hacer que las palabras de código subsiguientes de la tabla aumenten más rápido de tamaño. Por ejemplo, en la lista VLC0, la quinta palabra de código tiene cinco bits de longitud, pero en la lista VLC1 la quinta palabra de código tiene solo 4 bits de longitud. La primera palabra de código de la lista VLC0, sin embargo, es más corta que la primera palabra de código de la lista VLC1 (un bit en lugar de dos). Por lo tanto, cuando se usa la primera palabra de código de la tabla, las palabras de código de la lista VLC0 permiten un ahorro de bits respecto de la lista VLC1, pero el uso de la quinta palabra de código de la lista VLC1 permite un ahorro de bits respecto de la lista VLC0.
[0116] Al mantener tablas de correlación de palabras de código con diferentes estructuras de palabras de código para diferentes contextos, se puede lograr un ahorro general de bits. Como se ha analizado anteriormente, un contexto para un bloque particular se puede determinar basándose en características tales como el tamaño y la forma de un bloque y en cómo se han codificado los bloques vecinos. Para diferentes contextos, las probabilidades de modos de codificación distintos del modo de intrapredicción más probable pueden tener distribuciones diferentes. Si, por ejemplo, unos pocos modos de intrapredicción tienen una alta probabilidad en relación con otros modos de intrapredicción, entonces correlacionando los pocos modos de intrapredicción probables con las primeras pocas palabras de código más cortas, el uso de una tabla de correlación de palabras de código con una estructura tal como la lista VLC0 podría dar como resultado un ahorro de bits en comparación con el uso de una tabla de correlación de palabras de código con una estructura tal como la lista VLC1. Este ahorro de bits comparativo puede tener lugar porque las primeras pocas palabras de código más cortas de la tabla de correlación de palabras de código se usan con frecuencia suficiente para que los ahorros de bits para las primeras pocas palabras de código (para la lista VLC0 con relación a la lista VLC1) excedan los bits adicionales usados para las otras palabras de código, lo que da como resultado un ahorro neto de bits para la lista VLC0 en comparación con la lista VLC1.
[0117] No obstante, si, por ejemplo, los modos de intrapredicción correlacionados con las primeras pocas palabras de código más cortas de la tabla de correlación de palabras de código no tienen una probabilidad significativamente mayor que los modos de intrapredicción correlacionados con las demás palabras de código, entonces el uso de una tabla de correlación de palabras de código con una estructura tal como la lista VLC1 podría dar como resultado un ahorro de bits en comparación con el uso de una tabla de correlación de palabras de código con una estructura de palabras de código tal como la lista VLC0. Este ahorro de bits comparativo puede tener lugar porque las palabras de código situadas más abajo en la tabla se usan con suficiente frecuencia donde el ahorro de bits para las palabras de código situadas más abajo en la tabla (para la lista VLC1 en comparación con la lista VLC0) excede los bits adicionales usadospara las primeras pocas palabras de código, dando como resultado un ahorro neto de bits para la lista VLC1 en comparación con la lista VLC0.
[0118] Después de predecir un bloque actual, por ejemplo, usando intrapredicción o interpredicción, el codificador 20 de vídeo puede formar un bloque de vídeo residual restando los datos de predicción calculados por la unidad 44 de compensación de movimiento o la unidad 46 de intrapredicción del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad 52 de transformada aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad 52 de transformada puede realizar otras transformadas, tales como las definidas por la norma H.264, que son conceptualmente similares a la DCT. También podrían usarse transformadas de wavelet, transformadas de números enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad 52 de transformada aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual, desde un dominio de valor de píxel a un dominio de transformada, tal como un dominio de frecuencia. La unidad 54 de cuantificación cuantifica los coeficientes de transformada residuales para reducir más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
[0119] Tras la cuantificación, la unidad 56 de codificación de entropía realiza la codificación de entropía de los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación de entropía puede realizar una codificación de longitud variable adaptativa según el contenido (CAVLC), una codificación aritmética binaria adaptativa según el contexto (CABAC) u otra técnica de codificación de entropía. Tras la codificación de entropía realizada por la unidad 56 de codificación de entropía, el vídeo codificado puede transmitirse a otro dispositivo o archivarse para su transmisión o recuperación posterior. En el caso de una codificación aritmética binaria adaptativa según el contexto, el contexto puede basarse en bloques contiguos y/o tamaños de bloque.
[0120] En algunos casos, la unidad 56 de codificación de entropía u otra unidad de codificador 20 de vídeo pueden estar configuradas para realizar otras funciones de codificación, además de la codificación de entropía y la codificación del modo de intrapredicción como se ha descrito anteriormente. Por ejemplo, la unidad 56 de codificación de entropía puede estar configurada para determinar los valores de patrón de bloque codificado (CBP) para los bloques y las divisiones. También, en algunos casos, la unidad 56 de codificación de entropía puede realizar una codificación de longitud de recorrido de los coeficientes en un macrobloque o una división del mismo. En particular, la unidad 56 de codificación de entropía puede aplicar una exploración en zigzag u otro patrón de exploración para explorar los coeficientes de transformada de un macrobloque o una división y codificar series de ceros para una mayor compresión. La unidad 56 de codificación de entropía también puede elaborar información de cabecera con elementos sintácticos apropiados para la transmisión en el flujo de bits de vídeo codificado.
[0121] La unidad 58 de cuantificación inversa y la unidad 60 de transformada inversa aplican la cuantificación inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio del píxel, por ejemplo, para su uso posterior como bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria 64 de tramas de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles de subentero para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción con compensación de movimiento generado por la unidad 44 de compensación de movimiento para generar un bloque de vídeo reconstruido para su almacenamiento en la memoria 64 de tramas de referencia. El bloque de vídeo reconstruido puede ser utilizado por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como bloque de referencia para intercodificar un bloque en una trama de vídeo subsiguiente.
[0122] De esta manera, el codificador 20 de vídeo representa un ejemplo de codificador de vídeo configurado para determinar uno o más modos de intrapredicción más probables para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual, seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del (de los) modo(s) de intrapredicción más probable(s) basándose en el contexto, codificar el bloque actual usando uno de los modos de intrapredicción distintos del modo de intrapredicción más probable, determinar uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción, y facilitar una palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al uno de los índices de modo de intrapredicción modificados.
[0123] La figura 4 es un diagrama de bloques que ilustra un ejemplo de descodificador 30 de vídeo, que descodifica una secuencia de vídeo codificado. En el ejemplo de la figura 4, el descodificador 30 de vídeo incluye una unidad 70 de descodificación de entropía, una unidad 72 de compensación de movimiento, una unidad 74 de intrapredicción, una unidad 76 de cuantificación inversa, una unidad 78 de transformada inversa, una memoria 82 y un sumador 80. En algunos ejemplos, el descodificador 30 de vídeo puede realizar una pasada de descodificación en general recíproca a la pasada de codificación descrita con respecto al codificador 20 de vídeo (figura 2). La unidad 72 de compensación de movimiento puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad 70 de descodificación de entropía.
[0124] La unidad 72 de compensación de movimiento puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de predicción en tramas de referencia de la memoria 82 de tramas de referencia. La unidad 74 de intrapredicción puede usar modos de intrapredicción recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques espacialmente adyacentes. En particular, el descodificador 30 de vídeo, en el ejemplo de la figura 4, incluye datos 84 de configuración. Los datos 84 de configuración son sustancialmente similares a los datos 66 de configuración de la figura 2, en la medida en que los datos 84 de configuración incluyen información que describe contextos para bloques sometidos a intrapredicción, así como una de una pluralidad de tablas de correlación de índices de intrapredicción que se va a usar para cada contexto, una de una pluralidad de tablas de índices de modo de intrapredicción modificados (o correlación de palabras de código) que se va a usar para cada contexto, y un modo de intrapredicción más probable para cada contexto.
[0125] La unidad 70 de descodificación de entropía puede recibir una palabra de código representativa de un modo de intrapredicción que se va a usar para descodificar un bloque codificado de datos de vídeo. La unidad 70 de descodificación de entropía puede determinar un contexto para el bloque codificado, por ejemplo, basándose en modos de intrapredicción para un bloque contiguo izquierdo y un bloque contiguo superior al bloque codificado y/o un tamaño para el bloque codificado. Basándose en el contexto, la unidad 70 de descodificación de entropía puede determinar uno o más modos de intrapredicción más probables que para usar a fin de descodificar el bloque, así como una tabla de índices de intrapredicción y una tabla de índices de modo de intrapredicción modificados para usar a fin de determinar el modo de intrapredicción real para usar a fin de descodificar el bloque.
[0126] Cuando se usa un único modo de intrapredicción más probable, si la palabra de código comprende un primer bit, por ejemplo, «0», entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real es el modo de intrapredicción más probable para el bloque codificado. De lo contrario, la unidad 70 de descodificación de entropía puede determinar un índice de modo de intrapredicción modificado correlacionado con la palabra de código recibida, basándose en la tabla de índices de modo de intrapredicción modificados para el contexto del bloque codificado. Se supondrá que n representa el índice de modo de intrapredicción modificado, y se supondrá que m representa el índice de modo para el modo de intrapredicción más probable. Cuando n < m, la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real para el bloque codificado tiene un índice de modo de n. En caso contrario (es decir, cuando n > m), la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real para el bloque codificado tiene un índice de modo de n+1. Usando el índice de modo, que es igual a n o n+1 como se ha descrito anteriormente, la unidad 70 de descodificación de entropía puede recuperar información que indica el modo de intrapredicción real para usar a fin de descodificar el bloque codificado y enviar una indicación del modo a la unidad 74 de intrapredicción.
[0127] Cuando se usa más de un modo de intrapredicción más probable, tal como dos modos de intrapredicción más probables, si un primer bit tiene un determinado valor, por ejemplo, «0», entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real es uno de los modos de intrapredicción más probables para el bloque codificado. En dichos casos, basándose en un segundo bit o serie de bits, la unidad 70 de descodificación de entropía puede determinar cuál de los modos de intrapredicción más probables es el modo de intrapredicción seleccionado. De lo contrario, después del primer bit, la unidad 70 de descodificación de entropía puede determinar un índice de modo de intrapredicción modificado correlacionado con la palabra de código recibida, y basándose en el índice de modo de intrapredicción modificado, determinar el modo de intrapredicción seleccionado para el bloque. Como ejemplo, se supondrá que n representa el índice de modo de intrapredicción modificado, y se supondrá que mi y m2 representan los índices de modo para los modos de intrapredicción más probables. Si n < mi, entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción seleccionado para el bloque codificado tiene un índice de modo de n. Cuando n+1 < m2 (pero n no es menor que mi), la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción seleccionado para el bloque codificado tiene un índice de modo de n+1. De lo contrario, cuando n+1 no es inferior a m2, entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción seleccionado para el bloque codificado tiene un índice de modo de n+2. Usando el índice de modo, la unidad 70 de descodificación de entropía puede recuperar información que indica el modo de intrapredicción seleccionado para usar a fin de descodificar el bloque codificado y enviar una indicación del modo a la unidad 74 de intrapredicción.
[0128] Del mismo modo, si los índices de modo de intrapredicción se correlacionan con índices de palabra de código y se está usando más de un modo más probable, si un primer bit o serie de bits tiene un determinado valor, por ejemplo, «0», entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real es uno de los modos de intrapredicción más probables para el bloque codificado. En dichos casos, basándose en un segundo bit o serie de bits, la unidad 70 de descodificación de entropía puede determinar cuál de los modos de intrapredicción más probables es el modo de intrapredicción seleccionado. De lo contrario, después del primer bit o serie de bits, la unidad 70 de descodificación de entropía puede determinar un índice de palabra de código modificado correlacionado con la palabra de código recibida, y basándose en el índice de palabra de código modificado, determinar el modo de intrapredicción seleccionado para el bloque. En un ejemplo, se supondrá que Cmod representa el índice de palabra de código modificado, y Cmi y Cm2 representan los índices de palabra de código para los modos de intrapredicción más probables. Si Cmod < Cmi, entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real seleccionado para el bloque codificado tiene un índice de palabra de código igual a Cmod. Cuando Cmod +1 < Cm2 (pero Cmod no es menor que Cmi), la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real seleccionado para el bloque codificado tiene un índice de palabra de código de Cmod +1. De lo contrario, cuando Cmod +1 no es menor que Cm2, entonces la unidad 70 de descodificación de entropía puede determinar que el modo de intrapredicción real seleccionado para el bloque codificado tiene un índice de palabra de código de Cmod +2. Usando el índice de palabra de código, la unidad 70 de descodificación de entropía puede recuperar información que indica el modo de intrapredicción real seleccionado que se va a usar para descodificar el bloque codificado y enviar una indicación del modo al módulo 74 de intrapredicción.
[0129] El módulo 74 de intrapredicción puede usar la indicación del modo de intrapredicción para realizar la intrapredicción del bloque codificado, por ejemplo, usando píxeles de bloques contiguos descodificados previamente. Para ejemplos en los que el bloque está codificado en modo de interpredicción, la unidad 72 de compensación de movimiento puede recibir información que define un vector de movimiento, a fin de recuperar datos de predicción con compensación de movimiento para el bloque codificado. En cualquier caso, la unidad 72 de compensación de movimiento o la unidad 74 de intrapredicción pueden proporcionar información que define un bloque de predicción al sumador 80.
[0130] La unidad 76 de cuantificación inversa realiza la cuantificación inversa, es decir, descuantifica, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y descodificados por la unidad 70 de descodificación de entropía. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, tal como el definido por la norma de descodificación H.264 o el realizado por el modelo de prueba de HVEc . El proceso de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QPy calculado por el codificador 20 para cada macrobloque con el fin de determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse.
[0131] La unidad 58 de transformada inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada inversa de enteros, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, a fin de generar bloques residuales en el dominio del píxel. La unidad 72 de compensación de movimiento genera bloques con compensación de movimiento, posiblemente realizando una interpolación basada en filtros de interpolación. Los identificadores para filtros de interpolación que se van a usar para la estimación de movimiento con una precisión de subpíxel pueden incluirse en los elementos sintácticos. La unidad 72 de compensación de movimiento puede usar filtros de interpolación como los usados por el codificador 20 de vídeo durante la codificación del bloque de vídeo para calcular valores interpolados para píxeles de subentero de un bloque de referencia. La unidad 72 de compensación de movimiento puede determinar los filtros de interpolación usados por el codificador 20 de vídeo de acuerdo con la información sintáctica recibida y usar los filtros de interpolación para generar bloques predictivos.
[0132] La unidad 72 de compensación de movimiento usa parte de la información sintáctica para determinar tamaños de bloques usados para codificar una trama o más de la secuencia de vídeo codificado, información de división que describe cómo está dividido cada bloque de una trama o un fragmento de la secuencia de vídeo codificada, modos que indican cómo está codificada cada división, una o más tramas de referencia (y listas de tramas de referencia) para cada bloque o división intercodificados y otra información para descodificar la secuencia de vídeo codificada.
[0133] El sumador 80 suma los bloques residuales con los bloques de predicción correspondientes generados por la unidad 72 de compensación de movimiento o por la unidad 74 de intrapredicción para formar bloques descodificados. Si se desea, también puede aplicarse un filtro de eliminación de bloques para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. Los bloques de vídeo descodificado se almacenan a continuación en la memoria 82 de tramas de referencia, que proporciona bloques de referencia para una subsiguiente compensación de movimiento y también proporciona vídeo descodificado para su presentación en un dispositivo de visualización (como el dispositivo 32 de visualización de la figura 1).
[0134] De esta manera, el descodificador 30 de vídeo de la figura 4 representa un ejemplo de un descodificador de vídeo configurado para determinar uno o más modos de intrapredicción más probables para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual, seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del (de los) modo(s) de intrapredicción más probable(s) basándose en el contexto, determinar uno de los índices de modo de intrapredicción modificados que corresponde a una palabra de código recibida usando la tabla de palabras de código, seleccionar un modo de intrapredicción distinto del modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados; y descodificar el bloque actual usando el modo de interpredicción seleccionado.
[0135] La figura 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificación de intrapredicción de un bloque de datos de vídeo. Las técnicas de la figura 5 en general pueden realizarse mediante cualquier unidad de procesamiento o procesador, ya sea implementado en hardware, software, firmware o una combinación de estos, y cuando se implementa en software o firmware, se puede proporcionar hardware correspondiente para ejecutar instrucciones para el software o firmware. A modo de ejemplo, las técnicas de la figura 5 se describen con respecto al codificador 20 de vídeo (figuras 1 y 2), aunque se debe entender que otros dispositivos pueden estar configurados para realizar técnicas similares. Además, las etapas ilustradas en la figura 5 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.
[0136] Inicialmente, el codificador 20 de vídeo puede seleccionar un modo de intrapredicción para un bloque actual de datos (100) de vídeo. Por ejemplo, la unidad 46 de intrapredicción puede calcular valores de velocidad-distorsión para diversos modos de intrapredicción usados para codificar el bloque, y a continuación seleccionar el modo de intrapredicción que presenta el mejor valor de velocidad-distorsión de los modos de intrapredicción probados. La unidad 46 de intrapredicción a continuación puede codificar el bloque usando el modo (102) de intrapredicción seleccionado. Es decir, la unidad 46 de intrapredicción puede calcular un bloque de predicción para el bloque basándose en el modo de intrapredicción seleccionado. El codificador 20 de vídeo puede calcular además una diferencia entre el bloque de predicción y el bloque original para proporcionar un bloque residual, que el codificador 20 de vídeo a continuación puede transformar y cuantificar.
[0137] El codificador 20 de vídeo puede codificar adicionalmente información representativa del modo de intrapredicción seleccionado. Es decir, la unidad 46 de intrapredicción puede enviar una indicación del modo de intrapredicción seleccionado a la unidad 56 de codificación de entropía. La unidad 56 de codificación de entropía, u otra unidad del codificador 20 de vídeo, puede determinar un contexto para el bloque (104). El contexto para el bloque puede incluir un tamaño del bloque y/o los modos de intrapredicción de bloques contiguos, tales como un bloque contiguo superior y/o un bloque contiguo izquierdo. La unidad 56 de codificación de entropía también puede seleccionar una tabla de índices de modo de intrapredicción modificados para usar a fin de codificar el indicador de modo de intrapredicción basándose en el contexto de codificación para el bloque (106). La unidad 56 de codificación de entropía puede seleccionar adicionalmente una tabla de índices de intrapredicción, en algunos ejemplos, mientras que en otros ejemplos, los índices de modo de intrapredicción pueden ser fijos. La unidad 56 de codificación de entropía puede determinar además uno o más modos de intrapredicción más probables para el bloque en el contexto del bloque (108).
[0138] La unidad 56 de codificación de entropía puede seleccionar a continuación una palabra de código para el modo de intrapredicción de la tabla de índices de modo de intrapredicción modificados basándose en el (los) modo(s) de intrapredicción más probable(s) (110). Por ejemplo, como se analiza en mayor detalle a continuación, la unidad 56 de codificación de entropía puede usar un único bit o serie de bits (por ejemplo, un único bit o dos bits) para señalizar que el modo de intrapredicción seleccionado comprende uno de los modos de intrapredicción más probables. Si el modo de intrapredicción seleccionado no es uno de los modos de intrapredicción más probables, la unidad 56 de codificación de entropía puede seleccionar una palabra de código de longitud variable para señalizar el modo de intrapredicción seleccionado. La palabra de código seleccionada puede tener una longitud que es inversamente proporcional a la probabilidad de uso del modo de intrapredicción para codificar el bloque, en el contexto determinado para el bloque. La unidad 56 de codificación de entropía a continuación puede facilitar el bloque codificado (por ejemplo, coeficientes de transformada codificados y cuantificados) y la palabra de código seleccionada al flujo de bits (112).
[0139] La figura 6A es un diagrama de flujo que ilustra un procedimiento de ejemplo para seleccionar una palabra de código indicativa de un modo de intrapredicción para un bloque codificado. De nuevo, las técnicas de la figura 6A pueden implementarse en cualquier procesador adecuado, aunque las técnicas de la figura 6A se analizan con respecto al ejemplo del codificador 20 de vídeo a modo de ejemplo. La figura 6A en general proporciona información adicional para la etapa 110 de la figura 5. Las etapas del procedimiento ilustrado en la figura 6A se pueden realizar en un orden diferente o en paralelo, y se pueden añadir etapas adicionales y se pueden omitir determinadas etapas, sin apartarse de las técnicas de esta divulgación.
[0140] El codificador 20 de vídeo puede determinar un contexto de codificación para un bloque actual (120), como se ha analizado anteriormente. Asimismo, el codificador 20 de vídeo puede seleccionar una tabla de índices de modo de intrapredicción modificados basándose en un contexto de codificación para el bloque (122A). Los datos de configuración del codificador 20 de vídeo pueden proporcionar una indicación de la tabla de índices de modo de intrapredicción modificados, y en algunos ejemplos, una tabla de índices de modo de intrapredicción, para el contexto del bloque. Además, el codificador 20 de vídeo puede determinar un modo de intrapredicción más probable para usar a fin de codificar el bloque basándose en el contexto de codificación para el bloque (124A). De nuevo, los datos de configuración del codificador 20 de vídeo pueden proporcionar una indicación del modo de intrapredicción más probable para el contexto del bloque.
[0141] Como se ha analizado anteriormente, el codificador 20 de vídeo puede seleccionar un modo de intrapredicción para el bloque, para usar a fin de codificar realmente el bloque (126A). El codificador 20 de vídeo puede determinar si el modo de intrapredicción seleccionado es el mismo que el modo de intrapredicción más probable para el bloque, basándose en el contexto del bloque (128A). Si el modo seleccionado es el modo más probable (rama «SÍ» de 128A), el codificador 20 de vídeo puede, basándose en el modo más probable, codificar una indicación del modo de intrapredicción usado para codificar el bloque usando un único bit, por ejemplo, «0» o «1» (130A).
[0142] Cuando el modo seleccionado no es el modo más probable (rama «NO» de 128A), el codificador 20 de vídeo puede determinar un índice de modo para el modo de intrapredicción seleccionado (122A), por ejemplo, de una tabla de índices de modo de intrapredicción. En algunos ejemplos, los índices de modo pueden ser valores globales independientemente del contexto, mientras que en otros ejemplos, los datos de configuración del codificador 20 de vídeo pueden correlacionar cada contexto con una de una pluralidad de tablas de índices de modo de intrapredicción. El codificador 20 de vídeo puede determinar además un índice de modo para el modo de intrapredicción más probable.
El codificador 20 de vídeo puede determinar a continuación si el índice de modo para el modo de intrapredicción seleccionado es menor que el índice de modo para el modo de intrapredicción más probable en el contexto para el bloque (134A).
[0143] Cuando el índice de modo para el modo de intrapredicción seleccionado es menor que el índice de modo para el modo de intrapredicción más probable (rama «SÍ» de 134A), el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente al índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede usar la palabra de código correlacionada con el índice de modo de intrapredicción modificado igual al índice de modo para el modo de intrapredicción seleccionado (136A).
[0144] Por otro lado, cuando el índice de modo para el modo de intrapredicción seleccionado es mayor que el índice de modo para el modo de intrapredicción más probable (rama «NO» de 134A), el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente a uno menos que el índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede usar la palabra de código correlacionada con el índice de modo de intrapredicción modificado igual a uno menos que el índice de modo para el modo de intrapredicción seleccionado (136A).
[0145] Debido a que una palabra de código de un solo bit se correlaciona con el modo de intrapredicción más probable, la tabla de índices de modo de intrapredicción modificados no necesita correlacionar una palabra de código adicional con el índice para el modo de intrapredicción más probable. Por lo tanto, el índice de modo de intrapredicción modificado igual al índice de modo para el modo de intrapredicción más probable se puede correlacionar con el índice de modo que es mayor en uno que el índice de modo para el modo de intrapredicción más probable, de esta manera. Por lo tanto, si hay K modos de intrapredicción disponibles para el bloque, la tabla de índices de modo de intrapredicción modificados solo necesita proporcionar códigos de longitud variable para K-1 índices de modo de intrapredicción modificados, distintos de la palabra de código de un único bit indicativa de si el modo de intrapredicción más probable se usa para codificar el bloque.
[0146] De esta manera, las técnicas de esta divulgación permiten el uso de palabras de código de longitud variable representativas de los modos de intrapredicción usados para codificar bloques de datos de vídeo. Las longitudes de las palabras de código pueden ser inversamente proporcionales a las probabilidades de los modos de intrapredicción para los bloques sobre la base de los contextos para los bloques. El número de modos de intrapredicción disponibles puede ser relativamente grande, por ejemplo, para el modelo de prueba HEVC u otros dispositivos de codificación similares. Por ejemplo, puede haber 35 modos de intrapredicción disponibles para un bloque particular. Para representar 35 modos de intrapredicción únicos usando un valor de longitud fija, el valor de longitud fija requeriría al menos seis bits. Sin embargo, debido a que las palabras de código de longitud variable pueden tener longitudes que son inversamente proporcionales a las probabilidades de los modos de intrapredicción de acuerdo con las técnicas de esta divulgación, estas técnicas pueden brindar un ahorro de bits relativo con respecto a un flujo de bits completo, suponiendo que las probabilidades están bien determinadas.
[0147] De esta manera, el procedimiento de la figura 6A representa un ejemplo de procedimiento que incluye determinar un modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual, seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del modo de intrapredicción más probable basándose en el contexto, codificar el bloque actual usando uno de los modos de intrapredicción distintos al modo de intrapredicción más probable, determinar uno de los índices de modo de intrapredicción modificados que corresponde al uno de los modos de intrapredicción, y facilitar un palabra de código de la tabla seleccionada de palabras de código, en el que la palabra de código corresponde al uno de los índices de modo de intrapredicción modificados.
[0148] La figura 6B es un diagrama de flujo que ilustra un procedimiento de ejemplo para seleccionar una palabra de código indicativa de un modo de intrapredicción para un bloque codificado. De nuevo, las técnicas de la figura 6B pueden implementarse en cualquier procesador adecuado, aunque las técnicas de la figura 6B se analizan con respecto al ejemplo de codificador 20 de vídeo a modo de ejemplo. La figura 6B en general proporciona detalles adicionales para la etapa 110 de la figura 5, para casos donde se usan dos modos más probables. Las etapas del procedimiento ilustrado en la figura 6B se pueden realizar en un orden diferente o en paralelo, y se pueden añadir etapas adicionales y se pueden omitir determinadas etapas, sin apartarse de las técnicas de esta divulgación.
[0149] El codificador 20 de vídeo puede determinar un contexto de codificación para un bloque actual (120B), como se ha analizado anteriormente. Asimismo, el codificador 20 de vídeo puede seleccionar una tabla de índices de modo de intrapredicción modificados basándose en un contexto de codificación para el bloque (122BA). Los datos de configuración del codificador 20 de vídeo pueden proporcionar una indicación de la tabla de índices de modo de intrapredicción modificados, y en algunos ejemplos, una tabla de índices de modo de intrapredicción, para el contexto del bloque. Además, el codificador 20 de vídeo puede determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para usar a fin de codificar el bloque basándose en el contexto de codificación para el bloque (124B). De nuevo, los datos de configuración del codificador 20 de vídeo pueden proporcionar una indicación de los modos de intrapredicción más probables para el contexto del bloque.
[0150] Como se ha analizado anteriormente, el codificador 20 de vídeo puede seleccionar un modo de intrapredicción para el bloque, para usar a fin de codificar realmente el bloque (126B). El codificador 20 de vídeo puede determinar si el modo de intrapredicción seleccionado es el mismo que uno de los modos de intrapredicción más probables para el bloque, basándose en el contexto del bloque (128B). Si el modo seleccionado es un modo más probable (rama «SÍ» de 128B), entonces el codificador 20 de vídeo puede codificar, basándose en los modos más probables, una indicación del modo de intrapredicción usado para codificar el bloque usando una serie inicial de bits, tales como dos bits que incluyen un primer bit para indicar que el modo real es uno de los modos más probables y un segundo bit para indicar cuál de los modos más probables es el modo real (130B).
[0151] Cuando el modo seleccionado no es uno de los modos más probables (rama «NO» de 128B), el codificador 20 de vídeo puede determinar un índice de modo para el modo de intrapredicción seleccionado (122B), por ejemplo, de una tabla de índices de modo de intrapredicción. En algunos ejemplos, los índices de modo pueden ser valores globales independientemente del contexto, mientras que en otros ejemplos, los datos de configuración del codificador 20 de vídeo pueden correlacionar cada contexto con una de una pluralidad de tablas de índices de modo de intrapredicción. El codificador 20 de vídeo puede determinar además los índices de modo para los modos de intrapredicción más probables. El codificador 20 de vídeo puede determinar a continuación si el índice de modo para el modo de intrapredicción seleccionado es menor que los índices de modo para el primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable en el contexto para el bloque (134B).
[0152] Cuando el índice de modo para el modo de intrapredicciónseleccionado es menor que los índices de modo para los dos modos de intrapredicción más probables (rama «SÍ» de 134B), el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente al índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede usar la palabra de código correlacionada con el índice de modo de intrapredicción modificado igual al índice de modo para el modo de intrapredicción seleccionado (136B).
[0153] Por otro lado, cuando el índice de modo para el modo de intrapredicción seleccionado no es menor que los índices de modo para los dos modos de intrapredicción más probables (rama «NO» de 134B), el codificador 20 de vídeo puede determinar a continuación si el índice de modo para el modo de intrapredicción seleccionado es mayor o igual que los índices de modo para el primer modo de intrapredicción más probable y el segundo modo de intrapredicción más probable en el contexto para el bloque (138B). Cuando el índice de modo para el modo de intrapredicción seleccionado es mayor o igual que los índices de modo para los dos modos de intrapredicción más probables (rama «SÍ» de 138B), el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente al índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente a dos menos que el índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede usar la palabra de código correlacionada con el índice de modo de intrapredicción modificado igual dos menos que el índice de modo para el modo de intrapredicción seleccionado (140B).
[0154] Cuando el índice de modo para el modo de intrapredicción seleccionado no es menor que los índices de modo para los dos modos de intrapredicción más probables (rama «NO» de 134B), y cuando el índice de modo para el modo de intrapredicción seleccionado no es igual o mayor que los índices de modo para los dos modos de intrapredicción más probables (rama «NO» de 138B), entonces el índice de modo para el modo de intrapredicción seleccionado es mayor o igual que el índice de modo para el primer modo de intrapredicción más probable pero menor que el índice de modo para el segundo modo de intrapredicción más probable (rama «NO» de 138B). Cuando el índice de modo para el modo de intrapredicción seleccionado es mayor o igual que el índice de modo para el primer modo de intrapredicción más probable pero menor que el índice de modo para el segundo modo de intrapredicción más probable, el codificador 20 de vídeo puede determinar una palabra de código de la tabla de índices de modo de intrapredicción modificados para el contexto del bloque correspondiente al índice de modo para el modo de intrapredicción seleccionado. Más particularmente, el codificador 20 de vídeo puede usar la palabra de código correlacionada con el índice de modo de intrapredicción modificado igual a uno menos que el índice de modo para el modo de intrapredicción seleccionado (140B).
[0155] Debido a que un primer bit y un segundo bit se usan para señalizar los modos más probables de la manera descrita anteriormente, la tabla de índices de modo de intrapredicción modificados no necesita correlacionar palabras de código adicionales con el índice para los modos de intrapredicción más probables. Por lo tanto, si hay K modos de intrapredicción disponibles para el bloque, la tabla de índices de modo de intrapredicción modificados solo necesita proporcionar códigos de longitud variable para K-2 índices de modo de intrapredicción modificados.
[0156] De esta manera, las técnicas de esta divulgación permiten el uso de palabras de código de longitud variable representativas de los modos de intrapredicción usados para codificar bloques de datos de vídeo. Las longitudes de las palabras de código pueden ser inversamente proporcionales a las probabilidades de los modos de intrapredicción para los bloques sobre la base de los contextos para los bloques. El número de modos de intrapredicción disponibles puede ser relativamente grande, por ejemplo, para el modelo de prueba HEVC u otros dispositivos de codificación similares. Por ejemplo, puede haber 35 modos de intrapredicción disponibles para un bloque particular. Para representar 35 modos de intrapredicción únicos usando un valor de longitud fija, el valor de longitud fija requeriría al menos seis bits. Sin embargo, debido a que las palabras de código de longitud variable pueden tener longitudes que son inversamente proporcionales a las probabilidades de los modos de intrapredicción de acuerdo con las técnicas de esta divulgación, estas técnicas pueden brindar un ahorro de bits relativo con respecto a un flujo de datos completo, suponiendo que las probabilidades están bien determinadas.
[0157] La figura 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificación de intrapredicción de un bloque de datos de vídeo. Las técnicas de la figura 7 en general pueden realizarse mediante cualquier unidad de procesamiento o procesador, ya sea implementado en hardware, software, firmware o una combinación de estos, y cuando se implementa en software o firmware, se puede proporcionar hardware correspondiente para ejecutar instrucciones para el software o firmware. A modo de ejemplo, las técnicas de la figura 7 se describen con respecto al descodificador 30 de vídeo (figuras 1 y 4), 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.
[0158] El descodificador 30 de vídeo puede recibir una palabra de código para un bloque codificado en modo de intrapredicción (150). La palabra de código puede representar, en general, el modo de intrapredicción usado para codificar el bloque, e igualmente, el modo de intrapredicción que se va a usar para descodificar el bloque. El descodificador 30 de vídeo puede determinar un contexto de codificación para el bloque de una manera similar a la del codificador 20 de vídeo (152), por ejemplo, basándose en un tamaño del bloque y/o los modos de intrapredicción de los bloques contiguos, tales como un bloque contiguo superior y/o un bloque contiguo izquierdo.
[0159] El descodificador 30 de vídeo puede seleccionar además una tabla de índices de modo de intrapredicción modificados para el bloque basándose en el contexto de codificación determinado para el bloque (154). El descodificador 30 de vídeo también puede, en algunos ejemplos, determinar una tabla de índices de modo de intrapredicción basándose en el contexto, mientras que, en otros ejemplos, los índices de modo de intrapredicción pueden ser fijos y aplicarse a todos los contextos globalmente. El descodificador 30 de vídeo puede determinar además uno o más modos de intrapredicción más probables para el contexto del bloque (156).
[0160] El descodificador 30 de vídeo puede determinar a continuación un modo de intrapredicción real para usar a fin de descodificar el bloque usando la tabla de palabras de código seleccionada, el modo o los modos de intrapredicción más probables y la palabra de código recibida (158). Por ejemplo, si la palabra de código comprende un único bit o serie de bits que indican si el modo seleccionado es el modo más probable, entonces el descodificador 30 de vídeo puede usar el único bit o serie de bits para determinar si el (los) modo(s) de intrapredicción más probable(s) se va(n) a usar para descodificar el bloque. Si se determina que el modo seleccionado no es un modo más probable, entonces el descodificador 30 de vídeo puede determinar un índice de modo de intrapredicción modificado basado en la palabra de código, usando la tabla de índices de modo de intrapredicción modificados, y basándose en el índice de modo de intrapredicción modificado, el descodificador 30 de vídeo puede determinar el modo de intrapredicción usado para codificar el bloque.
[0161] El descodificador 30 de vídeo puede usar el modo de intrapredicción determinado para descodificar el bloque (160). Por ejemplo, el descodificador 30 de vídeo puede calcular un bloque de predicción para el bloque usando el modo de intrapredicción determinado. El descodificador 30 de vídeo puede además recibir coeficientes de transformada codificados y cuantificados, que el descodificador 30 de vídeo puede descodificar, someter a cuantificación inversa y someter a transformada inversa, para reconstruir un bloque residual para el bloque. El descodificador 30 de vídeo puede añadir a continuación el bloque de predicción y el bloque residual para formar un bloque descodificado. El descodificador 30 de vídeo puede facilitar el bloque descodificado (162), que puede incluir uno o ambos de enviar el bloque de vídeo descodificado a un dispositivo de visualización para visualizarlo (por ejemplo, a través de una memoria intermedia de tramas), y almacenar una copia del bloque descodificado en una memoria intermedia de tramas de referencia para su uso como bloque de referencia cuando se descodifican bloques subsiguientes de datos de vídeo, por ejemplo, en tramas o fragmentos temporalmente separados.
[0162] La figura 8A es un diagrama de flujo que ilustra un procedimiento de ejemplo para determinar un modo de intrapredicción para un bloque usando una palabra de código recibida indicativa del modo de intrapredicción para un bloque codificado. De nuevo, las técnicas de la figura 8A puede implementarse en cualquier procesador adecuado, aunque las técnicas de la figura 8A se analizan con respecto al ejemplo de descodificador 30 de vídeo a modo de ejemplo y explicación. La figura 8A en general proporciona información adicional para la etapa 160 de la figura 7. Las etapas del procedimiento ilustrado en la figura 8a se pueden realizar en un orden diferente o en paralelo, y se pueden añadir etapas adicionales y se pueden omitir determinadas etapas, sin apartarse de las técnicas de esta divulgación.
[0163] El descodificador 30 de vídeo puede recibir una palabra de código para un bloque intracodificado (170A). Como se ha analizado anteriormente, el descodificador 30 de vídeo puede determinar un contexto de codificación para el bloque (172A), por ejemplo, basándose en un tamaño del bloque y/o unos modos de codificación de intrapredicción de unos bloques contiguos. Basándose en el contexto determinado, el descodificador 30 de vídeo puede seleccionar una tabla de índices de modo de intrapredicción modificados para el bloque (174A), y determinar un modo de intrapredicción más probable para el bloque (176A). En algunos ejemplos, el descodificador 30 de vídeo puede seleccionar además una tabla de índices de modo de intrapredicción para el bloque basándose en el contexto determinado.
[0164] El descodificador 30 de vídeo puede determinar si un primer bit de la palabra de código indica que el modo de intrapredicción seleccionado es el modo más probable. Si el modo de intrapredicción seleccionado es el modo más probable (rama «SÍ» de 178A), el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción más probable (180A). Por otra parte, si el modo de intrapredicción seleccionado es un modo de intrapredicción distinto del modo más probable (rama «NO» de 178A), entonces el descodificador 30 de vídeo puede determinar un índice de modo de intrapredicción modificado (MIPM) basándose en la palabra de código de la tabla de índices de modo de intrapredicción modificados seleccionada (182A).
[0165] El descodificador 30 de vídeo puede a continuación determinar si el índice de modo de intrapredicción modificado es menor que el índice de modo para el modo de intrapredicción más probable para el contexto del bloque (184A). Si el índice de modo de intrapredicción modificado es menor que el índice de modo para el modo de intrapredicción más probable (rama «SÍ» de 184A), el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción que tiene un índice de modo que es igual al índice de modo de intrapredicción modificado (186A). Por otro lado, si el índice de modo de intrapredicción modificado es mayor o igual que el índice de modo para el modo de intrapredicción más probable (rama «No » de 184A), el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción que tiene un índice de modo que es igual a uno mayor que el índice de modo de intrapredicción modificado (188A).
[0166] De esta manera, la figura 8A representa un ejemplo de procedimiento que incluye determinar un modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual, seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción modificados que corresponden a modos de intrapredicción distintos del modo de intrapredicción más probable sobre la base del contexto, determinar uno de los índices de modo de intrapredicción modificados que corresponde a una palabra de código recibida usando la tabla de palabras de código, seleccionar un modo de intrapredicción distinto del modo de intrapredicción más probable para usar a fin de descodificar el bloque codificado, en el que el modo de intrapredicción seleccionado corresponde al uno determinado de los índices de modo de intrapredicción modificados, y descodificar el bloque actual usando el modo de intrapredicción seleccionado.
[0167] La figura 8B es un diagrama de flujo que ilustra un procedimiento de ejemplo para determinar un modo de intrapredicción para un bloque usando una palabra de código recibida indicativa del modo de intrapredicción para un bloque codificado. De nuevo, las técnicas de la figura 8B puede implementarse en cualquier procesador adecuado, aunque las técnicas de la figura 8B se analizan con respecto al ejemplo de descodificador 30 de vídeo a modo de ejemplo y explicación. La figura 8B en general proporciona detalles adicionales para la etapa 160 de la figura 7, en los casos donde se usa más de un modo más probable. Las etapas del procedimiento ilustrado en la figura 8B se pueden realizar en un orden diferente o en paralelo, y se pueden añadir etapas adicionales y se pueden omitir determinadas etapas, sin apartarse de las técnicas de esta divulgación.
[0168] El descodificador de vídeo 30 puede recibir una palabra de código para un bloque intracodificado (170B). Como se ha analizado anteriormente, el descodificador 30 de vídeo puede determinar un contexto de codificación para el bloque (172B), por ejemplo, basándose en un tamaño del bloque y/o unos modos de codificación de intrapredicción de unos bloques contiguos. Basándose en el contexto determinado, el descodificador 30 de vídeo puede seleccionar una tabla de índices de modo de intrapredicción modificados para el bloque (174B), y determinar unos modos de intrapredicción más probables para el bloque (176B). En algunos ejemplos, el descodificador 30 de vídeo puede seleccionar además una tabla de índices de modo de intrapredicción para el bloque basándose en el contexto determinado.
[0169] El descodificador 30 de vídeo puede determinar si un primer bit o serie de bits de la palabra de código indican que el modo de intrapredicción seleccionado es uno de los modos más probables. Si el modo seleccionado es uno de los modos más probables (rama «Sí» de 178B), entonces el descodificador 30 de vídeo puede descodificar el bloque usando los modos de intrapredicción más probables (180B). El descodificador 30 de vídeo puede, por ejemplo, recibir un segundo bit o serie de bits para indicar cuál de los modos más probables es el modo seleccionado. Por otro lado, si el primer bit o serie de bits indica que el modo seleccionado no es uno de los modos más probables (rama «NO» de 178B), el descodificador 30 de vídeo puede determinar un índice de modo de intrapredicción modificado (MIPM) basándose en la palabra de código de la tabla de índices de modo de intrapredicción modificados seleccionada (182B).
[0170] El descodificador 30 de vídeo puede determinar a continuación si el índice de modo de intrapredicción modificado es menor que el índice de modo para los primeros modos de intrapredicción más probables para el contexto del bloque (184B). Como se ha explicado anteriormente, se supone que el índice de modo para el primer modo más probable es menor que el índice de modo para el segundo modo más probable. Por lo tanto, si el índice de modo de intrapredicción modificado es menor que el índice de modo para el primer modo de intrapredicción más probable, también es menor que el índice de modo para el segundo modo de intrapredicción más probable. Si el índice de modo de intrapredicción modificado es menor que el índice de modo para el primer modo de intrapredicción más probable (rama «SÍ» de 184B), entonces el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción que tiene un índice de modo que es igual al índice de modo de intrapredicción modificado (186B). Si el índice de modo de intrapredicción modificado no es menor que el índice de modo para el primer modo de intrapredicción más probable (rama «NO» de 184B), entonces el descodificador 30 de vídeo puede determinar si el índice de modo de intrapredicción modificado más uno es menor que el índice de modo para el segundo modo de intrapredicción más probable para el contexto del bloque (188B). Si el índice de modo de intrapredicción modificado más uno es menor que el índice de modo para el segundo modo de intrapredicción más probable para el contexto del bloque (rama «SÍ» de 188B), entonces el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción que tiene un índice de modo que es igual a uno mayor que el índice de modo de intrapredicción modificado (190B).
[0171] Si el índice de modo de intrapredicción modificado no es menor que el índice de modo para el segundo modo de intrapredicción más probable (rama «NO» de 188B), entonces el descodificador 30 de vídeo puede descodificar el bloque usando el modo de intrapredicción que tiene un índice de modo que es igual a dos mayor que el índice de modo de intrapredicción modificado (192B).
[0172] Aunque el procedimiento de las figuras 5, 6A, 6B, 7, 8A y 8B se han mostrado con respecto a la correlación de índices de modo de intrapredicción modificados con índices de modo, se debe entender que las técnicas subyacentes de los procedimientos también se pueden usar para correlacionar índices de palabra de código modificados con índices de palabra de código, y viceversa, de la manera descrita anteriormente en relación con los ejemplos de las tablas 5 y 6.
[0173] La figura 9 es un diagrama conceptual que ilustra un conjunto de ejemplo de datos 250 de configuración, que indica las relaciones entre una tabla 200 de índices de modo de intrapredicción, una tabla 210 de índices de modo de intrapredicción modificados, y datos 220 de contexto. Los datos 250 de configuración pueden corresponder en general a datos 66 de configuración (figura 2) o datos 84 de configuración (figura 4). Además, los datos de configuración que describen contextos, tablas y modos de intrapredicción más probables deben ser los mismos tanto en el codificador como en un descodificador para un flujo de bits dado.
[0174] En el ejemplo de la figura 9, la tabla 200 de índices de modo de intrapredicción incluye un conjunto de modos 2021-202k de intrapredicción (modos 202 de intrapredicción) y los índices 2041-204k correspondientes. Aunque solo se ilustra una tabla 200 de índices de modo de intrapredicción a modo de explicación y ejemplo, se debe entender que los datos 250 de configuración pueden incluir una pluralidad de tablas de índices de modo de intrapredicción similares a la tabla 200 de índices de modo de intrapredicción. No es necesario que todas las tablas de índices de modo de intrapredicción tengan el mismo tamaño, ya que el número de modos de intrapredicción disponibles para un bloque puede depender del tamaño del bloque, como se ha analizado anteriormente con respecto a la tabla 5, por ejemplo. Los índices 204 también pueden denominarse índices de modo de intrapredicción, o simplemente índices de modo.
[0175] La tabla 210 de índices de modo de intrapredicción modificados incluye los índices 2121-212k-1, así como las palabras de código 2141-214k-1. De esta manera, la tabla 210 de índices de modo de intrapredicción modificados comprende una entrada menos (K-1) que la tabla 200 de índices de modo intra (K). Como se ha analizado anteriormente, el modo de intrapredicción más probable se puede indicar usando un único bit o serie de bits, en lugar de una de las palabras de código 214. Por lo tanto, los modos de intrapredicción distintos del modo de intrapredicción más probable pueden representarse mediante una de las palabras de código 214. De nuevo, aunque solo se ilustra una tabla de índices de modo de intrapredicción modificados en el ejemplo de la figura 9, debe entenderse que los datos 250 de configuración pueden incluir una pluralidad de tablas de índices de modo de intrapredicción modificados. Además, el número de tablas de índices de modo de intrapredicción modificados no necesariamente tiene que ser igual al número de tablas de índices de modo intra. En algunos ejemplos, puede haber una relación varias a una entre las tablas de índices de modo intra y las tablas de índices de modo de intrapredicción modificados, de modo que la misma tabla de índices de modo puede corresponder a una o más tablas de índices de modo intra.
[0176] Además, los datos 250 de configuración incluyen datos 220 de contexto, que incluyen una pluralidad de entradas de contexto similares a la entrada 222A de contexto. En este ejemplo, la entrada 222A de contexto incluye el indicador 224A de modo intra más probable, el identificador 226A de tabla de índices de modo de intrapredicción, el identificador 228A de tabla de índices de modo de intrapredicción modificados y los datos 230A de contexto de bloque. Los datos 230A de contexto de bloque pueden incluir bloques que indican información a los que se aplica la entrada 222A de contexto. Por ejemplo, los datos 230A de contexto de bloque pueden incluir información que describe uno o más tamaños de bloques a los que se aplica la entrada 222A de contexto, así como modos de intrapredicción para bloques contiguos de bloques a los que se aplica la entrada 222A de contexto. En un ejemplo, los datos de contexto de bloque para una de las entradas 222 de contexto pueden indicar que la entrada de contexto corresponde a bloques que tienen 16x16 píxeles donde el bloque contiguo superior se ha codificado usando un modo de intrapredicción horizontal y donde un bloque contiguo izquierdo también se ha codificado usando el modo de intrapredicción horizontal.
[0177] El indicador 224A de modo intra más probable, en este ejemplo, indica el modo 202m de intrapredicción. En algunos ejemplos, los datos 250 de configuración pueden especificar una palabra de código de un único bit para usar a fin de representar que un bloque se ha codificado usando el modo de intrapredicción más probable. Por lo tanto, para bloques que tienen contextos correspondientes a datos 230A de contexto de bloque, el modo de intrapredicción más probable es el modo 202m de intrapredicción, en este ejemplo. Debido a que el modo 202m de intrapredicción es el modo de intrapredicción más probable para la entrada 222A de contexto, el modo 202m de intrapredicción no necesita correlacionarse con una de las palabras de código 214 de la tabla 210 de índices de modo de intrapredicción modificados, y por lo tanto, puede haber una palabra de código menos en la tabla 210 de índices de modo de intrapredicción modificados que modos 202 de intrapredicción en la tabla 200 de índices de modo intra.
[0178] Además, los índices 204 de modo que son menores que el índice 204m de modo, es decir, los índices 2041-204m-1 de modo, en este ejemplo, se correlacionan con índices 212 de modo de intrapredicción modificados del mismo valor de la tabla 210 de índices de modo de intrapredicción modificados. Por ejemplo, el índice 2042 de modo se correlaciona con el índice 2122 de modo de intrapredicción modificado, en este ejemplo, debido a que el índice 2042 de modo es menor que el índice 204m de modo. Por lo tanto, cuando el codificador 20 de vídeo codifica un bloque que tiene un contexto definido por los datos 230A de contexto de bloque usando el modo 2022 de intrapredicción, el codificador 20 de vídeo puede señalizar el modo de intrapredicción para el bloque usando la palabra de código 2142. Asimismo, cuando el descodificador 30 de vídeo recibe la palabra de código 2142 para un bloque que tiene un contexto definido por datos 230A de contexto de bloque, el descodificador 30 de vídeo puede determinar que el modo de intrapredicción usado para codificar el bloque (y asimismo, el modo de intrapredicción que se va a usar para descodificar el bloque) comprende el modo 2022 de intrapredicción. De forma similar, el modo 202m -1 de intrapredicción se correlaciona con la palabra de código 214m -1, debido a que el índice 204m -1 de modo está correlacionado con el índice 212 m-1 de modo de intrapredicción modificado.
[0179] Por otro lado, los índices 204 de modo que son mayores que el índice 204m de modo, es decir, los índices de modo 204m-1-204k , en este ejemplo, se correlacionan con índices 212 de modo de intrapredicción modificados que son menores en uno que el índice de modo. Por ejemplo, el índice 204k-1 de modo se correlaciona con el índice 212k-2 de modo de intrapredicción modificado, en este ejemplo, debido a que el índice 204k-1 de modo es mayor que el índice 204m de modo. Por lo tanto, cuando el codificador 20 de vídeo codifica un bloque que tiene un contexto definido por datos 230A de contexto de bloque usando el modo 202k-1 de intrapredicción, el codificador 20 de vídeo puede señalizar el modo de intrapredicción para el bloque usando la palabra de código 214k-2. Asimismo, cuando el descodificador 30 de vídeo recibe la palabra de código 214k -2 para un bloque que tiene un contexto definido por datos 230A de contexto de bloque, el descodificador 30 de vídeo puede determinar que el modo de intrapredicción usado para codificar el bloque (y asimismo, el modo de intrapredicción que se va a usar para descodificar el bloque) comprende el modo 202k-1 de intrapredicción. De forma similar, el modo 202m+1 de intrapredicción se correlaciona con la palabra de código 214m, debido a que el índice 204m+1 de modo está correlacionado con el índice 212m de modo de intrapredicción modificado.
[0180] De esta manera, dado un modo de intrapredicción correlacionado con el índice j de modo, el codificador 20 de vídeo puede determinar una palabra de código, para los modos de intrapredicción distintos de los modos más probables, usando la siguiente función escalón f(j), donde m representa el índice de modo para el modo de intrapredicción más probable, y la palabra de código (n) representa la palabra de código asignada al índice n de modo de intrapredicción modificado:
l r i < m
Figure imgf000037_0001
[0181] Del mismo modo, dada una palabra de código para un modo de intrapredicción seleccionado que no es un modo más probable, el descodificador 30 de vídeo puede determinar un modo de intrapredicción correlacionado con una palabra de código usando la siguiente función escalón g(n), donde m representa el índice de modo para el modo de intrapredicción más probable, y el modo j ) se refiere al modo de intracodificación correlacionado con el índice j de modo:
Figure imgf000037_0002
[0182] Cuando estos conceptos se extienden a los ejemplos donde se usan dos modos más probables, dado un modo de intracodificación correlacionado con el índice j de modo, el codificador 20 de vídeo puede determinar una palabra de código usando la siguiente función escalón f j) , donde mi representa el índice de modo para el primer modo de intrapredicción más probable, m2 representa el índice de modo para el segundo modo de intrapredicción más probable, y la palabra de código (n) representa la palabra de código asignada al índice n de modo de intrapredicción modificado:
( palabra de código (j), j < m1 y m2
f(j) H palabra de código (j - 1), m1 < j < m2 (3) palabra de código j - 2), j > m1 y m2
1
[0183] Del mismo modo, dada una palabra de código, el descodificador 30 de vídeo puede determinar un modo de intrapredicción correlacionado con una palabra de código usando la siguiente función escalón g(n), donde mi representa el índice de modo para un primer modo de intrapredicción más probable, m2 representa el índice de modo para un segundo modo de intrapredicción más probable, y modo j ) se refiere al modo de intrapredicción correlacionado con el índice j de modo:
Figure imgf000038_0001
[0184] 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, y transmitirse por, un medio legible por ordenador como una o más instrucciones o código, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento tangibles legibles por ordenador que son no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan 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.
[0185] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y a los que se pueda acceder mediante un ordenador. Además, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, están dirigidos a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, de los cuales el disco flexible habitualmente reproduce los datos magnéticamente, mientras que los demás discos reproducen los datos ópticamente con láseres. Las combinaciones de los anteriores también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0186] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término «procesador», como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados, configurados para codificar y descodificar, o incorporados en un códec combinado. Asimismo, las técnicas podrían implementarse por completo en uno o más circuitos o elementos lógicos.
[0187] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un teléfono móvil, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, incluido uno o más procesadores como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.

Claims (1)

  1. REIVINDICACIONES
    Un procedimiento de descodificación de datos de vídeo, el procedimiento que comprende:
    determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual;
    seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción; caracterizado por que: seleccionar el modo de intrapredicción como el primer o el segundo modo de intrapredicción más probable donde los datos de vídeo incluyen una palabra de código de longitud fija que indica si y cuál del primer o el segundo modo de intrapredicción más probable se selecciona para el bloque actual, y, cuándo el primer o el segundo modo de intrapredicción más probable no se selecciona para el bloque actual:
    seleccionar el modo de intrapredicción como el modo de intrapredicción que tiene un índice de modo de intrapredicción correspondiente a un índice de modo de intrapredicción modificado donde los datos de vídeo incluyen una palabra de código de longitud variable correspondiente a un índice de modo de intrapredicción modificado de la tabla seleccionada de las palabras de código, donde los índices de modo de intrapredicción se determinan a partir de los índices de modo de intrapredicción modificados de manera que,
    cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y mayor o igual al índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en dos que el índice de modo de intrapredicción modificado;
    cuando el índice de modo de intrapredicción modificado es menor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción que tiene un índice de modo de intrapredicción igual al índice de modo de intrapredicción modificado; y,
    cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en uno que el índice de modo de intrapredicción modificado; y
    descodificar (604) el bloque actual usando el modo de intrapredicción seleccionado.
    El procedimiento de la reivindicación 1, que comprende además determinar el contexto para el bloque actual basándose al menos en parte en modos de intrapredicción para al menos uno de un bloque vecino izquierdo del bloque actual y un bloque vecino superior del bloque actual.
    El procedimiento de la reivindicación 1 o 2, que comprende además determinar el contexto para el bloque actual basándose al menos en parte en un tamaño del bloque codificado.
    El procedimiento de la reivindicación 1, que comprende además:
    determinar más de dos modos de intrapredicción más probables, en el que la tabla de palabras de código excluye palabras de código correspondientes a los más de dos modos de intrapredicción.
    Un procedimiento de codificación de datos de vídeo, el procedimiento que comprende:
    determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual;
    seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción; caracterizado por que: codificar los datos de vídeo usando el primer y el segundo modo de intrapredicción más probable e incluir una palabra de código de longitud fija que indica si y cuál del primer o el segundo modo de predicción más probable se usa para codificar el bloque actual, y, cuándo el primer o el segundo modo de intrapredicción más probable no se usa para codificar el bloque actual:
    codificar los datos de vídeo usando un modo de intrapredicción distinto del primer o el segundo modo de intrapredicción más probable, e incluir una palabra de código de longitud variable correspondiente a un índice de modo de intrapredicción modificado de la tabla seleccionada de palabras de código para señalizar el modo de intrapredicción, donde el índice de modo de intrapredicción modificado se determina a partir del índice del modo de intrapredicción del modo de intrapredicción de manera que,
    cuando el índice de modo de intrapredicción es menor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción para el modo de intrapredicción;
    cuando el índice de modo de intrapredicción es mayor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción del modo de intrapredicción menos uno; y,
    cuando el índice de modo de intrapredicción es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y es mayor o igual al índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción correspondiente a un modo de intrapredicción menos dos; y,
    facilitar los datos de vídeo codificados.
    Un medio legible por ordenador que comprende instrucciones que hacen que uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 5.
    Un aparato para descodificar vídeo que comprende:
    medios (14; 30; 80; 81; 84) para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque codificado de datos de vídeo basándose en un contexto para el bloque actual;
    medios (14; 30; 80; 81; 84; 88) para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción; caracterizado por que el aparato comprende además: medios para seleccionar el modo de intrapredicción como el primer o el segundo modo de intrapredicción más probable donde los datos de vídeo incluyen una palabra de código de longitud fija que indica si y cuál del primer o el segundo modo de intrapredicción más probable se selecciona para el bloque actual, y, cuándo el primer o el segundo modo de intrapredicción más probable no se selecciona para el bloque actual:
    medios para seleccionar el modo de intrapredicción como el modo de intrapredicción que tiene un índice de modo de intrapredicción correspondiente a un índice de modo de intrapredicción modificado donde los datos de vídeo incluyen una palabra de código de longitud variable correspondiente a un índice de modo de intrapredicción modificado de la tabla seleccionada de palabras de código, donde los índices de modo de intrapredicción se determinan a partir de los índices de modo de intrapredicción modificados de manera que,
    cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y mayor o igual al índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en dos que el índice de modo de intrapredicción modificado;
    cuando el índice de modo de intrapredicción modificado es menor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción que tiene un índice de modo de intrapredicción igual al índice de modo de intrapredicción modificado; y,
    cuando el índice de modo de intrapredicción modificado más uno es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el modo de intrapredicción comprende seleccionar el modo de intrapredicción correspondiente a un índice de modo de intrapredicción que es mayor en uno que el índice de modo de intrapredicción modificado; y,
    medios (14; 30; 81; 84) para descodificar el bloque actual usando el modo de intrapredicción seleccionado.
    8. El aparato de la reivindicación 7, que comprende además:
    medios para determinar el contexto para el bloque actual basándose al menos en parte en modos de intrapredicción para al menos uno de un bloque contiguo izquierdo al bloque actual y un bloque contiguo superior al bloque actual.
    9. El aparato de cualquiera de las reivindicaciones 7 u 8, que comprende además:
    medios para determinar el contexto para el bloque actual basándose al menos en parte en un tamaño del bloque codificado.
    10. Un aparato para codificar datos de vídeo, el aparato que comprende:
    medios para determinar un primer modo de intrapredicción más probable y un segundo modo de intrapredicción más probable para un bloque actual de datos de vídeo basándose en un contexto de codificación para el bloque actual;
    medios para seleccionar una tabla de palabras de código basándose en el contexto para el bloque actual, en el que la tabla de palabras de código comprende una pluralidad de palabras de código de longitud variable correspondientes a índices de modo de intrapredicción; caracterizado por que el aparato comprende además: medios que codifican los datos de vídeo usando el primer y el segundo modo de predicción más probable e incluyen una palabra de código de longitud fija que indica si y cuál del primer o el segundo modo de intrapredicción más probable se usa para codificar el bloque actual, y, cuándo el primer o el segundo modo de predicción más probable no se usan para codificar el bloque actual:
    medios para codificar los datos de vídeo usando un modo de intrapredicción distinto del primer o el segundo modo de predicción más probable, e incluir una palabra de código de longitud variable correspondiente a un índice de modo de intrapredicción modificado de la tabla seleccionada de palabras de código para señalizar el modo de intrapredicción, donde el índice de modo de intrapredicción modificado se determina a partir del índice del modo de intrapredicción del modo de intrapredicción de manera que,
    cuando el índice de modo de intrapredicción es menor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción para el modo de intrapredicción;
    cuando el índice de modo de intrapredicción es mayor que el índice de modo de intrapredicción para el primer modo de intrapredicción más probable y menor que el índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción del modo de intrapredicción menos uno; y,
    cuando el índice de modo de intrapredicción es mayor o igual al índice de modo de intrapredicción para el primer modo de intrapredicción más probable y es mayor o igual al índice de modo de intrapredicción para el segundo modo de intrapredicción más probable, seleccionar el índice de modo de intrapredicción modificado como el índice de modo de intrapredicción correspondiente a un modo de intrapredicción menos dos; y,
    medios para facilitar los datos de vídeo codificados.
ES11770284T 2010-10-01 2011-09-30 Indicación de selección de modo de intrapredicción para codificación de vídeo Active ES2700296T3 (es)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US38916610P 2010-10-01 2010-10-01
US201061427440P 2010-12-27 2010-12-27
US201161430520P 2011-01-06 2011-01-06
US201161446402P 2011-02-24 2011-02-24
US201161448623P 2011-03-02 2011-03-02
US13/248,760 US9025661B2 (en) 2010-10-01 2011-09-29 Indicating intra-prediction mode selection for video coding
PCT/US2011/054218 WO2012044931A1 (en) 2010-10-01 2011-09-30 Indicating intra-prediction mode selection for video coding

Publications (1)

Publication Number Publication Date
ES2700296T3 true ES2700296T3 (es) 2019-02-14

Family

ID=45889816

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11770284T Active ES2700296T3 (es) 2010-10-01 2011-09-30 Indicación de selección de modo de intrapredicción para codificación de vídeo

Country Status (12)

Country Link
US (1) US9025661B2 (es)
EP (1) EP2622864B1 (es)
JP (1) JP2013539940A (es)
KR (1) KR101518149B1 (es)
CN (1) CN103262533B (es)
DK (1) DK2622864T3 (es)
ES (1) ES2700296T3 (es)
HU (1) HUE040322T2 (es)
IN (1) IN2013MN00599A (es)
PT (1) PT2622864T (es)
SI (1) SI2622864T1 (es)
WO (1) WO2012044931A1 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101739987B1 (ko) * 2010-12-28 2017-05-26 에스케이 텔레콤주식회사 주변블록의 특징벡터를 이용한 영상 부호화/복호화 방법 및 장치
WO2012092763A1 (en) * 2011-01-07 2012-07-12 Mediatek Singapore Pte. Ltd. Method and apparatus of improved intra luma prediction mode coding
CN107197309B (zh) 2011-10-07 2020-02-18 英迪股份有限公司 对视频信号进行解码的方法
CN105338347B (zh) 2011-10-24 2018-11-13 英孚布瑞智有限私人贸易公司 用于图像解码的方法和装置
KR20130049522A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
US9154796B2 (en) * 2011-11-04 2015-10-06 Qualcomm Incorporated Intra-mode video coding
KR20130049524A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
US10390016B2 (en) 2011-11-04 2019-08-20 Infobridge Pte. Ltd. Apparatus of encoding an image
US9628789B2 (en) 2011-11-18 2017-04-18 Qualcomm Incorporated Reference mode selection in intra mode coding
WO2013106986A1 (en) * 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of intra mode coding
CN103220506B (zh) * 2012-01-19 2015-11-25 华为技术有限公司 一种编解码方法和设备
US9955169B2 (en) * 2012-01-30 2018-04-24 Electronics And Telecommunications Research Institute Intra prediction mode encoding/decoding method and apparatus
WO2013115568A1 (ko) * 2012-01-30 2013-08-08 한국전자통신연구원 인트라 예측 모드 부호화/복호화 방법 및 장치
SI2869563T1 (en) * 2012-07-02 2018-08-31 Samsung Electronics Co., Ltd. The process of entropic video decoding
US9544612B2 (en) * 2012-10-04 2017-01-10 Intel Corporation Prediction parameter inheritance for 3D video coding
US10349069B2 (en) * 2012-12-11 2019-07-09 Sony Interactive Entertainment Inc. Software hardware hybrid video encoder
US9237343B2 (en) * 2012-12-13 2016-01-12 Mitsubishi Electric Research Laboratories, Inc. Perceptually coding images and videos
US10904551B2 (en) * 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US9787989B2 (en) * 2013-06-11 2017-10-10 Blackberry Limited Intra-coding mode-dependent quantization tuning
CN103813173B (zh) * 2014-03-14 2017-02-15 北方工业大学 基于bcim的3d‑hevc快速帧内预测方案
CN105554504B (zh) * 2015-12-15 2018-07-03 辽宁师范大学 基于升降序元组的索引图编码和解码方法
CN116962721A (zh) 2016-05-04 2023-10-27 微软技术许可有限责任公司 利用样本值的非相邻参考线进行帧内图片预测的方法
FR3051309A1 (fr) * 2016-05-10 2017-11-17 Bcom Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image
US10827186B2 (en) 2016-08-25 2020-11-03 Intel Corporation Method and system of video coding with context decoding and reconstruction bypass
WO2018066863A1 (ko) * 2016-10-04 2018-04-12 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US10869049B2 (en) * 2016-11-29 2020-12-15 Research & Business Foundation Sungyunwan University Image encoding/decoding method and device, and recording medium in which bitstream is stored
WO2019023200A1 (en) * 2017-07-24 2019-01-31 Arris Enterprises Llc INTRA-MODE JVET CODING
EP3643064A1 (en) * 2017-07-24 2020-04-29 ARRIS Enterprises LLC Intra mode jvet coding
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
CN112585964B (zh) * 2018-08-31 2023-06-06 寰发股份有限公司 图像和视频处理中产生mpm以进行帧内预测的方法和装置
IL314071A (en) 2018-09-07 2024-09-01 B1 Institute Image Technology Inc Method and device for image encoding/decoding
US10848763B2 (en) * 2018-11-14 2020-11-24 Tencent America LLC Method and apparatus for improved context design for prediction mode and coded block flag (CBF)
CN111010577B (zh) * 2018-12-31 2022-03-01 北京达佳互联信息技术有限公司 一种视频编码中帧内帧间联合预测的方法和设备及介质
US11172197B2 (en) * 2019-01-13 2021-11-09 Tencent America LLC Most probable mode list generation scheme
WO2021055640A1 (en) * 2019-09-17 2021-03-25 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatuses for lossless coding modes in video coding
US11962784B2 (en) * 2020-09-23 2024-04-16 Ofinno, Llc Intra prediction
KR102639490B1 (ko) * 2023-10-13 2024-02-21 조영봉 친환경 과수 살균제 조성물의 제조방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
KR970009408B1 (ko) 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
EP1649697B1 (en) 2000-12-06 2008-09-17 RealNetworks, Inc. Intra coding video data apparatuses
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
WO2003084241A2 (en) 2002-03-22 2003-10-09 Realnetworks, Inc. Context-adaptive macroblock type encoding/decoding methods and apparatuses
JP4130780B2 (ja) 2002-04-15 2008-08-06 松下電器産業株式会社 画像符号化方法および画像復号化方法
US7170937B2 (en) 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
WO2003105070A1 (en) 2002-06-01 2003-12-18 Nokia Corporation Spatial prediction based intra coding
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7194137B2 (en) 2003-05-16 2007-03-20 Cisco Technology, Inc. Variable length coding method and apparatus for video compression
KR101014660B1 (ko) * 2003-10-24 2011-02-16 삼성전자주식회사 인트라 예측 방법 및 장치
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
FR2908007A1 (fr) * 2006-10-31 2008-05-02 Thomson Licensing Sas Procede de codage d'une sequence d'images
JP2008199100A (ja) 2007-02-08 2008-08-28 Toshiba Corp 可変長符号復号装置
BRPI0818444A2 (pt) 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
NO328295B1 (no) 2007-12-20 2010-01-25 Tandberg Telecom As VLC-fremgangsmate og -innretning
KR20090095316A (ko) * 2008-03-05 2009-09-09 삼성전자주식회사 영상 인트라 예측 방법 및 장치
US8761253B2 (en) 2008-05-28 2014-06-24 Nvidia Corporation Intra prediction mode search scheme
KR101507344B1 (ko) 2009-08-21 2015-03-31 에스케이 텔레콤주식회사 가변 길이 부호를 이용한 인트라 예측모드 부호화 방법과 장치, 및 이를 위한기록 매체
US9100658B2 (en) 2009-12-17 2015-08-04 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for video coding
KR101789634B1 (ko) 2010-04-09 2017-10-25 엘지전자 주식회사 비디오 데이터 처리 방법 및 장치
US20120106640A1 (en) 2010-10-31 2012-05-03 Broadcom Corporation Decoding side intra-prediction derivation for video coding

Also Published As

Publication number Publication date
PT2622864T (pt) 2018-12-12
JP2013539940A (ja) 2013-10-28
SI2622864T1 (sl) 2019-01-31
EP2622864B1 (en) 2018-09-05
HUE040322T2 (hu) 2019-02-28
CN103262533B (zh) 2016-08-31
US20120082223A1 (en) 2012-04-05
KR101518149B1 (ko) 2015-05-06
CN103262533A (zh) 2013-08-21
EP2622864A1 (en) 2013-08-07
DK2622864T3 (da) 2019-01-02
KR20130063029A (ko) 2013-06-13
US9025661B2 (en) 2015-05-05
WO2012044931A1 (en) 2012-04-05
IN2013MN00599A (es) 2015-05-29

Similar Documents

Publication Publication Date Title
ES2700296T3 (es) Indicación de selección de modo de intrapredicción para codificación de vídeo
ES2692387T3 (es) Indicación de la selección del modo de predicción intra para codificación de vídeo usando CABAC
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2779461T3 (es) Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo
ES2656494T3 (es) Filtro intra-suavizante para codificación de vídeo
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
ES2767103T3 (es) Determinación de valores de parámetros de cuantificación (QP) y de valores QP delta para bloques codificados por paleta en la codificación de vídeo
ES2608595T3 (es) Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC
ES2963135T3 (es) Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo
ES2908241T3 (es) Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable
ES2841424T3 (es) Diseño unificado para esquemas de división de imágenes
ES2625821T3 (es) Simplificación de decisión de modo para predicción intra
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
KR101618021B1 (ko) 인트라 예측 모드들의 서브세트 및 대응하는 방향 변환들을 이용한 비디오 코딩
ES2763443T3 (es) Codificación de vídeo en modo intra
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
ES2561609T3 (es) Agrupación de elementos sintácticos codificados por circunvalación en la codificación de vídeo
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
ES2966494T3 (es) Señalización de modo intra luma