ES2977132T3 - Métodos y sistemas de restricción de bipredicción en codificación de vídeo - Google Patents

Métodos y sistemas de restricción de bipredicción en codificación de vídeo Download PDF

Info

Publication number
ES2977132T3
ES2977132T3 ES19189431T ES19189431T ES2977132T3 ES 2977132 T3 ES2977132 T3 ES 2977132T3 ES 19189431 T ES19189431 T ES 19189431T ES 19189431 T ES19189431 T ES 19189431T ES 2977132 T3 ES2977132 T3 ES 2977132T3
Authority
ES
Spain
Prior art keywords
prediction
block
biprediction
picture
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19189431T
Other languages
English (en)
Inventor
Krishnakanth Rapaka
Rajan Laxman Joshi
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 ES2977132T3 publication Critical patent/ES2977132T3/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/127Prioritisation of hardware or computational resources
    • 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/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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/513Processing of motion vectors
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

Se proporcionan técnicas y sistemas para codificar datos de vídeo. Por ejemplo, se pueden aplicar restricciones sobre ciertos modos de predicción para la codificación de vídeo. Se puede imponer una restricción que impida que se realice una bipredicción entre predicciones en datos de vídeo cuando se cumplan determinadas condiciones. Por ejemplo, la restricción de bipredicción puede basarse en si la predicción de copia intrabloque está habilitada para una o más unidades de codificación o bloques de datos de vídeo, si un valor de un elemento de sintaxis indica que uno o más vectores de movimiento están en estado no precisión entera, si ambos vectores de movimiento de un bloque de bipredicción tienen una precisión no entera, si los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no son del mismo índice de referencia, o cualquier combinación de los mismos. Si se cumplen una o más de estas condiciones, se puede aplicar la restricción de la bipredicción, evitando que se realice la bipredicción en determinadas unidades o bloques de codificación. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Métodos y sistemas de restricción de bipredicción en codificación de vídeo
CAMPO
La presente divulgación se refiere en general a la codificación y compresión de vídeo, y más específicamente a técnicas y sistemas para restringir la bipredicción en la codificación de vídeo.
ANTECEDENTES
Muchos de los dispositivos y sistemas permiten que los datos de vídeo sean procesados y enviados para el consumo. Los datos de vídeo digital incluyen grandes cantidades de datos para satisfacer las demandas de los consumidores y proveedores de vídeo. Por ejemplo, los consumidores de datos de vídeo desean vídeo de la máxima calidad, con alta fidelidad, resoluciones, tasas de fotogramas y similares. Como resultado, la gran cantidad de datos de vídeo que se requieren para satisfacer estas demandas supone una carga para las redes y dispositivos de comunicación que procesan y almacenan los datos de vídeo.
Pueden usarse diversas técnicas de codificación de vídeo para comprimir datos de vídeo. La codificación de vídeo se realiza de acuerdo con una o más normas de codificación de vídeo. Por ejemplo, las normas de codificación de vídeo incluyen codificación de vídeo de alta eficiencia (HEVC), codificación de vídeo avanzada (AVC), codificación de grupo de expertos en imágenes en movimiento (MPEG), o similares. La codificación de vídeo en general utiliza métodos de predicción (por ejemplo, interpredicción, intrapredicción o similares) que aprovechan la redundancia presente en las imágenes o secuencias de vídeo. Un objetivo importante de las técnicas de codificación de vídeo es comprimir los datos de vídeo en una forma que use una tasa de transmisión de bits más baja, mientras se evitan o minimizan las degradaciones en la calidad del vídeo. Con la disponibilidad de servicios de vídeo en constante evolución, se necesitan técnicas de codificación con una mejor eficiencia de codificación.
La prueba 5 sobre las restricciones de copia intrabloque en la predicción de RAPAKA et al tiene como objetivo proporcionar un método para reducir el ancho de banda de memoria del el peor caso y promedio cuando IBC está activado.
Se proporciona un método y aparato para codificar un vídeo y un método y un aparato para decodificar un vídeo. El método de codificación incluye: determinar, para un bloque actual, información de estimación de movimiento bidireccional que comprende un vector de movimiento L0, un vector de movimiento L1, un vector de referencia L0, y una imagen de referencia L1 realizando estimación de movimiento bidireccional en el bloque actual; determinar si usar la información de estimación de movimiento bidireccional determinada como información de predicción del bloque actual basándose en si la imagen de referencia L0 y la imagen de referencia L1 son iguales y basándose en un valor de diferencia entre el vector de movimiento L0 y el vector de movimiento L1; y en respuesta a determinar usar la información de estimación de movimiento bidireccional determinada como la información de predicción del bloque actual, codificar la información de estimación de movimiento bidireccional determinada como la información de predicción del bloque actual.
BREVE SUMARIO
De acuerdo con aspectos de la presente invención, se proporcionan métodos y sistemas para deshabilitar la bipredicción interimagen cuando se cumplen ciertas condiciones como se expone en las reivindicaciones independientes.
En algunas implementaciones, los datos de vídeo comprenden un corte de una imagen, el corte incluye una pluralidad de bloques, y la desactivación incluye deshabilitar la bipredicción interimagen para codificar la pluralidad de bloques del corte.
En algunas implementaciones, el bloque de bipredicción incluye un bloque de bipredicción de 8x8.
En algunas implementaciones, la bipredicción interimagen se desactiva para codificar bloques de predicción que son menores que un tamaño umbral. En algunas implementaciones, el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles.
Lo anterior, junto con otras características y realizaciones, se hará más evidente tras hacer referencia a la siguiente memoria descriptiva, reivindicaciones y dibujos adjuntos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
A continuación, se describen en detalle realizaciones ilustrativos de la presente invención con referencia a las siguientes figuras de dibujos:
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de un dispositivo de codificación y un dispositivo de descodificación.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de una imagen codificada para la cual se aplica un modo de predicción de copia intrabloque.
La FIG. 3 ilustra un ejemplo de un proceso de codificación de datos de vídeo.
La FIG. 4 ilustra otro ejemplo de un proceso de descodificación de datos de vídeo.
La FIG. 5 ilustra un ejemplo de un proceso de descodificación de datos de vídeo.
La FIG. 6 ilustra otro ejemplo de un proceso de descodificación de datos de vídeo.
La FIG. 7 es un diagrama de bloques que ilustra un dispositivo de codificación de vídeo de ejemplo.
La FIG. 8 es un diagrama de bloques que ilustra un dispositivo de descodificación de vídeo de ejemplo.
DESCRIPCIÓN DETALLADA
A continuación, se proporcionan ciertos aspectos y realizaciones de esta divulgación. Algunos de estos aspectos y realizaciones pueden aplicarse independientemente y algunos de ellos se pueden aplicar en combinación como reconocería un experto en la materia. En la descripción siguiente se exponen, con fines explicativos, detalles específicos con el fin de proporcionar una plena comprensión de las realizaciones de la invención. Sin embargo, será evidente que varias realizaciones pueden llevarse a la práctica sin estos detalles específicos. Las figuras y la descripción no pretenden ser restrictivas.
La siguiente descripción proporciona solo realizaciones a modo de ejemplo, y no pretende limitar el alcance, la aplicabilidad ni la configuración de la divulgación. En lugar de eso, la descripción siguiente de las realizaciones a modo de ejemplo proporcionará a los expertos en la materia una descripción habilitadora para implementar un modo de realización a modo de ejemplo. Debe entenderse que se pueden hacer varios cambios en la función y disposición de los elementos sin apartarse del espíritu y el alcance de la invención como se establece en las reivindicaciones adjuntas.
Los detalles específicos se dan en la siguiente descripción para proporcionar una comprensión exhaustiva. Sin embargo, un experto en la materia entenderá que la invención se puede llevar a la práctica sin estos detalles específicos. Por ejemplo, los circuitos, sistemas, redes, procesos y otros componentes pueden mostrarse como componentes en forma de diagrama de bloques para no oscurecer la descripción con detalles innecesarios. En otros casos, los circuitos, procesos, algoritmos, estructuras y técnicas bien conocidos se pueden mostrar sin detalles innecesarios para evitar que se complique la descripción.
Aunque un flujograma, un diagrama de flujo de datos, un diagrama de estructura o un diagrama de bloques puede describir las operaciones como un proceso secuencial, muchas de las operaciones pueden realizarse en paralelo o concurrentemente. Además, el orden de las operaciones se puede reorganizar. Un proceso se termina cuando se completan sus operaciones, pero podría tener etapas adicionales no incluidas en una figura. Un proceso puede corresponder a un método, una función, un procedimiento, una subrutina, un subprograma, etc. Cuando un proceso corresponde a una función, su conclusión corresponde a un retorno de la función a la función de llamada o a la función principal.
La expresión "medio legible por ordenador" incluye, pero sin limitación, dispositivos de almacenamiento portátiles o no portátiles, dispositivos de almacenamiento óptico, y diversos otros medios que pueden almacenar, contener o transportar instrucción/instrucciones y/o datos. Un medio legible por ordenador puede incluir un medio no transitorio en el que se pueden almacenar datos y que no incluye ondas portadoras y/o señales electrónicas transitorias que se propagan de forma inalámbrica o por conexiones alámbricas. Entre los ejemplos de un medio no transitorio se pueden incluir, pero sin limitación, un disco o cinta magnético, medios de almacenamiento óptico como un disco compacto (CD) o un disco versátil digital (DVD), memoria flash, memoria o dispositivos de memoria. Un medio legible por ordenador puede tener almacenado en el mismo código y/o instrucciones ejecutables por máquina que pueden representar un procedimiento, una función, un subprograma, un programa, una rutina, una subrutina, un módulo, un paquete de software, una clase o cualquier combinación de instrucciones, estructuras de datos o sentencias de programa. Un segmento de código se puede acoplar a otro segmento de código o a un circuito de hardware pasando y/o recibiendo información, datos, argumentos, parámetros o contenidos de memoria. Se puede pasar, enviar o transmitir información, argumentos, parámetros, datos, etc. por medio de cualquier medio adecuado incluyendo compartición de memoria, paso de mensajes, paso de testigo, transmisión por red, o similares.
Además, la invención se puede implementar por hardware, software, firmware, middleware, microcódigo, lenguajes de descripción de hardware, o cualquier combinación de los mismos. Cuando se implementan en software, firmware, middleware o microcódigo, el código de programa o los segmentos de código para realizar las tareas necesarias (por ejemplo, un producto de programa informático) pueden almacenarse en un medio legible por ordenador o legible por máquina. Un(os) procesador(es) puede(n) realizar las tareas necesarias.
A medida que más dispositivos y sistemas ofrecen a los consumidores la capacidad de consumir datos de vídeo digital, la necesidad de técnicas de codificación de vídeo eficiente se vuelve más importante. La codificación de vídeo es necesaria para reducir los requisitos de almacenamiento y transmisión necesarios para manejar las grandes cantidades de datos presentes en los datos de vídeo digital. Se pueden usar varias técnicas de codificación de vídeo para comprimir los datos de vídeo en una forma que use una tasa de transmisión de bits más baja mientras mantiene una alta calidad de vídeo.
Se describen en el presente documento varios sistemas y métodos de codificación de vídeo utilizando codificadores de vídeo, descodificadores y otros dispositivos de procesamiento de codificación. En algunos ejemplos, se describen uno o más sistemas y métodos de codificación de vídeo para restringir ciertos modos de predicción. Por ejemplo, se puede imponer una restricción que evite que la interpredicción de bipredicción se realice en datos de vídeo cuando se cumplan ciertas condiciones. A continuación, se proporcionan más detalles sobre la restricción de bipredicción.
La FIG.1 es un diagrama de bloques que ilustra un ejemplo de un sistema 100 que incluye un dispositivo de codificación 104 y un dispositivo de descodificación 112. El dispositivo de codificación 104 puede ser parte de un dispositivo de origen, y el dispositivo de descodificación 112 puede ser parte de un dispositivo de recepción. El dispositivo de origen y/o el dispositivo de recepción pueden incluir un dispositivo electrónico, tal como un teléfono móvil o estacionario (por ejemplo, teléfono inteligente, teléfono celular o similar), un ordenador de escritorio, un ordenador portátil o notebook, una tableta, un descodificador, un televisor, una cámara, un dispositivo de visualización, un reproductor de medios digitales, una consola de videojuegos, un dispositivo de envío por flujo continuo, una cámara de protocolo de Internet (IP) o cualquier otro dispositivo electrónico adecuado. En algunos ejemplos, el dispositivo de origen y el dispositivo de recepción pueden incluir uno o más transceptores inalámbricos para comunicaciones inalámbricas. Las técnicas de codificación descritas en el presente documento son aplicables a la codificación de vídeo en varias aplicaciones multimedia, que incluyen envío por flujo continuo (por ejemplo, a través de Internet), difusiones o transmisiones de televisión, codificación de vídeo digital para 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 100 puede soportar una transmisión de vídeo unidireccional o bidireccional, para soportar a aplicaciones tales como la videoconferencia, envío por flujo continuo, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
El dispositivo de codificación 104 (o codificador) puede utilizarse para codificar datos de vídeo utilizando una norma o un protocolo de codificación de vídeo para generar un flujo de bits de vídeo codificado. Entre las normas de codificación de vídeo se incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluyendo sus ampliaciones de codificación de vídeo escalable (SVC) y de codificación de vídeo de múltiples visualizaciones (MVC). Ha finalizado el diseño de una norma de codificación de vídeo más reciente, la Codificación de Vídeo de Alta Eficacia (HEVC), por parte del Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T y del Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/IEC. El JCT-VC está desarrollando también varias extensiones de HEVC que se ocupan de la codificación de vídeo multicapa, incluida la extensión de múltiples visualizaciones de HEVC, llamada MV-HEVC, y la extensión escalable de HEVc , llamada SHVC, o cualquier otro protocolo de codificación adecuado. El JCT-VC también está desarrollando las Extensiones de Rango de HEVC, a saber, HEVC-Rext, (por ejemplo, el reciente Borrador de Trabajo (WD) de extensiones de rango denominado RExt WD7).
El texto de la especificación de HEVC (por ejemplo, como en JCTVC-Q1003) puede denominarse en el presente documento HEVC versión 1 (o una primera versión de HEVC). La especificación de extensión de rango puede denominarse versión 2 de HEVC (o una segunda versión de HEVC). Sin embargo, en lo que respecta a las técnicas propuestas (por ejemplo, restricción de bipredicción u otras técnicas), la versión 1 de HEVC y la especificación de extensión de rango son técnicamente similares. Por lo tanto, siempre que se haga referencia a los cambios en el presente documento basados en HEVC versión 1, los mismos cambios pueden aplicarse a la especificación de extensión de rango, y siempre que el módulo de HEVC versión 1 se reutilice en el presente documento, el módulo de extensión de rango de HEVC también se reutiliza (con las mismas subcláusulas).
La mayoría de la siguiente descripción se refiere al uso de la norma HEVC, o extensiones de la misma. Sin embargo, las técnicas y sistemas descritos en el presente documento también pueden ser aplicables a otras normas de codificación, tal como AVC, MPEG, extensiones de las mismas u otras normas de codificación adecuados ya disponibles o aún no disponibles o desarrollados. Por consiguiente, aunque las técnicas y sistemas descritos en el presente documento pueden describirse con referencia a una norma de codificación de vídeo particular, un experto en la materia apreciará que la descripción no debe interpretarse para que se aplique solo a esa norma particular.
Haciendo referencia a la FIG. 1, un origen de vídeo 102 puede proporcionar los datos de vídeo al dispositivo de codificación 104. El origen de vídeo 102 puede ser parte del dispositivo de origen, o puede ser parte de un dispositivo que no sea el dispositivo de origen. El origen de vídeo 102 puede incluir un dispositivo de captura de vídeo (por ejemplo, una cámara de vídeo, un teléfono con cámara, un videoteléfono o similar), un archivo de vídeo que contiene vídeo almacenado, un servidor de vídeo o proveedor de contenido que proporciona datos de vídeo, una interfaz de alimentación de vídeo que recibe vídeo de un servidor de vídeo o proveedor de contenido, un sistema de gráficos de ordenador para generar datos de vídeo de gráficos de ordenador, una combinación de tales orígenes o cualquier otro origen de vídeo adecuado.
Los datos de vídeo del origen de vídeo 102 pueden incluir una o más fotogramas o imágenes de entrada. Una imagen o fotograma es una imagen fija que forma parte de un vídeo. El motor codificador 106 (o codificador) del dispositivo codificador 104 codifica los datos de vídeo para generar un flujo de bits de vídeo codificado. En algunos ejemplos, un flujo de bits de vídeo codificado (o "flujo de bits de vídeo" o "flujo de bits") es una serie de una o más secuencias de vídeo codificadas. Una secuencia de vídeo codificada (CVS) incluye una serie de unidades de acceso (AU) que comienzan con una AU que tiene una imagen de punto de acceso aleatorio en la capa base y con ciertas propiedades hasta y sin incluir una siguiente AU que tenga una imagen de punto de acceso aleatorio en la capa base y con ciertas propiedades. Por ejemplo, entre las ciertas propiedades de una imagen de punto de acceso aleatorio que inicia una CVS puede incluirse un indicador RASL (por ejemplo, NoRaslOutputFlag) igual a 1. De lo contrario, una imagen de punto de acceso aleatorio (con el indicador RASL igual a 0) no inicia una CVS. Una unidad de acceso (AU) incluye una o más imágenes codificadas e información de control correspondiente a las imágenes codificadas que comparten el mismo tiempo de salida. Las secciones de imágenes codificadas se encapsulan en el nivel de flujo de bits en unidades de datos llamadas unidades de capa de abstracción de red (NAL). Por ejemplo, un flujo de bits de vídeo HEVC puede incluir una o más CVS que incluyen unidades de NAL. Cada una de las unidades de NAL tiene una cabecera de unidad de NAL. En un ejemplo, la cabecera es de un byte para H.264/AVC (excepto para extensiones de múltiples capas) y dos bytes para HEVC. Los elementos de sintaxis en la cabecera de la unidad de NAL toman los bits designados y, por lo tanto, son visibles para todo tipo de sistemas y capas de transporte, tales como flujo de transporte, protocolo de transporte en tiempo real (RTP), formato de archivo, entre otros.
Existen dos clases de unidades de NAL en la norma HEVC, incluyendo unidades de NAL de capa de codificación de vídeo (VCL) y unidades de NAL no de VCL. Una unidad de NAL de VCL incluye un corte o segmento de corte (descrito a continuación) de datos de imagen codificados, y una unidad de NAL no de VCL incluye información de control que se refiere a una o más imágenes codificadas. En algunos casos, una unidad de NAL puede denominarse paquete. Una AU de HEVC incluye unidades de NAL de VCL que contienen datos de imagen codificados y unidades de NAL no de VCL (si las hubiera) correspondientes a los datos de imagen codificados.
Las unidades de NAL pueden contener una secuencia de bits que forman una representación codificada de los datos de vídeo (por ejemplo, un flujo de bits de vídeo codificado, una CVS de un flujo de bits o similar), tales como representaciones codificadas de imágenes en un vídeo. El motor codificador 106 genera representaciones codificadas de imágenes al dividir cada imagen en múltiples cortes. Un corte es independiente de otros cortes, de modo que la información en el corte se codifica sin dependencia de los datos de otros cortes dentro de la misma imagen. Un corte incluye uno o más segmentos de corte que incluyen un segmento de corte independiente y, si está presente, uno o más segmentos de corte dependientes que dependen de segmentos de corte anteriores. Los cortes se dividen en bloques de árbol de codificación (CTB) de muestras de luma y muestras de croma. Un CTB de muestras de luma y uno o más CTB de muestras de croma, junto con la sintaxis de las muestras, se denominan unidad de árbol de codificación (CTU). Una CTU es la unidad de procesamiento básica para la codificación HEVC. Una CTU se puede dividir en múltiples unidades de codificación (CU) de diferentes tamaños. Una CU contiene matrices de muestras de luma y croma que se denominan bloques de codificación (CB).
Los CB de luma y croma pueden dividirse adicionalmente en bloques de predicción (PB). Un PB es un bloque de muestras del componente luma o un componente croma que utiliza los mismos parámetros de movimiento para la interpredicción o predicción de copia intrabloque (cuando está disponible o habilitado para su uso). El PB de luma y uno o más PB de croma, junto con la sintaxis asociada, forman una unidad de predicción (PU). Para la interpredicción, un conjunto de parámetros de movimiento (por ejemplo, uno o más vectores de movimiento, índices de referencia o similares) se señalan en el flujo de bits para cada PU y se utilizan para la interpredicción de PB de luma y el uno o más PB de croma. Para la predicción de copia intrabloque, también se puede señalar un conjunto de parámetros de movimiento (por ejemplo, uno o más vectores de bloque, o similares) para cada PU y se puede usar para la predicción de copia intrabloque. Un CB también se puede dividir en uno o más bloques de transformada (TB). Un TB representa un bloque cuadrado de muestras de un componente de color en el que se aplica la misma transformada bidimensional para codificar una señal residual de predicción. Una unidad de transformada (TU) representa los TB de las muestras de luma y croma, y los elementos sintácticos correspondientes.
Un tamaño de una CU corresponde a un tamaño del modo de codificación y puede tener forma cuadrada. Por ejemplo, un tamaño de una CU puede ser de 8 x 8 muestras, 16 x 16 muestras, 32 x 32 muestras, 64 x 64 muestras, o cualquier otro tamaño apropiado hasta el tamaño de la CTU correspondiente. La expresión "N x N" se usa en el presente documento para referirse a las dimensiones en píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales (por ejemplo, 8 píxeles x 8 píxeles). Los píxeles en un bloque se pueden organizar en filas y columnas. En algunas realizaciones, no es necesario que los bloques tengan el mismo número de píxeles en una dirección horizontal y en una dirección vertical. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir en si la CU está codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden dividir para tener una forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con una CTU. Una TU puede tener una forma cuadrada o no cuadrada.
De acuerdo con la norma HEVC, las transformaciones se pueden realizar usando unidades de transformada (TU). Las TU pueden variar para diferentes CU. Las TU pueden dimensionarse basándose en el tamaño de las PU dentro de una CU dada. Las TU pueden ser del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuaternario conocida como árbol cuaternario residual (RQT). Los nodos de hoja del RQT pueden corresponder a las TU. Los valores de diferencias de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada. A continuación, los coeficientes de transformada pueden cuantificarse por el motor codificador 106.
Una vez que las imágenes de los datos de vídeo se dividen en CU, el motor codificador 106 predice cada PU utilizando un modo de predicción. A continuación, la unidad de predicción o el bloque de predicción se resta de los datos de vídeo originales para obtener residuos (descritos a continuación). Para cada CU, se puede señalizar un modo de predicción dentro del flujo de bits utilizando datos sintácticos. Un modo de predicción puede incluir intrapredicción (o predicción intraimagen) o interpredicción (o predicción interimagen). Usando la intrapredicción, cada PU se predice a partir de datos de imágenes contiguas en la misma imagen usando, por ejemplo, predicción de CC para encontrar un valor promedio para la PU, predicción plana para ajustar una superficie plana a la PU, predicción de dirección para extrapolar desde los datos contiguos, o cualquier otro tipo adecuado de predicción. Usando la interpredicción, cada PU se predice usando la predicción de compensación de movimiento de los datos de imagen en una o más imágenes de referencia (antes o después de la imagen actual en orden de salida). La decisión de codificar un área de imagen usando interimagen o intraimagen puede hacerse, por ejemplo, a nivel de CU.
En algunos ejemplos, al uno o más cortes de una imagen se le asigna un tipo de corte. Entre los tipos de cortes se incluye un corte I, un corte P y un corte B. Un corte I (intra fotograma, descodificable independientemente) es un corte de una imagen que solo está codificado por intrapredicción, y por lo tanto es descodificable de forma independiente ya que el corte I requiere solo los datos dentro del fotograma para predecir cualquier unidad de predicción o bloque de predicción del corte. El corte P (fotogramas unidireccionalmente predichos) es un corte de una imagen que puede codificarse con intrapredicción y con interpredicción unidireccional. Cada unidad de predicción o bloque de predicción dentro de un corte P está codificado con intrapredicción o interpredicción. Cuando se aplica la interpredicción, la unidad de predicción o el bloque de predicción solo se predicen mediante una imagen de referencia, y por lo tanto las muestras de referencia son solo de una región de referencia de un fotograma. Un corte B (fotogramas predictivos bidireccionales) es un corte de una imagen que puede codificarse con intrapredicción y interpredicción (por ejemplo, bipredicción o unipredicción). Una unidad de predicción o un bloque de predicción de un corte B puede predecirse bidireccionalmente a partir de dos imágenes de referencia, donde cada imagen contribuye con una región de referencia y los conjuntos de muestras de las dos regiones de referencia se ponderan (por ejemplo, con pesos iguales o con pesos diferentes) para producir la señal de predicción del bloque predicho bidireccional. Como se ha explicado anteriormente, los cortes de una imagen se codifican de forma independiente. En algunos casos, una imagen puede codificarse como un solo corte.
La predicción intraimagen utiliza la correlación entre las muestras espacialmente contiguas dentro de una imagen. La predicción interimagen utiliza la correlación temporal entre imágenes para obtener una predicción compensada por movimiento para un bloque de muestras de imágenes. Usando un modelo de movimiento traslacional, la posición de un bloque en una imagen previamente descodificada (una imagen de referencia) se indica mediante un vector de movimiento (Ax, Ay), donde Ax especifica el desplazamiento horizontal y Ay especifica el desplazamiento vertical del bloque de referencia con referencia a la posición del bloque actual. En algunos casos, un vector de movimiento (Ax, Ay) puede tener una precisión de muestra entera (también conocida como precisión entera), en cuyo caso el vector de movimiento apunta a la cuadrícula de número entero-pel (o cuadrícula de muestreo de píxeles enteros) del fotograma de referencia. En algunos casos, un vector de movimiento (Ax, Ay) puede tener una precisión de muestra fraccional (también conocida como precisión fraccional-pel o precisión no entera) para capturar con mayor precisión el movimiento del objeto subyacente, sin limitarse a la cuadrícula de números enteros del fotograma de referencia. La precisión de los vectores de movimiento puede expresarse mediante el nivel de cuantificación de los vectores de movimiento. Por ejemplo, el nivel de cuantificación puede tener precisión entera (por ejemplo, 1 píxel) o la precisión fraccional-pel (por ejemplo, % de píxel, A de píxel u otro valor de subpíxel). La interpolación se aplica en imágenes de referencia para obtener la señal de predicción cuando el vector de movimiento correspondiente tiene una precisión de muestra fraccional. Por ejemplo, las muestras disponibles en posiciones enteras se pueden filtrar (por ejemplo, usando uno o más filtros de interpolación) para estimar valores en posiciones fraccionarias. La imagen de referencia previamente descodificada se indica mediante un índice de referencia (refldx) a una lista de imágenes de referencia. Los vectores de movimiento y los índices de referencia pueden denominarse parámetros de movimiento. Se pueden realizar dos tipos de predicción interimagen, incluida unipredicción y bipredicción.
Con la interpredicción usando bipredicción, se usan dos conjuntos de parámetros de movimiento (Axo , yo,refldxoy Ax-i , y-i,refldx- )para generar dos predicciones compensadas por movimiento (para la misma imagen de referencia o posiblemente de diferentes imágenes de referencia). Por ejemplo, con bipredicción, cada bloque de predicción usa dos señales de predicción compensadas por movimiento y genera unidades de predicción B. Las dos predicciones compensadas por movimiento se combinan para obtener la predicción compensada por movimiento final. Por ejemplo, las dos predicciones compensadas por movimiento se pueden combinar promediando. En otro ejemplo, se puede utilizar la predicción ponderada, en cuyo caso se pueden aplicar diferentes pesos a cada predicción compensada por movimiento. Las imágenes de referencia que se pueden usar en bipredicción se almacenan en dos listas separadas, indicadas como lista 0 y lista 1. Los parámetros de movimiento se pueden obtener en el codificador utilizando un proceso de estimación de movimiento.
Con interpredicción usando unipredicción, un conjunto de parámetros de movimiento (Ax<0>.yo. refldxo)se utiliza para generar una predicción compensada por movimiento a partir de una imagen de referencia. Por ejemplo, con unipredicción, cada bloque de predicción utiliza como máximo una señal de predicción compensada por movimiento y genera unidades de predicción P.
Una PU puede incluir los datos (por ejemplo, parámetros de movimiento u otros datos adecuados) relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica utilizando intrapredicción, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica utilizando interpredicción, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento (Ax), un componente vertical del vector de movimiento (Ay), una resolución para el vector de movimiento (por ejemplo, precisión entera, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento, un índice de referencia, una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento, o cualquier combinación de los mismos.
El dispositivo de codificación 104 puede entonces realizar la transformación y cuantificación. Por ejemplo, tras la predicción, el motor codificador 106 puede calcular valores residuales correspondientes a la PU. Los valores residuales pueden comprender valores de diferencia de píxeles entre el bloque actual de píxeles que se codifican (la PU) y el bloque de predicción utilizado para predecir el bloque actual (por ejemplo, la versión predicha del bloque actual). Por ejemplo, después de generar un bloque de predicción (por ejemplo, emitir interpredicción o intrapredicción), el motor codificador 106 puede generar un bloque residual restando el bloque de predicción producido por una unidad de predicción del bloque actual. El bloque residual incluye un conjunto de valores de diferencia de píxeles que cuantifican las diferencias entre los valores de píxeles del bloque actual y los valores de píxeles del bloque de predicción. En algunos ejemplos, el bloque residual puede representarse en un formato de bloque bidimensional (por ejemplo, una matriz bidimensional o una matriz de valores de píxeles). En tales ejemplos, el bloque residual es una representación bidimensional de los valores de píxel.
Todos los datos residuales que pueden quedar después de que se lleve a cabo la predicción se transforman usando una transformada de bloque, que puede basarse en transformada cosenoidal discreta, transformada sinusoidal discreta, una transformada de números enteros, una transformada de ondícula, otra función de transformada adecuada, o cualquier combinación de las mismas. En algunos casos, una o más transformadas de bloque (por ejemplo, tamaños 32 x 32, 16 x 16, 8 x 8, 4 x 4 u otro tamaño adecuado) pueden aplicarse a los datos residuales en cada CU. En algunas realizaciones, se puede usar una TU para los procesos de transformada y cuantificación implementados por el motor codificador 106. Una CU dada que tiene una o más PU también puede incluir una o más TU. Como se describe con más detalle a continuación, los valores residuales pueden transformarse en coeficientes de transformada usando las transformadas de bloque, y luego pueden cuantificarse y escanearse usando TU para producir coeficientes de transformada serializados para la codificación por entropía.
Tras la codificación de intrapredicción o interpredicción mediante las PU de una CU, el motor codificador 106 puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (o dominio de píxeles). Las TU pueden comprender coeficientes en el dominio de transformada después de la aplicación de una transformada de bloque. Como se ha observado anteriormente, los datos residuales pueden corresponder a valores de diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El motor codificador 106 puede formar las TU, incluyendo los datos residuales para la CU y, a continuación, transformar las TU para producir coeficientes de transformada para la CU.
El motor codificador 106 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación proporciona una compresión adicional al cuantificar los coeficientes de transformada para reducir la cantidad de datos utilizados para representar los coeficientes. Por ejemplo, la cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. En un ejemplo, un coeficiente con un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
Una vez que se lleva a cabo la cuantificación, el flujo de bits de vídeo codificado incluye coeficientes de transformada cuantificados, información de predicción (por ejemplo, modos de predicción, vectores de movimiento, vectores de bloques, o similares), información de división, y cualesquiera otros datos adecuados, tales como otros datos sintácticos. Los diferentes elementos del flujo de bits de vídeo codificado pueden ser codificados por entropía por el motor codificador 106. En algunos ejemplos, el motor codificador 106 puede utilizar un orden de escaneado predefinido para escanear los coeficientes de transformada cuantificados, para producir un vector en serie que se pueda codificar por entropía. En algunos ejemplos, el motor codificador 106 puede realizar un escaneado adaptativo. Después de escanear los coeficientes de transformada cuantificados para formar un vector (por ejemplo, un vector unidimensional), el motor codificador 106 puede codificar por entropía el vector. Por ejemplo, el motor codificador 106 puede llevar a cabo la codificación de longitud variable adaptativa al contexto, la codificación aritmética binaria adaptativa al contexto, la codificación aritmética binaria adaptativa al contexto basada en sintaxis, la codificación por entropía por división en intervalos de probabilidad u otra técnica de codificación por entropía adecuada.
La salida 110 del dispositivo de codificación 104 puede enviar las unidades de NAL que componen los datos del flujo de bits de vídeo codificado por las comunicaciones de enlace 120 al dispositivo de descodificación 112 del dispositivo de recepción. La entrada 114 del dispositivo de descodificación 112 puede recibir las unidades de NAL. El enlace de comunicaciones 120 puede incluir un canal proporcionado por una red inalámbrica, una red alámbrica o una combinación de una red alámbrica e inalámbrica. Una red inalámbrica puede incluir cualquier interfaz inalámbrica o combinación de interfaces inalámbricas y puede incluir cualquier red inalámbrica adecuada (por ejemplo, Internet u otra red de área amplia, una red basada en paquetes, WiFi™, radiofrecuencia (RF), UWB, WiFi-Direct, celular, evolución a largo plazo (LTE), WiMax™ o similar). Una red alámbrica puede incluir cualquier interfaz alámbrica (por ejemplo, fibra, ethernet, ethernet por línea eléctrica, ethernet sobre cable coaxial, línea de señal digital (DSL) o similar). Las redes alámbricas y/o inalámbricas pueden implementarse utilizando diversos equipos, tales como estaciones base, enrutadores, puntos de acceso, puentes, pasarelas, conmutadores o similares. Los datos de flujo de bits de vídeo codificado se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de recepción.
En algunas implementaciones, el dispositivo de codificación 104 puede almacenar datos de flujo de bits de vídeo codificado en el almacenamiento 108. La salida 110 puede recuperar los datos de flujo de bits de vídeo codificado del motor codificador 106 o del almacenamiento 108. El almacenamiento 108 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local. Por ejemplo, el almacenamiento 108 puede incluir un disco duro, un disco de almacenamiento, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados.
La entrada 114 del dispositivo de descodificación 112 recibe los datos del flujo de bits de vídeo codificado y puede proporcionar los datos de flujo de bits de vídeo al motor descodificador 116, o al almacenamiento 118 para su uso posterior por parte del motor descodificador 116. El motor descodificador 116 puede descodificar los datos de flujo de bits de vídeo codificado mediante descodificación por entropía (por ejemplo, utilizando un descodificador por entropía) y extrayendo los elementos de una o más secuencias de vídeo codificadas que forman los datos de vídeo codificados. A continuación, el motor descodificador 116 puede reescalar y realizar una transformada inversa en los datos de flujo de bits de vídeo codificado. A continuación, los datos residuales se pasan a una etapa de predicción del motor descodificador 116. A continuación, el motor descodificador 116 predice un bloque de píxeles (por ejemplo, una PU). En algunos ejemplos, la predicción se añade a la salida de la transformada inversa (los datos residuales).
El dispositivo de descodificación 112 puede emitir el vídeo descodificado a un dispositivo de destino de vídeo 122, que puede incluir una pantalla u otro dispositivo de salida para la visualización de los datos de vídeo descodificados a un consumidor del contenido. En algunos aspectos, el dispositivo de destino de vídeo 122 puede ser parte del dispositivo de recepción que incluye el dispositivo de descodificación 112, o puede ser parte de un dispositivo separado que no sea el dispositivo de recepción.
Los mensajes de información de mejora suplementaria (SEI) se pueden incluir en flujos de bits de vídeo. Por ejemplo, los mensajes SEI pueden usarse para transportar información (por ejemplo, metadatos) que no son esenciales para descodificar el flujo de bits mediante el dispositivo de descodificación 112. Esta información es útil para mejorar la visualización o el procesamiento de la salida descodificada (por ejemplo, dicha información podría ser utilizada por entidades del lado del descodificador para mejorar la visibilidad del contenido).
Las extensiones a la norma de HEVC incluyen la extensión de codificación de vídeo de múltiples visualizaciones, denominada MV-HEVC, y la extensión de codificación de vídeo escalable, denominada SHVC. Las extensiones MV-HEVC y SHVC comparten el concepto de codificación en capas, con diferentes capas incluidas en el flujo de bits de vídeo codificado. Cada capa en una secuencia de vídeo codificada es dirigida por un identificador (ID) de capa único. Un ID de capa puede estar presente en una cabecera de una unidad de NAL para identificar una capa con la cual está asociada la unidad de NAL. En MV-HEVC, diferentes capas pueden representar diferentes visualizaciones de la misma escena en el flujo de bits de vídeo. En SHVC, se proporcionan diferentes capas escalables que representan el flujo de bits de vídeo en diferentes resoluciones espaciales (o resolución de imagen) o en diferentes fidelidades de reconstrucción. Las capas escalables pueden incluir una capa base (con ID de capa = 0) y una o más capas de mejora (con ID de capa = 1, 2,... n). La capa base puede ajustarse a un perfil de la primera versión de HEVC y representa la capa más baja disponible en un flujo de bits. Las capas de mejora tienen una mayor resolución espacial, resolución temporal o tasa de fotogramas, y/o fidelidad de reconstrucción (o calidad) en comparación con la capa base. Las capas de mejora están organizadas jerárquicamente y pueden (o no) depender de capas inferiores. En algunos ejemplos, las diferentes capas se pueden codificar usando un solo códec normalizado (por ejemplo, todas las capas se codifican usando HEVC, SHVC u otra norma de codificación). En algunos ejemplos, diferentes capas pueden codificarse usando un códec de múltiples normas. Por ejemplo, una capa base puede codificarse usando AVC, mientras que una o más capas de mejora pueden codificarse usando extensiones SHVC y/o MV-HEVC a la norma de HEVC.
En general, una capa incluye un conjunto de unidades de NAL de VCL y un conjunto correspondiente de unidades de NAL no de VCL. A las unidades de NAL se les asigna un valor de ID de capa particular. Las capas pueden ser jerárquicas en el sentido de que una capa puede depender de una capa inferior. Un conjunto de capas se refiere a un conjunto de capas representadas dentro de un flujo de bits que son independientes, lo cual significa que las capas dentro de un conjunto de capas pueden depender de otras capas en el conjunto de capas en el proceso de descodificación, pero no depender de ninguna otra capa para descodificación. En consecuencia, las capas en un conjunto de capas pueden formar un flujo de bits independiente que puede representar el contenido de vídeo. El conjunto de capas en un conjunto de capas se puede obtener de otro flujo de bits mediante la operación de un proceso de extracción de subflujo de bits. Un conjunto de capas puede corresponder al conjunto de capas que se va a descodificar cuando un descodificador desea operar de acuerdo con ciertos parámetros.
Como se ha descrito anteriormente, un flujo de bits HEVC incluye un grupo de unidades de NAL, incluyendo unidades de NAL de VCL y unidades de NAL no de VCL. Las unidades de NAL de VCL incluyen datos de imagen codificados que forman un flujo de bits de vídeo codificado. Por ejemplo, una secuencia de bits que forman el flujo de bits de vídeo codificado está presente en las unidades de NAL de VCL. Las unidades de NAL no de VCL pueden contener conjuntos de parámetros con información de alto nivel relacionada con el flujo de bits de vídeo codificado, además de otra información. Por ejemplo, un conjunto de parámetros puede incluir un conjunto de parámetros de vídeo (VPS), un conjunto de parámetros de secuencia (SPS) y un conjunto de parámetros de imagen (PPS). Entre los ejemplos de objetivos de los conjuntos de parámetros se incluye la eficiencia de la tasa de bits, la resistencia a los errores y el suministro de interfaces de capa de sistemas. Cada corte hace referencia a un único PPS, SPS y VPS activo para acceder a la información que el dispositivo de descodificación 112 puede usar para descodificar el corte. Se puede codificar un identificador (ID) para cada conjunto de parámetros, que incluye un ID de VPS, un ID de SPS y un ID de PPS. Un SPS incluye un ID de SPS y un ID de VPS. Un PPS incluye un iD de PPS y un ID de SPS. Cada cabecera de corte incluye un ID de PPS. Usando los ID, se pueden identificar conjuntos de parámetros activos para un corte dado.
Un PPS incluye información que se aplica a todos los cortes en una imagen dada. Debido a esto, todos los cortes en una imagen se refieren al mismo PPS. Los cortes en diferentes imágenes también pueden referirse al mismo PPS. Un SPS incluye información que se aplica a todas las imágenes en una misma secuencia de vídeo codificada (CVS) o flujo de bits. Como se ha descrito anteriormente, una secuencia de vídeo codificada es una serie de unidades de acceso (AU) que comienza con una imagen de punto de acceso aleatorio (por ejemplo, una imagen de referencia de descodificación instantánea (IDR) o una imagen de acceso de enlace roto (BLA) u otra imagen de punto de acceso aleatorio apropiada) en la capa base y con ciertas propiedades (descritas anteriormente) hasta y sin incluir una siguiente AU que tenga una imagen de punto de acceso aleatorio en la capa base y con ciertas propiedades (o el final del flujo de bits). La información en un SPS puede no cambiar de una imagen a otra dentro de una secuencia de vídeo codificada. Las imágenes en una secuencia de vídeo codificada pueden usar el mismo SPS. El VPS incluye información que se aplica a todas las capas dentro de una secuencia de vídeo codificada o flujo de bits. El VPS incluye una estructura sintáctica con elementos sintácticos que se aplican a secuencias de vídeo codificadas completas. En algunas realizaciones, el VPS, SPS o PPS puede transmitirse en banda con el flujo de bits codificado. En algunas realizaciones, el VPS, SPS o PPS puede transmitirse fuera de banda en una transmisión separada de las unidades de NAL que contienen datos de vídeo codificados.
En algunas realizaciones, el dispositivo de codificación de vídeo 104 y/o el dispositivo de descodificación de vídeo 112 pueden estar integrados con un dispositivo de codificación de audio y un dispositivo de descodificación de audio, respectivamente. El dispositivo de codificación de vídeo 104 y/o el dispositivo de descodificación de vídeo 112 también pueden incluir otro hardware o software que es necesario para implementar las técnicas de codificación descritas anteriormente, 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 en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. El dispositivo de codificación de vídeo 104 y el dispositivo de descodificación de vídeo 112 pueden integrarse como parte de un codificador/descodificador (códec) combinado en un dispositivo respectivo. A continuación, se describe un ejemplo de detalles específicos del dispositivo de codificación 104 con referencia a la FIG. 7. A continuación se describe un ejemplo de detalles específicos del dispositivo de descodificación 112 con referencia a la FIG. 8.
Se ha realizado una investigación para nuevas herramientas de codificación para material de contenido de pantalla, tal como texto y gráficos con movimiento, y se han propuesto tecnologías que mejoran la eficiencia de codificación para contenido de pantalla. Se pueden obtener mejoras significativas en la eficiencia de codificación aprovechando las características del contenido de la pantalla con herramientas de codificación especializadas. Se están realizando esfuerzos con el objetivo de posiblemente desarrollar futuras extensiones de la norma de codificación de vídeo de alta eficiencia (HEVC), incluidas herramientas específicas para la codificación de contenido de pantalla (SCC).
Como se ha descrito anteriormente, varios modos de predicción pueden usarse en un proceso de codificación de vídeo, incluyendo intrapredicción y interpredicción. Una forma de intrapredicción incluye copia intrabloque (IBC). El modo de copia intrabloque de intrapredicción se incluyó en el borrador del texto de trabajo de extensión de rango HEVC (JCTVC-P1005). Al utilizar la redundancia en una imagen o fotograma, la copia intrabloque realiza la coincidencia de bloques para predecir un bloque de muestras (por ejemplo, una CU, una PU u otro bloque de codificación) como un desplazamiento desde un bloque reconstruido de muestras en una región contigua o no contigua de la imagen. Al eliminar la redundancia de los patrones repetitivos de contenido, la predicción de copia intrabloque mejora la eficiencia de codificación.
El modo de copia intrabloque (IBC) permite la predicción espacial a partir de muestras no contiguas, pero dentro de la imagen actual. Por ejemplo, la FIG. 2 ilustra una imagen codificada 200 en la que se usa una copia intrabloque para predecir una unidad de codificación actual 202. La unidad de codificación 202 puede incluir una<c>T<u>o una división de una CTU (por ejemplo, una unidad de codificación (CU) que contiene matrices de muestras de luma y croma denominadas bloques de codificación, un bloque de codificación, una unidad de predicción (PU) que contiene un bloque de predicción de luma (PB) y uno o más PB de croma, un bloque de predicción u otra división que incluya un bloque de píxeles). La unidad de codificación actual 202 se predice a partir de un bloque de predicción ya descodificado 204 (antes del filtrado en bucle) de la imagen codificada 200 usando el vector de bloque 206. El filtrado en bucle se puede realizar utilizando uno o ambos de un filtro de desbloqueo en bucle y un filtro de compensación adaptativa de muestra (SAO). En el descodificador, los valores predichos se pueden agregar a los residuos sin ninguna interpolación. Por ejemplo, el vector de bloque 206 puede señalizarse como un valor entero. Después de la predicción del vector de bloque, la diferencia del vector de bloque se codifica utilizando un método de codificación de diferencia de vector de movimiento, tal como el especificado en la norma HEVC. La copia intrabloque está habilitada tanto a nivel de CU como PU. En algunos casos, para la copia intrabloque a nivel de PU, se soporta la división de PU 2NxN y NX2N para todos los tamaños de CU. En algunos casos, cuando la CU es la CU más pequeña, se soporta la división de PU NxN. En algunos ejemplos, la copia intrabloque se puede realizar para una unidad de codificación utilizando solo bloques de predicción de un mismo corte.
Surgen varios problemas en relación con la copia intrabloque, tales como debido a un área de búsqueda grande de IBC. Por ejemplo, pueden introducirse problemas con el ancho de banda de la memoria y un mayor procesamiento cuando se usa la copia intrabloque. Contrariamente a los modos tradicionales de intrapredicción, la copia intrabloque permite la predicción espacial de muestras no contiguas (que pueden denominarse bloque de predicción, bloque o bloque de muestras). Estas muestras no contiguas podrían ser de cualquiera de las muestras ya descodificadas (antes del filtrado en bucle) dentro de la misma imagen y señaladas por un vector de bloque. Los accesos a la memoria de estas muestras no contiguas aumentan el ancho de banda general de la memoria cuando se utiliza la copia intrabloque. Por ejemplo, el aumento del acceso de lectura es causado, al menos en parte, por la obtención de muestras de predicción espacial (que no están en la memoria caché/local). El acceso de lectura aumenta en comparación con los resultados tradicionales de intrapredicción porque, en el modo tradicional de intrapredicción, las muestras contiguas que se utilizan son solo 1 fila de muestras anteriores y 1 columna de muestras de la izquierda, y por lo tanto se pueden colocar en la memoria caché. Sin embargo, cuando se usa una copia intrabloque, las muestras previamente codificadas y/o descodificadas de muestras contiguas y no contiguas pueden usarse como una unidad de referencia (por ejemplo, un bloque de predicción), lo cual aumenta la cantidad de datos que deben almacenarse. En algunos casos, los datos adicionales no pueden almacenarse en caché u otra memoria local, y deben almacenarse utilizando mecanismos de almacenamiento adicionales. En consecuencia, para soportar la mayor cantidad de muestras disponibles, el sistema debe soportar el uso de memoria adicional.
Además, un mayor acceso de escritura es causado debido, en parte, al almacenamiento de ambas muestras no filtradas (por ejemplo, un bloque de predicción) para predicción espacial de copia intrabloque y las muestras reconstruidas filtradas para la predicción de salida/temporal para futuras imágenes. Por ejemplo, las muestras sin filtrar se usan como referencia para la copia intrabloque y, por lo tanto, el sistema necesita almacenar las muestras sin filtrar, así como las muestras filtradas que se generan durante el filtrado en bucle. Las muestras filtradas se pueden usar para la predicción de fotogramas subsiguientes (por ejemplo, usando la interpredicción).
Como se ha descrito previamente, el modo de interpredicción puede incluir unipredicción o bipredicción. Con la bipredicción, un bloque de predicción utiliza dos señales de predicción compensadas por movimiento y dos vectores de movimiento (MV), lo cual carga la memoria y el procesamiento. Además, como se ha analizado anteriormente, el modo de copia intrabloque aumenta los accesos de memoria en el peor de los casos (ancho de banda general del peor de los casos) debido a la necesidad adicional de almacenar muestras no contiguas y muestras no filtradas de la imagen actual, además de las muestras filtradas.
Se describe uno o más sistemas y métodos de codificación en el presente documento que proporcionan restricciones en ciertos modos de predicción para la codificación de vídeo, que pueden ser utilizados para resolver eficazmente los problemas descritos anteriormente. Por ejemplo, uno o más sistemas y métodos de codificación están dirigidos a mejorar la eficiencia del ancho de banda de la memoria, limitar los accesos a la memoria en el peor de los casos y otros aspectos de la copia intrabloque (por ejemplo, para extensiones de codificación de vídeo de alta eficiencia (HEVC), tal como la codificación de contenido de pantalla u otra extensión HEVC). Los sistemas y métodos propuestos en el presente documento también son aplicables a las extensiones HEVC y HEVC, en general, incluido el soporte de una profundidad de bits posiblemente alta (por ejemplo, más de 8 bits u otra profundidad de bits), formato de muestreo de croma alto (por ejemplo, incluyendo 4:4:4 y 4:2:2 u otro muestreo) u otros aspectos de las extensiones HEVC y HEVC.
Se describe uno o más métodos y sistemas en el presente documento para la imposición de una restricción que impide la realización de bipredicción de interpredicción en los datos de vídeo cuando se cumplen ciertas condiciones. Por ejemplo, a continuación, se proporcionan varios ejemplos de restricción de bipredicción basada en predicción de copia intrabloque y otras condiciones. Las condiciones descritas en el presente documento pueden trabajar conjuntamente o por separado con otros ejemplos. Los métodos y sistemas reivindicados usan copia intrabloque. Aunque no se reivindica, se entenderá que estos también podrían aplicarse a otras herramientas de codificación con alto ancho de banda y requisitos de caché, tales como diccionario 1-D, codificación de paleta u otra técnica de codificación adecuada.
De acuerdo con la invención reivindicada, una restricción puede imponerse a bipredicción cuando se habilita la predicción de copia intrabloque. Por ejemplo, la restricción de bipredicción se puede aplicar cuando la predicción de copia intrabloque está habilitada para una o más unidades de codificación o bloques de predicción de los datos de vídeo. En tal ejemplo, la bipredicción puede deshabilitarse para ciertas unidades de codificación (por ejemplo, un bloque actual que se codifica) cuando la predicción de copia intrabloque está habilitada. Se pueden restringir varias formas de bipredicción, tal como la bipredicción de 8x8 u otra bipredicción. Al restringir la bipredicción, se puede mantener el límite de ancho de banda del peor caso de HEVC v1, como en el caso de las extensiones de codificación de contenido de pantalla (SCC).
Además de la predicción de copia intrabloque que se está habilitando, los vectores de movimiento de un bloque de bipredicción deben no ser idénticos y/o no apuntar a la misma imagen de referencia. También pueden aplicarse condiciones adicionales, por ejemplo, un elemento sintáctico que tiene un valor que indica (por ejemplo, para un corte, para una unidad de codificación o similar) que uno o más vectores de movimiento tienen una precisión no entera (por ejemplo, un vector de movimiento fraccional), ambos vectores de movimiento de bloque de bipredicción teniendo una precisión no entera, o cualquier combinación de los mismos. Si se habilita predicción de copia de intrabloque, y los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia, puede aplicarse la restricción en bipredicción, evitando que se realice bipredicción en ciertas unidades o bloques de codificación. Cuando se impone la restricción de bipredicción, hay otros modos de predicción disponibles para codificar o descodificar los datos de vídeo, incluida la unipredicción y la intrapredicción (por ejemplo, IBC u otra intrapredicción). En algunos casos, la unipredicción también puede restringirse cuando se cumplen una o más de las condiciones. El bloque de bipredicción (que se verifica para que sus vectores de movimiento no sean idénticos y/o no apunten a la misma imagen de referencia) puede ser de la imagen que contiene un bloque actual que se está codificando, del corte que contiene el bloque actual o de una unidad de codificación (por ejemplo, una CTU, una CU, u otra unidad de datos de vídeo que se esté descodificando) que contiene el bloque actual. Por ejemplo, si cualquier bloque de bipredicción en una imagen actual que contiene el bloque actual que se está codificando tiene ambos vectores de movimiento que no son idénticos o no apuntan a la misma imagen de referencia, puede imponerse la restricción (cuando se cumplen las otras restricciones, tales como la habilitación de IBC). Como alternativa, si cualquier bloque de bipredicción en un corte actual que contiene el bloque actual que se está codificando tiene ambos vectores de movimiento que no son idénticos o no están apuntando a la misma imagen de referencia, puede imponerse la restricción (cuando se cumplen las otras restricciones, tales como la habilitación de IBC). En otra alternativa, si cualquier bloque de bipredicción en una unidad de codificación actual que contiene el bloque actual que se codifica tiene ambos vectores de movimiento que no son idénticos o no apuntan a la misma imagen de referencia, puede imponerse la restricción (cuando se cumplen las otras restricciones, tales como la habilitación de IBC).
En otro ejemplo, puede imponerse una restricción a bipredicción cuando se habilita la copia intrabloque, los vectores de movimiento de un bloque de bipredicción no deben ser idénticos y/o no apuntan a la misma imagen de referencia y un indicador use_integer_mv se establece en un valor que indica que uno o más vectores de movimiento tienen precisión no entera. El indicador use_integer_mv se puede señalar en el nivel de corte o el nivel de bloque. Por ejemplo, el uno o más vectores de movimiento pueden estar asociados con cualquier bloque dentro de un corte, una unidad o bloque de codificación específico u otra unidad de una imagen. En un ejemplo ilustrativo, si cualquier vector de movimiento asociado con cualquier bloque dentro de un corte tiene una precisión no entera (además de que se habilítela predicción de copia intrabloque), se puede aplicar la restricción. El indicador use_integer_mv puede denominarse en el presente documento un indicador de resolución de vector de movimiento. El indicador de resolución de vector de movimiento especifica la resolución de los vectores de movimiento (MV) utilizados para el modo de interpredicción. Por ejemplo, el indicador de resolución de vector de movimiento se puede establecer en un valor que indique (por ejemplo, para un corte, una unidad de codificación o similar) que uno o más vectores de movimiento tienen una precisión no entera (por ejemplo, un vector de movimiento fraccional). En un ejemplo ilustrativo, un valor de 0 para el indicador de resolución de vector de movimiento indica que uno o más vectores de movimiento (por ejemplo, en un corte, en una unidad de codificación u otra porción de una imagen) tienen una precisión fraccional-pel y un valor de 1 para el indicador de resolución de vector de movimiento indica que todos los vectores de movimiento (por ejemplo, en un corte, en una unidad de codificación u otra porción de una imagen) tienen una precisión entera. Un experto en la materia apreciará que un valor de 1 puede indicar que uno o más vectores de movimiento tienen una precisión fraccional-pel, y un valor de 0 puede indicar que todos los vectores de movimiento tienen precisión entera.
Se puede requerir que se cumplan una o más condiciones diferentes antes de que pueda aplicarse la restricción de bipredicción. Para la extensión de codificación de contenido de pantalla (SCC) a HEVC, cuando al menos uno de los vectores de movimiento (MV) de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 u otro bloque de bipredicción de tamaño adecuado, tal como 4x8, 8x4, 16x16 o cualquier otro bloque de bipredicción de tamaño adecuado) tiene precisión entera, se mantiene (no se supera) el límite del peor de los casos de ancho de banda de versión 1 de HEVC. Por ejemplo, el límite de ancho de banda en el peor de los casos se mantiene en este escenario debido al hecho de que cuando el MV tiene precisión entera, no es necesario cargar las muestras necesarias para las interpolaciones, ya que la interpolación es necesaria solo cuando se usan vectores de movimiento con precisión fraccional. En un escenario en el que un MV de un bloque de bipredicción tiene una precisión entera, no se puede imponer una restricción de bipredicción (por ejemplo, restricción de bipredicción de 8x8 u otra restricción de predicción adecuada). Por lo tanto, una condición para restringir la bipredicción puede incluir que los dos MV de un bloque de bipredicción tengan una precisión no entera (por ejemplo, precisión fraccional-pel). Como se indicó anteriormente, la precisión de los vectores de movimiento puede expresarse mediante el nivel de cuantificación de los vectores de movimiento. El nivel de cuantificación puede ser, por ejemplo, tener precisión entera (por ejemplo, 1 píxel) o precisión fraccional-pel (por ejemplo, % de píxel, A píxel u otro valor de subpíxel).
Además, para la extensión SCC a HEVC, cuando tanto los MV de un bloque de bipredicción son idénticos y/o apuntan a la misma imagen de referencia (refPic), se mantiene el límite del peor de los casos de ancho de banda de versión 1 de HEVC. Por ejemplo, el límite del peor de los casos del ancho de banda se mantiene en este escenario debido al hecho de que cuando los dos MV son idénticos y están apuntando a la misma refPic, las muestras de predicción no necesitan cargarse dos veces para cada MV. Es decir, las mismas muestras de predicción se pueden cargar solo una vez, ya que los MV están apuntando a las mismas muestras. En un escenario en el que los dos MV de un bloque de bipredicción son idénticos y están apuntando al mismo refPic, no es necesario imponer una restricción de bipredicción (por ejemplo, restricción de bipredicción de 8x8). Por lo tanto, otra condición para restringir la bipredicción puede incluir de este modo que los MV de un bloque de bipredicción sean idénticos y/o pertenezcan al mismo índice de referencia.
La restricción puede imponerse selectivamente en bipredicción (por ejemplo, bipredicción de 8x8, u otra bipredicción). En algunos casos, puede ser mejor para un codificador realizar bipredicción porque la bipredicción proporciona el beneficio de una mayor eficiencia de compresión, y cuando la bipredicción está restringida, la eficiencia se pierde. Por lo tanto, en el presente documento se proporciona una restricción perfeccionada de bipredicción, donde la restricción se aplica solo en los casos en que es necesaria. Por ejemplo, la bipredicción (por ejemplo, bipredicción de 8x8 u otra bipredicción) puede restringirse cuando se cumplen una o más o todas las condiciones, incluida cualquier combinación de las mismas. La restricción puede incluir deshabilitar la bipredicción cuando se cumplen las condiciones. Las condiciones pueden incluir, por ejemplo:
a) IBC está habilitado para el bloque actual basado en el corte, la imagen o el control IBC de nivel de secuencia;
b) Use_integer_mv es igual a cero para el corte actual;
c) Ambos de los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) tienen una precisión no entera (por ejemplo, los MV tienen una precisión fraccional-pel);
d) Lo siguiente no es cierto: Los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) son idénticos y están apuntando a la misma imagen de referencia.
La restricción de bipredicción puede imponerse cuando se cumple al menos una o más de las anteriores condiciones (a) y (d). De manera similar, la restricción de bipredicción no puede imponerse cuando no se cumplen al menos las condiciones (a) y (d).
En otro ejemplo, cuando la copia intrabloque está habilitada para un bloque actual u otra unidad de codificación, un valor del indicador use_integer_mv es cero y los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior), la bipredicción está deshabilitada para ciertos bloques de predicción en fotogramas I (por ejemplo, cuando el tamaño del bloque de predicción es menor o igual que un tamaño predefinido, tal como 8x8 u otro tamaño adecuado).
En otro ejemplo más, cuando la copia intrabloque está habilitada para un bloque actual u otra unidad de codificación, un valor de use_integer_mv_flag es cero, los dos MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) tienen una precisión no entera, y los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior), la bipredicción está deshabilitada para ciertos bloques de predicción en fotogramas I (por ejemplo, cuando el tamaño del bloque de predicción es menor o igual a un tamaño predefinido, tal como 8x8 u otro tamaño adecuado).
En otro ejemplo, cuando la copia intrabloque está habilitada para un bloque actual u otra unidad de codificación y los dos MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de predicción de otro tamaño) no son idénticos y/o no apuntan a la misma imagen de referencia (se cumple la condición d) anterior), la bipredicción está deshabilitada para ciertos bloques de predicción en fotogramas I (por ejemplo, cuando el tamaño del bloque de predicción es menor o igual a un tamaño predefinido, tal como 8x8 u otro tamaño adecuado).
En otro ejemplo más, cuando se habilita la copia intrabloque para un bloque actual u otra unidad de codificación, los dos MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de predicción de otro tamaño) tienen una precisión no entera, y los Mv de un bloque de bipredicción (por ejemplo, un bloque de predicción de 8x8 o un bloque de predicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior), la bipredicción está deshabilitada para ciertos bloques de predicción en fotogramas I (por ejemplo, cuando el tamaño del bloque de predicción es menor o igual a un tamaño predefinido, tal como 8x8 u otro tamaño adecuado).
Una restricción del lado del descodificador en bipredicción puede implementarse basándose en al menos las condiciones (a) y (d) anteriores. Por ejemplo, las condiciones (a) y (d) pueden imponerse como restricciones del descodificador al no permitir ciertos valores del elemento sintáctico inter_pred_idc (por ejemplo, inter_pred_idc ==2) para que la bipredicción (por ejemplo, la bipredicción de 8x8 o cualquier otra bipredicción) no se pueda señalizar cuando se cumplen las condiciones (a) y (d). El elemento sintáctico inter_pred_idc puede especificar si se usa la lista 0, lista 1 o bipredicción para la unidad de predicción actual.
Cualquiera de los ejemplos proporcionados anteriormente puede usarse para imponer la restricción del lado del descodificador en la bipredicción. Por ejemplo, la restricción del lado del descodificador se puede aplicar cuando la copia intrabloque está habilitada y los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de predicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior). Como otro ejemplo, la restricción del lado del descodificador se puede aplicar cuando la copia intrabloque está habilitada, use_integer_mv es cero, y los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de predicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior). Como otro ejemplo más, la restricción del lado del descodificador se puede aplicar cuando la copia intrabloque está habilitada, use_integer_mv es cero, los dos MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de predicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior). Como otro ejemplo, la restricción del lado del descodificador se puede aplicar cuando se habilita la copia intrabloque, los dos MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) tienen precisión no entera, y los MV de un bloque de bipredicción (por ejemplo, un bloque de bipredicción de 8x8 o un bloque de bipredicción de otro tamaño) no son idénticos y/o no están apuntando a la misma imagen de referencia (se cumple la condición d) anterior).
En un ejemplo de una restricción del lado del descodificador, la bipredicción de 8x8 (u otra bipredicción) se puede rechazar cuando la copia intrabloque está habilitada, los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia y use_mv_integer es cero. Un experto en la materia apreciará que este ejemplo se aplica a otros tipos de bipredicciones distintas de la bipredicción de 8x8. Por ejemplo, la variable EightbyEightBiPredRestrictionEnableflag se puede obtener como EightbyEightBiPredRestrictionEnableflag = curr_pic_as_ref_enabled flag && !use_integer_mv_flag. En esta obtención, curr_pic_as_ref_enabled_flag puede basarse en un indicador SPS, un indicador PPS o un indicador VPS. En algunos ejemplos, el indicador curr_pic_as_ref_enabled igual a 1 puede especificar que una imagen actual que se refiere a un SPS o PPS (u otro conjunto de parámetros) se puede incluir en una lista de imágenes de referencia de la propia imagen (lo cual significa que se puede usar en una predicción basada en IBC). En algunos ejemplos, el curr_pic_as_ref_enabled_flag igual a 0 puede especificar que una imagen que se refiera al SPS o PPS (u otro conjunto de parámetros) nunca se incluye en ninguna lista de imágenes de referencia de la propia imagen. En algunos ejemplos, cuando no está presente, se puede inferir que el valor de curr_pic_as_ref_enabled es igual a 0 (o 1 en algunos ejemplos). El indicador EightbyEightBiPredRestrictionEnableflag también se conoce como el indicador de restricción de bipredicción, y el indicador curr_pic_as_ref_enabled también se conoce como el indicador IBC. Usando la formulación anterior, cuando el indicador IBC es igual a 1 y el indicador de resolución de vector de movimiento es igual a 0, el indicador de restricción de bipredicción es igual a 1. Cuando el indicador de restricción de bipredicción es igual a 1, se habilita la restricción de bipredicción.
De acuerdo con el documento "High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 3" actual, la sintaxis inter_pred_idc[ x0 ][ y0 ] especifica si se usa la lista 0, lista 1 o bipredicción para la unidad de predicción actual, de acuerdo con la Tabla 7-11, que se muestra a continuación. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra de luma superior izquierda del bloque de predicción considerado en relación con la muestra de luma superior izquierda de la imagen. Las dos variables nPbW y nPbH que especifican la anchura y la altura del bloque de predicción de luma actual.
Tabla 7-11 - Asociación de nombres al modo de interpredicción
En la implementación del ejemplo anterior en la que la bipredicción de 8x8 (u otra bipredicción) no se permite cuando la copia intrabloque está habilitada, los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia y use_integer_mv es cero, el valor de inter_pred_idc[x0][y0] que especifica si se usa la lista 0, lista 1 o bipredicción para la unidad de predicción actual, se obtiene de acuerdo con una versión modificada de la Tabla 7-11 (etiquetada a continuación como Tabla 1 - Asociación de nombres al modo interpredicción).
Tabla 1 - Asociación de nombres al modo de interpredicción
En un segundo ejemplo de una restricción del lado del descodificador, los ejemplos pueden incluir no permitir la bipredicción de 8x8 (u otra bipredicción) cuando la copia intrabloque está habilitada, use_integer_mv es cero, los dos MV de un bloque de bipredicción de 8x8 tienen una precisión no entera (por ejemplo, precisión fraccional-pel), y lo siguiente no es cierto: Los MV de un bloque de bipredicción de 8x8 son idénticos y están apuntando a la misma imagen de referencia (lo cual significa que uno o ambos de: los MV de un bloque de bipredicción de 8x8 no son idénticos o no están apuntando a la misma imagen de referencia). En este ejemplo, la variable EightbyEightBiPredhasIntegermv se obtiene como EightbyEightBiPredhasnoIntegermv = !((mvL0 & 0x3 == 0) II (mvL1&0x3 == 0)). La variable EightbyEightBiPredIdenticalMv se obtiene como EightbyEightBiPrednotIdenticalMv = !((mvL0 == mvL1) && (refIdxL0 == refIdxL1)). La variable EightbyEightBiPredRestrictionEnableflag se obtiene como EightbyEightBiPredRestrictionEnableflag = (curr_pic_as_ref_enabled_flag && !use_integer_mv && EightbyEightBiPredhasnoIntegermv && EightbyEightBiPrednotIdenticalMv). En esta obtención, curr_pic_as ref_enabled_flag puede basarse en un indicador SPS o un indicador PPS.
En el segundo ejemplo de implementación anterior de la restricción del lado del descodificador, el valor de inter_pred_idc[x0][y0] que especifica si se usa la lista 0, lista 1 o bipredicción para la unidad de predicción actual se obtiene de acuerdo con otra versión modificada de la Tabla 7-11 (etiquetada a continuación como Tabla 2 - Asociación de nombres al modo de interpredicción), y con los diferentes valores de las variables correspondientes.
Tabla 2 - Asociación de nombres al modo de interpredicción
Usando las técnicas y sistemas descritos en el presente documento, las técnicas de copia intrabloque se realizan con requisitos de ancho de banda y tamaño de memoria reducidos. Por ejemplo, cuando se usa la predicción de copia intrabloque y se cumplen ciertas otras condiciones, la bipredicción se puede deshabilitar para minimizar la carga sobre el ancho de banda y el tamaño de la memoria. Como resultado, se mejora la eficiencia del ancho de banda de la memoria, se limitan los accesos a la memoria en el peor de los casos y se mejoran otros aspectos de la copia intrabloque.
La FIG. 3 ilustra un ejemplo de un proceso 300 de codificación de datos de vídeo para generar una o más imágenes de vídeo codificadas usando una o más de las técnicas descritas en el presente documento. En 302, el proceso 300 incluye la obtención de datos de vídeo en un codificador. Los datos de vídeo pueden incluir una imagen actual, un corte actual de una imagen actual, una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se está codificando) o cualquier otro dato de vídeo.
En 304, el proceso 300 incluye determinar que la predicción de copia intrabloque está habilitada para realizar la predicción intraimagen en al menos un bloque de los datos de vídeo. Por ejemplo, IBC puede habilitarse para un bloque de la imagen actual, un bloque del corte actual, un bloque de una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se está codificando). En algunos ejemplos, IBC se puede habilitar en un nivel de imagen, corte o secuencia de vídeo codificada (CVS).
En 306, el proceso 300 incluye determinar que ambos vectores de movimiento de un bloque de bipredicción de los datos de vídeo tienen una precisión no entera. Por ejemplo, se puede determinar que ambos vectores del bloque de bipredicción tienen una precisión fraccional-pel, como se ha descrito anteriormente. En algunos ejemplos, el bloque de bipredicción incluye un bloque de bipredicción de 8x8. En algunos ejemplos, el bloque de bipredicción puede incluir cualquier bloque con un cierto tamaño de división, tal como un bloque 4x4, un bloque 16x16 o cualquier otro bloque adecuado.
En 308, el proceso 300 incluye deshabilitar la bipredicción interimagen para codificar uno o más bloques de los datos de vídeo. La bipredicción de interpredicción se deshabilita en respuesta a la determinación de que la predicción de copia intrabloque está habilitada, los vectores de movimiento de un bloque de predicción no son idénticos y/o no apuntan a la misma imagen de referencia y la determinación de que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera. En algunos ejemplos, la unipredicción interimagen todavía se puede utilizar cuando la bipredicción interimagen está deshabilitada. En algunos ejemplos, la unipredicción interimagen también se puede deshabilitar cuando la bipredicción interimagen está deshabilitada.
En 310, el proceso 300 incluye generar la una o más imágenes de vídeo codificadas usando un modo de predicción. El modo de predicción puede incluir unipredicción de intrapredicción o interpredicción. En un ejemplo ilustrativo, el proceso 300 puede incluir realizar la predicción intraimagen en los datos de vídeo utilizando la predicción de copia intrabloque para generar la una o más imágenes de vídeo codificadas. En otro ejemplo ilustrativo, el proceso 300 puede incluir realizar predicción intraimagen para generar la una o más imágenes de vídeo codificadas. En otro ejemplo ilustrativo, el proceso 300 puede incluir realizar unipredicción interimagen para generar la una o más imágenes de vídeo codificadas.
El proceso 300 incluye determinar que ambos vectores de movimiento del bloque de bipredicción no son idénticos o no están apuntando a una misma imagen de referencia. La deshabilitación de la bipredicción de interpredicción en 308 incluye la deshabilitación de la bipredicción interimagen para codificar el uno o más bloques de datos de vídeo en respuesta a la determinación de que la predicción interimagen está habilitada, la determinación de que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera, y la determinación de que ambos vectores de movimiento del bloque de bipredicción no son idénticos o no están apuntando a la misma imagen de referencia.
El proceso 300 puede incluir determinar también que un valor de un indicador de resolución de vector de movimiento es igual a cero. El indicador de resolución de vector de movimiento especifica una resolución de los vectores de movimiento utilizados para un modo de interpredicción. En algunos ejemplos, el indicador de resolución de vector de movimiento incluye el indicador use_integer_mv descrito anteriormente. En tales aspectos, la deshabilitación de la bipredicción de interpredicción en 308 incluye la deshabilitación de la bipredicción interimagen para codificar el uno o más bloques de datos de vídeo en respuesta a la determinación de que la predicción interimagen está habilitada, los vectores de movimiento del bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia y la determinación de que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera y la determinación de que el valor del indicador de resolución de vector de movimiento es igual a cero.
En algunos aspectos, los datos de vídeo comprenden un corte de una imagen. El corte incluye una pluralidad de bloques, como se ha descrito anteriormente. En tales aspectos, la deshabilitación de la bipredicción de interpredicción en 308 incluye la deshabilitación de la bipredicción interimagen para codificar la pluralidad de bloques del corte. Por ejemplo, la bipredicción interimagen puede restringirse solo para bloques del corte, y no para bloques de otros cortes de la imagen. En algunos ejemplos, una imagen puede incluir solo un único corte. En algunos ejemplos, una imagen puede incluir múltiples cortes.
En algunos aspectos, la bipredicción interimagen está deshabilitada únicamente para la codificación de bloques de predicción que tienen un tamaño inferior al tamaño umbral. En algunos ejemplos, el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles o cualquier otro tamaño de bloque adecuado.
La FIG. 4 ilustra otro ejemplo de un proceso 400 de codificación de datos de vídeo para generar una o más imágenes de vídeo codificadas usando una o más de las técnicas descritas en el presente documento. En 402, el proceso 400 incluye la obtención de datos de vídeo en un codificador. Los datos de vídeo pueden incluir una imagen actual, un corte actual de una imagen actual, una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se está codificando) o cualquier otro dato de vídeo.
En 404, el proceso 400 incluye determinar que la predicción de copia intrabloque está habilitada para realizar la predicción intraimagen en al menos un bloque de los datos de vídeo. Por ejemplo, IBC puede habilitarse para un bloque de la imagen actual, un bloque del corte actual, un bloque de una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se está codificando). En algunos ejemplos, IBC se puede habilitar en un nivel de imagen, corte o secuencia de vídeo codificada (CVS).
En 406, el proceso 400 incluye determinar que ambos vectores de movimiento de un bloque de bipredicción de los datos de vídeo no son idénticos o no están apuntando a una misma imagen de referencia. En algunos ejemplos, el bloque de bipredicción incluye un bloque de bipredicción de 8x8. En algunos ejemplos, el bloque de bipredicción puede incluir cualquier bloque con un cierto tamaño de división, tal como un bloque 4x4, un bloque 16x16 o cualquier otro bloque adecuado.
En 408, el proceso 400 incluye deshabilitar la bipredicción interimagen para codificar uno o más bloques de los datos de vídeo. La bipredicción de interpredicción se deshabilita en respuesta a la determinación de que la predicción de copia intrabloque está habilitada y la determinación de que ambos vectores de movimiento del bloque de bipredicción no son idénticos o no están apuntando a la misma imagen de referencia. En algunos ejemplos, la unipredicción interimagen todavía se puede utilizar cuando la bipredicción interimagen está deshabilitada. En algunos ejemplos, la unipredicción interimagen también se puede deshabilitar cuando la bipredicción interimagen está deshabilitada.
En 410, el proceso 400 incluye generar la una o más imágenes de vídeo codificadas usando un modo de predicción. El modo de predicción puede incluir unipredicción de intrapredicción o interpredicción. En un ejemplo ilustrativo, el proceso 400 puede incluir realizar la predicción intraimagen en los datos de vídeo utilizando la predicción de copia intrabloque para generar la una o más imágenes de vídeo codificadas. En otro ejemplo ilustrativo, el proceso 400 puede incluir realizar predicción intraimagen para generar la una o más imágenes de vídeo codificadas. En otro ejemplo ilustrativo, el proceso 400 puede incluir realizar unipredicción interimagen para generar la una o más imágenes de vídeo codificadas.
En algunos aspectos, el proceso 400 incluye determinar que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera. En tales aspectos, la deshabilitación de la bipredicción de interpredicción en 408 incluye la deshabilitación de la bipredicción interimagen para codificar el uno o más bloques de los datos de vídeo en respuesta a la determinación de que la predicción interimagen está habilitada, los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia y la determinación de que ambos vectores de movimiento del bloque de bipredicción no son idénticos o no apuntan a la misma imagen de referencia, y la determinación de que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera.
De acuerdo con la invención, el proceso 400 incluye determinar que un valor de un indicador de resolución de vector de movimiento es igual a cero. El indicador de resolución de vector de movimiento especifica una resolución de los vectores de movimiento utilizados para un modo de interpredicción. La deshabilitación de la bipredicción de interpredicción en 408 incluye la deshabilitación de la bipredicción interimagen para codificar el uno o más bloques de datos de vídeo en respuesta a la determinación de que la predicción interimagen está habilitada, la determinación de que ambos vectores de movimiento del bloque de bipredicción no son idénticos o no apuntan a la misma imagen de referencia, y la determinación de que el valor del indicador de resolución de vector de movimiento es igual a cero.
En algunos aspectos, los datos de vídeo comprenden un corte de una imagen. El corte incluye una pluralidad de bloques, como se ha descrito anteriormente. En tales aspectos, la deshabilitación de la bipredicción de interpredicción en 408 incluye la deshabilitación de la bipredicción interimagen para codificar la pluralidad de bloques del corte. Por ejemplo, la bipredicción interimagen puede restringirse solo para bloques del corte, y no para bloques de otros cortes de la imagen. En algunos ejemplos, una imagen puede incluir solo un único corte. En algunos ejemplos, una imagen puede incluir múltiples cortes.
En algunos aspectos, la bipredicción interimagen está deshabilitada para la codificación de bloques de predicción que tienen un tamaño inferior al tamaño umbral. En algunos ejemplos, el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles o cualquier otro tamaño de bloque adecuado.
La FIG. 5 ilustra un ejemplo de un proceso 500 de descodificación de datos de vídeo para generar una o más imágenes de vídeo descodificadas usando una o más de las técnicas descritas en el presente documento. En 502, el proceso 500 incluye recibir, en un flujo de bits de vídeo, datos de vídeo codificados, codificados usando una pluralidad de modos de predicción. La pluralidad de modos de predicción comprende un modo de unipredicción interimagen, un modo de bipredicción interimagen y un modo de copia intrabloques intraimagen. Los datos de vídeo codificados pueden incluir una imagen actual, un corte actual de una imagen actual, una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se descodifica) o cualquier otro dato de vídeo.
En 504, el proceso 500 incluye recibir, en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está deshabilitada para uno o más bloques de los datos de vídeo codificados. La bipredicción interimagen se deshabilita basándose en que la copia intrabloque se habilita para el uno o más bloques de los datos de vídeo codificados, los vectores de movimiento de un bloque de bipredicción no son idénticos y/o no apuntan a la misma imagen de referencia y ambos vectores de movimiento de un bloque de bipredicción de los datos de vídeo codificados tienen una precisión no entera. Por ejemplo, se puede determinar que ambos vectores del bloque de bipredicción tienen una precisión fraccional-pel, como se ha descrito anteriormente. En algunos ejemplos, se puede habilitar IBC para un bloque de la imagen actual, un bloque del corte actual, un bloque de una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se descodifica). En algunos ejemplos, IBC se puede habilitar en un nivel de imagen, corte o secuencia de vídeo codificada (CVS). En algunos ejemplos, el bloque de bipredicción con vectores de movimiento no enteros incluye un bloque de bipredicción de 8x8. En algunos ejemplos, el bloque de bipredicción puede incluir cualquier bloque con un cierto tamaño de división, tal como un bloque 4x4, un bloque 16x16 o cualquier otro bloque adecuado.
En 506, el proceso 500 incluye determinar, basándose en la indicación, un modo de predicción a partir de la pluralidad de modos de predicción para predecir un bloque de los datos de vídeo codificados. Por ejemplo, el modo de unipredicción interimagen o el modo de copia intrabloque intraimagen se puede seleccionar para usar en la descodificación de los datos de vídeo codificados.
En 508, el proceso 500 incluye descodificar el bloque de los datos de vídeo codificados usando el modo de predicción determinado. Por ejemplo, los datos de vídeo codificados pueden descodificarse usando el modo de unipredicción interimagen o el modo de copia intrabloque intraimagen.
En algunos ejemplos, la bipredicción interimagen se deshabilita basándose en que la copia intrabloque se habilita para uno o más bloques de los datos de vídeo codificados, ambos vectores de movimiento de un bloque de bipredicción de los datos de vídeo están codificados en una precisión no entera, y ambos vectores de movimiento del bloque de bipredicción no son idénticos o no están apuntando a una misma imagen de referencia.
En algunos ejemplos, la bipredicción interimagen se deshabilita basándose en que la copia intrabloque se habilita para el uno o más bloques de los datos de vídeo codificados, ambos vectores de movimiento de un bloque de bipredicción de los datos de vídeo codificados están en una precisión no entera, y un valor de un indicador de resolución de vector de movimiento es igual a cero, con el indicador de resolución de vector de movimiento especificando una resolución de los vectores de movimiento utilizados para un modo de interpredicción.
En algunos aspectos, los datos de vídeo codificados comprenden un corte de una imagen. El corte incluye una pluralidad de bloques, como se ha descrito anteriormente. En tales aspectos, la bipredicción de interpredicción está deshabilitada para descodificar la pluralidad de bloques del corte.
En algunos aspectos, la bipredicción interimagen está deshabilitada para la descodificación de bloques de predicción que tienen un tamaño inferior al umbral. En algunos ejemplos, el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles o cualquier otro tamaño de bloque adecuado.
La FIG. 6 ilustra otro ejemplo de un proceso 600 de descodificación de datos de vídeo para generar una o más imágenes de vídeo descodificadas usando una o más de las técnicas descritas en el presente documento. En 602, el proceso 600 incluye recibir, en un flujo de bits de vídeo, datos de vídeo codificados, codificados usando una pluralidad de modos de predicción. La pluralidad de modos de predicción comprende un modo de unipredicción interimagen, un modo de bipredicción interimagen y un modo de copia intrabloques intraimagen. Los datos de vídeo codificados pueden incluir una imagen actual, un corte actual de una imagen actual, una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se descodifica) o cualquier otro dato de vídeo.
En 604, el proceso 600 incluye recibir, en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está deshabilitada para uno o más bloques de los datos de vídeo codificados. La bipredicción interimagen se deshabilita basándose en que se habilite la copia intrabloque para el uno o más bloques de los datos de vídeo codificados y que ambos vectores de movimiento de un bloque de bipredicción no sean idénticos o no estén apuntando a la misma imagen de referencia. En algunos ejemplos, se puede habilitar IBC para un bloque de la imagen actual, un bloque del corte actual, un bloque de una unidad de codificación actual (por ejemplo, una CTU, una CU u otra unidad de datos de vídeo que se descodifica). En algunos ejemplos, IBC se puede habilitar en un nivel de imagen, corte o secuencia de vídeo codificada (CVS). En algunos ejemplos, el bloque de bipredicción con vectores de movimiento no idénticos incluye un bloque de bipredicción de 8x8. En algunos ejemplos, el bloque de bipredicción puede incluir cualquier bloque con un cierto tamaño de división, tal como un bloque 4x4, un bloque 16x16 o cualquier otro bloque adecuado.
En 606, el proceso 600 incluye determinar, basándose en la indicación, un modo de predicción a partir de la pluralidad de modos de predicción para predecir un bloque de los datos de vídeo codificados. Por ejemplo, el modo de unipredicción interimagen o el modo de copia intrabloque intraimagen se puede seleccionar para usar en la descodificación de los datos de vídeo codificados.
En 608, el proceso 600 incluye descodificar el bloque de los datos de vídeo codificados usando el modo de predicción determinado. Por ejemplo, los datos de vídeo codificados pueden descodificarse usando el modo de unipredicción interimagen o el modo de copia intrabloque intraimagen.
En algunos aspectos, la bipredicción interimagen está deshabilitada basándose en que la copia intrabloque esté habilitada para el uno o más bloques de los datos de vídeo codificados, que ambos vectores de movimiento de un bloque de bipredicción no sean idénticos o no estén apuntando a la misma imagen de referencia, y que ambos vectores de movimiento del bloque de bipredicción tengan una precisión no entera.
En algunos aspectos, la bipredicción interimagen está deshabilitada basándose en que la copia intrabloque esté habilitada para el uno o más bloques de los datos de vídeo codificados, que ambos vectores de movimiento de un bloque de bipredicción no sean idénticos o no estén apuntando a la misma imagen de referencia, y que un valor de un indicador de resolución de vector de movimiento sea igual a cero, con el indicador de resolución de vector de movimiento especificando una resolución de los vectores de movimiento utilizados para un modo de interpredicción.
En algunos aspectos, los datos de vídeo comprenden un corte de una imagen. El corte incluye una pluralidad de bloques, como se ha descrito anteriormente. En tales aspectos, la bipredicción de interpredicción está deshabilitada para descodificar la pluralidad de bloques del corte.
En algunos aspectos, la bipredicción interimagen está deshabilitada para la descodificación de bloques de predicción que tienen un tamaño inferior al umbral. En algunos ejemplos, el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles.
En algunos ejemplos, los procesos 300, 400, 500 y 600 pueden realizarse mediante un dispositivo informático o un aparato, tal como el sistema 100 mostrado en la FIG. 1. Por ejemplo, los procesos 300 y 400 pueden realizarse mediante el dispositivo de codificación 104 mostrado en la FIG. 1 y la FIG. 7, y los procesos 500 y 600 pueden realizarse mediante el dispositivo de descodificación 112 mostrado en la FIG. 1 y la FIG. 8. En algunos casos, el dispositivo o aparato informático puede incluir un procesador, microprocesador, microordenador u otro componente de un dispositivo que esté configurado para llevar a cabo las etapas de los procesos 300, 400, 500 y 600. En algunos ejemplos, el dispositivo o aparato informático puede incluir una cámara configurada para capturar datos de vídeo (por ejemplo, una secuencia de vídeo) que incluye fotogramas de vídeo. En algunos ejemplos, una cámara u otro dispositivo de captura que captura los datos de vídeo está separado del dispositivo informático, en cuyo caso el dispositivo informático recibe u obtiene los datos de vídeo capturados. El dispositivo informático puede incluir además una interfaz de red configurada para comunicar los datos de vídeo. La interfaz de red puede configurarse para comunicar datos basados en el Protocolo de Internet (IP) u otro tipo de datos.
Los procesos 300, 400, 500 y 600 se ilustran como diagramas de flujo lógicos, cuya operación representa una secuencia de operaciones que pueden implementarse en hardware, instrucciones informáticas o una combinación de las mismas. En el contexto de las instrucciones informáticas, las operaciones representan instrucciones ejecutables por ordenador almacenadas en uno o más medios de almacenamiento legibles por ordenador que, cuando son ejecutadas por uno o más procesadores, realizan las operaciones indicadas. En general, las instrucciones ejecutables por ordenador incluyen rutinas, programas, objetos, componentes, estructuras de datos y similares que realizan funciones particulares o implementan tipos de datos particulares. El orden en el que se describen las operaciones no pretende ser interpretado como una limitación, y cualquier número de las operaciones descritas se puede combinar en cualquier orden y/o en paralelo para implementar los procesos.
Adicionalmente, los procesos 300, 400, 500 y 600 pueden realizarse bajo el control de uno o más sistemas informáticos configurados con instrucciones ejecutables y pueden implementarse como código (por ejemplo, instrucciones ejecutables, uno o más programas informáticos, o una o más aplicaciones) ejecutándose colectivamente en uno o más procesadores, mediante hardware o combinaciones de los mismos. Como se ha indicado anteriormente, el código puede almacenarse en un medio de almacenamiento legible por ordenador o legible por máquina, por ejemplo, en forma de un programa informático que comprende una pluralidad de instrucciones ejecutables por uno o más procesadores. El medio de almacenamiento legible por ordenador o por máquina puede no ser transitorio.
Las técnicas de codificación analizadas en el presente documento pueden implementarse en un sistema de codificación y descodificación de vídeo de ejemplo (por ejemplo, el sistema 100). En algunos ejemplos, un sistema incluye un dispositivo de origen que proporciona datos de vídeo codificados, a descodificar en un momento posterior mediante un dispositivo de destino. En particular, el dispositivo de origen proporciona los datos de vídeo al dispositivo de destino mediante un medio legible por ordenador. El dispositivo de origen y el dispositivo de destino pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores portables (es decir, portátiles), ordenadores tipo tableta, descodificadores, teléfonos tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de envío por flujo continuo o similares. En algunos casos, el dispositivo de origen y el dispositivo de destino pueden estar equipados para la comunicación inalámbrica.
El dispositivo de destino puede recibir los datos de vídeo codificados a descodificar mediante el medio legible por ordenador. El medio legible por ordenador puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo de origen al dispositivo de destino. En un ejemplo, el medio legible por ordenador puede comprender un medio de comunicación para habilitar el dispositivo de origen para transmitir datos de vídeo codificados directamente al dispositivo de destino en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica tal como un espectro de radiofrecuencia (RF) o una o más líneas 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 enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen hasta el dispositivo de destino.
En algunos ejemplos, pueden enviarse datos codificados desde la interfaz de salida hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de varios medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen. El dispositivo de destino puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento, mediante envío por flujo continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino. Servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión wifi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión por envío por flujo continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o contextos inalámbricos. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de cualquiera de una variedad de aplicaciones de multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por envío por flujo continuo por internet, tales como envío por flujo continuo adaptativo dinámico por HTTP (DASH), vídeo digital que se codifica 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 puede estar configurado para prestar soporte a una transmisión de vídeo unidireccional o bidireccional, para prestar soporte a aplicaciones tales como la transmisión de vídeo en tiempo real, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
En un ejemplo, el dispositivo de origen incluye un origen de vídeo, un codificador de vídeo y una interfaz de salida. El dispositivo de destino puede incluir una interfaz de entrada, un descodificador de vídeo y un dispositivo de visualización. El codificador de vídeo del dispositivo de origen puede configurarse para aplicar las técnicas divulgadas en el presente documento. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen puede recibir datos de vídeo desde un origen de vídeo externo, tal como una cámara externa. Del mismo modo, el dispositivo de destino puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema de ejemplo anterior es simplemente un ejemplo. Las técnicas para el procesamiento de datos de vídeo en paralelo pueden realizarse mediante cualquier dispositivo de codificación y/o de descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se realizan por un dispositivo de codificación de vídeo, las técnicas también se pueden realizar por un codificador/descodificador de vídeo, denominado típicamente como un "CÓDEC". Además, las técnicas de esta divulgación también se pueden realizar por un preprocesador de vídeo. El dispositivo de origen y el dispositivo de destino son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo de origen genera datos de vídeo codificados para su transmisión al dispositivo de destino. En algunos ejemplos, los dispositivos de origen y destino pueden operar de manera esencialmente simétrica, de modo que cada uno de los dispositivos incluye componentes de codificación y de descodificación de vídeo. De ahí que los sistemas de ejemplo puedan prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo, por ejemplo, para el envío por flujo continuo de vídeo, la reproducción de vídeo, la difusión de vídeo o la videotelefonía.
El origen de vídeo puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, el origen de vídeo puede generar datos basados en gráficos de ordenador como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo es una videocámara, el dispositivo de origen y el dispositivo de destino pueden formar los llamados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas. En cada caso, el codificador de vídeo puede codificar el vídeo capturado, precapturado o generado por ordenador. A continuación, la información de vídeo codificada puede proporcionarse por la interfaz de salida a un medio legible por ordenador.
Como se ha indicado, el medio legible por ordenador puede incluir medios transitorios, tales como una difusión inalámbrica o una transmisión de red alámbrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen y proporcionar los datos de vídeo codificados al dispositivo de destino, por ejemplo, mediante transmisión por red. De forma similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador incluye uno o más medios legibles por ordenador de diversas formas, en varios ejemplos.
La interfaz de entrada del dispositivo de destino recibe información del medio legible por ordenador. La información del medio legible por ordenador puede incluir información sintáctica definida por el codificador de vídeo, que también es utilizada por el descodificador de vídeo, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, grupos de imágenes (GOP). Un dispositivo de visualización muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera entre varios dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización. Se han descrito diversas realizaciones de la invención.
Los detalles específicos del dispositivo de codificación 104 y el dispositivo de descodificación 112 se muestran en la FIG. 7 y la FIG. 8, respectivamente. La FIG. 7 es un diagrama de bloques que ilustra un dispositivo de codificación 104 de ejemplo que puede implementar una o más de las técnicas descritas en esta divulgación. El dispositivo de codificación 104 puede generar, por ejemplo, las estructuras sintácticas descritas en el presente documento (por ejemplo, las estructuras sintácticas de un<v>P<s>, SPS, PPS u otros elementos sintácticos). El dispositivo de codificación 104 puede realizar codificación de intrapredicción y interpredicción de bloques de vídeo dentro de cortes de vídeo. Como se ha descrito anteriormente, la intracodificación se basa, al menos en parte, en la predicción espacial para reducir o eliminar la redundancia espacial en una imagen o fotograma de vídeo dados. La intercodificación se basa, al menos en parte, en la predicción temporal para reducir o eliminar la redundancia temporal en los fotogramas adyacentes o circundantes de una secuencia de vídeo. El modo intra (modo I) puede hacer referencia a cualquiera de varios modos de compresión en base espacial. Los modos inter, tales como la predicción unidireccional (modo P) o la bipredicción direccional (modo B), pueden hacer referencia a cualquiera de varios modos de compresión en base temporal.
El dispositivo de codificación 104 incluye una unidad de división 35, una unidad de procesamiento de predicción 41, una unidad de filtro 63, una memoria de imágenes 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de estimación de movimiento 42, la unidad de compensación de movimiento 44 y la unidad de procesamiento de intrapredicción 46. Para la reconstrucción de bloques de vídeo, el dispositivo de codificación 104 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. La unidad de filtro 63 está destinada a representar uno o más filtros de bucle tales como un filtro de eliminación de bloques, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento adaptativo de muestras (SAO). Aunque la unidad de filtro 63 que se muestra en la FIG. 7 es un filtro de bucle, en otras configuraciones, la unidad de filtro 63 puede implementarse como un filtro postbucle. Un dispositivo de postprocesamiento 57 puede realizar un procesamiento adicional en los datos de vídeo codificados generados por el dispositivo de codificación 104. Las técnicas de esta divulgación pueden implementarse en algunos casos mediante el dispositivo de codificación 104. En otros casos, sin embargo, una o más de las técnicas de esta divulgación pueden implementarse mediante el dispositivo de postprocesamiento 57.
Como se muestra en la FIG. 7, el dispositivo de codificación 104 recibe datos de vídeo, y la unidad de división 35 divide los datos en bloques de vídeo. La división también puede incluir la división en cortes, segmentos de corte, elementos u otras unidades mayores, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de LCU y CU. El dispositivo de codificación 104 ilustra, en general, los componentes que codifican bloques de vídeo dentro de un corte de vídeo que se va a codificar. El corte se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados elementos). La unidad de procesamiento de predicción 41 puede seleccionar uno entre una pluralidad de posibles modos de codificación, tal como uno entre una pluralidad de modos de codificación de intrapredicción, o uno entre una pluralidad de modos de codificación de interpredicción, para el bloque de vídeo actual basándose en resultados de error (por ejemplo, la tasa de codificación y el nivel de distorsión, o similares). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad de procesamiento de intrapredicción 46, dentro de la unidad de procesamiento de predicción 41, puede realizar la codificación de intrapredicción del bloque de vídeo actual con respecto a uno o más bloques contiguos en el mismo fotograma o corte que el bloque actual que va a codificarse, para proporcionar una compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la codificación interpredictiva del bloque de vídeo actual con respecto a uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
La unidad de estimación de movimiento 42 se puede configurar para determinar el modo de interpredicción para un corte de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar cortes de vídeo de la secuencia como cortes P, cortes B o cortes GPB. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de predicción (PU) de un bloque de vídeo dentro de un fotograma o imagen de vídeo actual con respecto a un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se descubre que se corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, lo cual puede determinarse mediante la suma de diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el dispositivo de codificación 104 puede calcular los valores para las posiciones de subpíxel de imágenes de referencia almacenadas en la memoria de imágenes 64. Por ejemplo, el dispositivo de codificación 104 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento con respecto a las posiciones de píxel completo y las posiciones de píxel fraccional, y enviar un vector de movimiento con una precisión de píxeles fraccional.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un corte intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse entre una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado mediante estimación de movimiento, posiblemente realizando interpolaciones hasta la precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al que apunta el vector de movimiento en una lista de imágenes de referencia. El dispositivo de codificación 104 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luminancia como de crominancia. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos sintácticos asociados a los bloques de vídeo y al corte de vídeo para su uso mediante el dispositivo de descodificación 112 en la descodificación de los bloques de vídeo del corte de vídeo.
La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, de forma alternativa a la interpredicción llevada a cabo por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad de procesamiento de intrapredicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para usar a partir de los modos sometidos a prueba. Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de tasa-distorsión usando un análisis de distorsión de tasa para los diversos modos de intrapredicción sometidos a prueba, y puede seleccionar el modo de intrapredicción que tenga las mejores características de tasadistorsión entre los modos sometidos a prueba. El análisis de tasa-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular relaciones a partir de las distorsiones y tasas para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de tasa-distorsión para el bloque.
En cualquier caso, tras seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar información que indica el modo de intrapredicción seleccionado para el bloque, a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intrapredicción seleccionado. El dispositivo de codificación 104 puede incluir en la configuración de flujo de bits transmitido definiciones de datos de contextos de codificación para varios bloques, así como indicaciones de un modo de intrapredicción más probable, una tabla de índice de modo intrapredicción y una tabla de índice de modo intrapredicción modificado para utilizar para cada uno de los contextos. Los datos de configuración de flujo de bits pueden incluir una pluralidad de tablas de índice de modo de intrapredicción y una pluralidad de tablas de índice de modo de intrapredicción modificado (también denominadas tablas de mapeo de palabras de código).
Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, por medio de interpredicción o bien intrapredicción, el dispositivo de codificación 104 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual se pueden incluir en una o más TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada cosenoidal discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 52 puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos de, o a todos, los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar a continuación un escaneado de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar el escaneado.
Tras la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) u otra técnica de codificación por entropía. Seguidamente a la codificación por entropía mediante la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al dispositivo de descodificación 112, o archivarse para su posterior transmisión o recuperación mediante el dispositivo de descodificación 112. La unidad de codificación por entropía 56 también puede codificar por entropía los vectores de movimiento y los otros elementos sintácticos para el corte de vídeo actual que se está codificando.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, para su posterior uso como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia de una lista de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles de subenteros, para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento generado por la unidad de compensación de movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imágenes 64. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden usar el bloque de referencia como bloque de referencia para realizar una interpredicción de un bloque en un fotograma o imagen de vídeo subsiguiente.
De esta manera, el dispositivo de codificación 104 de la FIG. 7 representa un ejemplo de un codificador de vídeo configurado para generar sintaxis para un flujo de bits de vídeo codificado. El dispositivo de codificación 104 puede, por ejemplo, generar conjuntos de parámetros VPS, SPS y PPS como se ha descrito anteriormente. El dispositivo de codificación 104 puede realizar cualquiera de las técnicas descritas en el presente documento, incluidos los procesos descritos anteriormente con respecto a la FIG. 3 y la FIG. 4. Las técnicas de esta divulgación se han descrito en general con respecto al dispositivo de codificación 104, pero como se ha mencionado anteriormente, algunas de las técnicas de esta divulgación también pueden implementarse mediante el dispositivo de postprocesamiento 57.
La FIG. 8 es un diagrama de bloques que ilustra un dispositivo de descodificación 112 de ejemplo. El dispositivo de descodificación 112 incluye una unidad de descodificación por entropía 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformada inversa 88, un sumador 90, una unidad de filtro 91 y una memoria de imágenes 92. La unidad de procesamiento de predicción 81 incluye una unidad de compensación de movimiento 82 y una unidad de procesamiento de intrapredicción 84. El dispositivo de descodificación 112 puede, en algunos ejemplos, realizar una pasada de descodificación que, en general, es recíproca a la pasada de codificación descrita con respecto al dispositivo de codificación 104 de la FIG. 7. El dispositivo de descodificación 112 puede realizar cualquiera de las técnicas descritas en el presente documento, incluidos los procesos descritos anteriormente con respecto a la FIG. 5 y la FIG. 6.
Durante el proceso de descodificación, el dispositivo de descodificación 112 recibe un flujo de bits de vídeo codificado, que representa los bloques de vídeo de un corte de vídeo codificado y elementos sintácticos asociados, enviados por el dispositivo de codificación 104. En algunas realizaciones, el dispositivo de descodificación 112 puede recibir el flujo de bits de vídeo codificado desde el dispositivo de codificación 104. En algunas realizaciones, el dispositivo de descodificación 112 puede recibir el flujo de bits de vídeo codificado desde una entidad de red 79, tal como un servidor, un elemento de red con reconocimiento de medios (MANE), un editor/empalmador de vídeo u otro dispositivo similar configurado para implementar una o más de las técnicas descritas anteriormente. La entidad de red 79 puede incluir o no el dispositivo de codificación 104. La entidad de red 79 puede implementar algunas de las técnicas descritas en esta divulgación, antes de que la entidad de red 79 transmita el flujo de bits de vídeo codificado al dispositivo de descodificación 112. En algunos sistemas de descodificación de vídeo, la entidad de red 79 y el dispositivo de descodificación 112 pueden formar parte de dispositivos independientes, mientras que, en otros casos, el mismo dispositivo que comprende el dispositivo de descodificación 112 puede realizar la funcionalidad descrita con respecto a la entidad de red 79.
La unidad de descodificación por entropía 80 del dispositivo de descodificación 112 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 80 reenvía los vectores de movimiento y otros elementos sintácticos a la unidad de procesamiento de predicción 81. El dispositivo de descodificación 112 puede recibir los elementos sintácticos en el nivel de corte de vídeo y/o el nivel de bloque de vídeo. La unidad de descodificación por entropía 80 puede procesar y analizar elementos sintácticos de longitud fija y elementos sintácticos de longitud variable en uno o más conjuntos de parámetros, tales como un VPS, SPS y PPS.
Cuando el corte de vídeo se codifica como un corte intracodificado (I), la unidad de procesamiento de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual, basándose en un modo de intrapredicción señalado y datos de los bloques previamente descodificados del fotograma o imagen actual. Cuando el fotograma de vídeo se codifica como un corte intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 genera bloques predictivos para un bloque de vídeo del corte de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 80. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una lista de imágenes de referencia. El dispositivo de descodificación 112 puede construir las listas de fotogramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas, basándose en las imágenes de referencia almacenadas en la memoria de imágenes 92.
La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del corte de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos del bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 82 puede usar uno o más elementos sintácticos en un conjunto de parámetros para determinar un modo de predicción (por ejemplo, intra o inter predicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de interpredicción (por ejemplo, un corte B, un corte P o un corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo intercodificado del corte, el estado de interpredicción para cada bloque de vídeo intercodificado del corte y otra información para descodificar los bloques de vídeo en el corte de vídeo actual.
La unidad de compensación de movimiento 82 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como se usan mediante el dispositivo de codificación 104 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles de subenteros de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el dispositivo de codificación 104 a partir de los elementos sintácticos recibidos y puede usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica de manera inversa, o, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el dispositivo de codificación 104 para cada bloque de vídeo del corte de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa (por ejemplo, una DCT inversa u otra transformada inversa adecuada), una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para generar bloques residuales en el dominio del píxel.
Después de que la unidad de compensación de movimiento 82 genere el bloque predictivo para el bloque de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos, el dispositivo de descodificación 112 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también pueden usarse filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad de vídeo. La unidad de filtro 91 está destinada a representar uno o más filtros de bucle tales como un filtro de eliminación de bloques, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento adaptativo de muestras (SAO). Aunque la unidad de filtro 91 que se muestra en la FIG. 8 es un filtro de bucle, en otras configuraciones, la unidad de filtro 91 puede implementarse como un filtro postbucle. Los bloques de vídeo descodificados en un fotograma o imagen dados se almacenan a continuación en la memoria de imágenes 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La memoria de imágenes 92 también almacena vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de destino de vídeo 122 mostrado en la FIG. 1.
En la descripción anterior, se describen aspectos de la aplicación con referencia a realizaciones específicos de la misma, pero los expertos en la materia reconocerán que la invención no esté limitada a los mismos. Por lo tanto, si bien las realizaciones ilustrativas de la solicitud se han descrito en detalle en el presente documento, debe entenderse que los conceptos de la invención pueden de otra manera incorporarse y emplearse de manera diferente, y que las reivindicaciones adjuntas están destinadas a interpretarse para incluir tales variaciones, excepto de la forma en la que están limitadas por el estado de la técnica. Diversas características y aspectos de la invención descrita anteriormente pueden usarse individualmente o conjuntamente. Además, pueden utilizarse realizaciones en cualquier número de entornos y aplicaciones más allá de aquellos descritos en el presente documento sin alejarse del alcance de la memoria descriptiva. La memoria descriptiva y los dibujos, en consecuencia, deben considerarse en un sentido ilustrativo, en lugar de en un sentido restrictivo. Para fines de ilustración, los métodos se han descrito en un orden particular. Debería apreciarse que, en realizaciones alternativas, los métodos pueden realizarse en un orden diferente al descrito.
Cuando los componentes se describen como "configurados para" realizar ciertas operaciones, dicha configuración se puede lograr, por ejemplo, mediante el diseño de circuitos electrónicos u otro hardware para realizar la operación, mediante la programación de circuitos electrónicos programables (por ejemplo, microprocesadores u otros circuitos electrónicos adecuados) para realizar la operación, o cualquier combinación de los mismos.
Los diversos bloques lógicos, módulos, circuitos y etapas de algoritmo ilustrativos descritos en relación con las realizaciones divulgados en el presente documento pueden implementarse como hardware electrónico, software informático, firmware o combinaciones de los mismos. Para ilustrar claramente esta intercambiabilidad de hardware y software, anteriormente se han descrito diversos componentes, bloques, módulos, circuitos y etapas ilustrativos, en general, en lo que respecta a su funcionalidad. Que dicha funcionalidad se implemente como hardware o software depende de la aplicación particular y de las restricciones de diseño impuestas en el sistema general. Los expertos en la materia pueden implementar la funcionalidad descrita de formas distintas para cada solicitud particular, pero no debería interpretarse que dichas decisiones de implementación suponen apartarse del alcance de la presente invención.
Las técnicas descritas en el presente documento también se pueden implementar en hardware electrónico, software informático, firmware o en cualquier combinación de los mismos. Dichas técnicas pueden implementarse en cualquiera entre una variedad de dispositivos tales como ordenadores de propósito general, microteléfonos de dispositivos de comunicación inalámbrica o dispositivos de circuitos integrados que tienen múltiples usos, incluyendo su aplicación en microteléfonos de dispositivos de comunicación inalámbrica y otros dispositivos. Todas las características descritas como módulos o componentes pueden implementarse juntas en un dispositivo lógico integrado o por separado, como dispositivos lógicos discretos pero interoperables. Si se implementan en software, las técnicas pueden realizarse, al menos en parte, mediante un medio de almacenamiento de datos legible por ordenador que comprenda código de programa que incluye instrucciones que, cuando se ejecutan, realizan uno o más de los métodos descritos anteriormente. El medio de almacenamiento de datos legible por ordenador puede formar parte de un producto de programa informático, que puede incluir materiales de embalaje. El medio legible por ordenador puede comprender memoria o medios de almacenamiento de datos, tales como memoria de acceso aleatorio (RAM), tal como memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volátil (NVRAM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), memoria FLASH, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas se pueden realizar, adicionalmente o de forma alternativa, al menos en parte, por un medio de comunicación legible por ordenador que transporta o comunica código de programa en forma de instrucciones o estructuras de datos y a las que se puede acceder, leer y/o ejecutar por medio de un ordenador, tales como señales u ondas propagadas.
El código de programa puede ser ejecutado por un procesador, que puede incluir uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA) u otros circuitos lógicos equivalentes, integrados o discretos. Un procesador de este tipo puede estar configurado para realizar cualquiera de las técnicas descritas en esta divulgación. Un procesador de propósito general puede ser un microprocesador, pero, de forma alternativa, el procesador puede ser cualquier procesador, controlador, microcontrolador o máquina de estados convencional. Un procesador también se puede implementar como una combinación de dispositivos informáticos, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP o cualquier otra configuración de este tipo. Por consiguiente, el término "procesador", como se usa en el presente documento, puede referirse a cualquier estructura anterior, cualquier combinación de la estructura anterior, o cualquier otra estructura o aparato adecuados para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de software o módulos de hardware especializados configurados para la codificación y la descodificación, o incorporados en un codificador-descodificador de vídeo combinado (CÓDEC).

Claims (13)

REIVINDICACIONES
1. Un método (400) de codificación de datos de vídeo para generar una o más imágenes de vídeo codificadas, comprendiendo el método:
obtener (402) datos de vídeo en un codificador (104);
determinar (404) si se habilita la predicción de copia intrabloque para realizar predicción intraimagen en al menos un bloque de la unidad de codificación, corte o imagen de datos de vídeo que incluyen un bloque actual que se va a codificar;
determinar (406) si ambos vectores de movimiento de un bloque de predicción de la unidad de codificación, corte o imagen de datos de vídeo no están apuntando a una misma imagen de referencia;
deshabilitar (408) selectivamente bipredicción interimagen para codificar uno o más bloques de los datos de vídeo, en donde se deshabilita la bipredicción de interpredicción en respuesta a la determinación de que se habilita predicción de copia interbloque y determinar que ambos vectores de movimiento del bloque de bipredicción no están apuntando a la misma imagen de referencia; y
generar (410) la una o más imágenes de vídeo codificadas usando un modo de predicción.
2. Un método (300) de codificación de datos de vídeo para generar una o más imágenes de vídeo codificadas, comprendiendo el método:
obtener (302) datos de vídeo en un codificador (104);
determinar (304) si se habilita predicción de copia intrabloque para realizar predicción intraimagen en al menos un bloque de la unidad de codificación, corte o imagen de datos de vídeo que incluyen un bloque actual que se va a codificar;
determinar (306) si ambos vectores de movimiento de un bloque de bipredicción de la unidad de codificación, corte o imagen de datos de vídeo no están apuntando a una misma imagen de referencia;
deshabilitar (308) selectivamente la bipredicción interimagen para codificar el uno o más bloques de los datos de vídeo en respuesta a que se habilita la determinación de la predicción intraimagen, determinar que ambos vectores de movimiento del bloque de predicción no están apuntando a la misma imagen de referencia, y determinar que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera; y
generar (310) la una o más imágenes de vídeo codificadas usando un modo de predicción.
3. El método (400, 300) de una cualquiera de las reivindicaciones anteriores, en donde los datos de vídeo comprenden un corte de una imagen, incluyendo el corte una pluralidad de bloques, y en donde la deshabilitación incluye deshabilitar la bipredicción interimagen para codificar la pluralidad de bloques del corte.
4. El método (400, 300) de una cualquiera de las reivindicaciones anteriores, en donde el bloque de bipredicción incluye un bloque de bipredicción 8x8.
5. El método (400, 300) de una cualquiera de las reivindicaciones anteriores, en donde se deshabilita la bipredicción interimagen para codificar bloques de predicción que son menores que un tamaño umbral.
6. El método (400, 300) de la reivindicación 5, en donde el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles.
7. Un aparato (104) que comprende:
una memoria configurada para almacenar datos de vídeo; y
un procesador configurado para:
obtener (402) datos de vídeo en un codificador;
determinar (404) si se habilita predicción de copia intrabloque para realizar predicción intraimagen en al menos un bloque de la unidad de codificación, corte o imagen de datos de vídeo que incluye un bloque actual que se va a codificar;
determinar (406) si ambos vectores de movimiento de un bloque de bipredicción de la unidad de codificación, corte o imagen de datos de vídeo no están apuntando a una misma referencia;
deshabilitar (408) selectivamente bipredicción interimagen para codificar uno o más bloques de los datos de vídeo, en donde se deshabilita bipredicción interpredicción en respuesta a determinar que se habilita la predicción de copia intrabloque y determinar que ambos vectores de movimiento del bloque de bipredicción no están apuntando a la misma imagen de referencia; y
generar (410) una o más imágenes de vídeo codificadas usando un modo de predicción.
8. Un aparato (104) que comprende:
una memoria configurada para almacenar datos de vídeo; y
un procesador configurado para:
obtener (302) datos de vídeo en un codificador;
determinar (304) si se habilita predicción de copia intrabloque para realizar predicción intraimagen en al menos un bloque de la unidad de codificación, corte o imagen de datos de vídeo que incluyen un bloque actual que se va a codificar;
determinar (306) si ambos vectores de movimiento de un bloque de bipredicción de la unidad de codificación, corte o imagen de datos de vídeo no están apuntando a una misma imagen de referencia;
deshabilitar (308) selectivamente la bipredicción interimagen para codificar el uno o más bloques de los datos de vídeo en respuesta a determinar que se habilita la predicción intraimagen, determinar que ambos vectores de movimiento del bloque de bipredicción no están apuntando a la misma imagen de referencia, y determinar que ambos vectores de movimiento del bloque de bipredicción tienen una precisión no entera; y generar (310) una o más imágenes de vídeo codificadas usando un modo de predicción.
9. El aparato (104) de la reivindicación 7 o la reivindicación 8, en donde los datos de vídeo comprenden un corte de una imagen, incluyendo el corte una pluralidad de bloques, y en donde deshabilitar incluye deshabilitar la bipredicción interimagen para codificar la pluralidad de bloques del corte.
10. El aparato (104) de una cualquiera de la reivindicación 7 a 9, en donde el bloque de bipredicción incluye un bloque de bipredicción 8x8.
11. El aparato (104) de una cualquiera de las reivindicaciones 7 a 10, en donde se deshabilita la bipredicción interimagen para codificar bloques de predicción que son menores que un tamaño umbral.
12. El aparato (104) de la reivindicación 11, en donde el tamaño umbral incluye un tamaño de bloque de predicción de 8x8 píxeles.
13. Un medio legible por ordenador que tiene almacenadas en el mismo instrucciones que, cuando se ejecutan por un procesador, realizan un método (400, 300) de acuerdo con una cualquiera de la reivindicación 1 a 6.
ES19189431T 2015-07-27 2016-07-26 Métodos y sistemas de restricción de bipredicción en codificación de vídeo Active ES2977132T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562197496P 2015-07-27 2015-07-27
US15/219,159 US10404992B2 (en) 2015-07-27 2016-07-25 Methods and systems of restricting bi-prediction in video coding

Publications (1)

Publication Number Publication Date
ES2977132T3 true ES2977132T3 (es) 2024-08-19

Family

ID=57883486

Family Applications (2)

Application Number Title Priority Date Filing Date
ES16745394T Active ES2761865T3 (es) 2015-07-27 2016-07-26 Procedimientos y sistemas de restricción de bipredicción en codificación de vídeo
ES19189431T Active ES2977132T3 (es) 2015-07-27 2016-07-26 Métodos y sistemas de restricción de bipredicción en codificación de vídeo

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES16745394T Active ES2761865T3 (es) 2015-07-27 2016-07-26 Procedimientos y sistemas de restricción de bipredicción en codificación de vídeo

Country Status (12)

Country Link
US (1) US10404992B2 (es)
EP (2) EP3329675B1 (es)
JP (1) JP6752266B2 (es)
KR (1) KR102658510B1 (es)
CN (1) CN107852498B (es)
AU (1) AU2016298172A1 (es)
BR (1) BR112018001519A2 (es)
ES (2) ES2761865T3 (es)
HU (1) HUE047622T2 (es)
PL (1) PL3588955T3 (es)
TW (1) TWI724008B (es)
WO (1) WO2017019656A1 (es)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3269142B1 (en) * 2015-04-13 2021-09-15 MediaTek Inc. Methods of constrained intra block copy for reducing worst case bandwidth in video coding
US10462483B1 (en) * 2018-04-26 2019-10-29 Tencent America LLC Method and apparatus for video coding
CN108833923B (zh) * 2018-06-20 2022-03-29 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、存储介质和计算机设备
MX2020013864A (es) 2018-06-21 2021-03-25 Ericsson Telefon Ab L M Particiones de mosaicos con sub-mosaicos en codificacion de video.
BR112020025887A2 (pt) * 2018-06-21 2021-03-23 Telefonaktiebolaget Lm Ericsson (Publ) métodos para decodificar e para codificar uma imagem parada, circuitos decodificador e codificador, decodificador, programa de computador, portadora, meio de armazenamento legível por computador não transitório, e, codificador
EP3811624A1 (en) 2018-06-21 2021-04-28 Telefonaktiebolaget LM Ericsson (publ) Tile shuffling for 360 degree video decoding
KR102934333B1 (ko) 2018-07-02 2026-03-04 노키아 테크놀로지스 오와이 비디오 코딩에서 타일 관련 어드레싱을 위한 방법 및 장치
US10375416B1 (en) * 2018-09-05 2019-08-06 Tencent America LLC Segment types in video coding
TWI822863B (zh) * 2018-09-27 2023-11-21 美商Vid衡器股份有限公司 360度視訊寫碼樣本導出
KR102629907B1 (ko) 2018-10-02 2024-01-30 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 타일 그룹 id에 기초한 화상들의 인코딩 및 디코딩
WO2020075862A1 (ja) * 2018-10-12 2020-04-16 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
CN111083492B (zh) 2018-10-22 2024-01-12 北京字节跳动网络技术有限公司 双向光流中的梯度计算
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
EP3788779A4 (en) * 2018-10-23 2022-03-02 Tencent America LLC METHOD AND DEVICE FOR VIDEO CODING
WO2020098648A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Using combined inter intra prediction in video processing
CN117319644A (zh) 2018-11-20 2023-12-29 北京字节跳动网络技术有限公司 基于部分位置的差计算
CN113170093B (zh) 2018-11-20 2023-05-02 北京字节跳动网络技术有限公司 视频处理中的细化帧间预测
EP3871410A4 (en) 2018-11-29 2021-12-22 Beijing Bytedance Network Technology Co., Ltd. INTERACTION BETWEEN AN INTRABLOCK COPY MODE AND INTERPRETATION TOOLS
US10855992B2 (en) * 2018-12-20 2020-12-01 Alibaba Group Holding Limited On block level bi-prediction with weighted averaging
CN114173114B (zh) * 2019-01-08 2022-09-23 华为技术有限公司 图像预测方法、装置、设备、系统及存储介质
WO2020143831A1 (en) * 2019-01-12 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Mv precision constraints
US11190800B2 (en) 2019-02-07 2021-11-30 Qualcomm Incorporated Motion vector predictor list generation for intra block copy mode in video coding
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
EP3734972A1 (en) * 2019-05-03 2020-11-04 InterDigital VC Holdings, Inc. High level syntax simplified video coding tool set for small blocks
US11445174B2 (en) * 2019-05-06 2022-09-13 Tencent America LLC Method and apparatus for video coding
CN110611820A (zh) * 2019-09-11 2019-12-24 北京达佳互联信息技术有限公司 视频编码方法、装置、电子设备及存储介质
PL4018658T3 (pl) * 2019-09-17 2023-06-05 Huawei Technologies Co., Ltd. Sygnalizacja identyfikatorów obrazu częściowego w kodowaniu wideo opartym na obrazach częściowych
EP4128791A4 (en) 2020-04-02 2023-07-19 Telefonaktiebolaget LM ERICSSON (PUBL) Decoding based on bi-directional picture condition
US12341956B2 (en) * 2020-11-23 2025-06-24 Hyundai Motor Company Image encoding and decoding method using adaptive alternative mode
CN114845107A (zh) * 2021-02-02 2022-08-02 联咏科技股份有限公司 图像编码方法及其图像编码器
US11831909B2 (en) 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system
US11968356B2 (en) * 2022-03-16 2024-04-23 Qualcomm Incorporated Decoder-side motion vector refinement (DMVR) inter prediction using shared interpolation filters and reference pixels
US12368879B2 (en) * 2022-03-25 2025-07-22 Tencent America LLC Method and apparatus adaptive constraint on bi-prediction for out-of-boundary conditions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI344791B (en) * 2006-07-12 2011-07-01 Lg Electronics Inc A method and apparatus for processing a signal
US20100266042A1 (en) * 2007-03-02 2010-10-21 Han Suh Koo Method and an apparatus for decoding/encoding a video signal
US8213503B2 (en) * 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
US9137544B2 (en) * 2010-11-29 2015-09-15 Mediatek Inc. Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes
US8755437B2 (en) * 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
US20130229485A1 (en) * 2011-08-30 2013-09-05 Nokia Corporation Apparatus, a Method and a Computer Program for Video Coding and Decoding
KR102070431B1 (ko) * 2012-01-19 2020-01-28 삼성전자주식회사 쌍방향 예측 및 블록 병합을 제한하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
WO2014005305A1 (en) * 2012-07-04 2014-01-09 Intel Corporation Inter-view filter parameters re-use for three dimensional video coding
US10904551B2 (en) * 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US20150016533A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Intra motion compensation extensions
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing

Also Published As

Publication number Publication date
ES2761865T3 (es) 2020-05-21
KR102658510B1 (ko) 2024-04-17
CN107852498A (zh) 2018-03-27
EP3329675B1 (en) 2019-09-11
TW201709731A (zh) 2017-03-01
JP2018526881A (ja) 2018-09-13
US20170034526A1 (en) 2017-02-02
JP6752266B2 (ja) 2020-09-09
EP3329675A1 (en) 2018-06-06
EP3588955C0 (en) 2024-03-20
BR112018001519A2 (pt) 2018-09-11
US10404992B2 (en) 2019-09-03
CN107852498B (zh) 2021-10-08
EP3588955B1 (en) 2024-03-20
WO2017019656A1 (en) 2017-02-02
AU2016298172A1 (en) 2018-01-18
TWI724008B (zh) 2021-04-11
KR20180035810A (ko) 2018-04-06
EP3588955A1 (en) 2020-01-01
PL3588955T3 (pl) 2024-06-24
HUE047622T2 (hu) 2020-05-28

Similar Documents

Publication Publication Date Title
ES2977132T3 (es) Métodos y sistemas de restricción de bipredicción en codificación de vídeo
ES2774664T3 (es) Sistemas y procedimientos para copia intrabloque
US11323712B2 (en) Chroma quantization parameter (QP) offset
KR102310009B1 (ko) 파라미터 세트에서의 비디오 신호 정보 신택스 구조들의 상이한 수들을 선택적으로 시그널링하기 위한 시스템들 및 방법들
CN113287300B (zh) 针对照度补偿的块大小限制
KR102385772B1 (ko) 파라미터 세트에 대한 표현 포맷 파라미터들을 제약하기 위한 시스템들 및 방법들
US20170099490A1 (en) Constrained intra-prediction for block copy mode
US11184607B2 (en) Same picture order count (POC) numbering for scalability support
KR20190055819A (ko) 조명 보상을 위해 템플릿 사이즈를 적응적으로 결정하는 시스템들 및 방법들
KR20180116257A (ko) 스크린 콘텐츠 코딩 및 다중-계층 코딩을 위한 가중된 예측
CN114128277A (zh) 针对局部双树的调色板预测器更新
KR20230020413A (ko) 디코딩된 픽처 버퍼 (dpb) 동작들 및 액세스 유닛 구분자 (aud)
JP2024531112A (ja) グリーンメタデータシグナリング
CN120283401A (zh) 使用图块到光栅重排序的增强视频解码器
WO2024137116A1 (en) Optimized storage scheme for cross-component adaptive loop filtering
BR112016029539B1 (pt) Sistemas e métodos para cópia intrabloco