ES2905124T3 - Dispositivo y método para procesar datos de video - Google Patents

Dispositivo y método para procesar datos de video Download PDF

Info

Publication number
ES2905124T3
ES2905124T3 ES16715180T ES16715180T ES2905124T3 ES 2905124 T3 ES2905124 T3 ES 2905124T3 ES 16715180 T ES16715180 T ES 16715180T ES 16715180 T ES16715180 T ES 16715180T ES 2905124 T3 ES2905124 T3 ES 2905124T3
Authority
ES
Spain
Prior art keywords
video
video data
data
block
unit
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
ES16715180T
Other languages
English (en)
Inventor
Aditya Bhuvanagiri
R V Jagannadha Rao Doddi
Ajit Deepak Gupte
Ashish Bajaj
Rajeshwar Kurapaty
Aravind Korlepara
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 ES2905124T3 publication Critical patent/ES2905124T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • H04N5/772Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera the recording apparatus and the television camera being placed in the same enclosure
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00007Time or data compression or expansion
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B31/00Arrangements for the associated working of recording or reproducing apparatus with related apparatus
    • G11B31/006Arrangements for the associated working of recording or reproducing apparatus with related apparatus with video camera or receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/63Control of cameras or camera modules by using electronic viewfinders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/38Transmitter circuitry for the transmission of television signals according to analogue transmission standards
    • H04N5/40Modulation circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/44Receiver circuitry for the reception of television signals according to analogue transmission standards
    • H04N5/455Demodulation-circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/782Television signal recording using magnetic recording on tape
    • H04N5/783Adaptations for reproducing at a rate different from the recording rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/915Television signal processing therefor for field- or frame-skip recording or reproducing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/0122Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal the input and the output signals having different aspect ratios
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00007Time or data compression or expansion
    • G11B2020/00072Time or data compression or expansion the compressed signal including a video signal
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/136Incoming video signal characteristics or properties
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • 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
    • 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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

Un aparato para grabar y procesar datos de video, que comprende: una memoria; una pantalla; y un procesador en comunicación con la memoria y la pantalla, y configurado para: grabar datos de video en una primera velocidad de tramas y proporcionar los datos de video en la primera velocidad de tramas a una primera ruta de procesamiento y una segunda ruta de procesamiento; en la primera ruta del procesamiento, codificar los datos de video en la primera velocidad de trama para almacenamiento y/o transmisión; en la segunda ruta de procesamiento, remover una o más tramas de los datos de video grabados para dar datos que tienen una segunda velocidad de trama que es inferior a la primera velocidad de trama y generar una vista previa de los datos de video a mostrar por la pantalla a la segunda velocidad de trama simultáneamente con la grabación de los datos de video.

Description

