BR112016023955B1 - Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador - Google Patents

Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador Download PDF

Info

Publication number
BR112016023955B1
BR112016023955B1 BR112016023955-5A BR112016023955A BR112016023955B1 BR 112016023955 B1 BR112016023955 B1 BR 112016023955B1 BR 112016023955 A BR112016023955 A BR 112016023955A BR 112016023955 B1 BR112016023955 B1 BR 112016023955B1
Authority
BR
Brazil
Prior art keywords
encoding
lagrangian
video
mode
coding
Prior art date
Application number
BR112016023955-5A
Other languages
English (en)
Other versions
BR112016023955A8 (pt
BR112016023955A2 (pt
Inventor
Vijayaraghavan Thirumalai
Rajan Laxman Joshi
Natan Haim Jacobson
Original Assignee
Qualcomm Incorporated
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 Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016023955A2 publication Critical patent/BR112016023955A2/pt
Publication of BR112016023955A8 publication Critical patent/BR112016023955A8/pt
Publication of BR112016023955B1 publication Critical patent/BR112016023955B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • 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/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation

Landscapes

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

Abstract

SISTEMA E MÉTODO PARA CÁLCULO DO PARÂMETRO DE LAGRANGE PARA COMPRESSÃO DO FLUXO DE EXIBIÇÃO (DSC). De acordo com certos aspectos, um aparelho para codificação de dados de vídeo inclui uma memória para armazenar os dados de vídeo e um processador. A memória inclui um buffer. O processador é ainda configurado para determinar os dados de vídeo a serem codificados. O processador é ainda configurado para determinar um parâmetro de Lagrange para um modo de codificação com base, pelo menos em parte, em uma taxa de bits do modo de codificação e na totalidade do buffer.

Description

CAMPO TÉCNICO
[0001] Esta descrição se refere ao campo da codificação e compressão de vídeo e, particularmente, à compressão de vídeo para transmissão através de links de exibição, tal como compressão do fluxo de exibição (DSC).
FUNDAMENTOS DA INVENÇÃO DESCRIÇÃO DA TÉCNICA RELACIONADA
[0002] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de monitores, incluindo televisores digitais, assistentes digitais pessoais (PDAs), computadores portáteis, monitores de computadores de mesa, câmeras digitais, dispositivos de gravação digital, leitores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, radiotelefones celulares ou via satélite, dispositivos de teleconferência por vídeo e outros semelhantes. Links de exibição são usados para conectar monitores a fontes apropriadas. Os requisitos de largura de banda dos links de exibição são proporcionais à resolução dos monitores e, portanto, monitores de alta resolução necessitam de links de exibição de elevada largura de banda. Alguns links de exibição não têm a largura de banda para suportar monitores de alta resolução. A compressão de vídeo pode ser utilizada para reduzir os requisitos de largura de banda, de modo que esses links de exibição de largura de banda mais baixa podem ser usados para fornecer vídeo digital a monitores de alta resolução.
[0003] Outros tentaram utilizar compressão de imagem nos dados de pixel. No entanto, tais esquemas não são, por vezes, visualmente sem perdas ou podem ser difíceis e caros de implementar em dispositivos de exibição convencionais.
[0004] A Associação de Padrões Eletrônicos de Vídeo (VESA) desenvolveu compressão do fluxo de exibição (DSC) como um padrão para compressão de vídeo de link de exibição. A técnica de compressão de vídeo de link de exibição, como DSC, deve fornecer, entre outras coisas, qualidade da imagem que seja visualmente sem perdas (isto é, boa o suficiente para que os usuários não possam dizer que a compressão está ativa). A técnica de compressão de vídeo de link de exibição também deve proporcionar um esquema que seja fácil e barato de implementar em tempo real com hardware convencional.
SUMÁRIO DA INVENÇÃO
[0005] Os sistemas, métodos e dispositivos desta invenção têm, cada um, vários aspectos inovadores, nenhum deles é o único responsável pelos atributos desejáveis aqui divulgados.
[0006] Em um aspecto, um aparelho para codificação de dados de vídeo inclui uma memória para armazenar os dados de vídeo e um processador. A memória inclui um buffer. O processador é configurado para receber os dados de vídeo a serem codificados. O processador é ainda configurado para determinar um parâmetro de Lagrange para um modo de codificação baseado, pelo menos em parte, em uma taxa de bits do modo de codificação e uma totalidade do buffer.
BREVE DESCRIÇÃO DOS DESENHOS
[0007] A FIG. 1A é um diagrama em blocos que ilustra um sistema exemplificativo de codificação e decodificação de vídeo que pode utilizar técnicas de acordo com os aspectos descritos nesta invenção.
[0008] A FIG. 1B é um diagrama em blocos que ilustra outro sistema exemplificativo de codificação e decodificação de vídeo que pode executar técnicas de acordo com os aspectos descritos nesta invenção.
[0009] A FIG. 2A é um diagrama em blocos que ilustra um exemplo de um codificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta invenção.
[0010] A FIG. 2B é um diagrama em blocos que ilustra um exemplo de um descodificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos nesta invenção.
[0011] A FIG. 3 é um fluxograma que ilustra um método para cálculo do parâmetro de Lagrange, em conformidade com os aspectos descritos nesta invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0012] De um modo geral, esta invenção se refere a técnicas para determinar um parâmetro de Lagrange no âmbito das técnicas de compressão de vídeo, tal como a compressão de fluxo de exibição (DSC). Embora certas formas de realização sejam aqui descritas no contexto do padrão DSC, um perito comum na arte apreciará que os sistemas e métodos aqui divulgados podem ser aplicáveis a qualquer padrão de codificação de vídeo apropriado. Por exemplo, formas de realização aqui divulgadas podem ser aplicáveis a um ou mais dos seguintes padrões: Setor de Normalização de Telecomunicações da União Internacional de Telecomunicações (ITU) (ITU-T) H.261, Grupo de Especialistas de Imagens em Movimento (MPEG-1) Visual da Organização Internacional para Padronização e Comissão Eletrotécnica Internacional (ISO / IEC) e pela (IEC), MPEG-2 Visual da ITU-T H.262 ou ISO / IEC, MPEG-4 Visual para ITU-T H.263, ISO / IEC, ITU-T H.264 (também conhecido como MPEG-4 AVC da ISO / IEC) e Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Além disso, as técnicas descritas na presente descrição podem se tornar parte de padrões desenvolvidos no futuro. Em outras palavras, as técnicas descritas nesta descrição podem ser aplicáveis a padrões de codificação de vídeo previamente desenvolvidas, padrões de codificação de vídeo atualmente em desenvolvimento, e futuros padrões de codificação de vídeo.
[0013] Um custo de Lagrange pode ser calculado para cada modo em DSC, considerando tanto a taxa quanto distorção como: Custo = D + À R, em que D representa a distorção associada com um modo de codificação particular, e R representa a taxa de bits correspondente. Aqui, À pode se referir a um multiplicador de Lagrange que equilibra a distorção e a taxa. O multiplicador de Lagrange (À) pode afetar a determinação do desempenho da distorção de taxa no codificador (por exemplo, decodificador). Por exemplo, um valor menor de À tende a resultar na seleção de um modo de codificação que tem distorção muito pequena, o que pode resultar em sobrecarga de buffer, se a taxa do modo de codificação selecionado é muito alta, por exemplo, em relação a outros possíveis modos de codificação. Por outro lado, um valor mais elevado de À tende a resultar na seleção de um modo de codificação que tem a taxa mínima entre os modos de codificação, o que pode afetar a qualidade da imagem reconstruída. As abordagens existentes não podem calcular adequadamente o parâmetro À, o que pode resultar em um desempenho de codificação subideal. Por exemplo, as abordagens existentes determinam o parâmetro À com base no parâmetro de quantificação (QP) e não consideram a taxa de bits e / ou totalidade do buffer. Por conseguinte, pode ser desejável calcular o parâmetro À a fim de alcançar um desempenho de codificação ideal.
[0014] A fim de abordar estes e outros desafios, as técnicas determinam o parâmetro de Lagrange com base na taxa de bits e / ou o nível de totalidade de um buffer (“totalidade do buffer”). Por exemplo, as técnicas calculam um parâmetro de regularização de Lagrange como uma função da taxa de bits de um modo de codificação e totalidade do buffer. DSC pode ter vários modos de codificação, e cada modo de codificação tem uma taxa de bits associada com o respectivo modo de codificação. As técnicas podem determinar o parâmetro de Lagrange para cada um dos modos de codificação com base na taxa de bits do modo de codificação e a totalidade do buffer. Em uma forma de realização, um primeiro parâmetro de Lagrange ou multiplicador é calculado com base na razão da taxa de bits, e um segundo parâmetro de Lagrange ou multiplicador é calculado com base na totalidade do buffer. Um parâmetro de Lagrange combinado é calculado com base no primeiro parâmetro de Lagrange e o segundo parâmetro de Lagrange (por exemplo, multiplicando ou adicionando). O valor do parâmetro de Lagrange combinado pode ser usado para determinar o custo de Lagrange para um modo de codificação. As técnicas podem comparar os custos de Lagrange para os diferentes modos de codificação e selecionar um modo de codificação apropriada com base nos respectivos custos de Lagrange, conforme apropriado.
[0015] Deste modo, as técnicas podem determinar um parâmetro de Lagrange que reflete a taxa de bits e / ou o estado do buffer (por exemplo, a totalidade do buffer), o que pode ser útil na escolha de um modo de codificação que seja apropriado para uma dada situação. Considerando-se a taxa de bits e o estado do buffer, é possível fornecer um valor do parâmetro de Lagrange mais preciso para determinar o custo de Lagrange de um modo de codificação. Custos de Lagrange mais precisos podem ajudar na seleção de um modo de codificação ideal, levando à melhor qualidade de reconstrução de imagem.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[0016] Uma imagem digital, tal como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um gravador de vídeo ou um computador, pode incluir pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem é tipicamente na casa das dezenas de milhares. Cada pixel contém, tipicamente, informações de luminância e crominância. Sem compressão, a grande quantidade de informação a ser transmitida a partir de um codificador de imagem para um decodificador de imagem tornaria impraticável a transmissão da imagem em tempo real. Para reduzir a quantidade de informação a ser transmitida, uma série de diferentes métodos de compressão, tal como padrões JPEG, MPEG e H.263, foi desenvolvida.
[0017] Padrões de codificação de vídeo incluem H.261 ITU-T, MPEG-1 Visual ISO / IEC, H.262 ITU-T ou MPEG-2 Visual ISO / IEC, H.263 ITU-T, MPEG-4 Visual ISO / IEC, H.264 ITU-T (também conhecido como MPEG-4 AVC ISO / IEC) e HEVC incluindo extensões de tais padrões.
[0018] Além disso, um padrão de codificação de vídeo, isto é, DSC, foi desenvolvido por VESA. O padrão DSC é um padrão de compressão de vídeo que pode comprimir o vídeo para transmissão através de links de exibição. À medida que a resolução dos visores aumenta, a largura de banda dos dados de vídeo necessários para conduzir os visores aumenta de forma correspondente. Alguns links de exibição podem não ter a largura de banda para transmitir todos os dados de vídeo para a exibição de tais resoluções. Assim, o padrão DSC especifica um padrão de compressão para compressão interoperável, visualmente sem perdas, através de links de exibição.
[0019] O padrão DSC é diferente de outros padrões de codificação de vídeo, como H.264 e HEVC. DSC inclui compressão intra-quadro, mas não inclui a compressão inter- quadro, o que significa que informação temporal não pode ser utilizada pelo padrão DSC na codificação dos dados de vídeo. Em contraste, outros padrões de codificação de vídeo podem empregar compressão inter-quadro em suas técnicas de codificação de vídeo.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0020] Vários aspectos dos novos sistemas, aparelhos e métodos são descritos mais completamente a seguir com referência aos desenhos anexos. Esta descrição pode, no entanto, ser realizada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta descrição. Em vez disso, estes aspectos são fornecidos para que esta descrição seja minuciosa e completa, e irão transmitir totalmente o âmbito da invenção para os especialistas na técnica. Com base nos ensinamentos aqui, um perito na arte deveria apreciar que o âmbito da descrição se destina a cobrir qualquer aspecto dos novos sistemas, aparelhos e métodos aqui descritos, se implementados independentemente de, ou combinados com, qualquer outro aspecto da presente invenção. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado utilizando qualquer número dos aspectos aqui enunciados. Além disso, o âmbito da presente invenção destina-se a abranger um aparelho ou método que seja praticado usando outra estrutura, funcionalidade, ou estrutura e funcionalidade, em adição a ou diferente dos vários aspectos da presente invenção aqui estabelecidos. Deve ser entendido que qualquer aspecto aqui descrito pode ser concretizado por um ou mais elementos de uma reivindicação.
[0021] Embora aspectos particulares sejam aqui descritos, muitas variações e permutações destes aspectos caem dentro do âmbito da invenção. Embora alguns benefícios e vantagens dos aspectos preferidos sejam mencionados, o âmbito da invenção não se destina a ser limitado aos benefícios, usos ou objetivos particulares. Em vez disso, os aspectos da presente invenção se destinam a ser amplamente aplicáveis a diferentes tecnologias sem fios, configurações do sistema, redes e protocolos de transmissão, algumas delas são ilustradas a título de exemplo nas figuras e na descrição seguinte dos aspectos preferidos. A descrição detalhada e os desenhos são meramente ilustrativos da invenção, em vez de limitantes, o âmbito da descrição sendo definido pelas reivindicações anexas e seus equivalentes.
[0022] Os desenhos anexos ilustram exemplos. Elementos indicados por números de referência nos desenhos anexos correspondem a elementos indicados por números de referência iguais na descrição seguinte. Nesta descrição, elementos com nomes que começam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Em vez disso, tais palavras ordinais são meramente usadas para referir-se a diferentes elementos de um mesmo tipo ou similar.
[0023] A FIG. 1A é um diagrama em blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar as técnicas de acordo com os aspectos descritos na presente descrição. Tal como utilizado aqui descrito, o termo “codificador de vídeo” ou “codificador” se refere genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta descrição, os termos “codificação de vídeo” ou “codificação” podem referir-se, genericamente, à codificação de vídeo e decodificação de vídeo. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido de patente podem ser estendidos a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e middleboxes (por exemplo, dispositivos que podem modificar, transformar e / ou manipular um fluxo de bits).
[0024] Como mostrado na FIG. 1A, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. No exemplo da FIG. 1A, o dispositivo de origem 12 e o dispositivo de destino 14 constituem dispositivos separados. Note, no entanto, que o dispositivo de origem 12 e dispositivo de destino 14 podem estar em ou parte do mesmo dispositivo, como mostrado no exemplo da FIG. 1B.
[0025] Com referência mais uma vez à FIG. 1A, o dispositivo de origem 12 e o dispositivo de destino 14 podem compreender, respectivamente, qualquer um de uma ampla gama de dispositivos, incluindo computadores de mesa, computadores portáteis (por exemplo, laptops), tablets, settop boxes, aparelhos de telefone, como os chamados smartfones, os chamados smartpads, televisores, câmeras, dispositivos de exibição, leitores de mídia digitais, consolas de jogos de vídeo, dispositivos de transmissão de vídeo, ou semelhantes. Em várias formas de realização, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fios.
[0026] O dispositivo de destino 14 pode receber, via link 16, os dados de vídeo codificados a serem decodificados. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados desde o dispositivo de origem 12 para o dispositivo de destino 14. No exemplo da FIG. 1A, o link 16 pode compreender um meio de comunicação para permitir ao dispositivo de origem 12 transmitir dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fios, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0027] No exemplo da FIG. 1A, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e a interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e / ou um transmissor. No dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmara de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo, e / ou um sistema de computação gráfica para gerar dados de computação gráfica como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmara de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados “telefones câmera” ou “telefones de vídeo”, tal como ilustrado no exemplo da FIG. 1B. No entanto, as técnicas descritas nesta invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e / ou com fios.
[0028] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados podem também (ou alternativamente) ser armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e / ou reprodução. O codificador de vídeo 20, ilustrado na FIG. 1A e 1B, pode compreender o codificador de vídeo 20 ilustrado na FIG. 2A ou qualquer outro codificador de vídeo aqui descrito.
[0029] No exemplo da FIG. 1A, o dispositivo de destino 14 inclui a interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e / ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do link 16 e / ou do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados através do link 16, ou fornecidos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20, para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivos.
[0030] O dispositivo de exibição 32 pode ser integrado com, ou externo ao, dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para interagir com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 mostra os dados de vídeo decodificados a um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição, tal como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0031] Em aspectos relacionados, a FIG. 1B mostra um exemplo do sistema de codificação de vídeo 101, em que o dispositivo de origem 12 e o dispositivo de destino 14 estão em ou parte de um dispositivo 11. O dispositivo 11 pode ser um aparelho de telefone, tal como um “smartfone” ou semelhante. O dispositivo 11 pode incluir um dispositivo controlador / processador 13 (opcionalmente presente) em comunicação operativa com o dispositivo de origem 12 e o dispositivo de destino 14. O sistema de codificação de vídeo 10’ da FIG. 1B, e os seus componentes, são de outra forma semelhantes ao sistema de codificação de vídeo 10 da Fig. 1A, e os seus componentes.
[0032] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como DSC. Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de propriedade ou da indústria, tal como o padrão H.264 ITU-T, alternativamente referido como MPEG-4, Parte 10, AVC, HEVC ou extensões de tais padrões. As técnicas da presente descrição, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo incluem o MPEG-2 e H.263 ITU-T.
[0033] Embora não mostrado nos exemplos das Figs. 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, em alguns exemplos, as unidades MUX-DEMUX podem se conformar ao protocolo do multiplexador H.223 ITU, ou outros protocolos, tal como o protocolo de datagramas de usuário (UDP).
[0034] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um de uma variedade de circuitos codificadores adequados, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer suas combinações. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de leitura por computador adequado, não transitório, e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta invenção. Cada um dos codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou descodificadores, cada um deles pode ser integrado como parte de um codificador / decodificador combinado em um respectivo dispositivo. PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0035] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma parte formadora de imagem estática de um vídeo. Em alguns casos, uma imagem pode ser referida como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0036] Para gerar o fluxo de bits, o codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa codificação operações nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir um conjunto de parâmetros de codificação, tal como um QP. Para gerar uma imagem codificada, o codificador de vídeo 20 pode dividir uma imagem em blocos de vídeo de tamanho igual. Um bloco de vídeo pode ser uma matriz bidimensional de amostras. Os parâmetros de codificação podem definir uma opção de codificação (por exemplo, um modo de codificação) para cada bloco dos dados de vídeo. A opção de codificação pode ser selecionada para atingir um desempenho de distorção de taxa desejado.
[0037] Em alguns exemplos, o codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir uma região espacialmente distinta em uma imagem (por exemplo, um quadro) que pode ser decodificada independentemente, sem informações do resto das regiões na imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em uma única fatia ou pode ser codificado em várias fatias. Em DSC, os bits alvo alocados para codificar cada fatia podem ser substancialmente constantes. Como parte da execução de uma operação de codificação em um quadro, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados com a fatia. Os dados codificados associados com a fatia podem ser referidos como uma “fatia codificada”.
CODIFICADOR DE VÍDEO DSC
[0038] A FIG. 2A é um diagrama EM blocos que ilustra um exemplo do codificador de vídeo 20 que pode aplicar técnicas de acordo com os aspectos descritos na presente descrição. O codificador de vídeo 20 pode ser configurado para executar parte ou a totalidade das técnicas desta descrição. Em alguns exemplos, as técnicas descritas na presente descrição podem ser compartilhadas entre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicionalmente ou em alternativa, um processador (não mostrado) pode ser configurado para executar parte ou a totalidade das técnicas descritas nesta descrição.
[0039] Para efeitos de explicação, esta invenção descreve o codificador de vídeo 20 no contexto da codificação DSC. No entanto, as técnicas desta descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[0040] No exemplo da FIG. 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 inclui um conversor do espaço de cores 105, um buffer, 110, um detector de nivelamento 115, um controlador de taxa 120, um preditor, quantificador e o componente reconstrutor 125, um buffer de linha 130, um histórico de cores indexadas 135, um codificador de entropia 140, um multiplexador de subfluxo 145 e um buffer de velocidade 150. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais.
[0041] O conversor do espaço de cores 105 pode converter um espaço de cores de entrada no espaço de cores utilizado na implementação da codificação. Por exemplo, em uma forma de realização exemplificativa, o espaço de cores dos dados de vídeo de entrada está no espaço de cores vermelho, verde e azul (RGB) e a codificação é implementada no espaço de cores de luminância Y, crominância verde Cg e crominância laranja Co (YCgCo). A conversão do espaço de cores pode ser realizada pelo(s) método(s) incluindo mudanças e acréscimos aos dados de vídeo. Note que os dados de vídeo de entrada em outros espaços de cores podem ser processados e também podem ser realizadas conversões para outros espaços de cores.
[0042] Em aspectos relacionados, o codificador de vídeo 20 pode incluir o buffer 110, o buffer de linha 130, e / ou o buffer de velocidade 150. Por exemplo, o buffer 110 pode manter os dados de vídeo convertidos no espaço de cores antes da sua utilização por outras partes do codificador de vídeo 20. Em outro exemplo, os dados de vídeo podem ser armazenados no espaço de cores RGB e a conversão do espaço de cores pode ser realizada conforme necessário, uma vez que os dados convertidos no espaço de cores podem exigir mais bits.
[0043] O buffer de velocidade 150 pode funcionar como parte do mecanismo de controle de velocidade no codificador de vídeo 20, o qual será descrito em maiores detalhes abaixo em ligação com o controlador de taxa 120. Os bits gastos na codificação de cada bloco podem variar substancialmente de forma elevada com base na natureza do bloco. O buffer de velocidade 150 pode suavizar as variações da velocidade no vídeo comprimido. Em algumas formas de realização, um modelo de buffer de taxa de bits constante (CBR) é usado, em que os bits são levados para fora do buffer a uma taxa de bits constante. No modelo de buffer de CBR, se o codificador de vídeo 20 adiciona muitos bits ao fluxo de bits, o buffer de velocidade 150 pode transbordar. Por outro lado, o codificador de vídeo 20 deve adicionar bits suficientes, a fim de evitar o esvaziamento do buffer de velocidade 150.
[0044] No nível do decodificador de vídeo, os bits podem ser adicionados ao buffer de velocidade 155 do decodificador de vídeo 30 (veja FIG. 2B, que é descrita em maiores detalhes abaixo) a uma taxa de bits constante, e o decodificador de vídeo 30 pode remover números variáveis de bits para cada bloco. Para garantir a decodificação apropriada, o buffer de velocidade 155 do decodificador de vídeo 30 não deve “esvaziar” ou “transbordar” durante a decodificação do fluxo de bits comprimido.
[0045] Em algumas formas de realização, a totalidade do buffer (BF) pode ser definida com base nos valores BufferCurrentSize que representam o número de bits atualmente no buffer e BufferMaxSize que representa o tamanho do buffer de velocidade 150, isto é, o número máximo de bits que pode ser armazenado no buffer de velocidade 150 em qualquer ponto no tempo. A BF pode ser calculada como: BF = ((BufferCurrentSize * 100) / BufferMaxSize)
[0046] O detector de nivelamento 115 pode detectar alterações de áreas complexas (isto é, não planas) nos dados de vídeo para áreas planas (isto é, simples ou uniformes) nos dados de vídeo. Os termos “complexas” e “planas” serão aqui utilizados para se referir em geral à dificuldade para o codificador de vídeo 20 codificar as respectivas regiões dos dados de vídeo. Assim, o termo “complexa” tal como aqui utilizado descreve geralmente uma região de dados de vídeo como sendo complexa ou difícil para o codificador de vídeo 20 codificar e pode, por exemplo, incluir dados de vídeo texturizados, elevada frequência espacial e / ou outras características que são complexas para codificar. Por exemplo, uma região dos dados de vídeo pode ser determinada como sendo uma complexa região quando o número de bits exigido para codificar a região é maior do que um limiar. O termo “plana” tal como aqui utilizado descreve em geral uma região dos dados de vídeo como sendo simples para o codificador de vídeo 20 codificar e pode, por exemplo, incluir um gradiente regular nos dados de vídeo, baixa frequência espacial e / ou outras características que são simples para codificar. Por exemplo, uma região dos dados de vídeo pode ser determinada como sendo uma região plana quando o número de bits exigido para codificar a região é menor do que o limiar.
[0047] No entanto, dependendo da aplicação, a determinação de se uma dada região é complexa ou plana pode também ser determinada com base no padrão de codificação utilizado, o hardware específico incluído no codificador de vídeo 20, o tipo de dados de vídeo a serem codificados, etc. Além disso, certas propriedades das regiões de dados de vídeo podem influenciar quantos bits são necessários para codificar a região, por exemplo, regiões de alta textura e / ou de frequência espacial elevada podem precisar que mais bits sejam codificados do que regiões de textura inferior e / ou de frequência espacial inferior. Da mesma forma, as regiões que compreendem ruído aleatório podem exigir que um grande número de bits seja codificado em comparação com regiões mais estruturada dos dados de vídeo. Assim, em certas implementações, regiões dos dados de vídeo podem ser identificadas como regiões complexas e / ou as planas, comparando uma medida da textura e / ou frequência espacial (por exemplo, um valor de complexidade) a um limiar de complexidade. As transições entre regiões complexas e planas podem ser usadas pelo codificador de vídeo 20 para reduzir os artefatos de quantização nos dados de vídeo codificados. Especificamente, o controlador de velocidade 120 e o preditor, quantificador e componente reconstrutor 125 podem reduzir esses artefatos de quantização quando são identificadas as transições de regiões complexas para planas.
[0048] O controlador de taxa 120 determina um conjunto de parâmetros de codificação, por exemplo, um QP. O QP pode ser ajustado pelo controlador de taxa 120 com base na totalidade de buffer do buffer de velocidade 150 e a atividade de imagem dos dados de vídeo a fim de maximizar a qualidade de imagem para uma taxa de bits alvo que assegura que o buffer de velocidade 150 não transborde ou esvazie. O controlador de taxa 120 também seleciona uma opção de codificação particular (por exemplo, um modo particular) para cada bloco dos dados de vídeo a fim de obter o desempenho ideal da distorção de taxa. O controlador de taxa 120 minimiza a distorção das imagens reconstruídas, de tal modo que satisfaz a restrição da taxa de bits, ou seja, a taxa de codificação real global se encaixa dentro da taxa de bits alvo.
[0049] O componente preditor, quantificador e reconstrutor 125 pode executar pelo menos três operações de codificação do codificador de vídeo 20. O componente preditor, quantificador e reconstrutor 125 pode realizar a predição em um certo número de modos diferentes. Um modo de predicação exemplificativo é uma versão modificada da predição mediano-adaptativa. A predição mediano-adaptativa pode ser implementada pelo padrão JPEG sem perdas (JPEG-LS). A versão modificada da predição mediano-adaptativa que pode ser realizada pelo componente preditor, quantificador, e reconstrutor 125 pode permitir a predição paralela de três valores de amostras consecutivos. Outro modo de predição exemplificativo é predição de bloco. Na predição de bloco, as amostras são preditas a partir de pixels anteriormente reconstruídos à esquerda. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ambos executar uma pesquisa idêntica em pixels reconstruídos para determinar os usos de predição de bloco, e, assim, nenhum bit precisa ser enviado no modo de predição de bloco. Um modo de predição de ponto médio pode também ser implementado, em que as amostras são preditas usando o ponto médio do intervalo de componente. O modo de predição de ponto médio pode possibilitar a delimitação do número de bits necessários para o vídeo comprimido mesmo na amostra do pior caso.
[0050] O componente preditor, quantificador e reconstrutor 125 também realiza a quantização. Por exemplo, a quantização pode ser realizada através de um quantizador potência de 2, que pode ser implementado utilizando um dispositivo de deslocamento. Note que outras técnicas de quantização podem ser implementadas, em vez do quantizador de potência de dois. A quantização realizada pelo componente preditor, quantificador e reconstrutor 125 pode ser baseada no QP determinado pelo controlador de taxa 120. Finalmente, o componente preditor, quantificador e reconstrutor 125 também realiza a reconstrução, o que inclui adicionar o resíduo quantizado inverso ao valor predito e garantindo que o resultado não esteja fora do intervalo válido de valores de amostra.
[0051] Note que as abordagens exemplificativas acima descritas para predição, quantização e reconstrução realizadas pelo componente preditor, quantificador e reconstrutor 125 são meramente ilustrativas e que outras abordagens podem ser implementadas. Também deve ser notado que o componente preditor, quantificador e reconstrutor 125 pode incluir subcomponente(s) para realizar a predição, a quantização e / ou a reconstrução. Note ainda que a predição, a quantização e / ou a reconstrução podem ser realizadas por vários componentes codificadores separados em vez do componente preditor, quantificador e reconstrutor 125.
[0052] O buffer de linha 130 mantém a saída do componente preditor, quantificador e reconstrutor 125 de modo que o componente preditor, quantificador e reconstrutor 125 e o histórico de cores indexadas 135 podem utilizar os dados de vídeo tamponados. O histórico de cores indexadas 135 armazena valores de pixel utilizados recentemente. Estes valores de pixels usados recentemente podem ser referidos diretamente pelo codificador de vídeo 20 através de uma sintaxe dedicada.
[0053] O codificador de entropia 140 codifica os resíduos de predição recebidos do componente preditor, quantificador e reconstrutor 125 com base no histórico de cores indexadas 135 e as transições de planeza identificadas pelo detector de nivelamento 115. Em alguns exemplos, o codificador de entropia 140 pode codificar três amostras por clock por codificador de subfluxo. O multiplexador de subfluxo 145 pode multiplexar o fluxo de bits com base em um esquema de multiplexação de pacotes sem cabeçalho. Isso permite que o decodificador de vídeo 30 execute três decodificadores de entropia em paralelo, facilitando a decodificação de três pixels por clock. O multiplexador de subfluxo 145 pode otimizar a ordem de pacotes de modo que os pacotes podem ser eficientemente decodificados pelo decodificador de vídeo 30. Note que diferentes abordagens para codificação de entropia podem ser aplicadas, o que pode facilitar a decodificação da potência-de-2-pixels por clock (por exemplo, 2 pixels / clock ou 4 pixels / clock).
DECODIFICADOR DE VÍDEO DSC
[0054] A FIG. 2B é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo 30 que pode aplicar técnicas de acordo com aspectos descritos nesta invenção. O decodificador de vídeo 30 pode ser configurado para executar parte ou a totalidade das técnicas desta invenção. Em alguns exemplos, as técnicas descritas nesta invenção podem ser compartilhadas entre os vários componentes do codificador de vídeo 30. Em alguns exemplos, adicionalmente ou em alternativa, um processador (não mostrado) pode ser configurado para executar parte ou a totalidade das técnicas descritas nesta invenção.
[0055] Para efeitos de explicação, esta invenção descreve o decodificador de vídeo 30 no contexto da codificação de DSC. No entanto, as técnicas da presente invenção podem ser aplicáveis a outros padrões ou métodos de codificação.
[0056] No exemplo da FIG. 2B, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem um buffer de velocidade 155, uma desmultiplexador de subfluxo 160, um decodificador de entropia 165, um controlador de taxa 170, um componente preditor, quantificador e reconstrutor 175, um histórico de cores indexadas 180, um buffer de linha 185 e um conversor do espaço de cores 190. Os componentes ilustrados do decodificador de vídeo 30 são análogos aos componentes correspondentes descritos anteriormente em ligação com o codificador de vídeo 20 na FIG. 2A. Como tal, cada um dos componentes do decodificador de vídeo 30 pode funcionar de uma forma semelhante aos componentes correspondentes do codificador de vídeo 20, tal como descrito acima.
FATIAS EM DSC
[0057] Como mencionado acima, uma fatia geralmente se refere a uma região espacialmente distinta de uma imagem ou quadro que pode ser decodificada independentemente, sem utilizar a informação do resto das regiões da imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em uma única fatia ou pode ser codificado em várias fatias. Em DSC, os bits alvo alocados para codificar cada fatia podem ser substancialmente constantes.
CÁLCULO DO PARÂMETRO DE LAGRANGE
[0058] O custo de Lagrange pode ser fornecido por uma função do custo de Lagrange. Por exemplo, uma função do custo de Lagrange pode fornecer uma formulação alternativa para o problema de otimização restrita (por exemplo, minimizar f(x) sujeita a g (x)= c) sob a forma de um problema de otimização sem restrições e geralmente estar na forma de f(x) + À g(x). Um custo pode ser calculado para cada modo de DSC, considerando tanto a taxa quanto distorção como: Custo = D + À R, em que D representa a distorção associada com um modo de codificação particular, e R representa a taxa de bits correspondente. Aqui, À pode se referir a um multiplicador de Lagrange que equilibra a distorção e a taxa.
[0059] O multiplicador de Lagrange (À) pode afetar a determinação do desempenho da distorção da taxa no codificador (por exemplo, decodificador). Por exemplo, um valor menor de À tende a resultar na seleção de um modo de codificação que tem distorção muito pequena, o que pode resultar em sobrecarga de buffer se a taxa do modo selecionado é muito alta. Por outro lado, um valor mais elevado de À tende a resultar na seleção de um modo que tem a taxa mínima entre os modos, o que pode afetar a qualidade da imagem reconstruída. As abordagens existentes não podem calcular corretamente o parâmetro À, o que pode resultar em desempenho de codificação subideal. Por exemplo, as abordagens existentes determinam o parâmetro À com base no QP e não consideram a taxa de bits e / ou totalidade do buffer. Por conseguinte, pode ser desejável calcular o parâmetro À, a fim de alcançar um desempenho de codificação ideal.
[0060] A fim de abordar estes e outros desafios, as técnicas determinam o parâmetro de Lagrange com base na taxa de bits e totalidade de buffer. Por exemplo, as técnicas calculam um parâmetro de regularização de Lagrange como uma função da taxa de codificação de um modo de codificação e totalidade do buffer. DSC pode ter vários modos de codificação possíveis (ou disponíveis). De acordo com determinados aspectos, exemplos de modos de codificação podem incluir: modo de transformada, modo de predição de bloco, modo de modulação delta por código de pulso (DPCM) de transformação (com base na predição adaptativa mediana), modo padrão, modo de Modulação por Código de Pulso (PCM), modo de média, modo de predição de ponto médio. Cada modo de codificação tem uma taxa de bits associada com o respectivo modo de codificação. Por exemplo, a taxa de bits pode representar o número de bits utilizados pelo modo, por exemplo, para codificar um bloco. As técnicas podem determinar o parâmetro de Lagrange para cada modo de codificação com base na taxa de bits do modo de codificação e a totalidade do buffer. Em uma forma de realização, um primeiro parâmetro de Lagrange ou multiplicador é calculado com base na razão da taxa de bits, e um segundo parâmetro de Lagrange ou multiplicador é calculado com base na totalidade do buffer. Um parâmetro de Lagrange combinado é calculado com base no primeiro parâmetro de Lagrange e o segundo parâmetro de Lagrange (por exemplo, por multiplicação ou adição). O valor do parâmetro de Lagrange combinado pode ser usado para determinar o custo de Lagrange para um modo de codificação. As técnicas podem comparar os custos de Lagrange para os diferentes modos de codificação e selecionar um modo de codificação adequado conforme apropriado. Em uma forma de realização, o modo de codificação com o menor custo de Lagrange é selecionado.
[0061] Deste modo, as técnicas podem determinar um parâmetro de Lagrange que reflete a taxa de bits e / ou o estado do buffer, o que pode ser útil na escolha de um modo de codificação que seja apropriado para uma determinada situação. Por exemplo, quando o buffer está próximo do transbordamento (por exemplo, perto de um estado de transbordamento), seria preferível selecionar um modo de codificação que tem uma taxa de bits menor, mas tem uma distorção mais elevada, a fim de evitar a sobrecarga do buffer, e quando o buffer está em um estado de vazio, selecionar um modo de codificação que tem uma maior taxa de bits, mas tem uma menor distorção levaria a melhores resultados. Considerar a taxa de bits e o estado do buffer pode fornecer um valor mais preciso do parâmetro de Lagrange para a determinação do custo de Lagrange de um modo de codificação. Por exemplo, visto que DSC tem uma restrição de taxa rigorosa (por exemplo, a CBR), a taxa de bit de um modo e totalidade do buffer pode desempenhar um papel importante na manutenção da CBR. Custos de Lagrange mais precisos podem ajudar na escolha de um modo de codificação ideal, levando à melhor qualidade de reconstrução da imagem.
[0062] Certos detalhes relativos à determinação do parâmetro de Lagrange em DSC são explicados a seguir, por exemplo, em ligação com a forma de realização exemplificativa. Todas as funcionalidades e / ou formas de realização descritas nesta invenção podem ser implementadas separadamente ou em combinação. Vários termos utilizados ao longo desta descrição são termos gerais que têm o seu significado comum. Tal como utilizado aqui descrito, o termo “codificador de vídeo” se refere genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta descrição, os termos “codificação de vídeo” ou “codificação” podem se referir genericamente à codificação de vídeo e decodificação de vídeo. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido de patente podem ser ampliados a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e middleboxes (por exemplo, dispositivos que podem modificar, transformar e / ou manipular um fluxo de bits).
FORMAS DE REALIZAÇÃO EXEMPLIFICATIVAS
[0063] Em uma forma de realização, são fornecidos um aparelho e método para calcular À com base na taxa de bits e totalidade do buffer. Por exemplo, o À pode ser calculado de acordo com as etapas descritas a seguir. A forma de realização exemplificativa é explicada em termos de codificação para fins ilustrativos, e as técnicas são igualmente aplicáveis à decodificação. De um modo geral, a codificação pode referir-se tanto à codificação quanto à decodificação. Em certas formas de realização, os termos multiplicador de Lagrange e parâmetro de Lagrange podem ser utilizados indiferentemente.
1. CALCULAR UM MULTIPLICADOR DE LAGRANGE COM BASE NA RAZÃO DA TAXA DE BITS
[0064] De acordo com determinados aspectos, as técnicas podem calcular À como uma função de uma razão da taxa de bits (indicada como BR) que pode ser definida como a razão entre o número de bits para codificar o bloco corrente com um modo particular dividido pelo número máximo de bits (indicado como maxBits): BR = número de bits / maxBits. Aqui, maxBits pode corresponder ao número de bits para codificar a informação visual sem qualquer compressão e pode ser calculado como segue: maxBits = número de pixels no bloco corrente * profundidade de bits * número de componentes de cor. Profundidade de bits pode referir-se ao número de bits para indicar cada componente de cor de um único pixel, por exemplo, 8 bits para formato de imagem RGB 888. - Uma função monotonamente crescente pode ser usada para calcular o valor À. Por exemplo, o valor de À aumenta na medida em que a razão da taxa de bits aumenta. - Em um exemplo, a seguinte função monotonamente crescente pode ser usada para calcular À: - um * 2(((BR*b)-c)/d) - Aqui, a, b, c e d são constantes reais que podem ser configuráveis, e BR representa a razão da taxa de bits. - Em outro exemplo, ao calcular maxBits, os bits adicionais necessários para sinalizar a informação de modo podem também ser considerados (denotados aqui como additionalBits) em adição aos bits necessários para codificar o bloco corrente sem qualquer compressão. Os bits adicionais podem ser usados para sinalizar o cabeçalho, o que pode incluir informações de modo ou outras informações. Por exemplo: - maxBits = maxBits + additionalBits. - Em um exemplo, o maxBits pode ser definido igual ao valor mínimo entre o maxBits e o número de bits restantes da fatia, por exemplo, os bits reais deixados na fatia para codificar o resto dos blocos ou pixels da fatia. - Em outro exemplo, o valor À pode ser definido para infinito quando a razão da taxa de bits BR é estritamente maior do que 1. - Em ainda outro exemplo, o valor À para a primeira linha na fatia pode não ser o mesmo quando comparado com o valor de À utilizado no resto das linhas na fatia. Por exemplo, o valor À para a primeira linha na fatia pode ser calculado usando: - m1*2(((BR*m2)-m3)/M4). Aqui, m1, m2, m3 e m4 são constantes reais que são configuráveis, e BR representa a razão da taxa de bits.
2. CALCULAR UM MULTIPLICADOR DE LAGRANGE COM BASEADO NA TOTALIDADE DO BUFFER
[0065] Outro valor de À pode ser calculado como função da BF. A penalidade (por exemplo, À) pode ser aumentada na medida em que o número de bits ocupado no buffer cresce, de modo que a penalidade seria forte e / ou grande, quando o buffer está prestes a transbordar e pequena quando o buffer está perto de esvaziar. Em algumas formas de realização, o multiplicador ou parâmetro de Lagrange pode ser referido como uma penalidade, uma vez que o multiplicador ou parâmetro de Lagrange pode agir como uma penalidade contra modos que são muito caros em termos de taxa, na medida em que o buffer atinge a totalidade. - Uma função monotonamente crescente pode ser usada para calcular o valor de À, por exemplo, o valor de À aumenta na medida em que a BF aumenta. - Em um exemplo, a seguinte função monotonamente crescente pode ser usada para calcular o À: - a1*2(((BF*b1)c1)/d1) - Aqui, a1, b1, c1 e d1 podem ser constantes reais que são configuráveis. - Em outro exemplo, o valor de À pode ser ligado a um valor mais baixo (por exemplo, A); isto garante que a penalidade não pode ser muito pequena, o que pode ajudar a evitar que o buffer cresça rapidamente. Mais precisamente, a penalidade pode ser calculada como: - Max (A, a1*2(((BF*b1)-c1)/d1)). - Em um exemplo, o valor da totalidade do buffer pode ser arredondado para o número inteiro mais próximo utilizando a seguinte expressão: - BF=((BufferCurrentSize*100)+(BufferMaxSize>>1))/Buffer MaxSize. - A BF pode ser calculada por outros meios, e a abordagem selecionada para cálculo da BF pode variar dependendo do contexto e aplicação. - Em outro exemplo, a BF pode ser normalizada de 0 a 1, dividindo-se BF por 100. O valor normalizado da BF pode ser usado para calcular o valor de À. - Em ainda outro exemplo, o valor de À para a primeira linha na fatia pode não ser o mesmo quando comparado com o valor de À utilizado no resto das linhas na fatia. Por exemplo, o valor de À para a primeira linha na fatia pode ser calculado usando: - n1*2(((BF*n2)n3)/n4). Aqui, n1, n2, n3 e n4 são constantes reais que são configuráveis, e BF representa a totalidade do buffer.
3. CALCULAR UM PARÂMETRO DE LAGRANGE COMBINADO
[0066] As penalidades (por exemplo, calculadas nas etapas 1 e 2 acima) podem ser utilizadas para calcular À de várias maneiras. Em uma implementação, as penalidades podem ser multiplicadas para calcular um único valor de À, de tal modo que o valor de À calculado depende da taxa de bits e da BF. - Por exemplo, um único valor de À pode ser calculado como (a*2(((BR*b)-c)/d))*(a1*2(((BF*b1)c1)/d1)). - Em aspectos relacionados, o mesmo valor de À pode ser usado para todas as linhas na fatia. - Em outros aspectos relacionados, um valor de À diferente pode ser utilizado para a primeira linha na fatia em comparação com a penalidade utilizada no resto das linhas na fatia. - Em ainda outros aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (m1*2(((BR*m2)-M3)/M4))*(n1*2(((BF*n2)-n3)/n4)). - Em ainda outros aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (m1*2(((BR*m2)-m3)/m4))*(a1*2(((BF*b1)c1)/d1)). - Em aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (a*2(((BR*b)-c)/d))*(n1*2(((BF*n2)-n3)/n4)).
[0067] Em outras formas de realização, as penalidades (por exemplo, calculadas de acordo com as etapas 1 e 2 acima) podem ser adicionadas em conjunto para calcular um valor único de À, de modo que o valor calculado de À depende da taxa de bits e da BF. - Por exemplo, um único valor de À é calculado como (a*2(((BR*b)-c)/d))+(a1*2(((BF*b1)-c1)/d1)). - Em aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (m1*2(((BR*m2)-m3)/m4))+(n1*2(((BF*n2)-n3)/n4)). - Em outros aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (m1*2(((BR*m2)-m3)/m4))*(a1*2(((BF*b1)c1)/d1)). - Em ainda outros aspectos relacionados, um único valor de À pode ser calculado para a primeira linha na fatia como (a*2(((BR*b)-c)/d))*(n1*2(((BF*n2)-n3)/n4)).
4. COMPARAR OS CUSTOS DE LAGRANGE PARA DIFERENTES MODOS E SELECIONAR UM MODO
[0068] Para cada modo em DSC, o parâmetro de Lagrange (por exemplo, como calculado na etapa 3 acima) pode ser utilizado para determinar o custo de Lagrange. Como explicado acima, o custo de Lagrange pode ser calculado como: custo = D + À R. As técnicas podem comparar os custos de Lagrange para diferentes modos e selecionar um modo apropriado para codificar os dados de vídeo. Em uma forma de realização, um modo que tem o menor custo de Lagrange é selecionado. Em algumas formas de realização, o modo com o menor custo de Lagrange pode ter uma taxa que é muito elevada, o que levar o buffer a transbordar. Ou codificar o bloco utilizando o modo com o menor custo de Lagrange pode consumir tantos bits de apenas um número muito pequeno de bits pode ser deixado para codificar o resto dos blocos da fatia. Em tais casos, o melhor modo seguinte (por exemplo, o modo com o segundo custo menor de Lagrange, o terceiro menor custo de Lagrange, etc.) pode ser selecionado. Por exemplo, é selecionado o melhor modo seguinte que possa impedir o transbordamento do buffer ou que não consuma tantos bits.
MÉTODO DE DETERMINAÇÃO DO PARÂMETRO DE LAGRANGE EM DSC
[0069] A FIG. 3 é um fluxograma que ilustra um processo 300 para codificação de dados de vídeo, de acordo com uma forma de realização da presente invenção. O método se refere à determinação de um parâmetro de Lagrange. Os blocos do processo 300 podem ser realizados por um codificador de vídeo (por exemplo, o codificador de vídeo 20 na FIG. 2A), um decodificador de vídeo (por exemplo, o descodificador de vídeo 30 na FIG. 2B), ou seu(s) componente(s). Para fins ilustrativos, o processo 300 é descrito como realizado por um codificador de vídeo (também referido simplesmente como codificador), que pode ser o codificador de vídeo 20, o decodificador de vídeo 30 ou outro componente. Todas as formas de realização descritas em relação à FIG. 3 podem ser aplicadas separadamente, ou em combinação uma com a outra. São explicados acima certos detalhes relacionados com ao processo 300.
[0070] O processo inicia no bloco 301. O codificador pode incluir uma memória para armazenar dados de vídeo. A memória pode incluir um buffer.
[0071] No bloco 302, o codificador recebe dados de vídeo a serem codificados, por exemplo, via DSC.
[0072] No bloco 303, o codificador determina um parâmetro de Lagrange para um modo de codificação (por exemplo, associado com DSC), com base, pelo menos em parte, da taxa de bits do modo de codificação e a totalidade do buffer. Em uma forma de realização, o codificador determina um primeiro multiplicador de Lagrange com base em uma razão de taxa de bits de um bloco corrente, em que a razão de bits é uma razão de um número de bits para codificar o bloco corrente utilizando o modo de codificação dividido por um número de bits para codificação do bloco corrente sem qualquer compressão, determina um segundo multiplicador de Lagrange com base na totalidade do buffer e determina o parâmetro de Lagrange (por exemplo, o parâmetro de Lagrange combinado) com base, pelo menos em parte, no primeiro multiplicador de Lagrange e no segundo multiplicador de Lagrange. O codificador pode determinar o parâmetro de Lagrange através da multiplicação do primeiro multiplicador de Lagrange e o segundo multiplicador de Lagrange. Ou o codificador pode determinar o parâmetro de Lagrange através da adição do primeiro multiplicador de Lagrange e o segundo multiplicador de Lagrange.
[0073] Em outra forma de realização, o codificador determina um primeiro multiplicador de Lagrange com base em uma razão de taxa de bits de um bloco corrente, em que a razão de bits é uma razão de um número de bits para codificar o bloco corrente utilizando o modo de codificação dividido por uma soma de um número de bits para codificar o bloco corrente sem qualquer compressão e um número de bits para codificar a informação associada com o modo de codificação, determina um segundo multiplicador de Lagrange com base na totalidade do buffer e determina o parâmetro de Lagrange (por exemplo, o parâmetro de Lagrange combinado) com base, pelo menos em parte, no primeiro multiplicador de Lagrange e o segundo multiplicador de Lagrange.
[0074] DSC pode incluir uma pluralidade de modos de codificação. Em algumas formas de realização, o codificador obtém informação relacionadas com a pluralidade de modos de codificação, por exemplo, associado com DSC, determina respectivos parâmetros de Lagrange para cada um da pluralidade de modos de codificação, seleciona um primeiro modo de codificação da pluralidade de modos de codificação com base, pelo menos em parte, nos respectivos parâmetros de Lagrange e codifica o bloco corrente em um fluxo de bits usando o primeiro modo de codificação. Em uma forma de realização, para cada um da pluralidade de modos de codificação, o codificador determina um custo de Lagrange associado com cada um dos modos de codificação, o custo de Lagrange determinado como: uma distorção de cada modo de codificação + o parâmetro de Lagrange de cada modo de codificação * a taxa de bits de cada modo de codificação. O codificador pode selecionar como o primeiro modo de codificação um modo de codificação da pluralidade de modos de codificação com o menor custo de Lagrange.
[0075] Em certas formas de realização, uma fatia incluindo um bloco corrente inclui uma pluralidade de linhas, uma pluralidade de linhas incluindo uma primeira linha, e o parâmetro de Lagrange para a primeira linha é determinado de uma maneira diferente das outras linhas da pluralidade de linhas. Em outras formas de realização, uma fatia incluindo um bloco corrente inclui uma pluralidade de linhas, a pluralidade de linhas incluindo uma primeira linha, e o parâmetro de Lagrange para a primeira linha é determinado da mesma maneira que as outras linhas da pluralidade de linhas.
[0076] O processo 300 termina no bloco 304. Os blocos podem ser adicionados e / ou omitidos no processo 300, dependendo a forma de realização, e os blocos do processo 300 podem ser realizados em diferentes ordens, dependendo da forma de realização.
[0077] As características e / ou formas de realização descritas nesta invenção podem ser implementadas separadamente ou em qualquer combinação delas. Por exemplo, todas as características e / ou formas de realização descritas em ligação com as FIGS. 1-2 e outras partes da invenção podem ser implementadas em qualquer combinação com quaisquer características e / ou formas de realização descritas em ligação com a FIG. 3, e vice-versa. As formas de realização da presente invenção não estão limitadas a, ou pelo exemplo mostrado na FIG. 3, e outras variações podem ser executadas sem afastamento do espírito da presente invenção.
OUTRAS CONSIDERAÇÕES
[0078] Informações e sinais aqui divulgados podem ser representados utilizando qualquer de uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informação, sinais, bits, símbolos e chips que podem ser referenciados em toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas magnéticas, campos ou partículas óticas, ou qualquer combinação deles.
[0079] Os vários blocos lógicos ilustrativos, e etapas de algoritmo descritos em ligação com as formas de realização aqui divulgadas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes, blocos e etapas ilustrativos foram descritos acima, geralmente em termos de sua funcionalidade. Se tal funcionalidade é implementada como hardware ou software depende das limitações da aplicação e design específicas impostas ao sistema geral. Os especialistas na técnica podem implementar a funcionalidade descrita de maneiras diferentes para cada aplicação em particular, mas tais decisões de implementação não devem ser interpretadas como causando um afastamento do âmbito da presente invenção.
[0080] As técnicas aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação deles. Tais técnicas podem ser implementadas em qualquer de uma variedade de dispositivos, tais como computadores para fins gerais, dispositivos portáteis de comunicação sem fio, ou dispositivos de circuitos integrados que têm múltiplas utilizações, incluindo a aplicação em dispositivos portáteis de comunicação sem fios e outros dispositivos. Quaisquer recursos descritos como dispositivos ou componentes podem ser implementados em conjunto em um dispositivo de lógica integrada ou separadamente como dispositivos lógicos discretos, porém interoperáveis. Se implementadas em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados de leitura por computador compreendendo código de programa incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados de leitura por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio de leitura por computador pode compreender memória ou meios de armazenamento de dados, tal como memória de acesso aleatório (RAM) como memória de acesso aleatório dinâmica síncrona (SDRAM), memória de leitura apenas (ROM), memória não volátil de acesso aleatório (NVRAM), memória de leitura apenas programável apagável eletricamente (EEPROM), memória flash, meios de armazenamento de dados magnéticos ou ópticos, e similares. As técnicas adicionalmente ou alternativamente podem ser realizadas, pelo menos em parte, por um meio de comunicação de leitura por computador que transporta ou comunica código do programa sob a forma de instruções ou estruturas de dados e que pode ser acessado, lido e / ou executado por um computador, tais como sinais ou ondas propagadas.
[0081] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos de portas programável em campo (FPGAs), ou outro circuito lógico integrado ou discreto equivalente. Tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nesta invenção. Um processador de fim geral pode ser um microprocessador, mas, em alternativa, o processador pode ser qualquer processador, controlador, microcontrolador, ou máquina de estados convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP, ou qualquer outro tipo de configuração. Por conseguinte, o termo “processador” tal como aqui utilizado pode referir-se a qualquer estrutura acima mencionada, qualquer combinação das estruturas acimas mencionadas, ou qualquer outra estrutura ou aparelho adequado para execução das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de software ou hardware dedicado configurado para codificação e decodificação, ou incorporada em um codificador-decodificador de vídeo combinado (codec). Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0082] As técnicas da presente invenção podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um dispositivo portátil sem fios, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes ou unidades são descritas nesta invenção para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas descritas, mas não necessariamente precisam de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecida por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e / ou firmware adequado.
[0083] Embora o anterior tenha sido descrito em ligação com várias formas de realização diferentes, características ou elementos de uma forma de realização podem ser combinadas com outras formas de realização sem afastamento dos ensinamentos desta invenção. No entanto, as combinações de características entre as respectivas formas de realização não são necessariamente assim limitadas. Várias formas de realização da presente invenção foram descritas. Estas e outras formas de realização estão dentro do âmbito das reivindicações a seguir.

