ES2874848T3 - Restricción de unidades de predicción en segmentos b a interpredicción unidireccional - Google Patents

Restricción de unidades de predicción en segmentos b a interpredicción unidireccional Download PDF

Info

Publication number
ES2874848T3
ES2874848T3 ES13706801T ES13706801T ES2874848T3 ES 2874848 T3 ES2874848 T3 ES 2874848T3 ES 13706801 T ES13706801 T ES 13706801T ES 13706801 T ES13706801 T ES 13706801T ES 2874848 T3 ES2874848 T3 ES 2874848T3
Authority
ES
Spain
Prior art keywords
list
candidate
video
fusion
video encoder
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
ES13706801T
Other languages
English (en)
Inventor
Xianglin Wang
Vadim Seregin
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2874848T3 publication Critical patent/ES2874848T3/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/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/109Selection of coding mode or of prediction mode among a plurality of temporal 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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

Un procedimiento (200) para codificar datos de vídeo, comprendiendo el procedimiento: determinar (214) si una unidad de predicción, PU, en un segmento B está restringida a una interpredicción unidireccional; generar (206) una lista de candidatos a fusión para la PU, en el que cada candidato a fusión especifica un conjunto de información de movimiento para otra PU que es espacialmente vecina de la PU o está colocalizada con la PU en una imagen diferente a la PU, en el que al menos uno de los candidatos a fusión es un candidato a fusión bidireccional; podar candidatos a fusión duplicados de la lista de candidatos a fusión para generar una lista de candidatos a fusión podada; cuando la PU está restringida a una interpredicción unidireccional, convertir un candidato a fusión bidireccional de la lista de candidatos a fusión podada en un candidato a fusión unidireccional después de generar la lista de candidatos a fusión podada; determinar un candidato seleccionado de la lista de candidatos a fusión podada; y generar un flujo de bits que incluye un elemento de sintaxis codificado que indica una posición en la lista de candidatos a fusión podada del candidato seleccionado para adoptar información de movimiento especificada por el candidato seleccionado de la lista de candidatos a fusión podada como información de movimiento de la PU.

Description