DESCRIPCIÓN
Dispositivo y método para procesar datos de video
CAMPO TÉCNICO
La presente divulgación se refiere al campo de la grabación, codificación y compresión de videos, particularmente al procesamiento de datos de video en dispositivos de grabación de video.
ANTECEDENTES
Las capacidades de video digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión digital directa, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o satelitales, dispositivos de video teleconferencia y similares. Los dispositivos de video digital implementan técnicas de compresión de video, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de video avanzada (AVC), el Estándar de codificación de video de alta eficiencia (HEVC) y extensiones de dichos estándares. Los dispositivos de video pueden transmitir, recibir, codificar, decodificar y/o almacenar información de video digital de manera más eficiente implementando tales técnicas de codificación de video. Los dispositivos de video que tienen capacidades para grabación de video pueden utilizarse para grabar datos de video de modo que los datos de video grabados puedan verse más tarde. Cuando dichos dispositivos de video están grabando datos de video, los dispositivos de video típicamente muestran una vista previa de los datos de video que están siendo actualmente grabados. Por ejemplo, cuando un usuario activa la función de grabación de video en su dispositivo de video, la pantalla/unidad de muestra en el dispositivo de video puede mostrar una vista previa de lo que la cámara provista en el dispositivo de video está grabando, de modo que el usuario puede asegurarse de que el objeto de grabación deseado está correctamente posicionado dentro del campo de visión de la cámara. Por ello, el dispositivo de video puede consumir parte del ancho de banda disponible y energía disponible para el dispositivo de video para que genere y muestre la vista previa, y el ancho de banda y el consumo de energía puede ser proporcional a la calidad y/o tamaño de los datos de video grabados.
Por ejemplo, el documento US 2014/0078343 divulga un método para generar simultáneamente múltiples imágenes de disparo en ráfaga y un archivo de video, en el que se almacenan las imágenes procesadas por cada ruta.
Además, el documento US 2014/071326 divulga un método para mostrar la pantalla de vista previa de la cámara de terminal portátil a la velocidad de salida de tramas cambiada, cuando se confirma que se cumple la condición de cambio de la velocidad de salida de tramas.
SUMARIO
Los sistemas, métodos , y dispositivos de esta divulgación tienen cada uno varios aspectos innovadores, ninguno de los cuales es el único responsable de los atributos deseables divulgados en la presente.
La invención se define de acuerdo con las reivindicaciones adjuntas 1 a 13.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1A es un diagrama de bloques que ilustra un sistema de codificación y decodificación de video de ejemplo que puede utilizar las técnicas según los aspectos en la presente divulgación.
La figura 1B es un diagrama de bloques que ilustra otro sistema de codificación y decodificación de video de ejemplo que puede realizar las técnicas según los aspectos en la presente divulgación.
La figura 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 3A es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 4 es un diagrama de bloques que ilustra un ejemplo de dispositivo de video según los aspectos descritos en la presente divulgación.
La figura 5 es un diagrama de bloques que ilustra un ejemplo de dispositivo de video según los aspectos descritos en la presente divulgación.
La figura 6 es un diagrama de flujo que ilustra un método de ejemplo de procesamiento de datos de video, según una realización de la presente
divulgación.
La figura 7 es un diagrama de flujo que ilustra un método de ejemplo de procesamiento de datos de video, según una realización de la presente divulgación.
DESCRIPCIÓN DETALLADA
En general, la presente divulgación se refiere al procesamiento de datos de video en el contexto de dispositivos de grabación de video. Más específicamente, la presente divulgación se refiere a sistemas y métodos para grabar datos de video, procesar los datos de video y generar vistas previas mostradas por los dispositivos grabadores de video en base a los datos de video procesados.
En un dispositivo de video que tiene capacidades de grabación de video (por ejemplo, un teléfono inteligente, una cámara de grabación de video, etc.), luego de que la cámara del dispositivo de video grabe los datos del video, los datos de video grabados son típicamente proporcionados (i) a un codificador para que los datos de video grabados se conviertan en flujo de bits codificados (es decir, para la compresión antes del almacenamiento y/o transmisión) y (ii) a una pantalla para que pueda mostrarse una vista previa de los datos de video grabados al usuario. El usuario puede usar la vista previa que se muestra en la pantalla para apuntar la cámara hacia el objeto de grabación deseado y asegurarse de que el objeto de grabación deseado está correctamente posicionado dentro del campo de visión de la cámara.
Sin embargo, debido a que mejora la calidad de los datos de video grabados por el dispositivo de video, el tamaño de los datos grabados puede también aumentar y provoca que el procesamiento realizado por el dispositivo de video para generar y mostrar una vista previa de los datos de video grabados consuma más ancho de banda y energía. Por ejemplo, generar y mostrar una vista previa de datos de video de alta definición (HD) y ultra alta definición (UHD) pueden requerir que se consuma una gran cantidad de ancho de banda y energía.
Por lo tanto, se desea un método mejorado para el procesamiento de los datos de video que pueden reducir el ancho de banda y el consumo energía en los dispositivos de grabación de video.
En la presente divulgación, se describen diversas técnicas para reducir los requisitos de ancho de banda y consumo de energía para el procesamiento de datos de video en la ruta de la vista previa de un dispositivo de video. En algunas realizaciones de la presente divulgación, el dispositivo de video remueve una parte de los datos de video (por ejemplo, al descartar uno o más tramas en los datos de video) para reducir la cantidad de datos de video a procesar en la ruta de la vista previa. Por ejemplo, si los datos de video se graban a 30 tramas por segundo (fps), cada sexta trama puede removerse de los datos de video y, como resultado, los datos de video resultantes que se necesitan procesar en la ruta de la vista previa se convierten en 25 fps.
Además, la presente divulgación describe diferentes técnicas para la codificación de datos de videos en un flujo de bits. Cualquier información generada mientras se codifican los datos de video pueden utilizarse en el procesamiento de los datos de video en la ruta de la vista previa. Por ejemplo, las estadísticas del codificador generadas durante el proceso de codificación (por ejemplo, la codificación o decodificación) pueden utilizarse para seleccionar qué parte(s) de los datos del video deberían removerse. El dispositivo de video puede determinar, basado en la información obtenida durante el proceso de codificación de datos de video, que ciertas tramas en los datos de video grabados son redundantes y por lo tanto pueden removerse de los datos de video en la ruta de la vista previa sin afectar significativamente la calidad de la vista previa.
Técnicas de compresión de video
Las técnicas de compresión de vídeo realizan predicciones espaciales (intraimagen) y/o predicciones temporales (interimagen) para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de video basada en bloques, un segmento de video (por ejemplo, una trama de video, una parte de una trama de video, etc.) se puede dividir en bloques de video, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de video en un segmento intracodificado (I) de una imagen se codifican utilizando la predicción espacial con respecto a las muestras de referencia en los bloques vecinos en la misma imagen. Los bloques de vídeo en un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para la codificación de un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica según un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica según un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, lo que resulta en coeficientes de transformada residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden escanear para producir un vector unidimensional de coeficientes de transformación, y se puede aplicar codificación de entropía para lograr una compresión aún mayor.
En la siguiente descripción, se describen técnicas H.264/AVC relacionadas con determinadas realizaciones; también se analizan el estándar HEVC y las técnicas relacionadas. Si bien ciertas realizaciones se describen en la presente en el contexto de los estándares HEVC y/o H.264, un experto en la técnica puede apreciar que los sistemas y métodos divulgados en la presente pueden ser aplicables a cualquier estándar de codificación de video adecuado. Por ejemplo, las realizaciones divulgadas en la presente pueden aplicarse a uno o más de los siguientes estándares (por ejemplo, incluyendo estándares desarrollados por la Unión internacional de telecomunicaciones Sector de estandarización de telecomunicaciones [ITU-T] Grupo de expertos en codificación de vídeo [VCEG] u Organización internacional de estandarización/Comisión electrotécnica internacional [ISO/IEC] grupo de expertos en imágenes en movimiento [MPEG]); ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluidas sus extensiones de Codificación de video escalable (SVC) y Codificación de video de múltiples vistas (MVC).
HEVC generalmente sigue el marco de los estándares de codificación de video anteriores en muchos aspectos. La unidad de predicción en HEVC es diferente de las unidades de predicción (por ejemplo, macrobloques) en ciertos estándares de codificación de video anteriores. De hecho, el concepto de macrobloque no existe en HEVC, como se entiende en ciertos estándares de codificación de video anteriores. Un macrobloque es reemplazado por una estructura jerárquica basada en un esquema de árbol cuaternario, que puede proporcionar una alta flexibilidad, entre otros posibles beneficios. Por ejemplo, dentro del esquema HEVC, se definen tres tipos de bloques, Unidad de codificación (CU), Unidad de predicción (PU) y Unidad de transformación (TU). La CU puede referirse a la unidad básica de división de regiones. La CU puede considerarse análoga al concepto de macrobloque, pero HEVC no restringe el tamaño máximo de las CU y puede permitir la división recursiva en cuatro CU de igual tamaño para mejorar la adaptabilidad del contenido. La PU puede considerarse la unidad básica de inter/intra predicción, y una sola PU puede contener múltiples particiones de formas arbitrarias para codificar eficazmente patrones de imagen irregulares. La TU puede considerarse la unidad básica de transformación. La TU se puede definir independientemente de la PU; sin embargo, el tamaño de una TU puede estar limitado al tamaño de la CU a la que pertenece la TU. Esta separación de la estructura de bloques en tres conceptos diferentes puede permitir que cada unidad se optimice según la función respectiva de la unidad, lo que puede resultar en una eficiencia de codificación mejorada.
Solo con fines ilustrativos, ciertas realizaciones descritas en la presente se describen con ejemplos que incluyen solo dos capas (por ejemplo, una capa inferior como la BL y una capa superior como la EL) de datos de video. Una "capa" de datos de video puede referirse generalmente a una secuencia de imágenes que tienen al menos una característica común, como una vista, una velocidad de tramas, una resolución o similares. Por ejemplo, una capa puede incluir datos de video asociados con una vista particular (por ejemplo, perspectiva) de datos de video de múltiples vistas. Como otro ejemplo, una capa puede incluir datos de video asociados con una capa particular de datos de video escalables. Por lo tanto, esta divulgación puede referirse indistintamente a una capa y una vista de datos de video. Por ejemplo, una vista de datos de video puede denominarse una capa de datos de video, y una capa de datos de video puede denominarse vista de datos de video. Además, un códec de múltiples capas (también denominado codificador de video de múltiples capas o codificador-decodificador de múltiples capas) puede referirse conjuntamente a un códec multivista o un códec escalable (por ejemplo, un códec configurado para codificar y/o decodificar datos de vídeo utilizando MV-HEVC, 3D-HEVC, SHVC u otra técnica de codificación de múltiples capas). La codificación y decodificación de video pueden denominarse generalmente codificación de vídeo. Debe entenderse que tales ejemplos pueden ser aplicables a configuraciones que incluyen múltiples BLs, RLs y/o ELs. Además, para facilitar la explicación, la siguiente descripción incluye los términos "tramas" o "bloques" con referencia a determinadas realizaciones. Sin embargo, estos términos no pretenden ser restrictivos. Por ejemplo, las técnicas descritas a continuación se pueden usar con cualquier unidad de video adecuada, como bloques (por ejemplo, CU, PU, TU, macrobloques, etc.), segmentos, tramas, etc.
Estándares de codificación de video
Una imagen digital, como una imagen de video, una imagen de televisión, una imagen fija o una imagen generada por una grabadora de video o una computadora, puede consistir en píxeles o muestras dispuestas en líneas horizontales y verticales. El número de píxeles en una sola imagen suele ser de decenas de miles. Cada píxel normalmente contiene información de luminancia y crominancia. Sin compresión, la gran cantidad de información que se transmite desde un codificador de imágenes a un decodificador de imágenes haría imposible la transmisión de imágenes en tiempo real. Para reducir la cantidad de información a transmitir, se han desarrollado varios métodos de compresión diferentes, como los estándares JPEG, MPEG y H.263.
Los estándares de codificación de video incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluidas sus extensiones Codificación de video escalable (SVC) y Codificación de video de múltiples vistas (MVC).
Además, un estándar de codificación de video, a saber, HEVC, es desarrollado por el equipo de colaboración conjunta sobre codificación de video (JCT-VC) del ITU-T VCEG e ISO/IEC MPEG. La cita completa para el borrador 10 de HEVC es el documento JCTVCL1003, Bross et al., "Borrador 10 de la especificación de texto de codificación de video de alta eficiencia (HEVC)", Equipo colaborativo conjunto sobre codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12° reunión: Ginebra, Suiza, lunes, 14 de enero de 2013 al miércoles, 23 de enero de 2013. La extensión de múltiples vistas para HEVC, a saber, MV-HEVC, y la extensión escalable para HEVC, denominada SHVC, también están siendo desarrolladas por JCT-3V (Equipo colaborativo conjunto ITU-T/ISO/IEC sobre el desarrollo de extensiones de codificación de video 3D) y JCT-VC, respectivamente.
Sistema de codificación de video
Varios aspectos de los nuevos sistemas, aparatos y métodos se describen con mayor detalle a continuación con referencia a los dibujos adjuntos. Sin embargo, esta divulgación puede realizarse de muchas formas diferentes y no debe interpretarse como limitada a ninguna estructura o función específica presentada a lo largo de esta divulgación. Por el contrario, estos aspectos se proporcionan manera que esta divulgación sea exhaustiva y completa, y transmitirá completamente el alcance de la divulgación a los expertos en la técnica. Con base en las enseñanzas de la presente, un experto en la técnica debe apreciar que el alcance de la divulgación está destinado a cubrir cualquier aspecto de los nuevos sistemas, aparatos y métodos divulgados en la presente, ya sea implementado independientemente o en combinación con cualquier otro aspecto de la presente divulgación. Por ejemplo, se puede implementar un aparato o se puede llevar a la práctica un método usando cualquier número de los aspectos establecidos en la presente. Además, el alcance de la presente divulgación está destinado a cubrir tal aparato o método que se practica usando otra estructura, funcionalidad o estructura y funcionalidad además de los diversos aspectos de la presente divulgación expuestos en la presente o distintos de ellos. Debe entenderse que cualquier aspecto divulgado en la presente puede estar incluido en uno o más elementos de una reivindicación.
Aunque en la presente se describen aspectos particulares, muchas variaciones y permutaciones de estos aspectos están dentro del alcance de la divulgación. Aunque se mencionan algunos beneficios y ventajas de los aspectos preferidos, el alcance de la divulgación no pretende limitarse a beneficios, usos u objetivos particulares. Más bien, se pretende que los aspectos de la divulgación sean ampliamente aplicables a diferentes tecnologías inalámbricas, configuraciones de sistemas, redes y protocolos de transmisión, algunos de los cuales se ilustran a modo de ejemplo en las figuras y en la siguiente descripción de los aspectos preferidos. La descripción detallada y los dibujos son meramente ilustrativos de la divulgación más que limitativos, el alcance de la divulgación está definido por las reivindicaciones adjuntas y equivalentes de las mismas.
Los dibujos adjuntos ilustran ejemplos. Los elementos indicados por números de referencia en los dibujos adjuntos corresponden a elementos indicados por números de referencia similares en la siguiente descripción. En esta divulgación, los elementos que tienen nombres que comienzan con palabras ordinales (por ejemplo, "primero", "segundo", "tercero", etc.) no implican necesariamente que los elementos tengan un orden particular. Más bien, estas palabras ordinales se utilizan meramente para referirse a diferentes elementos de un tipo igual o similar.
La figura 1A es un diagrama de bloques que ilustra un codificador y decodificador de video 10 de ejemplo que puede utilizar técnicas según los aspectos descritos en la presente divulgación. Como se usa en la presente, el término "codificador de video" se refiere genéricamente tanto a codificadores de video como a decodificadores de video. En esta divulgación, los términos "codificación de video" o "codificación" pueden referirse genéricamente a la codificación y decodificación de video. Además de los codificadores de video y los decodificadores de video, los aspectos descritos en la presente solicitud pueden extenderse a otros dispositivos relacionados tales como transcodificadores (por ejemplo, dispositivos que pueden decodificar un flujo de bits y volver a codificar otro flujo de bits) y cajas intermedias (por ejemplo, dispositivos que pueden modificar, transformar y/o manipular de otro modo un flujo de bits).
Como se muestra en la figura 1A, el codificador y decodificador de video 10 incluye un dispositivo de origen 12 que genera datos de video codificados para ser decodificados en un momento posterior por un dispositivo de destino 14. En el ejemplo de la figura 1A, el dispositivo de origen 12 y el dispositivo de destino 14 están en dispositivos separadosespecíficamente, el dispositivo de origen 12 es parte de un dispositivo de origen y el dispositivo de destino 14 es parte de un dispositivo de destino. Sin embargo, se observa que los dispositivos de origen y destino 12, 14 pueden estar en el mismo dispositivo o ser parte del mismo, como se muestra en el ejemplo de la figura 1B.
Con referencia una vez más a la figura 1A, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender respectivamente cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de escritorio, ordenadores portátiles (es decir, ordenadores portátiles), tabletas, decodificadores, aparato telefónico con microteléfono como los denominados teléfonos "inteligentes", los denominadas teclados "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de video o similares. En diferentes realizaciones, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir, a través de un enlace 16, los datos de video codificados a decodificar. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En el ejemplo de la figura 1A, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de video codificados al dispositivo de destino 14 en tiempo real. Los datos de video codificados pueden modularse según un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o cableada, como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
Alternativamente, los datos codificados pueden salir desde una interfaz de salida 22 a un dispositivo de almacenamiento 31 opcional. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 31 mediante una interfaz de entrada 28, por ejemplo, del dispositivo de destino 14. El dispositivo de almacenamiento 31 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, memoria rápida, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento 31 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el video codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 31 mediante transmisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor de Protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video 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 de red de área local inalámbrica [WLAN]), una conexión por cable (por ejemplo, una línea de suscriptor digital (DSL), un módem de cable, etc.), o una combinación de ambos que sea adecuada para acceder a los datos de video codificados almacenados en un servidor de archivos. La transmisión de datos de video codificados desde el dispositivo de almacenamiento 31 puede ser una transmisión en continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de video para respaldar cualquiera de una variedad de aplicaciones multimedia, como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de video en continuo, por ejemplo, a través de Internet (por ejemplo, transmisión adaptativa dinámica sobre el protocolo de transferencia de hipertexto (HTTP), etc.), codificación de video digital para almacenamiento en un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación y decodificación de video 10 puede configurarse para admitir transmisión de video unidireccional o bidireccional para admitir aplicaciones tales como transmisión de video, reproducción de video, difusión de video y/o telefonía de video.
En el ejemplo de la figura 1A, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captura de video, por ejemplo, una cámara de video, un archivo de video que contiene un video capturado previamente, una interfaz de alimentación de video para recibir videos desde un proveedor de contenido de videos y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el video de origen, o una combinación de tales fuentes. Como ejemplo, si la fuente de video 18 es una cámara de video, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o teléfonos con video, como se ilustra en el ejemplo de la figura 1B. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de video en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.
El video capturado, precapturado o generado por ordenador puede ser codificado por el codificador de video 20. Los datos de video codificados pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12. Los datos de video codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 31 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para la decodificación y/o reproducción. El codificador de video 20 ilustrado en la FIG. 1A y 1B puede comprender un codificador de video 20 ilustrado en la FIG. 2A, el codificador de video 23 ilustrado en la FIG. 3B, o cualquier codificador de video descrito en el presente.
En el ejemplo de la figura 1A, el dispositivo de destino 14 incluye la interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 puede recibir los datos de video codificados a través del enlace 16 y/o desde el dispositivo de almacenamiento 31. Los datos de video codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 31, pueden incluir una variedad de elementos de sintaxis generados por el codificador de video 20 para su uso por un decodificador de video, como el decodificador de video 30, al decodificar los datos de video. Tales elementos de sintaxis pueden incluirse con los datos de video codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos. El decodificador de video 30 ilustrado en la figura 1A y 1B puede comprender un decodificador de video 30 ilustrado en la figura 3A, el decodificador de video 33 ilustrado en la figura 3B, o cualquier decodificador de video descrito en el presente.
El dispositivo de visualización 32 puede estar integrado o ser externo al dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino puede ser un dispositivo de visualización 14. En general, el dispositivo de visualización 32 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (OLED), u otro tipo de dispositivo de visualización.
En aspectos relacionados, la figura 1B muestra un sistema de codificación y decodificación de video de ejemplo 10' en donde los dispositivos de origen y destino 12, 14 están en un dispositivo 11 o son parte del mismo. El dispositivo 11 puede ser un auricular de teléfono, como un teléfono "inteligente" o similar. El dispositivo 11 puede incluir un dispositivo controlador/procesador 13 opcional en comunicación operativa con los dispositivos de origen y destino 12, 14. El sistema 10' de la figura 1B puede incluir además una unidad de procesamiento de video 21 entre el codificador de video 20 y la interfaz de salida 22. En algunas implementaciones, la unidad de procesamiento de video 21 es una unidad separada, como se ilustra en la figura 1B; sin embargo, en otras implementaciones, la unidad de procesamiento de video 21 puede implementarse como una parte del codificador de video 20 y/o el dispositivo procesador/controlador 13. El sistema 10' también puede incluir un rastreador opcional 29, que puede rastrear un objeto de interés en una secuencia de video. El objeto de interés que se va a rastrear puede segmentarse mediante una técnica descrita en relación con uno o más aspectos de la presente divulgación. En aspectos relacionados, el seguimiento puede ser realizado por el dispositivo de visualización 32, solo o junto con el rastreador 29. El sistema 10' de la figura 1B, y los componentes de la misma, son de otro modo similar al sistema 10 de la figura 1A, y componentes de la misma.
El codificador de video 20 y el decodificador de video 30 pueden funcionar según un estándar de compresión de video, como el estándar HEVC, y pueden ajustarse a un modelo de prueba HEVC (HM). Alternativamente, el codificador de video 20 y el decodificador de video 30 pueden funcionar según otros estándares de propiedad o de la industria, como el estándar ITU-T H.264, también conocido como MPEG-4, Parte 10, AVC, o extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de compresión de video incluyen MPEG-2 e ITU-T H.263.
A pesar de que no se muestran en los ejemplos de las figuras 1A y 1B, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para manejar la codificación de audio y vídeo en un flujo de datos común o flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo multiplexor ITU H.223 u otros protocolos como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador adecuado y no transitorio y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada codificador de vídeo 20 y decodificador de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
Proceso de codificación de video
Como se mencionó brevemente con anterioridad, el codificador de video 20 codifica datos de video. Los datos de video pueden comprender una o más imágenes. Cada una de las imágenes es una imagen fija que forma parte de un video. En algunos casos, una imagen puede denominarse "trama" de video. Cuando el codificador de video 20 codifica los datos de video, el codificador de video 20 puede generar un flujo de bits. El flujo de bits puede incluir una secuencia de bits que forman una representación codificada de los datos de video. El tren de bits puede incluir imágenes codificadas y datos asociados. Una imagen codificada es una representación codificada de una imagen.
Para generar el flujo de bits, el codificador de video 20 puede realizar operaciones de codificación en cada imagen en los datos de video. Cuando el codificador de video 20 realiza operaciones de codificación en las imágenes, el codificador de video 20 puede generar una serie de imágenes codificadas y datos asociados. Los datos asociados pueden incluir conjuntos de parámetros de video (VPSs), conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de imagen (PPS), conjuntos de parámetros de adaptación (APS) y otras estructuras de sintaxis. Un SPS puede contener parámetros aplicables a cero o más secuencias de imágenes. Un PPS puede contener parámetros aplicables a cero o más imágenes. Un APS puede contener parámetros aplicables a cero o más imágenes. Los parámetros en un APS pueden ser parámetros que tienen más probabilidades de cambiar que los parámetros en un PPS.
Para generar una imagen codificada, el codificador de video 20 puede dividir una imagen en bloques de video de igual tamaño. Un bloque de video puede ser una matriz bidimensional de muestras. Cada uno de los bloques de video está asociado con un bloque de árbol. En algunos casos, un bloque de árbol puede denominarse unidad de codificación más grande (LCU). Los bloques de árbol de HEVC pueden ser ampliamente análogos a los macrobloques de estándares anteriores, como H.264/AVC. Sin embargo, un bloque de árbol no está necesariamente limitado a un tamaño particular y puede incluir una o más unidades de codificación (CU). El codificador de video 20 puede usar la partición de árbol cuaternario para dividir los bloques de video de los bloques de árbol en bloques de video asociados con las CU, de ahí el nombre "bloques de árbol".
En algunos ejemplos, el codificador de video 20 puede dividir una imagen en una pluralidad de segmentos. Cada uno de los segmentos puede incluir un número entero de CU. En algunos casos, una segmento comprende un número entero de bloques de árboles. En otros casos, el límite de un segmento puede estar dentro de un bloque de árbol.
Como parte de llevar a cabo una operación de codificación en una imagen, el codificador de video 20 puede realizar operaciones de codificación en cada segmento de la imagen. Cuando el codificador de video 20 realiza una operación de codificación en un segmento, el codificador de video 20 puede generar datos codificados asociados con el segmento. Los datos codificados asociados con el segmento pueden denominarse "segmento codificado".
Para generar un segmento codificado, el codificador de video 20 puede realizar operaciones de codificación en cada bloque de árbol en un segmento. Cuando el codificador de video 20 realiza una operación de codificación en un bloque de árbol, el codificador de video 20 puede generar un bloque de árbol codificado. El bloque de árbol codificado puede comprender datos que representan una versión codificada del bloque de árbol.
Cuando el codificador de video 20 genera un segmento codificado, el codificador de video 20 puede realizar operaciones de codificación en (por ejemplo, codificar) los bloques de árbol en el segmento según un orden de exploración de trama. Por ejemplo, el codificador de video 20 puede codificar los bloques de árbol del segmento en un orden que proceda de izquierda a derecha a través de una fila superior de bloques de árbol en el segmento, luego de izquierda a derecha a través de la siguiente fila inferior de bloques de árbol, y así sucesivamente hasta el codificador de video 20 haya codificado cada uno de los bloques de árbol en el segmento.
Como resultado de la codificación de los bloques de árboles según el orden de exploración de trama, los bloques de árboles arriba y a la izquierda de un bloque de árboles determinado pueden haber sido codificados, pero los bloques de árboles debajo y a la derecha del bloque de árboles determinado aún no se han codificado. Por consiguiente, el codificador de video 20 puede acceder a la información generada codificando bloques de árbol que se encuentran arriba y a la izquierda del bloque de árbol determinado cuando se codifica el bloque de árbol determinado. Sin embargo, es posible que el codificador de video 20 no pueda acceder a la información generada codificando los bloques de árbol que se encuentran debajo y a la derecha del bloque de árbol determinado cuando se codifica el bloque de árbol determinado.
Para generar un bloque de árbol codificado, el codificador de video 20 puede realizar de forma recursiva una división de árbol cuaternario en el bloque de video del bloque de árbol para dividir el bloque de video en bloques de video progresivamente más pequeños. Cada uno de los bloques de video más pequeños puede estar asociado con una CU diferente. Por ejemplo, el codificador de video 20 puede dividir el bloque de video de un bloque de árbol en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro sub-subbloques de igual tamaño, y así sucesivamente. Una CU dividida puede ser una CU cuyo bloque de video está dividido en bloques de video asociados con otras CU. Una CU no dividida puede ser una CU cuyo bloque de video no está dividido en bloques de video asociados con otras CU.
Uno o más elementos de sintaxis en el flujo de bits pueden indicar un número máximo de veces que el codificador de video 20 puede dividir el bloque de video de un bloque de árbol. Un bloque de video de una CU puede tener forma cuadrada. El tamaño del bloque de video de una CU (por ejemplo, el tamaño de la CU) puede variar de 8x8 píxeles hasta el tamaño de un bloque de video de un bloque de árbol (por ejemplo, el tamaño del bloque de árbol) con un máximo de 64x64 píxeles o superior.
El codificador de video 20 puede realizar operaciones de codificación (por ejemplo, codificar) en cada CU de un bloque de árbol según un orden de exploración z. En otras palabras, el codificador de video 20 puede codificar una CU superior izquierda, una CU superior derecha, una CU inferior izquierda y luego una CU inferior derecha, en ese orden. Cuando el codificador de video 20 realiza una operación de codificación en una CU dividida, el codificador de video 20 puede codificar las CU asociadas con subbloques del bloque de video de la CU dividida según el orden de exploración z. En otras palabras, el codificador de video 20 puede codificar una CU asociada con un subbloque superior izquierdo, una CU asociada con un subbloque superior derecho, una CU asociada con un subbloque inferior izquierdo y luego una CU asociada con un subbloque inferior derecho, en ese orden.
Como resultado de la codificación de las CU de un bloque de árbol según un orden de exploración z, se pueden haber codificado las CU de arriba, arriba y hacia la izquierda, arriba y hacia la derecha, izquierda y abajo y hacia la izquierda de una CU determinada. Las CU que se encuentran debajo y a la derecha de la CU determinada aún no se han codificado. Por consiguiente, el codificador de video 20 puede acceder a la información generada codificando algunas CU vecinas a la CU determinada al codificar la CU determinada. Sin embargo, el codificador de video 20 no puede acceder a la información generada codificando otras CU vecinas a la CU determinada al codificar la CU determinada.
Cuando el codificador de video 20 codifica una CU no dividida, el codificador de video 20 puede generar una o más unidades de predicción (PU) para la CU. Cada una de las PU de la CU puede estar asociada con un bloque de video diferente dentro del bloque de video de la CU. El codificador de video 20 puede generar un bloque de video predicho para cada PU de la CU. El bloque de video predicho de una PU puede ser un bloque de muestras. El codificador de video 20 puede usar intrapredicción o interpredicción para generar el bloque de video predicho para una PU.
Cuando el codificador 20 de video usa intrapredicción para generar el bloque de video predicho de una PU, el codificador 20 de video puede generar el bloque de video predicho de la PU basándose en muestras decodificadas de la imagen asociada con la PU. Si el codificador de video 20 usa intrapredicción para generar bloques de video predichos de las PU de una CU, la CU es una CU intrapredicha. Cuando el codificador de video 20 usa la interpredicción para generar el bloque de video predicho de la PU, el codificador de video 20 puede generar el bloque de video predicho de la PU basándose en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU. Si el codificador de video 20 usa interpredicción para generar bloques de video predichos de las PU de una CU, la CU es una CU interpredicha.
Además, cuando el codificador de video 20 usa la interpredicción para generar un bloque de video predicho para una PU, el codificador de video 20 puede generar información de movimiento para la PU. La información de movimiento para una PU puede indicar uno o más bloques de referencia de la PU. Cada bloque de referencia de la PU puede ser un bloque de video dentro de una imagen de referencia. La imagen de referencia puede ser una imagen distinta de la imagen asociada con la PU. En algunos casos, un bloque de referencia de una PU también puede denominarse "muestra de referencia" de la PU. El codificador de video 20 puede generar el bloque de video predicho para la PU basándose en los bloques de referencia de la PU.
Después de que el codificador de video 20 genera bloques de video predichos para una o más PU de una CU, el codificador de video 20 puede generar datos residuales para la CU basándose en los bloques de video predichos para las PU de la CU. Los datos residuales para la CU pueden indicar diferencias entre las muestras en los bloques de video predichos para las PU de la CU y el bloque de video original de la CU.
Además, como parte de llevar a cabo una operación de codificación en una CU no dividida, el codificador de video 20 puede realizar divisiones recursivas de árbol cuaternario sobre los datos residuales de la CU para dividir los datos residuales de la CU en uno o más bloques de datos residuales (por ejemplo, bloques de video residuales) asociados con unidades de transformación (TU) de la CU. Cada TU de una CU puede estar asociada con un bloque de video residual diferente.
El codificador de video 20 puede aplicar una o más transformaciones a bloques de video residuales asociados con las TU para generar bloques de coeficientes de transformación (por ejemplo, bloques de coeficientes de transformación) asociados con las Tu. Conceptualmente, un bloque de coeficiente de transformación puede ser una matriz bidimensional (2D) de coeficientes de transformación.
Después de generar un bloque de coeficiente de transformación, el codificador de video 20 puede realizar un proceso de cuantificación en el bloque de coeficiente de transformación. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformación se cuantifican para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes de transformación, proporcionando una mayor compresión. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación. Por ejemplo, un coeficiente de transformación de n-bits puede redondearse hacia abajo a un coeficiente de transformación de m-bits durante la cuantificación, donde n es mayor que m.
El codificador de video 20 puede asociar cada CU con un valor de parámetro de cuantificación (QP). El valor de QP asociado con una CU puede determinar cómo el codificador de video 20 cuantifica los bloques de coeficientes de transformación asociados con la CU. El codificador de video 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes de transformación asociados con una CU ajustando el valor de QP asociado con la CU.
Después de que el codificador de video 20 cuantifique un bloque de coeficientes de transformación, el codificador de video 20 puede generar conjuntos de elementos de sintaxis que representan los coeficientes de transformación en el bloque de coeficientes de transformación cuantificados. El codificador de video 20 puede aplicar operaciones de codificación de entropía, tales como operaciones de codificación aritmética binaria adaptativa al contexto (CABAC), a algunos de estos elementos de sintaxis. También podrían usarse otras técnicas de codificación de entropía, como la codificación de longitud variable adaptativa de contexto (CAVLC), la codificación de entropía de división de intervalo de probabilidad (PIPE) u otra codificación aritmética binaria.
El flujo de bits generado por el codificador de video 20 puede incluir una serie de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL puede ser una estructura sintáctica que contiene una indicación de un tipo de datos en la unidad de NAL y bytes que contienen los datos. Por ejemplo, una unidad de NAL puede contener datos que representan un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, un segmento codificado, información de mejora complementaria (SEI), un delimitador de la unidad de acceso, datos de relleno u otro tipo de datos. Los datos en una unidad de NAL pueden incluir varias estructuras de sintaxis.
El decodificador de video 30 puede recibir un flujo de bits generado por el codificador de video 20. El flujo de bits puede incluir una representación codificada de los datos de video codificados por el codificador de video 20. Cuando el decodificador de video 30 recibe el flujo de bits, el decodificador de video 30 puede realizar una operación de análisis sintáctico en el flujo de bits. Cuando el decodificador de video 30 lleva a cabo la operación de análisis sintáctico, el decodificador de video 30 puede extraer elementos de sintaxis del flujo de bits. El decodificador de video 30 puede reconstruir las imágenes de los datos de video basándose en los elementos de sintaxis extraídos del flujo de bits. El proceso para reconstruir los datos de video basándose en los elementos de sintaxis puede ser generalmente recíproco al proceso realizado por el codificador de video 20 para generar los elementos de sintaxis.
Después de que el decodificador de video 30 extrae los elementos de sintaxis asociados con una CU, el decodificador de video 30 puede generar bloques de video predichos para las PU de la CU basándose en los elementos de sintaxis. Además, el decodificador de video 30 puede cuantificar de forma inversa los bloques de coeficientes de transformación asociados con las TU de la CU. El decodificador de video 30 puede realizar transformaciones inversas en los bloques de coeficientes de transformación para reconstruir los bloques de video residuales asociados con las TU de la CU. Después de generar los bloques de video predichos y reconstruir los bloques de video residuales, el decodificador de video 30 puede reconstruir el bloque de video de la CU basándose en los bloques de video predichos y los bloques de video residuales. De esta manera, el decodificador de video 30 puede reconstruir los bloques de video de las CU basándose en los elementos de sintaxis en el flujo de bits.
Codificador de video
La figura 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación. El codificador de video 20 puede configurarse para procesar una sola capa de una trama de video, como para HEVC. Además, el codificador de video 20 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación. Como ejemplo, la unidad de procesamiento de predicción 100 puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otra realización, el codificador de video 20 incluye una unidad de predicción intercapa 128 opcional que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otras realizaciones, la predicción intercapa se puede realizar mediante la unidad de procesamiento de predicciones 100 (por ejemplo, la unidad de interpredicción 121 y/o la unidad de intrapredicción 126), en cuyo caso la unidad 128 de predicción intercapa se puede omitir. Sin embargo, los aspectos de esta divulgación no están tan limitados. En algunos ejemplos, las técnicas descritas en la presente divulgación pueden compartirse entre los diversos componentes del codificador de video 20. En algunos ejemplos, de manera adicional o alternativa, un procesador (no mostrado) puede configurarse para realizar alguna o todas las técnicas descritas en esta divulgación.
A efectos explicativos, esta divulgación describe el codificador de video 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación. El ejemplo ilustrado en la figura 2A es para una única capa códec. Sin embargo, como se describirá adicionalmente con respecto a la figura 2B, algunos o todos los codificadores de video 20 pueden duplicarse para procesamiento de un códec de múltiples capas.
El codificador de vídeo 20 puede realizar intra- e intercodificación de bloques de vídeo dentro de segmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imágenes adyacentes de una secuencia de video. El intramodo (modo I) puede referirse a cualquiera de varios modos de codificación basados en el espacio. Los intermodos, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de codificación basados en el tiempo.
En el ejemplo de la figura 2A, el codificador de video 20 incluye una pluralidad de componentes funcionales. Los componentes funcionales del codificador de video 20 incluyen una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformación 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de transformación inversa 110, una unidad de reconstrucción 112, una unidad de filtro 113, una memoria intermediaria de imágenes decodificadas 114 y una unidad de codificación de entropía 116. La unidad de procesamiento de predicción 100 incluye una unidad de interpredicción 121, una unidad de estimación de movimiento 122, una unidad de compensación de movimiento 124, una unidad de intrapredicción 126 y una unidad de predicción intercapa 128. En otros ejemplos, el codificador de video 20 puede incluir más, menos o diferentes componentes funcionales. Además, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden estar muy integradas, pero están representadas en el ejemplo de la figura 2A por separado a fines explicativos.
El codificador de video 20 puede recibir datos de video. El codificador de video 20 puede recibir los datos de video desde varias fuentes. Por ejemplo, el codificador de video 20 puede recibir los datos de video desde la fuente de video 18 (por ejemplo, mostrada en la figura. 1A o 1B) u otra fuente. Los datos de video pueden representar una serie de imágenes. Para codificar los datos de video, el codificador de video 20 puede realizar una operación de codificación en cada una de las imágenes. Como parte de llevar a cabo una operación de codificación en una imagen, el codificador de video 20 puede realizar operaciones de codificación en cada segmento de la imagen. Como parte de llevar a cabo una operación de codificación en un segmento, el codificador de video 20 puede realizar operaciones de codificación en bloques de árbol en el segmento.
Como parte de llevar a cabo una operación de codificación en un bloque de árbol, la unidad de procesamiento de predicción 100 puede realizar una partición de árbol cuaternario en el bloque de video del bloque de árbol para dividir el bloque de video en bloques de video progresivamente más pequeños. Cada uno de los bloques de video más pequeños puede estar asociado con una CU diferente. Por ejemplo, la unidad de procesamiento de predicción 100 puede dividir un bloque de video de un bloque de árbol en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro subsubbloques de igual tamaño, y así sucesivamente.
Los tamaños de los bloques de video asociados con las CU pueden variar desde muestras de 8x8 hasta el tamaño del bloque de árbol con un máximo de 64x64 muestras o más. En esta descripción, "NxN" y "N por N" pueden usarse indistintamente para referirse a las dimensiones de muestra de un bloque de video en términos de dimensiones verticales y horizontales, por ejemplo, muestras de 16 x 16 o muestras de 16 x 16. En general, un bloque de video de 16x16 tiene dieciséis muestras en dirección vertical (y = 16) y dieciséis muestras en dirección horizontal (x = 16). Asimismo, un bloque NxN generalmente tiene N muestras en una dirección vertical y N muestras en una dirección horizontal, donde N representa un valor entero no negativo.
Además, como parte de llevar a cabo la operación de codificación en un bloque de árbol, la unidad de procesamiento de predicción 100 puede generar una estructura de datos de árbol cuaternario jerárquico para el bloque de árbol. Por ejemplo, un bloque de árbol puede corresponder a un nodo raíz de la estructura de datos de árbol cuaternario. Si la unidad de procesamiento de predicción 100 divide el bloque de video del bloque de árbol en cuatro subbloques, el nodo raíz tiene cuatro nodos secundarios en la estructura de datos de árbol cuaternario. Cada uno de los nodos secundarios corresponde a una CU asociada con uno de los subbloques. Si la unidad de procesamiento de predicción 100 divide uno de los subbloques en cuatro subbloques, el nodo correspondiente a la CU asociada con el subbloque puede tener cuatro nodos secundarios, cada uno de los cuales corresponde a una CU asociada con uno de las subsubbloques.
Cada nodo de la estructura de datos de árbol cuaternario puede contener datos de sintaxis (por ejemplo, elementos de sintaxis) para el bloque de árbol o CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división que indica si el bloque de video de la CU correspondiente al nodo está particionado (por ejemplo, dividido) en cuatro subbloques. Los elementos de sintaxis para una CU pueden definirse de forma recursiva y pueden depender de si el bloque de video de la CU está dividido en subbloques. Una CU cuyo bloque de video no está dividido puede corresponder a un nodo hoja en la estructura de datos de árbol cuaternario. Un bloque de árbol codificado puede incluir datos basados en la estructura de datos de árbol cuaternario para un bloque de árbol correspondiente.
El codificador de video 20 puede realizar operaciones de codificación en cada CU no dividida de un bloque de árbol. Cuando el codificador de video 20 realiza una operación de codificación en una CU no dividida, el codificador de video 20 genera datos que representan una representación codificada de la CU no dividida.
Como parte de llevar a cabo una operación de codificación en una CU, la unidad de procesamiento de predicción 100 puede dividir el bloque de video de la CU entre una o más PU de la CU. El codificador de video 20 y el decodificador de video 30 pueden admitir varios tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el codificador de video 20 y el decodificador de video 30 pueden admitir tamaños de PU de 2Nx2N o NxN, e interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N o similar. El codificador de video 20 y el decodificador de video 30 también pueden admitir particiones asimétricas para tamaños de PU de 2NxnU, 2NxnD, nLx2N, y nRx2N. En algunos ejemplos, la unidad de procesamiento de predicción 100 puede realizar divisiones geométricas para dividir el bloque de video de una CU entre las PU de la CU a lo largo de un límite que no coincide con los lados del bloque de video de la CU en ángulos rectos.
La unidad de interpredicción 121 puede realizar una interpredicción en cada PU de la CU. La interpredicción puede proporcionar compresión temporal. Para realizar la interpredicción en una PU, la unidad de estimación de movimiento 122 puede generar información de movimiento para la PU. La unidad de compensación de movimiento 124 puede generar un bloque de video predicho para la PU basándose en la información de movimiento y muestras decodificadas de imágenes distintas de la imagen asociada con la CU (por ejemplo, imágenes de referencia). En esta divulgación, un bloque de video predicho generado por la unidad de compensación de movimiento 124 puede denominarse bloque de video interpredicho.
Los segmentos pueden ser segmentos I, segmentos P o segmentos B. La unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU están intrapredichas. Por lo tanto, si la PU está en un segmento I, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 no realizan interpredicción en la PU.
Si la PU está en un segmento P, la imagen que contiene la PU se asocia con una lista de imágenes de referencia denominada "lista 0". Cada una de las imágenes de referencia en la lista 0 contiene muestras que pueden usarse para la interpredicción de otras imágenes. Cuando la unidad de estimación de movimiento 122 realiza la operación de estimación de movimiento con respecto a una PU en un segmento P, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia en la lista 0 para un bloque de referencia para la PU. El bloque de referencia de la PU puede ser un conjunto de muestras, por ejemplo, un bloque de muestras, que se corresponde más estrechamente con las muestras en el bloque de video de la PU. La unidad de estimación de movimiento 122 puede usar una variedad de métricas para determinar qué tan cerca un conjunto de muestras en una imagen de referencia se corresponde con las muestras en el bloque de video de una PU. Por ejemplo, la unidad de estimación de movimiento 122 puede determinar qué tan cerca un conjunto de muestras en una imagen de referencia corresponde a las muestras en el bloque de video de una PU por suma de diferencia absoluta (SAD), suma de diferencia cuadrada (SSD) u otras métricas de diferencia.
Después de identificar un bloque de referencia de una PU en un segmento P, la unidad de estimación de movimiento 122 puede generar un índice de referencia que indica la imagen de referencia en la lista 0 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. En varios ejemplos, la unidad de estimación de movimiento 122 puede generar vectores de movimiento con diversos grados de precisión. Por ejemplo, la unidad de estimación de movimiento 122 puede generar vectores de movimiento con una precisión de un cuarto de muestra, precisión de un octavo de muestra u otra precisión de muestra fraccionada. En el caso de la precisión fraccional de la muestra, los valores del bloque de referencia pueden interpolarse a partir de los valores de la muestra de posición entera en la imagen de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia y el vector de movimiento como información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar un bloque de video predicho de la PU basándose en el bloque de referencia identificado por la información de movimiento de la PU.
Si la PU está en un segmento B, la imagen que contiene la PU puede asociarse con dos listas de imágenes de referencia, denominadas "lista 0" y "lista 1". En algunos ejemplos, una imagen que contiene un segmento B puede asociarse con una combinación de lista que es una combinación de la lista 0 y la lista 1.
Además, si la PU está en un segmento B, la unidad de estimación de movimiento 122 puede realizar una predicción unidireccional o una predicción bidireccional para la PU. Cuando la unidad de estimación de movimiento 122 realiza una predicción unidireccional para la PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia de la lista 0 o la lista 1 un bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede luego generar un índice de referencia que indica la imagen de referencia en la lista 0 o la lista 1 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia, un indicador de dirección de predicción y el vector de movimiento como la información de movimiento de la PU. El indicador de dirección de predicción puede indicar si el índice de referencia indica una imagen de referencia en la lista 0 o en la lista 1. La unidad de compensación de movimiento 124 puede generar el bloque de video predicho de la PU basándose en el bloque de referencia indicado por la información de movimiento de la PU.
Cuando la unidad de estimación de movimiento 122 realiza una predicción bidireccional para una PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia en la lista 0 un bloque de referencia para la PU y también puede buscar en las imágenes de referencia en la lista 1 otro bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede luego generar índices de referencia que indican las imágenes de referencia en la lista 0 y la lista 1 que contienen los bloques de referencia y los vectores de movimiento que indican los desplazamientos espaciales entre los bloques de referencia y la PU. La unidad de estimación de movimiento 122 puede emitir los índices de referencia y los vectores de movimiento de la PU como información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar el bloque de video predicho de la PU basándose en los bloques de referencia indicados por la información de movimiento de la PU.
En algunos casos, la unidad de estimación de movimiento 122 no genera un conjunto completo de información de movimiento para una PU a la unidad de codificación de entropía 116. Más bien, la unidad de estimación de movimiento 122 puede señalar la información de movimiento de una PU con referencia a la información de movimiento de otra PU. Por ejemplo, la unidad de estimación de movimiento 122 puede determinar que la información de movimiento de la PU es suficientemente similar a la información de movimiento de una PU vecina. En este ejemplo, la unidad de estimación de movimiento 122 puede indicar, en una estructura de sintaxis asociada con la PU, un valor que indica al decodificador de video 30 que la PU tiene la misma información de movimiento que la PU vecina. En otro ejemplo, la unidad de estimación de movimiento 122 puede identificar, en una estructura de sintaxis asociada con la PU, una PU vecina y una diferencia de vector de movimiento (MVD). La diferencia del vector de movimiento indica una diferencia entre el vector de movimiento de la PU y el vector de movimiento de la PU vecina indicada. El decodificador de video 30 puede utilizar el vector de movimiento de la PU vecina indicada y la diferencia del vector de movimiento para determinar el vector de movimiento de la PU. Haciendo referencia a la información de movimiento de una primera PU al señalizar la información de movimiento de una segunda PU, el codificador de video 20 puede ser capaz de señalizar la información de movimiento de la segunda PU utilizando menos bits.
Como parte de llevar a cabo una operación de codificación en una CU, la unidad de intrapredicción 126 puede realizar intrapredicción en las PU de la CU. La intrapredicción puede proporcionar compresión espacial. Cuando la unidad de intrapredicción 126 realiza una intrapredicción en una PU, la unidad de intrapredicción 126 puede generar datos de predicción para la PU basándose en muestras decodificadas de otras PU en la misma imagen. Los datos de predicción para la PU pueden incluir un bloque de video predicho y varios elementos de sintaxis. La unidad de intrapredicción 126 puede realizar una intrapredicción en las PU en los segmentos I, los segmentos P y los segmentos B.
Para realizar una intrapredicción en una PU, la unidad de intrapredicción 126 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de datos de predicción para la PU. Cuando la unidad de intrapredicción 126 usa un modo de intrapredicción para generar un conjunto de datos de predicción para la PU, la unidad intrapredicción 126 puede extender muestras de bloques de video de PU vecinas a través del bloque de video de la PU en una dirección y/o gradiente asociado con el modo de intrapredicción. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de la PU, asumiendo un orden de codificación de izquierda a derecha, de arriba a abajo para las PU, CU y bloques de árbol. La unidad de intrapredicción 126 puede utilizar varios números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional, dependiendo del tamaño de la PU.
La unidad de procesamiento de predicción 100 puede seleccionar los datos de predicción para una PU de entre los datos de predicción generados por la unidad de compensación de movimiento 124 para la PU o los datos de predicción generados por la unidad de intrapredicción 126 para la PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos de predicción para la PU basándose en métricas de velocidad/distorsión de los conjuntos de datos de predicción.
Si la unidad de procesamiento de predicción 100 selecciona datos de predicción generados por la unidad de predicción interna 126, la unidad de procesamiento de predicción 100 puede señalar el modo de intrapredicción que se usó para generar los datos de predicción para las PU, por ejemplo, el modo de intrapredicción seleccionado. La unidad de procesamiento de predicción 100 puede señalar el modo de intrapredicción seleccionado de diversas formas. Por ejemplo, puede ser probable que el modo de intrapredicción seleccionado sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de predicción intra de la PU vecina puede ser el modo más probable para la PU actual. Por lo tanto, la unidad de procesamiento de predicción 100 puede generar un elemento de sintaxis para indicar que el modo de intrapredicción seleccionado es el mismo que el modo de intrapredicción de la PU vecina.
Como se analizó anteriormente, el codificador de video 20 puede incluir una unidad de predicción intercapa 128. La unidad de predicción intercapa 128 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en el EL) usando una o más capas diferentes que están disponibles en la codificación de video escalable (por ejemplo, una BL o una RL). Tal predicción puede denominarse predicción intercapa. La unidad de predicción entre capas 128 utiliza métodos de predicción para reducir la redundancia entre capas, mejorando así la eficiencia de la codificación y reduciendo los requisitos de recursos computacionales. Algunos ejemplos de predicción intercapa incluyen la predicción intercapa e intracapa, la predicción del movimiento intercapa y la predicción residual intercapa. La predicción intercapa utiliza la reconstrucción de bloques coubicados en la BL para predecir el bloque actual en la EL. La predicción de movimiento intercapa utiliza información de movimiento de la BL para predecir el movimiento en la EL. La predicción residual intercapa utiliza el residuo de la BL para predecir el residuo de la EL. Cada uno de los esquemas de predicción intercapa se analiza a continuación con mayor detalle.
Después de que la unidad de procesamiento de predicción 100 selecciona los datos de predicción para las PU de una CU, la unidad de generación residual 102 puede generar datos residuales para la CU restando (por ejemplo, según se indica por el signo menos) los bloques de video predichos de las PU de la CU del bloque de video de la CU. Los datos residuales de una CU pueden incluir bloques de video residuales 2D que corresponden a diferentes componentes de muestra de las muestras en el bloque de video de la CU. Por ejemplo, los datos residuales pueden incluir un bloque de video residual que corresponde a las diferencias entre los componentes de luminancia de las muestras en los bloques de video predichos de las PU de la CU y los componentes de luminancia de las muestras en el bloque de video original de la CU. Además, los datos residuales de la CU pueden incluir bloques de video residuales que corresponden a las diferencias entre los componentes de crominancia de las muestras en los bloques de video predichos de las PU de la CU y los componentes de crominancia de las muestras en el bloque de video original de la CU.
La unidad de procesamiento de predicción 100 puede realizar divisiones de árbol cuaternario para dividir los bloques de video residuales de una CU en subbloques. Cada bloque de video residual no dividido puede estar asociado con una TU diferente de la CU. Los tamaños y posiciones de los bloques de video residuales asociados con las TU de una CU pueden o no basarse en los tamaños y posiciones de los bloques de video asociados con las PU de la CU. Una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT) puede incluir nodos asociados con cada uno de los bloques de video residuales. Las TU de una CU pueden corresponder a los nodos hoja del RQT.
La unidad de procesamiento de transformación 104 puede generar uno o más bloques de coeficientes de transformación para cada TU de una CU aplicando una o más transformaciones a un bloque de video residual asociado con la TU. Cada uno de los bloques de coeficientes de transformación puede ser una matriz 2D de coeficientes de transformación. La unidad de procesamiento de transformación 104 puede aplicar varias transformaciones al bloque de video residual asociado con una TU. Por ejemplo, la unidad de procesamiento de transformación 104 puede aplicar una transformación de coseno discreta (DCT), una transformación direccional o una transformación conceptualmente similar al bloque de video residual asociado con una TU.
Después de que la unidad de procesamiento de transformación 104 genera un bloque de coeficiente de transformación asociado con una TU, la unidad de cuantificación 106 puede cuantificar los coeficientes de transformación en el bloque de coeficiente de transformación. La unidad de cuantificación 106 puede cuantificar un bloque de coeficiente de transformación asociado con una TU de una CU basándose en un valor de QP asociado con la CU.
El codificador de video 20 puede asociar un valor de QP con una CU de varias formas. Por ejemplo, el codificador de video 20 puede realizar un análisis de distorsión de velocidad en un bloque de árbol asociado con la CU. En el análisis de la distorsión de velocidad, el codificador de video 20 puede generar múltiples representaciones codificadas del bloque de árbol realizando una operación de codificación varias veces en el bloque de árbol. El codificador de video 20 puede asociar diferentes valores de QP con la CU cuando el codificador de video 20 genera diferentes representaciones codificadas del bloque de árbol. El codificador de video 20 puede señalar que un valor de QP determinado está asociado con la CU cuando el valor de QP determinado está asociado con la CU en una representación codificada del bloque de árbol que tiene una métrica de distorsión y tasa de bits más baja.
La unidad de cuantificación inversa 108 y la unidad de transformación inversa 110 pueden aplicar cuantificación inversa y transformaciones inversas al bloque de coeficiente de transformación, respectivamente, para reconstruir un bloque de video residual a partir del bloque de coeficiente de transformación. La unidad de reconstrucción 112 puede agregar el bloque de video residual reconstruido a las muestras correspondientes de uno o más bloques de video predichos generados por la unidad de procesamiento de predicción 100 para producir un bloque de video reconstruido asociado con una TU. Al reconstruir bloques de video para cada TU de una CU de esta manera, el codificador de video 20 puede reconstruir el bloque de video de la CU.
Después de que la unidad de reconstrucción 112 reconstruye el bloque de video de una CU, la unidad de filtro 113 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo en el bloque de video asociado con la CU. Después de llevar a cabo una o más operaciones de desbloqueo, la unidad de filtro 113 puede almacenar el bloque de video reconstruido de la CU en la memoria intermediaria de imágenes decodificadas 114. La unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden usar una imagen de referencia que contiene el bloque de video reconstruido para realizar interpredicción en PU de imágenes posteriores. Además, la unidad de intrapredicción 126 puede utilizar bloques de video reconstruidos en la memoria intermediaria de imágenes decodificadas 114 para realizar intrapredicción en otras PU en la misma imagen que la CU.
La unidad de codificación de entropía 116 puede recibir datos de otros componentes funcionales del codificador de video 20. Por ejemplo, la unidad de codificación de entropía 116 puede recibir bloques de coeficientes de transformación de la unidad de cuantificación 106 y puede recibir elementos de sintaxis de la unidad de procesamiento de predicción 100. Cuando la unidad de codificación de entropía 116 recibe los datos, la unidad de codificación de entropía 116 puede realizar una o más operaciones de codificación de entropía para generar datos codificados de entropía. Por ejemplo, el codificador de video 20 puede realizar una operación CAVLC, una operación de CABAC, una operación de codificación de longitud de variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), una operación de codificación de entropía de partición de intervalo de probabilidad (PIPE) u otro tipo de operación de codificación de entropía en los datos. La unidad de codificación de entropía 116 puede generar un flujo de bits que incluye los datos codificados de entropía.
Como parte de llevar a cabo una operación de codificación de entropía en datos, la unidad de codificación de entropía 116 puede seleccionar un modelo de contexto. Si la unidad de codificación de entropía 116 realiza un operación de CABAC, el modelo de contexto puede indicar estimaciones de las probabilidades de que los contenedores particulares tengan valores particulares. En el contexto de CABAC, el término "contenedor" se utiliza para referirse a un bit de una versión binarizada de un elemento sintáctico.
Codificador de video multicapa
La figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de video de múltiples capas 23 (también denominado simplemente codificador de video 23) que puede implementar técnicas según los aspectos descritos en la presente divulgación. El codificador de video 23 puede configurarse para procesar tramas de video de múltiples capas, como para la codificación SHVC y multivista. Además, el codificador de video 23 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El codificador de video 23 incluye un codificador de video 20A y un codificador de video 20B, cada uno de los cuales pueden configurarse como codificador de video 20 y puede realizar las funciones descritas anteriormente con respecto al codificador de video 20. Además, como indica la reutilización de los números de referencia, los codificadores video 20A y 20B pueden incluir al menos algunos de los sistemas y subsistemas como codificador de video 20. Aunque se ilustra que el codificador de video 23 incluye dos codificadores de video 20A y 20B, el codificador de video 23 no está limitado como tal y puede incluir cualquier número de capas del codificador de video 20. En algunas realizaciones, el codificador de video 23 puede incluir un codificador de video 20 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede ser procesada o codificada por un codificador de video que incluye cinco capas de codificador. En algunas realizaciones, el codificador de video 23 puede incluir más capas de codificador que tramas en una unidad de acceso. En algunos de estos casos, algunas de las capas del codificador de video pueden estar inactivas al procesar algunas unidades de acceso.
Además de los codificadores video 20A y 20B, el codificador de video 23 puede incluir una unidad de remuestreo 90. La unidad de remuestreo 90 puede, en algunos casos, sobremuestrear una BL de una trama de video recibida, por ejemplo, para crear una EL. La unidad de remuestreo 90 puede sobremuestrear la información particular asociada con la BL recibida de una trama, pero no otra información. Por ejemplo, la unidad de remuestreo 90 puede sobremuestrear el tamaño espacial o el número de píxeles de la BL, pero el número de segmentos o el recuento del orden de las imágenes pueden permanecer constantes. En algunos casos, la unidad de remuestreo 90 puede no procesar el video recibido y/o puede ser opcional. Por ejemplo, en algunos casos, la unidad de procesamiento de predicción 100 puede realizar un sobremuestreo. En algunas realizaciones, la unidad de remuestreo 90 está configurada para sobremuestrear una capa y reorganizar, redefinir, modificar o ajustar uno o más segmentos para cumplir con un conjunto de reglas de límites de segmentos y/o reglas de exploración de tramas. Aunque se describe principalmente como un sobremuestreo de una BL, o una capa inferior en una unidad de acceso, en algunos casos, la unidad de remuestreo 90 puede submuestrear una capa. Por ejemplo, si durante la transmisión de un video se reduce el ancho de banda, se puede submuestrear una trama en lugar de sobremuestrearla.
La unidad de remuestreo 90 puede configurarse para recibir una imagen o trama (o información de imagen asociada con la imagen) desde la memoria intermediaria de imágenes decodificadas 114 del codificador de capa inferior (por ejemplo, el codificador de video 20A) y para sobremuestrear la imagen (o la información de la imagen recibida). Esta imagen sobremuestreada puede luego proporcionarse a la unidad de procesamiento de predicción 100 de un codificador de capa superior (por ejemplo, el codificador de video 20B) configurado para codificar una imagen en la misma unidad de acceso que el codificador de capa inferior. En algunos casos, el codificador de capa superior es una capa eliminada del codificador de capa inferior. En otros casos, puede haber uno o más codificadores de capa superior entre el codificador de video de capa 0 y el codificador de capa 1 de la figura 2B.
En algunos casos, la unidad de remuestreo 90 puede ignorarse u omitirse. En tales casos, la imagen de la memoria intermediaria de imágenes decodificadas 114 del codificador de video 20A puede proporcionarse directamente, o al menos sin proporcionarse a la unidad de remuestreo 90, a la unidad de procesamiento de predicción 100 del codificador de video 20B. Por ejemplo, si los datos de video proporcionados al codificador de video 20B y la imagen de referencia de la memoria intermediaria de imágenes decodificadas 114 del codificador de video 20A son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al codificador de video 20B sin ningún remuestreo.
En algunas realizaciones, el codificador de video 23 submuestrea de los datos de video que se van a proporcionar al codificador de la capa inferior utilizando la unidad de submuestreo 94 antes de proporcionar los datos de video al codificador de video 20A. Alternativamente, la unidad de submuestreo 94 puede ser una unidad de remuestreo 90 capaz de sobremuestrear o submuestrear los datos de video. En otras realizaciones, la unidad de submuestreo 94 puede omitirse.
Como se ilustra en la figura 2B, el codificador de video 23 puede incluir además un multiplexor 98, o mux. El mux 98 puede generar un flujo de bits combinado desde el codificador de video 23. El flujo de bits combinado puede crearse tomando un flujo de bits de cada uno de los codificadores de video 20A y 20B y alternando qué flujo de bits se emite en un momento determinado. Mientras que en algunos casos los bits de los dos (o más en el caso de más de dos capas de codificador de video) se pueden alternar un bit a la vez, en muchos casos los flujos de bits se combinan de manera diferente. Por ejemplo, el flujo de bits de salida puede crearse alternando el flujo de bits seleccionado un bloque a la vez. En otro ejemplo, el flujo de bits de salida puede crearse emitiendo una relación de bloques que no sea 1:1 de cada de los codificadores de video 20A y 20B. Por ejemplo, pueden salir dos bloques del codificador de video 20B para cada salida de bloque del codificador de video 20A. En algunas realizaciones, el flujo de salida del mux 98 puede estar preprogramado. En otras realizaciones, el mux 98 puede combinar los flujos de bits de los codificadores de video 20A, 20B en base a una señal de control recibida desde un sistema externo al codificador de video 23, tal como desde un procesador en un dispositivo de origen que incluye el dispositivo de origen 12. La señal de control puede generarse en base a la resolución o tasa de bits de un video de la fuente de video 18, en base a un ancho de banda del enlace 16, en base a una suscripción asociada con un usuario (por ejemplo, una suscripción paga frente a una suscripción gratuita), o en base a cualquier otro factor para determinar una salida de resolución deseada del codificador de video 23.
Decodificador de video
La figura 3A es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación. El decodificador de video 30 puede configurarse para procesar una sola capa de una trama de video, como para HEVC. Además, el decodificador de video 30 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación. Como ejemplo, la unidad de compensación de movimiento 162 y/o la unidad de intrapredicción 164 pueden configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. En un ejemplo, el decodificador de video 30 puede incluir opcionalmente una unidad de predicción intercapa 166 que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otros ejemplos, la predicción intercapa se puede realizar mediante la unidad de procesamiento de predicción 152 (por ejemplo, la unidad de compensación de movimiento 162 y/o la unidad de intrapredicción 164), en cuyo caso la unidad de predicción intercapa 166 puede omitirse. Sin embargo, los aspectos de esta divulgación no están tan limitados. En algunos ejemplos, las técnicas descritas en la presente divulgación pueden compartirse entre los diversos componentes del decodificador de video 30. En algunos ejemplos, de manera adicional o alternativa, un procesador (no mostrado) puede configurarse para realizar alguna o todas las técnicas descritas en esta divulgación.
A efectos explicativos, esta divulgación describe el decodificador de video 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación. El ejemplo ilustrado en la figura 3A es para una única capa códec. Sin embargo, como se describirá adicionalmente con respecto a la figura 3B, algunos o todos los decodificadores de video 30 pueden duplicarse para procesamiento de un códec de múltiples capas.
En el ejemplo de la figura 3A, el decodificador de video 30 incluye una pluralidad de componentes funcionales. Los componentes funcionales del decodificador de video 30 incluyen una unidad de decodificación de entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de transformación inversa 156, una unidad de reconstrucción 158, una unidad de filtro 159 y una memoria intermediaria de imágenes decodificadas 160. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 162, una unidad de intrapredicción 164 y una unidad de predicción intercapa 166. En algunos ejemplos, el decodificador de video 30 puede realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de video 20 de la figura 2A. En otros ejemplos, el decodificador de video 30 puede incluir más, menos o diferentes componentes funcionales.
El decodificador de video 30 puede recibir un flujo de bits que comprende datos de video codificados. El flujo de bits puede incluir una pluralidad de elementos de sintaxis. Cuando el decodificador de video 30 recibe el flujo de bits, la unidad de decodificación de entropía 150 puede realizar una operación de análisis sintáctico en el flujo de bits. Como resultado de llevar a cabo la operación de análisis sintáctico en el flujo de bits, la unidad de decodificación de entropía 150 puede extraer elementos de sintaxis del flujo de bits. Como parte de la realización de la operación de análisis sintáctico, la unidad de decodificación de entropía 150 puede decodificar por entropía elementos de sintaxis codificados por entropía en el flujo de bits. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de transformación inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 159 pueden realizar una operación de reconstrucción que genera datos de video decodificados basándose en los elementos de sintaxis extraídos del flujo de bits.
Como se analizó anteriormente, el flujo de bits puede comprender una serie de unidades de NAL. Las unidades de NAL del flujo de bits pueden incluir unidades de NAL del conjunto de parámetros de video, unidades de NAL del conjunto de parámetros de secuencia, unidades de NAL del conjunto de parámetros de imagen, unidades de NAL de SEI, etc. Como parte de la operación de análisis sintáctico del flujo de bits, la unidad de decodificación de entropía 150 puede realizar operaciones de análisis sintáctico que extraen y decodifican de forma entrópica conjuntos de parámetros de secuencia de unidades de NAL de conjuntos de parámetros de secuencia, conjuntos de parámetros de imagen de unidades de NAL de conjuntos de parámetros de imagen, datos de SEI de unidades de NAL de SEI, etc.
Además, las unidades de NAL del flujo de bits pueden incluir unidades de NAL de segmento codificado. Como parte de llevar a cabo la operación de análisis sintáctico en el flujo de bits, la unidad de decodificación de entropía 150 puede llevar a cabo operaciones de análisis sintáctico que extraen y decodifican de forma entrópica segmentos codificados de las unidades de NAL de segmentos codificados. Cada uno de los segmentos codificados puede incluir un encabezado de segmento y datos de segmento. El encabezado de segmento puede contener elementos de sintaxis pertenecientes a un segmento. Los elementos de sintaxis en el encabezado de segmento pueden incluir un elemento de sintaxis que identifica un conjunto de parámetros de imagen asociado con una imagen que contiene el segmento. La unidad de decodificación de entropía 150 puede llevar a cabo operaciones de decodificación de entropía, tales como operaciones de decodificación de CABAC, en elementos de sintaxis en el encabezado de segmento codificado para recuperar el encabezado de segmento.
Como parte de la extracción de los datos del segmento de las unidades de NAL del segmento codificado, la unidad de decodificación de entropía 150 puede realizar operaciones de análisis sintáctico que extraen elementos de sintaxis de las CU codificadas en los datos del segmento. Los elementos de sintaxis extraídos pueden incluir elementos de sintaxis asociados con bloques de coeficientes de transformación. La unidad de decodificación de entropía 150 puede luego realizar operaciones de decodificación de CABAC en algunos de los elementos de sintaxis.
Después de que la unidad de decodificación de entropía 150 lleva a cabo una operación de análisis sintáctico en una CU no dividida, el decodificador de video 30 puede realizar una operación de reconstrucción en la CU no dividida. Para realizar la operación de reconstrucción en una CU no dividida, el decodificador de video 30 puede realizar una operación de reconstrucción en cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el decodificador de video 30 puede reconstruir un bloque de video residual asociado con la CU.
Como parte de llevar a cabo una operación de reconstrucción en una TU, la unidad de cuantificación inversa 154 puede cuantificar inversamente, por ejemplo, descuantificar, un bloque de coeficiente de transformación asociado con la TU. La unidad de cuantificación inversa 154 puede cuantificar inversamente el bloque de coeficiente de transformación de una manera similar a los procesos de cuantificación inversa propuestos para HEVC o definidos por el estándar de decodificación H.264. La unidad de cuantificación inversa 154 puede utilizar un parámetro de cuantificación de QP calculado por el codificador de video 20 para una CU del bloque de coeficiente de transformación para determinar un grado de cuantificación y, de igual forma, un grado de cuantificación inversa para aplicar la unidad de cuantificación inversa 154.
Después de que la unidad de cuantificación inversa 154 cuantifique inversamente un bloque de coeficiente de transformación, la unidad de transformación inversa 156 puede generar un bloque de video residual para la TU asociada con el bloque de coeficiente de transformación. La unidad de transformación inversa 156 puede aplicar una transformación inversa al bloque de coeficiente de transformación para generar el bloque de video residual para la TU. Por ejemplo, la unidad de transformación inversa 156 puede aplicar una DCT inversa, una transformación entera inversa, una transformación Karhunen-Loeve inversa (KLT), una transformación rotacional inversa, una transformación direccional inversa u otra transformación inversa al bloque de coeficientes de transformación. En algunos ejemplos, la unidad de transformación inversa 156 puede determinar una transformación inversa para aplicar al bloque de coeficiente de transformación basándose en la señalización del codificador de video 20. En tales ejemplos, la unidad de transformación inversa 156 puede determinar la transformación inversa basándose en una transformación señalizada en el nodo raíz de un árbol cuaternario para un bloque de árbol asociado con el bloque de coeficiente de transformación. En otros ejemplos, la unidad de transformación inversa 156 puede inferir la transformación inversa a partir de una o más características de codificación, tales como tamaño de bloque, modo de codificación o similares. En algunos ejemplos, la unidad de transformación inversa 156 puede aplicar una transformación inversa en cascada.
En algunos ejemplos, la unidad de compensación de movimiento 162 puede refinar el bloque de video predicho de una PU realizando una interpolación basada en filtros de interpolación. Los identificadores de los filtros de interpolación que se utilizarán para la compensación de movimiento con precisión de submuestra pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 162 puede usar los mismos filtros de interpolación usados por el codificador de video 20 durante la generación del bloque de video predicho de la PU para calcular valores interpolados para muestras subenteras de un bloque de referencia. La unidad de compensación de movimiento 162 puede determinar los filtros de interpolación usados por el codificador de video 20 según la información de sintaxis recibida y usar los filtros de interpolación para producir el bloque de video predicho.
Si se codifica una PU usando intrapredicción, la unidad de intrapredicción 164 puede realizar intrapredicción para generar un bloque de video predicho para la PU. Por ejemplo, la unidad de intrapredicción 164 puede determinar un modo de intrapredicción para la PU basándose en elementos de sintaxis en el flujo de bits. El flujo de bits puede incluir elementos de sintaxis que la unidad de intrapredicción 164 puede utilizar para determinar el modo de intrapredicción de la PU.
En algunos casos, los elementos de sintaxis pueden indicar que la unidad de intrapredicción 164 va a utilizar el modo de intrapredicción de otra PU para determinar el modo de intrapredicción de la PU actual. Por ejemplo, puede ser probable que el modo de intrapredicción de la PU actual sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de predicción intra de la PU vecina puede ser el modo más probable para la PU actual. Por lo tanto, en este ejemplo, el flujo de bits puede incluir un pequeño elemento de sintaxis que indica que el modo de intrapredicción de la PU es el mismo que el modo de intrapredicción de la PU vecina. La unidad de intrapredicción 164 puede luego utilizar el modo de intrapredicción para generar datos de predicción (por ejemplo, muestras predichas) para la PU basándose en los bloques de video de las PU espacialmente vecinas.
Como se analizó anteriormente, el decodificador de video 30 también puede incluir una unidad de predicción intercapa 166. La unidad de predicción intercapa 166 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en el EL) usando una o más capas diferentes que están disponibles en la codificación de video escalable (por ejemplo, una BL o una RL). Tal predicción puede denominarse predicción intercapa. La unidad de predicción intercapa 166 utiliza métodos de predicción para reducir la redundancia intercapa, mejorando así la eficiencia de la codificación y reduciendo los requisitos de recursos computacionales. Algunos ejemplos de predicción intercapa incluyen la predicción intercapa e intracapa, la predicción del movimiento intercapa y la predicción residual intercapa. La predicción intercapa utiliza la reconstrucción de bloques coubicados en la BL para predecir el bloque actual en la EL. La predicción de movimiento intercapa utiliza información de movimiento de la BL para predecir el movimiento en la EL. La predicción residual intercapa utiliza el residuo de la BL para predecir el residuo de la EL. Cada uno de los esquemas de predicción intercapa se analiza a continuación con mayor detalle.
La unidad de reconstrucción 158 puede usar los bloques de video residuales asociados con las TU de una CU y los bloques de video predichos de las PU de la CU, por ejemplo, datos de intrapredicción o datos de interpredicción, según corresponda, para reconstruir el bloque de video de la Cu . Por lo tanto, el decodificador de video 30 puede generar un bloque de video predicho y un bloque de video residual basado en elementos de sintaxis en el flujo de bits y puede generar un bloque de video basado en el bloque de video predicho y el bloque de video residual.
Después de que la unidad de reconstrucción 158 reconstruye el bloque de video de la CU, la unidad de filtro 159 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con la CU. Después de que la unidad de filtro 159 realiza una operación de desbloqueo para reducir los artefactos de bloqueo asociados con la CU, el decodificador de video 30 puede almacenar el bloque de video de la CU en la memoria intermediaria de imágenes decodificadas 160. La memoria intermediaria de imágenes decodificadas 160 puede proporcionar imágenes de referencia para compensación de movimiento posterior, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1A o 1B. Por ejemplo, el decodificador de video 30 puede realizar, en base a los bloques de video en la memoria intermediaria de imágenes decodificadas 160, operaciones de intrapredicción o interpredicción en PU de otras CU.
Decodificador multicapa
La figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de video de múltiples capas 33 (también denominado simplemente decodificador de video 33) que puede implementar técnicas según los aspectos descritos en la presente divulgación. El decodificador de video 33 puede configurarse para procesar tramas de video de múltiples capas, como para la codificación SHVC y multivista. Además, el decodificador de video 33 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El decodificador de video 33 incluye un decodificador de video 30A y un decodificador de video 30B, cada uno de los cuales pueden configurarse como decodificador de video 30 y puede realizar las funciones descritas anteriormente con respecto al decodificador de video 30. Además, como indica la reutilización de los números de referencia, los decodificadores video 30A y 30B pueden incluir al menos algunos de los sistemas y subsistemas como decodificador de video 30. Aunque se ilustra que el decodificador de video 33 incluye dos decodificadores de video 30A y 30B, el decodificador de video 33 no está limitado como tal y puede incluir cualquier número de capas del decodificador de video 30. En algunos ejemplos, el decodificador de video 33 puede incluir un decodificador de video 30 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede ser procesada o decodificada por un decodificador de video que incluye cinco capas de decodificador. En algunos ejemplos, el decodificador de video 33 puede incluir más capas de decodificador que tramas en una unidad de acceso. En algunos de estos casos, algunas de las capas del decodificador de video pueden estar inactivas al procesar algunas unidades de acceso.
Además de los decodificadores de video 30A y 30B, el decodificador de video 33 puede incluir una unidad de sobremuestreo 92. En algunos ejemplos, la unidad de sobremuestreo 92 puede sobremuestrear una BL de una trama de video recibida para crear una capa mejorada que se añadirá a la lista de imágenes de referencia para la trama o unidad de acceso. Esta capa mejorada se puede almacenar en la memoria intermediaria de imágenes decodificadas 160. En algunos ejemplos, la unidad de sobremuestreo 92 puede incluir algunos o todos los ejemplos descritos con respecto a la unidad de remuestreo 90 de la figura 2A. En algunos ejemplos, la unidad de sobremuestreo 92 está configurada para interpolar una capa y reorganizar, redefinir, modificar o ajustar uno o más segmentos para cumplir con un conjunto de reglas de límites de segmentos y/o reglas de exploración de tramas. En algunos casos, la unidad de sobremuestreo 92 puede ser una unidad de remuestreo configurada para sobremuestrear y/o submuestrear una capa de una trama de video recibida.
La unidad de sobremuestreo 92 puede configurarse para recibir una imagen o trama (o información de imagen asociada con la imagen) desde la memoria intermediaria de imágenes decodificadas 160 del decodificador de capa inferior (por ejemplo, el decodificador de video 30A) y para sobremuestrear la imagen (o la información de la imagen recibida). Esta imagen sobremuestreada puede luego proporcionarse a la unidad de procesamiento de predicción 152 de un decodificador de capa superior (por ejemplo, el decodificador de video 30B) configurado para decodificar una imagen en la misma unidad de acceso que el decodificador de capa inferior. En algunos casos, el decodificador de capa superior es una capa eliminada del decodificador de capa inferior. En otros casos, puede haber uno o más decodificadores de capa superior entre el decodificador de capa 0 y el decodificador de capa 1 de la figura 3B.
En algunos casos, la unidad de sobremuestreo 92 puede ignorarse u omitirse. En tales casos, la imagen de la memoria intermediaria de imágenes decodificadas 160 del decodificador de video 30A puede proporcionarse directamente, o al menos sin proporcionarse a la unidad de sobremuestreo 92, a la unidad de procesamiento de predicción 152 del decodificador de video 30B. Por ejemplo, si los datos de video proporcionados al decodificador video 30B y la imagen de referencia de la memoria intermediaria de imágenes decodificadas 160 del decodificador video 30A son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al decodificador de video 30B sin sobremuestreo. Además, en algunas ejemplos, la unidad de sobremuestreo puede 92 ser una unidad 90 de remuestreo configurada para sobremuestrear o submuestrear una imagen de referencia recibida desde la memoria intermediaria de imágenes decodificadas 160 del decodificador video 30A.
Como se ilustra en la figura 3B, el decodificador 33 de video puede incluir además un demultiplexor 99, o demux. El demux 99 puede dividir un flujo de bits de video codificado en múltiples flujos de bits, proporcionándose cada flujo de bits de salida del demux 99 a un decodificador de video diferente 30A y 30B. Los múltiples flujos de bits pueden crearse recibiendo un flujo de bits y cada uno de los decodificadores video 30A y 30B recibe una parte del flujo de bits en un momento determinado. Mientras que en algunos casos los bits del flujo de bits recibidos en el demux 99 pueden alternarse un bit a la vez entre cada uno de los decodificadores de video (por ejemplo, decodificadores de video 30A y 30B en el ejemplo de la figura 3B), en muchos casos el flujo de bits se divide de manera diferente. Por ejemplo, el flujo de bits puede dividirse alternando qué decodificador de video recibe el flujo de bits un bloque a la vez. En otro ejemplo, el flujo de bits puede dividirse por una relación de bloques que no sea 1:1 para cada uno de los decodificadores video 30A y 30B. Por ejemplo, se pueden proporcionar dos bloques al decodificador video 30B para cada bloque proporcionado al decodificador de video 30A. En algunos ejemplos, la división del flujo de bits por el demux 99 puede estar preprogramada. En otros ejemplos, el demux 99 puede dividir el flujo de bits basándose en una señal de control recibida desde un sistema externo al decodificador de video 33, tal como desde un procesador en un dispositivo de destino que incluye el dispositivo de destino 14. La señal de control puede generarse en base a la resolución o tasa de bits de un video desde la interfaz de entrada 28, en base a un ancho de banda del enlace 16, en base a una suscripción asociada con un usuario (por ejemplo, una suscripción paga frente a una suscripción gratuita), o en base a cualquier otro factor para determinar una resolución obtenible por el decodificador de video 33.
Ancho de banda y consumo de energía en los dispositivos de grabación de video
Como se mencionó anteriormente, en un dispositivo de video que tiene capacidades de grabación de video (por ejemplo, un teléfono inteligente, una cámara de grabación de video, etc.), luego de que la cámara del dispositivo de video grabe los datos del video, los datos de video grabados son típicamente proporcionados (i) a un codificador para que los datos de video grabados se conviertan en flujo de bits codificados (es decir, para la compresión antes del almacenamiento y/o transmisión) y (ii) a una pantalla para que pueda mostrarse una vista previa de los datos de video grabados al usuario. El usuario puede usar la vista previa que se muestra en la pantalla para apuntar la cámara hacia el objeto de grabación deseado y asegurarse de que el objeto de grabación deseado está correctamente posicionado dentro del campo de visión de la cámara.
Sin embargo, debido a que mejora la calidad de los datos de video grabados por el dispositivo de video, el tamaño de los datos grabados puede también aumentar y provoca que el procesamiento realizado por el dispositivo de video para generar y mostrar una vista previa de los datos de video grabados consuma más ancho de banda y energía. Por ejemplo, generar y mostrar una vista previa de datos de video de alta definición (HD) y ultra alta definición (UHD) pueden requerir que se consuma una gran cantidad de ancho de banda y energía. Por ejemplo, en cualquier sistema de video (por ejemplo, un sistema de cámaras de video, un sistema de codificación, un sistema de decodificación, etc.) puede haber una memoria y un procesador gráfico. Cuando la memoria se comunica con el procesador gráfico, una parte del ancho de banda del bus (por ejemplo, bus de interfaz extensible avanzada (AXI)) se consume entre la memoria y el procesador gráfico. Además, una cierta cantidad de energía se consume mientras se leen y/o escriben los datos de video en la memoria. En los casos de uso de video de datos de video de 1080p, 4K, etc., se consume una gran cantidad de ancho de banda y energía.
Por lo tanto, se desea un método mejorado para el procesamiento de los datos de video que pueden reducir el ancho de banda y el consumo energía en los dispositivos de grabación de video.
Ejemplos de dispositivos de video
Un dispositivo de video puede incluir diferentes componentes que se comunican entre sí para grabar datos de video, grabar datos de audio, generar estadísticas de video basadas en los datos de video y audio grabados, generar una vista previa basada en las estadísticas de los videos, etc. En algunos ejemplos, el codificador y el procesador de vista previa pueden ser componentes individuales. En otros ejemplos, el codificador y el procesador de vista previa pueden implementarse como un único componente que puede codificar los datos de video y audio grabados y también procesar los datos de video grabados de modo que los datos de video procesados tengan una menor velocidad de trama que los datos de video grabados. Los datos de video procesados pueden además procesarse mediante un post­ procesador de cámara (CPP), una unidad de procesamiento gráfico (GPU), y/o un procesador de visualización multimedia (MDP) para que se pueda generar una vista previa y mostrarla en la pantalla del dispositivo de video. En algunos ejemplos, el dispositivo de video puede ser cualquiera entre un ordenador, una notebook, un ordenador portátil, una tableta, un decodificador, un aparato telefónico con microteléfono, un teléfono inteligente, un teclado inteligente, un televisor, una cámara, un dispositivo de visualización, un dispositivo de grabación de video, una cámara de grabación de video, un dispositivo de videotelefonía, un reproductor de medios digitales, una consola de videojuegos y un ordenador en el automóvil.
La figura 4 es un diagrama de bloques que ilustra un ejemplo del dispositivo de video 400 que puede utilizar las técnicas según los aspectos descritos en la presente divulgación. En algunos ejemplos, el dispositivo de video 400 puede ser cualquiera entre un ordenador, una notebook, un ordenador portátil, una tableta, un decodificador, un aparato telefónico con microteléfono, un teléfono inteligente, un teclado inteligente, un televisor, una cámara, un dispositivo de visualización, un dispositivo de grabación de video, una cámara de grabación de video, un dispositivo de videotelefonía, un reproductor de medios digitales, una consola de videojuegos y un ordenador en el automóvil. Como se muestra en la figura 4, el dispositivo de video 400 incluye una cámara, un codificador 420 que incluye un decodificador 430, un CPP 440, una g Pu /MDP 450 y una pantalla 460. La cámara 410 puede grabar datos de video (por ejemplo, a 30 fps) y proporcionar los datos de video grabados al codificador 420 y al CPP 440. Se puede hacer referencia a la ruta de la cámara 410 al codificador 420 como la ruta del codificador, y se puede hacer referencia a la ruta de la cámara 410 al CPP 440, GPU/MDP 450 y a la pantalla 460 como la ruta de la vista previa. Los datos de video proporcionados al codificador 420 y al CPP 440 pueden tener la misma velocidad de trama a la que la cámara 410 está configurada para grabar datos de video (por ejemplo, 30 fps en el ejemplo de la figura 4). Como se muestra en la figura 4, el codificador 420 genera un flujo de bits codificado basado en los datos de video recibidos de la cámara 410, y el decodificador 430 genera una salida reconstruida (por ejemplo, al decodificar el flujo de bits codificado)
El CPP 440 puede realizar cierto procesamiento en los datos de video recibidos de la cámara 410 antes de enviar los datos de video procesados a la Gp U/MDP 450. La GPU/MDP 450 puede comprender una GPU, un MDP, o ambos. Por ejemplo, el CPP 440 puede remover una o más tramas de los datos de video. En un ejemplo, el CPP 440 remueve la sexta trama de los datos de video. En dicho ejemplo, si los datos de video son grabados a 30 fps, los datos de video procesados del CPP 540 al GPU/MDP 450 tienen una velocidad de trama de 25 fps. Se puede hacer referencia a la velocidad de trama de los datos de video procesados como velocidad reducida de trama. En otro ejemplo, el CPP 440 remueve cada N trama de los datos de video, donde N es un número entero mayor que 1 (por ejemplo, 2, 3, 4, 5, 6, 7, 8, 9, 10, etc.) Por lo tanto, la entrada al CPP 4440 puede tener una primera velocidad de trama, pero la salida del CPP 440 puede tener una segunda velocidad de trama que es inferior a la primera velocidad de trama. Reducir la velocidad de trama de los datos de video para ser usada para generar la vista previa puede reducir el ancho de banda AXI así como también el procesamiento realizado por los componentes siguientes en la ruta de la vista previa (por ejemplo, GPU/MDP 450, pantalla 460, y/u otros componentes no ilustrados en la figura 4). Como consecuencia, también puede reducirse el consumo de energía en la ruta de vista previa. El proceso para reducir la velocidad de trama de los datos de video se describe en mayor detalle a continuación con referencia a la figura 6.
La GPU/MDP 450 puede componer las diferentes capas que necesitan mostrarse en base a los datos de video procesados. Por ejemplo, en una aplicación de cámara de grabación de video en un dispositivo móvil, varios botones se muestran en la pantalla para comenzar y pausar la grabación, para permitir el flash, para indicar la vida de la batería, etc. La GPU/MDP 450 puede componer las diferentes capas de información y unirlas en una única pantalla y renderizar los datos de video compuestos en la pantalla 460.
La pantalla 460 puede ser una pantalla sincrónica (o "pantalla no inteligente") o una pantalla asincrónica (o "pantalla inteligente"). Una pantalla no inteligente puede requiere que el sistema envíe datos de video continuos (por ejemplo, todos los píxeles que componen una trama completa para cada una de las tramas). Por el otro lado, una pantalla inteligente puede requerir que el sistema solo envíe aquellas partes de los datos de video que han cambiado (por ejemplo, un subconjunto de tramas en los datos de video y/o partes de cada trama). Una pantalla no inteligente simplemente leería los datos de video procesados que tienen una velocidad de trama reducida hasta la velocidad especificada de trama de la pantalla (por ejemple, 60 fps en el ejemplo de la figura 4). Una pantalla inteligente leería los datos de video procesados a la misma velocidad de trama, y realizaría el procesamiento adicional para mostrar los datos de video a la velocidad especificada de trama (por ejemplo, 60 fps.)
La figura 5 es un diagrama de bloques que ilustra un ejemplo del dispositivo de video 500 que puede utilizar las técnicas según los aspectos descritos en la presente divulgación. En algunas realizaciones, el dispositivo de video 500 es cualquiera entre un ordenador, una notebook, un ordenador portátil, una tableta, un decodificador, un aparato telefónico con microteléfono, un teléfono inteligente, un teclado inteligente, un televisor, una cámara, un dispositivo de visualización, un dispositivo de grabación de video, una cámara de grabación de video, un dispositivo de videotelefonía, un reproductor de medios digitales, una consola de videojuegos y un ordenador en el automóvil. Como se muestra en la figura 5, el dispositivo de video 500 incluye una cámara 510 , un codificador 520 que incluye un decodificador 530, un CPP 540, una GPU/MDP 550, una pantalla 560 y un procesador de vista previa 570. En el ejemplo de la figura 5, el procesador de vista previa 570 realiza algunos de los procesamientos realizados por el CPP 440 en la figura 4. En el ejemplo de la figura 5, el codificador 520 y el procesador de vista previa 570 se muestran como componentes individuales. En otra realización, el codificador 520 y el procesador de vista previa 570 pueden implementarse como un único componente que codifica los datos de video grabados y también procesa los datos de video grabados de modo que los datos de video procesados tengan una menor velocidad de trama que la velocidad original de trama a la que los datos de video se grabaron. El procesador de vista previa 570 se implementa como un componente hardware o software.
La cámara 510 graba datos de video (por ejemplo, a 30 fps) y proporciona los datos de video grabados al codificador 520 y al procesador de vista previa 570. Se hace referencia a la ruta de la cámara 510 al codificador 520 como la ruta del codificador, y se hace referencia a la ruta de la cámara 510 al procesador de vista previa 570, CPP 540, GPU/MDP 550 y a la pantalla 560 como la ruta de la vista previa. Los datos de video proporcionados al codificador 520 y al procesador de vista previa 570 pueden tener la misma velocidad de trama a la que la cámara 510 está configurada para grabar datos de video (por ejemplo, 30 fps en el ejemplo de la figura 5). Como se muestra en la figura 5, el codificador 520 genera un flujo de bits codificado basado en los datos de video recibidos de la cámara 510, y el decodificador 530 genera una salida reconstruida (por ejemplo, al decodificar el flujo de bits codificado) El codificador 520 proporciona además estadísticas de codificación para el procesador de vista previa 570. Las estadísticas de codificación pueden incluir cualquier información generada durante el proceso de codificación de los datos de video grabados en un flujo de bits y/o de decodificación del flujo de bits codificado. Por ejemplo, las estadísticas de codificación pueden comprender bloques, macrobloques, porciones, mosaicos u otras unidades de codificación intracodificadas, intercodificadas y/u omitidas dentro de cada trama. Por ejemplo, los bloques pueden ser en los tamaños de 4x4, 16x16, 8x8, 8x16, 16x8 y/o cualquier otro tamaño. Las estadísticas de codificación también pueden comprender una indicación de la región de interés de cada trama, si hubiera. Las estadísticas de codificación también pueden comprender la información de color de cada trama en los datos de video grabados. La información de color puede comprender datos YUB, datos RBF, datos luma y/o datos cromáticos. Las estadísticas de codificación también pueden comprender información de detección de actividad por voz (VAD). La información de VAD puede indicar si la voz humana está presente en cada trama. Las estadísticas de codificación que pueden ser generadas por el dispositivo de video no están limitados a aquellas escritas en el presente, y pueden incluir cualquier otra información que pueda utilizarse para procesar los datos de video grabados.
El procesador de vista previa 570 puede realizar cierto procesamiento en los datos de video recibidos de la cámara 510 antes de enviar los datos de video procesados al CPP 540. Por ejemplo, el procesador de vista previa 570 remueve una o más tramas de los datos de video. En una realización, el procesador de vista previa 570 remueve una o más tramas de los datos de video en base a las estadísticas de codificación recibidas del codificador 520. Aunque no está ilustrado, en lugar de las estadísticas de codificación, el procesador de vista previa 570 puede recibir del codificador 520 (o acceder de otro modo) indicaciones de las tramas que deben ser eliminadas de los datos de video. En dicho caso, el procesador de vista previa 570 puede eliminar las tramas que se indica que deben eliminarse de los datos de video. Por lo tanto, la entrada al procesador de vista previa 570 puede tener una primera velocidad de trama, pero la salida del procesador de vista previa 570 puede tener una segunda velocidad de trama que es inferior a la primera velocidad de trama. Reducir la velocidad de trama de los datos de video para ser usada para generar la vista previa puede reducir el ancho de banda AXI así como también el procesamiento realizado por los componentes siguientes en la ruta de la vista previa (por ejemplo, CPP 540, GPU/MDP 550, pantalla 560, y/u otros componentes no ilustrados en la figura 5). Como consecuencia, también puede reducirse el consumo de energía en la ruta de vista previa. El proceso para reducir la velocidad de trama de los datos de video se describe en mayor detalle a continuación con referencia a la figura 7.
La GPU/MDP 550 puede componer las diferentes capas que necesitan mostrarse en base a los datos de video procesados. Por ejemplo, en una aplicación de cámara de grabación de video en un dispositivo móvil, varios botones se muestran en la pantalla para comenzar y pausar la grabación, para permitir el flash, para indicar la vida de la batería, etc. La GPU/MDP 550 puede componer las diferentes capas de información y unirlas en una única pantalla y renderizar los datos de video compuestos en la pantalla 560. La g Pu /MDP 550 puede comprender una GPU, un MDP, o ambos.
La pantalla 560 puede ser una pantalla sincrónica (o "pantalla no inteligente") o una pantalla asincrónica (o "pantalla inteligente"). Una pantalla no inteligente puede requiere que el sistema envíe datos de video continuos (por ejemplo, todos los píxeles que componen una trama completa para cada una de las tramas). Por el otro lado, una pantalla inteligente puede requerir que el sistema solo envíe aquellas partes de los datos de video que han cambiado (por ejemplo, un subconjunto de tramas en los datos de video y/o partes de cada trama). Una pantalla no inteligente simplemente leería los datos de video procesados que tienen una velocidad de trama reducida hasta la velocidad especificada de trama de la pantalla (por ejemple, 60 fps en el ejemplo de la figura 5). Una pantalla inteligente leería los datos de video procesados a la misma velocidad de trama, y realizaría el procesamiento adicional para mostrar los datos de video a la velocidad especificada de trama (por ejemplo, 60 fps.)
Ejemplos de procesamiento de datos de video
La figura 6 es un diagrama de flujo que ilustra un método 600 para la codificación de información de video, según una realización de la presente divulgación. Algunos o todas las etapas ilustradas en la figura 6 puede implementarse por cualquiera de los dispositivos ilustrados en las figuras 1-5 o uno o más componentes de los mismos (por ejemplo, el procesador de vista previa de la figura 5). Por conveniencia, el método 600 se describe como realizado por un dispositivo de video, que puede comprender un codificador, un decodificador y/u otro componente.
El método 600 comienza en el bloque 601. En el bloque 605, el dispositivo de video graba datos de video a una primera velocidad de trama. En una realización, la primera velocidad de trama es 30 fps. En algunas realizaciones, si un componente del dispositivo de video está llevando a cabo el método 60 (por ejemplo, un procesador en el dispositivo de video), dicho componente puede causar que los datos de video sean grabados a la primera velocidad de trama, por ejemplo, al indicar a la cámara del dispositivo de video que grabe los datos de video. Los datos de video grabados pueden almacenarse en un búfer de video y ser procesados por diferentes componentes del dispositivo de video. Por ejemplo, los datos de video grabados pueden ser procesados por un programador (por ejemplo, codificador o decodificador) y comprimidos en un flujo de bits de video para almacenamiento y/o transmisión. Los datos de video grabados pueden procesarse mediante un CPP, una GPU y/o un MDP para que una vista previa generada basada en los datos de video grabados pueda mostrarse en una pantalla del dispositivo de video.
En el bloque 610, el dispositivo de video procesa los datos de video grabados mediante la eliminación de una o más tramas de los datos de video grabados de modo que los datos de video procesados tienen una segunda velocidad de trama que es inferior a la primera velocidad de trama. Por ejemplo, la segunda velocidad de trama puede ser 25 fps. En otro ejemplo, la segunda velocidad de trama puede ser cualquier velocidad de trama que sea inferior a la velocidad de trama a la que se graban los datos de video (por ejemplo, 30 fps). En una realización, una o más tramas eliminadas de los datos de video grabados comprenden cada seis tramas en los datos de video grabados. Por ejemplo, si los datos de video se graban a 30 fps, y el dispositivo de video procesa los datos de video grabados de modo que cada sexta tramas en los datos de video grabados se elimina, los datos de video procesados pueden tener una velocidad de trama de 25 fps. En otra realización, la una o más tramas removidas de los datos de video grabados comprenden cada quinta trama, cada séptima trama o cualquier N trama (en donde N es un número entero mayor que cero) en los datos de video grabados.
En el bloque 615, el dispositivo de video genera una vista previa de los datos de video grabados basada en los datos de video procesados. Por ejemplo, incluso si los datos de video se graban a 30 fps, si el dispositivo de video procesado tiene una velocidad de trama de 25 fps, el dispositivo de video puede generar la vista previa en base a los datos de video procesados que tienen una velocidad de trama de 25 fps. En el bloque 620, el dispositivo de video genera una vista previa generada de los datos de video grabados, por ejemplo, mediante la pantalla del dispositivo de video. El método 600 finaliza en 625.
Como se comentó anteriormente, uno o más componentes de los dispositivos de video ilustrados en las figuras 1-5 pueden utilizarse para implementar cualquiera de las técnicas comentadas en la presente divulgación, como hacer que los datos de video se graben en la primera velocidad de trama, procesar los datos de video grabados mediante la eliminación de una o más tramas de los datos de video grabados y generar la vista previa en base a los datos de video procesados.
En el método 600, uno o más de los bloques mostrados en la figura 6 pueden removerse (por ejemplo, no ejecutarse) o modificarse, puede cambiarse el orden en que se ejecuta el método, y/o pueden añadirse uno o más bloques adicionales. Por ejemplo, en lugar de provocar que los datos de video sean grabados en el bloque 605, el dispositivo de video puede recibir o de otro modo acceder a los datos de video que ya han sido grabados y procesar dichos datos de video como se describe en el bloque 610. Por lo tanto, las realizaciones de la presente divulgación no están limitadas al ejemplo mostrado en la figura 6, y otras variaciones pueden implementarse sin despegarse del espíritu de la presente divulgación.
La figura 7 es un diagrama de flujo que ilustra un método 700 para la codificación de información de video, según una realización de la presente divulgación. Las etapas ilustradas en la figura 7 puede implementarse por cualquiera de los dispositivos ilustrados en las figuras 1-5 o uno o más componentes de los mismos (por ejemplo, el procesador de vista previa de la figura 5). Por conveniencia, el método 700 se describe como realizado por un dispositivo de video, que puede comprender un codificador, un decodificador y/u otro componente.
El método 700 comienza en el bloque 701. En el bloque 705, el dispositivo de video graba datos de video a una primera velocidad de trama. En una realización, la primera velocidad de trama es 30 fps. En algunas realizaciones, si un componente del dispositivo de video está llevando a cabo el método 60 (por ejemplo, un procesador en el dispositivo de video), dicho componente puede causar que los datos de video sean grabados a la primera velocidad de trama, por ejemplo, al indicar a la cámara del dispositivo de video que grabe los datos de video. Los datos de video grabados pueden almacenarse en un búfer de video y ser procesados por diferentes componentes del dispositivo de video. Por ejemplo, los datos de video grabados pueden ser procesados por un programador (por ejemplo, codificador o decodificador) y comprimidos en un flujo de bits de video para almacenamiento y/o transmisión. Los datos de video grabados pueden procesarse mediante un post-procesador de cámara (CPP), una unidad de procesamiento gráfico (GPU) y/o un procesador de visualización multimedia (MDP) para que una vista previa generada basada en los datos de video grabados pueda mostrarse en una pantalla del dispositivo de video.
En el bloque 710, el dispositivo de video genera estadísticas de codificación basadas en los datos de video grabados. Las estadísticas de codificación pueden incluir cualquier información generada durante el proceso de codificación de los datos de video grabados en un flujo de bits y/o de decodificación del flujo de bits codificado. Por ejemplo, las estadísticas de codificación pueden comprender bloques, macrobloques, porciones, mosaicos u otras unidades de codificación intracodificadas, intercodificadas y/u omitidas dentro de cada trama. Por ejemplo, los bloques pueden ser en los tamaños de 4x4, 16x16, 8x8, 8x16, 16x8 y/o cualquier otro tamaño. Las estadísticas de codificación también pueden comprender una indicación de la región de interés de cada trama, si hubiera. Las estadísticas de codificación también pueden comprender la información de color de cada trama en los datos de video grabados. La información de color puede comprender datos YUB, datos RBF, datos luma y/o datos cromáticos. Las estadísticas de codificación también pueden comprender información de detección de actividad por voz (VAD). La información de VAD puede indicar si la voz humana está presente en cada trama. Las estadísticas de codificación que pueden ser generadas por el dispositivo de video no están limitados a aquellas escritas en el presente, y pueden incluir cualquier otra información que pueda utilizarse para procesar los datos de video grabados.
En el bloque 715, el dispositivo de video procesa los datos de video grabados mediante la eliminación de una o más tramas de los datos de video grabados de modo que los datos de video procesados tienen una segunda velocidad de trama que es inferior a la primera velocidad de trama. Por ejemplo, la segunda velocidad de trama puede ser 25 fps. En otro ejemplo, la segunda velocidad de trama puede ser cualquier velocidad de trama que sea inferior a la velocidad de trama a la que se graban los datos de video (por ejemplo, 30 fps). En una realización, una o más tramas eliminadas de los datos de video grabados comprenden cada seis tramas en los datos de video grabados. Por ejemplo, si los datos de video se graban a 30 fps, y el dispositivo de video procesa los datos de video grabados de modo que cada sexta tramas en los datos de video grabados se elimina, los datos de video procesados pueden tener una velocidad de trama de 25 fps. En otra realización, la una o más tramas removidas de los datos de video grabados comprenden cada quinta trama, cada séptima trama o cualquier N trama (en donde N es un número entero mayor que cero) en los datos de video grabados.
En el bloque 720, el dispositivo de video genera una vista previa basada en los datos de video procesados. Por ejemplo, incluso si los datos de video se graban a 30 fps, si el dispositivo de video procesado tiene una velocidad de trama de 25 fps, el dispositivo de video puede generar la vista previa en base a los datos de video procesados que tienen una velocidad de trama de 25 fps. En el bloque 725, el dispositivo de video genera una vista previa generada de los datos de video grabados, por ejemplo, mediante la pantalla del dispositivo de video. El método 700 finaliza en 730.
Como se comentó anteriormente, uno o más componentes de los dispositivos de video ilustrados en las figuras 1-5 pueden utilizarse para implementar cualquiera de las técnicas comentadas en la presente divulgación, como hacer que los datos de video se graben en la primera velocidad de trama, generar las estadísticas de codificación en base a los datos de video grabados, procesar los datos de video grabados mediante la eliminación de una o más tramas de los datos de video grabados en base a las estadísticas de codificación y generar la vista previa en base a los datos de video procesados.
En el método 700, uno o más de los bloques mostrados en la figura 7 pueden removerse (por ejemplo, no ejecutarse) o modificarse, puede cambiarse el orden en que se ejecuta el método, y/o pueden añadirse uno o más bloques adicionales. Por ejemplo, en lugar de provocar que los datos de video sean grabados en el bloque 705, el dispositivo de video puede recibir o de otro modo acceder a los datos de video que ya han sido grabados. En otro ejemplo, en lugar de generar las estadísticas de codificación en el bloque 710, el dispositivo de video (por ejemplo, el procesador de vista previa que se muestra en la figura 5) puede recibir o de otro modo acceder a las estadísticas de codificación generadas por otro componente (por ejemplo, un codificador) y utilizar las estadísticas de codificación para procesar los datos de video grabados en el bloque 715.
En otra realización, en lugar de procesar los datos de videos grabados en base a las estadísticas de codificación en el bloque 715, el dispositivo de video (por ejemplo, el procesador de vista previa que se muestra en la figura 5) puede recibir o de otro modo acceder a las indicaciones acerca de qué tramas quitar de los datos de video grabados y procesar los datos de video grabados mediante la eliminación de las tramas indicadas de los datos de video grabados en el bloque 715. Por ejemplo, el programador (por ejemplo, el codificador o decodificador) puede especificar valores de peso de macrobloques (MB) para diferentes tipos de macrobloques en los datos de video. En una realización, el valor de peso es mayor para los tipos MB que son menos importantes (por ejemplo, pueden eliminarse sin afectar significativamente la calidad de la vista previa). Por ejemplo, un valor de peso de 16 puede asignarse para omitir MB, 14 para P16316 MB, 13 para P8x8 MB, P8316 MB, y P16x8 MB, 10 para P4x4 MB, 8 para 116x16 MB y 7 para 14x4 MB. A pesar de que los valores numéricos específicos están asignados a los MBs para fines ilustrativos, pueden asignarse otros valores a uno o más de los MB u otras unidades de codificación no descritas en el presente documento. Luego, para cada trama, se calcula un valor de peso de la trama (por ejemplo, por el codificador o el procesador de vista previa) sumando todos los valores de peso de los MB de todos los MB de la trama. Por ejemplo, si una trama dada tenía 20 MBs omitidos, 60 P16316 MBs, 100 116x16 MBs y 120 14x4 MBs, el peso total calculado para la trama dada sería 20*16 60*14 100*8 120*7 = 320 840 800 840 = 2800. En algunas realizaciones, el procesador de vista previa realiza este cálculo en base a las estadísticas de codificación provistas por el programador. En algunas realizaciones, el programador realiza este cálculo en base a las estadísticas de codificación generadas y proporciona el resultado del cálculo al procesador de vista previa. En algunas realizaciones, el peso calculado de la trama puede compararse con un valor umbral para determinar si se deja caer o mantiene la trama. En otras realizaciones, una media móvil de los pesos de las tramas de un número de tramas sucesivas (por ejemplo, cinco tramas) puede compararse con un valor umbral, y el procesador de vista previa puede quitar la trama actual si la media móvil está por encima del valor umbral (o por debajo, dependiendo de cómo se calculen los valores de peso). En algunas realizaciones, se puede añadir una restricción de que no se pueden eliminar más de una cantidad de tramas sucesivas (por ejemplo, dos tramas, tres tramas, etc.) de los datos de vídeo.
Por lo tanto, las realizaciones de la presente divulgación no están limitadas al ejemplo mostrado en la figura 7, y otras variaciones pueden implementarse sin despegarse del espíritu de la presente divulgación.
Reducción en ancho de banda y consumo de energía
Las Tablas 1 y 2 ilustran las reducciones previstas en el ancho de banda y los consumos de energía que pueden alcanzarse en los dispositivos de video ilustrados en las figuras 1-5 utilizando las técnicas descritas en el presente, se muestran.
Tabla 1. Reducción en el ancho de banda (Composición GPU Renderización MDP)
Figure imgf000024_0001
(continuación)
Figure imgf000025_0001
En el ejemplo ilustrado en la T abla 1, la reducción en ancho de banda AZI es aproximadamente 300MBps.
Tabla 2. Reducción en el consumo de energía (Composición GPU Renderización MDP)
Figure imgf000025_0002
En el ejemplo ilustrado en la Tabla 2, la reducción en el consumo de energía es aproximadamente 40MA si la velocidad de la vista previa de la trama disminuye de 30 fps a 24 fps. Una disminución adicional en la velocidad de la vista previa de la trama reduciría más el consumo de energía. Otras consideraciones
La información y las señales divulgadas en la presente invención pueden ser representadas utilizando cualquiera de una variedad de tecnologías y técnicas diferentes. Por ejemplo, los datos, instrucciones, comandos, información, señales, bits, símbolos y chips a los que se puede hacer referencia en toda la descripción anterior pueden estar representados por voltajes, corrientes, ondas electromagnéticas, campos magnéticos o partículas, campos ópticos o partículas, o cualquier combinación de los mismos.
Los diversos bloques lógicos, módulos, circuitos y pasos de algoritmo ilustrativos descritos en relación con las realizaciones divulgadas en la presente pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, diversos componentes, bloques, módulos, circuitos y pasos ilustrativos se han descrito con anterioridad generalmente en términos de su funcionalidad. Si dicha funcionalidad se implementa como hardware o software depende de la aplicación particular y las restricciones de diseño impuestas en el sistema general. Los expertos pueden implementar la funcionalidad descrita de diferentes maneras para cada aplicación en particular, pero dichas decisiones de implementación no deben interpretarse como una desviación del alcance de la presente invención.
Las técnicas descritas en la presente pueden implementarse en hardware, software, microprograma o cualquier combinación de los mismos. Dichas técnicas se pueden implementar en cualquiera de una variedad de dispositivos tales como ordenadores de uso general, dispositivos de comunicación inalámbrica o dispositivos de circuitos integrados que tienen múltiples usos, incluida la aplicación en dispositivos de comunicación inalámbrica y demás 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 un código de programa que incluye instrucciones que, cuando se ejecutan, realizan uno o más de los métodos descritos anteriormente. El medio de almacenamiento de datos legible por ordenador puede formar parte de un producto de programa informático, que puede incluir materiales de embalaje. El medio legible por ordenador puede comprender memoria o medios de almacenamiento de datos, como memoria de acceso aleatorio (RAM), como una 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 borrable eléctricamente (EEPROM), memoria rápida, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas, adicional o alternativamente, pueden realizarse al menos en parte mediante 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 que se puede acceder, leer y/o ejecutar por un ordenador, como señales u ondas propagadas.
El código del programa puede ser ejecutado por un procesador, que puede incluir uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA), u otro circuito lógico integrado o discreto equivalente. Dicho procesador puede configurarse para realizar cualquiera de las técnicas descritas en esta divulgación. Un procesador de propósito general puede ser un microprocesador, pero como alternativa, el procesador puede ser cualquier procesador convencional, controlador, microcontrolador o máquina de estado. 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 DSP o cualquier otra configuración de este tipo. Por consiguiente, el término "procesador", como se usa en la presente, puede referirse a cualquiera de las estructuras anteriores, cualquier combinación de la estructura anterior o cualquier otra estructura o aparato adecuado para la implementación de las técnicas descritas en la presente. Además, en algunos aspectos, la funcionalidad descrita en la presente puede proporcionarse dentro de módulos de software dedicados o módulos de hardware configurados para codificar y decodificar, o incorporarse en un codificadordecodificador de video combinado (CÓDEC). Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluido un microteléfono, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para llevar a cabo las técnicas divulgadas, pero no requieren necesariamente la realización de diferentes unidades de hardware. Por el contrario, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o ser proporcionadas por una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores según lo descrito con anterioridad, junto con un software y/o firmware adecuado.
Se han descrito varias realizaciones de la invención. Estas y otras realizaciones están dentro del alcance de las siguientes reivindicaciones.

