BR112018011398B1 - Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc) - Google Patents

Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc) Download PDF

Info

Publication number
BR112018011398B1
BR112018011398B1 BR112018011398-0A BR112018011398A BR112018011398B1 BR 112018011398 B1 BR112018011398 B1 BR 112018011398B1 BR 112018011398 A BR112018011398 A BR 112018011398A BR 112018011398 B1 BR112018011398 B1 BR 112018011398B1
Authority
BR
Brazil
Prior art keywords
block
search range
current
current block
pixels
Prior art date
Application number
BR112018011398-0A
Other languages
English (en)
Other versions
BR112018011398A2 (pt
Inventor
Natan Haim Jacobson
Vijayaraghavan Thirumalai
Rajan Laxman Joshi
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 BR112018011398A2 publication Critical patent/BR112018011398A2/pt
Publication of BR112018011398B1 publication Critical patent/BR112018011398B1/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/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/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods 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 a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/436Methods 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 using parallelised computational arrangements

Landscapes

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

Abstract

faixa de busca de múltiplas regiões para modo de previsão de bloco para compressão de transmissão contínua de exibição (dsc). é revelado um método para codificar um bloco de dados de vídeo no modo de previsão de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante para transmissão através de enlaces de exibição. em um aspecto, o método inclui determinar um bloco candidato a ser usado para prever um bloco atual em uma fração atual, em que o bloco candidato está dentro de uma faixa de posições de pixel, cada uma das quais corresponde a um pixel reconstruído na fração atual. a faixa de posições de pixel pode compreender (i) uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels que se sobrepõem ao bloco atual, e (ii) uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels que não se sobrepõem ao bloco atual. o método pode compreender adicionalmente determinar e sinalizar um vetor de previsão indicativo de uma posição de pixel do bloco candidato.

Description

CAMPO DA TÉCNICA
[0001] A presente revelação se refere ao campo de compressão e codificação de vídeo e particularmente à compressão de vídeo para transmissão através de enlaces de exibição, como compressão de vídeo de enlace de exibição.
ANTECEDENTES
[0002] As capacidades de vídeo digital podem ser incorporadas em uma ampla faixa de exibições, incluindo televisões digitais, assistentes pessoais digitais (PDAs), computadores tipo laptop, monitores de computador de mesa, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio via satélite ou celular, dispositivos de teleconferência de vídeo e similares. Os enlaces de exibição são usados para conectar exibições a dispositivos de fonte adequados. As exigências de largura de banda de enlaces de exibição são proporcionais à resolução das exibições e, portanto, exibições de alta resolução exigem enlaces de exibição de grande largura de banda. Alguns enlaces de exibição não têm a largura de banda para suportar exibições de alta resolução. A compressão de vídeo pode ser usada para reduzir as exigências de largura de banda de modo que os enlaces de exibição de largura de banda inferior possam ser usados para fornecer vídeo digital para exibições de alta resolução.
[0003] Há esquemas de codificação que envolvem compressão de imagem nos dados de pixel. Entretanto, tais esquemas, por vezes, não são visualmente sem perda ou podem ser difíceis e dispendiosos para implementar em dispositivos de exibição convencional.
[0004] A Associação de Padrões Eletrônicos de Vídeo (VESA) desenvolveu Compressão de Transmissão Continua de Exibição (DSC) como um padrão para compressão de vídeo de enlace de exibição. A técnica de compressão de vídeo de enlace de exibição, como DSC, deve fornecer, entre outras coisas, uma qualidade de figuração que é visualmente sem perda (isto é, figurações que têm um nível de qualidade de modo que os usuários não possam perceber que a compressão está ativa). A técnica de compressão de vídeo de enlace de exibição também deve fornecer um esquema que é fácil e não dispendioso para implementar em tempo real com o hardware convencional.
BREVE DESCRIÇÃO DOS DESENHOS
[0005] A Figura 1A é um diagrama de blocos que ilustra um sistema exemplificativo de codificação e de decodificação de vídeo que pode utilizar técnicas de acordo com aspectos descritos nesta revelação.
[0006] A Figura 1B é um diagrama de blocos que ilustra outro sistema exemplificativo de codificação e decodificação de vídeo que pode realizar técnicas de acordo com aspectos descritos nesta revelação.
[0007] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas.
[0008] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas.
[0009] A Figura 3 é um diagrama de blocos que ilustra o espaço de busca para uma linha que não é a primeira para um bloco 1-D.
[0010] A Figura 4 é um diagrama de blocos que ilustra o espaço de busca para uma linha que não é a primeira para um bloco 2-D.
[0011] A Figura 5 é um diagrama de blocos que ilustra o espaço de busca para uma primeira linha para um bloco 1D.
[0012] A Figura 6 é um diagrama de blocos que ilustra o espaço de busca para uma primeira linha para um bloco 2D.
[0013] A Figura 7 é um fluxograma que ilustra um método para prever um bloco de dados de vídeo no modo de predição de bloco.
[0014] A Figura 8 é um diagrama de blocos que ilustra um bloco que tem partições.
[0015] A Figura 9 é um diagrama de blocos que ilustra um fluxo de dados para o modo de predição de bloco com tamanho de partição adaptativo.
[0016] A Figura 10 é um diagrama de blocos que ilustra as duas opções de partição diferentes para uma região de 2x2 dentro de um bloco.
[0017] A Figura 11 é um diagrama de blocos que ilustra os grupos de codificação por entropia para o modo de predição de bloco.
[0018] A Figura 12 é um diagrama de blocos que ilustra o espaço de busca para um bloco de 2x8.
[0019] A Figura 13 é um diagrama de blocos que ilustra diferentes tamanhos de partição que são usados para diferentes regiões de um bloco.
[0020] A Figura 14 é um fluxograma que ilustra um método para prever um bloco de dados de vídeo no modo de predição de bloco com o uso de tamanhos de partição variáveis.
[0021] A Figura 15 é um diagrama de blocos que ilustra uma busca de predição de bloco exemplificativa para partições de 2x2 para subamostragem de croma de 4:2:0.
[0022] A Figura 16 é um diagrama de blocos que ilustra uma busca de predição de bloco exemplificativa para partições de 1x2 para subamostragem de croma de 4:2:0.
[0023] A Figura 17 é um diagrama de blocos que ilustra uma busca de predição de bloco exemplificativa para partições de 2x2 para subamostragem de croma de 4:2:2.
[0024] A Figura 18 é um diagrama de blocos que ilustra uma busca de predição de bloco exemplificativa para partições de 1x2 para subamostragem de croma de 4:2:2.
[0025] A Figura 19 é um diagrama de blocos que ilustra faixas de busca única para modo de predição de bloco.
[0026] A Figura 20 é um diagrama de blocos que ilustra múltiplas faixas de busca para o modo de predição de bloco.
[0027] A Figura 21 é um fluxograma que ilustra um método para prever um bloco de dados de vídeo no modo de predição de bloco como uso de múltiplas faixas de busca.
[0028] A Figura 22 é um diagrama de blocos que ilustra as regiões de busca exemplificativas para o modo de predição de bloco simplificado.
[0029] A Figura 23 é um diagrama de blocos que ilustra as regiões de busca exemplificativas para o modo de predição de bloco simplificado.
[0030] A Figura 24 é um diagrama de blocos que ilustra as regiões de busca exemplificativas para o modo de predição de bloco simplificado.
[0031] A Figura 25 é um diagrama de blocos que ilustra as regiões de busca exemplificativas para o modo de predição de bloco simplificado.
[0032] A Figura 26 é um fluxograma que ilustra um método para prever um bloco de dados de vídeo no modo de predição de bloco simplificado.
SUMÁRIO
[0033] O padrão de DSC inclui inúmeros modos de codificação em que cada bloco de dados de vídeo pode ser codificado por um codificador e, de modo similar, decodificado por um decodificador. Em algumas implementações, o codificador e/ou o decodificador podem prever o bloco atual a ser codificado com base em um bloco codificado anteriormente.
[0034] Entretanto, os modos de codificação existentes (por exemplo, codificação de transformada, modulação de código de pulso diferencial, etc.) não fornecem uma forma satisfatória de comprimir regiões altamente complexas em dados de vídeo. Frequentemente, para esse tipo de dados (isto é, dados de vídeo altamente comprimidos), o bloco atual a ser codificado (ou os sub-blocos constituintes do bloco atual) tem um conteúdo similar aos blocos anteriores que foram encontrados pelo codificador (por exemplo, codificador ou decodificador). Entretanto, a intrapredição existente pode ser muito limitada para fornecer uma predição satisfatória de tal bloco atual (por exemplo, predição do bloco atual que é suficientemente similar ao bloco atual e, portanto, produzira um resíduo suficientemente pequeno). Dessa forma, um método aprimorado para codificar blocos de dados de vídeo é desejado.
[0035] Os sistemas, métodos e dispositivos desta revelação têm, cada um, diversos aspectos inovadores, nenhum dos quais é responsável exclusivamente pelos atributos desejáveis revelados no presente documento.
[0036] Em um aspecto, um método para codificar um bloco de dados de vídeo no modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante pode incluir: determinar um bloco candidato para ser usado para prever um bloco atual em um segmento atual, em que o bloco candidato está dentro de uma faixa de posições de pixel, cada uma das quais corresponde a um pixel reconstruído no segmento atual, em que a faixa de posições de pixel compreende pelo menos (i) uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, em que a primeira linha de pixels inclui pelo menos um pixel no bloco atual e abrange uma largura inteira do segmento atual, e (ii) uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não inclui qualquer pixel no bloco atual, mas abrange a largura inteira do segmento atual; determinar um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de posições de pixel, em que a posição de pixel do bloco candidato é uma dentre a primeira região ou a segunda região; e codificar o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio de sinalização do vetor de predição.
[0037] Em outro aspecto, um aparelho configurado para codificar um bloco de dados de vídeo no modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante pode incluir: uma memória configurada para armazenar um ou mais pixels reconstruídos de um segmento atual de dados de vídeo, e um ou mais processadores em comunicação com a memória. Os um ou mais processadores podem ser configurados para: determinar um bloco candidato para ser usado para prever um bloco atual no segmento atual, em que o bloco candidato está dentro de uma faixa de posições de pixel, cada uma das quais corresponde a um pixel reconstruído no segmento atual, em que a faixa de posições de pixel compreende pelo menos (i) uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, em que a primeira linha de pixels inclui pelo menos um pixel no bloco atual e abrange uma largura inteira do segmento atual, e (ii) uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não inclui qualquer pixel no bloco atual, mas abrange a largura inteira do segmento atual; determinar um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de posições de pixel, em que a posição de pixel do bloco candidato é uma dentre a primeira região ou a segunda região; e codificar o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio de sinalização do vetor de predição.
[0038] Em outro aspecto, o armazenamento de computador físico não transitório pode compreender um código configurado para codificar um bloco de dados de vídeo no modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante. O código, quando executado, pode fazer com que um aparelho: determine um bloco candidato para ser usado para prever um bloco atual em um segmento atual, em que o bloco candidato está dentro de uma faixa de posições de pixel, cada uma das quais corresponde a um pixel reconstruído no segmento atual, em que a faixa de posições de pixel compreende pelo menos (i) uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, em que a primeira linha de pixels inclui pelo menos um pixel no bloco atual e abrange uma largura inteira do segmento atual, e (ii) uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não inclui qualquer pixel no bloco atual, mas abrange a largura inteira do segmento atual; determine um vetor de predição indicative de uma posição de pixel do bloco candidato dentro da faixa de posições de pixel, em que a posição de pixel do bloco candidato é uma dentre a primeira região ou a segunda região; e codifique o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio de sinalização do vetor de predição.
[0039] Em outro aspecto, um dispositivo de codificação de vídeo pode ser configurado para codificar um bloco de dados de vídeo no modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante. O dispositivo de codificação de vídeo pode compreender: meios para determinar um bloco candidato para ser usado para prever um bloco atual em um segmento atual, em que o bloco candidato está dentro de uma faixa de posições de pixel, cada uma das quais corresponde a um pixel reconstruído no segmento atual, em que a faixa de posições de pixel compreende pelo menos (i) uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, em que a primeira linha de pixels inclui pelo menos um pixel no bloco atual e abrange uma largura inteira do segmento atual, e (ii) uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não inclui qualquer pixel no bloco atual, mas abrange a largura inteira do segmento atual; meios para determinar um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de posições de pixel, em que a posição de pixel do bloco candidato é uma dentre a primeira região ou a segunda região; e maior para codificar o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio de sinalização do vetor de predição.
DESCRIÇÃO DETALHADA
[0040] Em geral, a presente revelação se refere a métodos para aprimorar técnicas de compressão de vídeo, como aquelas utilizadas em compressão de vídeo de enlace de exibição, por exemplo. Mais especificamente, a presente revelação se refere a sistemas e métodos para codificar um bloco de dados de vídeo no modo de predição de bloco com o uso de seleção de faixa de busca adaptativa.
[0041] Embora certas concretizações sejam descritas no presente documento no contexto do padrão de DSC, que é um exemplo de uma técnica de compressão de vídeo de enlace de exibição, um elemento com habilidade comum na técnica irá observar que sistemas e métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, as concretizações reveladas no presente documento podem ser aplicáveis a um ou mais dentre os seguintes padrões: União de Telecomunicação Internacional (ITU) Setor de Padronização de Telecomunicação (ITU-T) H.261, Grupo de Especialistas de Imagem Móvel1 (MPEG-1) Visual da Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC), ITU-TH.262 ou MPEG-2 Visual de ISO/IEC, ITU- TH.263, MPEG-4 Visual de ISO/IEC, ITU-TH.264 (também conhecido como AVC de MPEG-4 de ISO/IEC), Codificação de Vídeo de Alta Eficácia (HEVC) e quaisquer extensões de tais padrões. Além disso, as técnicas descritas na presente revelação podem se tornar parte de padrões desenvolvidos futuramente. Em outras palavras, as técnicas descritas na presente revelação podem ser aplicáveis a padrões de codificação de vídeo desenvolvidos anteriormente, padrões de codificação de vídeo atualmente em desenvolvimento e padrões de codificação de vídeo futuros.
[0042] O padrão de DSC inclui inúmeros modos de codificação em que cada bloco de dados de vídeo pode ser codificado por um codificador e, de modo similar, decodificado por um decodificador. Em algumas implementações, o codificador e/ou o decodificador podem prever o bloco atual a ser codificado com base em um bloco codificado anteriormente.
[0043] Entretanto, os modos de codificação existentes (por exemplo, codificação de transformada, modulação de código de pulso diferencial, etc.) não fornecem uma forma satisfatória de comprimir regiões altamente complexas em dados de vídeo. Frequentemente, para esse tipo de dados (isto é, dados de vídeo altamente comprimidos), o bloco atual a ser codificado (ou os sub-blocos constituintes do bloco atual) tem um conteúdo similar aos blocos anteriores que foram encontrados pelo codificador (por exemplo, codificador ou decodificador). Entretanto, a intrapredição existente pode ser muito limitada para fornecer uma predição satisfatória de tal bloco atual (por exemplo, predição do bloco atual que é suficientemente similar ao bloco atual e, portanto, produzira um resíduo suficientemente pequeno). Dessa forma, um método aprimorado para codificar blocos de dados de vídeo é desejado.
[0044] Na presente revelação, é descrito um método aprimorado para codificar um bloco no modo de predição de bloco. Por exemplo, ao buscar por um bloco-candidato (ou uma região-candidata) a ser usado para prever o bloco atual (ou uma região atual dentro do bloco atual), uma faixa de busca pode ser definida de modo que o codificador tenha acesso a candidatos potenciais que podem ser compatíveis enquanto minimiza o custo de busca. Em outro exemplo, o codificador pode determinar qual dentre as múltiplas faixas de busca usar para codificar o bloco atual com base em uma análise de distorção de taxa (RD). Ainda em outro exemplo, o codificador pode determinar quais dentre os pixels codificados anteriormente devem ser incluídos na faixa de busca usada para codificar o bloco atual com base em uma variedade de fatores como a localização do bloco atual, custo de RD, etc. Realizando-se mais operações (por exemplo, busca por um bloco candidato a ser usado para prever o bloco atual, cálculo de um vetor que identifica a localização do bloco candidato em relação ao bloco atual, comparação de custos associados ao uso de diferentes faixas de busca, etc., que podem consumir os recursos de computação e potência de processamento) no lado de codificador, o método pode reduzir a complexidade de decodificador. Adicionalmente, permitindo-se que múltiplas e/ou faixas de busca adaptativas sejam usadas para codificar um bloco no modo de predição de bloco, a probabilidade de localizar partições candidatas superiores pode ser aumentada, aprimorando, assim, a eficácia de codificação e/ou o desempenho de codificação do modo de predição de bloco. Adicionalmente, permitindo-se que o codificador selecione adaptativamente a faixa de busca a ser usada para codificar cada bloco, o desempenho do esquema de predição de bloco pode ser adicionalmente aprimorado.
Padrões de Codificação de Vídeo
[0045] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por uma gravadora 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 em dezenas de milhares. Cada pixel contém tipicamente informações de luminância e de crominância. Sem compactação, a quantidade absoluta de informações a ser transmitida de um codificador de imagem para um decodificador de imagem tornaria a transmissão de imagem em tempo real impraticável. A fim de reduzir a quantidade de informação a ser transmitida, foram desenvolvidos vários métodos de compressão diferentes, como os padrões JPEG, MPEG e H.263.
[0046] Os padrões de codificação de vídeo incluem ITU-TH.261, MPEG-1 Visual de ISO/IEC, ITU-TH.262 ou MPEG-2 Visual de ISO/IEC, ITU-TH.263, MPEG-4 Visual de ISO/IEC, ITU-TH.264 (também conhecido como AVC de MPEG-4 de ISO/IEC) e HEVC incluindo extensões de tais padrões.
[0047] Adicionalmente, um padrão de codificação de vídeo, a saber DSC, foi desenvolvido por VESA. O padrão de DSC é um padrão de compressão de vídeo que pode comprimir vídeo para transmissão através de enlaces de exibição. À medida em que a resolução de exibições aumenta, a largura de banda dos dados de vídeo necessária para conduzir as exibições aumenta correspondentemente. Alguns enlaces de exibição podem não ter a largura de banda para transmitir todos os dados de vídeo para a exibição para tais resoluções. Consequentemente, o padrão de DSC especifica um padrão de compressão para compressão visualmente sem perda interoperável através de enlaces de exibição.
[0048] O padrão de DSC é diferente de outros padrões de codificação de vídeo, como H.264 e HEVC. A DSC inclui compressão intraquadro, mas não inclui compressão interquadro, o que significa que a informação temporal pode não ser usada pelo padrão de DSC na codificação dos dados de vídeo. Em contrapartida, outros padrões de codificação de vídeo podem empregar compressão interquadro em suas técnicas de codificação de vídeo.
Sistema de Codificação de Vídeo
[0049] Diversos aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente a doravante no presente documento com referência aos desenhos anexos. A presente revelação, entretanto, pode ser incorporada em muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo da presente revelação. Em vez disso, esses aspectos são fornecidos de modo que a presente revelação seja minuciosa e completa, e irão transmitir plenamente o escopo da revelação para os elementos versados na técnica. Com base nos ensinamentos no presente documento, um elemento versado na técnica deve observar que o escopo da revelação se destina a cobrir qualquer aspecto dos sistemas, aparelhos e métodos inovadores revelados no presente documento, sejam os mesmos implantados independentemente ou em combinação com qualquer outro aspecto da revelação. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado com o uso de inúmeros dos aspectos apresentados no presente documento. Adicionalmente, o escopo da presente revelação se destina a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade, ou estrutura e funcionalidade além de ou diferente dos vários aspectos da presente revelação apresentada no presente documento. Deve- se entender que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0050] Embora aspectos particulares sejam descritos no presente documento, muitas variações e permutações desses aspectos são abrangidas pelo escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não se destina a ser limitado a benefícios, usos ou objetivos particulares. Em vez disso, os aspectos da revelação se destinam a ser amplamente aplicáveis a diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e os desenhos são meramente ilustrativos da revelação em vez de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e equivalentes das mesmas.
[0051] Os desenhos anexos ilustram exemplos. Os elementos indicados por numerais de referência nos desenhos anexos correspondem aos elementos indicados por numerais de referência similares na descrição a seguir. Na presente revelação, os elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro", "segundo", "terceiro" entre outros) não implicam necessariamente que os elementos têm uma ordem particular. De preferência, tais palavras ordinais são usadas apenas para diferenciar os elementos de tipos iguais ou semelhantes.
[0052] A Figura 1A é um diagrama de 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 revelação. Como usado no presente documento, o termo "codificador de vídeo" ou "codificador" se refere, em geral, a codificadores de vídeo e decodificadores de vídeo. Nesta revelação, os termos “codificação de vídeo” ou “codificação” podem se referir, de modo geral, à 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 podem se estender 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, de outro modo, manipular um fluxo de bits).
[0053] Como mostrado na Figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo-fonte 12 (isto é, "dispositivo de codificação de vídeo 12" ou "dispositivo de codificação 12") que gera dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo-destino 14 (isto é, "dispositivo de codificação de vídeo 14" ou "dispositivo de codificação 14"). No exemplo da Figura 1A, o dispositivo-fonte 12 e o dispositivo-destino 14 constituem dispositivos separados. Observa-se, entretanto, que o dispositivo-fonte 12 e o dispositivo- destino 14 podem estar ou ser parte do mesmo dispositivo, como mostrado no exemplo da Figura 1B.
[0054] Novamente com referência à Figura 1A, o dispositivo-fonte 12 e o dispositivo-destino 14 podem compreender respectivamente qualquer um dentre uma ampla faixa de dispositivos (também chamados de dispositivos de codificação de vídeo) incluindo computadores de mesa, computadores tipo notebook (por exemplo, computadores tipo laptop), computadores tipo tablet, decodificadores de sinal, aparelhos de telefone como os chamados telefones "inteligentes", os chamados blocos "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo ou similares. Em várias concretizações, o dispositivo-fonte 12 e o dispositivo- destino 14 podem ser equipados para (isto é, configurados para se comunicar por meio de) comunicação sem fio.
[0055] Os dispositivos de codificação de vídeo 12, 14 do sistema de codificação de vídeo 10 podem ser configurados para se comunicar por meio de redes sem fio e tecnologias de rádio, como portadoras de rede de longa distância sem fio (WW AN) (por exemplo, celular) e/ou rede de área local sem fio (WLAN). Os termos "rede" e "sistema" são frequentemente usados de modo intercambiável. Cada um dentre os dispositivos de codificação de vídeo 12, 14 pode ser um equipamento de usuário (UE), um dispositivo sem fio, um terminal, uma estação móvel, uma unidade-assinante, etc.
[0056] As portadoras de WW AN podem incluir, por exemplo, redes de comunicação sem fio como Acesso Múltiplo por Divisão de Código (CDMA), Acesso Múltiplo por Divisão de Tempo (TDMA), Acesso Múltiplo por Divisão de Frequência (FDMA), FDMA Ortogonal (OFDMA), FDMA de Portadora Única (SC- FDMA) e outras redes. Uma rede de CDMA pode implementar uma tecnologia de rádio como Acesso de Rádio Terrestre Universal (UTRA), CDMA2000, etc. O UTRA inclui CDMA de Banda Larga (WCDMA) e outras variantes de CDMA. O CDMA2000 abrange os padrões IS-2000, IS-95 e IS-856. Uma rede de TDMA pode implantar uma tecnologia de rádio como Sistema Global para Comunicações Móveis (GSM). Uma rede de OFDMA pode implantar uma tecnologia de rádio como UTRA Evoluído (E-UTRA), Ultra Banda larga Móvel (UMB), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDMA, etc. UTRA e E-UTRA são parte do Sistema de Telecomunicação Móvel Universal (UMTS). A Evolução a Longo Prazo (LTE) de 3GPP e a LTE-Avançada (LTE- A) são novas versões de UMTS que usam E-UTRA. UTRA, E-UTRA, UMTS, LTE, LTE-A e GSM são descritos em documentos de uma organização chamada "Projeto de Parceria de Terceira Geração" (3GPP). O CDMA2000 e o UMB são descritos nos documentos de uma organização chamada "Projeto de Parceria em Terceira Geração 2" (3GPP2).
[0057] Os dispositivos de codificação de vídeo 12, 14 do sistema de codificação de vídeo 10 também podem se comunicar um com o outro por meio de uma estação base de WLAN de acordo com um ou mais padrões, como o padrão de IEEE 802.11, incluindo, por exemplo, essas emendas: 802.11a-1999 (comumente chamada de "802.11a"), 802.11b-1999 (comumente chamada de "802.11b"), 802.11g-2003 (comumente chamada de "802.11g"), entre outros.
[0058] O dispositivo-destino 14 pode receber, por meio do enlace 16, os dados de vídeo codificados a serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade para mover os dados de vídeo codificados do dispositivo-fonte 12 para o dispositivo-destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o dispositivo-fonte 12 transmita dados de vídeo codificados para o dispositivo-destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo-destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, 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 com base em pacote, como uma rede de área local, uma rede de longa distância ou uma rede global, 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-fonte 12 com o dispositivo-destino 14.
[0059] No exemplo da Figura 1A, o dispositivo-fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 (também chamado simplesmente de codificador 20) e uma 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-fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém 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- fonte ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo- fonte 12 e o dispositivo-destino 14 podem formar os chamados telefones com câmera fotográfica, ou telefones com câmera de vídeo, conforme ilustrado no exemplo da Figura 1B. Entretanto, as técnicas descritas na presente revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio.
[0060] 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-destino 14 através da interface de saída 22 do dispositivo-fonte 12. Os dados de vídeo codificados também podem ser (ou, podem ser alternativamente) armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo-destino 14 ou outros dispositivos para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado nas Figuras 1A e 1B pode compreender o codificador de vídeo 20 ilustrado na Figura 2A, ou qualquer outro codificador de vídeo descrito no presente documento.
[0061] No exemplo da Figura 1A, o dispositivo- destino 14 inclui a interface de entrada 28, um decodificador de vídeo 30 (também chamado simplesmente de decodificador 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-destino 14 pode receber os dados de vídeo codificados pelo enlace 16 e/ou a partir do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados pelo enlace 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, como o decodificador de vídeo 30 na decodificação dos dados de vídeo. Tais elementos de sintaxe podem estar 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. O decodificador de vídeo 30 ilustrado nas Figuras 1A e 1B podem compreender o decodificador de vídeo 30 ilustrado na Figura 2B, ou qualquer outro decodificador de vídeo descrito no presente documento.
[0062] O dispositivo de exibição 32 pode ser integrado ao dispositivo-destino 14 ou externo ao mesmo. Em alguns exemplos, o dispositivo-destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo-destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreende qualquer um dentre uma variedade de dispositivos de exibição como um visor de cristal líquido (LCD), um visor de plasma, um visor de díodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0063] Em aspectos relacionados, a Figura 1B mostra um sistema de codificação de vídeo exemplificativo 10' em que o dispositivo-fonte 12 e o dispositivo-destino 14 estão em um dispositivo 11 ou são parte do mesmo. O dispositivo 11 pode ser um aparelho de telefone, como um telefone "inteligente" ou similares. O dispositivo 11 pode incluir um processador/dispositivo controlador 13 (opcionalmente presente) em comunicação operacional com o dispositivo-fonte 12 e com o dispositivo-destino 14. O sistema de codificação de vídeo 10' da Figura 1B e os componentes do mesmo são, de outro modo, similares ao sistema de codificação de vídeo 10 da Figura 1A, e componentes do mesmo.
[0064] 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 proprietários ou industriais, como o padrão de ITU-TH.264, alternativamente chamado de MPEG-4, Parte 10, AVC, HEVC ou extensões de tais padrões. Os conjuntos de procedimentos dessa revelação, entretanto, não se limitam a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 e ITU-TH.263.
[0065] Embora não seja mostrado nos exemplos das Figuras 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um codificador e decodificador de áudio e podem incluir unidades de MUX- DEMUX adequadas ou outro hardware e software, para gerenciar a codificação tanto do áudio quanto do vídeo em um fluxo de dados comum ou fluxos de dados separados. Caso seja aplicável, em alguns exemplos, as unidades de MUX-DEMUX podem estar em conformidade com o protocolo de multiplexador de ITU H.223 ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[0066] Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser implementado como qualquer um dentre uma variedade de conjuntos de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas da presente revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado em um respectivo dispositivo.
Processo de Codificação de Vídeo
[0067] 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 figurações. Cada uma das figurações é uma imagem estática que faz parte de um vídeo. Em alguns exemplos, uma figuração pode ser denominada "quadro" de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo (por exemplo, dados de camada de codificação de vídeo (VCL) e/ou dados de não VCL), 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 figurações codificadas e dados associados. Uma figuração codificada é uma representação codificada de uma figuração. Os dados de VCL podem incluir dados de figuração codificada (isto é, informação associada às amostras de uma figuração (ou figurações) codificada) e os dados de não VCL podem incluir informação de controle (por exemplo, conjuntos de parâmetro e/ou informação de melhoria suplementar) associada às uma ou mais figurações codificadas.
[0068] Para gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada figuração nos dados de vídeo. Quando o codificador de vídeo 20 realiza as operações de codificação nas figurações, o codificador de vídeo 20 pode gerar uma série de figurações codificadas e dados associados. Os dados associados podem incluir um conjunto de parâmetros de codificação como um parâmetro de quantificação (QP). Para gerar uma figuração codificada, o codificador de vídeo 20 pode particionar uma figuração em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser um arranjo 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 todos os blocos dos dados de vídeo. A opção de codificação pode ser selecionada para alcançar um desempenho de RD desejado.
[0069] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma figuração em uma pluralidade de segmentos. Cada um dentre os segmentos pode incluir uma região espacialmente distinta em uma imagem (por exemplo, um quadro) que pode ser decodificado independentemente, sem informação do resto das regiões na imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em um único segmento ou cada imagem ou quadro de vídeo pode ser codificado em vários segmentos. Em DSC, o número de bits alocados para codificar cada segmento pode ser substancialmente constante. Como parte da realização de uma operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar as operações de codificação em cada segmento da figuração. Quando o codificador de vídeo 20 realiza uma operação de codificação em um segmento, o codificador de vídeo 20 pode gerar dados codificados associados ao segmento. Os dados codificados associados ao segmento podem ser denominados “segmento codificado”. Codificador de Vídeo de DSC
[0070] A Figura 2A é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20 que pode implantar técnicas de acordo com aspectos descritos a presente revelação. O codificador de vídeo 20 pode ser configurado para realizar algumas ou todas as técnicas da presente revelação. Em alguns exemplos, as técnicas descritas na presente revelação podem ser compartilhadas entre os vários componentes de codificador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar algumas ou todas as técnicas descritas na presente revelação.
[0071] Para os propósitos de explicação, a presente revelação descreve o codificador de vídeo 20 no contexto de codificação de DSC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0072] No exemplo da Figura 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem um conversor de espaço de cor 105, um armazenamento temporário 110, um detector de constância 115, um controlador de faixa 120, um componente preditor, quantificador e reconstrutor 125, um armazenamento temporário de linha 130, um histórico de cor indexado 135, um codificador por entropia 140, um multiplexador de subfluxo 145 e um armazenamento temporário de taxa 150. Em outros exemplos, o codificador de vídeo 20 pode incluir mais componentes funcionais, menos componentes funcionais ou componentes funcionais diferentes.
[0073] O conversor de espaço de cor 105 pode converter um espaço de cor de entrada no espaço de cor usado na implementação de codificação. Por exemplo, em uma concretização exemplificativa, o espaço de cor dos dados de vídeo de entrada está no espaço de cor de vermelho, verde e azul (RGB) e a codificação é implementada no espaço de cor de luminância Y, crominância verde Cg e na crominância laranja Co (YCgCo). A conversão de espaço de cor pode ser realizada por um método (ou métodos) que inclui deslocamentos e adições aos dados de vídeo. Observa-se que os dados de vídeo de entrada em outros espaços de cor podem ser processados e as conversões em outros espaços de cor também podem ser realizadas.
[0074] Em aspectos relacionados, o codificador de vídeo 20 pode incluir o armazenamento temporário 110, o armazenamento temporário de linha 130 e/ou o armazenamento temporário de taxa 150. Por exemplo, o armazenamento temporário 110 pode reter (por exemplo, armazenar) os dados de vídeo convertidos em espaço de cor antes de seu uso por outras porções do codificador de vídeo 20. Em outro exemplo, os dados de vídeo podem ser armazenados no espaço de cor de RGB e a conversão de espaço de cor pode ser realizada à medida em que for necessária, visto que os dados convertidos em espaço de cor podem exigir mais bits.
[0075] O armazenamento temporário de taxa 150 pode funcionar como parte do mecanismo de controle de taxa no codificador de vídeo 20, que será descrito em maiores detalhes abaixo em relação ao controlador de faixa 120. O número de bits gastos na codificação de cada bloco pode variar de modo altamente substancial com base na natureza do bloco. O armazenamento temporário de taxa 150 pode suavizar as variações de taxa no vídeo comprimido. Em algumas concretizações, um modelo de armazenamento temporário de taxa de bit constante (CBR) é empregado, em que bits armazenados no armazenamento temporário de taxa (por exemplo, o armazenamento temporário de taxa 150) são removidos do armazenamento temporário de taxa a uma taxa de bit constante. No modelo de armazenamento temporário de CBR, se o codificador de vídeo 20 adicionar muitos bits ao fluxo de bits, o armazenamento temporário de taxa 150 pode ter um sobrefluxo. Por outro lado, o codificador de vídeo 20 pode precisar adicionar bits suficientes para evitar o subfluxo do armazenamento temporário de taxa 150.
[0076] No lado de decodificador de vídeo, os bits podem ser adicionados ao armazenamento temporário de taxa 155 do decodificador de vídeo 30 (consultar Figura 2B, que é descrita em detalhes adicionais abaixo) a uma taxa de bit constante, e o decodificador de vídeo 30 pode remover os números variáveis de bits para cada bloco. Para assegurar a decodificação adequada, o armazenamento temporário de taxa 155 do decodificador de vídeo 30 não deve ter um "subfluxo" ou "sobrefluxo" durante a decodificação do fluxo de bits comprimido.
[0077] Em algumas concretizações, a completude do armazenamento temporário (BF) pode ser definida com base nos valores de BufferCurrentSize (tamanho atual de armazenamento temporário) que representam o número de bits atualmente no armazenamento temporário e BufferMaxSize (tamanho máximo de armazenamento temporário) que representam o tamanho do armazenamento temporário de taxa 150, isto é, o número máximo de bits que podem ser armazenados no armazenamento temporário de taxa 150 em qualquer ponto no tempo. O BF pode ser calculado como:BF = ((BufferCurrentSize * 100) / BufferMaxSize)
[0078] O detector de constância 115 pode detectar alterações de áreas complexas (isto é, não constantes) nos dados de vídeo a áreas constantes (isto é, simples ou uniformes) nos dados de vídeo. Os termos "complexo" e "constante" serão usados no presente documento para fazer referência, em geral, à dificuldade do codificador de vídeo 20 para codificar as respectivas regiões dos dados de vídeo. Dessa forma, o termo complexo, como usado no presente documento, em geral descreve uma região dos dados de vídeo como sendo complexa para o codificador de vídeo 20 codificar e pode, por exemplo, incluir dados de vídeo texturizados, alta frequência espacial e/ou outros recursos que são complexos para codificar. O termo constante, como usado no presente documento, em geral descreve 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 suave nos dados de vídeo, baixa frequência espacial e/ou outros recursos que são simples para codificar. As transições entre regiões complexas e constantes podem ser usadas pelo codificador de vídeo 20 para reduzir os artefatos de quantificação nos dados de vídeo codificados. Especificamente, o controlador de faixa 120 e o componente preditor, quantificador e reconstrutor 125 podem reduzir tais artefatos de quantificação quando as transições de regiões complexas para constantes forem identificadas.
[0079] O controlador de faixa 120 determina um conjunto de parâmetros de codificação, por exemplo, um QP. O QP pode ser ajustado pelo controlador de faixa 120 com base na completude do armazenamento temporário do armazenamento temporário de taxa 150 e na atividade de dados dos dados de vídeo para maximizar a qualidade de figuração para uma taxa de bits-alvo, o que assegura que o armazenamento temporário de taxa 150 não tenha um sobrefluxo ou subfluxo. O controlador de faixa 120 também seleciona uma opção de codificação particular (por exemplo, um modo particular) para cada bloco dos dados de vídeo para alcançar o desempenho de RD ideal. O controlador de faixa 120 minimiza a distorção das imagens reconstruídas de modo que o controlador de faixa 120 satisfaça a restrição de taxa de bits, isto é, a taxa de codificação geral se encaixa na taxa de bits-alvo.
[0080] O componente preditor, quantificador e reconstrutor 125 pode realizar 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 inúmeros modos diferentes. Um modo de predição exemplificativo é uma versão modificada de predição de mediana adaptativa. A predição de mediana adaptativa pode ser implementada pelo padrão de JPEG sem perda (JPEG-LS). A versão modificada de predição de mediana adaptativa que pode ser realizada pelo componente preditor, quantificador e reconstrutor 125 pode permitir uma predição paralela de três valores de amostra consecutivos. Outro modo de predição exemplificativo é a predição de bloco. Na predição de bloco, as amostras são previstas a partir de pixels reconstruídos anteriormente na linha acima ou à esquerda na mesma linha. Em algumas concretizações, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, ambos, realizar uma busca idêntica nos pixels reconstruídos para determinar os usos de predição de bloco e, portanto, nenhum bit precisa ser enviado no modo de predição de bloco. Em outras concretizações, o codificador de vídeo 20 pode realizar a busca e sinalizar os vetores de predição de bloco no fluxo de bits, de modo que o decodificador de vídeo 30 não precise realizar uma busca separada. Um modo de predição de ponto médio também pode ser implementado, no qual as amostras são previstas com o uso do ponto médio da faixa de componente. O modo de predição de ponto médio pode possibilitar a ligação do número de bits necessários para o vídeo comprimido mesmo na amostra de pior hipótese. Conforme discutido adicionalmente abaixo, em referência às Figuras 3 a 26, o componente preditor, quantificador e reconstrutor 125 pode ser configurado para codificar (por exemplo, codificar ou decodificar) o bloco de dados de vídeo (ou qualquer outra unidade de predição) com base em uma ou mais técnicas descritas no presente documento. Por exemplo, o componente preditor, quantificador e reconstrutor 125 pode ser configurado para realizar os métodos ilustrados nas Figuras 3 a 26. Em outras concretizações, o componente preditor, quantificador e reconstrutor 125 pode ser configurado para realizar um ou mais métodos ou técnicas descritas no presente documento com um ou mais outros componentes do codificador de vídeo 20.
[0081] O componente preditor, quantificador e reconstrutor 125 também realiza a quantificação. Por exemplo, a quantificação pode ser realizada por meio de um quantificador da potência de 2, o qual pode ser implementado com o uso de um deslocador. Observa-se que outras técnicas de quantificação podem ser implementadas no lugar do quantificador da potência de 2. A quantificação realizada pelo componente preditor, quantificador e reconstrutor 125 pode ser baseada no QP determinado pelo controlador de faixa 120. Por fim, o componente preditor, quantificador e reconstrutor 125 também realiza reconstrução, o que inclui adicionar o resíduo quantificado inverso ao valor previsto e assegurar que o resultado não fique fora da faixa válida de valores de amostra.
[0082] Observa-se que as abordagens exemplificativas descritas acima para predição, quantificação e reconstrução realizadas pelo componente preditor, quantificador e reconstrutor 125 são meramente ilustrativas e que outras abordagens podem ser implementadas. Observa-se, ainda, que o componente preditor, quantificador e reconstrutor 125 pode incluir subcomponente (ou subcomponentes) para realizar a predição, a quantificação e/ou a reconstrução. Observa-se, adicionalmente, que a predição, a quantificação e/ou a reconstrução podem ser realizadas por vários componentes codificadores separados no lugar do componente preditor, quantificador e reconstrutor 125.
[0083] O armazenamento temporário de linha 130 retém (por exemplo, armazena) 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 cor indexado 135 possa usar os dados de vídeo armazenados temporariamente. O histórico de cor indexado 135 armazena valores de pixel usados recentemente. Esses valores de pixel usados recentemente podem ser mencionados diretamente pelo codificador de vídeo 20 por meio de uma sintaxe dedicada.
[0084] O codificador por entropia 140 codifica os resíduos de predição e quaisquer outros dados (por exemplo, índices identificados pelo componente preditor, quantificador e reconstrutor 125) recebidos a partir do componente preditor, quantificador e reconstrutor 125 com base no histórico de cor indexado 135 e nas transições de constância identificadas pelo detector de constância 115. Em alguns exemplos, o codificador por entropia 140 pode codificar três amostras por relógio por codificador de subfluxo. O multiplexador de subfluxo 145 pode multiplexar o fluxo de bits com base em um esquema de multiplexação de pacote sem cabeçalho. Isso permite que o decodificador de vídeo 30 execute três decodificadores por entropia paralelamente, facilitando a decodificação de três pixels por relógio. O multiplexador de subfluxo 145 pode otimizar a ordem de pacote, de modo que os pacotes possam ser eficientemente decodificados pelo decodificador de vídeo 30. Observa-se que diferentes abordagens para a codificação por entropia podem ser implementadas, o que pode facilitar a decodificação de pixels à potência de 2 por relógio (por exemplo, 2 pixels/relógio ou 4 pixels/relógio).
Decodificador de Vídeo de DSC
[0085] A Figura 2B é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implantar técnicas de acordo com aspectos descritos na presente revelação. O decodificador de vídeo 30 pode ser configurado para realizar algumas ou todas as técnicas da presente revelação. Em alguns exemplos, as técnicas descritas na presente revelação podem ser compartilhadas entre os vários componentes de decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar algumas ou todas as técnicas descritas na presente revelação.
[0086] Para os propósitos de explicação, a presente revelação descreve o decodificador de vídeo 30 no contexto de codificação de DSC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0087] No exemplo da Figura 2B, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem um armazenamento temporário de taxa 155, um demultiplexador de subfluxo 160, um decodificador por entropia 165, um controlador de faixa 170, um componente preditor, quantificador e reconstrutor 175, um histórico de cor indexado 180, um armazenamento temporário de linha 185 e um conversor de espaço de cor 190. Os componentes ilustrados do decodificador de vídeo 30 são análogos aos componentes correspondentes descritos acima em relação ao codificador de vídeo 20 na Figura 2A. Portanto, cada um dentre os componentes do decodificador de vídeo 30 pode operar de um modo similar aos componentes correspondentes do codificador de vídeo 20 como descrito acima. Em algumas concretizações, um ou mais componentes do codificador de vídeo 20 e/ou decodificador de vídeo 30 podem ser implementados por um ou mais processadores de hardware configurados para executar código de software configurados para realizar as tarefas de tais componentes. Em outras concretizações, um ou mais componentes do codificador de vídeo 20 e/ou do decodificador de vídeo 30 podem ser implementados por conjunto de circuitos de hardware configurados para realizar as tarefas de tais componentes. Segmentos em DSC
[0088] Como observado acima, um segmento geralmente se refere a uma região espacialmente distinta em uma imagem ou um quadro que pode ser decodificada independentemente, sem usar a informação do restante das regiões na imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em um único segmento ou pode ser codificado em vários segmentos. Na DSC, os bits-alvo alocados para codificar cada segmento podem ser substancialmente constantes.
Modo de Predição de Bloco
[0089] Um único bloco de dados de vídeo pode conter um número de pixels e cada bloco de dados de vídeo tem inúmeros modos de codificação potenciais em que o bloco pode ser codificado. Um dentre tais modos de codificação é o modo de predição de bloco. No modo de predição de bloco, o codificador tenta encontrar um bloco-candidato na linha reconstruída anteriormente (por exemplo, se o bloco atual não estiver na primeira linha do segmento atual) ou nos blocos reconstruídos anteriores na mesma linha (por exemplo, se o bloco atual estiver na primeira linha do segmento atual) que é próximo (por exemplo, em valores de pixel) ao bloco atual a ser codificado. Em algumas concretizações, a proximidade entre valores de pixel é determinada pela métrica de Soma de Diferenças Absolutas (SAD). O codificador pode tentar encontrar o bloco-candidato em qualquer porção dos blocos reconstruídos anteriores definida por uma faixa de busca (por exemplo, a qual pode ser um valor predeterminado conhecido tanto pelo codificador quanto pelo decodificador). A faixa de busca é definida de modo que o codificador tenha candidatos potenciais dentro da faixa de busca para encontrar uma boa compatibilidade enquanto minimiza o custo de busca. A eficácia de codificação do modo de predição de bloco é proveniente do fato de que, se um bom candidato (isto é, um candidato dentro da faixa de busca que é determinada como próxima em valores de pixel ao bloco atual a ser codificado) for descoberto, a diferença (conhecida como o resíduo) entre o bloco-candidato e o bloco atual será pequena. O pequeno resíduo precisará de um número menor de bits para sinalizar em comparação com o número de bits necessários para sinalizar os valores de pixel reais do bloco atual, resultando, assim, em um custo de RD inferior e aumentando a probabilidade de ser selecionado pelo mecanismo de RD. O aumento do desempenho pela habilitação do modo de predição de bloco é extremamente significativo para certos tipos de conteúdo gráfico.
Parâmetros no Modo de Predição de Bloco
[0090] O modo de predição de bloco é projetado para produzir um bloco-candidato, considerando-se uma faixa de busca especificada, que fornece a distorção mínima do bloco atual a ser codificado. Em algumas concretizações, a distorção mínima é definida com o uso de SAD. Em algumas implementações da presente revelação, o método de predição de bloco é definido por três parâmetros: a faixa de busca (SR), inclinação (a) e o tamanho de partição (β). Esses três parâmetros afetam o desempenho do modo de predição de bloco e podem ser ajustados (isto é, modificados ou reconfigurados) durante a implementação. Esses parâmetros podem ser conhecidos tanto pelo codificador quanto pelo decodificador. Espaço de Busca no Modo de Predição de Bloco
[0091] Em algumas concretizações da presente revelação, o espaço de busca (por exemplo, localizações espaciais de pixels que o codificador pode buscar para encontrar um bloco-candidato) podem diferir com base nas características do bloco atual. O espaço de busca pode englobar todos os blocos/pixels reconstruídos anteriormente, mas o codificador e/ou o decodificador pode limitar a busca por um bloco-candidato a uma porção especificada (por exemplo, uma "faixa de busca" definida por um ou mais parâmetros que são predefinidos ou sinalizados no fluxo de bits) dentro do espaço de busca, por exemplo, para reduzir a complexidade computacional. Os exemplos do espaço de busca de predição de bloco são ilustrados nas Figuras 3 a 6; As Figuras 3 e 4 ilustram casos que envolvem um bloco atual (por exemplo, os blocos atuais 308 e 408) que não está na primeira linha do segmento atual. As Figuras 5 e 6 ilustram casos que envolvem um bloco atual (por exemplo, os blocos atuais 506 e 606) que está na primeira linha do segmento atual. Esses dois casos são manuseados separadamente devido ao fato de que a primeira linha em um segmento não tem vizinhos verticais. Portanto, os pixels reconstruídos a partir da linha atual podem ser alavancados como uma faixa de busca (por exemplo, faixas de busca 508 e 608). Na presente revelação, a primeira linha no segmento atual pode ser chamada de uma FLS e qualquer outra linha no segmento atual pode ser chamada de uma FLS.
[0092] Adicionalmente, as técnicas de predição de bloco descritas no presente documento podem ser implementadas em um codec com o uso de um único armazenamento temporário de linha (isto é, tamanho de bloco 1-D) ou um codec com o uso de múltiplos armazenamentos temporários de linha (isto é, tamanho de bloco 2-D). Os exemplos do espaço de busca para o caso de 1-D são mostrados nas Figuras 3 e 5, e os exemplos do espaço de busca para o caso de 2-D são mostrados nas Figuras 4 e 6. No caso de 2-D, a faixa de busca pode incluir pixels da linha reconstruída anteriormente (por exemplo, linha anterior 402) ou blocos reconstruídos a partir das mesmas linhas que aquelas no bloco de 2-D (por exemplo, o anterior 604 na linha atual 602, que é imediatamente à esquerda do bloco atual 606). O bloco de 2-D pode ser particionado horizontalmente ou verticalmente ou ambos. No caso que envolve partições de bloco, um vetor de predição de bloco pode ser especificado para cada partição de bloco.
Implementações Exemplificativas do Modo de Predição de Bloco
[0093] Em algumas concretizações da presente revelação, uma métrica de distorção além da SAD pode ser usada, por exemplo, a soma de diferenças quadradas (SSD). Alternativa ou adicionalmente, a distorção pode ser modificada por ponderação. Por exemplo, se o espaço de cor de YCoCg estiver sendo usado, então, o custo pode ser calculado como:
[0094] As técnicas de predição de bloco descritas no presente documento podem ser realizadas tanto no espaço de cor de RGB ou no espaço de cor de YCoCg. Adicionalmente, uma implementação alternativa pode usar ambos os espaços de cor e sinalizar um sinalizador de 1 bit para o decodificador, o qual indica qual dentre os dois espaços de cor é selecionado (por exemplo, qual espaço de cor tem o menor custo em termos de taxa e distorção).
[0095] Em algumas concretizações da presente revelação em relação à FLS, o bloco ou blocos diretos reconstruídos anteriormente podem ser excluídos da faixa de busca devido às restrições de canalização e de temporização. Por exemplo, dependendo da implementação de hardware, o codificador pode não ter completado o processamento do bloco reconstruído anterior direto até o momento em que o bloco atual é processado pelo codificador (por exemplo, os pixels reconstruídos para o bloco anterior podem não ser conhecidos quando o codificador começa a processar o bloco atual), resultando em atrasos ou falhas. Em tal implementação, restringindo-se o uso de blocos reconstruídos anteriores àqueles blocos para os quais os valores de pixel reconstruídos são conhecidos (por exemplo, excluindo-se o bloco ou blocos reconstruídos anteriores diretos), as preocupações de canalização ilustradas acima podem ser resolvidas. Em algumas concretizações da presente revelação a respeito de NFLS, a faixa de busca à esquerda do bloco atual pode ser da mesma linha em vez da linha reconstruída anteriormente. Em algumas de tais concretizações, um ou mais blocos reconstruídos anteriores podem ser excluídos da faixa de busca devido às restrições de canalização e temporização.
Implementação Exemplificativa de NFLS
[0096] Como mostrado na Figura 3, o método de predição de bloco pode buscar através da faixa de busca 310 (SR) no espaço de busca para encontrar um candidato para o bloco atual 308 (e, de modo similar, no espaço de busca 400 da Figura 4). Se a posição de coordenada de x do primeiro pixel do bloco atual 308 a ser codificado for j, então, o conjunto de posições iniciais k de todos os blocos-candidatos dentro do espaço de busca pode ser fornecido como:
[0097] Neste exemplo, o parâmetro α inclina a posição de coordenada de x da faixa de busca 310 em relação ao bloco atual a ser codificado. Um valor superior de α desloca a faixa de busca 310 para a direita, enquanto um valor inferior de α desloca a faixa de busca 310 para a esquerda. Por exemplo, (i) SR de 32 e α de 15 pode colocar a faixa de busca 310 no centro da linha anterior 302, (ii) SR de 32 e α de 0 pode colocar a faixa de busca 310 no lado esquerdo da linha anterior 302 e (iii) SR de 32 e α de 31 pode colocar a faixa de busca 310 no lado direito da linha anterior 302.
[0098] Em algumas implementações da presente revelação, um pixel que está dentro da faixa de busca, porém, fora do limite de segmento pode ser definido como a metade da faixa dinâmica para tal pixel. Por exemplo, se o conteúdo for RGB888, então, o valor-padrão de 128 pode ser usado para R, G e B. Se o conteúdo estiver no espaço de YCoCg, então, um valor-padrão de 128 pode ser usado para Y, e um valor- padrão de 0 pode ser usado para Co e Cg (por exemplo, Co e Cg são valores de 9 bits que são centralizados ao redor de 0).
Implementação Exemplificativa de FLS
[0099] Como mostrado na Figura 5, a faixa de busca pode ser diferente para o caso de FLS. Isso se deve ao fato de que os vizinhos verticais não estão disponíveis, visto que tais vizinhos verticais estão fora do quadro atual ou visto que tais vizinhos verticais são contidos dentro de um segmento diferente. Em algumas concretizações da presente revelação a respeito do caso de FLS, os pixels na linha atual podem ser usados para predição de bloco. Em uma concretização, qualquer pixel na linha atual à esquerda do bloco atual pode ser considerado como parte da faixa de busca. Em outra concretização, um ou mais blocos codificados anteriormente (por exemplo, o bloco anterior 504 que está imediatamente à esquerda do bloco atual) podem ser excluído da faixa de busca devido às restrições de canalização e temporização.
[0100] Em algumas implementações de FLS, a faixa disponível para os primeiros poucos blocos na primeira linha do segmento pode ser menor do que a faixa de busca que é tipicamente esperada para outros blocos. Isso se deve ao fato de que a posição válida para blocos-candidatos se inicia no começo da linha e termina antes do bloco atual. Para os primeiros poucos blocos na FLS, essa faixa válida pode ser menor do que a faixa desejada (por exemplo, 32 ou 64 posições). Dessa forma, para esses blocos, a faixa de busca pode precisar ser ajustada de modo que cada partição de bloco do bloco-candidato seja completamente contida dentro da faixa de busca. Para FLS, a faixa de busca pode ser deslocada para a esquerda ou para a direita, de modo que o número total de posições de busca seja igual à faixa de busca definida (por exemplo, 32 ou 64 posições de pixel). Visto que j é o primeiro pixel no bloco atual, o último pixel no bloco atual será j + blkWidth - 1. Por essa razão, a faixa de busca pode precisar ser deslocada (blkWidth - 1) pixels para a esquerda.
[0101] Em algumas implementações de FLS, se a localização de coordenada de x do primeiro pixel do bloco atual a ser codificado for chamada de j, então, o conjunto de posições iniciais de todos os blocos-candidatos dentro da faixa de busca é fornecido como:
[0102] (i) se o bloco reconstruído anterior mais recente for parte da faixa de busca, por exemplo, a—1:
[0103] (ii) se n blocos reconstruídos anteriores mais recentes precisarem ser excluídos da faixa de busca:
[0104] em que blkx é a largura de bloco. Qualquer pixel fora do limite de segmento pode ser definido como um valor-padrão como descrito acima em relação ao caso de NFLS. Deve-se observar, ainda, que nenhum parâmetro de inclinação precisa ser associado ao caso de FLS.
Fluxograma Exemplificativo para Codificação no Modo de Predição de Bloco
[0105] Com referência à Figura 7, um procedimento exemplificativo para codificar um bloco de dados de vídeo no modo de predição de bloco será descrito. As etapas ilustradas na Figura 7 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 na Figura 2A), um decodificador de vídeo (por exemplo, p decodificador de vídeo 30 na Figura 2B) ou componente (ou componentes) dos mesmos. Visando a conveniência, o método 700 é descrito como realizado por um codificador de vídeo (também simplesmente chamado de codificador), que pode ser o codificador de vídeo 20, o decodificador de vídeo 30 ou outro componente.
[0106] O método 700 começa no bloco 701. No bloco 705, o codificador determina um bloco-candidato a ser usado para prever um bloco atual em um segmento atual. O bloco candidato pode estar dentro de uma faixa de localizações (ou posições de pixel) definidas por um ou mais parâmetros de predição de bloco. Por exemplo, os parâmetros de predição de bloco podem incluir (i) um parâmetro de faixa de busca que define o tamanho da faixa de localizações, (ii) um parâmetro de inclinação que define a localização relativa da faixa de localizações em relação ao bloco atual e (iii) um parâmetro de tamanho de partição que define o tamanho de cada partição no bloco atual. Em algumas concretizações da presente revelação, cada um dentre o parâmetro de faixa de busca, o parâmetro de inclinação e o parâmetro de tamanho de partição define espacialmente, em vez de temporalmente, as localizações do bloco-candidato.
[0107] No bloco 710, o codificador determina um vetor de predição com base no bloco-candidato e no bloco atual. O vetor de predição pode identificar a localização do bloco- candidato em relação ao bloco atual. O vetor de predição pode incluir um ou mais valores de coordenada (por exemplo, um valor de coordenada que indica o desvio no espaço de 1D). No bloco 715, o codificador codifica o bloco atual no modo de predição de bloco pelo menos em parte por meio de sinalização do vetor de predição. Em algumas concretizações, o codificador também pode sinalizar o resíduo entre o bloco- candidato e o bloco atual. Economias de bit podem ser alcançadas sinalizando-se o vetor de predição que identifica a localização do bloco-candidato e o resíduo que representa a diferença entre o bloco atual e o bloco-candidato, em vez de precisar sinalizar os valores de pixel reais do bloco atual. O método 700 termina no bloco 720.
[0108] No método 700, um ou mais dentre os blocos mostrados na Figura 7 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas concretizações, blocos adicionais podem ser adicionados ao método 700. As concretizações da presente revelação não são limitadas a ou pelo exemplo mostrado na Figura 7, e outras variações podem ser implementadas sem que se afastem do espírito da presente revelação.
Após Encontrar o Bloco-Candidato
[0109] Após o melhor bloco-candidato ter sido determinado, os valores de pixel do bloco-candidato são subtraídos dos valores de pixel do bloco atual, resultando no resíduo. O resíduo pode ser quantificado com base em um QP pré-selecionado associado ao modo de predição de bloco. O resíduo quantificado pode ser codificado com o uso de um livro de códigos (que pode ter comprimento fixo ou comprimento variável) e sinalizado com o uso de um código de comprimento fixo ou um código de comprimento variável. O livro de códigos selecionado pode ser baseado nas exigências de eficácia de codificação e de complexidade de hardware. Por exemplo, o livro de códigos selecionado pode ser um livro de códigos tipo Exp-Golomb. Em algumas concretizações da presente revelação, um esquema de codificação por entropia que é similar à codificação de comprimento variável da unidade de tamanho de delta (DSU- VLC) de implementações de DSC existentes pode ser usado. Em algumas concretizações, o resíduo pode ser transformado (por exemplo, com o uso de uma transformada de cosseno direta, uma transformada de Hadamard ou outras transformadas conhecidas) antes da quantificação descrita acima.
[0110] Em algumas concretizações da presente revelação, as amostras no resíduo do bloco atual podem ser particionadas em múltiplos grupos (por exemplo, 4 amostras por grupo para um bloco que contém 16 amostras). Se todos os coeficientes no bloco forem zero, então, o resíduo do bloco é codificado com o uso do modo de salto, isto é, o sinalizador de 1 bit por bloco (por componente) é sinalizado para indicar se o componente atual no bloco é codificado com o uso do modo de salto ou não. Se pelo menos um valor diferente de zero for contido dentro do bloco, cada grupo pode ser codificado com o uso apenas de DSU-VLC se o grupo tiver um valor diferente de zero. Se o grupo (por exemplo, 4 amostras dentre as 16 amostras no resíduo) não contiver nenhum valor diferente de zero, o grupo é codificado com o uso do modo de salto, isto é, o sinalizador de 1 bit por grupo é sinalizado para indicar se o grupo é codificado com o uso do modo de salto ou não. Mais especificamente, para cada grupo, uma busca pode ser realizada para determinar se todos os valores no grupo são zero. Se todos os valores no grupo forem zero, um valor de "1" pode ser sinalizado para o decodificador; de outro modo (se pelo menos um valor for diferente de zero), um valor de "0" pode ser sinalizado para o decodificador, seguido da codificação da codificação de DSU-VLC. Em um exemplo alternativo, um valor de "0" pode ser sinalizado se todos os valores no grupo forem zero e um valor de "1" pode ser sinalizado se o grupo contiver pelo menos um valor diferente de zero.
[0111] Em algumas concretizações da presente revelação, o melhor bloco-candidato é sinalizado explicitamente para o decodificador transmitindo-se um código de comprimento fixo que contém o melhor desvio. O desvio pode ser chamado de um "vetor". A vantagem de sinalizar o vetor explicitamente para o decodificador é que o decodificador não precisará, ele mesmo, realizar a busca de bloco. Em vez disso, o decodificador irá receber o vetor explicitamente e adicionar o bloco-candidato aos valores residuais desquantificados decodificados para determinar os valores de pixel do bloco atual.
Particionamento de Bloco
[0112] Em algumas concretizações da presente revelação, o bloco atual a ser codificado pode ser particionado, resultando em múltiplos blocos-candidatos e múltiplos vetores por bloco. Em algumas de tais concretizações, o vetor (ou vetores) pode ser explicitamente sinalizado com o uso de um código de comprimento fixo. Por exemplo, o comprimento desse código de comprimento fixo pode ser log2(SR). Em outra concretização, o vetor (ou vetores) pode ser explicitamente sinalizado com o uso de um código de comprimento variável, como um código das famílias de código Exponential-Golomb ou Golomb-Rice. O presente livro de códigos poderia ser selecionado com base na distribuição estatística associada ao vetor (ou vetores). Ainda em outra concretização, o vetor (ou vetores) pode ser previsto com base no vetor (ou vetores) codificado anteriormente, e o resíduo do vetor (ou vetores) pode ser codificado com o uso de algum código de comprimento fixo ou código de comprimento variável. Ainda em outra concretização, o vetor (ou vetores) pode ser previsto com base no vetor (ou vetores) codificado anteriormente, e um sinalizador de 1 bit pode ser usado para sinalizar se os dois vetores são idênticos. Esse sinalizador pode ser chamado de SameFlag. Se o SameFlag = 1, então, o valor de vetor em si não precisa ser sinalizado para o decodificador. Se SameFlag = 0, então, o vetor será sinalizado explicitamente (por exemplo, com o uso de um código de comprimento fixo ou código de comprimento variável). Um esquema de particionamento de bloco exemplificativo é ilustrado na Figura 8.
[0113] Como mostrado no diagrama 800 da Figura 8, um bloco atual 802 contém uma única partição. A informação sinalizada para o bloco atual 802 compreende um cabeçalho de modo, um SameFlag de vetor, um vetor A e uma carga. Um bloco atual 804 contém duas partições, a partição A e a partição B. A informação sinalizada para o bloco atual 804 compreende um cabeçalho de modo, um SameFlag de vetor, um vetor A, um SameFlag de vetor, um vetor B e uma carga. Como descrito acima, um ou mais itens listados acima podem não ser sinalizados. Por exemplo, se o SameFlag de vetor for igual a 1, o vetor seguinte não precisa ser sinalizado.
[0114] O tamanho de partição β pode determinar o particionamento do bloco atual em sub-blocos separados. Em tal caso, uma predição de bloco separada pode ser realizada para cada sub-bloco. Por exemplo, se o tamanho de bloco for N = 16 e o tamanho de partição β = 8β = 8, então, a busca será realizada para cada uma dentre as 16 / 8 = 2 partições. Em outro exemplo, se β = N, o particionamento de bloco é desabilitado. Se β < N, então, cada vetor pode ser sinalizado explicitamente para o decodificador. Se a predição de vetor (por exemplo, com o uso de vetores sinalizados anteriormente para definir os vetores atuais) não for empregada, então, cada vetor será sinalizado com o uso de um código de comprimento fixo ou código de comprimento variável. Se a predição de vetor for empregada, o primeiro vetor pode ser previsto a partir do vetor codificado anterior (por exemplo, armazenado na memória) e para n > 0, o vetor n é previsto a partir do vetor n - l. Tamanho de Partição Variável no Modo de Predição de Bloco
[0115] Os exemplos acima ilustram como os blocos que têm um tamanho de 1x8 (por exemplo, que têm uma altura de 1 pixel e uma largura de 8 pixels) ou 2x8 (por exemplo, que têm uma altura de 2 pixels e uma largura de 8 pixels) podem ser codificados no modo de predição de bloco. Como mostrado na Figura 8, um bloco pode ser particionado em múltiplas regiões e cada região pode ser codificada com o uso de diferentes esquemas de particionamento (por exemplo, com o uso de partições de 1x2, com o uso de partições de 2x2, etc.), e um vetor de predição de bloco pode ser especificado para cada partição (por exemplo, sinalizado no fluxo de bits juntamente com o resíduo associado a cada partição). Por exemplo, cada bloco pode ser particionado em múltiplas partições de 1x2 que contêm dois pixels (ou partições de outros tamanhos fixos).
[0116] Em outras concretizações, o codificador pode determinar o tamanho de partição de bloco que é mais eficaz para cada bloco (para cada sub-região dentro do bloco). A eficácia pode ser medida com base na taxa e distorção associadas à codificação do bloco (ou uma sub-região no mesmo) com o uso do dado tamanho de partição de bloco. Por exemplo, ao codificar um bloco que contém quatro regiões de 2x2, o codificador pode determinar que a maior eficácia de codificação pode ser alcançada codificando-se as primeiras três regiões de 2x2 com o uso de partições únicas (por exemplo, uma única partição de 2x2 para cada região de 2x2) e codificando-se a quarta região de 2x2 com o uso de duas partições (por exemplo, duas partições de 1x2). Permitindose que o codificador selecione adaptativamente o tamanho de partição para cada bloco, o desempenho do esquema de predição de bloco pode ser adicionalmente aprimorado. Isso se deve ao fato de que grandes partições podem ser usadas para regiões suaves (por exemplo, regiões que não exibem nenhuma alteração ou menos do que uma quantidade de limiar de alteração nos valores de pixel através da região), exigindo, assim, menos bits para sinalizar vetores de predição de bloco (por exemplo, em relação ao tamanho da região), enquanto a utilização de menores partições pode ser usada para regiões complexas (em que a diminuição na taxa de distorção e/ou codificação por entropia pesa mais do que o custo de sinalização adicional). Por exemplo, o codificador pode determinar se uma dada região ou bloco satisfaz uma condição de limiar de suavidade e, em resposta à determinação de que a dada região ou bloco satisfaz a condição de limiar de suavidade, codificar a dada região ou bloco no modo de predição de bloco com o uso de um tamanho de partição maior (e, de outro modo, codificar a dada região ou bloco no modo de predição de bloco com o uso de um tamanho de partição menor). Como outro exemplo, o codificador pode determinar se uma dada região ou bloco satisfaz uma condição de limiar de complexidade e, em resposta à determinação de que a dada região ou bloco satisfaz a condição de limiar de complexidade, codificar a dada região ou bloco no modo de predição de bloco com o uso de um tamanho de partição menor (e, de outro modo, codificar a dada região ou bloco no modo de predição de bloco com o uso de um tamanho de partição maior). A capacidade para selecionar adaptativamente diferentes tamanhos de partição pode permitir que o modo de predição de bloco seja usado em uma gama maior de tipos de conteúdo (por exemplo, conteúdo gráfico, imagens naturais, padrões de teste, renderização de texto fina, etc.).
Fluxo de Dados Exemplificativo de Codificação no Modo de Predição de Bloco
[0117] A Figura 9 ilustra um fluxo de dados exemplificativo 900 para codificar um bloco no modo de predição de bloco com o uso do tamanho de partição adaptativo. Como ilustrado na Figura 9, um bloco atual 902 a ser previsto no modo de predição de bloco inclui uma partição de bloco 904. Em um exemplo, a partição de bloco tem um tamanho de 1x2 ou 2x2. Uma busca de predição de bloco (BP) 906 é conduzida para identificar um bloco ou partição que já foi codificado e disponível para predição do bloco atual 902 (ou da partição de bloco 904) no modo de predição de bloco. Como mostrado na Figura 9, a busca de BP 906 pode buscar dentro de uma faixa de busca, por exemplo, incluindo um ou mais blocos reconstruídos anteriores 907A em uma linha anterior (por exemplo, a linha codificada anterior para codificar a linha atual incluindo o bloco atual, como a linha imediatamente anterior ou outra linha anterior) e/ou blocos reconstruídos anteriores 907B da linha atual (por exemplo, a linha que inclui o bloco atual).
[0118] O codificador determina um preditor de bloco 908 com base em um bloco-candidato ou partição identificada na faixa de busca. O preditor de bloco 908 é subtraído do bloco atual 902 (ou da partição de bloco atual 904 dentro do bloco candidato 902) no bloco 910, e o resíduo determinado com base na subtração é quantificado no bloco 912. O resíduo quantificado é codificado por entropia pelo codificador de entropia 920. Adicionalmente, a quantificação inversa 914 é realizada no resíduo quantificado e o resultado é adicionado ao preditor de bloco 908 no bloco 916 para produzir um bloco reconstruído 918. Uma seleção de tamanho de partição de BP 922 é realizada com base no desempenho de distorção (D) do bloco reconstruído 918 e no desempenho de taxa (R) do resíduo codificado por entropia. Um fluxo de bits 924 é gerado com base no tamanho de partição de BP selecionado.
[0119] Por exemplo, a seleção de tamanho de partição de BP 922 pode tomar, como entrada, a taxa (por exemplo, R) e a distorção (por exemplo, D) de cada região de partição (por exemplo, 2x2) dentro do bloco atual 902 e determinar se a região de partição deve ser codificada com o uso de um único vetor de predição de bloco (BPV) (por exemplo, 1 BPV total para uma única partição de 2x2) ou ser particionada e codificada com o uso de múltiplos BPVs (por exemplo, 2 BPVs totais, 1 BPV cada para duas partições de 1x2) para predição com base na troca de RD entre as duas opções. Embora alguns exemplos revelados no presente documento envolvam um tamanho de região de partição de 2x2 (tendo, assim, tamanhos de partição de 1x2, 2x1 e 2x2 como opções selecionáveis), os tamanhos de partição selecionáveis pelo codificador não são limitados àqueles usados em tais exemplos, (por exemplo, 1x2 e 2x2), e podem incluir outros tamanhos (por exemplo, 2x1) com base no tamanho de bloco e/ou no tamanho de região.
[0120] Em algumas concretizações, os tamanhos de partição são fixos (por exemplo, 1x2, 2x2 ou qualquer outra subcombinação de pixels na região de partição ou bloco atual. Por exemplo, um bloco pode ter um tamanho de bloco de 2x8, e o bloco pode ser dividido em sub-blocos ou regiões que têm um tamanho de 2x2. Os sub-blocos ou regiões de 2x2 dentro do bloco de 2x8 podem ser adicionalmente particionados em partições que têm um tamanho de 1x2. Em tal exemplo, cada partição de 1x2 pode ser prevista com o uso de um único BPV, independentemente de outras partições. Em outras concretizações, os tamanhos de partição são variáveis, e a forma como cada bloco, sub-bloco, e/ou região é codificada na predição de bloco com o uso de quais tamanhos de partição podem ser determinados pelo codificador com base na taxa e no desempenho de distorção de cada esquema de particionamento. Por exemplo, para uma região de 2x2 (por exemplo, a região atual) dentro do bloco atual, se a predição da região atual pela divisão da região atual em duas partições de 1x2 e a predição das duas partições de 1x2 com o uso separadamente de dois BPVs (por exemplo, cada um apontando para uma partição de 1x2 codificada anteriormente dentro da faixa de busca definida) gerar uma melhor taxa e/ou desempenho de distorção (por exemplo, em comparação com outros esquemas de particionamento como 2x2), a região atual pode ser prevista com o uso de esquema de particionamento de 1x2. Por outro lado, se a predição da região atual como uma única partição de 2x2 com o uso de um BPV (por exemplo, apontando para uma partição de 2x2 codificada anteriormente dentro da faixa de busca definida) gerar uma melhor taxa e/ou desempenho de distorção (por exemplo, em comparação com outros esquemas de particionamento como 1x2), a região atual pode ser prevista com o uso do esquema de particionamento de 2x2. O processo de determinar o esquema de particionamento a ser usado para codificar um bloco no modo de predição é descrito em maiores detalhes abaixo com referência à Figura 14.
Tamanhos de Bloco e Tamanhos de Sub-Bloco
[0121] Para um tamanho de bloco de M x N, algumas concretizações são descritas com referência a sub-blocos (também chamados no presente documento de regiões) de tamanho Msub X Nsub, em que Msub < Me Nsub < N. Em algumas implementações, para facilidade de computação, Msub e Nsub, são alinhados com os grupos de codificação por entropia dentro do bloco de M x N. Cada sub-bloco Msub X Nsub dentro do bloco pode ser (i) previsto com o uso de um único BPV sem ser particionado adicionalmente ou (ii) particionado em múltiplas partições (por exemplo, em duas partições de 1x2), com um BPV usado para cada partição. A troca eficaz entre com o uso de um único BPV para o sub-bloco inteiro ou particionar o sub-bloco em partições, em que cada uma das quais tem um BPV próprio é que sinalizar mais BPVs irá exigir taxa extra no fluxo de bits, entretanto, com o uso de mais BPVs, as taxas de distorção e de codificação por entropia podem diminuir. Em outras palavras, como uso de mais bits para sinalizar BPVs adicionais, o número de bits usados para sinalizar o resíduo (diferença entre o bloco- candidato/região e o bloco/região atual) pode ser reduzido, o que pode fazer adicionalmente com que o número de bits usados para a codificação por entropia seja reduzido também. O codificador pode comparar cada opção (por exemplo, nenhuma partição versus múltiplas partições) em termos de custo de RD e selecionar entre a possibilidade de particionar cada sub-bloco ou região com base na comparação de custo ou selecionar um esquema de particionamento a partir de uma pluralidade de esquemas de particionamento que fornecem o melhor desempenho de RD.
Esquema de Particionamento Exemplificativo
[0122] A Figura 10 ilustra um diagrama 1000 que ilustra um esquema de particionamento exemplificativo. Na Figura 10, são ilustradas duas opções de particionamento para um sub-bloco ou região de 2x2. Neste exemplo, um bloco 1002 (por exemplo, que inclui pixels X0 a X15) tem um tamanho de 2x8, e um sub-bloco ou região 1004 (por exemplo, que inclui os pixels X0, X1, X8 e X9) dentro do bloco tem um tamanho de 2x2. A opção de particionamento 1006 ilustra um exemplo em que o sub-bloco ou a região 1004 é prevista com o uso de um único BPV, e a opção de particionamento 1008 ilustra um exemplo em que o sub-bloco ou a região 1004 é prevista com o uso de dois BPVs para cada partição de 1x2 dentro do sub-bloco ou da região 1004. Os sub-blocos ou regiões que têm um tamanho de 2x2 são usadas em algumas implementações como o DSC Avançado (Adv-DSC) para alinhar os sub-blocos ou as regiões com as estruturas de grupo de codificação por entropia 1100 para o modo de predição de bloco, mostrado na Figura 11. No exemplo da Figura 11, os grupos de codificação por entropia 0, 1, 2 e 3 são ilustrados, cada um correspondente a um dentre os quatro sub-blocos ou regiões de 2x2 dentro do bloco. Entretanto, as técnicas descritas no presente documento não são limitadas a tal concretização e podem ser estendidas a qualquer tamanho de bloco M x N e qualquer sub-tamanho de bloco Msub X Nsub. Entretanto, nos exemplos ilustrados abaixo, os parâmetros M = 2, N = 8, Msub = 2, Nsub = 2 são usados. Em algumas concretizações, os sub-blocos e/ou esquemas de particionamento podem ser determinados com base nos grupos de codificação por entropia. Por exemplo, os sub-blocos e/ou esquemas de particionamento podem ser determinados de modo que cada sub-bloco e/ou esquema de particionamento seja contido dentro de um único grupo de codificação por entropia. Determinação do Tamanho de Partição
[0123] O codificador pode determinar a possibilidade de (i) codificar cada região de 2x2 como uma única partição de 2x2 ou (ii) dividir a região em duas partições de 1x2 e codificar cada partição de 1x2 separadamente, com base no custo de RD mínimo. O custo de RD pode ser computado como mostrado abaixo:
[0124] Em algumas implementações, o BPV é sinalizado com um número fixo de bits (BPVbits), igual a log2(SR)log2(SR), em que SR é o espaço de busca (ou faixa de busca) associado ao modo de predição de bloco. Por exemplo, se o espaço de busca consistir em 64 posições, então, log2(64) = 6 bits são usados para sinalizar cada BPV.
[0125] O espaço de busca para predição de bloco com tamanho de partição variável pode ser ligeiramente diferente da faixa de busca discutida com referência às Figuras 3 a 6; Em particular, um sub-bloco de Msub X Nsub pode utilizar um espaço de busca com altura de Msub. Em tais casos, os armazenamentos temporários de linha adicionais podem ser necessários para implementar a predição de bloco com tamanho de partição variável em relação à predição de bloco sem tamanho de partição variável. Um exemplo de tal espaço de busca é demonstrado na Figura 12 para um tamanho de sub- bloco de 2x2. A Figura 12 ilustra um diagrama 1200 que ilustra uma faixa de busca exemplificativa. Como mostrado na Figura 12, uma linha atual 1202 inclui (i) um bloco atual 1204 que tem um sub-bloco atual 1206 e (ii) um bloco anterior 1208. No exemplo da Figura 12, uma linha anterior 1210 inclui uma faixa de busca 1212 a partir da qual o codificador pode selecionar um sub-bloco-candidato 1214 for prever o sub- bloco atual 1206. A faixa ou espaço de busca para partições de 1-D (por exemplo, 1x2) pode ser similar à faixa de busca descrita anteriormente com referência à Figura 3, dependendo de uma única linha reconstruída anterior.
[0126] Em algumas concretizações, as distorções D2x2 e D1x2 podem ser computadas com o uso de uma soma modificada de diferenças absolutas (SAD) no espaço de cor de YCoCg. Por exemplo, a distorção de SAD entre o pixel A (por exemplo, no sub-bloco ou partição atual) e o pixel B (por exemplo, no sub-bloco-candidato ou região-candidata) no espaço de cor de YCoCg pode ser calculada da seguinte forma:
[0127] Se o sub-bloco ou partição atual tiver mais de um pixel, a distorção para o sub-bloco ou partição atual inteira pode ser calculada somando-se as SADs individuais calculadas para cada pixel no sub-bloco ou partição atual. Os valores de pixel do sub-bloco ou partição atual podem ser o valor de pixel real ou um valor de pixel reconstruído (por exemplo, calculado com base em um preditor de candidato e um resíduo). Em algumas implementações, o parâmetro de lambda pode ser fixo em um valor de 2. Em outras implementações, esse parâmetro pode ser ajustado dependendo do tamanho de bloco, taxa de bits ou outros parâmetros de codificação.
[0128] O custo de codificação por entropia ECbits pode ser computado para cada região de 2x2. As quatro amostras em cada grupo de codificação por entropia pode ser proveniente do resíduo quantificado de 2x2 previsto a partir de um único BPV (por exemplo, uma partição de 2x2), ou o resíduo quantificado de 2x2 que utiliza dois vetores (por exemplo, duas partições de 1x2). Por exemplo, o custo de codificação por entropia pode representar o número de bits necessários para sinalizar cada grupo de codificação por entropia no fluxo de bits (por exemplo, incluindo o vetor (ou vetores) e o resíduo). Com base nos custos de codificação por entropia computados, o codificador pode selecionar o esquema de particionamento que tem o menor custo para cada região de 2x2. Embora algumas concretizações sejam discutidas com referência aos blocos de 2x8 que têm tamanhos de sub-bloco de 2x2, grupos de codificação por entropia de 2x2 e dois esquemas de particionamento (1x2 e 2x2), as técnicas descritas no presente documento podem ser estendidas a outros tamanhos de bloco, tamanhos de sub-bloco, grupos de codificação por entropia e/ou esquemas de particionamento. Informação de Codificação de Sinalização no Fluxo de Bits
[0129] No bloco de 2x8 1002 mostrado na Figura 10,cada uma dentre as quatro regiões de 2x2 pode ser particionada com base na análise de custo de RD discutida acima. Por exemplo, cada região de 2x2 pode ser particionada em uma única partição de 2x2 ou em duas partições de 1x2. Quatro exemplos de tal particionamento são ilustrados por um diagrama 1300 da Figura 13. Como mostrado na Figura 13, o bloco 1302 tem quatro sub-blocos previstos com base no esquema de particionamento de 2x2, o bloco 1304 tem três sub-blocos previstos com base no esquema de particionamento de 2x2 e um sub-bloco previsto com base no esquema de particionamento de 1x2, o bloco 1306 tem quatro sub-blocos previstos com base no esquema de particionamento de 1x2, e o bloco 1308 tem um sub-bloco previsto com base no esquema de particionamento de 2x2 e três sub-blocos previstos com base no esquema de particionamento de 1x2. Além de sinalizar os BPVs para o decodificador, o codificador também pode enviar um bit para cada região de 2x2, de modo que o decodificador possa inferir adequadamente o particionamento. Em algumas implementações como a implementação de Adv-DSC, um grupo de quatro bits indicativo do esquema de particionamento selecionado para cada região dentro do bloco (por exemplo, cada região de 2x2 no bloco de 2x8) é sinalizado no fluxo de bits. Em tais implementações, os quatro bits "1011" podem indicar que a primeira, a terceira e a quarta região (por exemplo, sub-bloco de 2x2) no bloco devem ser previstas ou codificadas com base em um primeiro esquema de particionamento (por exemplo, com base em partições de 1x2), enquanto a segunda região (por exemplo, o sub-bloco de 2x2) deve ser prevista ou codificada com base em um segundo esquema de particionamento (por exemplo, com base em partições de 2x2). Em algumas concretizações, após esses quatro bits no fluxo de bits, os BPVs podem ser sinalizados com o uso de bits fixos por BPV. No exemplo anterior (por exemplo, sequência de bits de "1011"), 7 BPVs podem ser sinalizados.
Fluxograma Exemplificativo para Codificação no Modo de Predição de Bloco
[0130] Com referência à Figura 14, um procedimento exemplificativo para codificar um bloco de dados de vídeo no modo de predição de bloco será descrito. As etapas ilustradas na Figura 14 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 na Figura 2A) ou componente (ou componentes) do mesmo. Visando a conveniência, o método 1400 é descrito como realizado por um codificador de vídeo (também simplesmente chamado de codificador), o qual pode ser o codificador de vídeo 20 ou outro componente.
[0131] O método 1400 começa no bloco 1401. No bloco 1405, o codificador determina uma ou mais primeiras regiões candidatas a serem usadas para prever uma região atual (por exemplo, dentro de um bloco de dados de vídeo que é codificado no modo de predição de bloco) com o uso de um primeiro esquema de particionamento. Por exemplo, a primeira região candidata pode ser uma dentre as regiões de 2x2 em um bloco de 2x8. O primeiro esquema de particionamento pode ser um esquema de particionamento em que a região atual é particionada em múltiplas partições (por exemplo, duas partições de 1x2). Em algumas concretizações, as uma ou mais primeiras regiões-candidatas estão dentro de uma primeira faixa (por exemplo, a faixa de busca associada ao primeiro esquema de particionamento) de localizações associadas ao primeiro esquema de particionamento. As uma ou mais primeiras regiões-candidatas podem ser armazenadas em uma memória de um dispositivo de codificação de vídeo.
[0132] No bloco 1410, o codificador determina uma ou mais segundas regiões candidatas a serem usadas para prever a região atual com o uso de um segundo esquema de particionamento. Por exemplo, o segundo esquema de particionamento pode ser um esquema de particionamento em que a região atual não é particionada em múltiplas partições (por exemplo, a região atual é codificada como uma única partição de 2x2). Em outro exemplo, o segundo esquema de particionamento pode ser um esquema de particionamento em que a região atual é particionada em um número diferente de partições do que o número de partições usado para o primeiro esquema de particionamento. Em algumas concretizações, as uma ou mais segundas regiões-candidatas estão dentro de uma segunda faixa (por exemplo, a faixa de busca associada ao segundo esquema de particionamento) de localizações associadas ao segundo esquema de particionamento. As uma ou mais segundas regiões-candidatas podem ser armazenadas na memória do dispositivo de codificação de vídeo.
[0133] No bloco 1415, o codificador determina que um primeiro custo associado à codificação da região atual com o uso do primeiro esquema de particionamento é maior do que um segundo custo associado à codificação da região atual com o uso do segundo esquema de particionamento. Por exemplo, o código pode calcular o custo com base na taxa e na distorção associada à codificação da região atual com o uso do primeiro esquema de particionamento e o custo com base na taxa e distorção associadas à codificação da região atual com o uso do segundo esquema de particionamento, e comparar os custos calculados.
[0134] No bloco 1420, o codificador codifica a região atual com o uso do segundo esquema de particionamento, pelo menos em parte, por meio de sinalização de um ou mais vetores de predição que identificam a localização das uma ou mais segundas regiões candidatas em relação à região atual. O método 1400 termina no bloco 1425.
[0135] No método 1400, um ou mais dentre os blocos mostrados na Figura 14 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas concretizações, blocos adicionais podem ser adicionados ao método 1400. As concretizações da presente revelação não são limitadas a ou pelo exemplo mostrado na Figura 14, e outras variações podem ser implementadas sem que se afastem do espírito da presente revelação.
Extensão para Formatos de Subamostragem de Croma de 4:2:0 e de 4:2:2
[0136] Em algumas implementações, as técnicas de predição de bloco descritas na presente revelação (por exemplo, como o uso de tamanhos de partição variáveis no modo de predição de bloco) podem ser utilizadas apenas para formato de amostragem de croma de 4:4:4. Esse formato é comumente usado para o conteúdo gráfico. Por exemplo, o formato de amostragem de croma de 4:4:4 utiliza imagem ou dados de vídeo que contêm componentes de cor (por exemplo, componentes de luma e componentes de croma) que têm a mesma taxa de amostragem (por exemplo, sem o uso de subamostragem de croma). Entretanto, o formato de amostragem de croma de 4:4:4 pode ser menos comumente usado para outras aplicações de vídeo. Devido à compressão significativa que a subamostragem de croma pode fornecer, ambos os formatos de subamostragem de croma de 4:2:0 e de 4:2:2 são comumente usados para aplicações de vídeo. Por exemplo, algumas versões de DSC (por exemplo, DSCvl.x) podem suportar 4:2:0 e 4:2:2. O suporte para tais formatos de subamostragem de croma pode ser utilizado ou exigido por implementações de DSC futuras. Dessa forma, em algumas concretizações, as técnicas de predição de bloco descritas na presente revelação (por exemplo, o uso de tamanhos de partição variáveis no modo de predição de bloco) são estendidas para os formatos de 4:2:0 e/ou de 4:2:2. Embora os formatos de subamostragem de croma de 4:2:0 e de 4:2:2 sejam usados no presente documento, as várias técnicas descritas no presente pedido podem ser aplicadas a outros formatos de amostragem conhecidos.
[0137] Em algumas concretizações, o algoritmo para predição de bloco com tamanho de partição variável funciona da mesma maneira independentemente do formato de amostragem de croma. Em tais concretizações, independentemente do formato (por exemplo, 4:4:4, 4:2:2, 4:2:0, etc.), a determinação da possibilidade de usar uma única partição (por exemplo, 2x2) ou de usar múltiplas partições (por exemplo, duas partições de 1x2 separadas) ou a determinação do número de partições a serem usadas para codificar o sub- bloco ou região atual (por exemplo, 1, 2, 3, 4, etc.) pode ser realizada para cada sub-bloco ou região (por exemplo, 2x2 bloco) de amostras de luma. Entretanto, o número de amostras de croma em cada partição ou em cada bloco pode diferir dependendo do formato de subamostragem. Adicionalmente, a decisão de codificador pode precisar ser modificada nos formatos de subamostragem de croma de 4:2:2 e/ou de 4:2:0, visto que o alinhamento com grupos de codificação por entropia pode não ser mais possível para componentes de croma. Portanto, a taxa (por exemplo, o valor de taxa associado às partições, como a única partição de 2x2 ou as duas partições de 1x2 separadas) para cada partição para a decisão de codificador (por exemplo, quando o codificador decide entre dividir cada região de 2x2 em uma única partição de 2x2 ou duas partições de 1x2 com base no custo de RD mínimo) pode depender apenas das amostras de luma para 4:2:2 e 4:2:0. Por exemplo, ao calcular a distorção de SAD, quaisquer termos relacionados ao componente (ou componentes) de croma podem ser definidos como zero.
Busca de BP para Formato de Subamostragem de Croma de 4:2:0
[0138] Para partições de 2x2 no modo de 4:2:0 (formato de subamostragem de croma de 4:2:0), cada partição pode conter uma única amostra de croma para cada um dentre os componentes de croma (por exemplo, Co e Cg ou Cb e Cr).Em algumas concretizações, a amostra de croma a ser usada (por exemplo, para calcular o custo de RD e/ou para prever as amostras na região ou bloco atual) é a que cruza com a partição. Em outras concretizações, a amostra de croma a ser usada pode ser derivada de uma partição adjacente. Uma busca de 2x2 exemplificativa 1500 para o modo de 4:2:0 é mostrada na Figura 15. Na Figura 15, os sítios de croma (por exemplo, localizações de pixel/amostra que têm amostras de croma) são indicados com o uso de "X". Por exemplo, a amostra superior esquerda da partição A, a amostra superior direita da partição B e a amostra superior esquerda da partição atual compreendem sítios de croma que se cruzam com as respectivas partições. Tais sítios de croma podem ser usados para todos os cálculos realizados para as respectivas partições (por exemplo, para calcular o valor de diferença com o uso dos valores de amostra de croma).
[0139] Para as partições de 1x2 no modo de 4:2:0, uma distinção pode precisar ser feita entre as partições de 1x2 na primeira linha do bloco atual e as partições de 1x2 na segunda linha do bloco atual, visto que pode não haver sítios de croma na segunda linha do bloco atual. Por exemplo, para as partições na primeira linha do bloco atual, o cálculo dos valores de distorção pode envolver duas amostras de luma e uma amostra de croma para cada componente de croma. Para partições na segunda linha do bloco atual, o cálculo dos valores de distorção pode envolver apenas as amostras de luma (por exemplo, duas amostras de luma). No exemplo 1600 da Figura 16, a partição atual de 1x2 A está na primeira linha e inclui um sítio de croma. Dessa forma, a partição- candidata selecionada para prever a partição atual de 1x2 A é a partição-candidata de 1x2 A, que também inclui um sítio de croma. De modo similar, a partição atual de 1x2 B está na segunda linha e não inclui um sítio de croma. Dessa forma, a partição-candidata selecionada para prever a partição atual de 1x2 B está na partição-candidata de 1x2 B, que também não inclui um sítio de croma. Busca de BP para Formato de Subamostragem de Croma de 4:2:2
[0140] Para partições de 2x2 no modo de 4:2:2 (formato de subamostragem de croma 4:2:2), cada partição pode conter 4 amostras de luma e 2 amostras de croma para cada um dentre os componentes de croma (por exemplo, Co e Cg ou Cb e Cr). Uma busca de 2x2 exemplificativa 1700 para o modo de 4:2:2 é mostrada na Figura 17. Na Figura 17, os sítios de croma (por exemplo, localizações de pixel que têm amostras de croma) são indicados com o uso de "X". Por exemplo, as duas amostras esquerdas da partição A, as duas amostras direitas da partição B e as duas amostras esquerdas da partição atual compreendem sítios de croma que se cruzam com as respectivas partições. Tais sítios de croma podem ser usados para todos os cálculos realizados para as respectivas partições (por exemplo, para calcular o valor de diferença com o uso dos valores de amostra de croma).
[0141] Para partições de 1x2 no modo de 4:2:2, cada partição contém 2 amostras de luma e 1 amostra de croma para cada um dentre os componentes de croma (por exemplo, Co e Cg ou Cb e Cr). Diferente no modo 4:2:0, pode não haver nenhuma distinção entre partições na primeira linha do bloco atual e partições na segunda linha do bloco atual no modo de 4:2:2. Uma busca de predição de bloco exemplificativa 1800 para as partições de 1x2 para subamostragem de croma de 4:2:2 é ilustrada na Figura 18. No exemplo da Figura 18, a partição atual de 1x2 A está na primeira linha e a partição atual de 1x2 B está na segunda linha, e cada uma dentre as partições atuais A e B inclui um sítio de croma. A partição atual A é prevista com base na partição-candidata de 1x2 A, que inclui um sítio de croma na primeira amostra e a partição atual B é prevista com base na partição-candidata de 1x2 B, que inclui um sítio de croma na segunda amostra. Dessa forma, independentemente de onde o sítio de croma estiver localizado dentro da partição-candidata, a amostra de croma pode ser usada para prever a amostra de croma na partição atual.
Decisão de Codificador
[0142] Nos formatos de 4:2:2 e de 4:2:0, pode haver menos do que 4 grupos de codificação por entropia por bloco para cada componente de croma. Por exemplo, quatro grupos de codificação por entropia podem ser usados para o componente de luma, e dois (ou um) grupos de codificação por entropia podem ser usados para o componente de croma laranja e dois (ou um) grupos de codificação por entropia podem ser usados para o componente de croma verde. O número de grupos de codificação por entropia usados para codificar um dado bloco pode ser determinado com base no número de amostras de luma ou de croma no dado bloco. Em algumas concretizações, os grupos de codificação por entropia são determinados pelo codificador com base no modo de codificação em que um dado bloco é codificado. Em outras concretizações, os grupos de codificação por entropia são definidos pelo padrão de codificação aplicável (por exemplo, com base no modo de codificação em que o dado bloco é codificado).
[0143] Em algumas concretizações, a quantidade ECbits não é determinada exatamente pelo codificador para croma. Em algumas de tais concretizações, o codificador pode determinar a possibilidade de usar partições de 1x2 ou de 2x2, com base na taxa de codificação por entropia calculada com o uso apenas das amostras de luma para formatos de 4:2:2 e de 4:2:0. Em outras concretizações, a quantidade ECbits é determinada pelo codificador para croma, e o codificador pode determinar a possibilidade de usar partições de 1x2 ou partições de 2x2, com base na taxa de codificação por entropia calculada com o uso tanto de amostras de luma quanto de croma para formatos de 4:2:2 e de 4:2:0.
Sinalização
[0144] Em algumas concretizações, o número de grupos de codificação por entropia a serem transmitidos do codificador para o decodificador para cada bloco ou para cada componente de cor pode ser alterado dependendo do formato de subamostragem de croma. Em algumas implementações, o número de grupos de codificação por entropia é alterado para assegurar que o rendimento de codec seja suficientemente alto. Por exemplo, no modo de 4:4:4, um bloco de 2x8 pode incluir quatro grupos de codificação por entropia, como ilustrado na Figura 11. Em tal exemplo, quatro grupos de codificação por entropia podem ser usados (por exemplo, sinalizados pelo codificador) para cada componente de cor (por exemplo, Y, Co e Cg). A Tabela 1 descreve alterações exemplificativas no número de grupos de codificação por entropia usados para os modos de 4:2:2 e de 4:2:0. O restante da sinalização descrita acima (por exemplo, sinalização dos BPVs, sinalização da indicação do esquema de particionamento, etc.) pode ser inalterado (do sinalização descrita em relação ao modo de 4:4:4) para os modos de 4:2:2 e de 4:2:0. Por exemplo, na Tabela 1, o componente 0 pode corresponder a luma (Y), o componente 1 pode corresponder a croma laranja (Co) e o componente 2 pode corresponder a croma verde (Cg).Tabela 1: número de grupos de codificação por entropia por componente para diferentes formatos de subamostragem de croma (presumindo-se um tamanho de bloco de 2x8)
Vantagens
[0145] Uma ou mais técnicas de modo de predição de bloco descritas na presente revelação podem ser implementadas como o uso de um projeto assimétrico. O projeto assimétrico permite que procedimentos mais dispendiosos sejam realizados no lado de codificador, diminuindo a complexidade do decodificador. Por exemplo, visto que o vetor (ou vetores) é explicitamente sinalizado para o decodificador, o codificador realiza a maior parte do trabalho em comparação com o decodificador. Isso é desejável, visto que o codificador é frequentemente parte de um projeto de Sistema em um Chip (SoC), executado a uma alta frequência em um nó de processo de ponta (por exemplo, 20 nm e abaixo). No entanto, o decodificador é propenso a ser implementado em uma solução de chip em vidro (COG) de Circuito Integrado de Driver de Exibição (DDIC) com uma velocidade de relógio limitada e um tamanho de processo muito maior (por exemplo, 65 nm e acima).
[0146] Adicionalmente, a seleção adaptativa de tamanhos de bloco de partição permite que o modo de predição de bloco seja usado para uma gama mais ampla de tipos de conteúdo. Visto que a sinalização dos BPVs explicitamente pode ser dispendiosa, o tamanho de partição variável permite o custo de sinalização reduzido para regiões de imagem que podem ser bem previstas com o uso de uma partição de 2x2. Para regiões altamente complexas, o tamanho de partição de 1x2 pode ser selecionado se a taxa de codificação por entropia puder ser suficientemente reduzida para compensar pelo custo de sinalização superior ou se a distorção puder ser suficientemente reduzida de modo que a troca de RD ainda seja favorável a 1x2. Por exemplo, a seleção adaptativa de tamanhos de bloco de partição pode aumentar o desempenho através de todos os tipos de conteúdo, incluindo imagens naturais, padrões de teste, renderização de texto fina, etc. Em algumas concretizações, as técnicas de particionamento adaptativo discutidas no presente documento podem ser estendidas considerando-se os tamanhos de bloco de partição maiores do que 2x2 e/ou tamanhos de bloco maiores do que 2x8.
[0147] Uma ou mais técnicas descritas no presente documento podem ser implementadas em um codec de bit fixo que emprega um modelo de armazenamento temporário de taxa de bits constante. Em tal modelo, os bits armazenados no armazenamento temporário de taxa são removidos do armazenamento temporário de taxa a uma taxa de bit constante. Dessa forma, se o codificador de vídeo adicionar muitos bits ao fluxo de bits, o armazenamento temporário de taxa pode ter um sobrefluxo. Por outro lado, o codificador de vídeo pode precisar adicionar bits suficientes para evitar o subfluxo do armazenamento temporário de taxa. Adicionalmente, no lado de decodificador de vídeo, os bits podem ser adicionados ao armazenamento temporário de taxa a uma taxa de bit constante, e o decodificador de vídeo pode remover números variáveis de bits de cada bloco. Para assegurar a decodificação adequada, o armazenamento temporário de taxa do decodificador de vídeo não deve ter um "subfluxo" ou "sobrefluxo" durante a decodificação do fluxo de bits comprimido. As uma ou mais técnicas descritas no presente documento podem assegurar que tal subfluxo ou sobrefluxo seja evitado durante a codificação e/ou a decodificação. Em algumas concretizações, o codificador pode operar sob uma restrição de orçamento de bit, em que o codificador tem um número fixo de bits para codificar uma dada região, segmento ou quadro. Em tais concretizações, poder saber exatamente (e não precisar estimar) quantos bits cada um dentre uma pluralidade de modos de codificação irá precisar para poder codificar uma dada região, segmento ou quadro é crítico para o codificador, de modo que o codificador possa assegurar que o orçamento de bits ou outras restrições relacionadas à largura de banda/ao bit possam ser satisfeitas. Por exemplo, o codificador pode codificar a dada região, segmento ou quadro em um dado modo de codificação sem precisar implementar quaisquer medidas precatórias no caso de a codificação da dada região, segmento ou quadro exigir mais bits do que o estimado.
[0148] Adicionalmente, uma ou mais técnicas descritas no presente documento superam os problemas técnicos específicos associados à tecnologia de compressão de vídeo na transmissão através de enlaces de exibição. Permitindo-se que uma região seja codificada com base em múltiplas regiões-candidatas (por exemplo, cada partição na região prevista com base na correspondente dentre as múltiplas regiões-candidatas), os codificadores e os decodificadores de vídeo podem fornecer uma predição personalizada com base na natureza da região (por exemplo, suave, complexa, etc.), aprimorando, assim, o desempenho do codificador e do decodificador de vídeo (por exemplo, codecs de hardware e software).
Faixas de Múltiplas Buscas para Modo de Predição de Bloco
[0149] Como discutido com referência às Figuras 3 a 6, o espaço de busca (por exemplo, localizações espaciais de pixels que o codificador pode buscar a fim de encontrar um bloco candidato) pode diferir com base nas características do bloco atual. Por exemplo, o espaço de busca pode englobar potencialmente todos os blocos/pixels reconstruídos anteriormente. Em algumas concretizações, o codificador e/ou o decodificador pode limitar a busca por um bloco candidato a uma porção especificada (por exemplo, uma "faixa de busca" definida por um ou mais parâmetros que são predefinidos ou sinalizados no fluxo de bits) dentro do espaço de busca, por exemplo, para reduzir a complexidade computacional. Em algumas implementações, a predição de bloco utiliza uma faixa de busca única para cada bloco codificado no modo de predição de bloco. Nessas implementações, a localização da faixa de busca em relação ao bloco atual pode depender da possibilidade de o bloco atual estar na FLS (primeira linha de um segmento) ou na NFLS (não primeira linha de um segmento). Como mostrado no diagrama 1900 da Figura 19, se o bloco atual 1910 estiver na FLS, a faixa de busca pode estar à esquerda do bloco atual na mesma linha de bloco (por exemplo, faixa de busca de FLS 1920), e se o bloco atual estiver na NFLS, a faixa de busca pode estar em uma linha de bloco imediatamente acima da linha de bloco atual (por exemplo, faixa de busca de NFLS 1930). O termo linha de bloco, além de ter seu significado comum, pode incluir todas as linhas de varredura de rastreamento que pertencem a um bloco. Por exemplo, se o tamanho de bloco for de 2x8 pixels (a Compressão de Fluxo de Exibição Avançada [ADSC] tem um tamanho de bloco-padrão de 2x8 pixels), uma linha de bloco incluiria duas linhas de varredura de rastreamento.
[0150] Em contrapartida, em algumas concretizações da presente revelação, o codificador e/ou o decodificador pode manter múltiplas faixas de busca. Permitindo-se que múltiplas faixas de busca sejam usadas para codificar um bloco no modo de predição de bloco, a probabilidade de localizar partições candidatas superiores pode ser aumentada (por exemplo, em comparação com as implementações anteriores considerando apenas uma faixa de busca única para cada bloco codificado no modo de predição de bloco), aprimorando, assim, a eficácia de codificação e/ou o desempenho de codificação do modo de predição de bloco. Adicionalmente, permitindo-se que o codificador selecione adaptativamente a faixa de busca a ser usada para codificar cada bloco, o desempenho do esquema de predição de bloco pode ser adicionalmente aprimorado.
[0151] Em algumas de tais concretizações, embora múltiplas faixas de busca possam ser consideradas para uso na codificação de um dado bloco no modo de predição de bloco, apenas uma dentre as faixas de busca pode ter permissão para ser usada por vez. Por exemplo, cada bloco que é codificado no modo de predição de bloco pode ser associado a uma, mas não ambas, dentre as múltiplas faixas de busca. Em algumas concretizações, se um bloco codificado no modo de predição de bloco tiver múltiplas partições, a codificação das partições pode ser restringida de modo que cada partição deva ser codificada com o uso da mesma faixa de busca selecionada para o bloco. Através da limitação do número de faixas de busca usadas para um único bloco, o codificador pode sinalizar facilmente para o decodificador qual faixa de busca é usada com o uso de um único bit. Em outras concretizações, mais do que uma faixa de busca pode ser usada para um único bloco. Por exemplo, uma primeira faixa de busca pode ser usada para codificar uma primeira partição no único bloco, e uma segunda faixa de busca diferente da primeira faixa de busca pode ser usada para codificar uma segunda partição no único bloco.
[0152] Em algumas concretizações da presente revelação, duas faixas de busca (SR0 e SR1) são mantidas pelo codificador e/ou o decodificador, como mostrado no diagrama 2000 da Figura 20. Para os blocos dentro da FLS, pode não haver distinção entre as duas faixas de busca (ou pode não haver diferença no resultado ou no desempenho da predição de bloco) visto que a única opção é usar a linha de bloco atual para referência. Por exemplo, se o bloco atual 2010 estiver na FLS, apenas a faixa de busca SR0 2020 pode ser usada para codificar o bloco atual 2010, e a faixa de busca SR0 2030 pode não estar disponível. Por outro lado, se o bloco atual 2010 estiver dentro da NFLS, a faixa de busca SR0 2020 e a faixa de busca SR1 2030 podem estar ambas disponíveis e qualquer uma das faixas de busca 2020 e 2030 pode ser usada para codificar o bloco atual 2010 no modo de predição de bloco. Como ilustrado na Figura 20, a faixa de busca SR0 2030 envolve dados (por exemplo, pixels codificados antes da codificação do bloco atual) das linhas de blocos reconstruídas anteriores (por exemplo, uma ou mais linhas de blocos que foram mais recentemente reconstruídas), e a faixa de busca SR1 2020 envolve dados (por exemplo, pixels codificados antes da codificação do bloco atual) da linha de bloco atual (por exemplo, à esquerda do bloco atual). Em algumas concretizações, um ou mais pixels ou blocos reconstruídos mais recentemente podem ser omitidos da faixa de busca (ou faixas de busca) por razões de canalização. Por exemplo, um ou mais blocos (por exemplo, um número de limiar de pixels ou blocos) imediatamente à esquerda do bloco atual pode ser omitido da faixa de busca SR1. O número de pixels ou blocos omitidos da faixa de busca (ou faixas de busca) pode depender de restrições de canalização.
[0153] O codificador pode realizar uma busca de predição de bloco para todas as partições dentro do bloco atual independentemente para as duas faixas de busca. Por exemplo, se o bloco atual tiver duas partições, o codificador pode realizar a busca de predição de bloco para a primeira partição na primeira faixa de busca e, então, realizar a busca de predição de bloco para a segunda partição na primeira faixa de busca. Com base na busca, o codificador pode determinar um primeiro custo para codificação das duas partições no bloco atual com o uso de blocos ou partições de bloco na primeira faixa de busca. Então, o codificador pode realizar a busca de predição de bloco para a primeira partição na segunda faixa de busca e, então, realizar a busca de predição de bloco para a segunda partição na segunda faixa de busca. Com base na busca, o codificador pode determinar um segundo custo para codificação das duas partições no bloco atual com o uso de blocos ou partições de bloco na segunda faixa de busca. Os blocos ou partições de bloco nas faixas de busca podem ser selecionados de modo que a taxa e custo de distorção sejam minimizados para o bloco atual inteiro (por exemplo, para prever todas as partições dentro do bloco atual).
[0154] Tendo determinado o custo (por exemplo, estimativa de taxa e de distorção) para cada faixa de busca, o codificador pode selecionar entre as duas opções minimizando-se o custo de RD (por exemplo, D + À • R), como discutido na presente revelação. O codificador pode selecionar a faixa de busca que rende o menor custo de RD, e codificar o bloco atual com o uso da faixa de busca selecionada. A indicação da faixa de busca a ser usada para decodificar o bloco atual é transmitida para o decodificador, por exemplo, através da sinalização de um sinalizador de um bit para cada bloco explicitamente no fluxo de bits. Portanto, as alterações no lado de decodificador necessárias para uso de múltiplas faixas de busca são mínimas. Essencialmente, uma faixa de busca é substituída por outra, e todas as outras etapas para predição de bloco podem ser realizadas como nas implementações que não usam múltiplas faixas de busca.
[0155] Em outras concretizações, o sinalizador de um bit que sinaliza a faixa de busca selecionada pode ser omitido. Em tais concretizações, as faixas de busca podem ser, cada uma, associadas a um caso separado do modo de predição de bloco, em que o índice de faixa de busca pode ser implicitamente sinalizado pelo cabeçalho de modo. Por exemplo, se três bits forem usados para sinalizar o modo de codificação associado a um bloco, e apenas seis modos de codificação estiverem disponíveis para o codificador ou decodificador, o mesmo elemento de sintaxe de três bits pode ser usado para sinalizar dois modos de codificação adicionais (por exemplo, um para um modo de predição de bloco que sempre usa a primeira faixa de busca ou usa a primeira faixa de busca por predefinição, e outro para um modo de predição de bloco que sempre usa a segunda faixa de busca ou usa a segunda faixa de busca por predefinição). Portanto, utilizando-se os elementos de sintaxe existentes usados para sinalizar o modo de codificação, economias de bit podem ser alcançadas.
Codificação no Modo de Predição de Bloco com o Uso de Múltiplas Faixas de Busca
[0156] Com referência à Figura 21, um procedimento exemplificativo para codificar um bloco de dados de vídeo no modo de predição de bloco será descrito. As etapas ilustradas na Figura 21 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 na Figura 2A) ou componente (ou componentes) do mesmo. Visando a conveniência, o método 2100 é descrito como realizado por um codificador, o qual pode ser o codificador de vídeo 20 ou outro componente.
[0157] O método 2100 começa no bloco 2101. No bloco 2105, o codificador determina um primeiro custo associado à codificação de um bloco atual (por exemplo, um bloco de dados de vídeo que atualmente é codificado) com base em uma primeira região candidata dentro de uma primeira faixa de localizações correspondentes ao bloco atual. A primeira região candidata pode ter o mesmo tamanho (por exemplo, mesmas dimensões e/ou mesmo número de pixels) que o bloco atual. A primeira região candidata pode incluir um bloco ou uma porção de um bloco que foi codificado anteriormente e agora é usado para codificar o bloco atual. Em algumas concretizações, a primeira região candidata pode ser uma coleção de blocos ou partições de bloco cada uma das quais é usada para codificar uma porção diferente do bloco atual. Por exemplo, o bloco atual pode incluir quatro partições de bloco, e cada uma dentre as quatro partições de bloco pode ser prevista ou codificada com o uso de um bloco diferente ou partição de bloco da primeira região candidata dentro da primeira faixa de localizações. Em algumas implementações, múltiplas partições de bloco dentro do bloco atual podem ser codificadas com base no mesmo bloco ou partição de bloco da primeira região candidata dentro da primeira faixa de localizações. A primeira faixa de localizações (por exemplo, uma primeira faixa de busca) pode ser uma faixa de busca especificada pelo codificador ou por um padrão de codificação aplicável. A primeira faixa de localizações pode ser análoga a uma dentre as faixas de busca exemplificativas discutidas na presente revelação. A primeira faixa de localizações pode compreender uma pluralidade de blocos ou partições de bloco que são reconstruídas e usadas para prever ou codificar blocos e/ou partições de bloco subsequentes (por exemplo, em ordem de codificação ou ordem de varredura de rastreamento). A primeira faixa de localizações pode incluir uma linha de varredura de rastreamento que se sobrepõe ao bloco atual. Em outras concretizações, a primeira faixa de localizações não inclui uma linha de varredura de rastreamento que se sobrepõe ao bloco atual. Os dados de vídeo associados à primeira região candidata podem ser armazenados em uma memória de um dispositivo de codificação de vídeo.
[0158] No bloco 2110, o codificador determina um segundo custo associado à codificação do bloco atual com base em uma segunda região candidata dentro de uma segunda faixa de localizações correspondentes ao bloco atual. A segunda região candidata pode ter o mesmo tamanho (por exemplo, mesmas dimensões e/ou mesmo número de pixels) que o bloco atual. A segunda região candidata pode incluir um bloco ou uma porção de um bloco que foi codificado anteriormente e agora é usado para codificar o bloco atual. Em algumas concretizações, a segunda região candidata pode ser uma coleção de blocos ou partições de bloco cada uma das quais é usada para codificar uma porção diferente do bloco atual. Por exemplo, o bloco atual pode incluir quatro partições de bloco, e cada uma dentre as quatro partições de bloco pode ser prevista ou codificada com o uso de um bloco diferente ou partição de bloco da primeira região candidata dentro da segunda faixa de localizações. Em algumas implementações, múltiplas partições de bloco dentro do bloco atual podem ser codificadas com base no mesmo bloco ou partição de bloco da primeira região candidata dentro da segunda faixa de localizações. A segunda faixa de localizações pode ser uma faixa de busca especificada pelo codificador ou por um padrão de codificação aplicável. A segunda faixa de localizações pode ser análoga às faixas de busca exemplificativas discutidas na presente revelação. A segunda faixa de localizações pode compreender uma pluralidade de blocos ou partições de bloco que são reconstruídas e usadas para prever ou codificar blocos e/ou partições de bloco subsequentes (por exemplo, em ordem de codificação ou ordem de varredura de rastreamento). Em algumas concretizações, a primeira faixa de localizações e a segunda faixa de localizações são mutuamente exclusivas. Alternativa ou adicionalmente, a primeira faixa de localizações e a segunda faixa de localizações podem ocupar diferentes linhas de varredura de rastreamento. A segunda faixa de localizações pode incluir uma linha de varredura de rastreamento que se sobrepõe ao bloco atual. Em outras concretizações, a segunda faixa de localizações não inclui uma linha de varredura de rastreamento que se sobrepõe ao bloco atual. Por exemplo, como mostrado na Figura 20, as duas faixas de busca 2020 e 2030 não se sobrepõem uma à outra. Os dados de vídeo associados à segunda região candidata podem ser armazenados na memória do dispositivo de codificação de vídeo.
[0159] No bloco 2115, o codificador determina se o primeiro custo associado à codificação do bloco atual com base na primeira região candidata é maior do que o segundo custo associado à codificação do bloco atual com base na segunda região candidata. Por exemplo, o codificador pode calcular o custo com base na taxa e na distorção associadas à codificação do bloco atual com o uso da primeira região candidata dentro da primeira faixa de localizações (por exemplo, dentro da primeira faixa de busca) e o custo com base na taxa e distorção associadas à codificação do bloco atual com o uso da segunda região candidata dentro da segunda faixa de localizações (por exemplo, dentro da segunda faixa de busca) e comparar os custos calculados. Em algumas concretizações, o bloco atual pode compreender uma pluralidade de partições de bloco. Em algumas de tais concretizações, calcular o primeiro e o segundo custos pode incluir (i) determinar uma pluralidade de partições de bloco dentro da faixa de busca relevante (por exemplo, a primeira faixa de busca e a segunda faixa de busca, respectivamente) a serem usadas para a codificação da pluralidade correspondente de partições de bloco no bloco atual, (ii) determinar os custos individuais para a codificação das partições de bloco individuais dentro do bloco atual com base na pluralidade de partições de bloco dentro da faixa de busca relevante e (iii) calcular o primeiro e o segundo custos com base nos custos individuais. Por exemplo, o primeiro e o segundo custos podem ser calculados somando-se os custos individuais. Alternativamente, o primeiro e o segundo custos podem ser calculados calculando-se a média dos custos individuais.
[0160] No bloco 2120, o codificador, em resposta à determinação de que o primeiro custo é maior do que o segundo custo, codifica o bloco atual com base na segunda região candidata dentro da segunda faixa de localizações, pelo menos em parte, por meio do fornecimento de uma indicação associada à segunda faixa. Em algumas concretizações, a indicação pode ser um sinalizador de 1 bit indicativo da possibilidade de o bloco atual precisar ser codificado com base (i) na primeira região candidata dentro da primeira faixa de localizações ou (ii) na segunda região candidata dentro da segunda faixa de localizações. Por exemplo, se o valor de sinalizador for igual a 0, o sinalizador pode indicar que o bloco atual deve ser codificado com base em um ou mais blocos ou partições de bloco na primeira faixa de busca (por exemplo, com base na primeira região candidata dentro da primeira faixa de localizações), e se o valor de sinalizador for igual a 1, o sinalizador pode indicar que o bloco atual deve ser codificado com base em um ou mais blocos ou partições de bloco na segunda faixa de busca (por exemplo, com base na segunda região candidata dentro da segunda faixa de localizações). Em outras concretizações, a indicação pode ser um elemento de sintaxe de múltiplos bits configurado para indicar o modo de codificação associado ao bloco atual. Por exemplo, o elemento de sintaxe pode indicar qual dentre uma pluralidade de modos de codificação deve ser usado para codificar o bloco atual. Um dentre os modos de codificação pode ser um modo de predição de bloco. Em algumas concretizações, se o elemento de sintaxe tiver um valor (dentre uma pluralidade de valores possíveis), o bloco atual deve ser codificado em um modo de predição de bloco que usa apenas a primeira faixa de busca (ou um que usa a primeira faixa de busca por predefinição, exceto quando for fornecido de outro modo), e se o elemento de sintaxe tiver outro valor (dentre a pluralidade de valores possíveis), o bloco atual deve ser codificado em um modo de predição de bloco que usa apenas a segunda faixa de busca (ou um que usa a segunda faixa de busca por predefinição, exceto quando fornecido de outro modo). Se o elemento de sintaxe tiver ainda outro valor (dentre a pluralidade de valores possíveis), o bloco atual pode ser codificado em um modo de codificação diferente do modo de predição de bloco. O método 2100 termina no bloco 2125.
[0161] No método 2100, um ou mais dentre os blocos mostrados na Figura 21 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Por exemplo, em algumas concretizações, um ou mais dentre os blocos 2105, 2110, e 2115 pode ser omitido se o codificador determinar que o bloco atual inclui uma linha de varredura de rastreamento que não tem nenhuma linha de varredura de rastreamento anterior no mesmo segmento (por exemplo, primeira linha em um segmento). Em algumas concretizações, blocos adicionais podem ser adicionados ao método 2100. As concretizações da presente revelação não são limitadas a ou pelo exemplo mostrado na Figura 21, e outras variações podem ser implementadas sem que se afastem do espírito da presente revelação.
Vantagens de Usar Múltiplas Faixas de Busca
[0162] As técnicas relacionadas ao uso de múltiplas faixas de busca ao codificar um bloco no modo de predição de bloco aprimoram a eficácia de codificação associada ao modo de predição de bloco, aumentando, assim, o desempenho de codificação, especialmente para imagens tipo gráfico e conteúdo gráfico. Implementar uma ou mais dentre essas técnicas pode aumentar a complexidade computacional no lado de codificador. Entretanto, os codificadores tipicamente exibem um grau maior de tolerância para complexidade computacional aumentada, visto que os codificadores são implementado em um nó de processo menor (20 nm ou abaixo). De modo importante, a complexidade de decodificador irá permanecer principalmente igual mesmo se múltiplas faixas de busca forem usadas para a codificação de blocos no modo de predição de bloco. Os decodificadores podem ser tipicamente implementados em um tamanho de processo muito maior (60 nm e acima) e podem ser submetidos a exigências de hardware mais rigorosas (por exemplo, contagem de porta deve ser minimizada). Portanto, as técnicas da presente revelação para usar múltiplas faixas de busca no modo de predição de bloco aprimoram o desempenho de codificação com aumentos relativamente pequenos na complexidade computacional.
Modo de Predição de Bloco Simplificado
[0163] Em alguns casos, as técnicas descritas acima para codificação de um bloco atual no modo de predição de bloco podem ser adicionalmente simplificadas. Por exemplo, para as implementações de hardware restringidas pelo custo, um ou mais recursos descritos acima podem ser removidos ou modificados para reduzir a complexidade computacional do codificador (no lado de codificador, no lado de decodificador ou ambos). Em tais casos, uma ou mais dentre as seguintes alterações podem ser realizadas no método de codificação de um bloco no modo de predição de bloco sem degradar significativamente o desempenho: (i) o codificador pode usar uma faixa de busca única para prever o bloco ou partição atual, em vez de usar múltiplas faixas de busca como descrito acima; (ii) a faixa de busca pode incluir pixels de tanto de uma linha reconstruída anterior (por exemplo, a linha que antecede imediatamente a linha atual) quanto da linha atual, em que as amostras em tais linhas já foram reconstruídas (por exemplo, no momento em que o bloco ou partição atual for codificado); e/ou (iii) uma única linha reconstruída anterior é usada para prever o bloco ou partição atual, em vez de usar uma linha de bloco linha reconstruída anterior (que pode incluir múltiplas linhas).
[0164] Dependendo da troca desejada de uma dada implementação entre o desempenho de codificação e a complexidade de hardware, várias versões e modificações das técnicas para codificação de um bloco no modo de predição de bloco descrito no presente documento (por exemplo, modo de predição de bloco-padrão, modo de predição de bloco com o uso de múltiplas faixas, modo de predição de bloco simplificado, etc.) podem ser usadas. Alguma versão do modo de predição de bloco pode ser selecionada para ADSC dependendo do acordo da força-tarefa de VESA entre o desempenho e a complexidade de hardware.
[0165] Como discutido acima, em algumas concretizações, o modo de predição de bloco simplificado pode usar uma faixa de busca única. Em algumas de tais concretizações, o número total de vetores de predição de bloco possíveis é determinado como 2n para algum n. Por exemplo, ADSC tipicamente usa n = 6, em qual caso, o número total de vetores de predição de bloco possíveis seria 64 posições). Os pixels candidatos dentro da faixa de busca podem ser provenientes de qualquer uma dentre três regiões, chamadas, no presente documento, de Região A, Região B, e Região C. Um mapeamento exemplificativo de índices de BPV para faixas de busca (SR) e posições dentro das faixas de busca (SR pos) é ilustrado na Tabela 2. Por exemplo, esse mapeamento pode ser computado a partir de comprimentos de SE relativos SrLeni, i e {A, B, C}.Tabela 2. Mapeamento de índice de BPV para SR e posição de pixel dentro de SR (SR pos).
[0166] Em algumas concretizações, o vetor de predição de bloco cujo codificador sinaliza explicitamente para o decodificador pode ser um número inteiro na faixa [0, 2n — 1]. O mapeamento de um índice para uma faixa de busca pode depender de SrLeni. A Tabela 2 ilustra um exemplo em que SrLenA = 26, SrLenB = 8, SrLenC = 30.
[0167] No diagrama 2200 da Figura 22, é ilustrado um exemplo em que a predição de bloco simplificada usa uma faixa de busca única que compreende pixels de diferentes regiões da imagem causalmente disponível (por exemplo, pixels reconstruídos anteriormente). O número de candidatos em cada região particular pode ser ajustado dependendo dos parâmetros do codec. No exemplo da Figura 22, SRA/SRB são formados a partir da linha reconstruída anterior, enquanto SRc é formado a partir da linha de bloco atual. Por exemplo, SRA inclui pixels que estão diretamente acima (por exemplo, sobrepõem verticalmente) ou à direita do bloco atual 2340 como ilustrado na Figura 22, e SRB inclui pixels que estão à esquerda (por exemplo, não se sobrepõem verticalmente ao bloco atual 2340 e têm um valor de coordenada de x menor do que os pixels no bloco atual 2340) do bloco atual 2340 como ilustrado na Figura 22. A Figura 22 ilustra SRA 2220, SRB 2210, SRC 2230 e o bloco atual 2240. Como ilustrado na Figura 22, SRA 2220 e SRB 2210 estão na linha reconstruída anterior, e o SRC 2230 está na linha de bloco atual.
[0168] No diagrama 2300 da Figura 23, é ilustrado um exemplo do modo de predição de bloco simplificado com dimensionamento de partição variável (2x2). A busca dentro de SRC pode ser realizada como descrito no presente documento (por exemplo, determinando-se o custo associado à codificação do bloco atual com o uso dos blocos de 2x2 dentro de SRC). Para a busca dentro de SRA/SRB, a partição candidata pode ser estendida ou preenchida na direção de y para criar um candidato de 2x2. A Figura 23 ilustra SRA 2320, SRB 2310, SRC 2330 e o bloco atual 2340. Na Figura 23, SRA 2320 e SRB 2310 estão na linha reconstruída anterior, e o SRC 2330 está na linha de bloco atual.
[0169] No diagrama 2400 da Figura 24, é ilustrado um exemplo do modo de predição de bloco simplificado com tamanho de partição variável (1x2). A busca dentro de SRA/SRB pode ser realizada como descrito no presente documento (por exemplo, determinando-se o custo associado à codificação do bloco atual com o uso dos blocos de 1x2 dentro de SRA/SRB). Para a busca dentro de SRC (linha de bloco atual), as partições dentro da linha l do bloco atual são buscadas a partir da linha l de SRC. A Figura 24 ilustra SRA 2420, SRB 2410, SRC 2430 e o bloco atual 2440. Na Figura 24, SRA 2420 e SRB 2410 estão na linha reconstruída anterior, e o SRC 2430 está na linha de bloco atual.
[0170] Por exemplo, o número de posições de busca para uma região específica (por exemplo, as Regiões A, B ou C) pode ser chamado, no presente documento, de SrLeni para a região i. Em tal exemplo, a seguinte restrição pode ser estabelecida: SrLenA + SrLenB + SrLenc < 2n Por exemplo, se a predição de bloco for realizada com o uso de uma faixa de busca única, e o número máximo de posições na faixa de busca única for definido como 2n, a soma de posições em cada uma dentre as regiões precisaria ser menor ou igual ao número máximo. Os valores para SrLeni podem ser ajustados dependendo das necessidades do codec. Adicionalmente, esses valores podem ser facilmente ajustados de modo dinâmico com base na localização do bloco ou partição atual dentro do segmento atual. Por exemplo, se o bloco ou partição atual for localizado na FLS, então, o codificador e o decodificador podem inferir que SRA e SRB estão indisponíveis para serem usados para codificação do bloco atual. Portanto, um número maior de posições pode ser alocado para SRC (por exemplo, até o máximo alocado para uma faixa de busca única).
[0171] Adicional ou alternativamente ao uso de uma faixa de busca única, no modo de predição de bloco simplificado, a exigência para que o codificador/decodificador armazene a linha de bloco linha reconstruída anterior pode ser removida. Em vez disso, apenas uma linha reconstruída anterior pode ser armazenada. Por exemplo, para qualquer tamanho de bloco PxQ, apenas uma linha reconstruída pode ser armazenada (e incluída na faixa de busca como SRA da Figura 24) em vez de P linhas.
[0172] Se o dimensionamento de partição variável precisar ser alavancado, então, as seguintes alterações lógicas podem ser implementadas para o modo de predição de bloco simplificado.
[0173] Em algumas implementações, se as partições de 2x2 forem usadas para a codificação do bloco atual, qualquer posição candidata de SRA/SRB pode ser estendida ou preenchida na direção de y para gerar um candidato de 2x2, como descrito acima com referência à Figura 23. Por exemplo, como ilustrado na Figura 23, o candidato de 1x2 2350 pode ser estendido ou preenchido na direção de y através da duplicação dos valores de amostra para gerar o candidato de 2x2 2360. Uma técnica similar pode ser estendida aos blocos de tamanhos arbitrários. Por exemplo, um candidato pode ser estendido ou preenchido na direção de y para corresponder à altura do bloco ou partição atual. Por outro lado, o candidato de 2x2 2380 pode ser usado como é, sem ser estendido ou preenchido. Em outras implementações, a forma como uma partição de 2x2 dentro do bloco atual é codificada pode depender de qual faixa de busca (por exemplo, SRA, SRB ou SRC nas Figuras 22 a 24) é usada para codificar a partição de 2x2. Tais técnicas são descritas em maiores detalhes abaixo com referência à Figura 25.
[0174] Se as partições de 1x2 forem usadas para codificação do bloco atual, qualquer posição candidata de SRC pode ser selecionada a partir da mesma linha que a partição de 1x2 atual no bloco atual, como descrito acima com referência à Figura 24. Por exemplo, como ilustrado na Figura 24, a partição atual 2450 é prevista com base no candidato de 1x2 2460 na mesma linha, e a partição atual 2470 é prevista com base no candidato de 1x2 2480 na mesma linha. Em tal exemplo, a fim de encontrar um candidato para a partição atual 2450, o codificador compara os custos de codificação da partição atual 2450 com base nos blocos de 1x2 individuais na faixa de busca 2430 dentro da mesma linha que a partição atual 2450, e a fim de encontrar um candidato para a partição atual 2470, o codificador compara os custos de codificação da partição atual 2470 com base nos blocos de 1x2 individuais na faixa de busca 2430 dentro da mesma linha que a partição atual 2470.
Vantagens de Codificação no Modo de Predição de Bloco Simplificado
[0175] As técnicas relacionadas à codificação no modo de predição de bloco simplificado oferecem uma troca entre o desempenho e a complexidade, tanto no lado de codificador quanto no lado de decodificador. Isso pode ser desejável para qualquer implementação que seja restringida em custo de hardware.
Simplificação Adicional do Modo de Predição de Bloco Simplificado
[0176] A fim de reduzir a área de uma implementação de ADSC para ASIC/FPGA, uma modificação adicional pode ser realizada nas faixas de busca usadas no modo de predição de bloco simplificado descrito acima. A implementação de hardware de um decodificador de ADSC pode exigir um acesso aleatório rádio a todas as posições dentro da faixa de busca. Por exemplo, tal implementação de hardware pode incluir um arranjo de flip-flops proporcionais ao tamanho da faixa de busca (por exemplo, na pior hipótese). Portanto, limitar o número máximo de posições possíveis dentro de cada porção da faixa de busca (por exemplo, dimensionar as regiões dentro da faixa de busca) pode ser desejável. Em um exemplo, um número máximo de posições possíveis dentro de cada região dentro da faixa de busca pode ser da seguinte forma: SRA = 20, SRB = 12, SR = 32. Por exemplo, o número de posições nas respectivas regiões pode ser restringido a tais números máximos independentemente de quantas posições há nas outras regiões. Se o bloco atual a ser processado estiver na posição x — 128 (por exemplo, com 128 pixels na frente do bloco atual dentro da mesma linha) dentro da primeira linha de um segmento, então, o número de posições para a faixa de busca C seria restringido a 32 apesar do fato de que as faixas de busca A e B não têm pixels disponíveis para a codificação do bloco atual e que os pixels adicionais podem ser incluídos na faixa de busca C sem exceder o tamanho máximo da faixa de busca (por exemplo, 64 dentre os 128 pixels codificados anteriormente podem ser incluídos na faixa de busca se o tamanho máximo da faixa de busca for 64 pixels). Tal restrição pode ser colocada em ordem para limitar a quantidade de armazenamento necessária em hardware, em detrimento da eficácia de codificação. Do ponto de vista do codificador, as outras 32 posições de faixa de busca (por exemplo, os primeiros 20 pixels e os últimos 12 pixels da faixa de busca de 64 posições) podem ser "inválidas" para qualquer bloco atual dentro da primeira linha de um segmento. Em algumas implementações, as respectivas porções da faixa de busca sempre podem ser atribuídas ao mesmo número de posições, e cada posição pode ser "válida" ou "inválida" dependendo da possibilidade de o pixel na posição existir ou estar disponível para o codificador no momento da codificação do bloco atual. A busca de predição de bloco e todas as outras operações (por exemplo, cálculo e comparação de custo) podem ser puladas para tais posições inválidas. O número de posições válidas irá aumentar em direção à borda direita da primeira linha de um segmento (por exemplo, como ilustrado pela segunda fileira da Figura 25, em que a faixa de busca 2520 se estende para a seguinte linha de bloco). Em outras implementações, a soma do número de posições nas respectivas porções da faixa de busca pode ser restringida para que seja menor ou igual a um número máximo (por exemplo, 64 posições). Em tais implementações, se o bloco atual a ser processado estiver na posição x — 128 (por exemplo, com 128 pixels na frente do bloco atual dentro da mesma linha) dentro da primeira linha de um segmento, então, o número de posições para a faixa de busca C pode ser igual a um número maior do que 32 (por exemplo, até 64, se o número máximo for 64), visto que as outras faixas de busca (por exemplo, A e B) estariam vazias.
[0177] Para limitar o impacto sobre a eficácia de codificação, em certas circunstâncias, um número menor de bits pode ser usado para sinalizar os vetores de predição de bloco no fluxo de bits. Por exemplo, se o bloco atual estiver dentro de uma certa faixa de posições (por exemplo, primeira linha de um segmento), tanto o codificador quanto o decodificador podem inferir que um número menor de bits é usado para sinalizar os vetores de predição de bloco e identificar corretamente o bloco candidato ou partição com o uso dos vetores de predição de bloco que são sinalizados com o uso de menos do que o número de bits necessários para identificar corretamente cada uma dentre as posições individuais na faixa de busca (por exemplo, 6 bits se a faixa de busca tiver 64 posições). No exemplo acima, em que 32 das 64 posições são determinadas como "inválidas", 5 bits por vetor de predição de bloco podem ser usados durante a maior parte da primeira linha de um segmento em vez de 6, visto que apenas 32 dentre as 64 posições de faixa de busca são válidas durante tal momento.
[0178] Adicionalmente, a capacidade de preencher os flip-flops de faixa de busca em uma taxa constante em relação à temporização de bloco pode ser vantajosa para a implementação de hardware de ADSC. Isso significa que a faixa de busca deve se deslocar de modo eficaz em uma largura de bloco por tempo de bloco. Como resultado, certas posições dentre da fixa de busca C podem estar tecnicamente na linha de bloco anterior em relação ao bloco atual uma vez que o bloco atual avançar para a próxima linha do segmento. Uma ilustração desse recurso é mostrada no diagrama 2500 da Figura 25. À medida em que o bloco atual 2510 se move em direção à borda direita do segmento e, então, para a próxima linha de bloco, a faixa de busca 2530 (por exemplo, porção da faixa de busca na linha de bloco atual) permanece na linha de bloco anterior, como mostrado na quarta e na quinta fileiras da Figura 25.
[0179] Em algumas concretizações, a faixa de busca B (por exemplo, linha superior da faixa de busca 2540 da Figura 25) pode ser usada para gerar candidatos de predição de 2x2 que abrangem a linha anterior e a primeira linha da linha de bloco atual. Como mostrado na Figura 25, a linha superior da faixa de busca 2540 é a faixa de busca B, e a linha inferior da faixa de busca 2540 é uma porção de faixa de busca C (por exemplo, a faixa de busca 2530) que é colocalizada em relação à faixa de busca B. Portanto, em algumas de tais concretizações, em vez de se estender ou preencher um candidato de predição de 1x2 na faixa de busca B para gerar um candidato de predição de 2x2, o codificador pode utilizar candidatos de predição de 2x2 que inclui dois pixels da linha reconstruída anterior (por exemplo, dois pixels da faixa de busca B) e dois pixels da primeira linha da linha de bloco atual (por exemplo, dois pixels da faixa de busca C, colocalizados em relação aos dois pixels na faixa de busca B). Essa abordagem não pode ser usada para a faixa de busca A (por exemplo, a faixa de busca 2520) visto que os pixels da linha de bloco atual colocalizados em relação aos pixels na faixa de busca A (por exemplo, imediatamente abaixo dos pixels na faixa de busca A) não são causalmente disponíveis no momento da codificação do bloco atual 2510.
Codificação no Modo de Predição de Bloco com o Uso de Faixa de Busca Simplificada
[0180] Com referência à Figura 26, um procedimento exemplificativo para codificar um bloco de dados de vídeo no modo de predição de bloco será descrito. As etapas ilustradas na Figura 26 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 na Figura 2A) ou componente (ou componentes) do mesmo. Visando a conveniência, o método 2600 é descrito como realizado por um codificador, o qual pode ser o codificador de vídeo 20 ou outro componente.
[0181] O método 2600 começa no bloco 2601. No bloco 2605, o codificador determina um bloco candidato a ser usado para prever um bloco atual em um segmento atual, em que o bloco candidato que está dentro de uma faixa de posições de pixel (por exemplo, faixa de busca) cada uma das quais corresponde a um pixel reconstruído no segmento atual. Por exemplo, o codificador determina um custo associado à codificação do bloco atual com base em cada candidato de bloco potencial de uma pluralidade de blocos candidatos potenciais na faixa de posições de pixel e identifica um dentre os blocos que tem o menor custo como o bloco candidato. Cada candidato de bloco potencial pode corresponder a uma dentre as posições de pixel na faixa de posições de pixel. A faixa de posições de pixel pode incluir uma primeira região que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, em que a primeira linha de pixels se sobrepõe ao bloco atual. Por exemplo, a primeira linha de pixels pode abranger uma largura inteira do segmento atual, e a primeira linha de pixels pode incluir pelo menos um pixel no bloco atual. Adicionalmente, a faixa de posições de pixel pode incluir uma segunda região que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não se sobrepõe ao bloco atual. Por exemplo, a segunda linha de pixels pode abranger a largura inteira do segmento atual e não inclui qualquer pixel no bloco atual. A segunda linha de pixels pode anteceder imediatamente a primeira linha no segmento atual. Cada uma dentre a primeira e a segunda linhas pode ser uma linha de varredura de rastreamento dentro do segmento atual. Em algumas concretizações, a primeira região e a segunda região ocupam diferentes linhas de varredura de rastreamento. A primeira região pode estar em uma linha de varredura de rastreamento que se sobrepõe ao bloco atual (por exemplo, em que a linha de varredura de rastreamento e o bloco atual incluem pelo menos um pixel comum). A faixa de posições de pixel pode incluir adicionalmente uma terceira região que inclui uma ou mais terceiras posições de pixel na segunda linha (por exemplo, na mesma linha que inclui a segunda região). Por exemplo, nenhuma dentre a uma ou mais terceiras posições de pixel na terceira região pode incluir qualquer posição de pixel na segunda linha que é colocalizada em relação a uma posição de pixel na primeira linha que é parte do bloco atual (ou verticalmente se sobrepõe ao bloco atual), enquanto pelo menos uma dentre as uma ou mais segundas posições de pixel na segunda região pode incluir uma ou mais posições de pixel na segunda linha que é colocalizada em relação a uma posição de pixel na primeira linha que é parte do bloco atual (ou verticalmente se sobrepõe ao bloco atual). Como discutido no presente documento, cada uma das regiões pode incluir um número diferente de posições de pixel. Por exemplo, o número de posições de pixel na primeira região pode ser maior do que o número de posições de pixel na segunda região, a qual tem um número maior de posições de pixel do que a terceira região. Em algumas concretizações, o bloco atual é uma partição de 1x2 dentro de um bloco de 2x8 previsto no modo de predição de bloco simplificado. Em outras concretizações, o bloco atual é uma partição de 2x2 dentro de um bloco de 2x8 previsto no modo de predição de bloco simplificado. Em algumas outras concretizações, o bloco atual é um bloco de 2z8 previsto no modo de predição de bloco simplificado. Cada candidato de bloco potencial na faixa de posições de pixel pode corresponder a (por exemplo, incluir como o pixel superior esquerdo ou outro pixel de referência) qualquer posição de pixel na faixa de posições de pixel (por exemplo, posições de pixel na primeira região, na segunda região ou na terceira região). Os dados de vídeo associados ao bloco candidato podem ser armazenados em uma memória de um dispositivo de codificação de vídeo.
[0182] No bloco 2610, o codificador determina um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de posições de pixel. Por exemplo, a posição de pixel do bloco candidato pode estar em uma dentre a primeira região ou a segunda região.
[0183] No bloco 2615, o codificador codifica o bloco atual no modo de predição de bloco simplificado, pelo menos em parte, por meio da sinalização do vetor de predição. O codificador pode sinalizar o vetor de predição com o uso de um número fixo de bits (por exemplo, número mínimo de bits necessários para identificar exclusivamente cada posição de pixel na faixa de posições de pixel). Por exemplo, se houver 64 posições de pixel na faixa de posições de pixel, 6 bits podem ser usados para sinalizar cada vetor de predição. Em algumas concretizações, se a localização do bloco atual dentro do segmento atual impedir que a faixa de posições de pixel tenha mais do que um certo número de posições de pixel menor do que o número máximo de posições de pixel, o codificador pode sinalizar o vetor de predição com o uso de menos do que o número de bits necessários para identificar exclusivamente o número máximo de posições de pixel na faixa de posições de pixel. Por exemplo, Se o codificador determinar que a faixa de localizações de pixel não pode ter mais do que 32 posições de pixel devido à localização do bloco atual dentro do segmento atual (por exemplo, a linha atual é a primeira linha no segmento atual e há apenas 32 pixels reconstruídos que antecedem o bloco atual na ordem de varredura de rastreamento), um número reduzido de bits (por exemplo, 5 nesse caso) pode ser usado para sinalizar o vetor de predição indicativo da posição de pixel do bloco candidato a ser usado para codificar o bloco atual. O método 2600 termina no bloco 2620.
[0184] No método 2600, um ou mais dentre os blocos mostrados na Figura 26 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas concretizações, blocos adicionais podem ser adicionados ao método 2600. Por exemplo, em algumas concretizações, o codificador pode determinar que o bloco atual inclui pelo menos um pixel na primeira linha de pixels e pelo menos um pixel em uma terceira linha de pixels no segmento atual, em que a terceira linha de pixels abrange a largura inteira do segmento atual e inclui pelo menos um pixel no bloco atual, e em que a terceira linha é diferente da primeira linha. Com base em tal determinação, o codificador pode (i) determinar um custo associado à codificação do bloco atual com base em um primeiro bloco, em que o primeiro bloco inclui pelo menos um pixel na primeira região e pelo menos um pixel na segunda região, e (ii) com base no custo associado à codificação do bloco atual com base no primeiro bloco, determinar o primeiro bloco para ser o bloco candidato a ser usado para prever o bloco atual. Em outra concretização, o codificador pode determinar que o bloco atual inclui pelo menos um pixel na primeira linha de pixels e pelo menos um pixel em uma terceira linha de pixels no segmento atual, em que a terceira linha de pixels abrange a largura inteira do segmento atual e inclui pelo menos um pixel no bloco atual, e em que a terceira linha é diferente da primeira linha. Com base em tal determinação, o codificador pode (i) determinar um primeiro custo associado à codificação do bloco atual com base em um primeiro bloco que tem um número menor de pixels do que o bloco atual, em que o primeiro bloco inclui um ou mais pixels, cada um dos quais está na segunda região, (ii) determinar um segundo custo associado à codificação do bloco atual com base em um segundo bloco que tem o mesmo número de pixels que o bloco atual, em que o segundo bloco inclui todos dentre os um ou mais pixels no primeiro bloco e um ou mais pixels adicionais, cada um dos quais está na primeira região, e (iii) com base em uma determinação de que o segundo custo é maior do que o primeiro custo, determinar o primeiro bloco para ser o bloco candidato a ser usado para prever o bloco atual. As concretizações da presente revelação não são limitadas a ou pelo exemplo mostrado na Figura 26, e outras variações podem ser implementadas sem que se afastem do espírito da presente revelação.
Outras Considerações
[0185] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer uma dentre uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos e circuitos integrados que podem ser mencionados ao longo de toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, partículas ou campos magnéticos, partículas ou campos ópticos ou qualquer combinação dos mesmos.
[0186] Os vários blocos lógicos ilustrativos e as etapas de algoritmo descritas em relação às concretizações reveladas no presente documento podem ser implementados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambiabilidade de hardware e software, vários componentes, blocos e etapas ilustrativos foram descritos acima, de modo geral, em termos de sua funcionalidade. A possibilidade de tal funcionalidade ser implementada como hardware ou como software depende da aplicação particular e das restrições de projeto impostas sobre o sistema geral. Os versados na técnica podem implementar a funcionalidade descrita de modos variáveis para cada aplicação em particular, porém, tais decisões de implementação não devem ser interpretadas de modo a causar um afastamento do escopo da presente revelação.
[0187] As técnicas descritas no presente documento podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer um dentre uma variedade de dispositivos, como computadores de propósito geral, aparelhos de telefone de dispositivo de comunicação sem fio ou dispositivos de circuito integrado que têm múltiplos usos incluindo a aplicação em aparelhos de telefone de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implantados juntos em um dispositivo de lógica integrada ou separadamente como dispositivos de lógica distintos, porém,interoperáveis. Se forem implementadas em software, as técnicas podem ser realizadas pelo menos em parte por um meio de armazenamento de dados legível por computador que compreende código de programa incluindo instruções que, quando executadas, realizam um ou mais dentre os métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, o qual pode incluir materiais de empacotamento. O meio legível por computador pode compreender meios de armazenamento de dados ou memória, como memória de acesso aleatório (RAM), como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável eletricamente apagável (EEPROM), memória Flash, meios de armazenamento de dados magnéticos ou ópticos e similares. As técnicas podem ser realizadas, adicional ou alternativamente, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica o código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como ondas ou sinais propagados.
[0188] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos de lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico discreto ou integrado equivalente. Tal processor pode ser configurado para realizar qualquer uma dentre as técnicas descritas na presente revelação. Um processador de propósito geral pode ser um microprocessador; porém, alternativamente 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 combinação com um núcleo de DSP ou qualquer outra configuração desse tipo). Consequentemente, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma das estruturas supracitadas, qualquer combinação das estruturas supracitadas ou qualquer outra estrutura ou aparelho adequado para implementação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro do software ou hardware dedicado configurado para codificar e decodificar, ou incorporado em um codificador-decodificador de vídeo combinado (CODEC). Além disso, as técnicas poderiam ser plenamente implementadas em um ou mais circuitos ou elementos lógicos.
[0189] As técnicas da presente revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes ou unidades são descritas na presente revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem, necessariamente, a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidade de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0190] Embora o supracitado tenha sido descrito em relação a várias concretizações diferentes, os recursos ou elementos de uma concretização podem ser combinados com outras concretizações sem que se afastem dos ensinamentos da presente revelação. Entretanto, as combinações de recursos entre as respectivas concretizações não são necessariamente limitadas nesse sentido. Foram descritas várias concretizações da revelação. Essas e outras concretizações são abrangidas pelo escopo das reivindicações a seguir.

