ES2807216T3 - Sistemas y procedimientos para copia intrabloque - Google Patents

Sistemas y procedimientos para copia intrabloque Download PDF

Info

Publication number
ES2807216T3
ES2807216T3 ES15741643T ES15741643T ES2807216T3 ES 2807216 T3 ES2807216 T3 ES 2807216T3 ES 15741643 T ES15741643 T ES 15741643T ES 15741643 T ES15741643 T ES 15741643T ES 2807216 T3 ES2807216 T3 ES 2807216T3
Authority
ES
Spain
Prior art keywords
prediction
intra
picture
video data
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
ES15741643T
Other languages
English (en)
Inventor
Chao Pang
Krishnakanth Rapaka
Xiang Li
Rojals Joel Sole
Cheng-Teh Hsieh
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 ES2807216T3 publication Critical patent/ES2807216T3/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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/172Methods 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 picture, frame or field
    • 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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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

Abstract

Un procedimiento de codificación de datos de vídeo para generar una pluralidad de imágenes de vídeo codificadas, comprendiendo el procedimiento: obtener (502) datos de vídeo en un codificador; determinar (504) la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar la pluralidad de imágenes de vídeo codificadas; realizar (506) la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque; en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar (508) al menos una de la bipredicción interimagen y la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas; determinar un tamaño de unidad de predicción; y generar (510) la pluralidad de imágenes de vídeo codificadas en base a los datos de vídeo de acuerdo con la predicción de copia intrabloque realizada, donde la generación de la pluralidad de imágenes de vídeo codificadas comprende usar bipredicción interimagen o unipredicción interimagen si se determinó no realizar una predicción intraimagen en los datos de vídeo usando predicción de copia intrabloque para generar la pluralidad de imágenes de vídeo codificadas, en el que la bipredicción interimagen o la unipredicción interimagen se inhabilita para la pluralidad de imágenes de vídeo codificadas en respuesta a una combinación de todo lo siguiente: i) la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, y ii) el tamaño de la unidad de predicción es inferior a un umbral, y iii) la resolución adaptativa de vector de movimiento, AMVR, está inhabilitada.

Description