DESCRIPCIÓN
Restricción de unidades de predicción en segmentos B a interpredicción unidireccional
Campo técnico
[0001] La presente divulgación se refiere a la codificación de vídeo y, en particular, a la interpredicción en la codificación de vídeo.
Antecedentes
[0002] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, que incluyen televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio móviles o por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por el MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación avanzada de vídeo (AVC), la norma de codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan una predicción espacial (intraimagen) y/o una predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. En la codificación de vídeo basada en bloques, un segmento [slice] de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede partir en bloques de vídeo, que también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un segmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a unas muestras de referencia de bloques vecinos de la misma imagen. Los bloques de vídeo de un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a unas muestras de referencia de bloques vecinos de la misma imagen o predicción temporal con respecto a unas muestras de referencia de otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque de vídeo predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque de vídeo predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque de vídeo predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque de vídeo predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformada, dando como resultado unos coeficientes de transformada residuales que, a continuación, se pueden cuantificar. Se puede hacer un barrido de los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación entrópica para lograr aún más compresión.
[0005] El documento JCTVC-H0096 de T Ikai presentado en la 8.a reunión, San Jose, 1-10 de febrero de 2012 es una descripción de "AHG7: Controllable memory bandwidth reduction with bi-pred to uni-pred conversion". El documento JCTVC-H0221 de K Kondo et al. presentado en la 8.a reunión, San Jose, 1-10 de febrero de 2012 es una descripción de "AHG7: Modification of merge candidate derivation to reduce MC memory bandwidth". Cualquiera de los documentos JCTVC-H0096 o JCTVC-H0221 divulga un procedimiento para la generación de una lista de candidatos a fusión [merge] usando información de movimiento colocalizada espacial y temporalmente con la que se realiza una conversión de un candidato a fusión bidireccional en un candidato a fusión unidireccional durante la generación de la lista de candidatos a fusión para reducir la complejidad de compensación de movimiento para pequeñas unidades de predicción (PU), por ejemplo, PU de tamaños 4x8, 8x4 u 8x8.
BREVE EXPLICACIÓN
[0006] La invención se define en las reivindicaciones a las que se hace referencia ahora.
[0007] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y la siguiente descripción. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
Breve descripción de los dibujos
[0008]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que está configurado para implementar las técnicas descritas en la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que está configurado para implementar las técnicas descritas en la presente divulgación.
La FIG. 4 es un diagrama de flujo que ilustra una operación de compensación de movimiento de ejemplo.
La FIG. 5 es un diagrama de flujo que ilustra otra operación de compensación de movimiento de ejemplo.
La FIG. 6 es un diagrama de flujo que ilustra una operación de ejemplo para generar una lista de candidatos a fusión.
La FIG. 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo para generar candidatos a fusión artificiales.
La FIG. 8 es un diagrama de flujo que ilustra una operación de ejemplo para determinar la información de movimiento de una unidad de predicción usando un modo de predicción de vector de movimiento avanzado.
Descripción detallada
[0009] Como se describe a continuación, una imagen se puede dividir en uno o más segmentos. Cada uno de los segmentos puede incluir un número entero de unidades de codificación (CU). Cada CU puede tener una o más unidades de predicción (PU). Los segmentos pueden ser segmentos I, segmentos P o segmentos B. En un segmento I, todas las PU se intrapredicen. Un codificador de vídeo puede realizar una intrapredicción o una interpredicción unidireccional en unas PU de unos segmentos P. Cuando el codificador de vídeo realiza una interpredicción unidireccional en una PU de un segmento P, el codificador de vídeo puede identificar o sintetizar una muestra de referencia en una imagen de referencia enumerada en una primera lista de imágenes de referencia ("lista 0"). El bloque de referencia puede ser un bloque de muestras de referencia dentro de la imagen de referencia. Las muestras de referencia pueden corresponder a píxeles reales de un bloque de referencia, o a píxeles que se sintetizan, por ejemplo, por interpolación usando píxeles reales. El codificador de vídeo puede generar a continuación un bloque de vídeo predictivo para la PU en base al bloque de referencia para la PU.
[0010] El codificador de vídeo puede realizar una interpredicción unidireccional de lista 0, una interpredicción unidireccional de lista 1 o una interpredicción bidireccional en unas PU en segmentos B. Cuando el codificador de vídeo realiza una interpredicción unidireccional de lista 0 en una PU, el codificador de vídeo puede identificar un bloque de referencia en una imagen de referencia enumerada en la lista 0 o sintetizar un bloque de referencia en base a unas muestras de referencia de una imagen de referencia enumerada en la lista 0. El codificador de vídeo puede generar a continuación el bloque de vídeo predictivo para la PU en base al bloque de referencia. Cuando el codificador de vídeo realiza una interpredicción unidireccional de lista 1 en una PU, el codificador de vídeo puede identificar un bloque de referencia en una imagen de referencia enumerada en una segunda lista de imágenes de referencia ("lista 1") o puede sintetizar un bloque de referencia en base a unas muestras de referencia de una imagen de referencia enumerada en la lista 1. El codificador de vídeo puede generar a continuación el bloque de vídeo predictivo para la PU en base al bloque de referencia. Cuando el codificador de vídeo realiza una interpredicción bidireccional en una PU, el codificador de vídeo puede identificar un bloque de referencia en una imagen de referencia enumerada en la lista 0 o sintetizar un bloque de referencia en base a unas muestras de referencia de una imagen de referencia enumerada en la lista 0. Además, cuando el codificador de vídeo realiza una interpredicción bidireccional en la PU, el codificador de vídeo puede identificar un bloque de referencia en una imagen de referencia enumerada en la lista 1 o sintetizar un bloque de referencia en base a unas muestras de referencia de una imagen de referencia enumerada en la lista 1. El codificador de vídeo puede generar a continuación el bloque de vídeo predictivo para la PU en base a los dos bloques de referencia.
[0011] El codificador de vídeo puede señalizar información de movimiento de una PU para permitir que un descodificador de vídeo identifique o sintetice el bloque de referencia o los bloques de referencia que el codificador de vídeo ha usado para generar el bloque de vídeo predictivo para la PU. La información de movimiento de la PU puede incluir uno o más vectores de movimiento, índices de imagen de referencia e indicadores para indicar si la interpredicción está basada en la lista 0 y/o la lista 1. En algunos casos, el codificador de vídeo puede señalizar la información de movimiento de la PU usando el modo de fusión. Cuando el codificador de vídeo señaliza la información de movimiento de la PU usando el modo de fusión, el codificador de vídeo puede generar una lista de candidatos a fusión para la PU. La lista de candidatos a fusión puede incluir una pluralidad de candidatos a fusión, cada uno de los cuales especifica un conjunto de información de movimiento.
[0012] Un candidato a fusión puede ser un candidato a fusión unidireccional si el candidato a fusión especifica información de movimiento que identifica una única ubicación en una imagen de referencia enumerada en la lista 0 o en la lista 1. Un bloque de referencia puede estar asociado a un conjunto de información de movimiento si las muestras del bloque de referencia se determinan en base a unas muestras en una ubicación identificada por la información de movimiento en una imagen de referencia identificada por la información de movimiento. Por ejemplo, un bloque de referencia puede estar asociado a un conjunto de información de movimiento si las muestras del bloque de referencia son las mismas que las muestras de un bloque de vídeo en una ubicación identificada por la información de movimiento de una imagen de referencia identificada por la información de movimiento. Un bloque de referencia también puede estar asociado a un conjunto de información de movimiento si las muestras del bloque de referencia se sintetizan (por ejemplo, se interpolan) a partir de las muestras de un bloque de vídeo en una ubicación identificada por la información de movimiento de una trama de referencia identificada por la información de movimiento.
[0013] Un candidato a fusión puede ser un candidato a fusión bidireccional si el candidato a fusión especifica información de movimiento que identifica una ubicación en una imagen de referencia enumerada en la lista 0 y una ubicación en una imagen de referencia enumerada en la lista 1. El codificador de vídeo puede generar la información de movimiento especificada por los candidatos a fusión en base a información de movimiento de las PU que son espacialmente vecinas de la PU actual y/o una PU colocalizada en una imagen diferente. Después de generar la lista de fusión para la PU actual, el codificador de vídeo puede seleccionar uno de los candidatos a fusión de la lista de candidatos a fusión y señalizar una posición dentro de la lista de candidatos a fusión del candidato a fusión seleccionado. El descodificador de vídeo puede determinar la información de movimiento de la PU actual en base a la información de movimiento especificada por el candidato a fusión seleccionado.
[0014] En términos de operaciones y ancho de banda de memoria requerido, generar un bloque de vídeo predictivo para una PU en base a dos bloques de referencia puede ser más complejo que generar el bloque de vídeo predictivo para la PU en base a un solo bloque de referencia. La complejidad asociada a la generación de bloques de vídeo predictivos en base a dos bloques de referencia puede incrementar a medida que se incrementa el número de PU interpredichas bidireccionalmente en un segmento B. Esto puede suceder especialmente cuando se incrementa el número de PU pequeñas interpredichas bidireccionalmente. En consecuencia, puede ser ventajoso restringir algunas PU en segmentos B a la interpredicción unidireccional.
[0015] El codificador de vídeo puede restringir una PU en un segmento B a la interpredicción unidireccional seleccionando solo candidatos a fusión unidireccionales de la lista de candidatos a fusión para la PU. Sin embargo, en algunos casos, la lista de candidatos a fusión puede no incluir ningún candidato a fusión unidireccional. En dichos casos, el codificador de vídeo tal vez no podría señalizar la información de movimiento de la PU usando un modo de fusión. Esto puede disminuir el rendimiento de la codificación. Además, incluso si la lista de candidatos a fusión incluye al menos un candidato a fusión unidireccional, la eficacia de codificación puede disminuir si los bloques de referencia asociados a la información de movimiento especificada por los candidatos a fusión unidireccionales no son suficientemente similares al bloque de vídeo asociado a la PU.
[0016] De acuerdo con las técnicas de la presente divulgación, un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) puede determinar si una PU en un segmento B está restringida a la interpredicción unidireccional. Por ejemplo, el codificador de vídeo puede determinar que una PU está restringida a la interpredicción unidireccional si una característica de tamaño de la PU es menor que un umbral particular. La característica de tamaño de la PU puede ser una característica de un tamaño de un bloque de vídeo asociado a la PU, tal como una altura, anchura, longitud diagonal, etc. del bloque de vídeo asociado a la PU. Además, el codificador de vídeo puede generar una lista de candidatos a fusión para la PU y determinar un candidato a fusión seleccionado en la lista de candidatos a fusión. Si la PU está restringida a la interpredicción unidireccional, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base a no más de un bloque de referencia asociado a la información de movimiento especificada por el candidato a fusión seleccionado. Si la PU no está restringida a la interpredicción unidireccional, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base a uno o más bloques de referencia asociados con la información de movimiento especificada por el candidato a fusión seleccionado. Al restringir algunas PU a la interpredicción unidireccional de esta manera, el codificador de vídeo puede reducir la complejidad asociada con la generación de bloques de vídeo predictivos en base a múltiples bloques de referencia. Esto puede incrementar la velocidad a la que el codificador de vídeo puede codificar datos de vídeo y puede reducir los requisitos de ancho de banda de datos.
[0017] Para facilitar la explicación, en la presente divulgación se pueden describir unas ubicaciones o unos bloques de vídeo que tienen diversas relaciones espaciales con unas CU o unas PU. Dicha descripción se puede interpretar en el sentido de que las ubicaciones o bloques de vídeo tienen las diversas relaciones espaciales con los bloques de vídeo asociados a las CU o las PU. Además, la presente divulgación se puede referir a una PU que un codificador de vídeo está codificando actualmente como la PU actual. La presente divulgación se puede referir a una CU que un codificador de vídeo está codificando actualmente como la CU actual. La presente divulgación se puede referir a una imagen que un codificador de vídeo está codificando actualmente como la imagen actual.
[0018] Los dibujos adjuntos ilustran ejemplos. Los elementos indicados por números de referencia en los dibujos adjuntos corresponden a elementos indicados por números de referencia similares en la siguiente descripción. En la presente divulgación, los elementos que tienen nombres que comienzan con palabras ordinales (por ejemplo, "primero", "segundo", "tercero" y así sucesivamente) no implican necesariamente que los elementos tienen un orden particular. En su lugar, dichas palabras ordinales se usan simplemente para referirse a diferentes elementos de un tipo igual o similar.
[0019] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar las técnicas de la presente divulgación. Como se usa y describe en el presente documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. En la presente divulgación, los términos "codificación de vídeo" o "codificación" se pueden referir genéricamente a codificación de vídeo o a descodificación de vídeo.
[0020] Como se muestra en la FIG. 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. En consecuencia, el dispositivo de origen 12 se puede denominar dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados generados por el dispositivo de origen 12. En consecuencia, el dispositivo de destino 14 se puede denominar dispositivo de descodificación de vídeo o aparato de descodificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo.
[0021] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia gama de dispositivos, que incluyen ordenadores de escritorio, dispositivos informáticos móviles, ordenadores tipo notebook (por ejemplo, portátiles), ordenadores de tableta, descodificadores multimedia, aparatos telefónicos tales como los denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores para vehículos o similares. En algunos ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0022] El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 por medio de un canal 16. El canal 16 puede comprender un tipo de medio o dispositivo que puede transferir los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender un medio de comunicación que permite al dispositivo de origen 12 transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo de origen 12 puede modular los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de vídeo modulados al dispositivo de destino 14. El medio de comunicación puede comprender un medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base u otros equipos que facilitan la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0023] En otro ejemplo, el canal 16 puede corresponder a un medio de almacenamiento que almacena los datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento por medio de acceso de disco o de acceso de tarjeta. El medio de almacenamiento puede incluir una variedad de medios de almacenamiento de datos de acceso local, tales como discos Blu-ray, DVD, CD-ROM, memoria flash u otros medios de almacenamiento digital adecuados para almacenar datos de vídeo codificados. En otro ejemplo, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena el vídeo codificado generado por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder a datos de vídeo codificados almacenados en el servidor de archivos o en otro dispositivo de almacenamiento intermedio por medio de transmisión continua o descarga. El servidor de archivos puede ser un tipo de servidor que puede almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectado en red (NAS) y unidades de disco locales. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, incluyendo una conexión a Internet. Los tipos de conexiones de datos de ejemplo pueden incluir canales inalámbricos (por ejemplo, conexiones de wifi), conexiones alámbricas (por ejemplo, DSL, módem de cable, etc.) o combinaciones de ambos que sean adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas cosas.
[0024] Las técnicas de la presente divulgación no se limitan a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, por medio de Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 puede estar configurado para admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
[0025] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captación de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene datos de vídeo captados previamente, una interfaz de suministro de vídeo para recibir datos de vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de vídeo, o una combinación de dichas fuentes.
[0026] El codificador de vídeo 20 puede codificar los datos de vídeo captados, precaptados o generados por ordenador. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo de destino 14 por medio de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados también se pueden almacenar en un medio de almacenamiento o en un servidor de archivos para un posterior acceso por el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0027] En el ejemplo de la FIG. 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe datos de vídeo codificados a través de un canal 16. Los datos de vídeo codificados pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20, que representan los datos de vídeo. Dichos elementos de sintaxis se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenar en un medio de almacenamiento o almacenar en un servidor de archivos.
[0028] El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también puede estar configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario. El dispositivo de visualización 32 puede comprender cualquiera de entre una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0029] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC), actualmente en desarrollo, y se pueden ajustar a un modelo de prueba de HEVC (HM). Un borrador reciente de la próxima norma de HEVC, denominado "HeVC Working Draft 7" o "WD7," se describe en el documento JCTVC-I1003_d54, Bross et al., "High efficiency video coding (HEVC) text specification draft 7," Equipo de Colaboración Conjunta de Codificación de Vídeo (JCT-VC) of ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 9.a reunión: Ginebra, Suiza, mayo de 2012, que, desde el 19 de julio de 2012, se puede descargar en: http://phenix.intevry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip. De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas de propiedad o industriales, tales como la norma de ITU-T H.264, denominada de forma alternativa MPEG-4, Parte 10, Codificación de vídeo avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de la presente divulgación no están limitadas a ninguna norma o técnica de codificación particular. Entre otros ejemplos de normas y técnicas de compresión de vídeo se incluyen MPEG-2, ITU-T H.263 y unos formatos de compresión de propiedad o de código abierto, tales como VP8 y formatos relacionados.
[0030] Aunque no se muestra en el ejemplo de la FIG. 1, tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar integrados en un codificador y un descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, 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, en algunos ejemplos, las unidades MUX-DEMUX se pueden ajustar al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0031] De nuevo, la FIG. 1 es simplemente un ejemplo, y las técnicas de la presente divulgación se pueden aplicar a unas configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y de descodificación. En otros ejemplos, se pueden recuperar datos de una memoria local y transmitirlos en continuo a través de una red o similares. Un dispositivo de codificación puede codificar y almacenar datos en una memoria, y/o un dispositivo de descodificación puede recuperar y descodificar datos de una memoria. En muchos ejemplos, la codificación y la descodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en una memoria y/o recuperan y descodifican datos de una memoria.
[0032] El codificador de vídeo 20 y el descodificador de vídeo 30 se pueden implementar cada uno como cualquiera de entre una variedad de circuitos 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, hardware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no transitorio legible por ordenador adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Se puede considerar que cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) es uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0033] La presente divulgación se puede referir, en general, al codificador de vídeo 20 que "señaliza" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. Sin embargo, se debería entender que el codificador de vídeo 20 puede señalizar información asociando determinados elementos de sintaxis a diversas partes codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalizar" datos almacenando determinados elementos de sintaxis en cabeceras de diversas partes codificadas de datos de vídeo. En algunos casos, dichos elementos de sintaxis se pueden codificar y almacenar (por ejemplo, en un sistema de almacenamiento) antes de que el descodificador de vídeo 30 los reciba y descodifique. Por tanto, el término "señalizar" se puede referir, en general, a la comunicación de sintaxis u otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio en un flujo de bits codificado en el momento de la codificación, que a continuación un dispositivo de descodificación puede recuperar en cualquier momento después de su almacenamiento en este medio.
[0034] Como se ha mencionado anteriormente de manera breve, el codificador de vídeo 20 codifica datos de vídeo. Los datos de vídeo pueden comprender una o más imágenes. Cada una de las imágenes puede ser una imagen fija que forma parte de un vídeo. En algunos casos, una imagen se puede denominar "trama" de vídeo. Cuando el codificador de vídeo 20 codifica los datos de vídeo, el codificador de vídeo 20 puede generar un flujo de bits. El flujo de bits puede incluir una secuencia de bits que forma una representación codificada de los datos de vídeo. El flujo de bits puede incluir imágenes codificadas y datos asociados. Una imagen codificada es una representación codificada de una imagen.
[0035] Para generar el flujo de bits, el codificador de vídeo 20 puede realizar unas operaciones de codificación en cada imagen de los datos de vídeo. Cuando el codificador de vídeo 20 realiza operaciones de codificación en las imágenes, el codificador de vídeo 20 puede generar una serie de imágenes codificadas y datos asociados. Los datos asociados pueden incluir conjuntos de parámetros de secuencia, conjuntos de parámetros de imagen, conjuntos de parámetros de adaptación y otras estructuras sintácticas. Un conjunto de parámetros de secuencia (SPS) puede contener parámetros aplicables a cero o más secuencias de imágenes. Un conjunto de parámetros de imagen (PPS) puede contener parámetros aplicables a cero o más imágenes. Un conjunto de parámetros de adaptación (APS) puede contener parámetros aplicables a cero o más imágenes. Los parámetros de un APS pueden ser parámetros que es más probable que cambien que los parámetros de un PPS.
[0036] Para generar una imagen codificada, el codificador de vídeo 20 puede partir una imagen en bloques de vídeo de igual tamaño. Un bloque de vídeo puede ser una matriz bidimensional de muestras. Cada uno de los bloques de vídeo está asociado a un bloque de árbol. En algunos casos, un bloque de árbol también se puede denominar unidad de codificación más grande (LCU) o "bloque de árbol de codificación". Los bloques de árbol de HEVC pueden ser, en términos generales, análogos a los macrobloques de normas previas, tales como la H.264/AVC. Sin embargo, un bloque de árbol no se limita necesariamente a un tamaño particular y puede incluir una o más unidades de codificación (CU). El codificador de vídeo 20 puede usar una partición de árbol cuaternario para partir los bloques de vídeo de bloques de árbol en bloques de vídeo asociados a unas CU, de ahí el nombre "bloques de árbol".
[0037] En algunos ejemplos, el codificador de vídeo 20 puede partir una imagen en una pluralidad de segmentos. Cada uno de los segmentos puede incluir un número entero de CU. En algunos casos, un segmento comprende un número entero de bloques de árbol. En otros casos, un límite de un segmento puede estar dentro de un bloque de árbol.
[0038] Como parte de luna realización de una operación de codificación en una imagen, el codificador de vídeo 20 puede realizar operaciones de codificación en cada segmento de la imagen. Cuando el codificador de vídeo 20 realiza una operación de codificación en un segmento, el codificador de vídeo 20 puede generar datos codificados asociados al segmento. Los datos codificados asociados al segmento se pueden denominar "segmento codificado".
[0039] Para generar un segmento codificado, el codificador de vídeo 20 puede realizar operaciones de codificación en cada bloque de árbol de un segmento. Cuando el codificador de vídeo 20 realiza una operación de codificación en un bloque de árbol, el codificador de vídeo 20 puede generar un bloque de árbol codificado. El bloque de árbol codificado puede comprender una representación codificada del bloque de árbol.
[0040] Cuando el codificador de vídeo 20 genera un segmento codificado, el codificador de vídeo 20 puede realizar operaciones de codificación en (es decir, codificar) los bloques de árbol (que, en este caso, representan unidades de codificación más grandes) en el segmento de acuerdo con un orden de barrido por trama. En otras palabras, el codificador de vídeo 20 puede codificar los bloques de árbol del segmento en un orden que avanza de izquierda a derecha en la fila más alta de los bloques de árbol del segmento, a continuación avanza de izquierda a derecha en la siguiente fila inferior de los bloques de árbol, y así sucesivamente hasta que el codificador de vídeo 20 ha codificado cada uno de los bloques de árbol del segmento.
[0041] Como resultado de codificar los bloques de árbol de acuerdo con el orden de barrido por trama, los bloques de árbol por encima y a la izquierda de un bloque de árbol dado se pueden haber codificado, pero los bloques de árbol por debajo y a la derecha del bloque de árbol dado aún no se han codificado. En consecuencia, el codificador de vídeo 20 tal vez podría acceder a información generada por la codificación de los bloques de árbol por encima y a la izquierda del bloque de árbol dado cuando se codifica el bloque de árbol dado. Sin embargo, el codificador de vídeo 20 tal vez no podría acceder a información generada por la codificación de los bloques de árbol por debajo y a la derecha del bloque de árbol dado cuando se codifica el bloque de árbol dado.
[0042] Para generar un bloque de árbol codificado, el codificador de vídeo 20 puede realizar de forma recursiva una partición de árbol cuaternario en el bloque de vídeo del bloque de árbol para dividir el bloque de vídeo en bloques de vídeo progresivamente más pequeños. Cada uno de los bloques de vídeo más pequeños se puede asociar a una CU diferente. Por ejemplo, el codificador de vídeo 20 puede partir el bloque de vídeo de un bloque de árbol en cuatro subbloques de igual tamaño, partir uno o más de los subbloques en cuatro subsubbloques de igual tamaño, y así sucesivamente. Una CU partida puede ser una CU cuyo bloque de vídeo está partido en bloques de vídeo asociados a otras CU. Una CU no partida puede ser una CU cuyo bloque de vídeo no está partido en bloques de vídeo asociados a otras CU.
[0043] Uno o más elementos de sintaxis del flujo de bits pueden indicar un número máximo de veces que el codificador de vídeo 20 puede partir el bloque de vídeo de un bloque de árbol. Un bloque de vídeo de una CU puede tener forma cuadrada. El tamaño del bloque de vídeo de una Cu (es decir, el tamaño de la CU) puede variar desde 8x8 píxeles hasta el tamaño de un bloque de vídeo de un bloque de árbol (es decir, el tamaño del bloque de árbol) con un máximo de 64x64 píxeles o mayor.
[0044] El codificador de vídeo 20 puede realizar operaciones de codificación en (es decir, codificar) cada CU de un bloque de árbol de acuerdo con un orden de barrido en z. En otras palabras, el codificador de vídeo 20 puede codificar, por este orden, una CU superior izquierda, una CU superior derecha, una CU inferior izquierda y, a continuación, una CU inferior derecha. Cuando el codificador de vídeo 20 realiza una operación de codificación en una CU partida, el codificador de vídeo 20 puede codificar las CU asociadas a subbloques del bloque de vídeo de la CU partida de acuerdo con el orden de barrido en z. En otras palabras, el codificador de vídeo 20 puede codificar, por este orden, una CU asociada a un subbloque superior izquierdo, una CU asociada a un subbloque superior derecho, una CU asociada a un subbloque inferior izquierdo y, a continuación, una CU asociada a un subbloque inferior derecho.
[0045] Como resultado de la codificación de las CU de un bloque de árbol de acuerdo con un orden de barrido en z, las CU por encima, por encima y a la izquierda, por encima y a la derecha, a la izquierda y por debajo y a la izquierda de una CU dada se pueden haber codificado. Las CU por debajo o a la derecha de la CU dada todavía no se han codificado. En consecuencia, el codificador de vídeo 20 podría acceder a información generada por la codificación de algunas CU que son vecinas de la CU dada cuando se codifica la CU dada. Sin embargo, el codificador de vídeo 20 tal vez no podría acceder a información generada por la codificación de otras CU que son vecinas de la CU dada cuando se codifica la CU dada.
[0046] Cuando el codificador de vídeo 20 codifica una CU no partida, el codificador de vídeo 20 puede generar una o más unidades de predicción (PU) para la CU. Cada una de las PU de la CU se puede asociar a un bloque de vídeo diferente dentro del bloque de vídeo de la CU. El codificador de vídeo 20 puede generar un bloque de vídeo predictivo para cada PU de la CU. El bloque de vídeo predictivo de una PU puede ser un bloque de muestras. El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar el bloque de vídeo predictivo para una PU.
[0047] Cuando el codificador de vídeo 20 usa intrapredicción para generar el bloque de vídeo predictivo de una PU, el codificador de vídeo 20 puede generar el bloque de vídeo predictivo de la PU en base a unas muestras descodificadas de la imagen asociada a la PU. Si el codificador de vídeo 20 usa intrapredicción para generar bloques de vídeo predictivos de las PU de una CU, la CU es una CU intrapredicha.
[0048] Cuando el codificador de vídeo 20 usa interpredicción para generar el bloque de vídeo predictivo de la PU, el codificador de vídeo 20 puede generar el bloque de vídeo predictivo de la PU en base a unas muestras descodificadas de una o más imágenes distintas a la imagen asociada a la PU. Si el codificador de vídeo 20 usa interpredicción para generar bloques de vídeo predictivos de las PU de una CU, la CU es una CU interpredicha.
[0049] Además, cuando el codificador de vídeo 20 usa interpredicción para generar un bloque de vídeo predictivo para una PU, el codificador de vídeo 20 puede generar información de movimiento para la PU. La información de movimiento para una PU puede indicar uno o más bloques de referencia de la PU. Cada bloque de referencia de la PU puede ser un bloque de vídeo dentro de una imagen de referencia. La imagen de referencia puede ser una imagen distinta de la imagen asociada a la PU. En algunos casos, un bloque de referencia de una PU también se puede denominar "muestra de referencia" de la PU. El codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base a los bloques de referencia de la PU.
[0050] Como se analiza anteriormente, un segmento puede ser un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU se intrapredicen. En los segmentos P y los segmentos B, las PU se pueden intrapredecir o interpredecir. Cuando el codificador de vídeo 20 realiza la interpredicción en una PU de un segmento P, el codificador de vídeo 20 puede generar información de movimiento que identifica una ubicación en una única imagen de referencia. En otras palabras, la PU se puede interpredecir unidireccionalmente. La información de movimiento puede incluir un índice de imagen de referencia y un vector de movimiento. El índice de imagen de referencia puede indicar una posición en una primera lista de imágenes de referencia ("lista 0") de una imagen de referencia. El vector de movimiento puede indicar un desplazamiento espacial entre el bloque de vídeo asociado a la PU y un bloque de referencia dentro de la imagen de referencia. Un codificador de vídeo, tal como un codificador de vídeo 20 o un descodificador de vídeo 30, puede generar posteriormente el bloque de vídeo predictivo para la PU en base al bloque de referencia único asociado a la información de movimiento de la PU. Por ejemplo, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU, de modo que el bloque de vídeo predictivo coincide con el bloque de referencia.
[0051] Una PU en un segmento B se puede interpredecir unidireccionalmente en base a una lista 0, interpredecir unidireccionalmente en base a una segunda lista de imágenes de referencia ("lista 1"), o interpredecir bidireccionalmente. Si una PU en un segmento B se interpredice unidireccionalmente en base a la lista 0, la información de movimiento de la PU puede incluir un índice de imagen de referencia de lista 0 y un vector de movimiento de lista 0. El índice de imagen de referencia de lista 0 puede identificar una imagen de referencia indicando una posición en la lista 0 de la imagen de referencia. El vector de movimiento de lista 0 puede indicar un desplazamiento espacial entre el bloque de vídeo asociado a la PU y un bloque de referencia dentro de la imagen de referencia. El codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base al bloque de referencia asociado al vector de movimiento de lista 0. En otras palabras, el codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base a un bloque de muestras de referencia identificado por el vector de movimiento de lista 0 o puede generar el bloque de vídeo predictivo para la PU en base a un bloque de muestras de referencia sintetizadas (por ejemplo, interpoladas) a partir del bloque de muestras de referencia identificado por el vector de movimiento de lista 0.
[0052] Si una PU en un segmento B se interpredice unidireccionalmente en base a la lista 1, la información de movimiento de la PU puede incluir un índice de imagen de referencia de lista 1 y un vector de movimiento de lista 1. El índice de imagen de referencia de lista 1 puede identificar una imagen de referencia indicando una posición en la lista 1 de la imagen de referencia. El vector de movimiento de lista 1 puede indicar un desplazamiento espacial entre la PU y un bloque de referencia dentro de la imagen de referencia. El codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base a un bloque de muestras de referencia asociadas al vector de movimiento de lista 1. Por ejemplo, el codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base a un bloque de muestras de referencia identificado por el vector de movimiento de lista 1 o puede generar el bloque de vídeo predictivo para la PU en base a un bloque de muestras de referencia sintetizado (por ejemplo, interpolado) a partir del bloque de muestras de referencia identificado por el vector de movimiento de lista 1.
[0053] Si una PU en un segmento B se interpredice bidireccionalmente, la información de movimiento de la PU puede incluir un índice de imagen de referencia de lista 0, un vector de movimiento de lista 0, un índice de imagen de referencia de lista 1 y un vector de movimiento de lista 1. En algunos casos, los índices de imagen de referencia de lista 0 y lista 1 pueden identificar la misma imagen. El codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU en base a los bloques de referencia asociados a los vectores de movimientos de lista 0 y lista 1. En algunos ejemplos, el codificador de vídeo 20 puede generar el bloque de vídeo predictivo para la PU interpolando el bloque de vídeo predictivo a partir de unas muestras de un bloque de referencia asociado al vector de movimiento de lista 0 y unas muestras de un bloque de referencia asociado al vector de movimiento de lista 1.
[0054] Después de que el codificador de vídeo 20 genere bloques de vídeo predictivos para una o más PU de una CU, el codificador de vídeo 20 puede generar datos residuales para la CU en base a los bloques de vídeo predictivos para las PU de la CU. Los datos residuales para la CU pueden indicar diferencias entre unas muestras de los bloques de vídeo predictivos para las PU de la CU y el bloque de vídeo original de la CU.
[0055] Además, como parte de una realización de una operación de codificación en una CU no partida, el codificador de vídeo 20 puede realizar una partición recursiva de árbol cuaternario en los datos residuales de la CU para partir los datos residuales de la CU en uno o más bloques de datos residuales (es decir, bloques de vídeo residuales) asociados a unas unidades de transformada (TU) de la CU. Cada TU de una CU puede estar asociada a un bloque de vídeo residual diferente.
[0056] El codificador de vídeo 20 puede aplicar una o más transformadas a unos bloques de vídeo residuales asociados a las TU para generar bloques de coeficientes de transformada (es decir, bloques de coeficientes de transformada) asociados a las TU. Conceptualmente, un bloque de coeficientes de transformada puede ser una matriz bidimensional (2D) de coeficientes de transformada.
[0057] Después de generar un bloque de coeficientes de transformada, el codificador de vídeo 20 puede realizar un proceso de cuantificación en el bloque de coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que unos coeficientes de transformada se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes de transformada, proporcionando más compresión. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits se puede redondear por defecto hasta un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m.
[0058] El codificador de vídeo 20 puede asociar cada CU a un valor de parámetro de cuantificación (QP). El valor de QP asociado a una CU puede determinar cómo el codificador de vídeo 20 cuantifica unos bloques de coeficientes de transformada asociados a la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes de transformada asociados a una CU ajustando el valor de QP asociado a la CU.
[0059] Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes de transformada, el codificador de vídeo 20 puede generar conjuntos de elementos de sintaxis que representan los coeficientes de transformada del bloque de coeficientes de transformada cuantificado. El codificador de vídeo 20 puede aplicar operaciones de codificación entrópica, tales como operaciones de codificación aritmética binaria adaptativa al contexto (CABAC), a algunos de estos elementos de sintaxis.
[0060] El flujo de bits generado por el codificador de vídeo 20 puede incluir una serie de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL puede ser una estructura de sintaxis que contiene una indicación de un tipo de datos de la unidad de NAL y bytes que contienen los datos. Por ejemplo, una unidad de NAL puede contener datos que representan un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, un segmento codificado, información de mejora complementaria (SEI), un delimitador de unidad de acceso, datos de relleno u otro tipo de datos. Los datos de una unidad de NAL pueden incluir diversas estructuras de sintaxis.
[0061] El descodificador de vídeo 30 puede recibir el flujo de bits generado por el codificador de vídeo 20. El flujo de bits puede incluir una representación codificada de los datos de vídeo codificados por el codificador de vídeo 20. Cuando el descodificador de vídeo 30 recibe el flujo de bits, el descodificador de vídeo 30 puede realizar una operación de análisis de sintaxis en el flujo de bits. Cuando el descodificador de vídeo 30 realiza la operación de análisis de sintaxis, el descodificador de vídeo 30 puede extraer elementos de sintaxis del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base a los elementos de sintaxis extraídos del flujo de bits. El proceso para reconstruir los datos de vídeo en base a los elementos de sintaxis puede ser, en general, recíproco al proceso realizado por el codificador de vídeo 20 para generar los elementos de sintaxis.
[0062] Después de que el descodificador de vídeo 30 extraiga los elementos de sintaxis asociados a una CU, el descodificador de vídeo 30 puede generar bloques de vídeo predictivos para las PU de la CU en base a los elementos de sintaxis. Además, el descodificador de vídeo 30 puede realizar una cuantificación inversa en unos bloques de coeficientes de transformada asociados a las TU de la CU. El descodificador de vídeo 30 puede realizar unas transformadas inversas en los bloques de coeficientes de transformada para reconstruir bloques de vídeo residuales asociados a las TU de la CU. Después de generar los bloques de vídeo predictivos y reconstruir los bloques de vídeo residuales, el descodificador de vídeo 30 puede reconstruir el bloque de vídeo de la CU en base a los bloques de vídeo predictivos y los bloques de vídeo residuales. De esta manera, el descodificador de vídeo 30 puede reconstruir los bloques de vídeo de las CU en base a los elementos de sintaxis del flujo de bits.
[0063] Como se describe anteriormente, el codificador de vídeo 20 puede usar interpredicción para generar bloques de vídeo predictivos asociados a información de movimiento para las PU de una CU. En muchos casos, es probable que la información de movimiento de una PU dada sea igual o similar a la información de movimiento de una o más PU cercanas (es decir, unas PU cuyos bloques de vídeo están espacial o temporalmente cerca del bloque de vídeo de la PU dada). Debido a que las PU cercanas tienen frecuentemente información de movimiento similar, el codificador de vídeo 20 puede codificar la información de movimiento de la PU dada con referencia a la información de movimiento de una o más PU cercanas. Codificar la información de movimiento de la PU dada con referencia a la información de movimiento de la una o más PU cercanas puede reducir el número de bits requeridos en el flujo de bits para indicar la información de movimiento de la PU dada.
[0064] El codificador de vídeo 20 puede codificar la información de movimiento de una PU dada con referencia a la información de movimiento de una o más PU cercanas de diversas maneras. Por ejemplo, el codificador de vídeo 20 puede codificar la información de movimiento de la PU dada usando el modo de fusión o modo de predicción de vector de movimiento avanzada (AMVP). Para codificar la información de movimiento de una PU usando un modo de fusión, el codificador de vídeo 20 puede generar una lista de candidatos a fusión para la PU. La lista de candidatos a fusión puede incluir uno o más candidatos a fusión. Cada uno de los candidatos a fusión especifica un conjunto de información de movimiento. El codificador de vídeo 20 puede generar uno o más de los candidatos a fusión en base a la información de movimiento especificada por las PU que son espacialmente vecinas de la PU en la misma imagen, que se pueden denominar candidatos a fusión espacial, o en base a una PU colocalizada en otra imagen, que se pueden denominar candidatos a fusión temporal. Si la información de movimiento especificada por un candidato a fusión está asociada a dos bloques de referencia, en el presente documento se puede hacer referencia al candidato a fusión como candidato a fusión bidireccional o candidato a fusión que es bidireccional. De lo contrario, si la información de movimiento especificada por un candidato a fusión está asociada solo a un único bloque de referencia, en el presente documento se puede hacer referencia al candidato a fusión como candidato a fusión unidireccional o candidato a fusión que es unidireccional. El codificador de vídeo 20 puede seleccionar uno de los candidatos a fusión de la lista de candidatos a fusión y señalizar un valor de índice de candidato para la PU. El valor de índice de candidato puede indicar una posición en la lista de candidatos a fusión del candidato a fusión seleccionado.
[0065] Cuando el codificador de vídeo 20 codifica la información de movimiento de una PU usando un modo de fusión, el descodificador de vídeo 30 puede generar la misma lista de candidatos a fusión para la PU que la que el codificador de vídeo 20 ha generado para la PU. El descodificador de vídeo 30 puede determinar a continuación, en base al valor de índice de candidato para la PU, cuál de los candidatos a fusión de la lista de candidatos a fusión ha seleccionado el codificador de vídeo 20. El descodificador de vídeo 30 puede adoptar a continuación la información de movimiento especificada por el candidato a fusión seleccionado como la información de movimiento de la PU. La información de movimiento especificada por el candidato seleccionado puede incluir uno o más vectores de movimiento y uno o más índices de imagen de referencia.
[0066] Cuando el codificador de vídeo 20 señaliza la información de movimiento de una PU usando AMVP, el codificador de vídeo 20 puede generar una lista de candidatos a predictor de MV de lista 0 para la PU si la PU se interpredice unidireccionalmente en base a la lista 0 o si la PU se interpredice bidireccionalmente en base a unas imágenes de referencia de la lista 0 y la lista 1. La lista de candidatos a predictor de MV de lista 0 puede incluir uno o más candidatos a predictor de MV. Cada uno de los candidatos a predictor de MV especifica un conjunto de información de movimiento. El codificador de vídeo 20 puede seleccionar un candidato a predictor de MV de lista 0 de la lista de candidatos a predictor de MV de lista 0. El codificador de vídeo 20 puede señalizar un indicador de predictor de MV de lista 0 que indica una posición en la lista de candidatos a predictor de MV de lista 0 del candidato a predictor de MV de lista 0 seleccionado. El indicador de predictor de MV de lista 0 se puede denotar por "mvp_10f lag".
[0067] Además, cuando el codificador de vídeo 20 señaliza la información de movimiento de una PU usando AMVP, el codificador de vídeo 20 puede generar una lista de candidatos a predictor de MV de lista 1 para la PU si la PU se interpredice unidireccionalmente en base a la lista 1 o si la PU se interpredice bidireccionalmente. La lista de candidatos a predictor de MV de lista 1 puede incluir uno o más candidatos a predictor de MV. Cada uno de los candidatos a predictor de MV especifica un conjunto de información de movimiento. El codificador de vídeo 20 puede seleccionar a continuación un candidato a predictor de MV de lista 1 de la lista de candidatos a predictor de MV de lista 1. El codificador de vídeo 20 puede señalizar un indicador de predictor de MV de lista 1 que indica una posición en la lista de candidatos a predictor de MV de lista 1 del candidato a predictor de MV de lista 1 seleccionado. El indicador de predictor de MV de lista 1 se puede denotar por "mvp_11_flag".
[0068] Además, cuando el codificador de vídeo 20 codifica la información de movimiento de una PU usando AMVP, el codificador de vídeo 20 puede calcular una diferencia de vector de movimiento (MVD) de lista 0 para la PU si la PU se interpredice unidireccionalmente en base a la lista 0 o si la PU se interpredice bidireccionalmente. La MVD de lista 0 indica una diferencia entre un vector de movimiento de lista 0 de la PU y un vector de movimiento de lista 0 especificado por el candidato a predictor de MV de lista 0 seleccionado. Además, el codificador de vídeo 20 puede facilitar una MVD de lista 1 para la PU si la PU se predice unidireccionalmente en base a la lista 1 o si la PU se interpredice bidireccionalmente. La MVD de lista 1 indica una diferencia entre un vector de movimiento de lista 1 de la PU y un vector de movimiento de lista 1 especificado por el candidato a predictor de MV de lista 1 seleccionado. El codificador de vídeo 20 puede señalizar la MVD de lista 0 y/o la MVD de lista 1.
[0069] Cuando el codificador de vídeo 20 señaliza la información de movimiento de una PU usando el modo de AMVP, el descodificador de vídeo 30 puede generar independientemente las mismas listas de candidatos a predictor de MV de lista 0 y/o de lista 1 generadas por el codificador de vídeo 20. En otros ejemplos, el codificador de vídeo 20 puede codificar elementos de sintaxis que especifican las listas de candidatos a predictor de MV de lista 0 y de lista 1. Si la PU se interpredice unidireccionalmente en base a la lista 0 o si la PU se interpredice bidireccionalmente, el descodificador de vídeo 30 puede determinar el candidato a predictor de MV de lista 0 seleccionado de la lista de candidatos a predictor de MV de lista 0. El descodificador 30 de vídeo puede determinar a continuación un vector de movimiento de lista 0 de la PU en base al candidato a predictor de MV de lista 0 seleccionado y la MVD de lista 0 para la PU. Por ejemplo, el descodificador de vídeo 30 puede determinar el vector de movimiento de lista 0 de la PU añadiendo el vector de movimiento de lista 0 especificado por el candidato a predictor de MV de lista 0 seleccionado y la MVD de lista 0. Si la PU se interpredice unidireccionalmente en base a la lista 1 o si la PU se interpredice bidireccionalmente, el descodificador de vídeo 30 puede determinar el candidato a predictor de MV de lista 1 seleccionado de la lista de candidatos a predictor de MV de lista 1. El descodificador de vídeo 30 puede determinar a continuación un vector de movimiento de lista 1 de la PU en base a un vector de movimiento de lista 1 especificado por el candidato a MV de lista 1 seleccionado y la MVD de lista 1. Por ejemplo, el descodificador de vídeo 30 puede determinar el vector de movimiento de lista 1 de la PU añadiendo el vector de movimiento de lista 1 especificado por el candidato a MV de lista 1 seleccionado y la MVD de lista 1.
[0070] Como se analiza de forma resumida anteriormente, cuando el codificador 20 de vídeo realiza una interpredicción en una PU en un segmento B, el codificador 20 de vídeo puede generar información de movimiento asociada a uno o dos bloques de referencia para la PU. Un codificador de vídeo, tal como un codificador de vídeo 20 o un descodificador de vídeo 30, puede generar a continuación el bloque de vídeo predictivo para la PU en base a los bloques de referencia asociados a la información de movimiento de la PU. Para generar el bloque de vídeo predictivo en base a los dos bloques de referencia, el codificador de vídeo puede recuperar ambos bloques de referencia de la memoria. Debido a que el ancho de banda de memoria (es decir, la velocidad a la que se pueden transferir datos desde la memoria) puede ser limitado, recuperar los dos bloques de referencia de la memoria puede llevar más tiempo del que llevaría recuperar un solo bloque de referencia de la memoria. Por consiguiente, si un segmento B incluye muchas PU pequeñas interpredichas bidireccionalmente, el tiempo adicional requerido para recuperar dos bloques de referencia para cada una de las PU puede disminuir la velocidad a la que el codificador de vídeo puede generar los bloques de vídeo predictivos para las PU en el segmento B.
[0071] De acuerdo con diversos ejemplos de las técnicas de la presente divulgación, un codificador de vídeo, tal como un codificador de vídeo 20 o un descodificador de vídeo 30, puede determinar si una PU en un segmento B está restringida a la interpredicción unidireccional. En algunos ejemplos, el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional en base a una característica de tamaño de la PU o un parámetro. Además, el codificador de vídeo puede generar una lista de candidatos a fusión para la PU y determinar un candidato a fusión seleccionado en la lista de candidatos a fusión. Si la PU está restringida a la interpredicción unidireccional, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base a no más de un bloque de referencia asociado a una información de movimiento especificada por el candidato a fusión seleccionado. Por otro lado, si la PU no está restringida a la interpredicción unidireccional, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base a uno o más bloques de referencia asociados a la información de movimiento especificada por el candidato a fusión seleccionado. Debido a que cuando genera un bloque de vídeo predictivo en base a un solo bloque de referencia el codificador de vídeo transfiere menos datos de la memoria que cuando genera un bloque de vídeo predictivo basado en dos bloques de referencia, restringir determinadas PU en segmentos B a la interpredicción unidireccional por codificadores y descodificadores de vídeo puede incrementar la velocidad a la que los codificadores y descodificadores de vídeo pueden generar los bloques de vídeo predictivos para las PU de los segmentos B.
[0072] El codificador de vídeo, es decir, el codificador de vídeo o el descodificador de vídeo, puede determinar que una PU en un segmento B está restringida a la interpredicción unidireccional en base a diversos criterios. Por ejemplo, el codificador de vídeo puede determinar que una PU en un segmento B está restringida a la interpredicción unidireccional si una característica de tamaño de la PU está por debajo de un umbral particular. En este ejemplo, el codificador de vídeo puede determinar que la PU no está restringida a la interpredicción unidireccional si la característica de tamaño de la PU no está por debajo del umbral. Por ejemplo, en este ejemplo, el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional si una altura o una anchura del bloque de vídeo asociado a la PU está por debajo del umbral. Por ejemplo, si una altura y/o una anchura del bloque de vídeo asociado a la PU es menor que N píxeles (por ejemplo, N = 8), el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional.
[0073] En otro ejemplo, el codificador de vídeo puede determinar que una PU en un segmento B está restringida a la interpredicción unidireccional si una primera dimensión de un bloque de vídeo asociado a la PU es menor que un umbral y una segunda dimensión del bloque de vídeo asociado a la PU es menor o igual que el umbral. Una dimensión de un bloque de vídeo puede ser una anchura o una altura del bloque de vídeo. Por ejemplo, si el umbral es igual a 8, el codificador de vídeo puede determinar que la PU no está restringida a la interpredicción unidireccional si una anchura del bloque de vídeo es igual a 4, pero la altura del bloque de vídeo es igual a 16. Sin embargo, si el umbral es igual a 8, el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional si una anchura del bloque de vídeo es igual a 4 y la altura del bloque de vídeo es igual a 8.
[0074] En otro ejemplo, el codificador de vídeo puede determinar que una PU en un segmento B está restringida a la interpredicción unidireccional si una primera dimensión de un bloque de vídeo asociado a la PU es menor que un primer umbral y una segunda dimensión del bloque de vídeo asociado a la PU es menor que un segundo umbral. Por ejemplo, el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional si una anchura del bloque de vídeo es menor que 8 y la altura del bloque de vídeo es menor que 16. En algunos casos, el primer umbral puede ser igual al segundo umbral.
[0075] En otro ejemplo, el codificador de vídeo puede determinar que la PU está restringida a la interpredicción unidireccional si una característica de tamaño de una CU asociada a la PU (por ejemplo, la CU actual) es igual a un tamaño particular y una característica de tamaño de la PU está por debajo de un umbral. En este ejemplo, el codificador de vídeo puede determinar que la PU no está restringida a la interpredicción unidireccional si la característica de tamaño de la CU no es igual al tamaño particular o la característica de tamaño de la PU no está por debajo del umbral. En este ejemplo, el tamaño particular puede ser igual a N píxeles (por ejemplo, N = 8) y el umbral también puede ser igual a N píxeles (por ejemplo, N = 8). En este ejemplo, para una CU con un tamaño de 8x8, cualquier PU de la CU que tenga un tamaño menor que 8x8 puede tener prohibida la interpredicción bidireccional.
[0076] En otro ejemplo, el codificador de vídeo puede determinar que una PU en un segmento B está restringida a la interpredicción unidireccional si un parámetro indica que unas PU en el segmento B se han de restringir a la interpredicción unidireccional.
[0077] El codificador de vídeo puede restringir una PU en un segmento B a la interpredicción unidireccional de diversas maneras. Por ejemplo, el codificador de vídeo puede ignorar uno de los bloques de referencia asociados a la información de movimiento de la PU y generar el bloque de vídeo predictivo de la PU en base al otro de los bloques de referencia asociados a la información de movimiento de la PU. Por ejemplo, el codificador de vídeo puede generar una lista de candidatos a fusión y, si el candidato a fusión seleccionado es un candidato a fusión bidireccional, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base al bloque de referencia asociado al índice de imagen de referencia de lista 0 del candidato a fusión seleccionado y el vector de movimiento de lista 0 del candidato a fusión seleccionado. En un ejemplo similar, el codificador de vídeo puede generar el bloque de vídeo predictivo para la PU en base al bloque de referencia asociado al índice de imagen de referencia de lista 1 del candidato a fusión seleccionado y el vector de movimiento de lista 1 del candidato a fusión seleccionado.
[0078] En otro ejemplo de cómo el codificador de vídeo puede restringir una PU en un segmento B a la interpredicción unidireccional, el codificador de vídeo puede incluir candidatos a fusión unidireccionales en una lista de candidatos a fusión para la PU sin incluir candidatos a fusión bidireccionales en la lista de candidatos a fusión para la PU. En este ejemplo, el codificador de vídeo no convierte los candidatos a fusión bidireccionales en candidatos a fusión unidireccionales. En este ejemplo, el codificador de vídeo puede incluir candidatos a fusión unidireccionales artificiales en la lista de candidatos a fusión si el número de candidatos a fusión unidireccionales disponibles es insuficiente para llenar la lista de candidatos a fusión. Un candidato a fusión artificial puede ser un candidato a fusión que se genera en base a la información de movimiento de una o más PU, pero que no especifica la información de movimiento de la una o más PU.
[0079] En otro ejemplo de cómo el codificador de vídeo puede restringir una PU en un segmento B a la interpredicción unidireccional, el codificador de vídeo puede convertir candidatos a fusión bidireccionales en uno o más candidatos a fusión unidireccionales e incluir el uno o más candidatos a fusión unidireccionales en la lista de candidatos a fusión. En algunos de dichos ejemplos, el codificador de vídeo puede convertir el candidato a fusión bidireccional en un único candidato a fusión unidireccional asociado a una imagen de referencia de lista 0 o una imagen de referencia de lista 1. En algunos de dichos casos, siempre que el codificador de vídeo convierte candidatos a fusión bidireccionales en candidatos a fusión unidireccionales, los candidatos a fusión unidireccionales se asocian a imágenes de referencia de una lista de referencia particular. Por ejemplo, el codificador de vídeo puede solo convertir el candidato a fusión bidireccional en un único candidato a fusión unidireccional asociado a una imagen de referencia de la lista 0. De forma alternativa, el codificador de vídeo puede solo convertir el candidato a fusión bidireccional en un único candidato a fusión unidireccional asociado a una imagen de referencia de la lista 1. En otros de dichos ejemplos, el codificador de vídeo puede convertir el candidato a fusión bidireccional en dos candidatos a fusión unidireccionales, uno de los cuales está asociado a una imagen de referencia de la lista 0 y el otro de los cuales está asociado a una imagen de referencia de la lista 1. Por consiguiente, en algunos ejemplos, después de generar la lista de candidatos a fusión, el codificador de vídeo puede convertir un candidato a fusión bidireccional de la lista de candidatos a fusión en un candidato a fusión unidireccional e incluir el candidato a fusión unidireccional de la lista de candidatos a fusión en lugar del candidato a fusión bidireccional.
[0080] En algunos ejemplos, el codificador de vídeo puede eliminar los candidatos a fusión duplicados de la lista de candidatos a fusión antes de convertir los candidatos a fusión bidireccionales en candidatos a fusión unidireccionales. En otros ejemplos, el codificador de vídeo puede eliminar los candidatos a fusión duplicados de la lista de candidatos a fusión después de convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales.
[0081] Cuando el codificador de vídeo 20 codifica la información de movimiento de una PU en un segmento B usando AMVP, el codificador de vídeo 20 puede generar, codificar entrópicamente y facilitar un indicador de modo de interpredicción para la PU. El indicador de modo de interpredicción se puede denotar por "inter_pred_idc". El indicador de modo de interpredicción puede indicar si la PU se interpredice unidireccionalmente en base a la lista 0, se interpredice unidireccionalmente en base a la lista 1 o se interpredice bidireccionalmente. El descodificador de vídeo 30 puede usar el indicador de modo de interpredicción al realizar una interpredicción en la PU. Debido a que el indicador de modo de interpredicción tiene tres valores posibles, el indicador de modo de interpredicción se puede representar convencionalmente usando dos bits.
[0082] Sin embargo, si una PU en un segmento B está restringido a la interpredicción unidireccional, el indicador del modo de interpredicción puede tener dos valores posibles: la interpredicción unidireccional basada en la lista 0 y la interpredicción unidireccional basada en la lista 1. Por consiguiente, de acuerdo con las técnicas de la presente divulgación, si una PU en un segmento B está restringida a la interpredicción unidireccional, el indicador de modo de interpredicción se puede representar usando un solo bit. De lo contrario, si la PU no está restringida a la interpredicción unidireccional, el indicador del modo de interpredicción se puede representar usando dos bits. Representar el indicador del modo de interpredicción usando un solo bit cuando la PU está restringida a la interpredicción unidireccional puede incrementar la eficacia de la codificación.
[0083] Además, para codificar entrópicamente el indicador de modo de interpredicción de una PU en un segmento B si la PU está restringida a la interpredicción unidireccional, se pueden usar unos contextos diferentes a los que se usan si la PU no está restringida a la interpredicción unidireccional. Esto puede incrementar aún más la eficacia de codificación.
[0084] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que está configurado para implementar las técnicas de la presente divulgación. La FIG. 2 se proporciona con propósitos explicativos y no se debe considerar limitante de las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un codificador de vídeo 20 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0085] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una pluralidad de componentes funcionales. Los componentes funcionales del codificador de vídeo 20 incluyen un módulo de predicción 100, un módulo de generación de residuo 102, un módulo de transformada 104, un módulo de cuantificación 106, un módulo de cuantificación inversa 108, un módulo de transformada inversa 110, un módulo de reconstrucción 112, un módulo de filtro 113, un búfer de imágenes descodificadas 114 y un módulo de codificación entrópica 116. El módulo de predicción 100 incluye un módulo de interpredicción 121, un módulo de estimación de movimiento 122, un módulo de compensación de movimiento 124 y un módulo de intrapredicción 126. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales. Además, el módulo de estimación de movimiento 122 y el módulo de compensación de movimiento 124 pueden estar altamente integrados, pero están representados en el ejemplo de la FIG. 2 por separado con propósitos explicativos.
[0086] El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede recibir los datos de vídeo desde diversas fuentes. Por ejemplo, el codificador de vídeo 20 puede recibir los datos de vídeo desde la fuente de vídeo 18 (FIG. 1) u otra fuente. Los datos de vídeo pueden representar una serie de imágenes. Para codificar los datos de vídeo, el codificador de vídeo 20 puede realizar una operación de codificación en cada una de las imágenes. Como parte de una realización de la operación de codificación en una imagen, el codificador de vídeo 20 puede realizar operaciones de codificación en cada segmento de la imagen. Como parte de una realización de una operación de codificación en un segmento, el codificador de vídeo 20 puede realizar operaciones de codificación en unos bloques de árbol del segmento.
[0087] Como parte de una realización de una operación de codificación en un bloque de árbol, el módulo de predicción 100 puede realizar una partición de árbol cuaternario en el bloque de vídeo del bloque de árbol para dividir el bloque de vídeo en bloques de vídeo progresivamente más pequeños. Cada uno de los bloques de vídeo más pequeños se puede asociar a una CU diferente. Por ejemplo, el módulo de predicción 100 puede partir un bloque de vídeo de un bloque de árbol en cuatro subbloques de igual tamaño, partir uno o más de los subbloques en cuatro subsubbloques de igual tamaño, y así sucesivamente.
[0088] Los tamaños de los bloques de vídeo asociados a las CU pueden variar desde muestras de 8x8 hasta el tamaño del bloque de árbol, con un máximo de 64x64 muestras o más. En la presente divulgación, "NxN" y "N por N" se pueden usar de manera intercambiable para hacer referencia a las dimensiones de muestra de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 muestras o 16 por 16 muestras. En general, un bloque de vídeo de 16x16 tiene dieciséis muestras en una dirección vertical (y = 16) y dieciséis muestras en una dirección horizontal (x = 16). Asimismo, un bloque de NxN tiene, en general, N muestras en una dirección vertical y N muestras en una dirección horizontal, donde N representa un valor entero no negativo.
[0089] Además, como parte de una realización de la operación de codificación en un bloque de árbol, el módulo de predicción 100 puede generar una estructura de datos jerárquica en árbol cuaternario para el bloque de árbol. Por ejemplo, un bloque de árbol puede corresponder a un nodo raíz de la estructura de datos en árbol cuaternario. Si el módulo de predicción 100 parte el bloque de vídeo del bloque de árbol en cuatro subbloques, el nodo raíz tiene cuatro nodos hijo en la estructura de datos en árbol cuaternario. Cada uno de los nodos hijo corresponde a una CU asociada a uno de los subbloques. Si la unidad de predicción 100 parte uno de los subbloques en cuatro subsubbloques, el nodo correspondiente a la CU asociada al subbloque puede tener cuatro nodos hijo, cada uno de los cuales corresponde a una CU asociada a uno de los subsubbloques.
[0090] Cada nodo de la estructura de datos en árbol cuaternario puede contener datos de sintaxis (por ejemplo, elementos de sintaxis) para el bloque de árbol o CU correspondiente. Por ejemplo, un nodo del árbol cuaternario puede incluir un indicador de división, que indica si el bloque de vídeo de la CU correspondiente al nodo está partido (es decir, dividido) en cuatro subbloques. Los elementos de sintaxis para una CU se pueden definir de manera recursiva y pueden depender de si el bloque de vídeo de la CU está dividido en subbloques. Una CU cuyo bloque de vídeo no está partido puede corresponder a un nodo hoja en la estructura de datos en árbol cuaternario. Un bloque de árbol codificado puede incluir datos basados en la estructura de datos en árbol cuaternario para un bloque de árbol correspondiente.
[0091] El codificador de vídeo 20 puede realizar operaciones de codificación en cada CU no partida de un bloque de árbol. Cuando el codificador de vídeo 20 realiza una operación de codificación en una CU no partida, el codificador de vídeo 20 puede generar una representación codificada de la CU no partida.
[0092] Como parte de la realización de una operación de codificación en una CU, el módulo de predicción 100 puede partir el bloque de vídeo de la CU entre una o más PU de la CU. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es de 2Nx2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir tamaños de PU de 2Nx2N o NxN para intrapredicción, y tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN o similares para interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden admitir una partición asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para interpredicción. En algunos ejemplos, el módulo de predicción 100 puede realizar una partición geométrica para partir el bloque de vídeo de una CU entre unas PU de la CU a lo largo de un límite que no coincide con los lados del bloque de vídeo de la CU en ángulos rectos.
[0093] El módulo de interpredicción 121 puede realizar una interpredicción en cada PU de la CU. La interpredicción puede proporcionar compresión temporal. Cuando el módulo de interpredicción 121 realiza una interpredicción en una PU, el módulo de interpredicción 121 puede generar datos predictivos para la PU. Los datos predictivos para la PU pueden incluir un bloque de vídeo predictivo que corresponde a la PU e información de movimiento para la PU. El módulo de estimación de movimiento 122 puede generar la información de movimiento para la PU. En algunos casos, el módulo de estimación de movimiento 122 puede usar un modo de fusión o un modo de AMVP para señalizar la información de movimiento de la PU. El módulo de compensación de movimiento 124 puede generar el bloque de vídeo predictivo de la PU en base a unas muestras de una o más imágenes distintas de la imagen actual (es decir, imágenes de referencia).
[0094] Los segmentos pueden ser segmentos I, segmentos P o segmentos B. El módulo de estimación de movimiento 122 y el módulo de compensación de movimiento 124 pueden realizar diferentes operaciones para una PU de una Cu dependiendo de si la PU está en un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU se intrapredicen. Por consiguiente, si la PU está en un segmento I, el módulo de estimación de movimiento 122 y el módulo de compensación de movimiento 124 no realizan una interpredicción en la PU.
[0095] Si la PU está en un segmento P, la imagen que contiene la PU se asocia a una lista de imágenes de referencia denominada "lista 0". En algunos ejemplos, cada imagen de referencia enumerada en la lista 0 aparece antes de la imagen actual en el orden de visualización. Cada una de las imágenes de referencia de la lista 0 contiene muestras que se pueden usar para la interpredicción de otras imágenes. Cuando el módulo de estimación de movimiento 122 realiza la operación de estimación de movimiento con respecto a una PU de un segmento P, el módulo de estimación de movimiento 122 puede buscar en las imágenes de referencia de la lista 0 un bloque de referencia para la PU. El bloque de referencia de la PU puede ser un conjunto de muestras, por ejemplo, un bloque de muestras, que se corresponde más estrechamente con las muestras del bloque de vídeo de la PU. El módulo de estimación de movimiento 122 puede usar una variedad de métricas para determinar cuán estrechamente un conjunto de muestras de una imagen de referencia se corresponde con las muestras del bloque de vídeo de una PU. Por ejemplo, el módulo de estimación de movimiento 122 puede determinar cuán estrechamente un conjunto de muestras de una imagen de referencia se corresponde con las muestras del bloque de vídeo de una PU mediante una suma de diferencias absolutas (SAD), una suma de diferencias cuadráticas (SSD) u otras métricas de diferencia.
[0096] Después de identificar o sintetizar un bloque de referencia de una PU de un segmento P, el módulo de estimación de movimiento 122 puede generar un índice de imagen de referencia que indica la imagen de referencia de la lista 0 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. El módulo de estimación de movimiento 122 puede generar vectores de movimiento con diferentes grados de precisión. Por ejemplo, el módulo de estimación de movimiento 122 puede generar vectores de movimiento con una precisión de muestra de un cuarto, una precisión de muestra de un octavo u otra precisión de muestra fraccionaria. En el caso de una precisión de muestra fraccionaria, los valores de bloque de referencia se pueden interpolar a partir de valores de muestra de posición de entero en la imagen de referencia. El módulo de estimación de movimiento 122 puede facilitar el índice de imagen de referencia y el vector de movimiento como la información de movimiento de la PU. El módulo de compensación de movimiento 124 puede generar un bloque de vídeo predictivo de la PU en base al bloque de referencia asociado a la información de movimiento de la PU.
[0097] Si la PU está en un segmento B, la imagen que contiene la PU puede estar asociada a dos listas de imágenes de referencia, denominadas "lista 0" y "lista 1". En algunos ejemplos, una imagen que contiene un segmento B puede estar asociada a una combinación de listas que es una combinación de la lista 0 y la lista 1. En algunos ejemplos, cada imagen de referencia enumerada en la lista 1 aparece después de la imagen actual en el orden de visualización.
[0098] Además, si la PU está en un segmento B, el módulo de estimación de movimiento 122 puede llevar a cabo una interpredicción unidireccional o una interpredicción bidireccional para la PU. Cuando el módulo de estimación de movimiento 122 realiza una interpredicción unidireccional para la PU, el módulo de estimación de movimiento 122 puede buscar en las imágenes de referencia de la lista 0 o la lista 1 un bloque de referencia para la PU. El módulo de estimación de movimiento 122 puede generar, a continuación, un índice de imagen de referencia que indica la imagen de referencia de la lista 0 o la lista 1 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia.
[0099] Cuando el módulo de estimación de movimiento 122 realiza una interpredicción bidireccional para una PU, el módulo de estimación de movimiento 122 puede buscar en las imágenes de referencia de la lista 0 un bloque de referencia para la PU y también puede buscar en las imágenes de referencia de la lista 1 otro bloque de referencia para la PU. El módulo de estimación de movimiento 122 puede generar a continuación índices de referencia que indican las imágenes de referencia de la lista 0 y la lista 1 que contienen los bloques de referencia y vectores de movimiento que indican desplazamientos espaciales entre los bloques de referencia y la PU. La información de movimiento de la PU puede incluir los índices de imagen de referencia y los vectores de movimiento de la PU. El módulo de compensación de movimiento 124 puede generar el bloque de vídeo predictivo de la PU en base a los bloques de referencia indicados por la información de movimiento de la PU.
[0100] El módulo de compensación de movimiento 124 puede generar el bloque de vídeo predictivo de la PU en base a uno o más bloques de referencia asociados a la información de movimiento de la PU. De acuerdo con las técnicas de la presente divulgación, el módulo de compensación de movimiento 124 puede determinar si la PU está restringida a la interpredicción unidireccional. Además, el módulo de compensación de movimiento 124 puede generar una lista de candidatos a fusión para la PU y determinar un candidato a fusión seleccionado en la lista de candidatos a fusión. Si la PU está restringida a la interpredicción unidireccional, el módulo de compensación de movimiento 124 puede generar el bloque de vídeo predictivo para la PU en base a no más de un bloque de referencia asociado a la información de movimiento especificada por el candidato a fusión seleccionado. Si la PU no está restringida a la interpredicción unidireccional, el módulo de compensación de movimiento 124 puede generar el bloque de vídeo predictivo para la PU en base a uno o más bloques de referencia asociados a la información de movimiento especificada por el candidato a fusión seleccionado.
[0101] Como parte de una realización de una operación de codificación en una CU, el módulo de intrapredicción 126 puede realizar una intrapredicción en unas PU de la CU. La intrapredicción puede proporcionar compresión espacial. Cuando el módulo de intrapredicción 126 realiza una intrapredicción en una PU, el módulo de intrapredicción 126 puede generar datos de predicción para la PU en base a unas muestras descodificadas de otras PU de la misma imagen. Los datos de predicción para la PU pueden incluir un bloque de vídeo predictivo y diversos elementos de sintaxis. El módulo de intrapredicción 126 puede realizar una intrapredicción en unas PU de segmentos I, segmentos P y segmentos B.
[0102] Para realizar una intrapredicción en una PU, el módulo de intrapredicción 126 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de datos de predicción para la PU. Cuando el módulo de intrapredicción 126 usa un modo de intrapredicción para generar un conjunto de datos de predicción para la PU, el módulo de intrapredicción 126 puede ampliar unas muestras de bloques de vídeo de unas PU vecinas por todo el bloque de vídeo de la PU en una dirección y/o gradiente asociados al modo de intrapredicción. Las PU vecinas pueden estar por encima, por encima y a la derecha, por encima y a la izquierda o a la izquierda de la PU, suponiendo un orden de codificación de izquierda a derecha y de arriba abajo para las PU, las CU y los bloques de árbol. El módulo de intrapredicción 126 puede usar diversos números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de la PU.
[0103] El módulo de predicción 100 puede seleccionar los datos de predicción para una PU entre los datos de predicción generados por el módulo de compensación de movimiento 124 para la PU o los datos de predicción generados por el módulo de intrapredicción 126 para la PU. En algunos ejemplos, el módulo de predicción 100 selecciona los datos de predicción para la PU en base a unas métricas de velocidad/distorsión de los conjuntos de datos de predicción.
[0104] Si el módulo de predicción 100 selecciona datos de predicción generados por el módulo de intrapredicción 126, el módulo de predicción 100 puede señalizar el modo de intrapredicción que se ha usado para generar los datos de predicción para la PU, es decir, el modo de intrapredicción seleccionado. El módulo de predicción 100 puede señalizar el modo de intrapredicción seleccionado de diversas maneras. Por ejemplo, es probable que el modo de intrapredicción seleccionado sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de intrapredicción de la PU vecina puede ser el modo más probable para la PU actual. Por tanto, el módulo de predicción 100 puede generar un elemento de sintaxis para indicar que el modo de intrapredicción seleccionado es el mismo que el modo de intrapredicción de la PU vecina.
[0105] Después de que el módulo de predicción 100 seleccione los datos de predicción para las PU de una CU, el módulo de generación de residuo 102 puede generar datos residuales para la CU sustrayendo los bloques de vídeo predictivos de las PU de la CU del bloque de vídeo de la CU. Los datos residuales de una CU pueden incluir bloques de vídeo 2D residuales que corresponden a diferentes componentes de muestra de las muestras del bloque de vídeo de la CU. Por ejemplo, los datos residuales pueden incluir un bloque de vídeo residual que corresponde a unas diferencias entre componentes de luminancia de unas muestras de los bloques de vídeo predictivos de las PU de la CU y componentes de luminancia de unas muestras del bloque de vídeo original de la CU. Además, los datos residuales de la CU pueden incluir bloques de vídeo residuales que corresponden a las diferencias entre unos componentes de crominancia de muestras de los bloques de vídeo predictivos de las PU de la CU y los componentes de crominancia de las muestras del bloque de vídeo original de la CU.
[0106] El módulo de predicción 100 puede realizar una partición de árbol cuaternario para partir los bloques de vídeo residuales de una CU en subbloques. Cada bloque de vídeo residual no dividido puede estar asociado a una TU diferente de la CU. Los tamaños y las posiciones de los bloques de vídeo residuales asociados a las TU de una CU pueden estar basados o no en los tamaños y las posiciones de unos bloques de vídeo asociados a las PU de la CU. Una estructura en árbol cuaternario conocida como "árbol cuaternario residual" (RQT) puede incluir nodos asociados a cada uno de los bloques de vídeo residuales. Las TU de una CU pueden corresponder a nodos hoja del RQT.
[0107] El módulo de transformada 104 puede generar uno o más bloques de coeficientes de transformada para cada Tu de una CU aplicando una o más transformadas a un bloque de vídeo residual asociado a la TU. Cada uno de los bloques de coeficientes de transformada puede ser una matriz 2D de coeficientes de transformada. El módulo de transformada 104 puede aplicar diversas transformadas al bloque de vídeo residual asociado a una TU. Por ejemplo, el módulo de transformada 104 puede aplicar una transformada de coseno discreta (DCT), una transformada direccional o una transformada conceptualmente similar al bloque de vídeo residual asociado a una TU.
[0108] Después de que el módulo de transformada 104 genere un bloque de coeficientes de transformada asociado a una TU, el módulo de cuantificación 106 puede cuantificar los coeficientes de transformada del bloque de coeficientes de transformada. El módulo de cuantificación 106 puede cuantificar un bloque de coeficientes de transformada asociado a una TU de una CU en base a un valor de QP asociado a la CU.
[0109] El codificador de vídeo 20 puede asociar un valor de QP a una CU de diversas maneras. Por ejemplo, el codificador de vídeo 20 puede realizar un análisis de velocidad-distorsión en un bloque de árbol asociado a la CU. En el análisis de velocidad-distorsión, el codificador de vídeo 20 puede generar múltiples representaciones codificadas del bloque de árbol realizando una operación de codificación múltiples veces en el bloque de árbol. El codificador de vídeo 20 puede asociar diferentes valores de QP a la CU cuando el codificador de vídeo 20 genera diferentes representaciones codificadas del bloque de árbol. El codificador de vídeo 20 puede señalizar que un valor de QP dado está asociado a la CU cuando el valor de QP dado está asociado a la CU en una representación codificada del bloque de árbol que tiene una velocidad de bits y una métrica de distorsión más bajas.
[0110] El módulo de cuantificación inversa 108 y el módulo de transformada inversa 110 pueden aplicar cuantificación inversa y transformadas inversas al bloque de coeficientes de transformada, respectivamente, para reconstruir un bloque de vídeo residual a partir del bloque de coeficientes de transformada. El módulo de reconstrucción 112 puede añadir el bloque de vídeo residual reconstruido a unas muestras correspondientes de uno o más bloques de vídeo predictivos generados por el módulo de predicción 100 para producir un bloque de vídeo reconstruido asociado a una TU. Cuando se reconstruyen bloques de vídeo para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir el bloque de vídeo de la CU.
[0111] Después de que el módulo de reconstrucción 112, representado como un sumador, reconstruya el bloque de vídeo de una CU, el módulo de filtro 113 puede realizar una operación de reducción de efecto bloque para reducir los artefactos de bloque en el bloque de vídeo asociado a la CU. Después de realizar la una o más operaciones de reducción de efecto bloque, el módulo de filtro 113 puede almacenar el bloque de vídeo reconstruido de la CU en el búfer de imágenes descodificadas 114. El módulo de estimación de movimiento 122 y el módulo de compensación de movimiento 124 pueden usar una imagen de referencia que contiene el bloque de vídeo reconstruido para realizar una interpredicción en unas PU de unas imágenes posteriores. Además, el módulo de intrapredicción 126 puede usar bloques de vídeo reconstruidos del búfer de imágenes descodificadas 114 para realizar una intrapredicción en otras PU en la misma imagen que la CU.
[0112] El módulo de codificación entrópica 116 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, el módulo de codificación entrópica 116 puede recibir bloques de coeficientes de transformada desde el módulo de cuantificación 106 y puede recibir elementos de sintaxis desde el módulo de predicción 100. Cuando el módulo de codificación entrópica 116 recibe los datos, el módulo de codificación entrópica 116 puede realizar una o más operaciones de codificación entrópica para generar datos codificados entrópicamente. Por ejemplo, el codificador de vídeo 20 puede realizar una operación de codificación de longitud variable adaptativa al contexto (CAVLC), una operación de CABAC, una operación de codificación de longitud de variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), una operación de codificación entrópica de partición en intervalos de probabilidad (PIPE) u otro tipo de operación de codificación entrópica en los datos. El módulo de codificación entrópica 116 puede facilitar un flujo de bits que incluye los datos codificados entrópicamente.
[0113] Como parte de una realización de una operación de codificación entrópica en los datos, el módulo de codificación entrópica 116 puede seleccionar un modelo de contexto. Si el módulo de codificación entrópica 116 está realizando una operación de CABAC, el modelo de contexto puede indicar estimaciones de probabilidades de que unos bins particulares tengan unos valores particulares. En el contexto de CABAC, el término "bin" se usa para hacer referencia a un bit de una versión binarizada de un elemento de sintaxis.
[0114] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que está configurado para implementar las técnicas de la presente divulgación. La FIG. 3 se proporciona con propósitos explicativos y no es limitante con respecto a las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un descodificador de vídeo 30 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0115] En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una pluralidad de componentes funcionales. Los componentes funcionales del descodificador de vídeo 30 incluyen un módulo de descodificación entrópica 150, un módulo de predicción 152, un módulo de cuantificación inversa 154, un módulo de transformada inversa 156, un módulo de reconstrucción 158, un módulo de filtro 159 y un búfer de imágenes descodificadas 160. El módulo de predicción 152 incluye un módulo de compensación de movimiento 162 y un módulo de intrapredicción 164. En algunos ejemplos, el descodificador de vídeo 30 puede realizar una pasada de descodificación, en general recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la FIG. 2. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0116] El descodificador de vídeo 30 puede recibir un flujo de bits que comprende datos de vídeo codificados. El flujo de bits puede incluir una pluralidad de elementos de sintaxis. Cuando el descodificador de vídeo 30 recibe el flujo de bits, el módulo de descodificación entrópica 150 puede realizar una operación de análisis de sintaxis en el flujo de bits. Como resultado de una realización de la operación de análisis de sintaxis en el flujo de bits, el módulo de descodificación entrópica 150 puede extraer elementos de sintaxis del flujo de bits. Como parte de una realización de la operación de análisis de sintaxis, el módulo de descodificación entrópica 150 puede descodificar entrópicamente unos elementos de sintaxis codificados entrópicamente del flujo de bits. El módulo de predicción 152, el módulo de cuantificación inversa 154, el módulo de transformada inversa 156, el módulo de reconstrucción 158 y el módulo de filtro 159 pueden realizar una operación de reconstrucción que genera datos de vídeo descodificados en base a los elementos de sintaxis extraídos del flujo de bits.
[0117] Como se analiza anteriormente, el flujo de bits puede comprender una serie de unidades de NAL. Las unidades de NAL del flujo de bits pueden incluir unidades de NAL de conjunto de parámetros de secuencia, unidades de NAL de conjunto de parámetros de imagen, unidades de NAL de SEI, etc. Como parte de una realización de la operación de análisis de sintaxis en el flujo de bits, el módulo de descodificación entrópica 150 puede realizar unas operaciones de análisis de sintaxis que extraen y descodifican entrópicamente conjuntos de parámetros de secuencia a partir de unidades de NAL de conjunto de parámetros de secuencia, conjuntos de parámetros de imagen a partir de unidades de NAL de conjunto de parámetros de imagen, datos de SEI a partir de unidades de NAL de SEI, etc.
[0118] Además, las unidades de NAL del flujo de bits pueden incluir unidades de NAL de segmentos codificados. Como parte de una realización de la operación de análisis de sintaxis en el flujo de bits, el módulo de descodificación entrópica 150 puede realizar unas operaciones de análisis de sintaxis que extraen y descodifican entrópicamente segmentos codificados a partir de las unidades de NAL de segmentos codificados. Cada uno de los segmentos codificados puede incluir una cabecera de segmento y datos de segmento. La cabecera de segmento puede contener elementos de sintaxis pertenecientes a un segmento. Los elementos de sintaxis de la cabecera de segmento pueden incluir un elemento de sintaxis que identifica un conjunto de parámetros de imagen asociado a una imagen que contiene el segmento. El módulo de descodificación entrópica 150 puede realizar unas operaciones de descodificación entrópica, tales como operaciones de descodificación de CABAC, en elementos de sintaxis de la cabecera de segmento codificado para recuperar la cabecera de segmento.
[0119] Como parte de una extracción de los datos de segmento de unidades de NAL de segmentos codificados, el módulo de descodificación entrópica 150 puede realizar unas operaciones de análisis de sintaxis que extraen elementos de sintaxis de las CU codificadas en los datos de segmento. Los elementos de sintaxis extraídos pueden incluir elementos de sintaxis asociados a bloques de coeficientes de transformada. El módulo de descodificación entrópica 150 puede realizar a continuación unas operaciones de descodificación de CABAC en algunos de los elementos de sintaxis.
[0120] Después de que el módulo de descodificación entrópica 150 realice una operación de análisis de sintaxis en una CU no partida, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en la CU no partida. Para realizar la operación de reconstrucción en una CU no partida, el descodificador de vídeo 30 puede realizar una operación de reconstrucción en cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el descodificador de vídeo 30 puede reconstruir un bloque de vídeo residual asociado a la CU.
[0121] Como parte de una realización de una operación de reconstrucción en una TU, el módulo de cuantificación inversa 154 puede cuantificar inversamente, es decir, descuantificar, un bloque de coeficientes de transformada asociado a la TU. El módulo de cuantificación inversa 154 puede cuantificar inversamente el bloque de coeficientes de transformada de una manera similar a los procesos de cuantificación inversa propuestos para la HEVC o definidos por la norma de descodificación H.264. El módulo de cuantificación inversa 154 puede utilizar un parámetro de cuantificación QP calculado por el codificador de vídeo 20 para una CU del bloque de coeficientes de transformada para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa para que el módulo de cuantificación inversa 154 lo aplique.
[0122] Después de que el módulo de cuantificación inversa 154 cuantifique inversamente un bloque de coeficientes de transformada, el módulo de transformada inversa 156 puede generar un bloque de vídeo residual para la TU asociada al bloque de coeficientes de transformada. El módulo de transformada inversa 156 puede aplicar una transformada inversa al bloque de coeficientes de transformada para generar el bloque de vídeo residual para la TU. Por ejemplo, el módulo de transformada inversa 156 puede aplicar una DCT inversa, una transformada de enteros inversa, una transformada de Karhunen-Loeve (KLT) inversa, una transformada de rotación inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes de transformada.
[0123] En algunos ejemplos, el módulo de transformada inversa 156 puede determinar una transformada inversa que se va a aplicar al bloque de coeficientes de transformada en base a una señalización del codificador de vídeo 20. En dichos ejemplos, el módulo de transformada inversa 156 puede determinar la transformada inversa en base a una transformada señalizada en el nodo raíz de un árbol cuaternario para un bloque de árbol asociado al bloque de coeficientes de transformada. En otros ejemplos, el módulo de transformada inversa 156 puede inferir la transformada inversa a partir de una o más características de codificación, tales como un tamaño de bloque, un modo de codificación o similares. En algunos ejemplos, el módulo de transformada inversa 156 puede aplicar una transformada inversa en cascada.
[0124] Si una PU se codifica en modo de salto o la información de movimiento de la PU se codifica usando el modo de fusión, el módulo de compensación de movimiento 162 puede generar una lista de candidatos a fusión para la PU. El módulo de compensación de movimiento 162 puede identificar a continuación un candidato a fusión seleccionado en la lista de candidatos a fusión. Después de identificar el candidato a fusión seleccionado en la lista de candidatos a fusión, el módulo de compensación de movimiento 162 puede generar un bloque de vídeo predictivo para la PU en base al uno o más bloques de referencia asociados a la información de movimiento indicada por el candidato a fusión seleccionado.
[0125] De acuerdo con las técnicas de la presente divulgación, el módulo de compensación de movimiento 162 puede determinar si una PU está restringida a la interpredicción unidireccional. Además, el módulo de compensación de movimiento 162 puede generar una lista de candidatos a fusión para la PU y determinar un candidato a fusión seleccionado en la lista de candidatos a fusión. Si la PU está restringida a la interpredicción unidireccional, el módulo de compensación de movimiento 162 puede generar un bloque de vídeo predictivo para la PU en base a no más de un bloque de referencia asociado a la información de movimiento especificada por el candidato a fusión seleccionado. De lo contrario, si la PU no está restringida a la interpredicción unidireccional, el módulo de compensación de movimiento 162 puede generar el bloque de vídeo predictivo para la PU en base a uno o más bloques de referencia asociados a la información de movimiento especificada por el candidato a fusión seleccionado.
[0126] Si la información de movimiento de una PU se codifica usando el modo de AMVP, el módulo de compensación de movimiento 162 puede generar una lista de candidatos a predictor de MV de lista 0 y/o una lista de candidatos a predictor de MV de lista 1. El módulo de compensación de movimiento 162 puede determinar a continuación un candidato a predictor de MV de lista 0 seleccionado y/o un candidato a predictor de MV de lista 1 seleccionado. A continuación, el módulo de compensación de movimiento 162 puede determinar un vector de movimiento de lista 0 para la PU y/o un vector de movimiento de lista 1 para la PU en base a una MVD de lista 0, una MVD de lista 1, un vector de movimiento de lista 0 especificado por el candidato a predictor de MV de lista 0 seleccionado, y/o un vector de movimiento de lista 1 especificado por el candidato a predictor de MV de lista 1 seleccionado. El módulo de compensación de movimiento 162 puede generar a continuación un bloque de vídeo predictivo para la PU en base a unos bloques de referencia asociados con el vector de movimiento de lista 0 y un índice de imagen de referencia de lista 0 y/o un vector de movimiento de lista 1 y un índice de imagen de referencia de lista 1.
[0127] En algunos ejemplos, el módulo de compensación de movimiento 162 puede delimitar el bloque de vídeo predictivo de una PU realizando una interpolación en base a unos filtros de interpolación. Los identificadores para los filtros de interpolación que se van a usar para la compensación de movimiento con una precisión de submuestra se pueden incluir en los elementos de sintaxis. El módulo de compensación de movimiento 162 puede usar los mismos filtros de interpolación usados por el codificador de vídeo 20 durante la generación del bloque de vídeo predictivo de la PU para calcular valores interpolados para muestras de subentero de un bloque de referencia. El módulo de compensación de movimiento 162 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de acuerdo con una información sintáctica recibida y usar los filtros de interpolación para producir el bloque de vídeo predictivo.
[0128] Si se codifica una PU usando intrapredicción, el módulo de intrapredicción 164 puede realizar una intrapredicción para generar un bloque de vídeo predictivo para la PU. Por ejemplo, el módulo de intrapredicción 164 puede determinar un modo de intrapredicción para la PU en base a unos elementos de sintaxis del flujo de bits. El flujo de bits puede incluir elementos de sintaxis que el módulo de intrapredicción 164 puede usar para determinar el modo de intrapredicción de la PU.
[0129] En algunos casos, los elementos de sintaxis pueden indicar que el módulo de intrapredicción 164 ha de usar el modo de intrapredicción de otra PU para determinar el modo de intrapredicción de la PU actual. Por ejemplo, puede ser probable que el modo de intrapredicción de la PU actual sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de intrapredicción de la PU vecina puede ser el modo más probable para la PU actual. Por consiguiente, en este ejemplo, el flujo de bits puede incluir un pequeño elemento de sintaxis que indica que el modo de intrapredicción de la PU es el mismo que el modo de intrapredicción de la PU vecina. El módulo de intrapredicción 164 puede usar a continuación el modo de intrapredicción para generar datos de predicción (por ejemplo, muestras predictivas) para la PU en base a los bloques de vídeo de unas PU espacialmente vecinas.
[0130] El módulo de reconstrucción 158 puede usar los bloques de vídeo residuales asociados a las TU de una CU y los bloques de vídeo predictivos de las PU de la CU, es decir, datos de intrapredicción o datos de interpredicción, según corresponda, para reconstruir el bloque de vídeo de la CU. En particular, el módulo de reconstrucción 158 puede añadir los datos residuales a los datos predictivos para reconstruir los datos de vídeo codificados. Por tanto, el descodificador de vídeo 30 puede generar un bloque de vídeo predictivo y un bloque de vídeo residual en base a unos elementos de sintaxis del flujo de bits y puede generar un bloque de vídeo en base al bloque de vídeo predictivo y el bloque de vídeo residual.
[0131] Después de que el módulo de reconstrucción 158 reconstruya el bloque de vídeo de la CU, el módulo de filtro 159 puede realizar una operación de reducción de efecto bloque para reducir los artefactos de bloque asociados a la CU. Después de que el módulo de filtro 159 realice una operación de reducción de efecto bloque para reducir los artefactos de bloque asociados a la CU, el descodificador de vídeo 30 puede almacenar el bloque de vídeo de la CU en el búfer de imágenes descodificadas 160. El búfer de imágenes descodificadas 160 puede proporcionar imágenes de referencia para una posterior compensación de movimiento, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1. Por ejemplo, el descodificador de vídeo 30 puede realizar, en base a los bloques de vídeo del búfer de imágenes descodificadas 160, unas operaciones de intrapredicción o de interpredicción en unas PU de otras CU.
[0132] La FIG. 4 es un diagrama de flujo que ilustra una operación de compensación de movimiento 200 de ejemplo. Un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar una operación de compensación de movimiento 200. El codificador de vídeo puede realizar una operación de compensación de movimiento 200 para generar un bloque de vídeo predictivo para una PU actual.
[0133] Después de que el codificador de vídeo comience la operación de compensación de movimiento 200, el codificador de vídeo puede determinar si el modo de predicción para la PU actual es el modo de salto (202). Si el modo de predicción para la PU actual no es el modo de salto ("NO" en 202), el codificador de vídeo puede determinar si el modo de predicción para la PU actual es intermodo y que el modo de interpredicción de la PU actual es el modo de fusión (204). Si el modo de predicción de la PU actual es el modo de salto ("SÍ" en 202) o si el modo de predicción de la PU actual es intermodo y el modo de interpredicción de la PU actual es el modo de fusión ("SÍ" en 204), el codificador de vídeo puede generar una lista de candidatos a fusión para la PU actual (206). La lista de candidatos a fusión puede incluir una pluralidad de candidatos a fusión. Cada uno de los candidatos a fusión especifica un conjunto de información de movimiento, tal como uno o más vectores de movimiento, uno o más índices de imagen de referencia, un indicador de predicción de lista 0 y un indicador de predicción de lista 1. La lista de candidatos a fusión puede incluir uno o más candidatos a fusión unidireccionales o candidatos a fusión bidireccionales. En algunos ejemplos, el codificador de vídeo puede realizar la operación de ejemplo descrita a continuación con respecto a la FIG. 6 para generar la lista de candidatos a fusión.
[0134] Después de generar la lista de candidatos a fusión, el codificador de vídeo puede determinar un candidato a fusión seleccionado en la lista de candidatos a fusión (208). Si el codificador de vídeo es un codificador de vídeo, el codificador de vídeo puede seleccionar un candidato a fusión de la lista de candidatos a fusión en base a un análisis de velocidad-distorsión. Si el codificador de vídeo es un descodificador de vídeo, el codificador de vídeo puede seleccionar el candidato a fusión en base a un elemento de sintaxis (por ejemplo, merge_idx) que identifica una posición del candidato a fusión seleccionado en la lista de candidatos a fusión.
[0135] El codificador de vídeo puede determinar a continuación la información de movimiento de la PU actual en base a la información de movimiento especificada por el candidato a fusión seleccionado (210). La información de movimiento puede incluir uno o más vectores de movimiento e índices de imagen de referencia. El codificador de vídeo puede determinar la información de movimiento de la PU actual en base a la información de movimiento especificada por el candidato a fusión seleccionado de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar que la información de movimiento de la PU actual es la misma que la información de movimiento especificada por el candidato a fusión seleccionado.
[0136] Si el modo de interpredicción para la PU actual no es el modo de fusión ("NO" en 204), el codificador de vídeo puede determinar la información de movimiento de la PU actual usando el modo de AMVP (212). La FIG. 8, descrita en detalle a continuación, es un diagrama de flujo que ilustra una operación de ejemplo para determinar la información de movimiento de una PU usando el modo de AMVP.
[0137] Después de determinar la información de movimiento de la PU actual, el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional (214). El codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar que la PU actual está restringida a la interpredicción unidireccional si una característica de tamaño de la PU actual es menor que un umbral. En este ejemplo, el codificador de vídeo puede determinar que la PU actual está restringida a la interpredicción unidireccional si el tamaño de la PU es 8x4, 4x8 o menor. En otro ejemplo, si el codificador de vídeo es un descodificador de vídeo, el descodificador de vídeo puede determinar en base a un elemento de sintaxis del flujo de bits recibido que la PU actual está restringida a la interpredicción unidireccional.
[0138] Como respuesta a una determinación de que la PU actual está restringida a la interpredicción unidireccional ("SÍ" en 214), el codificador de vídeo puede generar un bloque de vídeo predictivo para la PU actual en base a no más de un bloque de referencia asociado a la información de movimiento de la PU (216) actual. Como se indica anteriormente, el bloque de referencia se puede identificar mediante la información de movimiento especificada por el candidato a fusión seleccionado, o sintetizar a partir de muestras de referencia identificadas mediante la información de movimiento especificada por el candidato a fusión seleccionado.
[0139] Por otro lado, como respuesta a una determinación de que la PU actual no está restringida a la interpredicción unidireccional ("NO" en 214), el codificador de vídeo puede generar un bloque de vídeo predictivo para la PU actual en base a uno o más bloques de referencia asociados a la información de movimiento de la PU actual (218). Como se indica anteriormente, el uno o más bloques de referencia se pueden identificar mediante la información de movimiento especificada por el candidato a fusión seleccionado y/o sintetizar a partir de muestras de referencia identificadas mediante la información de movimiento especificada por el candidato a fusión seleccionado.
[0140] La FIG. 5 es un diagrama de flujo que ilustra otra operación de compensación de movimiento 270 de ejemplo. Un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar una operación de compensación de movimiento 270 para generar un bloque predictivo para una PU actual. El codificador de vídeo puede realizar una operación de compensación de movimiento 270 como alternativa a una realización de una operación de compensación de movimiento 200.
[0141] Después de que el codificador de vídeo comience la operación de movimiento 270, el codificador de vídeo puede determinar si el modo de predicción para la PU actual es el modo de salto (272). Si el modo de predicción para la PU actual no es el modo de salto ("NO" en 272), el codificador de vídeo puede determinar si el modo de predicción para la PU actual es intermodo y que el modo de interpredicción de la PU actual es el modo de fusión (273). Si el modo de predicción de la PU actual es el modo de salto ("SÍ" en 272) o si el modo de predicción de la PU actual es intermodo y el modo de interpredicción de la PU actual es el modo de fusión ("SÍ" en 273), el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional (274). Si la PU actual está restringida a la interpredicción unidireccional ("SÍ" en 274), el codificador de vídeo puede generar una lista de candidatos a fusión para la PU actual de modo que la lista de candidatos a fusión no incluya candidatos a fusión bidireccionales (276). El codificador de vídeo puede usar la operación de ejemplo ilustrada en la FIG. 6 para generar la lista de candidatos a fusión para la PU actual.
[0142] Por otro lado, si la PU actual no está restringida a la interpredicción unidireccional ("NO" en 274), el codificador de vídeo puede generar una lista de candidatos a fusión que puede incluir candidatos a fusión unidireccionales y bidireccionales (278). En algunos ejemplos, el codificador de vídeo puede realizar la operación de ejemplo descrita a continuación con respecto a la FIG. 6 para generar la lista de candidatos a fusión. Por consiguiente, si la PU actual no está restringida a la interpredicción unidireccional, la lista de candidatos a fusión puede incluir candidatos a fusión unidireccionales y candidatos a fusión bidireccionales.
[0143] Después de generar la lista de candidatos a fusión para la PU actual, el codificador de vídeo puede determinar un candidato a fusión seleccionado en la lista de candidatos a fusión (280). Si el codificador de vídeo es un codificador de vídeo, el codificador de vídeo puede seleccionar un candidato a fusión de la lista de candidatos a fusión en base a un análisis de velocidad-distorsión. Si el codificador de vídeo es un descodificador de vídeo, el codificador de vídeo puede seleccionar el candidato a fusión en base a un elemento de sintaxis (por ejemplo, merge_idx) que identifica una posición del candidato a fusión seleccionado en la lista de candidatos a fusión.
[0144] El codificador de vídeo puede determinar a continuación la información de movimiento de la PU actual en base a la información de movimiento especificada por el candidato a fusión seleccionado (282). La información de movimiento especificada por el candidato a fusión seleccionado puede especificar uno o más vectores de movimiento y uno o más índices de imagen de referencia. El codificador de vídeo puede determinar la información de movimiento de la PU actual en base a la información de movimiento especificada por el candidato a fusión seleccionado de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar que la información de movimiento de la PU actual es la misma que la información de movimiento especificada por el candidato a fusión seleccionado.
[0145] Si el modo de interpredicción para la PU actual no es el modo de fusión ("NO" en 273), el codificador de vídeo puede determinar la información de movimiento de la PU actual usando el modo de AMVP (284). La FIG. 8, descrita en detalle a continuación, es un diagrama de flujo que ilustra una operación de ejemplo para determinar la información de movimiento de una PU usando el modo de AMVP.
[0146] Después de determinar la información de movimiento de la PU actual, el codificador de vídeo puede generar un bloque de vídeo predictivo para la PU actual (286). Debido a que la lista de candidatos a fusión solo incluye candidatos a fusión unidireccionales si la PU actual está restringida a la interpredicción unidireccional, el candidato a fusión seleccionado se asocia solo a un único bloque de referencia. Por consiguiente, si la PU actual está en un segmento B y está restringida a la interpredicción unidireccional, el bloque de vídeo predictivo para la PU actual puede estar basado en no más de un bloque de referencia asociado a la información de movimiento especificada por el candidato a fusión seleccionado.
[0147] Por otro lado, si la PU actual no está restringida a la interpredicción unidireccional, la lista de candidatos a fusión puede incluir candidatos a fusión unidireccionales y candidatos a fusión bidireccionales. Debido a que la lista de candidatos a fusión puede incluir candidatos a fusión unidireccionales y candidatos a fusión bidireccionales, el candidato a fusión seleccionado puede estar asociado a uno o dos bloques de referencia. Por consiguiente, si la PU actual está en un segmento B y no está restringida a la interpredicción unidireccional, el bloque de vídeo predictivo para la PU actual puede estar basado en uno o más bloques de referencia asociados al candidato a fusión seleccionado.
[0148] La FIG. 6 es un diagrama de flujo que ilustra una operación 300 de ejemplo para generar una lista de candidatos a fusión. Un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar una operación 300 para generar una lista de candidatos a fusión para una PU actual. El codificador de vídeo puede realizar la operación 300 cuando el modo de predicción de la PU actual es el modo de salto o cuando el modo de predicción de la PU actual es intermodo y el modo de interpredicción de la PU actual es el modo de fusión.
[0149] Después de que el codificador de vídeo comience la operación 300, el codificador de vídeo puede determinar la información de movimiento y las disponibilidades de los candidatos a fusión espacial (302). El codificador de vídeo puede determinar la información de movimiento de un candidato a fusión espacial en base a la información de movimiento de una PU que cubre una ubicación que es espacialmente vecina de la PU actual.
Por ejemplo, el codificador de vídeo puede determinar la información de movimiento de los candidatos a fusión espacial en base a la información de movimiento de las PU que cubren las ubicaciones izquierda, inferior izquierda, superior izquierda, superior y superior derecha de la PU actual.
[0150] El codificador de vídeo puede determinar la disponibilidad de un candidato a fusión espacial de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar que un candidato a fusión espacial no está disponible si el candidato a fusión espacial corresponde a una PU que se intrapredice, localizada fuera de la trama actual o localizada fuera del segmento actual. Además, el codificador de vídeo puede determinar que un candidato a fusión espacial no está disponible si la información de movimiento del candidato a fusión espacial es la misma que la información de movimiento de otro candidato a fusión espacial.
[0151] Además, el codificador de vídeo puede determinar la información de movimiento y la disponibilidad de un candidato a fusión temporal (304). El candidato a fusión temporal puede especificar la información de movimiento de una PU que está colocalizada con la PU actual, pero que está en una imagen diferente a la de la PU actual. El codificador de vídeo puede determinar la disponibilidad del candidato a fusión temporal de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar que el candidato a fusión temporal no está disponible si el candidato a fusión temporal corresponde a una PU que se intrapredice.
[0152] Después de generar los candidatos a fusión espacial y el candidato a fusión temporal, el codificador de vídeo puede incluir unos disponibles de los candidatos a fusión espacial y el candidato a fusión temporal en la lista de candidatos a fusión para la PU actual (306). El codificador de vídeo puede incluir un candidato a fusión espacial o temporal en la lista de candidatos a fusión si el candidato a fusión está disponible y puede excluir al candidato a fusión de la lista de candidatos a fusión si el candidato a fusión no está disponible. Al excluir a los candidatos a fusión no disponibles de la lista de candidatos a fusión, el codificador de vídeo puede, en efecto, realizar un proceso de poda [pruning] que poda (por ejemplo, omite) los candidatos a fusión no disponibles de la lista de candidatos a fusión.
[0153] En algunos ejemplos, el codificador de vídeo genera la lista de candidatos a fusión de modo que la lista de candidatos a fusión solo incluye candidatos a fusión unidireccionales. En algunos de dichos ejemplos, el codificador de vídeo puede determinar que los candidatos a fusión bidireccionales no están disponibles. Es decir, el codificador de vídeo puede determinar que un candidato a fusión no está disponible si el candidato a fusión especifica un vector de movimiento de lista 0 y un vector de movimiento de lista 1. Por consiguiente, si la PU actual está restringida a la predicción unidireccional, el codificador de vídeo puede determinar que los candidatos a fusión unidireccionales están disponibles, pero no los candidatos a fusión bidireccionales. Debido a que el codificador de vídeo puede no incluir candidatos a fusión no disponibles en la lista de candidatos a fusión, la lista de candidatos a fusión puede incluir, en algunos ejemplos, solo candidatos a fusión unidireccionales. En este ejemplo, el codificador de vídeo, de hecho, puede realizar un proceso de poda que poda candidatos a fusión bidireccionales de la lista de fusión.
[0154] En otros ejemplos donde el codificador de vídeo genera la lista de candidatos a fusión de modo que la lista de candidatos a fusión solo incluye candidatos a fusión unidireccionales, el codificador de vídeo puede convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales y a continuación incluir unos disponibles de los candidatos a fusión unidireccionales en la lista de candidatos a fusión. En dichos ejemplos, el codificador de vídeo puede no añadir un candidato a fusión unidireccional a la lista de candidatos a fusión si el candidato a fusión unidireccional es el mismo que un candidato a fusión unidireccional que ya se ha añadido a la lista de candidatos a fusión. De esta manera, el codificador de vídeo puede podar candidatos a fusión unidireccionales duplicados de la lista de candidatos a fusión. Al convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales antes de podar candidatos a fusión unidireccionales duplicados de la lista de candidatos a fusión, el codificador de vídeo tal vez podría evitar candidatos a fusión redundantes en la lista de candidatos a fusión después de podar. Convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales antes de podar candidatos a fusión unidireccionales duplicados puede incrementar la complejidad del hardware del codificador de vídeo. Además, el codificador de vídeo puede convertir múltiples candidatos a fusión bidireccionales que son iguales en candidatos a fusión unidireccionales.
[0155] En otros ejemplos, el codificador de vídeo puede incluir inicialmente candidatos a fusión bidireccionales disponibles en la lista de candidatos a fusión para la PU actual. A continuación, el codificador de vídeo puede podar candidatos a fusión duplicados de la lista de candidatos a fusión. Después de que el codificador de vídeo haya generado la lista de candidatos a fusión, el codificador de vídeo puede determinar el candidato a fusión seleccionado de la lista de candidatos a fusión y convertir el candidato a fusión seleccionado en un candidato a fusión unidireccional si el candidato a fusión seleccionado es un candidato a fusión bidireccional. En este ejemplo, el codificador de vídeo puede convertir eficazmente el candidato a fusión bidireccional seleccionado en un candidato a fusión unidireccional usando solo el bloque de referencia indicado por el vector de movimiento de lista 0 o el vector de movimiento de lista 1 para generar el bloque de vídeo predictivo para la PU actual.
[0156] Al contrario que convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales antes de podar los candidatos a fusión duplicados de la lista de candidatos a fusión, convertir el candidato a fusión bidireccional seleccionado en un candidato a fusión unidireccional después de podar los candidatos a fusión duplicados de la lista de candidatos a fusión puede implicar solo una única conversión, en lugar de múltiples conversiones. Por ejemplo, si la conversión se produce después de podar candidatos a fusión duplicados, el candidato a fusión seleccionado es el tercer candidato a fusión de la lista de candidatos a fusión y el tercer candidato a fusión es un candidato a fusión bidireccional, el codificador de vídeo puede solo convertir el tercer candidato a fusión en un candidato a fusión unidireccional. En este ejemplo, si la conversión se produce antes de podar los candidatos a fusión duplicados, el candidato a fusión seleccionado es el tercer candidato a fusión de la lista de candidatos a fusión y el tercer candidato a fusión es un candidato a fusión bidireccional, el codificador de vídeo puede tener que convertir tres candidatos a fusión bidireccionales antes de que el codificador de vídeo pueda determinar el candidato a fusión seleccionado debido a una realización de la operación de poda después de la conversión.
[0157] El codificador de vídeo puede generar diferentes listas de candidatos a fusión dependiendo de si el codificador de vídeo convierte candidatos a fusión bidireccionales en candidatos a fusión unidireccionales antes o después de podar candidatos a fusión duplicados de la lista de candidatos a fusión. Por ejemplo, el codificador de vídeo puede convertir candidatos a fusión bidireccionales en candidatos a fusión unidireccionales tomando los vectores de movimiento de lista 0 de los candidatos a fusión bidireccionales e ignorando los vectores de movimiento de lista 1 de los candidatos a fusión bidireccionales. En este ejemplo, un primer candidato a fusión puede ser unidireccional y puede especificar un vector de movimiento de lista 0 que es igual a un valor MV1. En este ejemplo, un segundo candidato a fusión puede ser bidireccional y puede especificar un vector de movimiento de lista 0 que es igual a MV1 y un vector de movimiento de lista 1 que es igual a un valor MV2. Los candidatos a fusión primero y segundo pueden especificar los mismos índices de imagen de referencia de lista 0. En este ejemplo, si el codificador de vídeo convierte el segundo candidato a fusión en un candidato a fusión unidireccional antes de podar candidatos a fusión duplicados de la lista de candidatos a fusión, puede haber dos candidatos a fusión unidireccionales que son iguales a MV1. En consecuencia, el codificador de vídeo puede podar el candidato a fusión unidireccional generado a partir del segundo candidato a fusión porque es redundante con respecto al primer candidato a fusión. Como resultado, el codificador de vídeo puede incluir solo un candidato a fusión (por ejemplo, el primer candidato a fusión) en la lista de candidatos a fusión.
[0158] Sin embargo, en el ejemplo del párrafo previo, si el codificador de vídeo convierte el segundo candidato a fusión en un candidato a fusión unidireccional después de podar candidatos a fusión duplicados de la lista de candidatos a fusión, el codificador de vídeo puede incluir tanto el primer como el segundo candidato a fusión en la lista de candidatos a fusión. Después de incluir el primer y el segundo candidatos a fusión en la lista de candidatos a fusión, el codificador de vídeo puede convertir el segundo candidato a fusión en un candidato a fusión unidireccional tomando (es decir, manteniendo) el vector de movimiento de lista 0 del segundo candidato a fusión e ignorando el vector de movimiento de lista 1 del segundo candidato a fusión. Por tanto, la lista de candidatos a fusión, de hecho, puede incluir dos candidatos a fusión, ambos de los cuales especifican vectores de movimiento de lista 0 que son iguales a MV1.
[0159] Después de incluir los candidatos a fusión disponibles en la lista de candidatos a fusión, el codificador de vídeo puede determinar si la PU actual está en un segmento B (308). Como respuesta a una determinación de que la PU actual está en un segmento B ("SÍ" en 308), el codificador de vídeo puede realizar un proceso que genera cero o más candidatos a fusión artificiales e incluye los candidatos a fusión artificiales en la lista de candidatos a fusión (310). La FIG. 7, descrita en detalle a continuación, ilustra un proceso de ejemplo para generar candidatos a fusión artificiales.
[0160] Como respuesta a una determinación de que la PU actual no está en un segmento B ("NO" en 308) o después de realizar el proceso que genera candidatos a fusión artificiales, el codificador de vídeo puede determinar si el número de candidatos a fusión de la lista de candidatos a fusión es menor. que el número máximo de candidatos a fusión (312). Si el número de candidatos a fusión de la lista de candidatos a fusión no es menor que el número máximo de candidatos a fusión ("NO" en 312), el codificador de vídeo habrá terminado de generar la lista de candidatos a fusión.
[0161] Sin embargo, como respuesta a una determinación de que el número de candidatos a fusión de la lista de candidatos a fusión es menor que el número máximo de candidatos a fusión ("SÍ" en 312), el codificador de vídeo puede generar un candidato a fusión de valor cero (314). Si la PU actual está en un segmento P, el candidato a fusión de valor cero puede especificar un vector de movimiento de lista 0 que tiene una magnitud igual a cero. Si la PU actual está en un segmento B y la PU actual no está restringida a la interpredicción unidireccional, el candidato a fusión de valor cero puede especificar un vector de movimiento de lista 0 que tiene una magnitud igual a cero y un vector de movimiento de lista 1 que tiene una magnitud igual a cero. En algunos ejemplos, el candidato a fusión de valor cero puede especificar un vector de movimiento de lista 0 o un vector de movimiento de lista 1 que tiene una magnitud igual a cero si la PU actual está en un segmento B y la PU actual está restringida a la interpredicción unidireccional. El codificador de vídeo puede incluir a continuación el candidato a fusión de valor cero en la lista de candidatos a fusión (316).
[0162] Después de incluir el candidato a fusión de valor cero en la lista de candidatos a fusión, el codificador de vídeo puede determinar nuevamente si el número de candidatos a fusión de la lista de candidatos a fusión es menor que el número máximo de candidatos a fusión (312) y, de no ser así, el codificador de vídeo puede generar un candidato a fusión de valor cero adicional. De esta manera, el codificador de vídeo puede continuar generando candidatos a fusión de valor cero e incluyendo candidatos a fusión de valor cero en la lista de candidatos a fusión hasta que el número de candidatos a fusión de la lista de candidatos a fusión sea igual al número máximo de candidatos a fusión.
[0163] La FIG. 7 es un diagrama de flujo que ilustra un proceso 350 de ejemplo para generar candidatos a fusión artificiales. Un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar el proceso 350 para generar candidatos a fusión artificiales para su inclusión en una lista de candidatos a fusión para una PU actual.
[0164] Después de que el codificador de vídeo comience el proceso 350, el codificador de vídeo puede determinar si se ha de generar un candidato a fusión artificial (352). El codificador de vídeo puede determinar si se ha de generar un candidato a fusión artificial de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar si el número de candidatos a fusión artificiales de la lista de candidatos a fusión es igual al número total de candidatos artificiales únicos que se pueden generar en base a los candidatos a fusión originales de la lista de candidatos a fusión. Los candidatos a fusión originales pueden ser candidatos a fusión que especifican la información de movimiento de las PU distintas de la PU actual. Además, en este ejemplo, el codificador de vídeo puede determinar si la lista de candidatos a fusión incluye un número máximo de candidatos a fusión. En este ejemplo, si ambas de estas condiciones son falsas, el codificador de vídeo puede tomar la determinación de generar un candidato a fusión artificial.
[0165] Si el codificador de vídeo toma la determinación de generar un candidato a fusión artificial ("SÍ" en 352), el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional (354). Como se describe anteriormente, el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional de diversas maneras. Por ejemplo, el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional en base a una característica de tamaño de la PU actual. En otro ejemplo, el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional en base a un parámetro indicado en los elementos de sintaxis del bloque de árbol actual, la CU actual o la PU actual, o en una cabecera de segmento, un PPS, un APS, un SPS o en otro conjunto de parámetros. En algunos ejemplos, un parámetro de un bloque de árbol puede especificar que todas las PU asociadas al bloque de árbol están restringidas a la interpredicción unidireccional. En algunos ejemplos, un parámetro de una CU puede especificar que todas las PU asociadas a la CU están restringidas a la interpredicción unidireccional. En algunos ejemplos, un parámetro de un PPS puede especificar que todas las PU asociadas a imágenes asociadas al PPS están restringidas a la interpredicción unidireccional. En algunos ejemplos, un parámetro de un APS puede especificar que todas las PU asociadas a imágenes asociadas al APS están restringidas a la interpredicción unidireccional. En algunos ejemplos, un parámetro de un SPS puede especificar que todas las PU asociadas a imágenes en una secuencia asociada al SPS están restringidas a la interpredicción unidireccional.
[0166] Como respuesta a una determinación de que la PU actual está restringida a la interpredicción unidireccional ("SÍ" en 354), el codificador de vídeo puede generar un candidato a fusión unidireccional artificial (356). Después de generar el candidato a fusión unidireccional artificial, el codificador de vídeo puede incluir el candidato a fusión unidireccional artificial en la lista de candidatos a fusión (358). Después de incluir el candidato a fusión unidireccional artificial en la lista de candidatos a fusión, el codificador de vídeo puede determinar si ha de generar otro candidato a fusión artificial (352) y, de ser así, generar otro candidato a fusión artificial.
[0167] El codificador de vídeo puede generar el candidato a fusión unidireccional artificial de diversas maneras. Por ejemplo, el codificador de vídeo puede generar el candidato a fusión unidireccional artificial tomando primero un par de candidatos a fusión unidireccionales que ya están en la lista de candidatos. Los candidatos a fusión unidireccionales primero y segundo pueden especificar los vectores de movimiento MV1 y MV2, respectivamente. En este ejemplo, el codificador de vídeo puede escalar a continuación el MV2 de acuerdo con una diferencia temporal entre la trama de referencia especificada por el primer candidato a fusión unidireccional y la trama de referencia especificada por el segundo candidato a fusión unidireccional. En este ejemplo, el codificador de vídeo puede generar un candidato a fusión unidireccional artificial que especifica la versión escalada de MV2. Por ejemplo, en este ejemplo, la imagen de referencia asociada al primer candidato a fusión unidireccional puede aparecer una imagen después de la imagen actual, y la imagen de referencia asociada al segundo candidato a fusión unidireccional puede aparecer cuatro imágenes después de la imagen actual. En este ejemplo, el codificador de vídeo puede dividir los componentes horizontal y vertical de MV2 por cuatro y usar este MV2 escalado con el índice de imagen de referencia correspondiente al MV1 como un candidato artificial. Se puede realizar un escalado similar para el MV1 en base al MV2.
[0168] En otro ejemplo, el codificador de vídeo puede generar un candidato a fusión unidireccional artificial que especifica uno de los vectores de movimiento especificados por un candidato a fusión bidireccional. Por ejemplo, un candidato a fusión bidireccional puede especificar un vector de movimiento de lista 0 y un vector de movimiento de lista 1. En este ejemplo, el codificador de vídeo puede generar un candidato a fusión unidireccional artificial que especifica el vector de movimiento de lista 0, pero no especifica el vector de movimiento de lista 1. En este ejemplo, el codificador de vídeo puede generar otro candidato a fusión unidireccional artificial que especifica el vector de movimiento de lista 1, pero no especifica el vector de movimiento de lista 0. De esta manera, el codificador de vídeo puede generar candidatos a fusión unidireccionales artificiales a partir de un candidato a fusión bidireccional espacial o un candidato a fusión temporal dividiendo el candidato a fusión bidireccional en dos candidatos a fusión unidireccionales, uno de un vector de movimiento de lista 0 y otro del vector de movimiento de lista 1. El codificador de vídeo puede incluir uno o ambos de los candidatos a fusión unidireccionales en la lista de candidatos a fusión. En otras palabras, el codificador de vídeo puede generar un candidato a fusión unidireccional artificial de modo que el candidato a fusión unidireccional artificial especifica un vector de movimiento especificado por el candidato a fusión bidireccional.
[0169] En ejemplos donde el codificador de vídeo genera candidatos a fusión unidireccionales artificiales en base a unos vectores de movimiento especificados por candidatos a fusión bidireccionales, el codificador de vídeo puede añadir los candidatos a fusión unidireccionales artificiales a la lista de candidatos a fusión de acuerdo con diversos órdenes. Por ejemplo, el codificador de vídeo puede añadir un candidato a fusión unidireccional artificial en base a un vector de movimiento de lista 0 de un primer candidato a fusión bidireccional, a continuación añadir un candidato a fusión unidireccional artificial en base a un vector de movimiento de lista 1 del primer candidato a fusión bidireccional, a continuación añadir un candidato a fusión unidireccional artificial en base a un vector de movimiento de lista 0 de un segundo candidato a fusión bidireccional, a continuación añadir un candidato a fusión unidireccional artificial en base a un vector de movimiento de lista 1 del segundo candidato a fusión bidireccional, y así sucesivamente.
[0170] Si la PU actual no está restringida a la interpredicción unidireccional ("NO" en 354), el codificador de vídeo puede generar un candidato a fusión bidireccional artificial (360). Como se menciona anteriormente, el codificador de vídeo puede determinar si la PU actual está restringida a la interpredicción unidireccional en base a diversos factores, tales como una característica de tamaño de la PU, un parámetro, etc. El codificador de vídeo puede generar el candidato a fusión bidireccional artificial de diversas maneras. Por ejemplo, el codificador de vídeo puede seleccionar una combinación de dos candidatos a fusión de la lista de candidatos a fusión. En este ejemplo, el codificador de vídeo puede determinar si el primero de los candidatos a fusión seleccionado especifica una imagen de referencia de la lista 0, si el segundo de los candidatos a fusión seleccionado especifica una imagen de referencia de la lista 1 y si las imágenes de referencia especificadas tienen diferentes números de orden de imagen. Si cada una de estas condiciones es verdadera, el codificador de vídeo puede generar un candidato a fusión bidireccional artificial que especifica el vector de movimiento de lista 0 del primer candidato a fusión de la combinación y el vector de movimiento de lista 1 del segundo candidato a fusión de la combinación. En algunos ejemplos, tales como el ejemplo de la FIG. 4, donde la lista de candidatos a fusión puede incluir candidatos a fusión unidireccionales y candidatos a fusión bidireccionales, el proceso 350 no incluye los actos 354, 356 y 358. En su lugar, el codificador de vídeo puede generar candidatos a fusión bidireccionales artificiales en las listas de candidatos a fusión para las PU en segmentos B.
[0171] Después de generar el candidato a fusión bidireccional artificial, el codificador de vídeo puede incluir el candidato a fusión bidireccional artificial en la lista de candidatos a fusión para la PU actual (362). El codificador de vídeo puede determinar a continuación si ha de generar otro candidato a fusión artificial (352), y así sucesivamente.
[0172] La FIG. 8 es un diagrama de flujo que ilustra una operación 400 de ejemplo para determinar la información de movimiento de una PU usando un modo de AMVP. Un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar una operación 400 para determinar la información de movimiento de una PU usando un modo de AMVP.
[0173] Después de que el codificador de vídeo comience la operación 400, el codificador de vídeo puede determinar si la interpredicción para Ja PU actual está basada en la lista 0 (402). Si la interpredicción para la PU actual está basada en la lista 0 ("SÍ" en 402), el codificador de vídeo puede generar una lista de candidatos a predictor de MV de lista 0 para la PU actual (404). La lista de candidatos a predictor de MV de lista 0 puede incluir dos candidatos a predictor de MV de lista 0. Cada uno de los candidatos a predictor de MV de lista 0 puede especificar un vector de movimiento de lista 0.
[0174] Después de generar la lista de candidatos a predictor de MV de lista 0, el codificador de vídeo puede determinar un candidato a predictor de MV de lista 0 seleccionado en la lista de candidatos a predictor de MV de lista 0 (406). El codificador de vídeo puede determinar el candidato a predictor de MV de lista 0 seleccionado en base a un indicador de predictor de MV de lista 0 ("mvp_10flag"). El codificador de vídeo puede determinar a continuación un vector de movimiento de lista 0 para la PU actual en base a la MVD de lista 0 para la PU actual y el vector de movimiento de lista 0 especificado por el candidato a predictor de MV de lista 0 seleccionado (408).
[0175] Además, después de determinar que la interpredicción para la PU actual no está basada en la lista 0 ("NO" en 402) o después de determinar el vector de movimiento de lista 0 para la PU actual (408), el codificador de vídeo puede determinar si la interpredicción para la PU actual está basada en la lista 1 o si la PU se interpredice bidireccionalmente (410). Si la interpredicción para la PU actual no está basada en la lista 1 y la PU actual no se interpredice bidireccionalmente ("NO" en 410), el codificador de vídeo habrá terminado de determinar la información de movimiento de la PU actual usando el modo de AMVP. Como respuesta a una determinación de que la interpredicción para la PU actual está basada en la lista 1 o que la PU actual se interpredice bidireccionalmente ("SÍ" en 410), el codificador de vídeo puede generar una lista de candidatos a predictor de MV de 1 lista para la PU actual (412). La lista de candidatos a predictor de MV de lista 1 puede incluir dos candidatos a predictor de MV de lista 1. Cada uno de los candidatos a predictor de MV de lista 1 puede especificar un vector de movimiento de lista 0.
[0176] Después de generar la lista de candidatos a predictor de MV de lista 1, el codificador de vídeo puede determinar un candidato a predictor de MV de lista 1 seleccionado en la lista de candidatos a predictor de MV de lista 1 (414). El codificador de vídeo puede determinar el candidato a predictor de MV de lista 1 seleccionado en base a un indicador de predictor de MV de lista 1 ("mvp_11_flag"). El codificador de vídeo puede determinar a continuación un vector de movimiento de lista 1 para la PU actual en base a una MVD de lista 1 para la PU actual y el vector de movimiento de lista 1 especificado por el candidato a predictor de MV de lista 1 seleccionado (416).
[0177] En algunos ejemplos, el codificador de vídeo puede no añadir candidatos a predictor de MV bidireccionales a las listas de candidatos a predictor de MV de lista 0 y de lista 1. En otras palabras, si un candidato a predictor de MV especifica un vector de movimiento de lista 0 y un vector de movimiento de lista 1, el codificador de vídeo puede excluir al candidato a predictor de MV de las listas de candidatos a predictor de MV de lista 0 y de lista 1. En su lugar, el codificador de vídeo puede añadir solo candidatos a predictor de MV unidireccionales a las listas de candidatos a predictor de MV de lista 0 y de lista 1. El codificador de vídeo puede lograr esto comprobando si cada candidato a predictor de MV posible y disponible es unidireccional, e incluyendo solo los candidatos a predictor de MV unidireccionales en las listas de candidatos a predictor de MV.
[0178] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir a través de, un medio legible por ordenador como una o más instrucciones o código, y ejecutar mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador que corresponden a un medio tangible, tales como 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) unos medios de almacenamiento tangibles legibles por ordenador que no son transitorios o a (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser unos medios cualesquiera disponibles a los que se puede acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, un código y/o unas estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0179] 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 se puede usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Asimismo, cualquier conexión recibe apropiadamente 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 están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en su lugar, se dirigen a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde los discos flexibles normalmente reproducen datos magnéticamente, mientras que los demás discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0180] 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 lógicas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes pueden ejecutar las instrucciones. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir 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 se puede proporcionar dentro de módulos de hardware y/o de software dedicados configurados para codificar y descodificar, o incorporar en un códec combinado. Asimismo, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0181] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de unos dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware o software. En su lugar, como se describe anteriormente, diversos componentes, módulos y unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
[0182] Se han descrito diversos ejemplos.