Claims (14)

1. Método (2101, 2601) para codificar um bloco de dados de vídeo em modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante, o método caracterizado pelo fato de que compreende: determinar (2605) um bloco candidato a ser usado para prever um bloco atual em um segmento atual, em que o bloco candidato está dentro de uma faixa de busca de posições de pixel, em que cada um corresponde a um pixel reconstruído no segmento atual, em que a faixa de busca de posições de pixel compreende (i) uma primeira faixa de busca (SRc) que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels em um segmento atual, em que a primeira linha de pixels inclui pelo menos um pixel em um bloco atual no segmento atual e abrange uma largura inteira do segmento atual, e (ii) uma segunda faixa de busca (SRA, SRB) que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, em que a segunda linha de pixels não inclui qualquer pixel no bloco atual, mas que abrange a largura inteira do segmento atual; determinar (2105) um primeiro custo de taxa-distorção associado à predição do bloco atual com base na primeira faixa de busca; determinar (2110) um segundo custo de taxa-distorção associado à predição do bloco atual com base na segunda faixa de busca; selecionar (2115, 2120) a uma dentre a primeira faixa de busca e a segunda faixa de busca produzindo o custo de taxa-distorção mais baixo dos primeiro e segundo custos de taxa-distorção; determinar (2610) um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de busca selecionada; codificar um sinalizador indicativo da selecionada das primeira faixa de busca e segunda faixa de busca, em que o sinalizador ter um primeiro valor indica que a primeira faixa de busca deve ser usada para prever o bloco atual, e o sinalizador ter um segundo valor diferente do primeiro valor indica que a segunda faixa de busca deve ser usada para prever o bloco atual; e codificar (2615) o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio da sinalização do vetor de predição.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira linha de pixels e a segunda linha de pixels compreendem duas linhas de varredura de raster adjacentes do segmento atual.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco atual é um dentre um bloco de 2x8 compreendendo partições de 1x2 ou um bloco de 2x8 compreendendo partições de 2x2.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o sinalizador é um sinalizador de um bit tendo um de valores possíveis, em que os dois valores possíveis incluem o primeiro valor e o segundo valor.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a segunda faixa de busca compreende adicionalmente uma faixa de busca esquerda (SRB) incluindo uma ou mais terceiras posições de pixel na segunda linha de pixels, em que as uma ou mais terceiras posições de pixel não incluem qualquer posição de pixel na segunda linha que é colocalizada em relação a uma posição de pixel na primeira linha que é parte do bloco atual e uma faixa de busca direita (SRA) incluindo uma ou mais quartas posições de pixel incluindo pelo menos uma posição de pixel na segunda linha que é colocalizada em relação a uma posição de pixel na primeira linha que é parte do bloco atual.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a faixa de busca esquerda SRB e a faixa de busca direita SRA ocupam a mesma linha de varredura raster.
7. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a primeira faixa de busca SRC inclui um primeiro número de posições de pixel, em que o primeiro número é maior do que um segundo número das uma ou mais posições de pixel dentro da faixa de busca esquerda SRB e maior do que um terceiro número das uma ou mais posições de pixel dentro da faixa de busca direita SRA.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que o primeiro, segundo e o terceiro números são diferentes um do outro.
9. Aparelho para codificar um bloco de dados de vídeo no modo de predição de bloco simplificado de um esquema de codificação de vídeo de taxa de bit constante, o aparelho caracterizado pelo fato de que compreende: uma memória configurada para armazenar um ou mais pixels reconstruídos de um segmento atual de dados de vídeo; e um ou mais processadores em comunicação com a memória e configurado para: determinar um bloco candidato a ser usado para prever um bloco atual em um segmento atual, o bloco candidato estando dentro de uma faixa de busca de posições de pixel, cada uma das quais corresponde a um pixel reconstruído no segmento atual, a faixa de busca compreendendo pelo menos (i) uma primeira faixa de busca que inclui uma ou mais primeiras posições de pixel em uma primeira linha de pixels no segmento atual, a primeira linha de pixels incluindo pelo menos um pixel em um bloco atual no segmento atual e abrangendo uma largura inteira do segmento atual, e (ii) uma segunda faixa de busca que inclui uma ou mais segundas posições de pixel em uma segunda linha de pixels no segmento atual, a segunda linha de pixels não incluindo qualquer pixel no bloco atual, mas abrangendo a largura inteira do segmento atual; determinar um primeiro custo de taxa-distorção associado à predição do bloco atual com base na primeira faixa de busca; determinar um segundo custo de taxa-distorção associado à predição do bloco atual com base na segunda faixa de busca; selecionar uma dentre a primeira faixa de busca e a segunda faixa de busca produzindo o custo de taxa-distorção mais baixo dos primeiro e segundo custos de taxa-distorção; determinar um vetor de predição indicativo de uma posição de pixel do bloco candidato dentro da faixa de busca selecionada; codificar um sinalizador indicativo da selecionada das primeira faixa de busca e segunda faixa de busca, em que o sinalizador ter um primeiro valor indica que a primeira faixa de busca deve ser usada para prever o bloco atual, e o sinalizador ter um segundo valor diferente do primeiro valor indica que a segunda faixa de busca deve ser usada para prever o bloco atual; e codificar (2615) o bloco atual no modo de predição de bloco simplificado pelo menos em parte por meio da sinalização do vetor de predição.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que a segunda faixa de busca inclui adicionalmente uma ou mais terceiras posições de pixel na segunda linha de pixels, em que as uma ou mais terceiras posições de pixel não incluem qualquer posição de pixel na segunda linha que é colocalizada em relação a uma posição de pixel na primeira linha que é parte do bloco atual.
11. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para:determinar um custo de taxa-distorção associado à predição do bloco atual com base em cada bloco candidato potencial dentre uma pluralidade de blocos candidatos potenciais na primeira faixa de busca e na segunda faixa de busca; e identificar um dentre a pluralidade de blocos candidatos potenciais que tem um custo de taxa-distorção mais baixo, como um bloco candidato a ser usado para prever o bloco atual.
12. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que um número de bits necessários para identificar exclusivamente cada posição de pixel na selecionada dentre a primeira faixa de busca e a segunda faixa de busca é igual a um primeiro número, os um ou mais processadores sendo configurados adicionalmente para: determinar que o bloco atual está dentro de uma região predeterminada dentro do segmento atual; e sinalizar, usando menos do que o primeiro número de bits, um vetor de predição indicativo de um bloco candidato dentro da selecionada dentre a primeira faixa de busca e a segunda faixa de busca.
13. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para: determinar que o bloco atual inclui pelo menos um pixel na primeira linha de pixels e pelo menos um pixel em uma terceira linha de pixels no segmento atual, a terceira linha de pixels incluindo pelo menos um pixel no bloco atual e abrangendo a largura inteira do segmento atual, em que a terceira linha é diferente da primeira linha; determinar um primeiro custo de taxa-distorção candidato associado à codificação do bloco atual com base em um primeiro bloco ter um número menor de pixels do que o bloco atual, o primeiro bloco incluindo um ou mais pixels que estão, cada um, na segunda faixa de busca; determinar um segundo custo de taxa-distorção candidato associado à codificação do bloco atual com base em um segundo bloco ter o mesmo número de pixels que o bloco atual, o segundo bloco incluindo todos dentre os um ou mais pixels no primeiro bloco e um ou mais pixels adicionais que estão, cada um, na primeira faixa de busca; e determinar, com base em uma determinação que o segundo custo de taxa-distorção candidato é maior do que o primeiro custo de taxa-distorção candidato, o primeiro bloco a ser o bloco candidato a ser usado para prever o bloco atual.
14. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 8.
BR112018011398-0A 2015-12-07 2016-12-06 Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc) BR112018011398B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562264087P 2015-12-07 2015-12-07
US62/264,087 2015-12-07
US201662304879P 2016-03-07 2016-03-07
US62/304,879 2016-03-07
US15/369,723 US10368073B2 (en) 2015-12-07 2016-12-05 Multi-region search range for block prediction mode for display stream compression (DSC)
US15/369,723 2016-12-05
PCT/US2016/065186 WO2017100206A1 (en) 2015-12-07 2016-12-06 Multi-region search range for block prediction mode for display stream compression (dsc)