DESCRIPCIÓN
Sistemas y procedimientos para copia intrabloque
CAMPO
[0001] La presente divulgación se refiere, en general, a la codificación de vídeo y, más específicamente, a técnicas y sistemas para la copia intrabloque.
ANTECEDENTES
[0002] Muchos dispositivos y sistemas permiten que los datos de vídeo sean procesados y enviados para su 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, velocidades de trama 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.
[0003] Se pueden usar 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 eficacia (HEVC), codificación de vídeo avanzada (AVC), codificación del grupo de expertos en imágenes en movimiento (MPEG), o similares. La codificación de vídeo utiliza, en general, procedimientos 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 velocidad de transmisión de bits más baja, mientras se evitan o minimizan las degradaciones en la calidad de vídeo. Con la disponibilidad de servicios de vídeo en constante evolución, se necesitan técnicas de codificación con una mejor eficacia de codificación.
[0004] En el documento "AHG5/AHG8: Improvement of MV-HEVC-based RGB coding for screen contents" de Minezawa et al (15a reunión de JCT-VC; 23/10/2013 - 1/11/2013; Ginebra; documento n.° JCTVC-00085-v3, 26 de octubre de 2013 ), se propone una modificación de la codificación RGB basada en MV-HEVC (es decir, un esquema en el que el plano de color se representa como vídeo con vistas en formato 4:0:0 y emplea predicción entre vistas para aprovechar la redundancia entre colores). Se propone introducir la copia intrabloque en lugar de la predicción entre colores basada en la búsqueda de movimiento: la predicción entre colores solo puede referirse a un bloque coubicado en el plano de color de referencia.
[0005] En el documento "Bi-prediction restriction in small PU" de Ikai (7a reunión de JCT-VC; 98a reunión de MPEG; 21/11/2011 - 30/11/2011; Ginebra; documento n.° JCTVC-G307, 8 de noviembre de 2011), se indica que el uso de la interpredicción 4x4 está prohibido cuando inter_4x4_enabled_flag está inhabilitado en HM-4.0 (JCTVC-F803), lo que reduce la complejidad de la compensación de movimiento, especialmente en el caso menos favorable. Se afirma además que el caso menos favorable sigue siendo una gran carga para la bipredicción. Se afirma además que la compensación de movimiento de PU pequeñas requiere un gran coste computacional y de transferencia de datos para su gran tamaño de ventana pero, al mismo tiempo, el movimiento de PU pequeñas es relativamente menos constante cuando la bipredicción no es muy útil.
[0006] En el documento US 2013/0202038 A1 se afirma que un dispositivo de codificación de vídeo genera una lista de candidatos a vectores de movimiento (MV) para una PU de una CU que está dividida en cuatro PU de igual tamaño. El dispositivo de codificación de vídeo convierte un candidato a MV bidireccional de la lista de candidatos a MV en un candidato a MV unidireccional.
[0007] El documento WO 2013/108691 A1 se refiere a un aparato de procesamiento de imágenes y un procedimiento capaz de evitar que aumente el coste del aparato. Una unidad de ajuste establece información de restricción para restringir el tamaño de un bloque de una imagen y un procedimiento de predicción que se aplicará al bloque que tiene dicho tamaño. Una unidad de interpredicción genera una imagen de predicción de acuerdo con la información de restricción.
[0008] El documento EP 2.744.204 A2 de Samsung Electronics Co. Ltd. se refiere a la codificación y descodificación de vídeo para reducir el acceso a memoria para leer datos de una trama de referencia durante la compensación de movimiento. Se divulga un procedimiento de codificación de vídeo, comprendiendo el procedimiento: determinar si un modo de estimación de movimiento unidireccional y un modo de estimación de movimiento bidireccional se usan para la estimación de movimiento y la compensación de movimiento de una unidad de predicción actual que se codificará en base al tamaño de la unidad de predicción actual; realizar la estimación de movimiento y la compensación de movimiento en la unidad de predicción actual usando al menos un modo de estimación de movimiento de entre el modo de estimación de movimiento unidireccional y el modo de estimación de movimiento bidireccional de acuerdo con si se usan el modo de estimación de movimiento unidireccional y el modo de estimación de movimiento bidireccional; determinar un modo de estimación de movimiento de la unidad de predicción actual en base a un coste de codificación de la unidad de predicción actual que se obtiene a través de la estimación de movimiento y la compensación de movimiento; y codificar información de modo de estimación de movimiento determinada en base al tamaño de la unidad de predicción actual.
[0009] En el documento "Description of Core Experiment 2 (CE2): Intra block copy memory access [Descripción de experimento principal 2 (CE2): Acceso a memoria de copia intrabloque]'' de Rapaka et al. (20a reunión de JCT-VC, Ginebra, CH, 10-18 de febrero de 2015, documento n.° JCTVC-T1102 del 23 de febrero de 2015), se proporciona una descripción de un experimento de acceso a memoria de copia intrabloque (IBC). En la 20a reunión de JCT-VC se analizaron aspectos relacionados con el ancho de banda de memoria de copia intrabloque. Se afirmó que el ancho de banda IBC aumenta con respecto al intermodo de HEVC v1 debido a la necesidad de almacenar muestras adicionales sin filtrar que se usan para la predicción en modo IBC. Se mostró un interés general por mantener el ancho de banda de memoria del modo IBC dentro de los límites del ancho de banda del intermodo de HEVC v1. El propósito de este experimento es analizar los accesos a memoria (capacidad de memoria, ancho de banda, etc.) y evaluar diferentes aspectos relacionados con los accesos a memoria del modo IBC.
BREVE SUMARIO
[0010] La invención se define en las reivindicaciones adjuntas. Cualquier ejemplo y modo de realización de la descripción que no esté dentro del alcance de las reivindicaciones no forma parte de la invención reivindicada y solamente se proporciona con propósitos ilustrativos.
[0011] En algunos modos de realización, se describen técnicas y sistemas para realizar una copia intrabloque. En algunos ejemplos, se pueden establecer determinadas restricciones en una o más técnicas de predicción cuando se habilita la predicción de copia intrabloque. Por ejemplo, la una o más técnicas de predicción pueden inhabilitarse cuando se realiza una técnica de predicción de copia intrabloque. En otro ejemplo, la una o más técnicas de predicción pueden inhabilitarse cuando el tamaño de bloque de predicción es menor o igual que un tamaño de bloque. En el presente documento se describen otros ejemplos para controlar el uso de técnicas de predicción.
[0012] En algunos modos de realización, se describen técnicas y sistemas para determinar selectivamente un bloque de referencia a usar para una técnica de predicción de copia intrabloque. Por ejemplo, las técnicas para seleccionar un bloque de referencia a usar cuando se realiza la predicción de copia intrabloque pueden tomar la determinación de excluir bloques que se codifican usando bipredicción a partir de bloques que se consideran para su uso en la predicción de copia intrabloque. En el presente documento se describen otros ejemplos para determinar selectivamente un bloque de referencia a usar cuando se realiza la predicción de copia intrabloque.
[0013] Al realizar las técnicas de copia intrabloque de acuerdo con los diversos aspectos y características analizados en el presente documento, se reducen los requisitos de ancho de banda y/o tamaño de memoria.
[0014] Un aspecto según la invención es un procedimiento de codificación de datos de vídeo para generar una pluralidad de imágenes de vídeo codificadas. El procedimiento incluye obtener datos de vídeo en un codificador y determinar la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar la pluralidad de imágenes de vídeo codificadas. El procedimiento también incluye realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque y, en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar al menos una de la bipredicción interimagen o la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas. El procedimiento también incluye generar la pluralidad de imágenes de vídeo codificadas en base a los datos de vídeo recibidos de acuerdo con la predicción de copia intrabloque realizada.
[0015] Otro aspecto según la invención es un aparato para codificar datos de vídeo. El aparato incluye una memoria configurada para almacenar datos de vídeo, y un procesador configurado para obtener los datos de vídeo, determinar la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar una pluralidad de imágenes de vídeo codificadas, y realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque. El procesador también está configurado para, en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar al menos una de la bipredicción interimagen o la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas. El procesador también está configurado para generar la pluralidad de imágenes de vídeo codificadas basándose en los datos de vídeo de acuerdo con la predicción de copia intrabloque realizada.
[0016] Otro aspecto según la invención es un medio legible por ordenador de un codificador que tiene instrucciones almacenadas en el mismo que, cuando son ejecutadas por un procesador, hacen que el procesador realice un procedimiento de codificación de datos de vídeo para generar una pluralidad de imágenes de vídeo codificadas. El procedimiento incluye obtener datos de vídeo, determinar la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar la pluralidad de imágenes de vídeo codificadas, y realizar la predicción intraimagen en los datos de vídeo usando predicción de copia intrabloque. El procedimiento también incluye, en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar al menos una de la bipredicción interimagen o la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas. El procedimiento también incluye generar la pluralidad de imágenes de vídeo codificadas en base a los datos de vídeo de acuerdo con la predicción de copia intrabloque realizada.
[0017] Otro aspecto según la invención es un procedimiento de descodificación de datos de vídeo para generar una pluralidad de imágenes de vídeo descodificadas. El procedimiento incluye recibir, en un flujo de bits de vídeo, datos de vídeo codificados que se han codificado usando una pluralidad de modos de predicción seleccionables. La pluralidad de modos de predicción incluye un modo de unipredicción interimagen, un modo de bipredicción interimagen y un modo de copia intrabloque intraimagen. El procedimiento también incluye recibir, en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está inhabilitada para una parte de los datos de vídeo codificados. El procedimiento también incluye determinar, en base a la indicación, un modo de predicción de entre la pluralidad de modos de predicción para predecir una unidad de predicción de la parte de datos de vídeo codificados, y descodificar la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado.
[0018] Otro aspecto según la invención es un aparato para descodificar datos de vídeo. El aparato incluye una memoria configurada para almacenar datos de vídeo codificados recibidos en un flujo de bits de vídeo y codificados con una pluralidad de modos de predicción. La pluralidad de modos de predicción incluye un modo de unipredicción interimagen, un modo de bipredicción interimagen y un modo de copia intrabloque intraimagen. El aparato también incluye un procesador configurado para obtener los datos de vídeo codificados de la memoria y recibir, en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está inhabilitada para una parte de los datos de vídeo codificados. El procesador también está configurado para determinar, basándose en la indicación, un modo de predicción de entre la pluralidad de modos de predicción para predecir una unidad de predicción de la parte de datos de vídeo codificados. El procesador también está configurado para descodificar la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado.
[0019] Otro aspecto según la invención es un medio legible por ordenador de un descodificador que tiene instrucciones almacenadas en el mismo que, cuando son ejecutadas por un procesador, hacen que el procesador realice un procedimiento de descodificación de datos de vídeo para generar una pluralidad de imágenes de vídeo descodificadas. El procedimiento incluye recibir, en un flujo de bits de vídeo, vídeo codificado que se ha codificado usando una pluralidad de modos de predicción. La pluralidad de modos de predicción incluye un modo de unipredicción interimagen, un modo de bipredicción interimagen y un modo de copia intrabloque intraimagen. El procedimiento también incluye recibir, en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está inhabilitada para una parte de los datos de vídeo codificados, determinar, en base a la indicación, un modo de predicción de entre la pluralidad de modos de predicción para predecir una unidad de predicción de la parte de datos de vídeo codificados, y descodificar la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado.
[0020] Este sumario no pretende identificar características clave o esenciales de la materia reivindicada, ni pretende usarse de forma aislada para determinar el alcance de la materia reivindicada. La materia debe entenderse por referencia a las partes apropiadas de toda la memoria descriptiva de esta patente, cualquiera o todos los dibujos, y cada reivindicación.
[0021] Lo anterior, junto con otras características y modos de realización, resultará más evidente tras la referencia a la siguiente memoria descriptiva, reivindicaciones y dibujos adjuntos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0022] A continuación, se describen en detalle modos de realización 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, de acuerdo con algunos modos de realización.
La FIG. 2 es un diagrama de bloques que ilustra un proceso de copia intrabloque.
La FIG. 3 es un diagrama de bloques que ilustra un proceso de copia intrabloque con vectores de bloque dispersados.
La FIG. 4 es un diagrama de bloques que ilustra un proceso de copia intrabloque con vectores de bloque dispersados en múltiples mosaicos.
La FIG. 5 ilustra un modo de realización de un proceso de codificación de datos de vídeo.
La FIG. 6 ilustra un modo de realización de un proceso de descodificación de datos de vídeo.
La FIG. 7 ilustra un modo de realización de un proceso de codificación de datos de vídeo.
La FIG. 8 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo, de acuerdo con algunos modos de realización.
La FIG. 9 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo, de acuerdo con algunos modos de realización.
DESCRIPCIÓN DETALLADA DEL MODO DE REALIZACIÓN PREFERENTE
[0023] A continuación se proporcionan determinados aspectos y modos de realización de esta divulgación. Algunos de estos aspectos y modos de realización pueden aplicarse de manera independiente y algunos de ellos se pueden aplicar en combinación, como reconocerá un experto en la técnica. En la siguiente descripción se exponen, con fines explicativos, detalles específicos para permitir un entendimiento exhaustivo de los modos de realización de la invención. Sin embargo, resultará evidente que diversos modos de realización pueden llevarse a la práctica sin estos detalles específicos. Las figuras y la descripción no pretenden ser restrictivas.
[0024] La siguiente descripción solo proporciona modos de realización ejemplares y no pretende limitar el alcance, la aplicabilidad o la configuración de la divulgación. En cambio, la siguiente descripción de los modos de realización ejemplares proporcionará a los expertos en la técnica una descripción que permite implementar un modo de realización ejemplar. Debe entenderse que se pueden hacer diversos cambios en la función y disposición de los elementos sin apartarse del alcance de la invención como se establece en las reivindicaciones adjuntas.
[0025] En la siguiente descripción se ofrecen detalles específicos para proporcionar un entendimiento exhaustivo de los modos de realización. Sin embargo, un experto en la técnica entenderá que los modos de realización se pueden llevar a la práctica sin estos detalles específicos. Por ejemplo, circuitos, sistemas, redes, procesos y otros componentes pueden mostrarse como componentes en forma de diagrama de bloques para no oscurecer los modos de realización con detalles innecesarios. En otros casos, circuitos, procesos, algoritmos, estructuras y técnicas ampliamente conocidos se pueden mostrar sin detalles innecesarios para no oscurecer los modos de realización.
[0026] Además, cabe destacar que los modos de realización individuales se pueden describir como un proceso que se representa como un organigrama, un diagrama de flujo, un diagrama de flujo de datos, un diagrama de estructura o un diagrama de bloques. Aunque un organigrama puede describir las operaciones como un proceso secuencial, muchas de las operaciones se pueden realizar en paralelo o simultáneamente. 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 terminación puede corresponder con el retorno de la función a la función de llamada o a la función principal.
[0027] La expresión "medio legible por ordenador" incluye, pero no se limita a, dispositivos de almacenamiento portátiles o no portátiles, dispositivos de almacenamiento óptico y otros diversos medios que puedan almacenar, contener o transportar 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. Ejemplos de un medio no transitorio pueden incluir, pero no se limitan a, un disco o cinta magnéticos, medios de almacenamiento óptico tales 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, reenviar o transmitir información, argumentos, parámetros, datos, etc. a través de cualquier medio adecuado, incluyendo compartición de memoria, paso de mensajes, paso de testigos, transmisión por red o similares.
[0028] Además, los modos de realización se pueden implementar mediante 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.
[0029] En el presente documento se describen varios sistemas y procedimientos de codificación de vídeo usando codificadores y decodificadores de vídeo. Por ejemplo, uno o más sistemas y procedimientos están dirigidos al manejo de capas, conjuntos de capas y puntos de operación no disponibles, así como a restricciones en los parámetros de formato de representación en la codificación de vídeo multicapa.
[0030] 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 eficientes 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 diversas técnicas de codificación de vídeo para comprimir los datos de vídeo en una forma que use una velocidad de transmisión de bits más baja mientras mantiene una alta calidad de vídeo.
[0031] 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 electrónica, un descodificador, un televisor, una cámara, un dispositivo de visualización, un reproductor de medios digitales, una consola de videojuegos, un dispositivo de transmisión continua de vídeo 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, incluidas las transmisiones continuas de vídeo (por ejemplo, a través de Internet), radiodifusiones 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 admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como videoconferencia, la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0032] El dispositivo de codificación 104 (o codificador) se puede usar para codificar datos de vídeo usando una norma o un protocolo de codificación de vídeo para generar un flujo de bits de vídeo codificado. Las normas de codificación de vídeo 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 conocida como ISO/IEC MPEG-4 AVC), incluyendo sus ampliaciones de codificación de vídeo escalable (SVC) y de codificación de vídeo multivista (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 diversas ampliaciones de HEVC que se ocupan de la codificación de vídeo multicapa, incluida la ampliación multivista de HEVC, denominada MV-HEVC, y la ampliación escalable de HEVC, denominada SHVC, o cualquier otro protocolo de codificación adecuado. Un borrador de la especificación HEVC está disponible en http://phenix.itsudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1003-v1.zip. Un borrador de trabajo de MV-HEVC está disponible en http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/8_Valencia/wg11/JCT3V-H1002-v5.zip. Un borrador de trabajo de SHVC está disponible en http://phenix.itsudparis.eu/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1008-v2.zip.
[0033] Muchos modos de realización descritos en el presente documento describen ejemplos usando la norma HEVC o ampliaciones 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, tales como AVC, MPEG, ampliaciones de las mismas u otras normas de codificación adecuadas. En consecuencia, 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 técnica apreciará que la descripción no debe interpretarse para que se aplique solo a esa norma particular.
[0034] Una fuente de vídeo 102 puede proporcionar los datos de vídeo al dispositivo de codificación 104. La fuente 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. La fuente de vídeo 102 puede incluir un dispositivo de captura de vídeo (por ejemplo, una videocámara, 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 desde 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 dichas fuentes o cualquier otra fuente de vídeo adecuada.
[0035] Los datos de vídeo de la fuente de vídeo 102 pueden incluir una o más tramas o imágenes de entrada. Una imagen o trama es una imagen fija que forma parte de un vídeo. El motor codificador 106 (o codificador) del dispositivo de codificación 104 codifica los datos de vídeo para generar un flujo de bits de vídeo codificado. Un flujo de bits HEVC, por ejemplo, puede incluir una secuencia de unidades de datos denominadas unidades de capa de abstracción de red (NAL). Existen dos clases de unidades NAL en la norma HEVC, incluyendo unidades NAL de capa de codificación de vídeo (VCL) y unidades NAL no VCL. Una unidad NAL VCL incluye un fragmento o segmento de fragmento (descrito a continuación) de datos de imagen codificados, y una unidad NAL no VCL incluye información de control que se refiere a múltiples imágenes codificadas. Una imagen codificada y unidades NAL no VCL (si las hay) correspondientes a la imagen codificada se denominan unidad de acceso (AU).
[0036] Las unidades NAL pueden contener una secuencia de bits que forman una representación codificada de los datos de vídeo, tales como representaciones codificadas de imágenes en un vídeo. El motor codificador 106 genera la representación codificada al dividir cada imagen en múltiples fragmentos. Un fragmento es independiente de otros fragmentos, de modo que la información en el fragmento se codifica independientemente de los datos de otros fragmentos dentro de la misma imagen. Un fragmento incluye uno o más segmentos de fragmento que incluyen un segmento de fragmento independiente y, si están presentes, uno o más segmentos de fragmento dependientes que dependen de segmentos de fragmento anteriores. Los fragmentos 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).
[0037] Los CB de luma y croma pueden dividirse adicionalmente en bloques de predicción (PB). Un PB es un bloque de muestras de luma o una componente de croma que usa los mismos parámetros de movimiento para la interpredicción. El PB de luma y uno o más PB de croma, junto con la sintaxis asociada, forman una unidad de predicción (PU). Un conjunto de parámetros de movimiento se señaliza en el flujo de bits para cada PU y se usa para la interpredicción del PB de luma y del uno o más PB de croma. 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 una componente de color en la 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, así como elementos sintácticos correspondientes.
[0038] El tamaño de una CU corresponde al tamaño del nodo de codificación, y es de forma cuadrada. Por ejemplo, el 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 de un bloque se pueden disponer en filas y columnas. En algunos modos de realización, 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.
[0039] 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 en función del 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 hoja del RQT pueden corresponder a las TU. Los valores de diferencia de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada. A continuación, los coeficientes de transformada pueden ser cuantificados por el motor codificador 106.
[0040] Una vez que las imágenes de los datos de vídeo se dividen en CU, el motor codificador 106 predice cada PU usando un modo de predicción. A continuación, la predicción se sustrae de los datos de vídeo originales para obtener valores residuales (descritos a continuación). Para cada CU, se puede señalizar un modo de predicción dentro del flujo de bits usando 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 imagen vecinos 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 a partir de los datos vecinos, o cualquier otro tipo adecuado de predicción. Usando la interpredicción, cada PU se predice usando predicción de compensación de movimiento a partir 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 predicción interimagen o intraimagen puede tomarse, por ejemplo, a nivel de CU.
[0041] Con interpredicción usando unipredicción, cada bloque de predicción usa como máximo una señal de predicción compensada por movimiento y genera unidades de predicción P. Con interpredicción usando bipredicción, cada bloque de predicción usa como máximo dos señales de predicción compensadas por movimiento y genera unidades de predicción B.
[0042] Una PU puede incluir datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica usando 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 usando 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, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
[0043] El codificador 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. Cualquier dato residual que pueda quedar después de que se lleve a cabo la predicción se transforma usando una transformada de bloque, que puede basarse en una transformada de coseno discreta, una transformada de seno discreta, una transformada de número entero, una transformada de ondas pequeñas u otra función de transformada adecuada. En algunos casos, una o más transformadas de bloque (por ejemplo, tamaños de 32 x 32, 16 x 16, 8 x 8, 4 x 4 o similar) pueden aplicarse a los datos residuales en cada CU. En algunos modos de realización, 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 después pueden cuantificarse y escanearse usando TU para producir coeficientes de transformada serializados para la codificación por entropía.
[0044] En algunos modos de realización, 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íxel en el dominio espacial (o dominio de píxel). 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 diferencia 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.
[0045] 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 usados para representar los coeficientes. Por ejemplo, la cuantificación puede reducir la profundidad de bits asociada a 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.
[0046] 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 o similares), información de división, y cualquier otro dato adecuado, tales como otros datos sintácticos. Los diferentes elementos del flujo de bits codificado pueden ser codificados por entropía por el motor codificador 106. En algunos ejemplos, el motor codificador 106 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados para producir un vector serializado que se pueda codificar por entropía. En algunos ejemplos, el motor codificador 106 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el motor codificador 106 puede codificar por entropía el vector unidimensional. Por ejemplo, el motor de codificador 106 puede usar codificación de longitud variable adaptativa al contexto, codificación aritmética binaria adaptativa al contexto, codificación aritmética binaria adaptativa el contexto basada en sintaxis, codificación por entropía por división en intervalos de probabilidad u otra técnica de codificación por entropía adecuada.
[0047] Como se describe previamente, un flujo de bits HEVC incluye un grupo de unidades NAL. Una secuencia de bits que forman el flujo de bits de vídeo codificado está presente en las unidades NAL VCL. Las unidades NAL no 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). El objetivo de los conjuntos de parámetros es la eficacia de la velocidad de transmisión de bits, la resistencia a los errores y el suministro de interfaces de capa de sistemas. Cada fragmento 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 fragmento. Se puede codificar un identificador (ID) para cada conjunto de parámetros, incluyendo 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 fragmento incluye un ID de PPS. Usando los ID, se pueden identificar conjuntos de parámetros activos para un fragmento dado.
[0048] Un PPS incluye información que se aplica a todos los fragmentos en una imagen dada. Debido a esto, todos los fragmentos en una imagen se refieren al mismo PPS. Los fragmentos 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 o flujo de bits codificado. Una secuencia de vídeo codificada es una serie de unidades de acceso 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) e incluye todas las unidades de acceso hasta, pero sin incluir, la siguiente imagen de punto de acceso aleatorio (o el final del flujo de bits). La información en un SPS no cambia típicamente de una imagen a otra dentro de una secuencia de vídeo codificada. Todas las imágenes en una secuencia de vídeo codificada usan 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 codificado. El VPS incluye una estructura sintáctica con elementos sintácticos que se aplican a secuencias de vídeo codificadas completas. En algunos modos de realización, el VPS, SPS o PPS puede transmitirse en banda con el flujo de bits codificado. En algunos modos de realización, el VPS, SPS o PPS puede transmitirse fuera de banda en una transmisión distinta de la de las unidades NAL que contienen datos de vídeo codificados.
[0049] La salida 110 del dispositivo de codificación 104 puede enviar las unidades NAL que componen los datos de vídeo codificados a través del enlace de comunicaciones 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 NAL. El enlace de comunicaciones 120 puede incluir una señal transmitida usando 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 de 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 usando diversos equipos, tales como estaciones base, encaminadores, puntos de acceso, puentes, pasarelas, conmutadores o similares. 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 recepción.
[0050] En algunos ejemplos, el dispositivo de codificación 104 puede almacenar datos de vídeo codificados en el almacenamiento 108. La salida 110 puede recuperar los datos de vídeo codificados a partir del motor codificador 106 o de la salida 110. 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.
[0051] La entrada 114 recibe los datos de vídeo codificados y puede proporcionar los datos 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 vídeo codificados mediante descodificación por entropía (por ejemplo, usando un descodificador por entropía) y extrayendo los elementos de la secuencia de vídeo codificada que forma los datos de vídeo codificados. A continuación, el motor descodificador 116 puede reescalar y realizar una transformada inversa en los datos de vídeo codificados. A continuación, los datos residuales se trasfieren a una fase 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.
[0052] El dispositivo de descodificación 112 puede proporcionar el vídeo descodificado a un dispositivo de destino de vídeo 112, que puede incluir una pantalla u otro dispositivo de salida para la visualización de los datos de vídeo descodificados en 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. En algunos aspectos, el dispositivo de destino de vídeo 122 puede ser parte de un dispositivo separado que no sea el dispositivo de recepción.
[0053] En algunos modos de realización, 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 sea 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 in situ (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. Más adelante se describe un ejemplo que tiene detalles específicos del dispositivo de codificación 104 con referencia a la FIG. 8. Más adelante se describe un ejemplo que tiene detalles específicos del dispositivo de descodificación 112 con referencia a la FIG. 9.
[0054] Como se indica anteriormente, las ampliaciones de la norma HEVC incluyen la ampliación de codificación de vídeo multivista, denominada MV-HEVC, y la ampliación de codificación de vídeo escalable, denominada SHVC. Las ampliaciones 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 se direcciona mediante un identificador (ID) de capa único. Un ID de capa puede estar presente en una cabecera de una unidad NAL para identificar una capa con la cual está asociada la unidad NAL. En MV-HEVC, diferentes capas representan normalmente diferentes vistas 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 velocidad de trama, 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 estándar (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 las ampliaciones SHVC y/o MV-HEVC de la norma HEVC.
[0055] Como se describe previamente, varios modos de predicción se pueden usar en un proceso de codificación de vídeo, incluyendo intrapredicción. Una forma de intrapredicción incluye copia intrabloque. La copia intrabloque se incluyó en el borrador de trabajo de la ampliación de rango HEVC (JCTVC-P1005). Al usar la redundancia en una trama de imagen o una imagen, la copia intrabloque realiza una correspondencia 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 vecina de la trama de imagen. Al eliminar la redundancia de los patrones repetitivos de contenido, la predicción de copia intrabloque mejora la eficacia de codificación.
[0056] Las técnicas y sistemas descritos en el presente documento se refieren a mejorar la eficacia del ancho de banda de memoria, limitar los accesos a memoria del peor caso y otros aspectos de la copia intrabloque. Los aspectos y procedimientos en este documento son aplicables a HEVC y sus ampliaciones, tal como la codificación de contenido en pantalla u otras ampliaciones. Por ejemplo, se pueden implementar herramientas de codificación para codificar material de contenido en pantalla, tal como texto y gráficos con movimiento. Además, se pueden proporcionar tecnologías que mejoren la eficacia de codificación para el contenido en pantalla. Se pueden obtener mejoras significativas en la eficacia de codificación aprovechando las características del contenido en pantalla con varias herramientas de codificación. Por ejemplo, algunos aspectos admiten posiblemente una profundidad de bits alta (más de 8 bits), un formato de muestreo de alto croma (incluidos 4:4:4 y 4:2:2) y otras mejoras.
[0057] La herramienta de copia intrabloque descrita en el presente documento permite la predicción espacial a partir de muestras no vecinas, 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 actual 202 se predice a partir de un bloque de predicción 204 ya descodificado (antes del filtrado en bucle) de la imagen codificada 200 usando el vector de bloque 206. El filtrado en bucle puede incluir tanto un filtro de reducción del efecto bloque en bucle como un desfase adaptativo de muestras (SAO). En el descodificador, los valores predichos se añaden a los valores residuales 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 de vector de bloque se codifica usando un procedimiento de codificación de diferencia de vector de movimiento, tal como el especificado en la norma HEVC. La copia intrabloque se habilita tanto a nivel de CU como de PU. Para la copia intrabloque a nivel de PU, se admite la división de PU 2NxN y NX2N para todos los tamaños de CU. Además, cuando la CU es la CU más pequeña, se admite la división de PU NxN.
[0058] Al contrario de los modos de intrapredicción tradicionales, la copia intrabloque (IBC) permite la predicción espacial a partir de muestras no vecinas. 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ñalizadas por un vector de bloque. Los accesos a memoria de estas muestras no vecinas aumentan el ancho de banda de memoria global cuando se usa IBC. 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). Cabe señalar que en el intramodo tradicional, las muestras vecinas usadas son solo 1 fila de muestras situadas por encima y 1 columna de muestras situadas a la izquierda y se pueden colocar en la caché. Por el contrario, cuando se usa IBC, todas las muestras previamente codificadas/descodificadas se pueden usar como una unidad de referencia. Para admitir la mayor cantidad de muestras disponibles, el sistema admite el uso de memoria adicional. Un mayor acceso de escritura se debe, en parte, al almacenamiento tanto de muestras no filtradas para predicción espacial IBC como de muestras reconstruidas filtradas para la predicción de salida/temporal de futuras imágenes.
[0059] La norma HEVC define el requisito de ancho de banda del peor caso. El aumento de ancho de banda descrito anteriormente puede, en algunos casos, ser mayor que el requisito de ancho de banda del peor caso de HEVC. El aumento del ancho de banda representa una carga para la implementación de las técnicas de IBC y puede dificultar la reutilización de un núcleo de HEVC para admitir ampliaciones de contenido en pantalla o una ampliación de HEVC que admita IBC.
[0060] Además, los amplios rangos de búsqueda usados en IBC pueden dar lugar a distribuciones dispersas de vectores de bloque, lo que da como resultado cargas de ancho de banda y de rendimiento del sistema que podrían dificultar extremadamente su implementación. Como se muestra en el ejemplo de la FIG. 3, es posible que la distribución de los vectores de bloque IBC con una CU se pueda dispersar. Posiblemente, esto podría dar lugar a la necesidad de recuperar las muestras de la memoria externa (DDR) ya que todas las muestras de predicción pueden no estar disponibles en la caché. Almacenar todos los bloques de predicción dentro del área de la caché requiere que el sistema tenga una caché extremadamente grande, lo cual es costoso y no es factible en diseños de baja potencia. Esto afecta drásticamente al ancho de banda del sistema, al rendimiento y a los costes. Tales distribuciones de vectores de bloque son más probables a medida que aumenta el rango de búsqueda.
[0061] El amplio rango de búsqueda podría dar lugar a distribuciones de vectores de bloque a través de mosaicos, dando como resultado un gran impacto en el rendimiento de la paralelización. Como se muestra en el ejemplo de la FIG. 4, es posible que la distribución de los vectores de bloque IBC con una CU se pueda dispersar en múltiples mosaicos.
[0062] Para la codificación P de bajo retardo, se afirma que el número de vectores de bloque y/o de movimiento del peor caso con diseño IBC existente podría ser mayor que el número de vectores de movimiento de HEVC del peor caso (para una CU, un CTB u otra unidad de codificación o bloque). Esto se debe a que se admite NxN para el tamaño de CU más pequeño. El elevado número de vectores de bloque y/o movimiento impone una carga adicional en el posible número de cargas.
[0063] La IBC basada en líneas incluye divisiones con una granularidad más fina que la IBC tradicional, incluidas divisiones tan pequeñas como una línea. La IBC basada en líneas puede aumentar el número de vectores de movimiento más que el diseño HEVC existente. Los vectores de mayor movimiento darían como resultado una mayor obtención de muestras, lo que aumentaría el ancho de banda.
[0064] El uso de fragmentos puede ayudar significativamente en la capacidad de resistencia al error. Un intrafragmento puede ser autónomo y descodificarse de forma independiente. Sin embargo, la IBC podría introducir la dependencia de un fragmento I con respecto a otro fragmento que afecte su capacidad de resistencia al error.
[0065] En el presente documento se analizan diversos aspectos de la copia intrabloque en vista de las deficiencias anteriores, además de otras. Cada una de las características analizadas puede funcionar por separado o conjuntamente con una o más soluciones. Los procedimientos, sistemas y aspectos analizados se aplican a la IBC, pero también se pueden aplicar a otras herramientas de codificación, por ejemplo, con altos requisitos de ancho de banda y caché, tal como, por ejemplo, diccionario 1 -D, paleta u otras herramientas de codificación.
Restricción de bipredicción cuando la IBC está habilitada
[0066] En HEVC, la bipredicción de bloques de 8x8 píxeles representa el requisito de ancho de banda del peor caso. Es beneficioso que todas las ampliaciones de HEVC sigan también el mismo requisito de ancho de banda del peor caso. Por lo tanto, para reducir los accesos de lectura de memoria y mantener el ancho de banda dentro de los límites de los requisitos del peor caso de HEVC, a continuación se analizan las restricciones a la bipredicción cuando se habilita IBC.
[0067] En algunos modos de realización, como consecuencia de la habilitación de IBC, la bipredicción intertrama está inhabilitada. Por ejemplo, en respuesta a un estado correspondiente a la predicción intratrama con IBC, la bipredicción intertrama puede inhabilitarse. Como resultado, con IBC, la demanda de recursos de sistema, tales como el ancho de banda de memoria, se reduce eficazmente desde la bipredicción intertrama hasta la predicción intratrama.
[0068] En algunos modos de realización, se pueden requerir una o más condiciones adicionales para inhabilitar la bipredicción intertrama. Debido a que bloques de predicción más pequeños requieren más recursos de sistema, tal como el ancho de banda de memoria, que los bloques de predicción grandes, el tamaño de bloque de predicción puede ser un requisito adicional para inhabilitar la bipredicción intertrama. Por ejemplo, en algunos modos de realización, como consecuencia de que se habilita la IBC y también de que el tamaño de bloque de predicción es menor que o igual a un tamaño predefinido, la bipredicción intertrama está inhabilitada. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño.
[0069] En algunos modos de realización, se puede usar una bandera para especificar o indicar si la bipredicción se inhabilitará o no como consecuencia de la habilitación de IBC. En algunos modos de realización, la bandera indica si la restricción en la bipredicción se aplica, por ejemplo, en cualquiera de los diversos niveles de construcción de datos. Por ejemplo, la bandera puede indicar que la restricción se aplica a una o más secuencias, imágenes, fragmentos u otras unidades de datos. La bandera se puede señalizar en uno o más de los siguientes conjuntos de parámetros: VPS, SPS, PPS, información de usabilidad de vídeo (VUI), cabecera de fragmento o sus respectivas ampliaciones.
[0070] En algunos modos de realización, se usa la siguiente sintaxis de carga útil de secuencia de octetos sin procesar (RBSP) de conjunto de parámetros de secuencia, u otra equivalente. En este modo de realización, la bipredicción se inhabilita como consecuencia de que el tamaño de bloque de predicción sea menor que o igual a 8x8 (por ejemplo, según la JCTVC-P1005_v4).
Figure imgf000011_0001
Figure imgf000012_0002
[0071] En algunos modos de realización, se usa la siguiente semántica SPS o equivalente:
intra_block_copy_restriction_enabled_flag igual a 1 especifica que la restricción en la bipredicción se habilita cuando se usa IBC durante el proceso de descodificación para la predicción intratrama.
intra_block_copy_restriction_enabled_flag igual a 0 especifica que no se aplican restricciones a la bipredicción en función del uso de IBC. Cuando no está presente, se puede deducir que el valor de intra_block_copy_enabled_flag es igual a 0.
Proceso de descodificación
[0072] El valor de inter_pred_idc[x0][y0] que especifica si se usa list0, list1 o bipredicción para la unidad de predicción actual se obtiene de acuerdo con la Tabla 1.
Tabla 1 - Asociación de nombres al modo de interpredicción
Figure imgf000012_0001
[0073] En JCTVC-T1005, la característica de resolución adaptativa de vector de movimiento (AMVR) se habilita usando una bandera señalizada "use_integer_mv_flag". La semántica de la bandera es la siguiente.
[0074] use_integer_mv_flag igual a 1 especifica la resolución de los vectores de movimiento para la interpredicción. Cuando no está presente, se deduce que el valor de use_integer_mv_flag es igual a motion_vector_resolution_control_idc.
[0075] use_integer_mv_flag distinto de cero especifica que la resolución de los vectores de movimiento de luma en el fragmento actual se considera un PEL entero. En consecuencia, la interpolación fraccionaria puede no ser necesaria para todas las muestras de luma en el fragmento. Cuando no se requiere interpolación fraccionaria, las muestras adicionales requeridas para la interpolación no se cargan y, por lo tanto, el ancho de banda de memoria del peor caso se reduce y puede ser menor que el peor caso de HEVC.
[0076] En algunos modos de realización, al menos una de entre la unipredicción y la bipredicción está inhabilitada para interimágenes de un tamaño de bloque predeterminado como resultado del uso de IBC además de como resultado del estado de use_integer_mv_flag. Esto da como resultado que el uso del ancho de banda se mantenga dentro de los límites del requisito de ancho de banda del peor caso de HEVC.
[0077] En algunos modos de realización, las condiciones para inhabilitar la bipredicción incluyen que se habilite la IBC, que use_integer_mv_flag sea cero y que el bloque de predicción sea menor que (o menor que o igual a) un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño. En un ejemplo, la bipredicción puede inhabilitarse para un bloque de predicción como resultado de que el tamaño de bloque de predicción sea menor que o igual a un tamaño de 8x8, u otro tamaño, además de que la IBC esté habilitada y use_integer_mv_flag sea cero.
[0078] En algunos modos de realización, las condiciones para inhabilitar la unipredicción incluyen que se habilite la IBC, que use_integer_mv_flag sea cero y que el bloque de predicción sea menor que (o menor que o igual a) un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño. En un ejemplo, como resultado de que IBC esté habilitada y use_integer_mv_flag sea cero, la unipredicción intertrama se inhabilita para un bloque de predicción con un tamaño menor que o igual a un tamaño de 8x8 u otro tamaño.
[0079] En algunos modos de realización, las condiciones para inhabilitar tanto la unipredicción como la bipredicción incluyen que se habilite la IBC, que use_integer_mv_flag sea cero y que el bloque de predicción sea menor que (o menor que o igual a) un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño. En un ejemplo, como resultado de que IBC esté habilitada y use_integer_mv_flag sea cero, la unipredicción y bipredicción intertrama se inhabilitan para un bloque de predicción con un tamaño menor que o igual a un tamaño de 16x16 u otro tamaño.
[0080] En algunos modos de realización, la inhabilitación de la predicción analizada en el presente documento no se aplica si un bloque bipredicho se bipredice a partir del mismo bloque de referencia, de modo que los vectores de movimiento de la predicción se refieren al mismo bloque de referencia y son idénticos. Por ejemplo, la inhabilitación de la unipredicción y/o la bipredicción puede tener otra condición para su aplicación: que el bloque bipredicho que desencadena la inhabilitación no se prediga a partir del mismo bloque de referencia, de modo que los vectores de movimiento de la predicción se refieren al mismo bloque de referencia y son idénticos.
[0081] La FIG. 5 ilustra un modo de realización de un proceso 500 de codificación de datos de vídeo con IBC y que tiene la bipredicción y/o la unipredicción inhabilitadas selectivamente. El proceso 500 se implementa para generar una pluralidad de imágenes de vídeo codificadas. En algunos aspectos, el proceso 500 se puede realizar mediante un dispositivo o aparato informático, tal como el dispositivo de codificación 104 mostrado en la FIG. 1. Por ejemplo, el dispositivo o aparato informático puede incluir un codificador, o un procesador, microprocesador, microordenador u otro componente de un codificador que esté configurado para llevar a cabo las etapas del proceso 500.
[0082] El proceso 500 se ilustra como un diagrama de flujo lógico, cuyo funcionamiento representa una secuencia de operaciones que pueden implementarse en hardware, instrucciones informáticas o una combinación de los mismos. 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 enumeradas. 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 debe interpretarse 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.
[0083] Además, el proceso 500 puede 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 indicó 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 legible por máquina puede no ser transitorio.
[0084] En 502, el proceso 500 de codificación de datos de vídeo incluye la obtención de datos de vídeo en un codificador. En algunos modos de realización, el codificador está configurado para realizar la unipredicción interimagen en los datos de vídeo para generar una pluralidad de unidades de predicción P, para realizar una bipredicción interimagen en los datos de vídeo para generar una pluralidad de unidades de predicción B, y para realizar una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para codificar una unidad de predicción. Cuando se realiza, la unipredicción interimagen puede, por ejemplo, generar una pluralidad de unidades de predicción P. Cuando se realiza, la bipredicción interimagen puede, por ejemplo, generar una pluralidad de unidades de predicción B. Cuando se realiza, la predicción intraimagen usa la predicción de copia intrabloque para generar, por ejemplo, una pluralidad de I unidades de predicción.
[0085] En 504, el proceso 500 incluye la determinación de realizar la predicción intraimagen en los datos de vídeo, usando la predicción de copia intrabloque, para generar una pluralidad de imágenes de vídeo codificadas. La determinación puede ser, por ejemplo, en respuesta a un estado que indica un modo de copia intrabloque. En algunos modos de realización, se genera una bandera de señalización para un descodificador, donde la bandera de señalización indica el modo de copia intrabloque. Por ejemplo, un valor de 1 para la bandera de señalización puede indicar que se realiza un modo de copia intrabloque. En otro ejemplo, un valor de 0 para la bandera de señalización puede indicar que no se realiza un modo de copia intrabloque.
[0086] En 506, el proceso 500 incluye realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque. Por ejemplo, la predicción intraimagen se puede realizar usando la predicción de copia intrabloque de acuerdo con un estado programado del codificador. El proceso de predicción de copia intrabloque puede incluir aspectos de procesos de copia intrabloque analizados en otra parte del presente documento.
[0087] En 508, el proceso 500 incluye, en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar al menos una de la bipredicción interimagen o la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas. En algunos modos de realización, la predicción intraimagen y la inhabilitación se realizan en respuesta a la bandera de señalización. En algunos modos de realización, en respuesta a la bandera de señalización, se inhabilita tanto la prestación de bipredicción interimagen como la prestación de unipredicción interimagen. La inhabilitación de la predicción puede incluir aspectos o puede ser en respuesta a otros factores analizados en otra parte del presente documento.
[0088] En 510, el proceso 500 incluye generar la pluralidad de imágenes de vídeo codificadas en base al vídeo recibido de acuerdo con la predicción de copia intrabloque, usando, por ejemplo, aspectos de procesos analizados en otra parte del presente documento. Por ejemplo, las imágenes de vídeo codificadas pueden generarse usando la predicción de copia intrabloque en los datos de vídeo.
[0089] En algunos modos de realización, el proceso 500 incluye otros aspectos analizados en el presente documento. Por ejemplo, en algunos modos de realización, el proceso 500 incluye realizar una unipredicción interimagen en los datos de vídeo para generar una pluralidad de unidades de predicción P. En algunos modos de realización, el proceso 500 incluye determinar un tamaño de unidad de predicción, donde el realizar la bipredicción o la unipredicción interimagen no se habilita para la pluralidad de imágenes de vídeo codificadas en respuesta a la combinación tanto de determinar que hay que realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, como que el tamaño de unidad de predicción es inferior a un umbral. En algunos modos de realización, en el proceso 500, la bipredicción interimagen y la unipredicción interimagen se inhabilitan para la pluralidad de imágenes de vídeo codificadas en respuesta a la combinación.
[0090] En algunos modos de realización, el codificador puede admitir además una resolución adaptativa de vector de movimiento (AMVR), y el proceso 500 también incluye determinar un tamaño de unidad de predicción, donde la bipredicción interimagen o la unipredicción interimagen está inhabilitada para la pluralidad de imágenes de vídeo codificadas en respuesta a la combinación de todo lo siguiente: determinar que hay que realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, el tamaño de unidad de predicción es inferior a un umbral y recibir una indicación de que la AMVR está inhabilitada. La combinación puede incluir además que la interpredicción/bipredicción tenga al menos una de diferentes unidades de referencia y diferentes vectores de movimiento. La bipredicción interimagen y la unipredicción interimagen pueden inhabilitarse para la pluralidad de imágenes de vídeo codificadas en respuesta a la combinación. La combinación puede incluir además que la interpredicción/bipredicción tenga al menos una de diferentes unidades de referencia y diferentes vectores de movimiento.
[0091] La FIG. 6 ilustra un modo de realización de un proceso 600 de descodificación de datos de vídeo con IBC y que tiene la bipredicción y/o la unipredicción inhabilitadas selectivamente. El proceso 600 se implementa para descodificar una pluralidad de imágenes de vídeo codificadas. En algunos aspectos, el proceso 600 se puede realizar mediante un dispositivo o aparato informático, tal como el dispositivo de descodificación 112 mostrado en la FIG. 1. Por ejemplo, el dispositivo o aparato informático puede incluir un descodificador, o un procesador, microprocesador, microordenador u otro componente de un descodificador que esté configurado para llevar a cabo las etapas del proceso 600.
[0092] El proceso 600 se ilustra como un diagrama de flujo lógico, cuyo funcionamiento representa una secuencia de operaciones que pueden implementarse en hardware, instrucciones informáticas o una combinación de los mismos. 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 enumeradas. 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 debe interpretarse 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.
[0093] Además, el proceso 600 puede 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 indicó 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 legible por máquina puede no ser transitorio.
[0094] En 602, el proceso 600 de descodificación de datos de vídeo incluye recibir, en un flujo de vídeo, datos de vídeo codificados que se codifican usando una pluralidad de modos de predicción. Los datos de vídeo pueden recibirse en un descodificador. 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 intrabloque intraimagen. En el modo de unipredicción interimagen, el descodificador está configurado para descodificar de acuerdo con la unipredicción, por ejemplo, como se analiza en otra parte del presente documento. En el modo de bipredicción interimagen, el descodificador está configurado para descodificar de acuerdo con la bipredicción, por ejemplo, como se analiza en otra parte del presente documento. En el modo de copia intrabloque intraimagen, el descodificador está configurado para descodificar de acuerdo con la predicción de copia intrabloque, por ejemplo, como se analiza en otra parte del presente documento.
[0095] 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á inhabilitada o que la restricción de bipredicción interimagen está habilitada para una parte de los datos de vídeo codificados. La indicación puede ser, por ejemplo, una bandera de señalización que se encuentra en un estado que indica que la bipredicción interimagen está inhabilitada o que la restricción de bipredicción interimagen está habilitada. Por ejemplo, un valor de 1 para la bandera de señalización puede indicar que la restricción de bipredicción interimagen está habilitada o que la bipredicción interimagen está inhabilitada. En otro ejemplo, un valor de 0 para la bandera de señalización puede indicar que la restricción de bipredicción interimagen está habilitada o que la bipredicción interimagen está inhabilitada.
[0096] 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 una unidad de predicción de la parte de datos de vídeo codificados. En algunos modos de realización, la parte de los datos de vídeo codificados incluye una pluralidad de imágenes, tal como una secuencia de imágenes. Además, en 608, el proceso 600 incluye la descodificación de la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado, usando, por ejemplo, aspectos de procesos analizados en otra parte del presente documento.
[0097] En algunos modos de realización, el proceso 600 incluye otros aspectos analizados en el presente documento. Por ejemplo, el proceso 600 puede incluir, en respuesta a la indicación, excluir el modo de predicción de bipredicción interimagen del uso para predecir la unidad de predicción de la parte de datos de vídeo codificados.
Restricción de muestras de referencia para IBC
[0098] Para mantener el requisito de ancho de banda del peor caso de HEVC sin cambios, se pueden aplicar restricciones de forma adicional o alternativa a las muestras de referencia como consecuencia del uso de IBC.
[0099] En algunos modos de realización, las restricciones en las muestras de referencia analizadas en el presente documento hacen que los bloques de predicción restringidos no estén disponibles para su uso como muestras de referencia. En algunos modos de realización, las muestras de referencia sustitutas correspondientes se generan mediante esquemas de relleno predefinidos y se pueden usar para la predicción.
[0100] Por ejemplo, las muestras de referencia sustitutas pueden generarse a través de relleno horizontal o vertical a partir de las muestras vecinas, en cuyo caso los datos de una o más muestras vecinas se copian para generar las muestras de referencia sustitutas. De forma alternativa, las muestras de referencia sustitutas pueden generarse con datos iguales a un valor predefinido. Por ejemplo, el valor predefinido es igual a 2<<(B-1), donde B es la profundidad de bits de la muestra.
[0101] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de un bloque de predicción con bipredicción se excluyen o descalifican para ser usadas como muestras de referencia. En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de un bloque de predicción con bipredicción se excluyen o descalifican para ser usadas como muestras de referencia como resultado de la condición adicional de que el tamaño de bloque de predicción sea menor que o igual a un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño. En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de bloques de predicción con predicción intermodo se excluyen o descalifican para ser usadas como muestras de referencia.
[0102] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de un bloque de predicción con predicción intermodo se excluyen o descalifican para ser usadas como muestras de referencia si el tamaño de bloque de predicción sea menor que o igual a un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño.
[0103] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de un bloque de predicción predicho con modo de bipredicción (por ejemplo, basado en JCTVC-P1005_v4) se excluyen o descalifican para ser usadas como muestras de referencia.
[0104] En algunos modos de realización, las restricciones en las muestras de referencia analizadas en el presente documento se aplican a nivel de CTU en función de, por ejemplo, el modo y/o tamaño de bloque de las muestras de referencia en esa CTU. Por ejemplo, si se usa IBC dentro de una CTU particular, y si el tamaño del bloque es inferior a 8x8 píxeles, una o más de las restricciones sobre las muestras de referencia discutidas en el presente documento pueden aplicarse a la CTU particular completa.
[0105] En algunos modos de realización, las restricciones en las muestras de referencia analizadas en el presente documento se aplican para las CTU que están fuera de la CTU actual, y no se aplican para la CTU actual. En algunos modos de realización, las restricciones en las muestras de referencia analizadas en el presente documento se aplican para las CTU que están fuera de la CTU actual y de la siguiente CTU izquierda, y no se aplican para la CTU actual ni la siguiente CTU izquierda.
[0106] En algunos modos de realización, la aplicación de las restricciones en las muestras de referencia analizadas en el presente documento está condicionada a que la bandera use_integer_mv_flag sea cero. En consecuencia, las restricciones pueden aplicarse si use_integer_mv_flag es cero, y pueden no aplicarse si use_integer_mv_flag no es cero.
[0107] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene al menos un bloque de predicción con bipredicción se excluyen o descalifican para ser usadas como muestras de referencia. En otro ejemplo, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene un número de muestras de predicción con bipredicción mayor que un umbral se excluyen o descalifican para ser usadas como muestras de referencia. El umbral puede ser, por ejemplo, de 250, 500, 1000, 5000 muestras o cualquier otro número adecuado de muestras de predicción.
[0108] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene al menos un bloque de predicción con bipredicción se excluyen o descalifican para ser usadas como muestras de referencia si el tamaño de bloque de predicción es menor que o igual a un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño.
[0109] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene un número de muestras de predicción con bipredicción mayor que un umbral si su tamaño es menor que o igual a un tamaño predefinido se excluyen o descalifican para ser usadas como muestras de referencia. El número umbral puede ser, por ejemplo, de 250, 500, 1000, 5000 muestras o cualquier otro número adecuado de muestras de predicción. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño.
[0110] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene al menos un bloque de predicción usado para interpolación se excluyen o descalifican para ser usadas como muestras de referencia. En otro ejemplo, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene un número de muestras de predicción usadas para interpolación mayor que un umbral se excluyen o descalifican para ser usadas como muestras de referencia. El umbral puede ser, por ejemplo, de 250, 500, 1000, 5000 muestras o cualquier otro número adecuado de muestras de predicción.
[0111] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene al menos un bloque de predicción usado para interpolación se excluyen o descalifican para ser usadas como muestras de referencia si el tamaño de bloque de predicción es menor que o igual a un tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño.
[0112] En algunos modos de realización, cuando se habilita IBC, las muestras de referencia potenciales para IBC de una CTU que tiene un número de muestras de predicción usadas para interpolación mayor que un umbral se excluyen o descalifican para ser usadas como muestras de referencia si su tamaño es menor que o igual a tamaño predefinido. El tamaño predefinido puede ser, por ejemplo, 4x4 píxeles, 4x8 píxeles, 8x4 píxeles, 8x8 píxeles, 8x16 píxeles, 16x16 píxeles, 32x32 píxeles u otro tamaño. El umbral puede ser, por ejemplo, de 250, 500, 1000, 5000 muestras o cualquier otro número adecuado de muestras de predicción.
[0113] En algunos modos de realización, las restricciones en las muestras de referencia descritas anteriormente se aplican de manera similar a muestras de referencia potenciales que son muestras de interpolación.
[0114] En algunos modos de realización, las restricciones en las muestras de referencia analizadas en el presente documento no se aplican si un bloque bipredicho se bipredice a partir del mismo bloque de referencia, de modo que los vectores de movimiento de la predicción se refieren al mismo bloque de referencia y son idénticos. Por ejemplo, la inhabilitación de la unipredicción y/o la bipredicción puede tener otra condición para su aplicación: que el bloque bipredicho que desencadena la aplicación de la restricción no se prediga a partir del mismo bloque de referencia, de modo que los vectores de movimiento de la predicción se refieren al mismo bloque de referencia y son idénticos.
[0115] Más adelante se analiza un texto de especificación de ejemplo basado en JCTVC-P1005_v4 con área de búsqueda local para fragmentos B. Los modos de realización analizados en el presente documento se ajustan al texto de especificación de ejemplo.
Proceso de descodificación
[0116] Se describe un proceso de derivación para componentes de vector de bloque en modo de predicción de copia intrabloque. Los modos de realización analizados en el presente documento se ajustan al proceso de derivación.
[0117] Las entradas para este proceso son:
una ubicación de luma (xCb, yCb) de la muestra superior izquierda del bloque de codificación de luma actual en relación con la muestra de luma superior izquierda de la imagen actual, y
una variable log2CbSize que especifica el tamaño del bloque de codificación de luma actual.
[0118] La salida de este proceso es la matriz (nCbS)x(nCbX) [puede hacerse referencia a la misma como un solo vector] de vectores de bloque bvIntra.
[0119] Las variables nCbS, nPbSw y nPbSh se obtienen de la siguiente manera:
nCbS = 1 << log2CbSize (8-25)
Figure imgf000017_0001
[0120] La variable BvpIntra[compIdx] especifica un predictor de vector de bloque. A la componente de vector de bloque horizontal se le asigna compIdx = 0 y a la componente de vector de bloque vertical se le asigna compIdx = 1.
[0121] Dependiendo de PartMode, la variable numPartitions se obtiene de la siguiente manera:
Si PartMode es igual a PART_2Nx2N, numPartitions se establece igual a 1.
De lo contrario, si PartMode es igual a PART_2NxN o PART_Nx2N, numPartitions se establece igual a 2.
De lo contrario (PartMode es igual a PART_NxN), numPartitions se establece igual a 4.
[0122] La matriz de vectores de bloque bvIntra se obtiene mediante las siguientes etapas ordenadas para la variable blkIdx procediendo sobre los valores 0.. (numPartitions - 1):
La variable blkInc se establece igual a PartMode = = PART_2NxN ? 2 : 1).
La variable xPb se establece igual a xCb nPbSw * (blkIdx * blkInc % 2).
La variable yPb se establece igual a yCb nPbSh * (blkIdx / 2)
Se aplican las siguientes etapas ordenadas para la variable compIdxproceeding sobre los valores 0..1:
Dependiendo de la cantidad de veces que se haya invocado este proceso para la unidad de árbol de codificación actual, se aplica lo siguiente:
Si este proceso se invoca por primera vez para la unidad de árbol de codificación actual, bvIntra[xPb][yPb][compIdx] se obtiene de la siguiente manera:
bvlntraf xPb ][ yPb ][ 0 ] = Bvdlntra[ xPb ][ vPb ][ 0 ] - nCbS
(8-25)
bvlntra[ xPb ][ yPb ][ 1 ] = Bvdlntra[ xPb ][ yPb ][ 1 ] (8-25)
De lo contrario, bvIntra[xPb][yPb][compIdx] se obtiene de la siguiente manera:
bv!ntra[ xPb ][ yPb ][ 0 ]—Bvdlntra[ xPb J[ yPb j[ 0 j i Bvplntra[
01(8-25)
bvJiiinil xPb J[ yPb ]! 1 }-BvdImr¡í[ xPb J[ yPb ][ i j i Bvplntra[
! ! (8-25)
[0123] El valor de BvpIntra[compIdx] se actualiza para que sea igual a bvIntra[xPb][yPb][compIdx].
[0124] Para su uso en procesos de derivación de variables invocadas más adelante en el proceso de descodificación, se realizan las siguientes asignaciones para x = 0..nPbSw - 1 e y = 0..nPbSh - 1:
bvin.íra[ xPb x ][ v.Ph y ][ compkix ]=
bvi.!iíra[ xPb ][ y.Pb ][ corapI.dx ] (8-25)
[0125] Es un requisito de conformidad con el flujo de bits que se cumplan todas las condiciones siguientes:
- El valor de bvIntra[xPb][yPb][0] será mayor que o igual que -(xPb% CtbSizeY 64).
- El valor de bvIntra[xPb][yPb][1] será mayor o igual que -(yPb% CtbSizeY).
- Cuando se invoca el proceso de derivación para la disponibilidad de bloque en el orden de exploración en z con (xCurr, yCurr) establecido igual a (xCb, yCb) y la ubicación de luma vecina (xNbY, yNbY) establecida igual a (xPb bvIntra [xPb][yPb][0], yPb bvIntra [xPb][yPb][1]) como entradas, la salida será igual a VERDADERO.
- Cuando se invoca el proceso de derivación para la disponibilidad de bloque en el orden de exploración en z con (xCurr, yCurr) establecido igual a (xCb, yCb) y la ubicación de luma vecina (xNbY, yNbY) establecida igual a (xPb bvIntra[xPb][yPb][0] nPbSw - 1, yPb bvIntra[xPb][yPb][1] nPbSh - 1) como entradas, la salida será igual a VERDADERO.
- Una o ambas de las siguientes condiciones serán verdaderas:
-bvTntm[ xPb ][ yPb ][ 0 ] nPbSw < 0
~bvlntra[ xPb j[ yPb ][ 1 ] íiPbSh <--- 0
- Inter_pred_idc[x][y] será igual a 0 o 1, donde x= xPb BvIntra[xPb][yPb][0].xPb BvIntra[xPb][yPb][0]+ (1 << log2CbSize) - 1, y= yPb BvIntra[xPb][yPb] [1].. y0+ BvIntra[xPb][yPb] [1]+ (1 << log2CbSize) - 1;
Área de búsqueda adaptativa basada en el tipo de imagen/tipo de fragmento/tamaño de partición
[0126] Para mejorar el uso de la caché y reducir los errores de la caché, que de otro modo ocurrirían como resultado de los vectores de bloque IBC y los vectores de intermovimiento, se pueden aplicar algunas restricciones en el rango de los vectores de bloque.
[0127] Las restricciones en el rango de los vectores de bloque se pueden aplicar individualmente o en combinación. En las restricciones en el rango de los vectores de bloque, la región de interés no está limitada y puede ser, por ejemplo, una CU, una CTB, la unidad de codificación más grande (LCU), un fragmento, un mosaico o un conjunto de CU, CTU, CTB, LCU, fragmentos o mosaicos.
[0128] En algunos modos de realización, el área de búsqueda se determina en base a uno o más del tipo de imagen, el tipo de fragmento y el tamaño de partición. Además, se puede usar un elemento sintáctico para especificar el área de búsqueda para cada tipo de imagen, tipo de fragmento y tamaño de partición correspondientes.
[0129] Como ejemplo, si el segmento actual es un fragmento B, el área de búsqueda de los bloques IBC puede verse limitada como la región local del CTB actual. En algunos modos de realización, el área de búsqueda está restringida a la vecindad causal en el CTB actual y el CTB izquierdo adyacente como consecuencia de que el fragmento actual es un fragmento B.
[0130] En algunos modos de realización, el tamaño, la forma o la ubicación del área de búsqueda se especifica mediante el elemento sintáctico. En algunos modos de realización, el elemento sintáctico se señaliza, por ejemplo, en el flujo de bits en uno o más de VPS, SPS, PPS, VUI, cabecera de fragmento o cabecera de CU.
[0131] En algunos modos de realización, un rango del vector de bloque que está codificado en el flujo de bits está restringido en base a uno o más del tipo de imagen, el tipo de fragmento y el tamaño de la partición. Además, se puede usar un elemento sintáctico para especificar un rango máximo de vector de bloque para cada tipo de imagen, tipo de fragmento y tamaño de partición correspondientes. Por ejemplo, en algunos modos de realización se pueden usar uno o más elementos sintácticos para especificar que el rango máximo de vector de bloque es, respectivamente, igual a 100, 500 y 1000 píxeles para los tipos de imagen CRA, BLA e IDR. De forma similar, uno o más elementos sintácticos se usarán para especificar un rango máximo de vector de bloque para cada uno de los fragmentos I, B, P y GPB, y uno o más elementos sintácticos se usarán para especificar un rango máximo de vector de bloque para cada uno de los tamaños de partición, que incluyen 4x4 píxeles, 8x8 píxeles, 16x16 píxeles, 32x32 píxeles y 64x64 píxeles.
[0132] En algunos modos de realización, el área de búsqueda y los elementos sintácticos de rango máximo de vector de bloque pueden señalizarse en uno o más de los siguientes conjuntos de parámetros: VPS, SPS, PPS, información de usabilidad de vídeo (VUI), cabecera de fragmento o sus respectivas ampliaciones.
[0133] Más adelante se analiza un texto de especificación de ejemplo basado en JCTVC-P1005_v4 con área de búsqueda local para fragmentos B. Los modos de realización analizados en el presente documento se ajustan al texto de especificación de ejemplo.
Proceso de descodificación
[0134] Se describe un proceso de derivación para componentes de vector de bloque en modo de predicción de copia intrabloque.
[0135] Las entradas para este proceso son:
una ubicación de luma (xCb, yCb) de la muestra superior izquierda del bloque de codificación de luma actual en relación con la muestra de luma superior izquierda de la imagen actual,
una variable log2CbSize que especifica el tamaño del bloque de codificación de luma actual.
[0136] La salida de este proceso es la matriz (nCbS)x(nCbX) [puede hacerse referencia a la misma como un solo vector] de vectores de bloque bvIntra.
[0137] Las variables nCbS, nPbSw y nPbSh se obtienen de la siguiente manera:
nCbS = 1 « log2CbSize (8-25)
Figure imgf000019_0001
[0138] La variable BvpIntra[compIdx] especifica un predictor de vector de bloque. A la componente de vector de bloque horizontal se le asigna compIdx = 0 y a la componente de vector de bloque vertical se le asigna compIdx = 1.
[0139] Dependiendo de PartMode, la variable numPartitions se obtiene de la siguiente manera:
- Si PartMode es igual a PART_2Nx2N, numPartitions se establece igual a 1.
- De lo contrario, si PartMode es igual a PART_2NxN o PART_Nx2N, numPartitions se establece igual a 2. - De lo contrario (PartMode es igual a PART_NxN), numPartitions se establece igual a 4.
[0140] La matriz de vectores de bloque bvIntra se obtiene mediante las siguientes etapas ordenadas para la variable blkIdx procediendo sobre los valores 0.. (numPartitions - 1):
La variable blkInc se establece igual a PartMode = = PART_2NxN ? 2 : 1).
La variable xPb se establece igual a xCb nPbSw * (blkIdx * blkInc % 2).
La variable yPb se establece igual a yCb nPbSh * (blkIdx/2)
Se aplican las siguientes etapas ordenadas para la variable compIdx procediendo sobre los valores 0..1: Dependiendo de la cantidad de veces que se haya invocado este proceso para la unidad de árbol de codificación actual, se aplica lo siguiente:
Si este proceso se invoca por primera vez para la unidad de árbol de codificación actual, bvIntra[xPb][yPb][compIdx] se obtiene de la siguiente manera:
bvlntraf xPb ][ yPb ][ 0 ] = Bvdlntraf xPb ][ yPb ][ 0 ] - nCbS
(8-25)
bvlatraf xPb ][ yPb ][ 1 ] = Bvdlntra[ xPb ][ yPb ][ 1 ] (8-25)
De lo contrario, bvIntra[xPb][yPb][compIdx] se obtiene de la siguiente manera:
bvlnrra! xPb ][ yPb ][ 0 ¡“Bvdlntraf xPb ][ yPb ][ 0 J 1 Bvplmra!
0 3(8-25)
bvlmrai xPb ]! yPb J[ 1 ]== Bvdlntra[ xPb J[ yPb j[ ! j i Bvplntra[
13(8-25)
El valor de BvpIntra[compIdx] se actualiza para que sea igual a bvIntra[xPb][yPb][compIdx].
Para su uso en procesos de derivación de variables invocadas más adelante en el proceso de descodificación, se realizan las siguientes asignaciones para x = 0..nPbSw - 1 e y = 0..nPbSh - 1:
bvlntra[ xPb x ][ yPb y ][ compldx ]=bvlntra[ xPb ][ yPb j[compl dx ] (8-25)
[0141] Es un requisito de conformidad con el flujo de bits que se cumplan todas las condiciones siguientes:
- Para el tipo de fragmento B, el valor de bvIntra[xPb][yPb][0] será mayor que o igual a - (xPb % CtbSizeY 64). - Para el tipo de fragmento B, el valor de bvIntra[xPb][yPb][1] será mayor o igual que - (yPb % CtbSizeY).
- Cuando se invoca el proceso de derivación para la disponibilidad de bloque en el orden de exploración en z con (xCurr, yCurr) establecido igual a (xCb, yCb) y la ubicación de luma vecina (xNbY, yNbY) establecida igual a (xPb bvIntra [xPb][yPb][0], yPb bvIntra[xPb][yPb][1]) como entradas, la salida será igual a VERDADERO.
- Cuando se invoca el proceso de derivación para la disponibilidad de bloque en el orden de exploración en z con (xCurr, yCurr) establecido igual a (xCb, yCb) y la ubicación de luma vecina (xNbY, yNbY) establecida igual a (xPb bvIntra[xPb][yPb][0] nPbSw - 1, yPb bvIntra[xPb][yPb][1] nPbSh - 1) como entradas, la salida será igual a VERDADERO.
- Una o ambas de las siguientes condiciones serán verdaderas:
bvíntra[ xPb ][ vPh ][ 0 ] nPbSw <= 0
bvlntra[ xPb ][ yPb ][ 1 ] nPbSh < - 0
[0142] La FIG. 7 ilustra un modo de realización de un proceso 700 de codificación de datos de vídeo. El proceso 700 se implementa para generar una pluralidad de imágenes de vídeo codificadas. En algunos aspectos, el proceso 700 se puede realizar mediante un dispositivo o aparato informático, tal como el dispositivo de codificación 104 mostrado en la FIG. 1. Por ejemplo, el dispositivo o aparato informático puede incluir un codificador, o un procesador, microprocesador, microordenador u otro componente de un codificador que esté configurado para llevar a cabo las etapas del proceso 700.
[0143] El proceso 700 se ilustra como un diagrama de flujo lógico, cuyo funcionamiento representa una secuencia de operaciones que pueden implementarse en hardware, instrucciones informáticas o una combinación de los mismos. 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 enumeradas. 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 debe interpretarse 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.
[0144] Además, el proceso 700 puede 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 indicó 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 legible por máquina puede no ser transitorio.
[0145] En 702, el proceso 700 incluye realizar predicción intraimagen en un bloque de una de las imágenes para generar una unidad de predicción. En algunos modos de realización, realizar la predicción intraimagen incluye seleccionar un bloque de referencia para la predicción de copia intrabloque de una unidad de árbol de codificación (CTU), donde el bloque de referencia seleccionado se selecciona a partir de una pluralidad de bloques codificados, y donde los bloques dentro de la CTU codificada con bipredicción se excluyen de la selección como el bloque de referencia. Realizar la predicción intraimagen también puede incluir realizar predicción de copia intrabloque en el bloque de referencia para generar la unidad de predicción.
[0146] En 704, el proceso 700 incluye generar elementos sintácticos que codifican la unidad de predicción en base a la predicción intraimagen realizada.
[0147] En algunos modos de realización, el proceso 700 incluye otros aspectos analizados en el presente documento. Por ejemplo, el proceso 700 puede incluir determinar un tamaño de unidad de predicción, en el que los bloques codificados con bipredicción se excluyen de la selección al menos en parte en respuesta a que el tamaño de unidad de predicción sea menor que un umbral. En algunos modos de realización, en el proceso 700, uno o más bloques codificados con interpredicción se excluyen de la selección como el bloque de referencia. Por ejemplo, el uno o más bloques codificados con interpredicción pueden excluirse de la selección como el bloque de referencia para codificar bloques adicionales de la CTU. En dichos modos de realización, el proceso también puede incluir determinar un tamaño de unidad de predicción, en el que los bloques codificados con interpredicción se excluyen de la selección al menos en parte en respuesta a que el tamaño de unidad de predicción sea menor que un umbral.
[0148] En algunos modos de realización, en el proceso 700, se genera un bloque de referencia sustituto usando un esquema de relleno. En algunos modos de realización, realizar la predicción de copia intrabloque incluye usar el bloque sustituto como el bloque de referencia seleccionado.
[0149] En algunos modos de realización, el proceso 700 incluye determinar si la CTU tiene un bloque de predicción generado con bipredicción, en donde los bloques codificados con bipredicción se excluyen de la selección al menos en parte en respuesta a que la CTU tiene un bloque de predicción generado con bipredicción. En dichos modos de realización, el proceso 700 también puede incluir determinar una cantidad de bloques de predicción generados con bipredicción para la CTU, y determinar un tamaño de unidad de predicción. Los bloques codificados con bipredicción pueden excluirse de la selección en respuesta a cualquiera de lo siguiente: la CTU tiene una cantidad de bloques de predicción generados con bipredicción mayor que un umbral, el tamaño de unidad de predicción es menor que un umbral, y la CTU tiene un cantidad de bloques de predicción generados con bipredicción mayor que un umbral, y el tamaño de unidad de predicción es menor que un umbral.
[0150] En algunos modos de realización, el proceso 700 incluye realizar una resolución adaptativa de vector de movimiento (AMVR) y determinar un tamaño de unidad de predicción. En dichos modos de realización, los bloques codificados con bipredicción pueden excluirse de la selección al menos en parte en respuesta a la combinación de estos dos casos: el tamaño de unidad de predicción es inferior a un umbral y la recepción de una indicación de que el AMVR está inhabilitado. En algunos modos de realización, la combinación incluye además que la interpredicción/bipredicción tenga al menos una de diferentes unidades de referencia y diferentes vectores de movimiento.
[0151] En algunos modos de realización, el proceso 700 incluye determinar un área de búsqueda que comprende los bloques codificados, donde el área de búsqueda se determina en función de, al menos en parte, en al menos uno de: un tipo de imagen, un tipo de fragmento y un tamaño de partición.
Restricción en la distribución de los vectores de bloque dentro de una región de interés.
[0152] Para mejorar el uso de la caché y reducir los errores de la caché cuando se usan rangos de búsqueda más grandes, se pueden aplicar algunas restricciones en el rango de vector de bloque.
[0153] Las restricciones en el rango de los vectores de bloque se pueden aplicar individualmente o en combinación. En las restricciones en el rango de los vectores de bloque, la región de interés no está limitada y puede ser, por ejemplo, una CU, una CTB, la unidad de codificación más grande (LCU), un fragmento, un mosaico o un conjunto de CU, CTU, CTB, LCU, fragmentos o mosaicos.
[0154] En algunos modos de realización, el rango de los vectores de bloque está restringido a estar dentro de la región de interés. Por ejemplo, el rango de vectores de bloque puede estar restringido a estar dentro de una CU actual. En algunos modos de realización, diferentes regiones de interés tienen diferentes restricciones de rango de vector de bloque. Además, se puede usar un elemento sintáctico para especificar el rango de vector de bloque para cada región de interés.
[0155] Como ejemplo, los rangos de los vectores de bloque pueden estar restringidos a estar dentro de un mosaico. En consecuencia, las muestras de predicción para una unidad de predicción actual están restringidas a ser del mismo mosaico. Entre otros beneficios, esta restricción facilita el procesamiento paralelo eficiente. En algunos modos de realización, los rangos de los vectores de bloque están restringidos a estar dentro de un fragmento. En consecuencia, la predicción IBC está limitada a no cruzar los límites de los fragmentos.
[0156] En algunos modos de realización, la diferencia máxima de dos vectores de bloque cualesquiera dentro de una región de interés está restringida. Por ejemplo, si una CU dentro de una región de interés de fragmento tiene un vector de bloque de un tamaño particular, todos los demás vectores de bloque dentro del fragmento están limitados a estar dentro de un rango predefinido del tamaño particular. Además, se puede usar un elemento sintáctico para especificar la diferencia máxima de cualquiera de dos vectores de bloque cualesquiera para cada región de interés.
Texto de especificación y sintaxis
[0157] En algunos modos de realización, el rango de vector de bloque y los elementos sintácticos de diferencia máxima de vector de bloque pueden señalizarse en uno o más de los siguientes conjuntos de parámetros: VPS, SPS, PPS, información de usabilidad de vídeo (VUI), cabecera de fragmento o sus respectivas ampliaciones.
[0158] Más adelante se analiza un texto de especificación de ejemplo basado en JCTVC-P1005_v4 con área de búsqueda local para fragmentos B. Los modos de realización analizados en el presente documento se ajustan al texto de especificación de ejemplo.
Proceso de descodificación
[0159] La variable BvIntra[x0][y0][compIdx] especifica una componente vectorial que se usará para el modo de predicción de copia intrabloque. 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. La variable BvdispIntra[x0][y0][compIdx] especifica la diferencia entre la componente vectorial que se usará para el modo de predicción de copia intrabloque para la ubicación (x0, y0) (por ejemplo, BvIntra[x0][y0][compIdx]) y la ubicación (xi, yj) (por ejemplo, BvIntra[xi][yj][compIdx]). Los índices de matriz xi, yj especifican la ubicación (xi, yj) 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 para cualquier i, j, de modo que la ubicación (xi, yj) y (x0, y0) estén dentro de la misma CTU.
[0160] Para todo i, j, BvdispIntra[xi][yj][compIdx] estará en el intervalo de -128 a 128, inclusive. A la componente de vector de bloque horizontal se le asigna compIdx = 0 y a la componente de vector de bloque vertical se le asigna compIdx = 1.
[0161] En la especificación anterior, el intervalo de -128 a 128, ambos inclusive, se usa como un ejemplo y el valor real del intervalo puede fijarse a un valor diferente o señalizarse.
[0162] A continuación se muestra un ejemplo de procedimiento de señalización.
Figure imgf000022_0001
Figure imgf000023_0001
[0163] log2_max_ctu_deltaBV_length_horizontal y log2_max_ctu_deltaBV_length_vertical indican el valor máximo absoluto de diferencia de una componente de vector de bloque horizontal y vertical descodificada, respectivamente, con respecto a la componente de vector de bloque horizontal y vertical descodificada, respectivamente, de cualquier unidad de predicción que pertenezca a la misma CTU y esté disponible, en unidades de número entero de muestras de luma, para todas las imágenes en el CVS. Un valor de n afirma que ningún valor de diferencia de una componente de vector de bloque está fuera del intervalo de -2n a 2n - 1, ambos inclusive, en unidades de desplazamiento en número entero de muestras de luma. Se pueden determinar los valores de intervalo e inferencia.
[0164] Para todo i,j, BvdispIntra[xi][yj][compIdx] estará en el intervalo especificado por log2_max_ctu_deltaBV_length_horizontal y log2_max_ctu_deltaBV_length_vertical para componentes horizontales y verticales. A la componente de vector de bloque horizontal se le asigna compIdx = 0 y a la componente de vector de bloque vertical se le asigna compIdx = 1.
[0165] De forma alternativa, el intervalo puede ser diferente para cada compIdx (vector de bloque horizontal y vertical), así como para las componentes de luma y croma. De forma alternativa, el intervalo puede ser diferente para cada compIdx (vector de bloque horizontal y vertical), así como para las componentes de luma y croma.
[0166] De forma alternativa, el intervalo puede señalizarse como múltiplo de CTU, fragmentos, mosaicos, etc.
Figure imgf000023_0002
[0167] log2_max_BV_ctu_length_horizontal y log2_max_BV_ctu_length_vertical indican el valor máximo absoluto de diferencia de una componente de vector de bloque horizontal y vertical descodificada, respectivamente, con respecto a la componente de vector de bloque horizontal y vertical descodificada, respectivamente, de cualquier unidad de predicción que pertenezca a la misma CTU y esté disponible, en unidades del CTB, para todas las imágenes del CVS. Un valor de n afirma que ningún valor de diferencia de una componente de vector de bloque está fuera del intervalo de -N a N, ambos inclusive, en unidades de desplazamiento de CTB.
Restricción en el número de vectores de bloque dentro de una región de interés
[0168] Como se ha comentado anteriormente, la IBC puede aumentar el número de vectores de bloque del peor caso para el caso P de bajo retardo. Al menos para mantener la misma complejidad del peor caso que HEVC y también para reducir la carga en los recursos de sistema (por ejemplo, para reducir una serie de cargas de muestra de predicción), algunos modos de realización incluyen características adicionales o alternativas.
[0169] Por ejemplo, el número de vectores de bloque dentro de una región de interés particular puede estar limitado a ser menor que o igual al número de vectores de bloque del peor caso de HEVC para la región de interés particular. Por ejemplo, el número de vectores de bloque dentro de una región de interés puede estar limitado a ser igual a o menor que el número de vectores de bloque del peor caso que existiría si todos los bloques se codificaran como Nx2N/2NxN para la misma región de interés. En algunos modos de realización, el modo IBC puede estar restringido para la división más pequeña (NxN) de fragmentos que no son I.
[0170] Las restricciones de número de vector de bloque y la restricción del modo IBC se pueden aplicar individualmente o en combinación. En las restricciones de número de vectores de bloque y la restricción de IBC, la región de interés no está limitada y puede ser, por ejemplo, una CU, una CTB, la unidad de codificación más grande (LCU), un fragmento, un mosaico o un conjunto de CU, CTU, CTB, LCU, fragmentos o mosaicos.
Restricción de fragmento I
[0171] En algunos modos de realización, los rangos de los vectores de bloque pueden estar restringidos a estar dentro de un fragmento. Es decir, la predicción IBC no cruza los límites de los fragmentos.
[0172] En algunos modos de realización, se puede señalizar un nuevo tipo de fragmento. Para el nuevo tipo de fragmento, los rangos de los vectores de bloque están restringidos a estar dentro del fragmento. Como resultado, la predicción IBC no cruza los límites de fragmento para los fragmentos del nuevo tipo de fragmento.
[0173] En algunos modos de realización, una bandera puede especificar que los rangos de los vectores de bloque están restringidos a estar dentro de fragmentos. Como resultado del estado de la bandera, la predicción IBC no cruza los límites de fragmento. La bandera se puede señalizar, por ejemplo, en uno o más de los siguientes conjuntos de parámetros: VPS, SPS, PPS, información de usabilidad de vídeo (VUI), cabecera de fragmento o sus respectivas ampliaciones.
[0174] 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. Como resultado, se mejora la eficacia del ancho de banda de memoria, se limitan los accesos a la memoria del peor caso y se mejoran otros aspectos de la copia intrabloque.
[0175] 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). Un sistema incluye un dispositivo de origen que proporciona datos de vídeo codificados que se descodificarán 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 a través de 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, notebooks (es decir, ordenadores portátiles), tabletas electrónicas, 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, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen y el dispositivo de destino pueden estar equipados para la comunicación inalámbrica.
[0176] 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 transportar 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 encaminadores, 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.
[0177] En algunos ejemplos, pueden proporcionarse 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 una variedad de medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Bluray, 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 archivos 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 transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino. 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 estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.) o una combinación de 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 continua, una transmisión de descarga o una combinación de ambas.
[0178] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. 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 radiodifusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continua de vídeo por internet, tales como la transmisión continua adaptativa dinámica 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, a fin de prestar soporte a aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0179] En un ejemplo, el dispositivo de origen incluye una fuente 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 una fuente de vídeo externa, 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.
[0180] 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 mediante un dispositivo de codificación de vídeo, las técnicas también se pueden realizar mediante un codificador/descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de esta divulgación también se pueden realizar mediante 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 funcionar 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 la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo o la videotelefonía.
[0181] La fuente de vídeo puede incluir un dispositivo de captura de vídeo, tal como una videocámara, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, la fuente 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 la fuente de vídeo es una videocámara, el dispositivo de origen y el dispositivo de destino pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se menciona 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 ser proporcionada por la interfaz de salida a un medio legible por ordenador.
[0182] Como se ha indicado, el medio legible por ordenador puede incluir medios transitorios, tales como una radiodifusió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, por medio de una transmisión en red. De forma similar, un dispositivo informático de una unidad de producción de medios, tal como una unidad de grabació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.
[0183] 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 usada 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 de una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización. Se han descrito diversos modos de realización de la invención.
[0184] Los detalles específicos del dispositivo de codificación 104 y del dispositivo de descodificación 112 se muestran en la FIG. 8 y la FIG. 9, respectivamente. La FIG. 8 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, por ejemplo, generar las estructuras sintácticas descritas en el presente documento (por ejemplo, las estructuras sintácticas de un VPS, SPS, PPS u otros elementos sintácticos). El dispositivo de codificación 104 puede realizar codificación de intrapredicción e interpredicción de bloques de vídeo dentro de fragmentos de vídeo. Como se describe 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 trama de vídeo dada. La intercodificación se basa, al menos en parte, en la predicción temporal para reducir o eliminar la redundancia temporal en las tramas o imágenes adyacentes o circundantes de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de varios modos de compresión espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden hacer referencia a cualquiera de varios modos de compresión temporal.
[0185] El dispositivo de codificación 104 incluye una unidad de división 35, una unidad de procesamiento de predicción 4 l, 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 una unidad de estimación de movimiento 42, una unidad de compensación de movimiento 44 y una 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 reducción del efecto bloque, un filtro de bucle adaptativo (ALF) y un filtro de desfase adaptativo de muestras (SAO). Aunque la unidad de filtro 63 que se muestra en la FIG. 8 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.
[0186] Como se muestra en la FIG. 8, 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 fragmentos, segmentos de fragmento, mosaicos 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 fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de codificación de intrapredicción, o uno de 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 velocidad 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.
[0187] La unidad de procesamiento de intrapredicción 46, situada en 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 vecinos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar 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.
[0188] La unidad de estimación de movimiento 42 se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo de la secuencia como fragmentos P, fragmentos B o fragmentos 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 del 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 una trama o imagen de vídeo actual con respecto a un bloque predictivo dentro de una imagen de referencia.
[0189] Un bloque predictivo es un bloque que se determina que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxel, que se puede determinar mediante una suma de diferencia absoluta (SAD), una suma de diferencia 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 píxel fraccionario 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 de píxel fraccionario 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 fraccionario, y proporcionar un vector de movimiento con una precisión de píxel fraccionario.
[0190] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento 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.
[0191] La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo en base al vector de movimiento determinado mediante estimación de movimiento, realizando posiblemente interpolaciones en relación con una 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 localizar 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 luma como de croma. 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 fragmento de vídeo para su uso mediante el dispositivo de descodificación 112 en la descodificación de los bloques de vídeo del fragmento de vídeo.
[0192] La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describe 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 pasadas de codificación independientes, y la unidad de procesamiento de intrapredicción 46 puede seleccionar un modo de intrapredicción adecuado para su uso a partir de los modos probados. Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión 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 velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-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 velocidad de transmisión 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 velocidades para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0193] 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 diversos bloques, así como indicaciones de un modo de intrapredicción más probable, una tabla de índices de modo de intrapredicción y una tabla de índices de modo de intrapredicción modificada a usar para cada uno de los contextos. Los datos de configuración de flujo de bits pueden incluir una pluralidad de tablas de índices de modo de intrapredicción y una pluralidad de tablas de índices de modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras de código).
[0194] Después de que la unidad de procesamiento de predicción 41 genere el bloque predictivo para el bloque de vídeo actual, ya sea por medio de interpredicción o 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 de coseno 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.
[0195] 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 más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0196] Seguidamente a 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 el contexto (CABAC), la codificación aritmética binaria adaptativa el 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 fragmento de vídeo actual que se está codificando.
[0197] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificación inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel 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íxel fraccionarios para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento generado por 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 una imagen o trama de vídeo subsiguiente.
[0198] De esta manera, el dispositivo de codificación 104 de la FIG. 8 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 describe 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 las FIGS. 4, 6 y 8. Las técnicas de esta divulgación se han descrito, en general, con respecto al dispositivo de codificación 104, pero como se mencionó anteriormente, algunas de las técnicas de esta divulgación también pueden implementarse mediante el dispositivo de postprocesamiento 57.
[0199] La FIG. 9 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. 8.
[0200] 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 fragmento de vídeo codificado y elementos sintácticos asociados, enviados por el dispositivo de codificación 104. En algunos modos de realización, el dispositivo de descodificación 112 puede recibir el flujo de bits de vídeo codificado desde el dispositivo de codificación 104. En algunos modos de realización, 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 sensible a los 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.
[0201] 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 a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo. La unidad de descodificación por entropía 80 puede procesar y analizar sintácticamente 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 p Ps .
[0202] Cuando el fragmento de vídeo se codifica como un fragmento 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 fragmento de vídeo actual basándose en un modo de intrapredicción señalizado y en datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento 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 fragmento 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 pueden producirse a partir de una de las imágenes de referencia de una lista de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la memoria de imágenes 92.
[0203] La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando sintácticamente los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos para el 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 de un conjunto de parámetros para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, un fragmento B, un fragmento P o un fragmento GPB), información de construcción para una o más listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, el estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0204] La unidad de compensación de movimiento 82 también puede realizar la interpolación en base a 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 fraccionarios 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 codificador de vídeo 20 a partir de los elementos sintácticos recibidos y puede usar los filtros de interpolación para generar bloques predictivos.
[0205] La unidad de cuantificación inversa 86 cuantifica inversamente, es decir, 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 codificador de vídeo 20 para cada bloque de vídeo del fragmento 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 de píxel.
[0206] Una vez que la unidad de compensación de movimiento 82 ha generado el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y en 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 reducción del efecto bloque, un filtro de bucle adaptativo (ALF) y un filtro de desfase adaptativo de muestras (SAO). Aunque la unidad de filtro 91 que se muestra en la FIG. 9 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 una trama o imagen dada 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.
[0207] En la descripción anterior, se describen aspectos de la aplicación con referencia a modos de realización específicos de la misma, pero los expertos en la técnica reconocerán que la invención no está limitada a los mismos. Por lo tanto, si bien los modos de realización ilustrativos de la solicitud se han descrito en detalle en el presente documento, debe entenderse que los conceptos de la invención pueden incorporarse y emplearse de otro modo, 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 se pueden usar individualmente o conjuntamente. Se pueden utilizar modos de realización adicionales en cualquier número de entornos y aplicaciones, más allá de los descritos en la presente sin alejarse del alcance de la memoria descriptiva. La memoria descriptiva y los dibujos deben, en consecuencia, considerarse como ilustrativos más que restrictivos. Para fines de ilustración, se han descrito procedimientos en un orden particular. Debe apreciarse que en modos de realización alternativos, los procedimientos se pueden realizar en un orden diferente al descrito.
[0208] Cuando los componentes se describen como "configurados para" realizar determinadas 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 lo anterior.
[0209] Los diversos bloques lógicos, módulos, circuitos y etapas de algoritmo ilustrativos descritos en relación con los modos de realización 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 técnica 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.
[0210] 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 de una variedad de dispositivos tales como ordenadores de propósito general, dispositivos manuales de comunicación inalámbrica o dispositivos de circuitos integrados que tienen múltiples usos, incluyendo su aplicación en dispositivos manuales 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 comprende código de programa que incluye instrucciones que, cuando se ejecutan, realizan uno o más de los procedimientos 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, se pueden leer y/o ejecutar mediante un ordenador, tales como señales u ondas propagadas.
[0211] 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 el terreno (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 puede implementarse 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 dedicados configurados para la codificación y la descodificación, o incorporados en un codificador-descodificador de vídeo combinado (CÓDEC).

Claims (15)

REIVINDICACIONES
1. Un procedimiento de codificación de datos de vídeo para generar una pluralidad de imágenes de vídeo codificadas, comprendiendo el procedimiento:
obtener (502) datos de vídeo en un codificador;
determinar (504) la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar la pluralidad de imágenes de vídeo codificadas;
realizar (506) la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque; en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar (508) al menos una de la bipredicción interimagen y la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas;
determinar un tamaño de unidad de predicción; y
generar (510) la pluralidad de imágenes de vídeo codificadas en base a los datos de vídeo de acuerdo con la predicción de copia intrabloque realizada, donde la generación de la pluralidad de imágenes de vídeo codificadas comprende usar bipredicción interimagen o unipredicción interimagen si se determinó no realizar una predicción intraimagen en los datos de vídeo usando predicción de copia intrabloque para generar la pluralidad de imágenes de vídeo codificadas,
en el que la bipredicción interimagen o la unipredicción interimagen se inhabilita para la pluralidad de imágenes de vídeo codificadas en respuesta a una combinación de todo lo siguiente: i) la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, y ii) el tamaño de la unidad de predicción es inferior a un umbral, y iii) la resolución adaptativa de vector de movimiento, AMVR, está inhabilitada.
2. El procedimiento de la reivindicación 1, en el que el umbral es un tamaño de unidad de predicción de 8x8 píxeles.
3. El procedimiento de la reivindicación 1, en el que la combinación también incluye que la bipredicción interimagen tenga al menos uno de diferentes unidades de referencia y diferentes vectores de movimiento.
4. El procedimiento de cualquiera de las reivindicaciones 1 a 3, en el que realizar (506) la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque comprende predecir muestras de luma y croma de bloques de vídeo (202) de una imagen (200) a partir de bloques (204) de muestras de luma y croma ya descodificadas dentro de la misma imagen (200).
5. Un medio legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan por un procesador, hacen que el procesador realice un procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 4.
6. Un aparato (104) de codificación de datos de vídeo, comprendiendo el aparato:
una memoria (108) configurada para almacenar datos de vídeo; y
un procesador configurado para:
obtener (502) los datos de vídeo;
determinar (504) la realización de una predicción intraimagen en los datos de vídeo, usando predicción de copia intrabloque, para generar una pluralidad de imágenes de vídeo codificadas; realizar (506) la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque;
en respuesta a la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, inhabilitar (508) al menos una de la bipredicción interimagen y la unipredicción interimagen para la pluralidad de imágenes de vídeo codificadas;
determinar un tamaño de unidad de predicción; y
generar (510) la pluralidad de imágenes de vídeo codificadas en base a los datos de vídeo de acuerdo con la predicción de copia intrabloque realizada, donde la generación de la pluralidad de imágenes de vídeo codificadas comprende usar bipredicción interimagen o unipredicción interimagen si se determinó no realizar una predicción intraimagen en los datos de vídeo usando predicción de copia intrabloque para generar la pluralidad de imágenes de vídeo codificadas,
en el que la bipredicción interimagen o la unipredicción interimagen se inhabilita para la pluralidad de imágenes de vídeo codificadas en respuesta a una combinación de todo lo siguiente: i) la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, y ii) el tamaño de la unidad de predicción es inferior a un umbral, y iii) la resolución adaptativa de vector de movimiento, AMVR, está inhabilitada.
7. El aparato de la reivindicación 6, en el que el umbral es un tamaño de unidad de predicción de 8x8 píxeles.
8. Un procedimiento de descodificación de datos de vídeo para generar una pluralidad de imágenes de vídeo descodificadas, comprendiendo el procedimiento:
recibir (602), en un flujo de bits de vídeo, datos de vídeo codificados que se han codificado usando una pluralidad de modos de predicción, comprendiendo la pluralidad de modos de predicción:
un modo de unipredicción interimagen,
un modo de bipredicción interimagen, y
un modo de copia intrabloque intraimagen;
recibir (604), en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está inhabilitada para una parte de los datos de vídeo codificados, donde la bipredicción interimagen está inhabilitada cuando el modo de copia intrabloque intraimagen está habilitado;
determinar (606), en base a la indicación, un modo de predicción de entre la pluralidad de modos de predicción para predecir una unidad de predicción de la parte de datos de vídeo codificados; determinar un tamaño de unidad de predicción; y
descodificar (608) la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado,
en el que los datos de vídeo se descodifican usando bipredicción interimagen o unipredicción interimagen si se determinó que el modo de predicción de copia intrabloque intraimagen no está habilitado para la pluralidad de imágenes de vídeo codificadas,
en el que la bipredicción interimagen o la unipredicción interimagen se inhabilita en respuesta a una combinación de todo lo siguiente: i) la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, y ii) el tamaño de la unidad de predicción es inferior a un umbral, y iii) la resolución adaptativa de vector de movimiento, AMVR, está inhabilitada.
9. El procedimiento de la reivindicación 8, en el que el umbral es un tamaño de unidad de predicción de 8x8 píxeles.
10. Un medio legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan por un procesador, hacen que el procesador realice un procedimiento de acuerdo con la reivindicación 8 o la reivindicación 9.
11. Un aparato (112) de descodificación de datos de vídeo, comprendiendo el aparato:
una memoria (118) configurada para almacenar datos de vídeo codificados recibidos (602) en un flujo de bits de vídeo y codificados con una pluralidad de modos de predicción, comprendiendo la pluralidad de modos de predicción:
un modo de unipredicción interimagen,
un modo de bipredicción interimagen, y
un modo de copia intrabloque intraimagen; y
un procesador configurado para:
obtener los datos de vídeo codificados de la memoria;
recibir (604), en el flujo de bits de vídeo, una indicación de que la bipredicción interimagen está inhabilitada para una parte de los datos de vídeo codificados, donde la bipredicción interimagen está inhabilitada cuando el modo de copia intrabloque intraimagen está habilitado;
determinar (606), en base a la indicación, un modo de predicción de entre la pluralidad de modos de predicción para predecir una unidad de predicción de la parte de datos de vídeo codificados; determinar un tamaño de unidad de predicción; y
descodificar (608) la unidad de predicción de la parte de datos de vídeo codificados de acuerdo con el modo de predicción determinado;
en el que los datos de vídeo se descodifican usando bipredicción interimagen o unipredicción interimagen si se determinó que el modo de predicción de copia intrabloque intraimagen no está habilitado para la pluralidad de imágenes de vídeo codificadas,
en el que la bipredicción interimagen o la unipredicción interimagen se inhabilita en respuesta a una combinación de todo lo siguiente: i) la determinación de realizar la predicción intraimagen en los datos de vídeo usando la predicción de copia intrabloque, y ii) el tamaño de la unidad de predicción es inferior a un umbral, y iii) la resolución adaptativa de vector de movimiento, AMVR, está inhabilitada.
12. El aparato de la reivindicación 11, en el que el procesador está configurado además para, en respuesta a la indicación, hacer que el modo de bipredicción interimagen no se use para predecir la unidad de predicción de la parte de datos de vídeo codificados.
13. El aparato de la reivindicación 11 o la reivindicación 12, en el que la parte de los datos de vídeo codificados comprende una pluralidad de imágenes.
14. El aparato de la reivindicación 11, en el que el umbral es un tamaño de unidad de predicción de 8x8 píxeles.
15. El aparato de la reivindicación 11, en el que el aparato es un ordenador de escritorio, un ordenador portátil, una tableta electrónica, un descodificador, un televisor, una cámara, un dispositivo de visualización, un reproductor de medios digitales, una consola de videojuegos o un dispositivo de transmisión continua de vídeo.
ES15741643T 2014-06-19 2015-06-19 Sistemas y procedimientos para copia intrabloque Active ES2807216T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462014641P 2014-06-19 2014-06-19
US201562154399P 2015-04-29 2015-04-29
US14/743,176 US10327001B2 (en) 2014-06-19 2015-06-18 Systems and methods for intra-block copy
PCT/US2015/036609 WO2015196029A1 (en) 2014-06-19 2015-06-19 Systems and methods for intra-block copy