Claims (13)

REIVINDICACIONES
1. Un aparato para grabar y procesar datos de video, que comprende:
una memoria;
una pantalla; y
un procesador en comunicación con la memoria y la pantalla, y configurado para:
grabar datos de video en una primera velocidad de tramas y proporcionar los datos de video en la primera velocidad de tramas a una primera ruta de procesamiento y una segunda ruta de procesamiento;
en la primera ruta del procesamiento, codificar los datos de video en la primera velocidad de trama para almacenamiento y/o transmisión; en la segunda ruta de procesamiento, remover una o más tramas de los datos de video grabados para dar datos que tienen una segunda velocidad de trama que es inferior a la primera velocidad de trama y generar una vista previa de los datos de video a mostrar por la pantalla a la segunda velocidad de trama simultáneamente con la grabación de los datos de video.
2. El aparato de la reivindicación 1, en donde remover una o más tramas de los datos de video grabados comprende remover reiterativamente una N trama de los datos de video grabados en donde N es un número entero mayor que uno.
3. El aparato de la reivindicación 2, en donde remover una o más tramas de los datos de video grabados comprende remover cada N trama de los datos de video grabados.
4. El aparato de la reivindicación 1, en donde el procesador está configurado además para:
generar estadísticas de codificación basadas al menos en parte en los datos de video grabados; y
determinar las una o más tramas a remover de los datos de video grabados basado al menos en parte en la estadísticas de codificación generadas.
5. El aparato de la reivindicación 1, en donde el procesador está configurado además para:
recibir estadísticas de codificación basadas al menos en parte en los datos de video grabados; y
determinar las una o más tramas a remover de los datos de video grabados basado al menos en parte en la estadísticas de codificación recibidas.
6. El aparato de la reivindicación 1, en donde el procesador está configurado además para:
recibir una indicación de las una o más tramas a ser removidas de los datos del video grabados; y
remover las una o más tramas indicadas a ser removidas en la indicación recibida de los datos de video grabados.
7. Un método de grabación y procesamiento de datos de vídeo, donde el método comprende:
grabar datos de video en una primera velocidad de tramas y proporcionar los datos de video en la primera velocidad de tramas a una primera ruta de procesamiento y una segunda ruta de procesamiento;
en la primera ruta de procesamiento, codificar los datos de video en la primera velocidad de trama para almacenamiento y/o transmisión;
en la segunda ruta de procesamiento, remover una o más tramas de los datos de video grabados para dar datos que tienen una segunda velocidad de trama que es inferior a la primera velocidad de trama, y generar una vista previa de los datos de video grabados a la segunda velocidad de trama; y
mostrar la vista previa generada de los datos de video grabados simultáneamente con la grabación de los datos de video.
8. El método de la reivindicación 7, en donde remover una o más tramas de los datos de video grabados comprende remover reiterativamente una N trama de los datos de video grabados en donde N es un número entero mayor que uno.
9. El método de la reivindicación 8, en donde remover una o más tramas de los datos de video grabados comprende remover cada N trama de los datos de video grabados.
10. El método según la reivindicación 7, que además comprende:
generar estadísticas de codificación basadas al menos en parte en los datos de video grabados; y
determinar las una o más tramas a remover de los datos de video grabados basado al menos en parte en la estadísticas de codificación generadas.
11. El método según la reivindicación 7, que además comprende:
recibir estadísticas de codificación basadas al menos en parte en los datos de video grabados; y
determinar las una o más tramas a remover de los datos de video grabados basado al menos en parte en la estadísticas de codificación recibidas.
12. El método según la reivindicación 7, que además comprende:
recibir una indicación de la una o más tramas a ser removidas de los datos del video grabados; y
remover las una o más tramas indicadas a ser removidas en la indicación recibida de los datos de video grabados.
13. Un medio legible por ordenador no transitorio que comprende un código que, cuando se ejecuta, hace que un aparato realice el método de cualquiera de las reivindicaciones 7 a 12.
ES16715180T 2015-03-26 2016-03-17 Dispositivo y método para procesar datos de video Active ES2905124T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/670,146 US9591254B2 (en) 2015-03-26 2015-03-26 Device and method for processing video data
PCT/US2016/022929 WO2016153932A1 (en) 2015-03-26 2016-03-17 Device and method for processing video data