Claims (15)

REIVINDICACIONES
1. Un procedimiento (200) para codificar datos de vídeo, comprendiendo el procedimiento:
determinar (214) si una unidad de predicción, PU, en un segmento B está restringida a una interpredicción unidireccional;
generar (206) una lista de candidatos a fusión para la PU, en el que cada candidato a fusión especifica un conjunto de información de movimiento para otra PU que es espacialmente vecina de la PU o está colocalizada con la PU en una imagen diferente a la PU, en el que al menos uno de los candidatos a fusión es un candidato a fusión bidireccional;
podar candidatos a fusión duplicados de la lista de candidatos a fusión para generar una lista de candidatos a fusión podada;
cuando la PU está restringida a una interpredicción unidireccional, convertir un candidato a fusión bidireccional de la lista de candidatos a fusión podada en un candidato a fusión unidireccional después de generar la lista de candidatos a fusión podada;
determinar un candidato seleccionado de la lista de candidatos a fusión podada; y
generar un flujo de bits que incluye un elemento de sintaxis codificado que indica una posición en la lista de candidatos a fusión podada del candidato seleccionado para adoptar información de movimiento especificada por el candidato seleccionado de la lista de candidatos a fusión podada como información de movimiento de la PU.
2. Un procedimiento (200) para descodificar datos de vídeo, comprendiendo el procedimiento:
determinar (214) si una unidad de predicción, PU, en un segmento B está restringida a una interpredicción unidireccional;
generar (206) una lista de candidatos a fusión para la PU, en el que cada candidato a fusión especifica un conjunto de información de movimiento para otra PU que es espacialmente vecina de la PU o está colocalizada con la PU en una imagen diferente a la PU, en el que al menos uno de los candidatos a fusión es un candidato a fusión bidireccional;
podar candidatos a fusión duplicados de la lista de candidatos a fusión para generar una lista de candidatos a fusión podada;
determinar un candidato seleccionado en la lista de candidatos a fusión podada analizando sintácticamente a partir de un flujo de bits un elemento de sintaxis que indica una posición en la lista de candidatos a fusión podada del candidato seleccionado; y
determinar el candidato seleccionado en la posición en la lista de candidatos a fusión podada del candidato seleccionado, en el que cuando la PU está restringida a una interpredicción unidireccional y el candidato seleccionado es un candidato a fusión bidireccional, convertir el candidato a fusión bidireccional de la lista de candidatos a fusión podada en un candidato a fusión unidireccional después de una generación de la lista de candidatos a fusión podada; y
adoptar una información de movimiento especificada por el candidato seleccionado de la lista de candidatos a fusión podada como información de movimiento de la PU.
3. El procedimiento de la reivindicación 1 o 2, en el que determinar si la PU está restringida a una predicción unidireccional comprende:
determinar que la PU está restringida a una interpredicción unidireccional si una característica de tamaño de la PU está por debajo de un umbral; y
determinar que la PU no está restringida a una interpredicción unidireccional si la característica de tamaño de la PU no está por debajo del umbral.
4. El procedimiento de la reivindicación 3, en el que determinar que la PU está restringida a una interpredicción unidireccional si la característica de tamaño de la PU está por debajo del umbral comprende determinar que la PU está restringida a una interpredicción unidireccional si una altura o una anchura de un bloque de vídeo asociado a la PU está por debajo del umbral.
5. El procedimiento de la reivindicación 3, en el que determinar que la PU está restringida a una interpredicción unidireccional si la característica de tamaño de la PU está por debajo del umbral comprende determinar que la PU está restringida a una interpredicción unidireccional si una primera dimensión de un bloque de vídeo asociado a la PU es menor que el umbral y una segunda dimensión del bloque de vídeo asociado a la PU es menor o igual al umbral.
6. El procedimiento de la reivindicación 3, en el que determinar que la PU está restringida a una interpredicción unidireccional si la característica de tamaño de la PU está por debajo del umbral comprende determinar que la PU está restringida a una interpredicción unidireccional si una primera dimensión de un bloque de vídeo asociado a la PU es menor que un primer umbral y una segunda dimensión del bloque de vídeo asociado a la PU es menor que un segundo umbral.
7. El procedimiento de la reivindicación 6, en el que el primer umbral es el mismo que el segundo umbral.
8. El procedimiento de la reivindicación 3, en el que determinar si la PU está restringida a una predicción unidireccional comprende:
determinar que la PU está restringida a una interpredicción unidireccional si una característica de tamaño de una unidad de codificación, CU, asociada a la PU es menor o igual a un tamaño particular y la característica de tamaño de la PU está por debajo del umbral, en el que la característica de tamaño de la CU es una altura o una anchura de un bloque de vídeo asociado a la CU; y
determinar que la PU no está restringida a una interpredicción unidireccional si la característica de tamaño de la CU no es igual al tamaño particular y la característica de tamaño de la PU no está por debajo del umbral.
9. El procedimiento de la reivindicación 8, en el que el tamaño particular es igual a ocho y el umbral es igual a ocho.
10. El procedimiento de la reivindicación 1 o 2, en el que convertir el candidato a fusión bidireccional en el candidato a fusión unidireccional comprende convertir el candidato a fusión bidireccional en el candidato a fusión unidireccional de modo que el candidato a fusión unidireccional está asociado a una imagen de referencia de una lista de imágenes de referencia particular, en el que siempre que unos candidatos a fusión bidireccionales se convierten en candidatos a fusión unidireccionales, los candidatos a fusión unidireccionales se asocian con imágenes de referencia de la lista de imágenes de referencia particular.
11. El procedimiento de la reivindicación 1 o 2, en el que el procedimiento se realiza en un dispositivo informático móvil.
12. El procedimiento de la reivindicación 1 o 2, en el que convertir el candidato a fusión bidireccional comprende convertir el candidato a fusión bidireccional en un único candidato a fusión unidireccional asociado a una imagen de referencia de la lista 0.
13. Un producto de programa informático que comprende uno o más medios de almacenamiento legibles por ordenador que almacenan instrucciones que, cuando se ejecutan mediante un ordenador, hacen que el ordenador lleve a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 12.
14. Un dispositivo de codificación de vídeo (20), que comprende:
medios para determinar si una unidad de predicción, PU, en un segmento B está restringida a una interpredicción unidireccional;
medios para generar una lista de candidatos a fusión para la PU, en el que cada candidato a fusión especifica un conjunto de información de movimiento para otra PU que es espacialmente vecina de la PU actual o está colocalizada con la PU actual en una imagen diferente a la PU actual, en el que al menos uno de los candidatos a fusión es un candidato a fusión bidireccional;
medios para podar candidatos a fusión duplicados de la lista de candidatos a fusión para generar una lista de candidatos a fusión podada;
medios para convertir, cuando la PU está restringida a una interpredicción unidireccional, un candidato a fusión bidireccional de la lista de candidatos a fusión podada en un candidato a fusión unidireccional después de generar la lista de candidatos a fusión podada;
medios para determinar un candidato seleccionado en la lista de candidatos a fusión podada; y
medios para generar un flujo de bits que incluye un elemento de sintaxis codificado que indica una posición en la lista de candidatos a fusión podada del candidato seleccionado para adoptar una información de movimiento especificada por el candidato seleccionado de la lista de candidatos a fusión podada como información de movimiento de la PU.
15. Un dispositivo de descodificación de vídeo (30), que comprende:
medios para determinar si una unidad de predicción, PU, en un segmento B está restringida a una interpredicción unidireccional;
medios para generar una lista de candidatos a fusión para la PU, en el que cada candidato a fusión especifica un conjunto de información de movimiento para otra PU que es espacialmente vecina de la PU o está colocalizada con la PU en una imagen diferente a la PU, en el que al menos uno de los candidatos a fusión es un candidato a fusión bidireccional;
medios para podar candidatos a fusión duplicados de la lista de candidatos a fusión para generar una lista de candidatos a fusión podada;
medios para analizar sintácticamente a partir de un flujo de bits un elemento de sintaxis que indica una posición en la lista de candidatos a fusión podada del candidato seleccionado;
medios para determinar el candidato seleccionado en la posición en la lista de candidatos a fusión podada del candidato seleccionado, estando configurados además los medios para convertir el candidato a fusión bidireccional de la lista de candidatos a fusión podada en un candidato a fusión unidireccional después de una generación de la lista de candidatos a fusión podada cuando la PU está restringida a una interpredicción unidireccional y el candidato seleccionado es un candidato a fusión bidireccional; y
medios para adoptar una información de movimiento especificada por el candidato seleccionado de la lista de candidatos a fusión podada como información de movimiento de la PU.
ES13706801T 2012-02-08 2013-02-07 Restricción de unidades de predicción en segmentos b a interpredicción unidireccional Active ES2874848T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261596597P 2012-02-08 2012-02-08
US201261622968P 2012-04-11 2012-04-11
US13/628,562 US9451277B2 (en) 2012-02-08 2012-09-27 Restriction of prediction units in B slices to uni-directional inter prediction
PCT/US2013/025153 WO2013119816A1 (en) 2012-02-08 2013-02-07 Restriction of prediction units in b slices to uni-directional inter prediction