Publications (1)

Publication Number Publication Date
ES2807216T3 true ES2807216T3 (es) 2021-02-22

Family

ID=54870870

Family Applications (2)

Application Number Title Priority Date Filing Date
ES15741643T Active ES2807216T3 (es) 2014-06-19 2015-06-19 Sistemas y procedimientos para copia intrabloque
ES15745007T Active ES2774664T3 (es) 2014-06-19 2015-06-19 Sistemas y procedimientos para copia intrabloque

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES15745007T Active ES2774664T3 (es) 2014-06-19 2015-06-19 Sistemas y procedimientos para copia intrabloque

Country Status (10)

Country Link
US (2) US10327001B2 (es)
EP (2) EP3158736B1 (es)
JP (2) JP6704354B2 (es)
KR (2) KR102423950B1 (es)
CN (2) CN106416245B (es)
BR (2) BR112016029387B1 (es)
CA (2) CA2952279C (es)
ES (2) ES2807216T3 (es)
HU (2) HUE050093T2 (es)
WO (2) WO2015196030A1 (es)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10327001B2 (en) 2014-06-19 2019-06-18 Qualcomm Incorporated Systems and methods for intra-block copy
CN105392008B (zh) * 2014-08-22 2018-09-25 中兴通讯股份有限公司 一种预测编、解码方法和相应的编、解码器和电子设备
CN105430417B (zh) * 2014-09-22 2020-02-07 中兴通讯股份有限公司 编码方法、解码方法、装置及电子设备
WO2016165623A1 (en) * 2015-04-13 2016-10-20 Mediatek Inc. Methods of constrained intra block copy for reducing worst case bandwidth in video coding
CN106254878B (zh) * 2015-06-14 2020-06-12 同济大学 一种图像编码及解码方法、图像处理设备
US10516891B2 (en) * 2015-11-20 2019-12-24 Intel Corporation Method and system of reference frame caching for video coding
US9959097B2 (en) 2016-03-09 2018-05-01 Bank Of America Corporation SVN interface system for heterogeneous development environments
US10694202B2 (en) * 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
US10674159B2 (en) 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
US10609384B2 (en) * 2017-09-21 2020-03-31 Futurewei Technologies, Inc. Restriction on sub-block size derivation for affine inter prediction
US11070847B2 (en) * 2017-12-05 2021-07-20 Qualcomm Incorporated Intra-prediction with far neighboring pixels
WO2020065520A2 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Extended merge prediction
US10638137B2 (en) 2018-03-07 2020-04-28 Tencent America LLC Method and apparatus for video coding
EP3788787A1 (en) * 2018-06-05 2021-03-10 Beijing Bytedance Network Technology Co. Ltd. Interaction between ibc and atmvp
WO2019234578A1 (en) * 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Asymmetric weighted bi-predictive merges
WO2019244055A1 (en) 2018-06-19 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Mode dependent mvd precision set
TWI739120B (zh) 2018-06-21 2021-09-11 大陸商北京字節跳動網絡技術有限公司 合併仿射模式與非合併仿射模式的統一拘束
WO2019244118A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Component-dependent sub-block dividing
US10798376B2 (en) * 2018-07-17 2020-10-06 Tencent America LLC Method and apparatus for video coding
US10375416B1 (en) * 2018-09-05 2019-08-06 Tencent America LLC Segment types in video coding
KR102635047B1 (ko) 2018-09-19 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용
US10848782B2 (en) 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
US11172236B2 (en) 2018-09-21 2021-11-09 Tencent America LLC Method and apparatus for video decoding that defines a search range for a reference block indicated by a block vector
US11317099B2 (en) 2018-10-05 2022-04-26 Tencent America LLC Method and apparatus for signaling an offset in video coding for intra block copy and/or inter prediction
KR20200040179A (ko) 2018-10-08 2020-04-17 에스케이텔레콤 주식회사 현재 픽처 참조 모드를 이용한 예측 방법 및 영상 복호화 장치
US11509919B2 (en) * 2018-10-17 2022-11-22 Tencent America Reference sample memory size restrictions for intra block copy
CN111083492B (zh) 2018-10-22 2024-01-12 北京字节跳动网络技术有限公司 双向光流中的梯度计算
WO2020086317A1 (en) 2018-10-23 2020-04-30 Tencent America Llc. Method and apparatus for video coding
CN111418208B (zh) 2018-11-06 2023-12-05 北京字节跳动网络技术有限公司 用于几何分割的权重推导
WO2020094054A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Condition dependent inter prediction with geometric partitioning
WO2020094151A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in pairwise average candidate calculations
WO2020098655A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion vector storage for inter prediction
EP3861742A4 (en) 2018-11-20 2022-04-13 Beijing Bytedance Network Technology Co., Ltd. DIFFERENCE CALCULATION BASED ON SPATIAL POSITION
WO2020103933A1 (en) * 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Configuration method for default motion candidate
CN113424536B (zh) * 2018-11-30 2024-01-30 腾讯美国有限责任公司 用于视频编解码的方法和装置
CN111010572A (zh) * 2018-12-04 2020-04-14 北京达佳互联信息技术有限公司 一种视频编码方法和装置及设备
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
CN111385570B (zh) * 2018-12-28 2021-11-02 杭州海康威视数字技术股份有限公司 编码方法、解码方法及装置
WO2020140862A1 (en) 2018-12-30 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Conditional application of inter prediction with geometric partitioning in video processing
WO2020143832A1 (en) * 2019-01-12 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction constraints
US10771799B2 (en) * 2019-01-15 2020-09-08 Tencent America LLC Method and apparatus for video coding
US11202089B2 (en) * 2019-01-28 2021-12-14 Tencent America LLC Method and apparatus for determining an inherited affine parameter from an affine model
CN113412623A (zh) 2019-01-31 2021-09-17 北京字节跳动网络技术有限公司 记录仿射模式自适应运动矢量分辨率的上下文
WO2020156537A1 (en) * 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Extended application of combined intra-inter prediction
US10958904B2 (en) 2019-02-01 2021-03-23 Tencent America LLC Method and apparatus for video coding
CN113366848A (zh) 2019-02-02 2021-09-07 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区重置
CN113424526A (zh) * 2019-02-17 2021-09-21 北京字节跳动网络技术有限公司 帧内块复制模式的应用性的限制
CN117395439A (zh) 2019-03-01 2024-01-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
CN113545068B (zh) 2019-03-01 2023-09-15 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于顺序的更新
JP7284284B2 (ja) 2019-03-04 2023-05-30 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーの実装形態の態様
KR20210131347A (ko) * 2019-03-06 2021-11-02 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 크기에 따른 인터 코딩
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
SG11202109622QA (en) * 2019-03-09 2021-10-28 Tencent America LLC Method and apparatus for video coding
CN113924784A (zh) * 2019-03-12 2022-01-11 现代自动车株式会社 用于编码和解码影像的方法和装置
WO2020185050A1 (ko) * 2019-03-14 2020-09-17 에스케이텔레콤 주식회사 인트라 블록 복사를 이용하는 영상 부호화 및 복호화
WO2020187199A1 (en) * 2019-03-17 2020-09-24 Beijing Bytedance Network Technology Co., Ltd. Calculation of prediction refinement based on optical flow
US11240516B2 (en) 2019-03-20 2022-02-01 Tencent America LLC Coding mode signaling for small blocks
CN113826390B (zh) * 2019-05-16 2024-03-08 字节跳动有限公司 屏幕内容编解码的帧内块复制
WO2020262960A1 (ko) * 2019-06-24 2020-12-30 엘지전자 주식회사 크로마 성분 부호화 블록의 최대 변환 크기 제한을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
BR112022000187A2 (pt) 2019-07-06 2022-02-22 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador, meio de gravação não transitório legível por computador
AU2020312053B2 (en) 2019-07-10 2023-09-14 Beijing Bytedance Network Technology Co., Ltd. Sample identification for intra block copy in video coding
EP3981146A4 (en) 2019-07-11 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. BITSTREAM CONFORMITY RESTRICTIONS FOR INTRA-BLOCK COPY IN VIDEO ENCODING
KR20210107858A (ko) 2019-07-11 2021-09-01 텐센트 아메리카 엘엘씨 비디오 코딩을 위한 방법 및 장치
WO2021008511A1 (en) * 2019-07-14 2021-01-21 Beijing Bytedance Network Technology Co., Ltd. Geometric partition mode candidate list construction in video coding
US11616962B2 (en) 2019-07-15 2023-03-28 Tencent America LLC Method and apparatus for video coding
WO2021015512A1 (ko) 2019-07-19 2021-01-28 엘지전자 주식회사 Ibc를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
CN117241033A (zh) 2019-08-06 2023-12-15 北京字节跳动网络技术有限公司 使用屏幕内容编码工具进行视频编码和解码
BR112022003656A2 (pt) 2019-09-02 2022-05-24 Beijing Bytedance Network Tech Co Ltd Método e aparelho de processamento de dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
BR112022005109A2 (pt) 2019-09-21 2023-03-14 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho para processamento de dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
US11330305B2 (en) * 2020-02-24 2022-05-10 Qualcomm Incorporated Signaling constraints and sequence parameter set sharing in video coding
US11943429B2 (en) * 2020-03-04 2024-03-26 Qualcomm Incorporated Subpicture signaling in video coding
US20230086077A1 (en) * 2021-09-17 2023-03-23 Tencent America LLC Method and apparatus for intra block copy (intrabc) mode coding with search range restrictions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101377530B1 (ko) * 2009-08-21 2014-03-27 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
EP2497273A4 (en) 2009-11-05 2016-07-27 Ericsson Telefon Ab L M PREDICTING PIXELS IN PICTURE CODING
TWI601411B (zh) * 2011-09-14 2017-10-01 三星電子股份有限公司 視訊解碼裝置
MY164898A (en) * 2011-09-29 2018-01-30 Sharp Kk Image decoding device, image decoding method, and image encoding device
MX2014008483A (es) 2012-01-19 2014-10-14 Sony Corp Dispositivo y metodo de procesamiento de imagenes.
US9426463B2 (en) * 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9906786B2 (en) 2012-09-07 2018-02-27 Qualcomm Incorporated Weighted prediction mode for scalable video coding
CN103747258B (zh) 2014-01-27 2015-02-04 中国科学技术大学 一种高性能视频编码标准的加密处理方法
US10368092B2 (en) * 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Encoder-side decisions for block flipping and skip mode in intra block copy prediction
US10327001B2 (en) 2014-06-19 2019-06-18 Qualcomm Incorporated Systems and methods for intra-block copy