Publications (1)

Publication Number Publication Date
ES2905124T3 true ES2905124T3 (es) 2022-04-07

Family

ID=55697485

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16715180T Active ES2905124T3 (es) 2015-03-26 2016-03-17 Dispositivo y método para procesar datos de video

Country Status (7)

Country Link
US (1) US9591254B2 (es)
EP (1) EP3275179B1 (es)
JP (1) JP2018514985A (es)
KR (1) KR20170131443A (es)
CN (1) CN107408400B (es)
ES (1) ES2905124T3 (es)
WO (1) WO2016153932A1 (es)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170070740A1 (en) * 2015-09-03 2017-03-09 Intel Corporation Encoding techniques for display of text and other high-frequency content
EP3343561B1 (en) * 2016-12-29 2020-06-24 Axis AB Method and system for playing back recorded video
CN106933328B (zh) * 2017-03-10 2020-04-17 Oppo广东移动通信有限公司 一种移动终端帧率的控制方法、装置及移动终端
CN106933587B (zh) * 2017-03-10 2019-12-31 Oppo广东移动通信有限公司 一种图层绘制控制方法、装置及移动终端
WO2019227352A1 (zh) * 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 飞行控制方法及飞行器
CN112740662A (zh) * 2018-09-27 2021-04-30 富士胶片株式会社 成像元件、摄像装置、图像数据输出方法及程序
CN113170218B (zh) * 2018-10-09 2023-08-01 V-诺瓦国际有限公司 具有多级增强和可调编码格式的视频信号增强解码器
CN113287318A (zh) * 2018-11-08 2021-08-20 瑞典爱立信有限公司 视频编码器和/或视频解码器中的非对称去块
CN110446069B (zh) * 2019-07-10 2021-08-06 视联动力信息技术股份有限公司 一种基于视联网终端的视频通信方法、装置及存储介质
CN111479132B (zh) * 2019-07-15 2020-12-22 广州湖森电子科技有限公司 坐席协作控制系统、坐席协作系统、控制方法及装置
WO2021249375A1 (en) 2020-06-08 2021-12-16 Beijing Bytedance Network Technology Co., Ltd. Affine prediction improvements for video coding

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5363264A (en) 1990-04-25 1994-11-08 The United States Of America As Represented By The Secretary Of The Navy Versatile digital recording system for recording high resolution video imagery
US5734419A (en) 1994-10-21 1998-03-31 Lucent Technologies Inc. Method of encoder control
US6057884A (en) * 1997-06-05 2000-05-02 General Instrument Corporation Temporal and spatial scaleable coding for video object planes
JP3866538B2 (ja) 2001-06-29 2007-01-10 株式会社東芝 動画像符号化方法及び装置
US7330181B2 (en) * 2003-10-31 2008-02-12 Sony Corporation Method and apparatus for processing an image, image display system, storage medium, and program
JP4262139B2 (ja) * 2004-06-01 2009-05-13 キヤノン株式会社 信号処理装置
JP2006352529A (ja) * 2005-06-16 2006-12-28 Olympus Corp 撮像装置
US20070238981A1 (en) 2006-03-13 2007-10-11 Bracco Imaging Spa Methods and apparatuses for recording and reviewing surgical navigation processes
US20080055318A1 (en) 2006-08-31 2008-03-06 Glen David I J Dynamic frame rate adjustment
JP4680166B2 (ja) * 2006-10-30 2011-05-11 ソニー株式会社 撮像装置および撮像方法
JP4284370B2 (ja) * 2007-03-09 2009-06-24 株式会社東芝 ビデオサーバ及びビデオ編集システム
US9565419B2 (en) 2007-04-13 2017-02-07 Ari M. Presler Digital camera system for recording, editing and visualizing images
JP2009010821A (ja) * 2007-06-29 2009-01-15 Sony Corp 撮像装置および撮像方法、記録媒体、並びに、プログラム
US8237856B2 (en) 2008-11-07 2012-08-07 Looxcie, Inc. Timeshifting video recording camera
KR20130045656A (ko) 2011-10-26 2013-05-06 삼성전자주식회사 휴대 단말기의 데이터 표시장치 및 방법
US9160912B2 (en) 2012-06-08 2015-10-13 Apple Inc. System and method for automatic image capture control in digital imaging
MY172999A (en) 2012-07-09 2019-12-18 Vid Scale Inc Codec architecture for multiple layer video coding
KR20140034574A (ko) 2012-09-12 2014-03-20 삼성전자주식회사 휴대단말기의 카메라 프리뷰 화면의 표시 방법 및 장치
US9648353B2 (en) 2013-04-04 2017-05-09 Qualcomm Incorporated Multiple base layer reference pictures for SHVC
US10212437B2 (en) * 2013-07-18 2019-02-19 Qualcomm Incorporated Device and method for scalable coding of video information
CN104469248A (zh) * 2013-09-13 2015-03-25 腾讯科技(深圳)有限公司 视频会话方法、装置、服务器及终端