Claims (12)

1. Método para codificação de dados de vídeo, caracterizado pelo fato de que compreende: armazenar os dados de vídeo em uma memória, sendo que a memória inclui um armazenamento temporário (150); receber (302) os dados de vídeo a serem codificados; e determinar (303) uma pluralidade de parâmetros lagrangianos para a pluralidade de modos de codificação com base, pelo menos em parte, em uma razão de taxa de bits de um bloco atual para o modo de codificação e uma totalidade do armazenamento temporário (150), em que a razão de bits tem por base um número de bits para codificar o bloco atual com o uso do modo de codificação dividido por um número de bits para codificar o bloco atual sem qualquer compactação; selecionar um modo de codificação a partir da pluralidade de modos de codificação com base nos parâmetros lagrangianos; e codificar o bloco atual em um fluxo de bits com base no modo de codificação selecionado e com o uso da taxa de bits associada ao modo de codificação selecionado que representa o número de bits usado pelo modo de codificação selecionado para codificar o bloco atual.
2. Método, acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar um primeiro multiplicador lagrangiano com base em uma razão da taxa de bits; determinar um segundo multiplicador lagrangiano com base na totalidade do armazenamento temporário (150); e determinar o parâmetro lagrangiano com base, pelo menos em parte, no primeiro multiplicador lagrangiano e no segundo multiplicador lagrangiano.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende adicionalmente multiplicar o primeiro multiplicador lagrangiano e o segundo multiplicador lagrangiano.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente adicionar o primeiro multiplicador lagrangiano e o segundo multiplicador lagrangiano.
5. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende adicionalmente: determinar um primeiro multiplicador lagrangiano com base na razão de taxa de bits e em um número de bits para codificar informações associadas ao modo de codificação; determinar um segundo multiplicador lagrangiano com base na totalidade do armazenamento temporário (150); e determinar o parâmetro lagrangiano com base, pelo menos em parte, no primeiro multiplicador lagrangiano e no segundo multiplicador lagrangiano.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente: para cada um da pluralidade de modos de codificação, determinar um custo lagrangiano associado a cada modo de codificação, sendo que o custo lagrangiano é determinado como: uma distorção de cada modo de codificação + o parâmetro lagrangiano de cada modo de codificação*a taxa de bits de cada modo de codificação.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que selecionar o modo de codificação compreende selecionar um modo de codificação dentre a pluralidade de modos de codificação que têm o menor custo lagrangiano.
8. Aparelho (12) para codificar informações de vídeo caracterizado pelo fato de que compreende: meios para armazenar os dados de vídeo em uma memória, sendo que a memória inclui um armazenamento temporário (150); meios para receber os dados de vídeo a serem codificados; meios para determinar uma pluralidade de parâmetros lagrangiano para um de uma pluralidade de modos de codificação com base, pelo menos em parte, em uma razão da taxa de bits de um bloco atual para o modo de codificação e uma totalidade do armazenamento temporário (150) em que a razão de bits baseia-se em um número de bits para codificar o bloco atual com o uso do modo de codificação dividido por um número de bits para a codificação do bloco corrente sem qualquer compactação; meios para selecionar um modo de codificação a partir da pluralidade de modos de codificação com base na determinada pluralidade de parâmetros lagrangianos; e meios para codificar (22) o bloco de atual em um fluxo de bits com base no modo de codificação selecionado e com o uso da taxa de bits associada ao modo de codificação selecionado que representa o número de bits usados pelo modo de codificação selecionado para codificar o bloco atual.
9. Aparelho, de acordo com reivindicação 8, caracterizado pelo fato de que compreende adicionalmente: meios para determinar um primeiro multiplicador lagrangiano com base na razão de taxa de bits; meios para determinar um segundo multiplicador lagrangiano com base na totalidade do armazenamento temporário (150); e meios para determinar o parâmetro lagrangiano com base, pelo menos em parte, no primeiro multiplicador lagrangiano e no segundo multiplicador lagrangiano.
10. Aparelho, de acordo com reivindicação 9, caracterizado pelo fato de que adicionalmente compreende: meios para determinar, para cada um dentre a pluralidade de modos de codificação, um custo lagrangiano associado a cada modo de codificação, sendo que o custo lagrangiano é determinado como: uma distorção de cada modo de codificação + o parâmetros lagrangiano de cada modo de codificação * a taxa de bits de cada modo de codificação.
11. Aparelho, de acordo com reivindicação 8, caracterizado pelo fato de que os meios para selecionar um modo de codificação compreendem adicionalmente meios para selecionar um modo de codificação dentre a pluralidade de modos de codificação que tem o menor custo lagrangiano.
12. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executáveis por um computador para realizar as etapas do método conforme definido em qualquer uma das reivindicações 1 a 7.
BR112016023955-5A 2014-04-15 2015-04-14 Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador BR112016023955B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461979985P 2014-04-15 2014-04-15
US61/979,985 2014-04-15
US201462034080P 2014-08-06 2014-08-06
US62/034,080 2014-08-06
US14/685,453 US9866853B2 (en) 2014-04-15 2015-04-13 System and method for lagrangian parameter calculation for display stream compression (DSC)
US14/685,453 2015-04-13
PCT/US2015/025782 WO2015160826A2 (en) 2014-04-15 2015-04-14 System and method for lagrangian parameter calculation for display stream compression (dsc)