Also Published As

Publication number Publication date
KR102423948B1 (ko) 2022-07-22
JP6527891B2 (ja) 2019-06-05
EP3158736B1 (en) 2019-11-27
JP6704354B2 (ja) 2020-06-03
CN106464874B (zh) 2019-08-02
HUE050093T2 (hu) 2020-11-30
KR20170019364A (ko) 2017-02-21
CN106416245A (zh) 2017-02-15
BR112016029539A2 (pt) 2017-08-22
US20150373358A1 (en) 2015-12-24
EP3158737B1 (en) 2020-04-22
KR102423950B1 (ko) 2022-07-21
US10327001B2 (en) 2019-06-18
HUE047937T2 (hu) 2020-05-28
WO2015196030A1 (en) 2015-12-23
EP3158737A1 (en) 2017-04-26
JP2017522790A (ja) 2017-08-10
WO2015196029A1 (en) 2015-12-23
CN106464874A (zh) 2017-02-22
CN106416245B (zh) 2019-08-02
KR20170019365A (ko) 2017-02-21
CA2952457C (en) 2022-12-13
EP3158736A1 (en) 2017-04-26
ES2774664T3 (es) 2020-07-22
CA2952457A1 (en) 2015-12-23
US10327002B2 (en) 2019-06-18
CA2952279A1 (en) 2015-12-23
US20150373357A1 (en) 2015-12-24
BR112016029387A2 (pt) 2017-08-22
JP2017522789A (ja) 2017-08-10
BR112016029387B1 (pt) 2024-02-15
CA2952279C (en) 2023-01-03