Publications (1)

Publication Number Publication Date
ES2874848T3 true ES2874848T3 (es) 2021-11-05

Family

ID=48902866

Family Applications (2)

Application Number Title Priority Date Filing Date
ES21152945T Active ES2977203T3 (es) 2012-02-08 2013-02-07 Restricción de unidades de predicción en segmentos B a interpredicción unidireccional
ES13706801T Active ES2874848T3 (es) 2012-02-08 2013-02-07 Restricción de unidades de predicción en segmentos b a interpredicción unidireccional

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES21152945T Active ES2977203T3 (es) 2012-02-08 2013-02-07 Restricción de unidades de predicción en segmentos B a interpredicción unidireccional

Country Status (22)

Country Link
US (2) US9451277B2 (es)
EP (2) EP2813080B1 (es)
JP (2) JP2015510357A (es)
KR (1) KR101825262B1 (es)
CN (2) CN104980762B (es)
AU (1) AU2013217035B2 (es)
BR (1) BR112014019444B1 (es)
CA (1) CA2862311C (es)
DK (1) DK2813080T3 (es)
ES (2) ES2977203T3 (es)
HK (1) HK1201000A1 (es)
HU (1) HUE054366T2 (es)
IL (1) IL233522A (es)
MY (1) MY168356A (es)
PH (1) PH12014501622B1 (es)
PL (1) PL3849182T3 (es)
RU (1) RU2620723C2 (es)
SG (1) SG11201403844PA (es)
SI (1) SI2813080T1 (es)
UA (1) UA114314C2 (es)
WO (1) WO2013119816A1 (es)
ZA (1) ZA201406544B (es)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106851304B (zh) * 2010-12-14 2019-08-30 M&K控股株式会社 用于解码运动画面的设备
KR101883932B1 (ko) * 2010-12-22 2018-07-31 엘지전자 주식회사 화면 내 예측 방법 및 이러한 방법을 사용하는 장치
WO2013005966A2 (ko) * 2011-07-01 2013-01-10 한국전자통신연구원 비디오 부호화 방법 및 복호화 방법과 이를 이용한 장치
IN2014CN02377A (es) 2011-09-29 2015-06-19 Sharp Kk
CN108632608B (zh) 2011-09-29 2022-07-29 夏普株式会社 图像解码装置、图像解码方法、图像编码装置及图像编码方法
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9426463B2 (en) 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US20150103911A1 (en) * 2012-04-15 2015-04-16 Samsung Electronics Co., Ltd. Method and apparatus for determining reference images for inter-prediction
US10721487B2 (en) 2012-04-17 2020-07-21 Texas Instruments Incorporated Converting a bi-predicted merging candidate in a merging candidate list for a prediction unit of a picture
US9591312B2 (en) * 2012-04-17 2017-03-07 Texas Instruments Incorporated Memory bandwidth reduction for motion compensation in video coding
CN110545419B (zh) 2012-10-12 2022-11-22 韩国电子通信研究院 图像编码/解码方法和使用其的装置
JP5524405B1 (ja) * 2013-12-10 2014-06-18 ユニ・チャーム株式会社 芳香性粒状物及び動物用トイレ砂
US20170019665A1 (en) * 2014-03-11 2017-01-19 Hfi Innovation Inc. Method and Apparatus of Single Sample Mode for Video Coding
US9716884B2 (en) * 2014-03-20 2017-07-25 Hfi Innovation Inc. Method of signaling for mode selection in 3D and multi-view video coding
WO2018061550A1 (ja) * 2016-09-28 2018-04-05 シャープ株式会社 画像復号装置及び画像符号化装置
EP3661209A4 (en) * 2017-08-03 2020-06-03 LG Electronics Inc. -1- METHOD AND DEVICE FOR PROCESSING VIDEO IMAGE SIGNALS USING AFFINED PREDICTION
KR102580910B1 (ko) * 2017-08-29 2023-09-20 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
WO2019045427A1 (ko) * 2017-08-29 2019-03-07 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
US10609384B2 (en) 2017-09-21 2020-03-31 Futurewei Technologies, Inc. Restriction on sub-block size derivation for affine inter prediction
US10469869B1 (en) * 2018-06-01 2019-11-05 Tencent America LLC Method and apparatus for video coding
CN117499639A (zh) * 2018-06-27 2024-02-02 数字洞察力有限公司 图像编码/解码方法和用于发送图像信息的数据的方法
CN113163211B (zh) * 2018-06-30 2023-01-03 Oppo广东移动通信有限公司 基于合并模式的帧间预测方法及装置
CN112514394B (zh) * 2018-07-17 2024-10-29 松下电器(美国)知识产权公司 用于视频编码的系统和方法
CN112544082B (zh) * 2018-07-18 2023-12-15 寰发股份有限公司 一种视频编解码的帧间预测方法及装置
AU2018435559A1 (en) 2018-08-09 2021-03-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Video image component prediction method and device, and computer storage medium
CN112740663B (zh) * 2018-09-24 2022-06-14 华为技术有限公司 图像预测方法、装置以及相应的编码器和解码器
CN118972577A (zh) * 2018-09-25 2024-11-15 数字洞察力有限公司 用于对图像进行编码或解码的方法和装置以及非暂态计算机可读介质
CN117596398A (zh) * 2018-10-08 2024-02-23 华为技术有限公司 用于译码块的几何划分块的帧间预测的装置及方法
CN111083484B (zh) 2018-10-22 2024-06-28 北京字节跳动网络技术有限公司 基于子块的预测
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
WO2020094052A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Side information signaling for inter prediction with geometric partitioning
CN111630865B (zh) 2018-11-12 2023-06-27 北京字节跳动网络技术有限公司 广义双向预测模式的线缓冲器减少
KR102906061B1 (ko) * 2018-11-14 2025-12-31 에스케이텔레콤 주식회사 인터 예측 방법 및 이를 이용한 영상 복호화 장치
KR20210091161A (ko) 2018-11-20 2021-07-21 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 부분적 위치에 기반한 차분 계산
EP3864846B1 (en) 2018-11-20 2024-01-03 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods for merge mode
CN113170171B (zh) 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
CN113170184B (zh) * 2018-11-22 2024-12-06 北京字节跳动网络技术有限公司 默认运动候选的配置方法
CN113170128B (zh) * 2018-12-03 2024-05-28 北京字节跳动网络技术有限公司 帧间预测的部分修剪方法
CN113852815B (zh) 2018-12-25 2022-12-27 北京达佳互联信息技术有限公司 利用三角形形状预测单元的视频编码方法、设备及介质
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
WO2020140862A1 (en) 2018-12-30 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Conditional application of inter prediction with geometric partitioning in video processing
CN116634172A (zh) * 2019-01-02 2023-08-22 北京大学 候选mv列表构建方法和装置
CN111435993B (zh) * 2019-01-14 2022-08-26 华为技术有限公司 视频编码器、视频解码器及相应方法
US11140406B2 (en) * 2019-02-20 2021-10-05 Qualcomm Incorporated Signalling for merge mode with motion vector differences in video coding
WO2020177756A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
AR118250A1 (es) * 2019-03-08 2021-09-22 Jvckenwood Corp Dispositivos, métodos y programas de codificación y decodificación de imágenes en movimiento
DK3915254T3 (da) * 2019-03-12 2024-01-08 Beijing Dajia Internet Information Tech Co Ltd Videokodning til forudberegning af geometrisk inter-partition
CN111726617B (zh) * 2019-03-18 2024-03-15 华为技术有限公司 用于融合运动矢量差技术的优化方法、装置及编解码器
WO2020192643A1 (en) * 2019-03-24 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Derivation of converted uni-prediction candidate
KR102610709B1 (ko) 2019-04-02 2023-12-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
EP3963889A4 (en) 2019-06-04 2023-01-25 Beijing Bytedance Network Technology Co., Ltd. CONDITIONAL IMPLEMENTATION OF A PROCEDURE FOR CREATING A MOVEMENT CANDIDATE LIST
CN117395397A (zh) 2019-06-04 2024-01-12 北京字节跳动网络技术有限公司 使用临近块信息的运动候选列表构建
CN113411605B (zh) 2019-06-21 2022-05-31 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN112135141A (zh) 2019-06-24 2020-12-25 华为技术有限公司 视频编码器、视频解码器及相应方法
EP3972257A4 (en) * 2019-06-25 2022-06-08 Guangdong Oppo Mobile Telecommunications Corp., Ltd. MOTION COMPENSATION PROCESSING METHOD, ENCODER, DECODER AND MEDIA HOLDER
EP3984215A4 (en) 2019-07-14 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. TRANSFORMATION BLOCK SIZE LIMITATION IN VIDEO ENCODING
CN110611820A (zh) * 2019-09-11 2019-12-24 北京达佳互联信息技术有限公司 视频编码方法、装置、电子设备及存储介质
CN117596389A (zh) 2019-09-28 2024-02-23 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
KR20240042245A (ko) * 2019-10-10 2024-04-01 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 삼각형 분할을 이용한 비디오 코딩을 위한 방법 및 장치
MX2022007973A (es) * 2019-12-30 2022-07-05 Fg innovation co ltd Dispositivo y metodo para codificar datos de video.
CN114982230B (zh) * 2019-12-31 2024-10-29 北京达佳互联信息技术有限公司 用于使用三角形分区的视频编解码的方法和装置
WO2021180022A1 (en) 2020-03-07 2021-09-16 Beijing Bytedance Network Technology Co., Ltd. Handling of transform skip mode in video coding
CN113709498B (zh) * 2020-05-20 2023-06-02 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及计算机存储介质
US11831909B2 (en) 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system
EP4618546A1 (en) * 2024-03-15 2025-09-17 Panasonic Intellectual Property Corporation of America Encoder, decoder, encoding method, and decoding method

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026232A (en) 1995-07-13 2000-02-15 Kabushiki Kaisha Toshiba Method and system to replace sections of an encoded video bitstream
US7321626B2 (en) 2002-03-08 2008-01-22 Sharp Laboratories Of America, Inc. System and method for predictive motion estimation using a global motion predictor
WO2004006586A1 (ja) 2002-07-02 2004-01-15 Matsushita Electric Industrial Co., Ltd. 画像符号化方法および画像復号化方法
KR100506864B1 (ko) 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
BR0317982A (pt) * 2003-01-10 2005-12-06 Thomson Licensing Sa Rápida tomada de decisão de modo para codificação interquadros
EP1585326A1 (en) * 2004-03-30 2005-10-12 Matsushita Electric Industrial Co., Ltd. Motion vector estimation at image borders for frame rate conversion
WO2006052577A2 (en) * 2004-11-04 2006-05-18 Thomson Licensing Method and apparatus for fast mode decision of b-frames in a video encoder
WO2006082690A1 (ja) 2005-02-01 2006-08-10 Matsushita Electric Industrial Co., Ltd. 画像符号化方法および画像符号化装置
KR101406156B1 (ko) * 2006-02-02 2014-06-13 톰슨 라이센싱 움직임 보상 예측을 위한 적응 가중 선택 방법 및 장치
WO2007092192A2 (en) 2006-02-02 2007-08-16 Thomson Licensing Method and apparatus for motion estimation using combined reference bi-prediction
KR100934671B1 (ko) 2006-03-30 2009-12-31 엘지전자 주식회사 비디오 신호를 디코딩/인코딩하기 위한 방법 및 장치
RU2395174C1 (ru) * 2006-03-30 2010-07-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для декодирования/кодирования сигнала видео
CA2674438C (en) 2007-01-08 2013-07-09 Nokia Corporation Improved inter-layer prediction for extended spatial scalability in video coding
US8619853B2 (en) * 2007-06-15 2013-12-31 Qualcomm Incorporated Separable directional transforms
JP4325708B2 (ja) * 2007-07-05 2009-09-02 ソニー株式会社 データ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラム
EP2200323A4 (en) * 2007-09-25 2012-03-14 Sharp Kk CODES FOR MOVING IMAGES AND DECODERS FOR MOVING IMAGES
EP2262267A1 (en) 2009-06-10 2010-12-15 Panasonic Corporation Filter coefficient coding scheme for video coding
US8995526B2 (en) * 2009-07-09 2015-03-31 Qualcomm Incorporated Different weights for uni-directional prediction and bi-directional prediction in video coding
EP2532160A1 (en) 2010-02-05 2012-12-12 Telefonaktiebolaget L M Ericsson (PUBL) Managing predicted motion vector candidates
WO2011142815A1 (en) * 2010-05-12 2011-11-17 Thomson Licensing Methods and apparatus for uni-prediction of self-derivation of motion estimation
US9398308B2 (en) * 2010-07-28 2016-07-19 Qualcomm Incorporated Coding motion prediction direction in video coding
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US8934552B2 (en) 2011-03-31 2015-01-13 Qualcomm Incorporated Combined reference picture list construction and mapping
US9247266B2 (en) 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US9131239B2 (en) 2011-06-20 2015-09-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
US10070152B2 (en) * 2011-08-24 2018-09-04 Texas Instruments Incorporated Sample adaptive offset (SAO) parameter signaling
TWI601411B (zh) * 2011-09-14 2017-10-01 三星電子股份有限公司 視訊解碼裝置
IN2014CN02377A (es) 2011-09-29 2015-06-19 Sharp Kk
CN108632608B (zh) * 2011-09-29 2022-07-29 夏普株式会社 图像解码装置、图像解码方法、图像编码装置及图像编码方法
US8964845B2 (en) * 2011-12-28 2015-02-24 Microsoft Corporation Merge mode for motion information prediction
WO2013108691A1 (ja) * 2012-01-19 2013-07-25 ソニー株式会社 画像処理装置および方法
US20130195188A1 (en) 2012-01-26 2013-08-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US9426463B2 (en) 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US20130272409A1 (en) 2012-04-12 2013-10-17 Qualcomm Incorporated Bandwidth reduction in video coding through applying the same reference index