Publications (3)

Publication Number Publication Date
BR112016023955A2 BR112016023955A2 (pt) 2017-08-15
BR112016023955A8 BR112016023955A8 (pt) 2021-07-13
BR112016023955B1 true BR112016023955B1 (pt) 2023-11-21

Family

ID=54266173

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016023955-5A BR112016023955B1 (pt) 2014-04-15 2015-04-14 Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador

Country Status (10)

Country Link
US (1) US9866853B2 (pt)
EP (1) EP3132605B1 (pt)
JP (1) JP6453360B2 (pt)
KR (1) KR101975093B1 (pt)
CN (1) CN106165421B (pt)
BR (1) BR112016023955B1 (pt)
ES (1) ES2702940T3 (pt)
HU (1) HUE041490T2 (pt)
MX (1) MX358179B (pt)
WO (1) WO2015160826A2 (pt)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI538480B (zh) * 2014-05-27 2016-06-11 敦泰電子股份有限公司 藉由偵測鄰近像素複雜度來動態調整壓縮參數的影像壓縮系統
US10432952B2 (en) * 2015-11-19 2019-10-01 Qualcomm Incorporated System and methods for fixed-point approximations in display stream compression (DSC)
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
TWI593273B (zh) * 2016-04-07 2017-07-21 晨星半導體股份有限公司 位元率控制方法及視訊編碼裝置
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
US10904531B2 (en) * 2017-03-23 2021-01-26 Qualcomm Incorporated Adaptive parameters for coding of 360-degree video
US10743032B2 (en) * 2017-05-24 2020-08-11 Qualcomm Incorporated Substream multiplexing for display stream compression
CN114760473A (zh) 2021-01-08 2022-07-15 三星显示有限公司 用于执行速率失真优化的系统和方法
US11343512B1 (en) 2021-01-08 2022-05-24 Samsung Display Co., Ltd. Systems and methods for compression with constraint on maximum absolute error
KR20220113028A (ko) * 2021-02-05 2022-08-12 한국전자기술연구원 디스플레이 스트림 압축(dsc)을 위한 인코딩 시스템 및 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909513A (en) * 1995-11-09 1999-06-01 Utah State University Bit allocation for sequence image compression
EP0836784B1 (en) * 1996-05-06 2003-09-17 Koninklijke Philips Electronics N.V. Segmented video coding and decoding method and system
US7042943B2 (en) 2002-11-08 2006-05-09 Apple Computer, Inc. Method and apparatus for control of rate-distortion tradeoff by mode selection in video encoders
US7280597B2 (en) 2003-06-24 2007-10-09 Mitsubishi Electric Research Laboratories, Inc. System and method for determining coding modes, DCT types and quantizers for video coding
JP4624321B2 (ja) * 2006-08-04 2011-02-02 株式会社メガチップス トランスコーダおよび符号化画像変換方法
US8135063B2 (en) * 2006-09-08 2012-03-13 Mediatek Inc. Rate control method with frame-layer bit allocation and video encoder
ATE536048T1 (de) * 2008-06-20 2011-12-15 Dolby Lab Licensing Corp Videokomprimierung unter mehreren verzerrungsnebenbedingungen
KR101271512B1 (ko) * 2008-09-16 2013-06-05 돌비 레버러토리즈 라이쎈싱 코오포레이션 적응형 비디오 인코더 제어 방법
US10536701B2 (en) * 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
JP2013126185A (ja) * 2011-12-15 2013-06-24 Fujitsu Ltd 情報処理装置、画像送信方法及び画像送信プログラム
US9451250B2 (en) 2012-10-03 2016-09-20 Broadcom Corporation Bounded rate compression with rate control for slices