Publications (2)

Publication Number Publication Date
BR112018011398A2 BR112018011398A2 (pt) 2018-12-04
BR112018011398B1 true BR112018011398B1 (pt) 2024-01-23

Family

ID=58800491

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112018011398-0A BR112018011398B1 (pt) 2015-12-07 2016-12-06 Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc)

Country Status (10)

Country Link
US (1) US10368073B2 (pt)
EP (1) EP3387832B1 (pt)
JP (1) JP7198665B2 (pt)
KR (1) KR102102066B1 (pt)
CN (1) CN108293114B (pt)
BR (1) BR112018011398B1 (pt)
CA (1) CA3004185C (pt)
HU (1) HUE049810T2 (pt)
TW (1) TWI692244B (pt)
WO (1) WO2017100206A1 (pt)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
WO2019000443A1 (zh) * 2017-06-30 2019-01-03 华为技术有限公司 一种帧间预测的方法及装置
US10564890B2 (en) * 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
US10685031B2 (en) * 2018-03-27 2020-06-16 New Relic, Inc. Dynamic hash partitioning for large-scale database management systems
US10516885B1 (en) * 2018-07-11 2019-12-24 Tencent America LLC Method and apparatus for video coding
US10965315B2 (en) * 2018-08-09 2021-03-30 Andrew Kamal Data compression method
US10798419B2 (en) * 2018-11-19 2020-10-06 Sony Corporation Embedded codec circuitry for sub-block based encoding of quantized prediction residual levels
CN111787322B (zh) * 2020-08-04 2022-05-13 北京百度网讯科技有限公司 视频编码的方法、装置、电子设备及计算机可读存储介质

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7145950B2 (en) * 2003-07-14 2006-12-05 Primax Electronics Ltd. Method of motion vector determination in digital video compression
US8285037B2 (en) * 2005-02-28 2012-10-09 Nxp B.V. Compression format and apparatus using the new compression format for temporarily storing image data in a frame memory
US8494052B2 (en) * 2006-04-07 2013-07-23 Microsoft Corporation Dynamic selection of motion estimation search ranges and extended motion vector ranges
KR101228020B1 (ko) * 2007-12-05 2013-01-30 삼성전자주식회사 사이드 매칭을 이용한 영상의 부호화 방법 및 장치, 그복호화 방법 및 장치
EP2071852A1 (en) * 2007-12-11 2009-06-17 Alcatel Lucent Process for delivering a video stream over a wireless bidirectional channel between a video encoder and a video decoder
US9100646B2 (en) * 2008-09-03 2015-08-04 Sk Telecom Co., Ltd. Device and method for image encoding/decoding using prediction direction conversion and selective encoding
GB2471323B (en) * 2009-06-25 2014-10-22 Advanced Risc Mach Ltd Motion vector estimator
CN103039075B (zh) * 2010-05-21 2015-11-25 Jvc建伍株式会社 图像编码装置、图像编码方法、以及图像解码装置、图像解码方法
TWI412281B (zh) * 2010-12-28 2013-10-11 Nat Univ Chung Cheng A Method of Calculating Reverse Conversion of Low Complexity
US8681170B2 (en) * 2011-05-05 2014-03-25 Ati Technologies Ulc Apparatus and method for multi-streaming for more than three pixel component values
US9282338B2 (en) * 2011-06-20 2016-03-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
CN102946532A (zh) * 2011-09-02 2013-02-27 斯凯普公司 视频编码
US8963944B2 (en) * 2012-05-15 2015-02-24 Omnivision Technologies, Inc. Method, apparatus and system to provide video data for buffering
US9781418B1 (en) * 2012-06-12 2017-10-03 Google Inc. Adaptive deadzone and rate-distortion skip in video processing
WO2014047885A1 (en) * 2012-09-28 2014-04-03 Intel Corporation Enhanced reference region utilization for scalable video coding
US9813711B2 (en) * 2012-10-03 2017-11-07 Avago Technologies General Ip (Singapore) Pte. Ltd. Hybrid transform-based compression
US9451250B2 (en) * 2012-10-03 2016-09-20 Broadcom Corporation Bounded rate compression with rate control for slices
PT2986003T (pt) * 2013-01-04 2019-06-25 Samsung Electronics Co Ltd Aparelho para descodificar de entropia segmentos de parcela
KR102070719B1 (ko) * 2013-01-23 2020-01-30 한국전자통신연구원 인터 예측 방법 및 그 장치
JP5845202B2 (ja) * 2013-03-22 2016-01-20 株式会社東芝 画像圧縮装置および画像処理システム
US11284103B2 (en) * 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US9922620B2 (en) * 2014-03-18 2018-03-20 Mediatek Inc. Data processing apparatus for performing display data compression/decompression with color format conversion and related data processing method
US10477232B2 (en) * 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US9930346B2 (en) * 2014-04-15 2018-03-27 Qualcomm Incorporated System and method for flatness detection for display stream compression (DSC)
US9866853B2 (en) * 2014-04-15 2018-01-09 Qualcomm Incorporated System and method for lagrangian parameter calculation for display stream compression (DSC)
US9848193B2 (en) * 2014-04-15 2017-12-19 Qualcomm Incorporated System and method for selecting quantization parameter (QP) in display stream compression (DSC)
US10631005B2 (en) * 2014-04-21 2020-04-21 Qualcomm Incorporated System and method for coding in block prediction mode for display stream compression (DSC)
US10104397B2 (en) * 2014-05-28 2018-10-16 Mediatek Inc. Video processing apparatus for storing partial reconstructed pixel data in storage device for use in intra prediction and related video processing method
GB201409634D0 (en) * 2014-05-30 2014-07-16 Canon Kk Intra block copy mode encoding choice
US20160127771A1 (en) * 2014-10-30 2016-05-05 Broadcom Corporation System and method for transporting hd video over hdmi with a reduced link rate
US9716889B2 (en) * 2014-12-09 2017-07-25 Sony Corporation Intra and inter-color prediction for Bayer image coding
US9936203B2 (en) * 2015-04-13 2018-04-03 Qualcomm Incorporated Complex region detection for display stream compression
US10200713B2 (en) * 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
US10200697B2 (en) * 2015-07-09 2019-02-05 Qualcomm Incorporated Display stream compression pixel format extensions using subpixel packing
US20170085886A1 (en) 2015-09-18 2017-03-23 Qualcomm Incorporated Variable partition size for block prediction mode for 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)
US10091533B2 (en) * 2016-02-18 2018-10-02 Cisco Technology, Inc. Generalized filter for removing video compression artifacts
US10567803B2 (en) * 2017-04-12 2020-02-18 Qualcomm Incorporated Midpoint prediction error diffusion for display stream compression