Similar Documents

Publication Publication Date Title
ES2807216T3 (es) Sistemas y procedimientos para copia intrabloque
ES2761865T3 (es) Procedimientos y sistemas de restricción de bipredicción en codificación de vídeo
US20230232000A1 (en) Sub-partition intra prediction
ES2892964T3 (es) Inicialización de predictor de paleta y fusión para codificación de vídeo
CN111201790B (zh) 基于色度量化参数偏移的编解码方法、装置、存储介质
ES2909066T3 (es) Identificadores de codificación para conjuntos de mosaicos con movimiento restringido
ES2872899T3 (es) Procedimiento y aparato para señalizar selectivamente diferentes números de estructuras de sintaxis de información de señales de vídeo en un conjunto de parámetros
US20170099490A1 (en) Constrained intra-prediction for block copy mode
CA2873419C (en) Signaling data for long term reference pictures for video coding
US20150373362A1 (en) Deblocking filter design for intra block copy
US11206413B2 (en) Palette predictor updates for local dual trees
JP7427688B2 (ja) ビデオ符号化におけるタイルグループ情報をシグナリングするためのシステム及び方法
CN113892271A (zh) 用于在视频编码中发送信号通知假想参考解码器参数的系统和方法
KR20160034321A (ko) 인트라 랜덤 액세스 포인트 픽처들의 개선된 교차-계층 정렬
KR20160064124A (ko) Mv-hevc 에서의 인터-뷰 종속성 타입
TW202203650A (zh) 解碼圖片緩衝器(dpb)操作和存取單元定界符(aud)
WO2020230798A1 (en) Systems and methods for signaling tile group information in video coding