Also Published As

Publication number Publication date
US20150296210A1 (en) 2015-10-15
BR112016023955A8 (pt) 2021-07-13
KR101975093B1 (ko) 2019-05-03
EP3132605B1 (en) 2018-09-26
JP2017515377A (ja) 2017-06-08
JP6453360B2 (ja) 2019-01-16
US9866853B2 (en) 2018-01-09
EP3132605A2 (en) 2017-02-22
ES2702940T3 (es) 2019-03-06
CN106165421B (zh) 2019-07-19
WO2015160826A3 (en) 2016-05-06
HUE041490T2 (hu) 2019-05-28
KR20160145050A (ko) 2016-12-19
MX2016013404A (es) 2017-02-15
MX358179B (es) 2018-08-08
WO2015160826A2 (en) 2015-10-22
BR112016023955A2 (pt) 2017-08-15
CN106165421A (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
BR112016023955B1 (pt) Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador
US10574988B2 (en) System and methods for reducing slice boundary visual artifacts in display stream compression (DSC)
US9848193B2 (en) System and method for selecting quantization parameter (QP) in display stream compression (DSC)
BR112016023956B1 (pt) Método e aparelho para codificar dados de vídeo, e memória legível por computador
JP2019522413A (ja) ディスプレイストリーム圧縮のためのサブストリーム多重化
AU2016355664B2 (en) System and methods for fixed-point approximations in display stream compression (DSC)
BR112018011398B1 (pt) Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc)
KR20160145051A (ko) 디스플레이 스트림 압축 (dsc) 을 위한 블록 예측 모드에서 코딩하기 위한 시스템 및 방법
JP2019512970A (ja) ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法
JP2017531355A (ja) マルチ区分変換のために変換構造を再使用するためのシステム及び方法
US10356428B2 (en) Quantization parameter (QP) update classification for display stream compression (DSC)
JP6644766B2 (ja) ディスプレイストリーム圧縮のためにバッファ満杯を決定するためのシステムおよび方法
KR102175662B1 (ko) 디스플레이 스트림 압축 (dsc) 에서의 왜곡을 계산하기 위한 시스템 및 방법들
US10432936B2 (en) Apparatus and methods for perceptual quantization parameter (QP) weighting for display stream compression
JP2018525901A (ja) ディスプレイストリーム圧縮における変換モード用ブロックサイズの変更
BR112018007891B1 (pt) Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/176 , H04N 19/19 , H04N 19/147 , H04N 19/11 , H04N 19/152

Ipc: H04N 19/11 (2014.01), H04N 19/147 (2014.01), H04N

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/04/2015, OBSERVADAS AS CONDICOES LEGAIS