Also Published As

Publication number Publication date
KR102102066B1 (ko) 2020-04-17
BR112018011398A2 (pt) 2018-12-04
US20170163986A1 (en) 2017-06-08
CN108293114A (zh) 2018-07-17
US10368073B2 (en) 2019-07-30
TW201725909A (zh) 2017-07-16
CA3004185A1 (en) 2017-06-15
JP7198665B2 (ja) 2023-01-04
EP3387832B1 (en) 2020-04-22
JP2018536364A (ja) 2018-12-06
CN108293114B (zh) 2022-04-01
HUE049810T2 (hu) 2020-10-28
KR20180091003A (ko) 2018-08-14
EP3387832A1 (en) 2018-10-17
TWI692244B (zh) 2020-04-21
CA3004185C (en) 2023-04-25
WO2017100206A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
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)
EP3350991B1 (en) Variable partition size for block prediction mode for display stream compression (dsc)
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
KR101975093B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 라그랑지안 파라미터 계산을 위한 시스템 및 방법
ES2812807T3 (es) Procedimiento para codificación de vídeo con modo de predicción espacial para codificación de vídeo multimodo
US20160044314A1 (en) System and method for reusing transform structure for multi-partition transform
BR112016023956B1 (pt) Método e aparelho para codificar dados de vídeo, e memória legível por computador
JP6644766B2 (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
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 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 06/12/2016, OBSERVADAS AS CONDICOES LEGAIS