Also Published As

Publication number Publication date
CN107408400A (zh) 2017-11-28
EP3275179B1 (en) 2022-01-05
EP3275179A1 (en) 2018-01-31
US20160286155A1 (en) 2016-09-29
WO2016153932A1 (en) 2016-09-29
CN107408400B (zh) 2020-01-14
US9591254B2 (en) 2017-03-07
JP2018514985A (ja) 2018-06-07
KR20170131443A (ko) 2017-11-29

Similar Documents

Publication Publication Date Title
ES2905124T3 (es) Dispositivo y método para procesar datos de video
ES2895442T3 (es) Dispositivo y método para la codificación escalable de información de video
ES2887368T3 (es) Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas
ES2795682T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2898663T3 (es) Perfil, capa, nivel para la 0-ésima capa de salida establecida en la codificación de vídeo
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
US10178403B2 (en) Reference picture list construction in intra block copy mode
ES2892479T3 (es) Modo de predicción ponderada para codificación de video escalable
ES2879635T3 (es) Vaciado de imágenes e inferencia de parámetros de búfer de imágenes decodificadas para flujos de bits multicapa
ES2778350T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2834114T3 (es) Indicación de procesamiento en paralelo en codificación de vídeo
EP3090551B1 (en) Support of base layer of a different codec in multi-layer video coding
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
ES2711954T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo basándose en codificación de vídeo de alta eficiencia
WO2014109901A2 (en) Device and method for scalable coding of video information based on high efficiency video coding
AU2012245299A1 (en) Motion vector prediction in video coding
ES2834481T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2887369T3 (es) Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa
CA2916679A1 (en) Device and method for scalable coding of video information
WO2017039890A1 (en) Channel line buffer data packing scheme for video codecs
WO2014160640A1 (en) Device and method for scalable coding of video information
WO2016144522A1 (en) Fast rate-distortion optimized quantization