Also Published As

Publication number Publication date
CN104980762B (zh) 2018-07-31
HK1216273A1 (zh) 2016-10-28
MY168356A (en) 2018-10-31
HK1201000A1 (en) 2015-08-14
US9451277B2 (en) 2016-09-20
PH12014501622A1 (en) 2014-10-13
UA114314C2 (uk) 2017-05-25
DK2813080T3 (da) 2021-05-10
BR112014019444B1 (pt) 2023-02-14
AU2013217035B2 (en) 2017-04-13
ES2977203T3 (es) 2024-08-20
SG11201403844PA (en) 2014-09-26
EP3849182A1 (en) 2021-07-14
BR112014019444A8 (pt) 2017-07-11
EP2813080B1 (en) 2021-03-17
JP2018142972A (ja) 2018-09-13
IL233522A (en) 2017-08-31
ZA201406544B (en) 2017-08-30
BR112014019444A2 (pt) 2017-06-20
EP2813080A1 (en) 2014-12-17
EP3849182B1 (en) 2024-03-20
EP3849182C0 (en) 2024-03-20
PL3849182T3 (pl) 2024-06-24
CA2862311A1 (en) 2013-08-15
AU2013217035A1 (en) 2014-08-07
RU2014136329A (ru) 2016-04-10
PH12014501622B1 (en) 2014-10-13
US20150229955A1 (en) 2015-08-13
WO2013119816A1 (en) 2013-08-15
JP2015510357A (ja) 2015-04-02
KR20140130465A (ko) 2014-11-10
IL233522A0 (en) 2014-08-31
KR101825262B1 (ko) 2018-02-02
US9699472B2 (en) 2017-07-04
CA2862311C (en) 2018-08-21
CN104980762A (zh) 2015-10-14
HUE054366T2 (hu) 2021-09-28
US20130202037A1 (en) 2013-08-08
SI2813080T1 (sl) 2021-08-31
RU2620723C2 (ru) 2017-05-29
CN104094605A (zh) 2014-10-08

Similar Documents

Publication Publication Date Title
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
ES2866035T3 (es) Restricción de los valores señalizados de píxeles de escape en la codificación de vídeo por el modo de paleta
US9426463B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en 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
ES2869854T3 (es) Unificar copia intrabloque e interpredicción
ES2928248T3 (es) Relleno de segmentos en unidades NAL de la porción codificada
US9736489B2 (en) Motion vector determination for video coding
ES2856051T3 (es) Candidatos de fusión favorables a la paralelización para codificación de vídeo
ES2987671T3 (es) Predicción entre capas utilizando ajustes adaptativos de muestra para codificación de vídeo escalable de profundidadde bits
ES2795682T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2886344T3 (es) Predicción residual generalizada para codificación de vídeo escalable y codificación de vídeo 3D
ES2905124T3 (es) Dispositivo y método para procesar datos de video
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
ES2749747T3 (es) Sistemas y procedimientos para definir por separado las dependencias para la predicción entre capas basada en subcapas
HK1216273B (en) Method and device for encoding and decoding video data