BR112016005982B1 - Método para codificar uma representação de áudio de n canais, método para recuperação de m canais de uma representação de áudio de n canais, codificador de áudio e decodificador - Google Patents
Método para codificar uma representação de áudio de n canais, método para recuperação de m canais de uma representação de áudio de n canais, codificador de áudio e decodificador Download PDFInfo
- Publication number
- BR112016005982B1 BR112016005982B1 BR112016005982-4A BR112016005982A BR112016005982B1 BR 112016005982 B1 BR112016005982 B1 BR 112016005982B1 BR 112016005982 A BR112016005982 A BR 112016005982A BR 112016005982 B1 BR112016005982 B1 BR 112016005982B1
- Authority
- BR
- Brazil
- Prior art keywords
- matrix
- channels
- primitive
- cascade
- matrices
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 239000011159 matrix material Substances 0.000 claims description 438
- 239000000203 mixture Substances 0.000 claims description 76
- 230000008859 change Effects 0.000 claims description 16
- 238000005070 sampling Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000009877 rendering Methods 0.000 abstract description 79
- 230000006870 function Effects 0.000 description 44
- 230000009466 transformation Effects 0.000 description 39
- 238000012545 processing Methods 0.000 description 23
- 238000013139 quantization Methods 0.000 description 14
- 230000003068 static effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000005236 sound signal Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004806 packaging method and process Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000001131 transforming effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000201976 Polycarpon Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S3/00—Systems employing more than two channels, e.g. quadraphonic
- H04S3/02—Systems employing more than two channels, e.g. quadraphonic of the matrix type, i.e. in which input signals are combined algebraically, e.g. after having been phase shifted with respect to each other
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/0018—Speech coding using phonetic or linguistical decoding of the source; Reconstruction using text-to-speech synthesis
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/008—Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/018—Audio watermarking, i.e. embedding inaudible data in the audio signal
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/20—Vocoders using multiple modes using sound class specific coding, hybrid encoders or object based coding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/24—Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S3/00—Systems employing more than two channels, e.g. quadraphonic
- H04S3/008—Systems employing more than two channels, e.g. quadraphonic in which the audio signals are in digital form, i.e. employing more than two discrete digital channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S2400/00—Details of stereophonic systems covered by H04S but not provided for in its groups
- H04S2400/03—Aspects of down-mixing multi-channel audio to configurations with lower numbers of playback channels, e.g. 7.1 -> 5.1
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S2400/00—Details of stereophonic systems covered by H04S but not provided for in its groups
- H04S2400/11—Positioning of individual sound objects, e.g. moving airplane, within a sound field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04S—STEREOPHONIC SYSTEMS
- H04S2420/00—Techniques used stereophonic systems covered by H04S but not provided for in its groups
- H04S2420/03—Application of parametric coding in stereophonic audio systems
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Stereophonic System (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
RENDERIZAÇÃO DE ÁUDIO DE MULTICANAL UTILIZANDO MATRIZES INTERPOLADAS. A presente invenção refere-se a métodos os quais utilizam matrizes primitivas interpoladas para decodificar um áudio codificado para recuperar (sem perda) o conteúdo de um programa de áudio de multicanal e/ou recuperar pelo menos um downmix de tal conteúdo, e métodos de codificação para gerar tal áudio codificado. Em algumas modalidades, um decodificador executa uma interpolação em conjunto de matrizes primitivas de semente para determinar matrizes interpoladas para utilização em renderização de canais do programa. Outros aspectos são um sistema ou dispositivo configurado para implementar qualquer modalidade do método.
Description
[0001] Este pedido reivindica prioridade do Pedido de Patente Provisória U.S. Número 61/883.890 depositado em 27 de setembro de 2013 o qual está por meio disto incorporado por referência na sua totalidade.
[0002] A invenção refere-se ao processamento de sinal de áudio, e mais especificamente à renderização de representações de áudio de multicanal (por exemplo, fluxos de bits indicativos de representações de áudio baseadas em objeto que inclui pelo menos um canal de objeto de áudio e pelo menos um canal de alto-falante) que utiliza matrizes interpoladas, e para codificação e decodificação das representações. Em algumas modalidades, um decodificador executa uma interpolação sobre um conjunto de matrizes primitivas de semente para determinar matrizes interpoladas para utilização na renderização canais da representação. Algumas modalidades geram, decodificam, e/ou renderizam dados de áudio no formado conhecido como Dolby TrueHD.
[0003] Dolby e Dolby TrueHD são marcas registradas de Dolby Laboratories Licensing Corporation.
[0004] A complexidade, e custo financeiro e computacional, de renderizar representações de áudio aumentam com o número de canais a serem renderizados. Durante a renderização e reprodução de representações de áudio baseadas em objeto, o conteúdo de áudio tem um número de canais (por exemplo, canais de objeto e canais de alto- falante) o que é tipicamente muito maior (por exemplo, por uma ordem de magnitude) do que o número que ocorre durante a renderização e reprodução de representações baseadas em canal de alto-falante convencionais. Tipicamente também, o sistema de alto-falante utilizado para reprodução inclui um número de alto-falantes muito maior do que o número empregado para reprodução de representações baseadas em canal de alto-falante convencionais.
[0005] Apesar das modalidades da invenção serem úteis para renderizar canais de qualquer representação de áudio de multicanal, muitas modalidades da invenção são especificamente úteis para renderizar canais de representações de áudio baseadas em objeto que têm um grande número de canais.
[0006] É conhecido empregar sistemas de reprodução (por exemplo, em cinemas) para renderizar representações de áudio baseada em objeto. As representações de áudio baseada em objeto podem ser indicativos de muitos diferentes objetos de áudio que correspondem a imagens sobre uma tela, diálogo, ruídos, e efeitos sonoros que emanam de diferentes lugares sobre (ou relativos a) a tela, assim como a música de fundo e efeitos de ambiente (os quais podem ser indicados por canais de alto-falante da representação) para criar a experiência auditiva total pretendida. A reprodução precisa de tais representações requer que os sons sejam reproduzidos em um modo que corresponda tão proximamente quanto possível ao que é pretendido pelo criador de conteúdo com relação ao tamanho de objeto de áudio, posição, intensidade, movimento, e profundidade.
[0007] Durante a geração de representações de áudio baseada em objeto, é tipicamente assumido que os alto-falantes a serem empregados para renderização estão localizados em localizações arbitrárias no ambiente de reprodução; não necessariamente em uma disposição predeterminada em um plano (nominalmente) horizontal ou em qualquer outra disposição predeterminada conhecida no momento de geração de representação. Tipicamente, metadados incluídos na representação indicam os parâmetros de renderização para renderizar pelo menos um objeto da representação em uma localização especial aparente ou ao longo de uma trajetória (em um volume tridimensional), por exemplo, utilizando uma rede tridimensional de alto-falantes. Por exemplo, um canal de objeto da representação pode ter metadados correspondentes que indicam uma trajetória tridimensional de posições espaciais aparentes nas quais o objeto (indicado pelo canal de objeto) deve ser renderizado. A trajetória pode incluir uma sequência de localizações de "piso" (no plano de um subconjunto de alto-falantes os quais são assumidos estarem localizados sobre o piso, ou em outro plano horizontal, do ambiente de reprodução), e uma sequência de localizações "acima do piso" (cada uma determinada acionando um subconjunto de alto-falantes os quais são assumidos estarem localizados em pelo menos um outro plano horizontal do ambiente de reprodução).
[0008] As representações de áudio baseadas em objeto representam um significativo aperfeiçoamento em muitos aspectos sobre as representações de áudio baseadas em canal de alto-falante tradicionais, já que áudio baseado em canal de alto-falante é mais limitado com relação à reprodução espacial de objetos de áudio específicos do que é o áudio baseado em canal de objeto. As representações de áudio baseadas em canal de alto-falante consistem em canais de alto-falante somente (não canais de objeto), e cada canal de alto-falante tipicamente determina uma alimentação de alto-falante para um específico, individual alto-falante em um ambiente de audição.
[0009] Vários métodos e sistemas para gerar e renderizar representações de áudio baseadas em objeto foram propostos. Durante a geração de representação de áudio baseada em objeto, é tipicamente assumido que um número arbitrário de alto-falantes será empregado para reprodução da representação, e que os alto-falantes a serem empregados para a reprodução estarão localizados em localizações arbitrárias no ambiente de reprodução; não necessariamente em um plano (nominalmente) horizontal ou em qualquer outra disposição predeterminada conhecida no momento de geração de representação. Tipicamente, metadados relativos a objeto incluídos na representação indicam os parâmetros de renderização para renderizar pelo menos um objeto da representação em uma aparente localização espacial ou ao longo de uma trajetória (em um volume tridimensional), por exemplo, utilizando uma rede tridimensional de alto-falantes. Por exemplo, um canal de objeto da representação pode ter metadados correspondentes que indicam uma trajetória tridimensional de aparentes posições espaciais na qual o objeto (indicado pelo canal de objeto) deve ser renderizado. A trajetória pode incluir uma sequência de localizações de "piso" (no plano de um subconjunto de alto-falantes os quais são assumidos serem localizados sobre o piso, ou em outro plano horizontal, do ambiente de reprodução), e uma sequência de localizações "acima do piso" (cada uma determinada acionando um subconjunto de alto- falantes os quais são assumidos serem localizados em pelo menos um outro plano horizontal do ambiente de reprodução). Exemplos de renderização de objeto com base em representações de áudio estão descritos, por exemplo, no Pedido Internacional PCT Número PCT/US2001/028783, publicado sob a Publicação Internacional Número WO 2011/119401 A2 em 29 de setembro de 2011, e cedido para o cedente do presente pedido.
[0010] Uma representação de áudio baseada em objeto pode incluir canais de "leito". Um canal de leito pode ser um canal de objeto indicativo de um objeto cuja posição não muda ao longo do intervalo de tempo relevante (e assim é tipicamente renderizado utilizando um conjunto de alto-falantes de sistema de reprodução que têm localizações alto-falante estáticas), ou este pode ser um canal de alto- falante (a ser renderizado por um alto-falante específico de um sistema de reprodução). Os canais de leito não têm metadados de posição variável no tempo correspondente (apesar de que estes podem ser considerados terem metadados de posição invariáveis no tempo). Estes podem ser indicativos de elementos de áudio que são dispersos no espaço, por exemplo, áudio indicativo de ambiência.
[0011] A reprodução de uma representação de áudio baseada em objeto sobre uma configuração de alto-falante tradicional (por exemplo, um sistema de reprodução 7.1) é conseguida renderizando canais da representação (incluindo canais de objeto) para um conjunto de alimentações de alto-falante. Em modalidades típicas da invenção, o processo para renderizar canais de objeto (algumas vezes aqui referidos como objetos) e outros canais de uma representação de áudio baseada em objeto (ou canais de uma representação de áudio de outro tipo) compreende em uma maior parte (ou somente) em uma conversão de metadados espaciais (para os canais a serem renderizados) em cada instante no tempo em uma matriz de ganho correspondente (referida aqui como uma "matriz de renderização") a qual representa quanto cada um dos canais (por exemplo, canais de objeto e canais de alto-falante) contribui para uma mistura de conteúdo de áudio (no instante) indicado pela alimentação de alto-falante para um alto-falante específico (isto é, o peso relativo de cada um dos canais da representação na mistura indicada pela alimentação de alto-falante).
[0012] Um "canal de objeto" de uma representação de audio baseada em objeto é indicativo de uma sequência de amostras indicativas de um objeto de áudio, e a representação tipicamente inclui uma sequência de valores de metadados de posição espacial indicativos da posição de objeto ou a trajetória para cada canal de objeto. Em modalidades típicas da invenção, sequências de valores de metadados de posição que correspondem a canais de objeto de uma representação são utilizadas para determinar uma matriz MxN A(t) indicativa de uma especificação de ganho variável no tempo para a representação.
[0013] A renderização de "N" canais (por exemplo, canais de objeto, ou canais de objeto e canais de alto-falante) de uma representação de áudio para "M" alto-falantes (alimentações de alto-falante) no tempo "t" da representação pode ser representada pela multiplicação de um vetor x(t) de comprimento "N", compreendido de uma amostra de áudio no tempo "t" de cada canal, por uma matriz MxN A(t) determinada de metadados de posição associados (e opcionalmente outros metadados que correspondem ao conteúdo de áudio a ser renderizado, por exemplo, ganhos de objeto) no tempo "t". Os valores resultantes (por exemplo, ganhos ou níveis) das alimentações de alto-falante no tempo t podem ser representados como um vetor y(t), como na seguinte equação (1):
[0014] Apesar da equação (1) descrever a renderização de N canais de uma representação de áudio (por exemplo, uma representação de áudio baseada em objeto, ou uma versão codificada de uma representação de áudio baseada em objeto) em M canais de saída (por exemplo, M alimentações de alto-falante), está também representa um conjunto geral de cenários nos quais um conjunto de N amostras de áudio é convertido de um conjunto de M valores (por exemplo, M amostras) por operações lineares. Por exemplo, A(t) poderia ser uma matriz estática, "A", cujos coeficientes não variam com diferentes valores de tempo "t". Para outro exemplo, A(t) (a qual pode ser uma matriz estática, A) poderia representar um downmix convencional para um conjunto de canais de alto-falante x(t) para um menor conjunto de canais de alto-falante y(t) (ou x(t) poderia ser um conjunto de canais de áudio que descreve uma cena espacial em um formato Ambisonics), e a conversão para alimentações de alto-falante y(t) poderia ser prescrita como multiplicação pela matriz de downmix A. Mesmo em uma aplicação que emprega uma nominalmente matriz de downmix nominalmente estática, a transformação linear real (multiplicação de matriz) aplicada pode ser dinâmica de modo a assegurar uma proteção de corte downmix (isto é, uma transformação estática A pode ser convertida para uma transformação variável no tempo A(t), para assegurar a proteção de corte).
[0015] Um sistema de renderização de representação de áudio (por exemplo, um decodificador implementando tal sistema) pode receber metadados os quais determinam as matrizes de renderização A(t) (ou este pode receber as próprias matrizes) somente intermitente e não em todo instante "t" durante uma representação. Por exemplo, isto poderia ser devido a qualquer uma de uma variedade de razões, por exemplo, baixa resolução de tempo do sistema que realmente emite os metadados ou a necessidade de limitar a taxa de bits de transmissão da representação. Os inventores reconheceram que pode ser desejável que um sistema de renderização interpole entre renderizar matrizes A(t1) e A(t2), nos instantes de tempo "t1" e "t2" durante uma representação, respectivamente, para obter uma matriz de renderização A(t3) para um instante de tempo intermediário "t3". A interpolação assegura que a posição percebida de objetos nas alimentações de alto- falante renderizadas varia suavemente ao longo do tempo, e pode eliminar artefatos indesejáveis tal como ruído de zíper que origina de atualizações de matriz descontínuas (constante no sentido de peça). A interpolação pode ser linear (ou não linear), e tipicamente deve assegurar um percurso contínuo no tempo de A(t1) para A(t2).
[0016] Dolby TrueHD é um formato de codec de áudio convencional que suporta uma transmissão sem perda e escalável de sinais de áudio. O áudio de fonte é codificado em uma hierarquia de subfluxos de canais, e um subconjunto selecionados subfluxos (ao invés de todos os subfluxos) pode ser recuperado fluxo de bits e decodificado, de modo a obter uma apresentação dimensional mais baixa (downmix) da cena espacial. Quando todos os subfluxos são decodificados, o áudio resultante é idêntico ao áudio de fonte (a codificação, seguida pela decodificação, é sem perda).
[0017] Em uma versão comercialmente disponível de TrueHD, o áudio de fonte é tipicamente uma mistura de canal 7.1 o qual é codificado em uma sequência de três subfluxos, incluindo um primeiro subfluxo o qual pode ser decodificado para determinar um downmix de dois canais do áudio original de canal 7.1. Os dois primeiros subfluxos podem ser decodificados para determinar um downmix de canal 5.1 do áudio original. Todos os três subfluxos podem ser decodificados para determinar o áudio de canal 7.1 original. Os detalhes técnicos de Dolby TrueHD, e a tecnologia de Meridian Lossless Packing (MLP) sobre a qual este está baseado, são bem conhecidos. Aspectos de tecnologia TrueHD e MLP estão descritos na Patente US 6.611.212, emitida em 26 de Agosto de 2003, e cedida para Dolby Laboratories Licensing Corp., e o documento por Gerzon, et al., intitulado "The MLP Lossless Compression Systems for PCM Audio," J. AES, Vol. 52, No. 3, pp. 243260 (Março 2004).
[0018] TrueHD suporta a especificação de matrizes de downmix. Em uso típico, o criador de conteúdo de uma representação de áudio de canal 7.1 especifica uma matriz estática para downmix da representação de canal 7.1 para uma mistura de canal 5.1, e outra matriz estática para downmix o canal downmix 5.1 para um downmix de canal 2. Cada matriz de downmix estática pode ser convertida para uma sequência de matrizes de downmix (cada matriz na sequência para fazer o downmix de um diferente intervalo na representação) de modo a conseguir uma proteção de corte. No entanto, cada matriz na sequência é transmitido (ou os metadados que determinam cada matriz na sequência são transmitidos) para o decodificador, e o decodificador não executa interpolação sobre qualquer matriz de downmix previamente especificada para determinar uma matriz subsequente em uma sequência de matrizes de downmix para uma representação.
[0019] Figura 1 é um diagrama esquemático de elementos de um sistema TrueHD convencional, no qual o codificador (30) e o decodificador (32) estão configurados para implementar operações de matriz em amostras de áudio. No sistema de Figura 1, um codificador 30 está configurado para codificar uma representação de áudio de 8 canais (por exemplo, um conjunto tradicional de alimentações de alto- falante 7.1) como um fluxo de bits codificado que inclui dois subfluxos, e o decodificador 32 está configurado para decodificar o fluxo de bits codificado para renderizar ou a representação de 8 canais original (sem perda) ou um downmix de 2 canais da representação de 8 canais original. O codificador 30 está acoplado e configurado para gerar o fluxo de bits codificado e para enviar o fluxo de bits codificado para o sistema de fornecimento 31.
[0020] O sistema de fornecimento 31 está acoplado e configurado para fornecer (por exemplo, armazenando e/ou transmitindo) o fluxo de bits codificado para o decodificador 32. Em algumas modalidades, o sistema 31 implementa o fornecimento (por exemplo, transmite) de uma representação de áudio de multicanal codificada sobre um sistema de transmissão ou a uma rede (por exemplo, a internet) para o decodificador 32. Em algumas modalidades, o sistema 31 armazena uma representação de áudio de multicanal codificada em um meio de armazenamento (por exemplo, um disco ou um conjunto de discos), e o decodificador 32 está configurado para ler a representação do meio de armazenamento.
[0021] O bloco identificado "InvChAssign1" no codificador 30 está configurado para executar uma permutação de canal (equivalente a uma multiplicação por uma matriz de permutação) sobre os canais da representação de entrada. Os canais permutados então são submetidos à codificação no estágio 33, os quais emitem oito canais de sinal codificados. Os canais de sinal codificados podem (mas não precisam) corresponder aos canais de alto-falante de reprodução. Os canais de sinal codificados são algumas vezes referidos como canais "internos" já que um decodificador (e/ou sistema de renderização) tipicamente decodifica e renderiza os conteúdos canais de sinal codificados para recuperar o áudio de entrada, de modo que os canais de sinal codificados são "internos" ao sistema de codificação / decodificação. A codificação executada no estágio 33 é equivalente à multiplicação de cada conjunto de amostras dos canais permutados por uma matriz de codificação (implementado como uma cascata de n+1 multiplicações de matriz, identificadas como Pn-1,..., P1-1, P0-1, a ser abaixo descrita em maiores detalhes).
[0022] O subsistema de determinação de matriz 34 está configurado para gerar dados indicativos dos coeficientes de dois conjuntos de matrizes de saída (um conjunto correspondendo a cada um de dois subfluxos dos canais codificados). Um conjunto de matrizes de saída consiste em duas matrizes, P02, P12, cada uma das quais é uma matriz primitiva (abaixo identificada) de dimensão 2x2, e é para renderizar um primeiro subfluxo (um subfluxo de downmix) que compreende dois dos canais de áudio codificados do fluxo de bits codificado (para renderizar um downmix de dois canais do áudio de entrada de oito canais). O outro conjunto de matrizes de saída consiste em matrizes de renderização, P0, P1, ..., Pn, cada uma das quais é uma matriz primitiva, e é para renderizar um segundo subfluxo que compreende todos os oito dos canais de áudio codificados do fluxo de bits codificado (para recuperação sem perda da representação de áudio de entrada de oito canais). Uma cascata das matrizes, P02, P12, juntamente com as matrizes P0-1, P1-1, ..., Pn-1, aplicada no áudio no codificador, é igual à especificação de matriz de downmix que transforma os 8 canais de áudio de entrada para o downmix de 2 canais, e uma cascata das matrizes, P0, P1, ..., Pn, renderiza os 8 canais codificados do fluxo de bits codificado de volta para o 8 canais de entrada.
[0023] Os coeficientes (de cada matriz) que são emitidos do subsistema 34 para o subsistema de empacotamento 35 são metadados que indicam um ganho relativo ou absoluto de cada canal a ser incluído em um mistura de canais correspondente da representação. Os coeficientes de cada matriz de renderização (para um instante de tempo durante a representação) representam quanto cada um dos canais de uma mistura deve contribuir para a mistura de conteúdo de áudio (no instante correspondente da mistura renderizada) indicado pela alimentação de alto-falante para um alto-falante de sistema de reprodução específico.
[0024] Os oito canais de áudio codificados (emitidos do estágio de codificação 33), os coeficientes de matriz de saída (gerados pelo subsistema 34), e tipicamente também dados adicionais são enviados para o subsistema de empacotamento 35, o qual combina-os no fluxo de bits codificado o qual é então enviado para o sistema de fornecimento 31.
[0025] O fluxo de bits codificado inclui dados indicativos do oito canais de áudio codificados, e dois conjuntos de matrizes de saída (um conjunto correspondendo de cada de dois subfluxos dos canais codificados), e tipicamente também dados adicionais (por exemplo, metadados referentes ao conteúdo de áudio).
[0026] O subsistema de análise 36 do decodificador 32 está configurado para aceitar (ler ou receber) o fluxo de bits codificado sistema de fornecimento 31 e analisar o fluxo de bits codificado. O subsistema 36 é operável para enviar os subfluxos do fluxo de bits codificado, incluindo um "primeiro" subfluxo que compreende somente dois dos canais codificados do fluxo de bits codificado, e matrizes de saída (P02, P12) que correspondem ao primeiro subfluxo, para o estágio de multiplicação de matriz 38 (para processar qual resulta em uma apresentação de conteúdo de downmix de 2 canais da representação de entrada de 8 canais original). O subsistema 36 é também operável para enviar os subfluxos do fluxo de bits codificado (o "segundo" subfluxo que compreende todos os oito canais codificados do fluxo de bits codificado) e matrizes de saída correspondentes (P0, P1, ..., Pn) para o estágio de multiplicação de matriz 37 para processamento o que resulta em renderização sem perda da representação de 8 canais original.
[0027] Mais especificamente, o estágio 38 multiplica duas amostras de áudio dos dois canais do primeiro subfluxo por uma cascata de matrizes P02, P12 , e cada conjunto resultante de duas amostras linearmente transformadas é submetido à permutação de canal (equivalente a uma multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign0" para gerar cada par de amostras downmix de 2 canais requeridos 8 canais de áudio originai. A cascata de operações de matriz executadas no codificador 30 e decodificador 32 é equivalente à aplicação de uma especificação de matriz de downmix que transforma os 8 canais de áudio de entrada para o downmix de 2 canais.
[0028] O estágio 37 multiplica cada vetor de oito amostras de audio (uma de cada um do conjunto total de oito canais do fluxo de bits codificado) por uma cascata das matrizes P0, P1,...,Pn , e cada conjunto resultante de oito amostras linearmente transformadas e submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign1" para gerar cada conjunto de oito amostras da representação de 8 canais original recuperado sem perda. Para que áudio de 8 canais de saída seja exatamente o mesmo que o áudio de 8 canais de entrada (para conseguir a característica "sem perda" do sistema), as operações de matriz executadas no codificador 30 deve ser exatamente (incluindo os efeitos de quantização) o inverso das operações de matriz executadas no decodificador 32 sobre o (segundo) subfluxo sem perda do fluxo de bits codificado (isto é, multiplicação pela cascata de matrizes P0, P1,..., Pn). Assim, na Figura 1, as operações de matriz no estágio 33 do codificador 30 são identificadas como uma cascata das matrizes inversas das matrizes P0, P1,..., Pn, na sequência oposta aplicada no estágio 37 do decodificador 32, a saber: Pn-1,..., P1-1, Po-1.
[0029] O decodificador 32 aplica o inverso da permutação de canal aplicada pelo codificador 30 (isto é, a matriz de permutação representada pelo elemento "ChAssign1" do decodificador 32 é o inverso daquela representada pelo elemento "InvChAssign1" do codificador 30).
[0030] Data uma especificação de matriz de downmix (por exemplo, especificação de uma matriz estática A que é 2x8 em dimensão), um objetivo de uma implementação de codificador TrueHD convencional do codificador 30 é projetar matrizes de saída (por exemplo, P0,P1...,Pn e P02, P12 da Figura 1), e matrizes de entrada (Pn-1,..., P1-1, P0-1) e atribuições de canal de saída (e entrada) de modo que:
[0031] 1. o fluxo de bits codificado é hierárquico (isto é, no exemplo, os primeiros dois canais codificados são suficientes para derivar a apresentação de downmix de 2 canais, e o conjunto total de oito canais codificados é suficiente para recuperar a representação de 8 canais original); e
[0032] 2. as matrizes para o fluxo mais superior (P0, P1, ..., Pn no exemplo) são exatamente invertíveis de modo que o áudio de entrada é exatamente recuperável pelo decodificador.
[0033] Os sistemas de computação típicos funcionam com precisão finita e inverter uma matriz invertível arbitrária exatamente poderia requerer uma precisão muito grande. TrueHD resolve este problema restringindo as matrizes de saída e as matrizes de entrada (isto é, P0, P1, ..., Pn e Pn-1,..., P1-1, P0-1) para serem matrizes quadradas do tipo conhecido como "matrizes primitivas".
[0035] Uma matriz primitiva é sempre uma matriz quadrada. Uma matriz primitiva de dimensão NxN é idêntica a uma matriz de identidade de dimensão NxN exceto por uma linha não trivial (isto é, a linha que compreende os elementos αo, ai, a2, ... aN-i no exemplo). Em todas as outras linhas, os elementos fora de diagonais são zeros e o elemento compartilhado com a diagonal tem um valor absoluto de i (isto é, ou +i ou -i). Para simplificar a linguagem nesta descrição, os desenhos e descrições sempre assumirão que uma matriz primitiva tem elementos diagonais que são iguais a +i com a possível exceção do elemento diagonal na linha não trivial. No entanto, notamos que isto é sem perda de generalidade, e as ideias apresentadas nesta descrição pertencem à classe geral de matrizes primitivas onde os elementos diagonais podem ser + i ou -i.
[0036] Quando uma matriz primitiva, P, opera sobre (isto é, multiplica) um vetor x(t), o resultado é o produto Px(t), o qual é outro vetor N dimensional que é exatamente o mesmo que x(t) em todos os elementos exceto um. Assim cada matriz primitiva pode estar associada com um único canal o qual esta manipula (ou sobre o qual esta opera).
[0037] Utiliza-se o termo "matriz primitiva unitária" aqui para denotar uma matriz primitiva na qual o elemento compartilhado com a diagonal (pela linha não trivial da matriz primitiva) tem um valor absoluto de 1 (isto é, ou +1 ou -1). Assim, a diagonal de uma matriz primitiva unitária consiste em todos os uns positivos, +1, ou todos os uns negativos, -1, ou alguns uns positivos e alguns uns negativos. Uma matriz primitiva somente altera um canal de um conjunto (vetor) de amostras de canais de representação de áudio, e uma matriz primitiva unitária é também invertível sem perda devido aos valores unitários sobre a diagonal. Novamente, para simplificar a descrição aqui, utiliza-se o termo matriz primitiva unitária para referir a uma matriz primitiva cuja linha não trivial tem um elemento diagonal de +1. No entanto, todas as referências a matrizes primitivas unitárias aqui, incluindo nas concretizações, pretendem cobrir o caso mais genérico onde uma matriz primitiva unitária pode ter uma linha não trivial cujo elemento compartilhado com a diagonal é +1 ou -1.
[0038] Se α 2 = 1 (resultando em uma matriz primitiva unitária que tem uma diagonal que consiste em positivos) no exemplo acima da matriz primitiva, P, for então visto que o inverso de P é exatamente:
[0039] É verdade em geral que o inverso de uma matriz primitiva unitária é simplesmente determinado pela inversão (multiplicando por - 1) de cada um de seus coeficientes α não triviais os quais não ficam ao longo da diagonal.
[0040] Se as matrizes P0, P1,..., Pn empregadas no decodificador 32 da Figura 1 forem matrizes primitivas unitárias (que têm diagonais unitárias), a sequência de operações de matriz P0-1, P1-1, ..., P0-1 no codificador 30 e P0, P1,..., Pn no decodificador 32 pode ser implementada por circuitos de precisão finita do tipo mostrado nas Figuras 2A e 2B. A Figura 2A é um circuito convencional de um codificador para executar uma matriz sem perda através de matrizes primitivas implementadas com aritmética de precisão finita. A Figura 2B é um circuito convencional de um decodificador para executar uma matriz sem perda através de matrizes primitivas implementadas com aritmética de precisão finita. Detalhes de implementações típicas do circuito da Figura 2A e Figura 2B (e variações sobre este) estão descritas na acima citada Patente US 6.611.212, emitida em 26 de Agosto de 2003.
[0041] Na Figura 2A (que representa o circuito para codificar uma representação de áudio de quatro canais que compreende os canais S1, S2, S3, e S4), uma primeira matriz primitiva P0-1 (que tem uma linha de quatro coeficientes α não zero) opera sobre cada amostra do canal S1 (para gerar o canal codificado S1') misturando a amostra relevante do canal S1 com amostras correspondentes (que ocorrem ao mesmo tempo, t) dos canais S2, S3, e S4. Uma segunda matriz primitiva P1-1 (também tendo uma linha de quatro coeficientes α não zero) que opera sobre cada amostra do canal S2 (para gerar uma amostra correspondente do canal codificado S2') misturando a amostra relevante do canal S2 com amostras correspondentes (que ocorrem ao mesmo tempo, t) dos canais S1', S3, e S4. Mais especificamente, a amostra do canal S2 é multiplicada pelo inverso de um coeficiente α1 (identificado como "coeff[1,2]") da matriz P0-1, a amostra do canal S3 é multiplicada pelo inverso de um coeficiente α2 (identificado como "coeff[1,3]") da matriz P0-1, e a amostra do canal S4 é multiplicada pelo inverso de um coeficiente α3 (identificado como "coeff[1,4]") da matriz Po-1, os produtos são somados e então quantizados, e a soma quantizada é então subtraída da amostra correspondente do canal S1. Similarmente, a amostra do canal S1 é multiplicada pelo inverso de um coeficiente «O (identificado como "coeff[2,1]") da matriz P1-1, a amostra do canal S3 é multiplicada pelo inverso de um coeficiente «2 (identificado como "coeff[2,3]") da matriz P1-1, e a amostra do canal S4 é multiplicada pelo inverso de um coeficiente «3 (identificado como "coeff[2,4]") da matriz P1-1, os produtos são somados e então quantizados, e a soma quantizada é então subtraída da amostra correspondente do canal S2. O estágio de quantização Q1 da matriz P1-1 quantiza a saída do elemento de soma o qual soma os produtos da multiplicação (por coeficientes « não zero da matriz Po-1, os quais são valores tipicamente fracionários) para gerar o valor quantizado o qual é subtraído da amostra do canal S1 para gerar a amostra correspondente do canal codificado S1'. O estágio de quantização Q2 da matriz P1-1 quantifica a saída do elemento de somatório o qual soma os produtos das multiplicações (por coeficientes « não zero da matriz P1-1, os quais são tipicamente valores fracionários) para gerar o valor quantizado o qual é subtraído da amostra do canal S2 para gerar a amostra correspondente do canal codificado S2'. Em uma implementação típica (por exemplo, para executar a codificação TrueHD), cada amostra de cada um dos canais S1, S2, S3, e S4 compreende 24 bits (como indicado na Figura 2A), e a saída de cada elemento de multiplicação compreende 38 bits (como também indicado na Figura 2A), e cada um dos estágios de quantização Q1 e Q2 emite um valor quantizado de 24 bit em resposta a cada um dos valores de 38 bits o qual é inserido neste.
[0042] É claro, para codificar os canais S3 e S4, duas matrizes primitivas adicionais poderia estar em cascata com as duas matrizes primitivas (Po-1 e P1-1) indicadas na Figura 2A.
[0043] Na Figura 2B (representando o circuito para decodificação da representação codificada de quatro canais gerado pelo codificador da Figura 2A), uma matriz primitiva P1 (que tem uma linha de quatro coeficientes α não zero, e a qual e o inverso da matriz Pi-1 opera sobre cada amostra do canal codificado S2' (para gerar uma amostra correspondente do canal decodificado S2) misturando as amostras dos canais S1', S3, e S4 com a amostra relevante do canal S2'. Uma segunda matriz primitiva P0 (também tendo uma linha de quatro coeficientes α não zero) e a qual é o inverso da matriz P0-1)) opera sobre cada amostra do canal codificado S1' (para gerar uma amostra correspondente do canal decodificado S1) misturando as amostras dos canais S2, S3, e S4 com a amostra relevante do canal S1'. Mas especificamente, a amostra do canal S1' é multiplicada por um coeficiente α0 (identificado como "coeff[2,1]") da matriz P1, a amostra do canal S3 é multiplicada por um coeficiente α2 (identificado como "coeff[2,3]") da matriz P1, e a amostra do canal S4 é multiplicada por um coeficiente α3 (identificado como "coeff[2,4]") da matriz P1, os produtos são somados e então quantizados, e a soma quantizada é então adicionada à amostra correspondente do canal S1'. Similarmente, a amostra do canal S2' é multiplicada por um coeficiente α1 (identificado como "coeff[1,2]") da matriz P0, a amostra do canal S3 é multiplicada por um coeficiente α2 (identificado como "coeff[1,3]") da matriz P0, e a amostra do canal S4 é multiplicada por um coeficiente α3 (identificado como "coeff[1,4]") da matriz P0, os produtos são somados e então quantizados, e a soma quantizada é então adicionada à amostra correspondente do canal S1'. O estágio de quantização Q2 da matriz P1 quantiza a saída do elemento de soma o qual soma os produtos das multiplicações (por coeficientes α não zero da matriz P1, os quais são valores tipicamente fracionários) para gerar o valor quantizado o qual é adicionado à amostra do canal S2' para gerar a amostra correspondente do canal decodificado S2. O estágio de quantização Q1 da matriz P0 quantiza a saída do elemento de somatório o qual soma os produtos das multiplicações (por coeficientes α não zero da matriz Pi-1, os quais são tipicamente valores fracionários) para gerar o valor quantizado o qual soma os produtos das multiplicações (por coeficientes não zero da matriz P0, os quais são tipicamente valores fracionários) gerar o valor quantizado o qual é adicionado à amostra do S1' para gerar a amostra correspondente do canal decodificado S1. Em uma implementação típica (por exemplo, para executar a decodificação TrueHD), cada amostra de cada um dos canais S1', S2', S3, e S4 compreende 24 bits (como indicado na Figura 2B), e a saída de cada elemento de multiplicação compreende 38 bits (como também indicado na Figura 2B), e cada um dos estágios de quantização Q1 e Q2 emite um valor quantizado de 24 bits em resposta a cada valor de 38 bits o qual é inserido neste.
[0044] É claro, para decodificar os canais S3 e S4, duas matrizes primitivas adicionais poderiam ser feitas em cascata com as duas matrizes primitivas (P0 e P1) indicado na Figura 2B.
[0045] Uma sequência de matrizes primitivas, por exemplo, a sequência de matrizes primitivas NxN P0, P1,..., Pn implementada pelo decodificador da Figura 1, operando sobre um vetor (N amostras, cada uma das quais é uma amostra de um diferente canal de um primeiro conjunto de N canais) pode implementar qualquer transformação linear das N amostras em um novo conjunto de N amostras (por exemplo, pode implementar a transformação linear executada em um tempo t multiplicando as amostras de N canais de uma representação de áudio baseada em objeto por qualquer implementação NxN de matriz A(t) da equação (1) durante a renderização dos canais em N alimentações de alto-falante, onde a transformação é conseguida manipulando um canal de cada vez). Assim, a multiplicação de um conjunto de N amostras de áudio por uma sequência de matrizes primitivas NxN representa um conjunto genérico de cenários nos quais o conjunto de N amostras é convertido para outro conjunto (de N amostras) por operações lineares.
[0046] Com referência novamente à implementação TrueHD do decodificador 32 da Figura 1, de modo a manter a uniformidade de arquitetura de decodificador em TrueHD, as matrizes de saída do subfluxo de downmix (P02, P12 na Figura 1) são também implementadas como matrizes primitivas apesar destas não precisarem ser invertíveis (ou terem uma diagonal unitária) já que estas não estão associadas com conseguir a ação de sem perda.
[0047] As matrizes primitivas de entrada e saída empregadas em um codificador e decodificador TrueHD dependem de cada especificação de downmix específica a ser implementada. A função de um decodificador TrueHD é aplicar a cascata apropriada de matrizes primitivas no fluxo de bits de áudio codificado recebido. Assim, o decodificador TrueHD da Figura 1 decodifica os 8 canais do fluxo de bits codificado (fornecido pelo sistema D), e gera um downmix de 2 canais aplicando uma cascata de duas matrizes primitivas de saída P02,P12 a um subconjunto dos canais do fluxo de bits decodificado. Uma implementação TrueHD do decodificador 32 da Figura 1 é também operável para decodificar os 8 canais do fluxo de bits codificado (fornecido pelo sistema D) para recuperar sem perda a representação de 8 canais original aplicando uma cascata de oito matrizes primitivas de saída P0, P1,..., Pn nos canais do fluxo de bits codificado.
[0048] O decodificador TrueHD não tem o áudio original (o qual foi inserido no codificador) para conferir para determinar se a sua reprodução é sem perda (ou como de outro modo desejado pelo codificador no caso de um downmix). No entanto, o fluxo de bits codificado contém uma "palavra de verificação" (ou verificação sem perda) a qual é comparada com uma palavra similar derivada no decodificador do áudio reproduzido para determinar se a reprodução é fiel.
[0049] Se uma representação de áudio baseada em objeto (por exemplo, que compreende mais de oito canais) fosse codificada por um codificador TrueHD convencional, o codificador poderia gerar um subfluxo de downmix o qual carrega apresentações compatíveis com os dispositivos de reprodução preexistentes (por exemplo, apresentações as quais poderia ser decodificadas para alimentações de alto-falante de downmix para reprodução em um canal 7.1 ou canal 5.1 tradicional ou outra configuração de alto-falante de tradicional) e um subfluxo de topo (indicativo de todos os canais da representação de entrada). Um decodificador TrueHD poderia recuperar a representação de áudio baseada em objeto original sem perda para renderizar por um sistema de reprodução. Cada especificação de matriz de renderização empregada pelo codificador neste caso (isto é, para gerar o subfluxo de topo e cada subfluxo de downmix), e assim cada matriz de saída determinada pelo codificador, poderia ser uma matriz de renderização de variação de tempo, A(t), a qual linearmente transforma amostras de canais da representação (por exemplo, para gerar um downmix de canal 7.1 ou canal 5.1). No entanto, tal matriz A(t) tipicamente variaria rapidamente no tempo conforme os objetos movem ao redor na cena espacial, e a taxa de bits e limitações de processamento de um sistema TrueHD convencional (ou outro sistema de decodificação convencional) tipicamente restringiria o sistema para ser capaz no máximo acomodar uma aproximação constante no sentido de peça para tal especificação de matriz continuamente (e rapidamente) variável (com uma taxa de atualização de matriz mais alta conseguida ao custo de taxa de bits aumentada para transmissão da representação codificada). De modo a suportar a renderização de representações de áudio de multicanal baseadas em objeto (e outras representações de áudio de multicanal) com alimentações de alto-falante indicativas de uma mistura de conteúdo rapidamente variável de canais das representações, os inventores reconheceram que é desejável melhorar os sistemas convencionais para acomodar matrizes interpoladas, onde a renderização de atualizações de matriz de são infrequentes e uma trajetória desejada (isto é, uma sequência desejada de misturas de conteúdo de canais da representação) entre atualizações é especificada parametricamente.
[0050] Em uma classe de modalidades, a invenção é um método para codificar uma representação de áudio de N canais (por exemplo, uma representação de áudio baseada em objeto), em que a representação é especificado sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída (por exemplo, canais os quais correspondem a canais de alto-falante de reprodução) foi especificada sobre o intervalo de tempo, onde M é menor do que ou igual a N, o dito método incluindo as etapas de:
[0051] determinar uma primeira cascata de matrizes primitivas NxN a qual, quando aplicada a amostras dos N canais de sinal codificados, implementa uma primeira mistura de conteúdo de áudio dos N canais de sinal codificados para os M canais de saída, em que a primeira mistura é consistente com a mistura variável no tempo, A(t), no sentido que a primeira mistura é pelo menos substancialmente igual a A(t1);
[0052] determinar valores de interpolação os quais, com a primeira cascata de matrizes primitivas e uma função de interpolação definida sobre o subintervalo, são indicativas de uma sequência de cascatas de Matrizes primitivas atualizadas NxN, de modo que cada uma das cascatas de matrizes primitivas atualizadas, quando aplicada a amostras dos N canais de sinal codificados, implementa uma mistura atualizada, associada com um diferente tempo no subintervalo, do N canais de sinal codificados para os M canais de saída, em que cada dita mistura atualizada é consistente com a mistura variável no tempo, A(t) (de preferência, a mistura atualizada associada com qualquer tempo t3 no subintervalo é pelo menos substancialmente igual a A(t3), mas em algumas modalidades pode existir um erro entre a mistura atualizada associada com pelo menos um tempo no subintervalo e o valor de A(t) em tal tempo); e
[0053] gerar um fluxo de bits codificado o qual é indicativo de conteúdo de áudio codificado, os valores de interpolação, e a primeira cascata de matrizes primitivas.
[0054] Em algumas modalidades, o método inclui uma etapa de gerar um conteúdo de áudio codificado executando operações de matriz sobre amostras dos N canais da representação (por exemplo, incluindo aplicação de uma sequência de cascata de matriz nas amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e a sequência de cascatas de matriz inclui uma primeira cascatas de matriz inversa a qual é uma cascata de inversos das matrizes primitivas da primeira cascata).
[0055] Em algumas modalidades, cada uma das matrizes primitivas é uma matriz primitiva unitária. Em algumas modalidades nas quais N = M, o método também inclui uma etapa de recuperar sem perda os N canais da representação processando o fluxo de bits codificado, incluindo execução de uma interpolação para determinar a sequência de cascatas de matrizes primitivas atualizadas NxN, dos valores de interpolação, a primeira cascata de matrizes primitivas, e a função de interpolação. O fluxo de bits codificado pode ser indicativo da (isto é, pode incluir dados indicativos da) função de interpolação, ou a função de interpolação pode ser provida de outro modo para o decodificador.
[0056] Em algumas modalidades nas quais N = M, o método também inclui etapas de: fornecer o fluxo de bits codificado para um decodificador configurado para implementar a função de interpolação, e processar o fluxo de bits codificado no decodificador para recuperar sem perda os N canais da representação, incluindo execução de uma interpolação para determinar a sequência de cascatas de Matrizes primitivas atualizadas NxN, dos valores de interpolação, a primeira cascata de matrizes primitivas, e a função de interpolação.
[0057] Em algumas modalidades, a representação é uma representação de áudio baseada em objeto que inclui pelo menos um canal de objeto e dados de posição indicativos de uma trajetória de pelo menos um objeto. A mistura variável no tempo, A(t), pode ser determinada dos dados de posição (ou de dados que incluem os dados de posição).
[0058] Em algumas modalidades, a primeira cascata de matrizes primitivas é uma matriz primitiva de semente, e os valores de interpolação são indicativos de uma matriz delta de semente para a matriz primitiva de semente.
[0059] Em algumas modalidades, um downmix variável no tempo,A2(t), de conteúdo de áudio ou conteúdo codificado da representação para M1 canais de alto-falante também foi especificado sobre o intervalo de tempo, onde M1 é um número inteiro menor do que M, e o método inclui etapas de:
[0060] determinar uma segunda cascata de matrizes primitivas M1xM1 a qual, quando aplicada às amostras de M1 canais do conteúdo de áudio ou conteúdo codificado, implementa um downmix de conteúdo de áudio da representação para M1 canais de alto-falante, em que o downmix é consistente com a mistura variável no tempo, A2(t), no sentido que o downmix é pelo menos substancialmente igual a A2(t1);
[0061] determinar valores de interpolação adicionais os quais, com a segunda cascata de matrizes primitivas M1xM1 e uma segunda função de interpolação definida sobre o subintervalo, são indicativas de uma sequência de cascatas de matrizes primitivas M1xM1 atualizadas, de modo que cada uma das cascatas de matrizes primitivas M1xM1 atualizadas, quando aplicada a amostras dos M1 canais do conteúdo de áudio ou do conteúdo codificado, implementa um downmix atualizado, associado com um diferente tempo no subintervalo, do conteúdo de áudio da representação para os M1 canais de alto-falante, em que cada dito downmix atualizado é consistente com a mistura variável no tempo, A2(t), e em que o fluxo de bits codificado é indicativo dos valores de interpolação adicionais e a segunda cascata de matrizes primitivas M1xM1. O fluxo de bits codificado pode ser indicativo da (isto é, pode incluir dados indicativos da) segunda função de interpolação, ou a segunda função de interpolação pode ser provida de outro modo para o decodificador. O downmix variável no tempo, A2(t), é um downmix de conteúdo de áudio ou conteúdo codificado da representação no sentido em que este é um downmix do conteúdo de áudio do original representação, ou do conteúdo de áudio codificado do fluxo de bits codificado, ou de uma versão parcialmente decodificada do conteúdo de áudio codificado do fluxo de bits codificado, ou de outro modo áudio codificado (por exemplo, parcialmente decodificado) indicativo de conteúdo de áudio da representação. A variação de tempo na especificação de downmix A2(t) pode ser devida (pelo menos em parte) ao aumento ou liberação de proteção de clipe do downmix especificado.
[0062] Em uma segunda classe de modalidades, a invenção é um método para recuperação de M canais de uma representação de áudio de multicanal (por exemplo, uma representação de áudio baseada em objeto), em que a representação é especificado sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, o dito método incluindo as etapas de: obter um fluxo de bits codificado o qual é indicativo de conteúdo de áudio codificado, valores de interpolação, e a primeira cascata de matrizes primitivas NxN; e
[0063] executar uma interpolação para determinar uma sequência de cascatas de Matrizes primitivas atualizadas NxN, dos valores de interpolação, a primeira cascata de matrizes primitivas, e uma função de interpolação sobre o subintervalo, em que
[0064] a primeira cascata de matrizes primitivas NxN, quando aplicada a amostras de N canais de sinal codificados do conteúdo de áudio codificado, implementa uma primeira mistura de conteúdo de áudio dos N canais de sinal codificados para os M canais de saída, em que a primeira mistura é consistente com a mistura variável no tempo, A(t), no sentido que a primeira mistura é pelo menos substancialmente igual a A(t1), e os valores de interpolação, com a primeira cascata de matrizes primitivas, e a função de interpolação, são indicativas de uma sequência de cascatas de matrizes primitivas atualizadas NxN, de modo que cada uma das cascatas de matrizes primitivas atualizadas, quando aplicada a amostras dos N canais de sinal codificados do conteúdo de áudio codificado, implementa uma mistura atualizada, associada com um diferente tempo no subintervalo, dos N canais de sinal codificados para os M canais de saída, em que cada dita mistura atualizada é consistente com a mistura variável no tempo, A(t) (de preferência, a mistura atualizada associada com qualquer tempo t3 no subintervalo é pelo menos substancialmente igual a A(t3), mas em algumas modalidades pode existir um erro entre a mistura atualizada associada com pelo menos um tempo no subintervalo e o valor de A(t) em tal tempo).
[0065] Em algumas modalidades, o conteúdo de áudio codificado foi gerado executando operações de matriz sobre amostras dos N canais da representação, incluindo aplicação de uma sequência de cascata de matriz nas amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e a sequência de cascatas de matriz inclui uma primeira cascatas de matriz inversa a qual é uma cascata de inversos das matrizes primitivas da primeira cascata.
[0066] Os canais da representação de áudio que são recuperados (por exemplo, recuperados sem perda) de acordo com estas modalidades do fluxo de bits codificado podem ser um downmix de conteúdo de áudio de uma representação de áudio de entrada de X canais (onde X é um número inteiro arbitrário e N é menor do que X) o qual foi gerado da representação de áudio de entrada de X canais executando operações de matriz sobre a representação de áudio de entrada de X canais, por meio disto determinando o conteúdo de áudio codificado do fluxo de bits codificado.
[0067] Em algumas modalidades na segunda classe, cada uma das matrizes primitivas é uma matriz primitiva unitária.
[0068] Em algumas modalidades na segunda classe, um downmix variável no tempo, A2(t) da representação de N canais para M1 canais de alto-falante foi especificada sobre o intervalo de tempo, e um downmix variável no tempo, A2(t) de conteúdo de áudio ou conteúdo codificado da representação para M canais de alto-falante também foi especificado sobre o intervalo de tempo. O método inclui as etapas de:
[0069] receber uma segunda cascata de matrizes primitivas M1xM1 e um segundo conjunto de valores de interpolação;
[0070] aplicar a segunda cascata de matrizes primitivas M1xM1 a amostras de M1 canais do conteúdo de áudio codificado para implementar um downmix da representação de N canais para M1 canais de alto-falante, em que o downmix é consistente com a mistura variável no tempo, A2(t) no sentido que o downmix é pelo menos substancialmente igual a A2(t1);
[0071] aplicar um segundo conjunto de valores de interpolação, a segunda cascata de matrizes primitivas M1xM1 e uma segunda função de interpolação definida sobre o subintervalo para obter uma sequência de cascatas de matrizes primitivas M1xM1 atualizadas; e
[0072] aplicar as matrizes primitivas M1xM1 atualizadas a amostras dos M1 canais do conteúdo codificado para implementar pelo menos um downmix atualizado da representação de N canais, associada com um diferente tempo no subintervalo, em que cada dito downmix atualizado é consistente com a mistura variável no tempo, A2(t).
[0073] Em algumas modalidades, a invenção é um método para renderizar uma representação de áudio de multicanal, que inclui as etapas de prover um conjunto de matriz de semente (por exemplo, uma única matriz de semente, ou um conjunto de pelo menos duas matrizes de semente, que correspondem a um tempo durante a representação de áudio) para um decodificador, e executar uma interpolação sobre o conjunto de matriz de semente (o qual está associado com um tempo durante a representação de áudio) para determinar um conjunto de matriz de renderização interpolada (uma única matriz de renderização interpolada, ou um conjunto de pelo menos duas matrizes de renderização interpolada, que corresponde a um tempo posterior durante a representação de áudio) para utilização na renderização de canais da representação.
[0074] Em algumas modalidades, a matriz primitiva de semente e a matriz delta de semente (ou um conjunto de matrizes primitivas de semente e matrizes delta de semente) são fornecidas de tempos em tempos (por exemplo, infrequentemente) para o decodificador. O decodificador atualiza cada matriz primitiva de semente (que corresponde a um tempo, t1) para gerar uma matriz primitiva interpolada (para um tempo, t, posterior a t1) de acordo com uma modalidade da invenção da matriz primitiva de semente e uma matriz delta de semente correspondente, e um função de interpolação f(t). Os dados indicativos da função de interpolação podem ser fornecidos com as matrizes de semente ou a função de interpolação pode ser predeterminada (isto é, conhecida com antecedência tanto pelo codificador quanto pelo decodificador). Alternativamente, uma matriz primitiva de semente (ou um conjunto de matrizes primitivas de semente) é fornecida de tempos em tempos (por exemplo, infrequentemente) para o decodificador. O decodificador atualiza cada matriz primitiva de semente (que corresponde a um tempo, t1) gerando uma matriz primitiva interpolada (para um tempo, t, posterior a t1) de acordo com uma modalidade da invenção da matriz primitiva de semente e uma função de interpolação f(t), isto é, não necessariamente utilizando uma matriz delta de semente a qual corresponde à matriz primitiva de semente. Os dados indicativos da função de interpolação podem ser fornecidos com a matriz primitiva de semente (ou matrizes) ou a função pode ser predeterminada (isto é, conhecida com antecedência tanto pelo codificador quando o decodificador).
[0075] Em modalidades típicas, cada matriz primitiva é uma matriz primitiva unitária. Neste caso, o inverso da matriz primitiva é simplesmente determinado invertendo (multiplicando por -1) cada dos seus coeficientes não triviais (cada um de seus coeficientes a). Isto permite que os inversos das matrizes primitivas (os quais são aplicados pelo codificador para codificar o fluxo de bits) sejam determinados mais eficientemente, e permite utilizar um processamento de precisão finita (por exemplo, circuitos de precisão finita) para implementar as multiplicações de matriz requeridas no codificador e decodificador.
[0076] Aspectos da invenção incluem um sistema ou dispositivo (por exemplo, um codificador ou decodificador) configurado (por exemplo, programado) para implementar qualquer modalidade do método inventivo, um sistema ou dispositivo que inclui um armazenamento temporário o qual armazena (por exemplo, em um modo não transitório) pelo menos um quadro ou outro segmento de uma representação codificada de áudio gerado por qualquer modalidade do método inventivo ou suas etapas, e um meio legível por computador (por exemplo, um disco) o qual armazena um código (por exemplo, em um modo não transitório) para implementar qualquer modalidade do método inventivo ou suas etapas. Por exemplo, o sistema inventivo pode ser ou inclui um processador de uso geral programável, processador de sinal digital, ou microprocessador, programado com software ou firmware e/ou de outro modo configurado para executar qualquer uma de uma variedade de operações sobre dados, incluindo uma modalidade do método inventivo ou suas etapas. Tal processador de uso geral pode ser ou incluir um sistema de computador que inclui um dispositivo de entrada, uma memória, e circuito de processamenta representaçãodo (e/ou de outro modo configurado) para executar uma modalidade do método inventivo (ou suas etapas) em resposta a dados enviados a este.
[0077] Figura 1 é um diagrama de blocos de elementos de um sistema convencional que inclui um codificador, um subsistema de fornecimento, e um decodificador.
[0078] Figura 2A é um diagrama de circuito de um codificador convencional para executar operações de matriz sem perda através de matrizes primitivas implementadas com aritmética de precisão finita.
[0079] Figura 2B é um diagrama de circuito de um codificador convencional para executar operações de matriz sem perda via matrizes primitivas implementadas com aritmética de precisão finita.
[0080] Figura 3 é um é um diagrama de blocos de um circuito empregado em uma modalidade da invenção para aplicar uma matriz primitiva 4x4 (implementada com aritmética de precisão finita) para quatro canais de uma representação de áudio. A matriz primitiva é uma matriz primitiva de semente, cuja uma linha não trivial compreende elementos α0, al, a2, e a3.
[0081] Figura 4 é um diagrama de blocos de um circuito empregado em uma modalidade da invenção para aplicar uma matriz primitiva 3x3 (implementada com aritmética de precisão finita) para três canais de uma representação de áudio. A matriz primitiva é uma matriz primitiva interpolada, gerada de uma matriz primitiva de semente Pk(t1) cuja uma linha não trivial compreende elementos a0, a1 e a2, e uma matriz delta de semente Δk(t1) cuja linha não trivial compreende elementos δ0, δ1, ..., δN-1 , e uma função de interpolação f(t).
[0082] Figura 5 é um diagrama de blocos de uma modalidade do sistema inventivo que inclui uma modalidade do codificador inventivo, um subsistema de fornecimento, e uma modalidade do decodificador inventivo.
[0083] Figura 6 é um diagrama de blocos de outra modalidade do sistema inventivo que inclui uma modalidade do codificador inventivo, um subsistema de fornecimento, e uma modalidade do decodificador inventivo.
[0084] Figura 7 é um gráfico da soma de erros quadrados entre uma especificação conseguida e uma especificação verdadeira em diferentes instante de tempo, t, utilizando matrizes primitivas interpoladas (a curva identificada "Matrizes Interpoladas") e com matrizes primitivas constantes no sentido de peça (não interpoladas) (a curva identificada "Matrizes Não Interpoladas).
[0085] Através de toda esta descrição, incluindo nas concretizações, a expressão que executa uma operação "sobre" um sinal ou dados (por exemplo, filtrar, escalar, transformar ou aplicar ganho em o sinal ou dados) é utilizada em um sentido amplo para denotar executar a operação diretamente sobre o sinal ou dados, ou sobre uma versão processado do sinal ou dados (por exemplo, sobre uma versão do sinal que foi submetido a uma filtragem preliminar ou pré-processamento antes de executar a operação no mesmo).
[0086] Através de toda esta descrição, incluindo nas concretizações, a expressão "sistema" é utilizada em um sentido amplo para denotar um dispositivo, sistema, ou subsistema. Por exemplo, um subsistema que implementa um decodificador pode ser referido como um sistema de decodificador, e um sistema que inclui tal subsistema (por exemplo, um sistema que gera Y sinais de saída em resposta a múltiplas entradas, no qual o subsistema gera M da entradas e as outras Y - M entradas são recebidas de uma fonte externa) pode também ser referido como um sistema de decodificador.
[0087] Através de toda esta descrição, incluindo nas concretizações, o termo "processador" é utilizado em um sentido amplo para denotar um sistema ou dispositivo programável ou de outro modo configurável (por exemplo, com software ou firmware) para executar operações sobre dados (por exemplo, áudio, ou vídeo ou outros dados de imagem). Exemplos de processadores incluem uma rede de portas programáveis no campo (ou outro circuito integrado ou conjunto de configurável), um processador de sinal digital programado e/ou de outro modo configurado para executar um processamento em pipeline sobre áudio ou outros dados de som, um processador ou computador de uso geral programável, e um chip ou conjunto de chip de microprocessador programável.
[0088] Através de toda esta descrição, incluindo nas concretizações, a expressão "metadados" refere-se a dados separados e diferentes de dados de áudio correspondentes (conteúdo de áudio de um fluxo de bits o qual também inclui metadados). Os metadados estão associados com dados de áudio, e indicam pelo menos um aspecto ou característica dos dados de áudio (por exemplo, qual(is) tipo(s) de processamento já foram executados, ou devem ser executados, sobre os dados de áudio, ou a trajetória de um objeto indicado pelos dados de áudio). A associação dos metadados com os dados de áudio é síncrona no tempo. Assim, os metadados presente (mais recentemente recebidos ou atualizados) pode indicar que os dados de áudio correspondentes contemporaneamente têm uma característica indicado e/ou compreende os resultados de um tipo indicado de processamento de dados de áudio.
[0089] Através de toda esta descrição, incluindo nas concretizações, o termo "acopla" ou "acoplado" é utilizado para significar em conexão ou direta ou indireta. Assim, se um primeiro dispositivo acopla a um segundo dispositivo, esta conexão pode ser através de uma conexão direta, ou através de uma conexão indireta através de outros dispositivos e conexões.
[0090] Através de toda esta descrição, incluindo nas concretizações, as seguintes descrições têm as seguintes definições:
[0091] falante e alto-falante são utilizados sinonimamente para denotar qualquer transdutor de emissão de som. Esta definição inclui alto-falantes implementados como múltiplos transdutores (por exemplo, woofer e tweeter);
[0092] alimentação de alto-falante: um sinal de áudio a ser aplicado diretamente a um alto-falante, ou um sinal de áudio que deve ser aplicado a um amplificador e alto-falante em série;
[0093] canal (ou " canal de áudio "): um sinal de áudio monofônico. Tal sinal pode tipicamente ser renderizado em tal modo como a ser equivalente à aplicação do sinal diretamente a um alto-falante em um posição desejada ou nominal. A posição desejada pode ser estática, como é tipicamente o caso com alto-falantes físicos, ou dinâmica;
[0094] representação de áudio: um conjunto de um ou mais canais de áudio (pelo menos um canal de alto-falante e/ou pelo menos um canal de objeto) e opcionalmente também metadados associados (por exemplo, metadados que descrevem uma apresentação de áudio espacial desejada);
[0095] canal de alto-falante (ou "canal de alimentação de alto- falante"): um áudio canal o qual está associado com um alto-falante denominado (em uma posição desejada ou nominal), ou com uma zona de alto-falante denominada dentro de uma configuração de alto-falante definida. Um canal de alto-falante é renderizado de tal modo a ser equivalente à aplicação do sinal de áudio diretamente no alto-falante denominado (na posição desejada ou nominal) ou a um alto-falante na zona de alto-falante denominada;
[0096] canal de objeto: um canal de áudio indicativo de som emitido por uma fonte de áudio (algumas vezes referido como um "objeto" de áudio). Tipicamente, um canal de objeto determina uma descrição de fonte de áudio paramétrica (por exemplo, metadados indicativos da descrição de fonte de áudio paramétrica está incluído no ou provido com o canal de objeto). A descrição de fonte pode determinar um som emitido pela fonte (como uma função de tempo), a posição aparente (por exemplo, coordenadas espaciais 3D) da fonte como uma função de tempo, e opcionalmente pelo menos um parâmetro adicional (por exemplo, tamanho ou largura de fonte aparente) que caracteriza a fonte; e
[0097] representação de áudio baseada em objeto: uma representação de áudio que compreende um conjunto de um ou mais canais de objeto (e opcionalmente também compreendendo pelo menos um canal de alto-falante) e opcionalmente também metadados associados (por exemplo, metadados indicativos de uma trajetória de um objeto de áudio o qual emite som indicado por um canal de objeto, ou metadados de outro modo indicativos de uma apresentação de áudio espacial desejada de som indicado por um canal de objeto, ou metadados indicativos de uma identificação de pelo menos um objeto de áudio o qual é uma fonte de som indicada por um canal de objeto).
[0098] Exemplos de modalidades da invenção serão descritos com referência às Figuras 3, 4, 5, e 6.
[0099] A Figura 5 é um diagrama de blocos de uma modalidade do sistema processamento de dados de áudio inventivo o qual inclui um codificador 40 (uma modalidade do codificador inventivo), um subsistema de fornecimento 41 (o qual pode ser idêntico ao subsistema de fornecimento 31 da Figura 1), e um decodificador 42 (uma modalidade do decodificador inventivo), acoplados juntos como mostrado. Apesar subsistema 42 ser aqui referido como um "decodificador" deve ser compreendido que este pode ser implementado como um sistema de reprodução que inclui um subsistema de decodificação (configurado para analisar e decodificar um fluxo de bits indicativo de uma representação de áudio de multicanal codificada) e outros subsistemas configurados para implementar renderização e pelo menos algumas etapas de reprodução da saída do subsistema de decodificação. Algumas modalidades da invenção são decodificadores os quais não estão configurados para executar renderização e/ou reprodução (e os quais tipicamente seria utilizado com um sistema de renderização e/ou reprodução separado). Algumas modalidades da invenção são sistemas de reprodução (por exemplo, um sistema de reprodução que inclui um subsistema de decodificação e outros subsistemas configurados para implementar a renderização e pelo menos algumas etapas reprodução da saída do subsistema de decodificação).
[0100] No sistema da Figura 5, o codificador 40 está configurado para codificar uma representação de áudio de 8 canais (por exemplo, um conjunto tradicional de alimentações de alto-falante 7.1) como um fluxo de bits codificado que inclui dois subfluxos, um decodificador 42 está configurado para decodificar o fluxo de bits codificado para renderizar ou a representação de 8 canais original (sem perda) ou um downmix de 2 canais da representação de 8 canais original. O codificador 40 está acoplado e configurado para gerar o fluxo de bits codificado e para enviar o fluxo de bits codificado para o sistema de fornecimento 41.
[0101] O sistema de fornecimento 41 está acoplado e configurado para fornecer (por exemplo, armazenando e/ou transmitindo) o fluxo de bits codificado para o decodificador 42. Em algumas modalidades, o sistema 41 implementa o fornecimento de (por exemplo, transmite) uma representação de áudio de multicanal codificada sobre um sistema de transmissão ou uma rede (por exemplo, a internet) para o decodificador 42. Em algumas modalidades, o sistema 41 armazena uma representação de áudio de multicanal codificada em um meio de armazenamento (por exemplo, um disco ou conjunto de discos), e o decodificador 42 está configurado para ler a representação do meio de armazenamento.
[0102] O bloco identificado "InvChAssign1" no codificador 40 está configurado para executar uma permutação de canal (equivalente à multiplicação por uma matriz de permutação) sobre os canais da representação de entrada. Os canais permutados então submetidos à codificação no estágio 43, o qual emite oito canais de sinal codificados. Os canais de sinal codificados podem (mas não precisam) corresponder aos canais de alto-falante de reprodução. Os canais de sinal codificados são algumas vezes referidos como canais "internos" já que um decodificador (e/ou sistema de renderização) tipicamente decodifica e renderiza o conteúdo dos canais de sinal codificados para recuperar o áudio de entrada, de modo que os canais de sinal codificados sejam "internos" ao sistema de codificação/decodificação. A codificação executada no estágio 43 é equivalente à multiplicação de cada conjunto de amostras dos canais permutados por uma matriz de codificação (implementada como uma cascata de multiplicações de matriz, identificada como Pn-1,..., P1-1, e P0-1.
[0103] Apesar de n pode ser igual a 7 na modalidade exemplar, na modalidade e suas variações a representação de áudio de entrada compreende um número arbitrário (N ou X) de canais, onde N (ou X) é qualquer inteiro maior do que um, e n na Figura 5 pode ser n = N-1 (ou n = X-1 ou outro valor). Em tais modalidades alternativas, o codificador está configurado para codificar a representação de áudio de multicanal como um fluxo de bits codificado que inclui algum número de subfluxos, e o decodificador está configurado para decodificar o fluxo de bits codificado para renderizar ou a representação de multicanal original (sem perda) ou um ou mais downmixes da representação de multicanal original. Por exemplo, o estágio de codificação (que corresponde ao estágio 43) de tal modalidade alternativa pode aplicar uma cascata de matrizes primitivas NxN em amostras dos canais da representação, para gerar N canais de sinal codificados que podem ser convertidos para uma primeira mistura de M canais de saída, em que a primeira mistura é consistente com uma mistura variável no tempo A(t), especificada sobre um intervalo, no sentido que a primeira mistura é pelo menos substancialmente igual a A(t1), onde t1 é um tempo no intervalo. O decodificador pode criar os M canais de saída aplicando uma cascata de matrizes primitivas NxN recebidas como parte do conteúdo de áudio codificado. O codificador em tal modalidade alternativa pode também gerar uma segunda cascata de matrizes primitivas M1xM1 (onde M1 é um número inteiro menor do que N), a qual está também incluída no conteúdo de áudio codificado. Um decodificador pode aplicar a segunda cascata sobre M1 canais de sinal codificados para implementar um downmix da representação de N canais para M1 canais de alto-falante, em que o downmix é consistente com outro mistura variável no tempo, A2(i), no sentido que o downmix é pelo menos substancialmente igual a A2(t1). O codificador em tal modalidade alternativa também geraria valores de interpolação (de acordo com qualquer modalidade da presente invenção) e incluiria os valores de interpolação na saída de fluxo de bits codificado do codificador, para utilização por um decodificador para decodificar e renderizar o conteúdo do fluxo de bits codificado de acordo com a mistura variável no tempo, A(t), e/ou decodificar e renderizar um downmix do conteúdo doe fluxo de bits codificado de acordo com a mistura variável no tempo, A2(t).
[0104] A descrição da Figura 5 algumas vez referirá à entrada de sinal de multicanal para o codificador inventivo como um sinal de entrada de 8 canais para especificidade, mas a (variações triviais aparentes para aqueles versados na técnica) também se aplica ao caso geral substituindo referências a um sinal de entrada de 8 canais por referências a um sinal de entrada de N canais, substituindo as referências a cascatas de matrizes primitivas de 8 canais (ou 2 canais) por referências a matrizes primitivas de M canais (ou M1 canais), e substituindo referências a recuperação sem perda de um sinal de entrada de 8 canais por referências a recuperação sem perda de um sinal de áudio de M canais (onde o sinal de áudio de M canais foi determinado por operações de matriz para aplicar uma mistura variável no tempo, A(t), para um sinal de áudio de entrada de N canais para determinar M canais de sinal codificados).
[0105] Com referência ao codificador estágio 43 da Figura 5, cada matriz Pn-1,..., P1-1, e P0-1 (e assim a cascata aplicado pelo estágio 43) é determinada no subsistema 44, e é atualizada de tempos em tempos (tipicamente infrequentemente) de acordo com uma mistura variável no tempo especificada dos N canais da representação (onde N = 8) para N canais de sinal codificados os quais foram especificados sobre o intervalo de tempo.
[0106] O subsistema de determinação de matriz 44 está configurado para gerar dados indicativos dos coeficientes de dois conjuntos de matrizes de saída (um conjunto correspondendo a cada dos dois subfluxos dos canais codificados). Cada conjunto de matrizes de saída é atualizado de tempos em tempos, de modo que os coeficientes são também atualizados de tempos em tempos. Um conjunto de matrizes de saída consiste em duas matrizes de renderização P02 (t), P12 (t), cada uma das quais é uma matriz primitiva (de preferência uma matriz primitiva unitária) de dimensão 2x2, e é para renderizar um primeiro subfluxo (um subfluxo de downmix) que compreende dois dos canais de áudio codificados do fluxo de bits codificado (para renderizar um downmix de dois canais do áudio de entrada de oito canais). O outro conjunto de matrizes de saída consiste em oito matrizes de renderização, Po(t), Pi(t), ..., Pn(t), cada uma das quais é uma matriz primitiva (de preferência uma matriz primitiva unitária) de dimensão 8x8, e é para renderizar um segundo subfluxo que compreende todos os oito dos canais de áudio codificados do fluxo de bits codificado (para recuperação sem perda da representação de áudio de entrada de oito canais). Para cada tempo, t, uma cascata das matrizes de renderização P02 (t), Pi2 (t), pode ser interpretada como uma matriz de renderização para os canais do primeiro subfluxo que renderiza o downmix de dois canais de sinal codificados no primeiro subfluxo, e similarmente uma cascata das matrizes de renderização, Po (t), Pi (t), ..., Pn (t), pode ser interpretada como uma matriz de renderização para os canais do segundo subfluxo.
[0107] Os coeficientes (de cada matriz de renderização) que são emitidos do subsistema 44 para o subsistema de empacotamento 45 são metadados que indicam um ganho relativo ou absoluto de cada canal a ser incluído na mistura de canais correspondente da representação. Os coeficientes de cada matriz de renderização (para um instante de tempo durante a representação) representam quanto cada um dos canais de uma mistura deve contribuir para a mistura de conteúdo de áudio (no instante correspondente da mistura renderizada) indicado pela alimentação de alto-falante para um alto-falante de sistema de reprodução específico.
[0108] Os oito canais de áudio codificados (emitidos do estágio de codificação 43), os coeficientes de matriz de saída (gerados pelo subsistema 44), e tipicamente também dados adicionais são enviados para o subsistema de empacotamento 45, o qual combina-os no fluxo de bits codificado o qual é então enviado para o sistema de fornecimento 41.
[0109] O fluxo de bits codificado inclui dados indicativo dos oito canais de áudio codificados, os dois conjuntos de matrizes de saída variáveis no tempo (um conjunto correspondendo a cada um dos dois subfluxos dos canais codificados), e tipicamente também dados adicionais (por exemplo, metadados referente ao conteúdo de áudio).
[0110] Em operação, o codificador 40 (e modalidade alternativas do codificador inventivo, por exemplo, o codificador 100 da Figura 6) codifica uma representação de áudio de N canais cujas amostras correspondem a um intervalo de tempo, onde o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2. Quando uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, o codificador executa as etapas de:
[0111] determinar uma primeira cascata de matrizes primitivas NxN (por exemplo, matrizes P0(t1), P1(t1), ..., Pn(t1), para o tempo t1) a qual, quando aplicada a amostras dos N canais de sinal codificados, implementa uma primeira mistura de conteúdo de áudio dos N canais de sinal codificados para os M canais de saída, em que a primeira mistura é consistente com a mistura variável no tempo, A(t), no sentido que a primeira mistura é pelo menos substancialmente igual a A(t1);
[0112] gerar um conteúdo de áudio codificado (por exemplo, na saída do estágio 43 do codificador 40, ou na saída do estágio 103 do codificador 100) executando operações de matriz sobre amostras dos N canais da representação, incluindo aplicação de uma sequência de cascata de matriz nas amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e a sequência de cascatas de matriz inclui uma primeira cascata de matriz inversa a qual é uma cascata de inversos das matrizes primitivas da primeira cascata;
[0113] determinar valores de interpolação (por exemplo, valores de interpolação incluídos na saída do estágio 44 do codificador 40, ou na saída do estágio 103 do codificador 100) os quais, com a primeira cascata de matrizes primitivas (por exemplo, incluídas na saída do estágio 44 ou estágio 103) e uma função de interpolação definida sobre o subintervalo, são indicativas de uma sequência de cascatas de Matrizes primitivas atualizadas NxN, de modo que cada uma das cascatas de matrizes primitivas atualizadas, quando aplicada a amostras dos N canais de sinal codificados, implementa uma mistura atualizada, associada com um diferente tempo no subintervalo, dos N canais de sinal codificados para os M canais de saída, em que cada dita mistura atualizada é consistente com a mistura variável no tempo, A(t). De preferência, mas não necessariamente (em todas as modalidades), cada mistura atualizada é consistente com a mistura variável no tempo no sentido que a mistura atualizada associada com qualquer tempo t3 no subintervalo é pelo menos substancialmente igual a A(t3); e
[0114] gerar um fluxo de bits codificado (por exemplo, a saída do estágio 45 do codificador 40 ou a saída do estágio 104 do codificador 100) o qual é indicativo do conteúdo de áudio codificado, os valores de interpolação, e a primeira cascata de matrizes primitivas.
[0115] Com referência ao estágio 44 da Figura 5, cada conjunto de matrizes de saída (conjunto P02, P12, ou o conjunto P0, P1,...,Pn) é atualizado de tempos em tempos. O primeiro conjunto de matrizes P02, P12, que é emitido (em um primeiro tempo, t1) é uma matriz de semente (implementada como uma cascata matrizes primitivas unitárias) a qual determina que uma transformação linear seja executada no primeiro tempo durante a representação (isto é, em amostras de dois canais da saída codificada do estágio 43, que corresponde ao primeiro tempo). O primeiro conjunto de matrizes P0, P1,...,Pn que é emitido (no primeiro tempo, t1) é também matriz de semente (implementada como uma cascata de matrizes primitivas unitárias) a qual determina que um transformação linear seja executada no primeiro tempo durante a representação (isto é, em amostras de todos os oito canais da saída codificada do estágio 43 que corresponde ao primeiro tempo). Cada conjunto de atualizados de matrizes P02, P12, que é emitido do estágio 44 é uma matriz de semente atualizada (implementada como uma cascata de matrizes primitivas unitárias, a qual pode também ser referida como uma cascata de matrizes primitivas de semente unitária) o que determina que uma transformação linear seja executada no tempo de atualização durante a representação (isto é, em amostras de dois canais da saída codificada do estágio 43, que corresponde ao tempo de atualização). Cada conjunto atualizado de matrizes P0, P1,...,Pn que é emitido do estágio 43 é também uma matriz de semente (implementada como uma cascata de matrizes primitivas unitárias, a qual pode também ser referida como uma cascata de matrizes primitivas de semente unitárias) a qual determina que uma transformação linear seja executada no tempo de atualização durante a representação (isto é, em amostras de todos os oito canais da saída codificada do estágio 43 que corresponde ao primeiro tempo).
[0116] O estágio de saída 44 também emite valores de interpolação, os quais (com uma função de interpolação para cada matriz de semente) permitem que o decodificador 42 gere versões interpoladas das matrizes de semente (que correspondem a tempos após o primeiro tempo, t1, e entre os tempos de atualização). Os valores de interpolação (os quais podem incluir dados indicativos da cada função de interpolação) são incluídos pelo estágio 45 no fluxo de bits codificado emitido do codificador 40. Descreveremos exemplos de tais valores de interpolação abaixo (os valores de interpolação podem incluir uma matriz delta para cada matriz de semente).
[0117] Com referência ao decodificador 42 da Figura 5, o subsistema de análise 46 (do decodificador 42) está configurado para aceitar (ler ou receber) o fluxo de bits codificado do sistema de fornecimento 41 e analisar o fluxo de bits codificado. O subsistema 46 é operável para enviar os subfluxos do fluxo de bits codificado (incluindo um "primeiro" subfluxo que compreende somente dois canais codificados do fluxo de bits codificado), e matrizes de saída (P02, P12) que correspondem ao primeiro subfluxo, para o estágio de multiplicação de matriz 48 (para processamento o que resulta em uma apresentação de conteúdo de downmix de 2 canais da representação de entrada de 8 canais original). O subsistema 46 é também para enviar os subfluxos do fluxo de bits codificado (um "segundo" subfluxo que compreende todos os oito canais codificados do fluxo de bits codificado), e matrizes de saída correspondentes (P0, P1,..., Pn) para o estágio de multiplicação de matriz 47 para processamento o que resulta em uma reprodução sem perda da representação de 8 canais original.
[0118] O subsistema de análise 46 (e o subsistema de análise 105 na Figura 6) pode incluir (e/ou implementar) ferramentas de codificação e decodificação sem perda adicionais (por exemplo, codificação FPC, codificação Huffman, e assim por diante).
[0119] O estágio de interpolação 60 está acoplado para receber cada matriz de semente do segundo subfluxo (isto é, o conjunto inicial de matrizes primitivas, P0, P1,..., Pn para o tempo t1, e cada conjunto atualizado dede matrizes primitivas, P0, P1,..., Pn) incluída no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada matriz de semente. O estágio 60 está acoplado e configurado para passar através (para o estágio 47) cada tal matriz de semente, e gerar (e enviar para o estágio 47) versões interpoladas de cada tal matriz de semente (cada versão interpolada correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0120] O estágio de interpolação 61 está acoplado para receber cada matriz de semente para o primeiro subfluxo (isto é, o conjunto inicial de matrizes primitivas, P02 e P12, para o tempo t1, e cada conjunto atualizado de matrizes primitivas, P02, P12) incluída no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada tal matriz de semente. O estágio 61 está acoplado e configurado para passar através (para o estágio 48) cada tal matriz de semente, e gerar (e enviar para o estágio 48) versões interpoladas de cada tal matriz de semente (cada versão interpolada correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0121] O estágio 48 multiplica as duas amostras de áudio dos dois canais (do fluxo de bits codificado) os quais correspondem aos canais do primeiro subfluxo pela cascata mais recentemente atualizada das matrizes P02, P12 (por exemplo, uma cascata das versões interpoladas mais recentes das matrizes P02, P12 gerada pelo estágio 61), e cada conjunto resultante de duas amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign0" para gerar cada par de amostras do downmix de 2 canais requeridos dos 8 canais de áudio originais. A cascata de operações de matriz executadas no codificador 40 e decodificador 42 é equivalente à aplicação de uma especificação de matriz de downmix que transforma os 8 canais de áudio de entrada no downmix de 2 canais.
[0122] O estágio 47 multiplica cada vetor de oito amostras de audio (uma de cada um do conjunto total de oito canais do fluxo de bits codificado) pela cascata mais recentemente atualizada das matrizes P0, P1,..., Pn (por exemplo, uma cascata das versões interpoladas mais recentes de matrizes P0, P1,..., Pn geradas pelo estágio 60) e cada conjunto resultante de oito amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign1" para gerar cada conjunto de oito amostras da representação de 8 canais original recuperado sem perda. Para que o áudio de 8 canais de saída seja exatamente o mesmo que o áudio de 8 canais de entrada (para conseguir a característica "sem perda" do sistema), as operações de matriz executadas no codificador 40 devem ser exatamente (incluindo os efeitos de quantização) o inverso das operações de matriz executada no decodificador 42 no segundo subfluxo do fluxo de bits codificado (isto é, cada multiplicação no estágio 47 do decodificador 42 por uma cascata de matrizes P0, P1,..., Pn). Assim, na Figura 5, as operações de matriz no estágio 43 do codificador 40 são identificadas como uma cascata das matrizes inversas das matrizes P0, P1,..., Pn na sequência oposta aplicada no estágio 47 do decodificador 42, a saber: Pn-1,..., P1-1, Po-1.
[0123] Assim, o estágio 47 (com o estágio de permutação, ChAssign1) é um subsistema de multiplicação de matriz acoplado e configurado para aplicar sequencialmente cada cascata das matrizes primitivas emitidas do estágio de interpolação 60 para o conteúdo de áudio codificado extraído do fluxo de bits codificado, para recuperar sem perda os N canais de pelo menos um segmento da representação de áudio de multicanal que foi codificada pelo codificador 40.
[0124] O estágio de permutação ChAssign1 do decodificador 42 aplica na saída do estágio 47 o inverso da permutação de canal aplicada pelo codificador 40 (isto é, a matriz de permutação representada pelo estágio "ChAssign1" do decodificador 42 é o inverso daquela representada pelo elemento "InvChAssign1" do codificador 40).
[0125] Em variações sobre os subsistemas 40 e 42 do sistema mostrado na Figura 5, um ou mais dos elementos estão omitidos ou unidades de processamento de dados de áudio adicionais estão incluídas.
[0126] Em variações das modalidades descritas do decodificador 42, o decodificador inventivo está configurado para executar a recuperação sem perda de N canais do conteúdo de áudio codificado de um fluxo de bits codificado indicativo de N canais de sinal codificados, onde os N canais de conteúdo de áudio são estes próprios um downmix de conteúdo de áudio de uma representação de áudio de entrada de X canais (onde X é um número inteiro arbitrário e N é menor do que X), gerado executando operações de matriz sobre a representação de áudio de entrada de X canais para aplicar uma mistura variável no tempo nos X canais da representação de áudio de entrada, por meio disto determinando os N canais de conteúdo de áudio codificado do fluxo de bits codificado. Em tais variações, o decodificador executa uma interpolação sobre as matrizes NxN providas com (por exemplo, incluídas em) o fluxo de bits codificado.
[0127] Em uma classe de modalidades, a invenção é um método para renderizar uma representação de áudio de multicanal, incluindo executar uma transformação linear (multiplicação de matriz) sobre amostras dos canais da representação (por exemplo, para gerar um downmix de conteúdo da representação). A transformação linear é dependente do tempo no sentido que a transformação linear a ser executada em um tempo durante a representação (isto é, em amostras dos canais que correspondem àquele tempo) difere da transformação linear a ser executada em outro tempo durante a representação. Em algumas modalidades, o método emprega pelo menos um matriz de semente (a qual pode ser implementada como uma cascata de matrizes primitivas unitárias) a qual determina que a transformação linear seja executada em um primeiro tempo durante a representação (isto é, em amostras dos canais que correspondem ao primeiro tempo), e implementa uma interpolação para determinar pelo menos uma versão interpolada da matriz de semente a qual determina que a transformação linear seja executada em um segundo tempo durante a representação. Em modalidades típicas, o método é executado por um decodificador (por exemplo, o decodificador 40 da Figura 5 ou decodificador 102 da Figura 6) o qual está incluído em, ou associado com, um sistema de reprodução. Tipicamente, o decodificador está configurado para executar uma recuperação sem perda de conteúdo de áudio de um fluxo de bits de áudio codificado indicativo da representação, e a matriz de semente (e cada versão interpolada da matriz de semente) está implementada como uma cascata de matrizes primitivas (por exemplo, matrizes primitivas unitárias).
[0128] Tipicamente, as atualizações de matriz de renderização (atualizações da matriz de semente) ocorrem infrequentemente (por exemplo, uma sequência de versão atualizada da matriz de semente está incluída no fluxo de bits de áudio codificado fornecido para o decodificador, mas existem longos intervalos de tempo entre os segmentos da representação que correspondem a umas consecutivas de tais versões atualizadas,), e uma trajetória de renderização (por exemplo, uma sequência desejada de misturas de conteúdo de canais da representação) entre as atualizações de matriz de semente é especificada parametricamente (por exemplo, por metadados incluídos no fluxo de bits de áudio codificado fornecido para o decodificador).
[0129] Cada matriz de semente (de uma sequência de matrizes de semente atualizadas) será denotada como A(tj), ou Pk(tj) se esta for uma matriz primitiva, onde tj é o tempo (na representação) que corresponde à matriz de semente (isto é, o tempo corresponde a "ja" matriz de semente). Onde a matriz de semente é implementada como uma cascata de matrizes primitivas, Pk(tj), o índice k indica a posição na cascata de cada matriz primitiva. Tipicamente, a "ka" matriz, Pk(tj) em uma cascata de matrizes primitivas opera sobre o "ko" canal.
[0130] Quando a transformação linear (por exemplo, especificação de downmix), A(t), está rapidamente variando, um codificador (por exemplo, um codificador convencional) precisaria transmitir matrizes de semente atualizadas frequentemente de modo a conseguir uma aproximação próxima de A(t).
[0131] Considera-se uma sequência de matrizes primitivas Pk (t1), Pk (t2), Pk (t3), ..., as quais operam sobre o mesmo canal k mas em diferentes instantes de tempo t1, t2, t3, Ao invés de enviar matrizes primitivas atualizadas em cada destes instantes, um modalidade de método inventivo envia, no tempo t1 (isto é, inclui em um fluxo de bits codificado em uma posição que corresponde ao tempo t1) uma matriz primitiva de semente Pk (t1), e uma matriz delta de semente Δk(t1) que define a taxa de mudança de coeficientes de matriz. Por exemplo, a matriz primitiva de semente e a matriz delta de semente podem ter a forma:
[0132] Como Pk (t1) é uma matriz primitiva, esta é idêntica à matriz de identidade de dimensão NxN exceto por uma fila (não trivial) (isto é, a fila que compreende os elementos αo, αi, a2, ... aN-1 no exemplo). No exemplo, a matriz Δk(t1) compreende zeros, exceto para uma linha (não trivial) (isto é, a linha que compreende os elementos δ0, δ1, ...,ÔN-I no exemplo). O elemento αk denota um dos elementos αo, αi, α2, ... αN-i o qual ocorre sobre a diagonal de Pk (ti), e elemento δk denota um dos elementos δ0, δi, ...,δN-i o qual ocorre na diagonal de Δk (ti).
[0133] Assim, a matriz primitiva em um instante de tempo t (que ocorre após o tempo ti) é interpolada (por exemplo, pelo estágio 60 ou 6i do decodificador 42, ou estágio ii0, iii, ii2, ou ii3 do decodificador 102) como: Pk (t) = Pk(t1) + f (t)Δk (t1),
[0134] onde f (t) é um fator de interpolação para o tempo t, e f(t1) = 0. Por exemplo, se a interpolação linear for desejada, a função f (t) pode ter a forma de f (t = a * (t - t1), onde α é uma constante. Se a interpolação for implementado em um decodificador, o decodificador deve estar configurado para conhecer a função f(t). Por exemplo, os metadados que determinam a função f(t) podem ser fornecido para o decodificador com o fluxo de bits de áudio codificado a ser decodificado e renderizado.
[0135] Apesar do acima descrever um caso geral de interpolação de matrizes primitivas, com o elemento αk igual a 1, Pk (t1) é uma matriz primitiva unitária a qual é responsável para inversão de sem perda. No entanto, de modo a manter a condição sem perda em cada instante de tempo precisaríamos também determinar o conjunto de δk = 0, de modo que a matriz primitiva em cada instante seja responsável para a inversão sem perda.
[0136] Nota-se que Pk(t)x(t) = Pk(t1)x(t) + f(t)(Δk(t1)x(t)). Assim ao invés de atualizar a matriz primitiva de semente em cada instante de tempo t, poderia equivalentemente calcular dois conjunto intermediários de canais Pk(t1)x(t) e Δk(t1)x(t), e combiná-los com o fator de interpolação f (t).
[0137] Esta proposta é tipicamente computacionalmente menos dispendiosa comparada com a proposta de atualizar a matriz primitiva em cada instante onde cada coeficiente delta precisa ser multiplicado pelo fato de interpolação.
[0138] Ainda outra proposta equivalente é dividir f(t) em um número inteiro r e uma fração f(t)-r, e então conseguir a aplicação requerida da matriz primitiva interpolada como:
[0139] Esta última proposta (que utiliza a equação (2)) seria assim uma mistura das duas propostas anteriormente discutidas.
[0140] Em TrueHD, 0,833 ms (40 amostras a 48 kHz) de validade de áudio são definidos como uma unidade de acesso. Se a matriz delta Δ k for definida como a taxa de mudança da matriz primitiva Pk por unidade de acesso, e se definidos f(t)= (t-t1 )/T, onde T é o comprimento da unidade de acesso, então r na equação (2) aumenta por 1 a cada unidade de acesso, f(t)-r é simplesmente uma função do deslocamento de uma amostra dentro de uma unidade de acesso. Assim o valor fracionário f(t) - r não precisa necessariamente ser calculado e pode ser derivado simplesmente de uma tabela de consulta indexada por deslocamentos dentro de uma unidade de acesso. No final de cada unidade de acesso, Pk(t1) + rΔk(t1) é atualizado pela adição de Δk(t1 ). Em geral T não precisa corresponder a uma unidade de acesso e pode ao invés ser qualquer segmentação fixa do sinal, por exemplo, este poderia ser um bloco 8 amostras de comprimento
[0141] Uma simplificação adicional, além de uma aproximação, seria ignorar a parte fracionária f(t))-r de todo e periodicamente atualizar Pk(t1) + rΔk(t1 ). Isto essencialmente gera uma atualização de matriz constante no sentido de peça, mas sem o requisito para transmitir as matrizes primitivas frequentemente.
[0142] A Figura 3 é um diagramas de bloco de um circuito empregado em uma modalidade da invenção para aplicar uma matriz primitiva 4x4 (implementada com aritmética de precisão finita) para quatro canais de uma representação de áudio. A matriz primitiva é uma matriz primitiva de semente, cuja uma linha não trivial compreende elementos ao, ai, a2, e as. É contemplado que quatro tais matrizes primitivas, cada uma para transformar amostras de um diferente dos quatro canais, seria colocada em cascata para transformar amostras de todos os quatro canais. Tal circuito poderia ser utilizado quando as matrizes primitivas são primeiramente atualizadas através de interpolação, e as matrizes primitivas atualizadas aplicadas nos dados de áudio.
[0143] A Figura 4 é um diagrama de blocos de um circuito empregado em uma modalidade da invenção para aplicar uma matriz primitiva 3x3 (implementada com aritmética de precisão finita) a três canais de uma representação de áudio. A matriz primitiva é uma matriz primitiva interpolada, gerada de acordo com uma modalidade da invenção de uma matriz primitiva de semente Pk(ti) cuja uma linha não trivial compreende elementos ao, ai, e a2, e uma matriz delta de semente Δ k (ti) cuja linha não trivial que compreende os elementos δ0, δ1, e δ2, e uma função de interpolação f (t). Assim, a matriz primitiva em um instante de tempo t (que ocorre após o tempo ti) é interpolada como:
[0144] Pk (t) = Pk (ti) + f(t) Δk(t1) onde f(t) é um fator de interpolação para o tempo t (o valor da função de interpolação f(t) no tempo t), e f(t1) = 0. É contemplado que três tais matrizes primitivas, cada um para transformar as amostras de um diferente dos três canais, seria colocada em cascata para transformar as amostras de todos três dos canais. Tal circuito poderia ser utilizado quando uma semente ou matriz primitiva parcialmente atualizada é aplicada sobre os dados de áudio e a matriz delta é aplicada sobre os dados de áudio e as duas combinadas juntas utilizando o fator de interpolação.
[0145] O circuito da Figura 3 está configurado para aplicar a matriz primitiva de semente para quatro canais de representação de áudio S1, S2, S3, e S4 (isto é, para multiplicar amostras dos canais pela matriz). Mais especificamente, uma amostra do canal S1 é multiplicada pelo coeficiente α0 (identificado como "m_coeff[p,0]") da matriz, uma amostra do canal S2 é multiplicada pelo coeficiente aa (identificado como "m_coeff[p,1]") da matriz, uma amostra do canal S3 é multiplicada pelo coeficiente a2 (identificado como "m_coeff[p,2]") da matriz, e uma amostra do canal S4 é multiplicada pelo coeficiente a3 (identificado como "m_coeff[p,3]") da matriz. Os produtos são somados no elemento de somatório 10, e cada soma emitida do elemento 10 é então quantizada no estágio de quantização Qss para gerar o valor quantizado o qual é a versão transformada (incluída no canal S2') da amostra do canal S2. Em uma implementação típica, cada amostra de cada um dos canais S1, S2, S3, e S4 compreende 24 bits (como indicado na Figura 3), e a saída de cada elemento de multiplicação compreende 38 bits (como também indicado na Figura 3), e o estágio de quantização Qss emite um valor quantizado de 24 bits em resposta a cada valor de 38 bits o qual é inserido neste.
[0146] O circuito da Figura 4 está configurado para aplicar a matriz primitiva interpolada a três canais de representação de áudio C1, C2, e C3 (isto é, para multiplicar amostras dos canais pela matriz). Mais especificamente, uma amostra do canal C1 é multiplicada pelo coeficiente a0 (identificado como "m_coeff[p,0]") da matriz primitiva de semente, uma amostra do canal C2 é multiplicada pelo coeficiente ai (identificado como "m_coeff[p,1]") da matriz primitiva de semente, e uma amostra do canal S3 é multiplicada pelo coeficiente δ2 (identificado como "m_coeff[p,2]") da matriz primitiva de semente. Os produtos são somados no elemento de somatório 12, e cada resultado de soma do elemento 12 é então adicionado (no estágio 14) ao valor correspondente emitido do estágio de fator de interpolação 13. O valor emitido do estágio 14 é quantizado no estágio de quantização Qss para gerar o valor quantizado o qual é a versão transformada (incluída no canal C3') da amostra do canal C3.
[0147] A mesma amostra do canal C1 é multiplicada pelo coeficiente δo (identificado como "delta_cf[p,0]") da matriz delta de semente, a amostra do canal C2 é multiplicada pelo coeficiente δi (identificado como "delta_cf[p,1]") da matriz delta de semente, e a amostra do canal S3 é multiplicada pelo coeficiente δ2 (identificado como "delta_cf[p,2]") da matriz delta de semente. Os produtos são somados no elemento de somatório ii, e cada resultado de soma do elemento ii é então quantizado no estágio de quantização Qfine para gerar um valor quantizado o qual é então multiplicado (no estágio de fator de interpolação i3) pelo valor corrente da função de interpolação, f(t).
[0148] Em uma implementação típica da Figura 4, cada amostra de cada um dos canais Ci, C2, e C3 compreende 32 bits (como indicado na Figura 4), e o resultado de cada um dos elementos de somatório ii, i2, e i4 compreende 50 bits (como também indicado na Figura 4), e cada uma das saídas de estágios de quantização Qfine e Qss um valor quantizado de 32 em resposta a cada valor de 50 bits o qual é inserido neste.
[0149] Por exemplo, uma variação do circuito da Figura 4 poderia transformar um vetor de amostras de x canais de áudio, onde x = 2, 4, 8, ou N canais. Uma cascata de x tais variações no circuito da Figura 4 poderia executar uma multiplicação de matriz de tais x canais por uma matriz de semente x x x (ou uma versão interpolada de tal matriz de semente). Por exemplo, tal cascata de x tais variações sobre o circuito da Figura 4 poderiam implementar os estágios 60 e 47 do decodificador 42 (onde x = 8), ou estágios 61 e 48 do decodificador 42 (onde x = 2), ou estágios 113 e 109 do decodificador 102 (onde x = N), ou estágios 112 e 108 do decodificador 102 (onde x = 8), ou estágios 111 e 107 do decodificador 102 (onde x = 6), ou estágios 110 e 106 do decodificador 102 (onde x = 2).
[0150] Na modalidade da Figura 4, a matriz primitiva de semente e a matriz delta de semente são aplicadas em paralelo a cada conjunto (vetor) de amostras de entrada (cada tal vetor incluindo uma amostra de cada um dos canais de entrada).
[0151] Com referência à Figura 6, a seguir descreve-se uma modalidade da invenção na qual a representação de áudio a ser decodificado é uma representação de áudio baseada em objeto de N canais. O sistema da Figura 6 inclui um codificador 100 (uma modalidade do codificador inventivo), subsistema de fornecimento 31, e decodificador 102 (uma modalidade do decodificador inventivo), acoplados juntos como mostrado.
[0152] Apesar do subsistema 102 ser referido aqui como um "decodificador" deve ser compreendido que pode ser implementado como um sistema de reprodução que inclui um subsistema de decodificação (configurado para analisar e decodificar um fluxo de bits indicativo de uma representação de áudio de multicanal codificada) e outros subsistemas configurados para implementar a renderização e pelo menos algumas etapas de reprodução da saída do subsistema de decodificação. Algumas modalidades da invenção são decodificadores os quais não estão configurados para executar a renderização e/ou reprodução (e os quais tipicamente seriam utilizados com um sistema de renderização e/ou de reprodução separado). Algumas modalidades da invenção são sistemas de reprodução (por exemplo, um sistema de reprodução que inclui um subsistema de decodificação e outros subsistemas configurados para implementar a renderização e pelo menos algumas etapas de reprodução da saída do subsistema de decodificação.
[0153] No sistema da Figura 6, o codificador 100 está configurado para codificar a representação de áudio baseada em objeto de N canais como um fluxo de bits codificado que inclui quatro subfluxos, e o decodificador 102 está configurado para decodificar o fluxo de bits codificado para renderizar ou a representação de N canais original (sem perda), ou um downmix de 8 canais da representação de N canais original, ou um downmix de 6 canais da representação de N canais original, ou um downmix de 2 canais da representação de N canais original. O codificador 100 está acoplado e configurado para gerar o fluxo de bits codificado e para enviar o fluxo de bits codificado para o sistema de fornecimento 31.
[0154] O sistema de fornecimento 31 está acoplado e configurado para fornecer (por exemplo, por armazenamento e/ou transmissão) o fluxo de bits codificado para o decodificador 102. Em algumas modalidades, o sistema 31 implementa o fornecimento de (por exemplo, transmite) uma representação de áudio de multicanal codificada sobre um sistema de transmissão ou uma rede (por exemplo, a internet) para o decodificador 102. Em algumas modalidades, o sistema 31 armazena uma representação de áudio de multicanal codificada em um meio de armazenamento (por exemplo, um disco ou conjunto de discos), e o decodificador 102 está configurado para ler a representação do meio de armazenamento.
[0155] O bloco identificado "InvChAssign3" no codificador 100 está configurado para executar uma permutação de canal (equivalente à multiplicação por uma matriz de permutação) nos canais da representação de entrada. Os canais permutados então são submetidos à codificação no estágio 101, o qual emite N canais de sinal codificados. Os canais de sinal codificados podem (mas não precisam) corresponder a canais de alto-falante de reprodução. Os canais de sinal codificados são algumas vezes referidos como canais "internos" já que um decodificador (e/ou sistema de renderização) tipicamente decodifica e renderiza o conteúdo dos canais de sinal codificados para recuperar o áudio de entrada, de modo que os canais de sinal codificados são "internos" ao sistema de codificação / decodificação. A codificação executada no estágio 101 é equivalente a multiplicação de cada conjunto de amostras dos canais permutados por uma matriz de codificação (implementada como uma cascata de multiplicações de n i ’1’0 matriz, identificado como:
[0156] Cada matriz Pn-1,..., P1-1, e P0-1 (e assim a cascata aplicada pelo estágio 101) é determinada no subsistema 103, e é atualizada de tempos em tempos (tipicamente infrequentemente) de acordo com uma mistura variável no tempo especificada dos N canais da representação para N canais de sinal codificados foi especificada sobre o intervalo de tempo.
[0157] Em variações sobre a modalidade exemplar da Figura 6, a representação de áudio de entrada compreende um número arbitrário de canais (N ou X, onde X é maior do que N). Em tais variações, os N canais de representação de áudio de multicanal que estão indicados pelo fluxo de bits codificado emitido do codificador, o qual pode ser recuperado sem perda pelo decodificador, podem ser N canais de conteúdo de áudio os quais foram gerados da representação de áudio de entrada de X canais executando operações de matriz sobre a representação de áudio de entrada de X canais para aplicar uma mistura variável no tempo para os X canais da representação de áudio de entrada, por meio disto determinando o conteúdo de áudio codificado do fluxo de bits codificado.
[0158] O subsistema de determinação de matriz 103 da Figura 6 está configurado para gerar dados indicativos dos coeficientes de quatro conjuntos de matrizes de saída (um conjunto correspondendo a cada dos quatro subfluxos dos canais codificados). Cada conjunto de matrizes de saída é atualizado de tempos em tempos, de modo que os coeficientes são também atualizados de tempos em tempos.
[0159] Um conjunto de matrizes de saída consiste em duas matrizes de renderização, P02(t), P12(t) cada um dos quais é uma matriz primitiva (de preferência a matriz primitiva unitária) de dimensão 2x2, e é para renderizar um primeiro subfluxo (um subfluxo de downmix) que compreende dois dos canais de áudio codificados do fluxo de bits codificado (para renderizar um downmix de dois canais do áudio de entrada).
[0160] Outro conjunto de matrizes de saída pode consistir em tantos quanto seis matrizes de renderização, P06(t), P16(t), P26(t), P36(t), P46(t), e P56(t), cada uma das quais é uma matriz primitiva(de preferência uma matriz primitiva unitária) de dimensão 6x6, e é para renderizar um segundo subfluxo (um subfluxo de downmix) que compreende seis dos canais de áudio codificados do fluxo de bits codificado (para renderizar um downmix de seis canais do áudio de entrada). Outro conjunto de matrizes de saída consiste em tantos quanto oito matrizes de renderização, P08(t), P18(t), ... P78(t), cada uma das quais é uma matriz primitiva (de preferência uma matriz primitiva unitária) de dimensão 8x8, e é para renderizar um terceiro subfluxo (um subfluxo de downmix) que compreende oito dos canais de áudio codificados do fluxo de bits codificado (para renderizar um downmix de oito canais do áudio de entrada).
[0161] O outro conjunto de matrizes de saída consiste em N matrizes de renderização, P0(t), P1(t), ..., Pn(t), cada um dos quais é uma matriz primitiva (de preferência a matriz primitiva unitária) de dimensão NxN, e é para renderizar um quarto subfluxo que compreende todos os canais de áudio codificados do fluxo de bits codificado (para recuperação sem perda da representação de áudio de entrada de N canais). Para cada tempo, t, uma cascata de P02(t), P12(t), pode ser interpretada como uma matriz de renderização para os canais do primeiro subfluxo, uma cascata das matrizes de renderização, P06(t), P16(t), ..., P56(t), pode também interpretada como uma matriz de renderização para os canais do segundo subfluxo, uma cascata das matrizes de renderização, P08(t), P18(t), ... P78(t), pode também ser interpretada como uma matriz de renderização para os canais do terceiro subfluxo, e uma cascata das matrizes de renderização, P0(t), P1(t), ..., Pn(t), é equivalente a uma matriz de renderização para os canais do quarto subfluxo.
[0162] Os coeficientes (de cada matriz de renderização) que são emitidos do subsistema 103 para o subsistema de empacotamento 104 são metadados que indicam um ganho relativo ou absoluto de cada canal a ser incluído em um mistura de canais correspondente da representação. Os coeficientes de cada matriz de renderização (por um instante de tempo durante a representação) representam quanto cada um dos canais de uma mistura deve contribuir para a mistura de conteúdo de áudio (no instante correspondente da mistura renderizada) indicado pela alimentação de alto-falante para um alto-falante de sistema de reprodução específico.
[0163] Os N canais de áudio codificados (emitidos do estágio de codificação 101), os coeficientes de matriz de saída (gerados pelo subsistema 103), e tipicamente também os dados adicionais (por exemplo, para inclusão como metadados no fluxo de bits codificado) são enviados para o subsistema de empacotamento 104, o qual monta-os no fluxo de bits codificado o qual é então enviado para o sistema de fornecimento 31.
[0164] O fluxo de bits codificado inclui dados indicativos dos N canais de áudio codificados, os quatro conjuntos de matrizes de saída variáveis no tempo (um conjunto correspondendo a cada um de quatro subfluxos de canais codificados), e tipicamente também dados adicionais (por exemplo, metadados referentes ao conteúdo de áudio).
[0165] O estágio 103 do codificador 100 atualiza cada conjunto de matrizes de saída (por exemplo, o conjunto P02, P12, ou o conjunto P0, P1,..., Pn) de tempos em tempos. O primeiro conjunto de matrizes P02, P12 que é emitido (em um primeiro tempo, t1) é uma matriz de semente (implementada como uma cascata de matrizes primitivas, por exemplo, matrizes primitivas unitárias) a qual determina uma transformação linear a ser executada no primeiro tempo durante a representação (isto é, em amostras de dois canais da saída codificada do estágio 101, que corresponde ao primeiro tempo). O primeiro conjunto de matrizes P06(t), P16(t), ..., Pn6(t), que é emitido (no tempo t1) é uma matriz de semente (implementada como uma cascata de matrizes primitivas, por exemplo, matrizes primitivas unitárias) a qual determina uma transformação linear a ser executada no primeiro tempo durante a representação (isto é, em amostras de seis canais da saída codificada do estágio 101, que corresponde ao primeiro tempo). O primeiro conjunto de matrizes P08(t), P18(t), ..., Pn8(t), que é emitido (no tempo t1) é uma matriz de semente (implementada como uma cascata de matrizes primitivas, por exemplo, matrizes primitivas unitárias) a qual determina uma transformação linear a ser executada no primeiro tempo durante a representação (isto é, em amostras de oito canais da saída codificada do estágio 101, que corresponde ao primeiro tempo). O primeiro conjunto de matrizes P0, P1, ..., Pn, que é emitido (no tempo t1) é uma matriz de semente (implementada como uma cascata de matrizes primitivas unitárias) a qual determina uma transformação linear a ser executada no primeiro tempo durante a representação (isto é, em amostras de todos os canais da saída codificada do estágio 101, que corresponde ao primeiro tempo).
[0166] Cada conjunto atualizado de matrizes P02, P12 que é emitido do estágio 103 é uma matriz de semente atualizada (implementada como uma cascata de matrizes primitivas, a qual pode também ser referida como uma cascata de matrizes primitivas de semente) a qual determina uma transformação linear a ser executada no tempo de atualização durante a representação (isto é, em amostra de dois canais da saída codificada do estágio 101, que corresponde ao tempo de atualização). Cada conjunto atualizado de matrizes P06(t), P16(t), ..., Pn6(t), que é emitido do estágio 103 é uma matriz de semente atualizada (implementada como uma cascata de matrizes primitivas, a qual pode também ser referida como uma cascata de matrizes primitivas de semente) a qual determina uma transformação linear a ser executada no tempo de atualização durante a representação (isto é, em amostras de seis canais da saída codificada do estágio 101, que corresponde ao tempo de atualização). Cada conjunto atualizado de matrizes P08(t), P18(t), ... Pn8(t), que é emitido do estágio 103 é uma matriz de semente atualizada (implementada como uma cascata de matrizes primitivas, a qual pode também ser referida como uma cascata de matrizes primitivas de semente) a qual determina uma transformação linear a ser executada no tempo de atualização durante a representação (isto é, em amostra de dois canais da saída codificada do estágio 101, que corresponde ao tempo de atualização). Cada conjunto atualizado de matrizes P0, P1,...,Pn que é emitido do estágio 103 é também uma matriz de semente (implementada como uma cascata de matrizes primitivas unitárias, a qual pode também ser referida como uma cascata de matrizes primitivas de semente unitárias) a qual determina uma transformação linear a ser executada no tempo de atualização durante a representação (isto é, em amostras de todos os canais da saída codificada do estágio 101 que corresponde ao primeiro tempo).
[0167] Estágio de saída 103 está também configurado para emitir valores de interpolação, os quais (com uma função de interpolação para cada matriz de semente) permitem que o decodificador 102 gere versões interpoladas das matrizes de semente (que corresponde ao tempo após o primeiro tempo, t1, e entre os tempos de atualização). Os valores de interpolação (os quais podem incluir dados indicativos da cada função de interpolação) são incluídos pelo estágio 104 no fluxo de bits codificado emitido do codificador 100. Exemplos de tais valores de interpolação estão aqui descritos em outro local (os valores de interpolação podem incluir uma matriz delta for cada matriz de semente).
[0168] Com referência ao decodificador 102 da Figura 6, o subsistema de análise 105 está configurado para aceitar (ler ou receber) o fluxo de bits codificado do sistema de fornecimento 31 e analisar o fluxo de bits codificado. O subsistema 105 é operável para enviar um primeiro subfluxo que compreende somente dois canais codificados do fluxo de bits codificado), matrizes de saída (P0, P1,...,Pn) que correspondem ao quarto subfluxo (topo), e matrizes de saída (P02, P12 ) que correspondem ao primeiro subfluxo, para o estágio de multiplicação de matriz 106 (para processamento o qual resulta em uma apresentação de downmix de 2 canais do conteúdo da representação de entrada de N canais original). O subsistema 105 é operável para enviar o segundo subfluxo do fluxo de bits codificado que compreende seis canais codificados do fluxo de bits codificado, e as matrizes de saída (P06(t), P16(t), ..., Pn6(t)) que correspondem ao segundo subfluxo, para o estágio de multiplicação de matriz 107 (para processamento o qual resulta em uma apresentação de downmix de seis canais de conteúdo da representação de entrada de N canais original). O subsistema 105 é operável para enviar um terceiro subfluxo do fluxo de bits codificado que compreende oito canais codificados do fluxo de bits codificado), e as matrizes de saída P08(t), P18(t), ... Pn8(t), que correspondem ao terceiro subfluxo, para o estágio de multiplicação de matriz 108 (para processamento o qual resulta em uma apresentação de downmix de oito canis de conteúdo da representação de entrada de N canais original). O subsistema 105 é também operável para enviar o quarto subfluxo (topo) do fluxo de bits codificado (que compreende todos os canais codificados do fluxo de bits codificado), e que correspondem a matrizes de saída (P0, P1,..., Pn) para o estágio de multiplicação de matriz 109 para processamento o qual resulta em uma reprodução sem perda da representação de N canais original.
[0169] O estágio de interpolação 113 está acoplado para receber cada matriz de semente para o quarto subfluxo (isto é, o conjunto inicial de matrizes primitivas, P0, P1,..., Pn, para o tempo t1, e cada conjunto atualizado de matrizes primitivas, P0, P1,..., Pn) incluído no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada matriz de semente. O estágio 113 está acoplado e configurado para passar através (para o estágio 109) cada tal matriz de semente, e para gerar (e enviar para estágio 109) versões interpoladas de cada tal matriz de semente (cada versão interpolada que correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0170] O estágio de interpolação 112 está acoplado para receber cada matriz de semente para o terceiro subfluxo (isto é, o conjunto inicial de matrizes primitivas, P08, P18, ... Pn8, para o tempo t1, e cada conjunto atualizado de matrizes primitivas, P08, P18, ... Pn8, incluído no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada tal matriz de semente. O estágio 111 está acoplado e configurado para passar através (para o estágio 108) cada tal matriz de semente, e gerar (e enviar para estágio 108) versões interpoladas de cada tal matriz de semente (cada versão interpolada correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0171] O estágio de interpolação 111 está acoplado para receber cada matriz de semente para o segundo subfluxo (isto é, o conjunto inicial de matrizes primitivas, P06, P16, ... Pn6, para o tempo t1, e cada conjunto atualizado de matrizes primitivas, P06, P16, ... Pn6, incluído no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada tal matriz de semente. O estágio 111 está acoplado e configurado para passar através (para o estágio 107) cada tal matriz de semente, e gerar (e enviar para estágio 107) versões interpoladas de cada tal matriz de semente (cada versão interpolada correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0172] O estágio de interpolação 110 está acoplado para receber cada matriz de semente para o primeiro subfluxo (isto é, o conjunto inicial de matrizes primitivas, P02 e P12, para o tempo t1, e cada conjunto atualizado de matrizes primitivas, P02 e P12) incluído no fluxo de bits codificado, e os valores de interpolação (também incluídos no fluxo de bits codificado) para gerar versões interpoladas de cada tal matriz de semente. O estágio 110 está acoplado e configurado para passar através (para o estágio 106) cada tal matriz de semente, e gerar (e enviar para estágio 106) versões interpoladas de cada tal matriz de semente (cada versão interpolada correspondendo a um tempo após o primeiro tempo, t1, e antes do primeiro tempo de atualização de matriz de semente, ou entre tempos de atualização de matriz de semente subsequentes).
[0173] O estágio 106 multiplica cada vetor de duas amostras de áudio dos dois canais codificados do primeiro subfluxo pela cascata mais recentemente atualizada das matrizes P02 e P12, (por exemplo, uma cascata da versão interpolada mais recente das matrizes P02 e P12 geradas pelo estágio 110), e cada conjunto resultante de duas amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign0" para gerar cada par de amostras do downmix de 2 canais requerido dos N canais de áudio originais. A cascata de operações de matriz executada no codificador 100 e decodificador 102 é equivalente à aplicação de uma especificação de matriz de downmix que transforma os N canais de áudio de entrada no downmix de dois canais.
[0174] O estágio 107 multiplica cada vetor de seis amostras de áudio dos seis canais codificados do segundo subfluxo pela cascata mais recentemente atualizada das matrizes P06, ... Pn6 (por exemplo, uma cascata das versões interpoladas mais recente das matrizes P06, ... Pn6 geradas pelo estágio 111), e cada conjunto resultante de seis amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign1" para gerar cada conjunto de amostras do downmix de 6 canais requerido dos N canais de áudio originais. A cascata de operações de matriz executada no codificador 100 e decodificador 102 é equivalente à aplicação de uma especificação de matriz de downmix que transforma os N canais de áudio de entrada no downmix de seis canais.
[0175] O estágio 108 multiplica cada vetor de oito amostras de audio dos oito canais codificados do terceiro subfluxo pela cascata mais recentemente atualizada das matrizes P08, ... Pn8 (por exemplo, uma cascata das versões interpoladas mais recente das matrizes P08, ... Pn8 geradas pelo estágio 112), e cada conjunto resultante de oito amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign2" para gerar cada par de amostras do downmix de 8 canais requerido dos N canais de áudio originais. A cascata de operações de matriz executada no codificador 100 e decodificador 102 é equivalente à aplicação de uma especificação de matriz de downmix que transforma os N canais de áudio de entrada no downmix de oito canais.
[0176] O estágio 109 multiplica cada vetor de N amostras de audio (uma de cada um do conjunto total de N canais codificados do fluxo de bits codificado) pela cascata mais recentemente atualizada das matrizes P0, P1,..., Pn (por exemplo, uma cascata das versões interpoladas mais recente das matrizes P0, P1,..., Pn geradas pelo estágio 113), e cada conjunto resultante de N amostras linearmente transformadas é submetido à permutação de canal (equivalente à multiplicação por uma matriz de permutação) representado pelo bloco intitulado "ChAssign3" para gerar cada conjunto de N de amostras da representação de N canais original recuperado sem perda. Para que o áudio de N canais de saída seja exatamente o mesmo que o áudio de N canais de entrada (para conseguir a característica "sem perda" do sistema), as operações de matriz executadas no codificador 100 devem ser exatamente (incluindo os efeitos de quantização) o inverso das operações de matriz executadas no decodificador 102 no quarto subfluxo do fluxo de bits codificado (isto é, cada multiplicação no estágio 109 do decodificador 102 por uma cascata de matrizes P0, P1,...,Pn). Assim, na Figura 6, as operações de matriz no estágio 103 do codificador 100 são identificadas como a cascata das matrizes inversas das matrizes P0, P1,...,Pn, na sequência oposta aplicada no estágio 109 do decodificador 102, a saber: Pn-1,..., P1-1, Po-1.
[0177] Em algumas implementações, o subsistema de análise 105 está configurado para extrair uma palavra de verificação do fluxo de bits codificado, e o estágio 109 está configurado para verificar se os N canais (de pelo menos um segmento da representação de áudio de multicanal) recuperados pelo estágio 109 foram corretamente recuperados, comparando uma segunda palavra de verificação derivada (por exemplo, pelo estágio 109) das amostras de áudio geradas pelo estágio 109 em relação à palavra de verificação extraída do fluxo de bits codificado.
[0178] O estágio "ChAssign3" do decodificador 102 aplica à saída do estágio 109 o inverso da permutação de canal aplicada pelo codificador 100 (isto é, a matriz de permutação representada pelo estágio "ChAssign3" do decodificador 102 é o inverso daquela representada pelo elemento "InvChAssign3" do codificador 100).
[0179] Em variações nos subsistemas 100 e 102 do sistema mostrado na Figura 6, um ou mais dos elementos estão omitidos ou unidades de processamento de dados de áudio adicionais estão incluídas.
[0180] Os coeficientes de matriz de renderização P08, ..., Pn8 (ou P06, ..., Pn6 , ou P02 e P12) enviados para o estágio 108 (ou 107 ou 106) do decodificador 100 são metadados (por exemplo, metadados de posição espacial) do fluxo de bits codificado os quais são indicativos de (ou podem ser processados com outros dados para serem indicativos de) ganho relativo ou absoluto de cada canal de alto-falante a ser incluído em um downmix dos canais do conteúdo de N canais original codificado pelo codificador 100.
[0181] Em contraste, a configuração do sistema de alto-falante de reprodução a ser empregado para renderizar um conjunto total de canais de uma representação de áudio baseada em objeto (o qual é recuperado sem perda pelo decodificador 102) é tipicamente desconhecido no tempo que o fluxo de bits codificado é gerado pelo codificador 100. Os N canais recuperados sem perda pelo decodificador 102 podem precisar ser processados (por exemplo, em um sistema de renderização incluído no decodificador 102 (mas não mostrado na Figura 6) ou acoplado ao decodificador 102) com outros dados (por exemplo, dados indicativos de configuração de um sistema de alto- falante de reprodução específico) para determinar quanto cada canal da representação deve contribuir para uma mistura de conteúdo de áudio (em cada instante da mistura renderizada) indicado pela alimentação de alto-falante para um alto-falante de sistema de reprodução específico. Tal sistema de renderização pode processar metadados de trajetória espacial em (ou associado com) cada canal de objeto recuperado sem perda, para determinar as alimentações de alto-falante para os alto- falantes do sistema de alto-falante de reprodução específico a ser empregado para a reprodução do conteúdo recuperado sem perda.
[0182] Em algumas modalidades do codificador inventivo, o codificador está provido com (ou gera) uma especificação dinamicamente variável A(t) que especifica como transformar todos os canais de uma representação de áudio de N canais (por exemplo, uma representação de áudio baseada em objeto) em um conjunto de N canais codificados, e pelo menos um especificação de downmix dinamicamente variável que especifica cada downmix de conteúdo dos N canais codificados para uma apresentação de M1 (onde M1 é menor do que N, por exemplo, M1 = 2, ou M1 = 8, quando N é maior do que 8). Em algumas modalidades, o trabalho do codificador é empacotar o áudio codificado e dados indicativo de cada tal especificação dinamicamente variável em um fluxo de bits codificado que tem formas predeterminadas (por exemplo, um fluxo de bits TrueHD). Por exemplo, isto pode ser feito de modo que um decodificador preexistente (por exemplo, um decodificador TrueHD preexistente) seja capaz de recuperar pelo menos uma apresentação de downmix (que tem M1 canais), enquanto um decodificador melhorado pode ser utilizado para recuperar (sem perda) a representação de N canais de áudio original. Dadas as especificações dinamicamente variáveis, o codificador pode assumir que o decodificador determinará as matrizes primitivas interpoladas P0,P1,...,Pn de valores de interpolação (por exemplo, informações de matriz primitiva de semente e matriz delta de semente) incluídos no fluxo de bits codificado a ser fornecido para o decodificador. O decodificador então executa uma interpolação para determinar as matrizes primitivas interpoladas as quais invertem as operações do codificador que produziram o conteúdo de áudio codificado do fluxo de bits codificado (por exemplo, para recuperar sem perda o conteúdo que foi codificado, executando operações de matriz, no codificador). Opcionalmente o codificador pode escolher as matrizes primitivas para os subfluxos mais baixos (isto é, os subfluxos indicativos de downmixes de conteúdo de um subfluxo de N-canais de topo) para serem matrizes primitivas não interpoladas (e incluem uma sequência de conjuntos de tais matrizes primitivas não interpoladas no fluxo de bits codificado), enquanto também assumindo que o decodificador determinará as matrizes primitivas interpoladas (P0,P1,Pn) para uma recuperação sem perda do conteúdo do subfluxo (de N-canais) de topo de valores de interpolação (por exemplo, informações de matriz primitiva de semente e matriz delta de semente) incluídos no fluxo de bits codificado para ser fornecido para o decodificador.
[0183] Por exemplo, um codificador (por exemplo, o estágio 44 do codificador 40, ou estágio 103 do codificador 100) pode ser configurado para escolher matrizes primitivas de semente e delta de semente (para utilizar com uma função de interpolação, f(t)), amostrando a especificação A(t) em diferente instante de tempo t1, t2, t3, ... (os quais podem ser proximamente espaçados), derivando as matrizes primitivas de semente correspondentes (por exemplo, como em um codificador TrueHD convencional) e então calcular a taxa de mudança de elementos individuais nas matrizes primitivas de semente para calcular os valores de interpolação (por exemplo, informações "delta" indicativas de uma sequência de matrizes delta de semente). O primeiro conjunto de matrizes primitivas de semente seria as matrizes primitivas derivadas da especificação para o primeiro de tais instantes de tempo, A(t1). É possível que um subconjunto das matrizes primitivas possa não mudar de todo ao longo do tempo, em cujo caso o decodificador responderia a informações de controle apropriadas no fluxo de bits codificado zerando quaisquer informações delta correspondentes (isto é, para ajustar a taxa de mudança de tal subconjunto de matrizes primitivas para zero).
[0184] Variações sobre a modalidade da Figura 6 do codificador e decodificador inventivos podem omitir a interpolação para alguns (isto é, pelo menos um) dos subfluxos do fluxo de bits codificado. Por exemplo, os estágios de interpolação 110, 111, e 112 podem ser omitidos, e as matrizes correspondentes P02, P12, e P06, P16, .. .Pn6, e P08, P18, .. .Pn8, podem ser atualizadas (no fluxo de bits codificado) com suficiente frequência de modo que a interpolação entre instantes nos quais estas são atualizadas é desnecessária. Para outro exemplo, se as matrizes P06, P16, .. .Pn6, forem atualizadas com suficiente frequência de modo que a interpolação em tempos entre as atualizações é desnecessária, o estágio de interpolação 111 é desnecessário e pode ser omitido. Assim, um decodificador convencional (não configurado de acordo com a invenção para executar interpolação) poderia renderizar a apresentação de downmix de 6 canais em resposta ao fluxo de bits codificado.
[0185] Como acima notado, renderizar dinamicamente as especificações de matriz (por exemplo, A(t)) pode se originar não somente da necessidade de renderizar representações de áudio baseadas em objeto, mas também devido à necessidade de implementar proteção de clipe. As matrizes primitivas interpoladas podem permitir uma rápida rampa para e liberação de proteção de clipe de um downmix, assim como diminuindo a taxa de dados requerida para transportar os coeficientes de matriz.
[0186] A seguir descreve-se um exemplo de operação de uma implementação do sistema da Figura 6. Neste caso, a representação de entrada de N canais é uma representação de áudio baseada em objeto de três canais que inclui um canal de leito, C, e dois canais de objeto, U e V. É desejado que a representação seja codificada para transporte através de um fluxo TrueHD que tem dois subfluxos de modo que um downmix de 2 canais (uma renderização da representação para uma configuração de alto-falante de dois canais) pode ser recuperado utilizando o primeiro subfluxo e a representação de entrada de 3 canais original pode ser recuperado sem perda utilizando ambos os subfluxos.
[0187] É feita a equação de renderização equação (ou equação de downmix) da representação de entrada para a mistura de 2 canais seja dada por:
[0188] onde a primeira coluna corresponde aos ganhos do canal de leito (um canal central, C) que alimenta igualmente para os canais L e R. A segunda e terceira colunas, respectivamente, correspondem ao canal de objeto U e ao canal de objeto V. A primeira linha corresponde ao canal L do downmix de 2 canais e a segunda linha corresponde ao canal R. Os dois objetos estão movendo um na direção do outro a uma velocidade determinada por.
[0189] Examinaremos as matrizes de renderização em três diferentes instantes de tempo t1, t2 e t3. Neste exemplo assumiremos que t1 = 0, isto é Em outras palavras em t1, o objeto U completamente alimenta em R e o objeto V completamente mistura em L. Conforme os objetos se movem um na direção do outro a sua contribuição para o alto-falante mais distante aumenta. Para desenvolver o exemplo adicionalmente, digamos queonde T é o comprimento de uma unidade de acesso (tipicamente 0,8333 ms ou 40 amostras na taxa de amostragem de 48 kHz). Assim em t = 40T os dois objetos estão no centro da cena. Agora consideraremos t2 = 15T e t3 = 30T, de modo que:
[0190] Consideremos decompor a especificação provida A2(t) em matrizes primitivas de entrada e saída. Para o bem da simplicidade assumamos que as matrizes P02, P12 são matrizes de identidade e chAssign0 (no decodificador 102) é a atribuição de canal de identidade, isto é, igual à permutação trivial (matriz de identidade).
[0192] As primeiras duas linhas do produto acima são exatamente a especificação A2(t1). Em outras palavras as matrizes primitivas P0-1(t1), P1-1(t1), P2-1(t1), e a atribuição de canal indicada por InvChAssign1(t1) juntas resultam em transformar o canal de entrada C, Objeto U, e Objeto V em três canais internos os primeiros dois dos quais são exatamente os downmixes L e R requeridos. Assim a decomposição acima de A(t1) nas matrizes primitivas P0-1(t1), P1-1(t1), P2-1(t1), e a atribuição de canal InvChAssign1(t1) é uma escolha válida de matrizes primitivas de entrada se as matrizes primitivas de saída e a atribuição de canal para a apresentação de dois canais foram escolhidas serem matrizes de identidade. Nota-se que as matrizes primitivas de entrada são invertíveis sem perda para recuperar C, Objeto U e Objeto V por um decodificador que opera sobre todos os três canais internos. Um decodificador de dois canais, no entanto, somente precisaria dos canais internos 1 e 2 e aplicaria as matrizes primitivas de saída P02, P12 e chAssign0, as quais neste caso são todas identidades.
[0195] onde as primeiras duas linhas são idênticas a A(t3).
[0196] Um codificador TrueHD preexistente (o qual não implementa a presente invenção) pode escolher transmitir as (inverso das) matrizes primitivas designadas acima em t1, t2, e t3, isto é,
[0197] {P0 (t1), P1 (t1), P2(t1)}, {P0 (t2), P1 (t2), P2 (t2)} {P0 (t3), P1 (t3), P2 (t3)}. Neste caso, a especificação em qualquer tempo t entre t1 e t2 é aproximada pela especificação em A)t1), e entre t2 e t3 e aproximada por (t2).
[0198] Na modalidade exemplar do sistema da Figura 6, a matriz primitiva P0-1(t) em t = t1, ou t = t2 ou t= t3 opera no mesmo canal (canal 2), isto é, a linha não trivial em todos os três casos é a segunda linha. Similar é o caso com P1-1(t) e P2-1(t). Ainda InvChAssign1 em cada um dos instantes de tempo é o mesmo.
[0199] Assim, para implementar a codificação pela modalidade exemplar do codificador 100 da Figura 6, podemos calcular as seguintes matrizes delta:
[0201] Em contraste com o codificador TrueHD preexistente, um codificador TrueHD habilitado em matriz interpolada (a modalidade exemplar codificador 100 da Figura 6) pode escolher enviar as matrizes (primitiva e delta) sementes
[0202] As matrizes primitivas e matrizes delta em qualquer instante de tempo intermediário são derivadas por interpolação. As equações de downmix obtidas em um dado tempo t entre t1 e t2 podem ser derivadas como as primeiras duas linhas do produto:
[0204] No acima as matrizes {P0 (t2), P1 (t2), P2(t2)} não são realmente transmitidas, mas são derivadas como as matrizes primitivas do último ponto de interpolação com as matrizes delta {Δ0 (t1), Δ1 (t1), Δ2 (t1)}.
[0205] Assim conhecidas as equações de downmix obtidas em cada instante "t" para ambos os cenários acima. Pode-se assim calcular o descasamento entre a aproximação em um dado tempo "t" e a especificação verdadeira para aquele instante de tempo. A Figura 7 é um gráfico da soma de erros quadrados entre a especificação conseguida e a especificação verdadeira em diferentes instantes de tempo t, utilizando interpolação de matrizes primitivas (a curva identificada "Matrizes Interpoladas") e com matrizes primitivas de constante no sentido de peça (não interpolada) (a curva identificada "Matrizes Não Interpoladas"). É aparente da Figura 7 que as matrizes interpoladas resultam em conseguir a especificação A2(t) significativamente mais proximamente comparada com as matrizes interpoladas na região 0-600s (t1 - t2). Para conseguir o mesmo nível de distorção com matriz não interpolada precisaria enviar atualizações de matriz em múltiplos pontos entre t1 e t2.
[0206] As matrizes não interpoladas podem resultar em um downmix conseguido que está mais próximo da especificação verdadeira em alguns instantes de tempo intermediários (por exemplo, entre 600s - 900s no exemplo da Figura 7), mas o erro em matrizes não interpoladas continuamente acumula com o tempo decrescente até a próxima atualização de matriz, enquanto que o erro com matrizes interpoladas diminui próximo dos tempos de atualização (neste caso em t3 = 30*T = 1200s). O erro na matriz interpolada poderia ser adicionalmente reduzido enviando ainda outra atualização delta entre t2 e t3.
[0207] Várias modalidades da invenção implementam uma ou mais das seguintes características:
[0208] 1. transformação de um conjunto de canais de áudio para um número igual de outros canais de áudio aplicando uma sequência de matrizes primitivas (de preferência, matrizes primitivas unitárias) onde algumas das pelo menos algumas das matrizes primitivas é uma matriz primitiva interpolada calculada como uma combinação linear (determinada de acordo com uma função de interpolação) de uma matriz primitiva de semente e uma matriz delta de semente que operam no mesmo áudio canal. O coeficiente de combinação linear é determinado pela função de interpolação (isto é, cada coeficiente de uma matriz primitiva interpolada é uma combinação linear A + f(t)B, onde A é um coeficiente da matriz primitiva de semente, B é um coeficiente correspondente da matriz delta de semente, e f(t) é o valor da função de interpolação no tempo, t, associado com a matriz primitiva interpolada). Em alguns casos, a transformação é executada em um conteúdo de áudio codificado de um fluxo de bits codificado para implementar uma recuperação sem perda de conteúdo de áudio o qual foi codificado para gerar o fluxo de bits codificado;
[0209] 2. uma transformação de acordo com a característica 1 acima, na qual a aplicação de uma matriz primitiva interpolada é conseguida aplicando a matriz primitiva de semente e matriz delta de semente separadamente nos canais de áudio a serem transformados e linearmente combinando as amostras de áudio resultantes (por exemplo, as multiplicações de matriz pela matriz primitiva de semente são executadas em paralelo com as multiplicações de matriz pela matriz delta de semente, como no circuito da Figura 4.
[0210] 3. uma transformação de acordo com a característica 1 acima, na qual o fator de interpolação é mantido substancialmente constante sobre alguns intervalos (por exemplo, curtos intervalos) de amostras de um fluxo de bits codificado, e a matriz primitiva de sementeis mais recente é atualizada (por interpolação) somente durante os intervalos nos quais o fator de interpolação muda (por exemplo, de modo a reduzir a complexidade de processamento em um decodificador);
[0211] 4. uma transformação de acordo com a característica 1 acima, na qual as matrizes primitivas interpoladas são matrizes primitivas unitárias. Neste caso, a multiplicação por uma cascata de matrizes primitivas unitárias (em um codificador) seguida pela multiplicação (em um decodificador) por uma cascata de seus inversos podem ser implementadas sem perda com processamento de precisão finita;
[0212] 5. uma transformação de acordo com a característica 1 acima, em que a transformada é executada em um decodificador de áudio o qual extrai canais de áudio codificados e matrizes de semente de um fluxo de bits codificado, em que o decodificador é de preferência configurado para verificar se o áudio decodificado (pós-matriz) foi corretamente determinado comparando uma palavra de verificação derivada do áudio pós-matriz contra uma palavra de verificação extraída do fluxo de bits codificado;
[0213] 6. uma transformação de acordo com a característica 1 acima, em que a transformada é executada em decodificador de um sistema de codificação de áudio sem perda áudio o qual extrai os canais de áudio codificados e matrizes de semente de um fluxo de bits codificado, e os canais de áudio codificados foram gerados por um codificador correspondente que aplica as matrizes primitivas inversas sem perda no áudio de entrada, por meio disto codificando o áudio de entrada sem perda no fluxo de bits;
[0214] 7. uma transformação de acordo com a característica 1 acima, em que a transformada é executada em um decodificador o qual multiplica os canais codificados recebidos por uma cascata de matrizes primitivas, e somente um subconjunto das matrizes primitivas é determinado por interpolação (isto é, versões atualizadas das outras matrizes primitivas podem ser fornecidas para o decodificador de tempos em tempos, mas o decodificador não executa interpolação para atualizá-las);
[0215] 8. uma transformação de acordo com a característica 1 acima, em que as matrizes primitivas de semente, as matrizes delta de semente, e a função de interpolação são escolhidas de modo que um subconjunto dos canais codificados criados pelo codificador pode ser transferido através de operações de matriz executadas (utilizando as matrizes e a função de interpolação) por um decodificador para conseguir downmixes específicos do áudio original codificado pelo codificador;
[0216] 9. uma transformação de acordo com a característica 8 acima, onde o áudio original é uma representação de áudio baseada em objeto, e os downmixes específicos correspondem à renderização de canais da representação para layouts de alto-falante estático (por exemplo, estéreo, ou canal 5.1, ou canal 7.1);
[0217] 10. uma transformação de acordo com a característica 9 acima, onde os objetos de áudio indicados pela representação são dinâmicos de modo que as especificações de downmix para um layout de alto-falante estático específico mudam instantaneamente, com a mudança instantânea acomodada executando uma matriz interpolada sobre os canais de áudio codificados para criar uma apresentação de downmix;
[0218] 11. uma transformação de acordo com a característica 1 acima, em que o decodificador habilitado em interpolação (configurado para executar uma interpolação de acordo com uma modalidade da invenção) é também capaz de decodificar subfluxos de um fluxo de bits codificado em conformidade com uma sintaxe preexistente que sem executar uma interpolação para determinar qualquer matriz interpolada;
[0219] 12. uma transformação de acordo com a característica 1 acima, onde as matrizes primitivas são projetadas para explorar a correlação intercanal para conseguir uma melhor compressão; e
[0220] 13. uma transformação de acordo com a característica 1 acima, em que a matriz interpolada é utilizada para conseguir especificações de downmix dinâmico projetadas para proteção de clipe.
[0221] Dado que as matrizes de downmix geradas utilizando interpolação de acordo com uma modalidade da invenção (para recuperar apresentações de downmix de um fluxo de bits codificado) tipicamente continuamente mudam quando o áudio de fonte é uma representação de áudio baseada em objeto, as matrizes primitivas de semente empregadas (isto é, incluídas no fluxo de bits codificado) em modalidades típicas da invenção tipicamente precisam ser atualizadas frequentemente para recuperar tais apresentações de downmix.
[0222] Se as matrizes primitivas de semente forem atualizadas frequentemente, de modo a proximamente aproximar a uma matriz especificação que varia continuamente, o fluxo de bits codificado tipicamente inclui dados indicativo de uma sequência de cascatas de conjuntos de matrizes primitiva de semente, {P0 (t1), P1 (t1), ..., Pn(t1)}, {P0 (t2), P1 (t2), ..., Pn (t2)}, {P0 (t3), P1 (t3), ..., Pn (t3)} e assim por diante. Isto permite um decodificador as matrizes de cascata especificadas de cada um dos instantes de tempo de atualização t1, t2, t3, Como asmatrizes de renderização especificadas nos sistemas para renderizar representações de áudio baseadas em objeto tipicamente variam continuamente no tempo, cada matriz primitiva de semente (em uma sequência de cascatas de matrizes primitivas de semente incluídas no fluxo de bits codificado) pode ter a mesma configuração de matriz primitiva (pelo menos sobre um intervalo da representação). Os coeficientes nas matrizes primitivas podem estes próprios mudar com o tempo mas a configuração de matriz não muda (ou não muda tão frequentemente como fazem os coeficientes). A configuração de matriz para cada cascata pode ser determinada por tais parâmetros como
[0223] 1. o número de matrizes primitivas na cascata,
[0224] 2. a ordem de canais que estas manipulam,
[0225] 3. a ordem de magnitude de coeficientes nestas,
[0226] 4. a resolução (em bits) requerida para representar os coeficientes, e
[0227] 5. e as posições dos coeficientes que são identicamente zero.
[0228] Os parâmetros os quais indicam tal configuração de matriz primitiva podem permanecer inalterados durante o intervalo de muitas atualizações de matriz de semente. Um ou mais de tais parâmetros podem precisar ser transmitido através do fluxo de bits codificado para o decodificador para que o decodificador opere como desejado. Como tais parâmetros de configuração podem não mudar tão frequentemente quanto as próprias atualizações de matriz primitiva, em algumas modalidades a sintaxe de fluxo de bits codificado independentemente especifica se os parâmetros de configuração de matriz são transmitidos juntamente com uma atualização dos coeficientes de matriz de um conjunto de matrizes de semente. Em contraste em atualização de matriz de codificação TrueHD convencional (indicadas por um fluxo de bits codificado) são necessariamente acompanhadas por atualizações de configuração. Em modalidades contempladas da invenção, o decodificador retém e utiliza as últimas informações de configuração de matriz recebidas se uma atualização for recebida somente para coeficientes de matriz (isto é, sem uma atualização de configuração matriz).
[0229] Apesar de ser previsto que a matriz interpolada tipicamente permitirá uma baixa taxa de atualização de matriz de semente, as modalidades contempladas (nas quais uma atualização de configuração de matriz pode ou não acompanhar cada atualização de matriz de semente) são esperadas eficientemente transmitir as informações de configuração e ainda reduzir a taxa de bits requerida para atualizar matrizes de renderização. Nas modalidades contempladas, os parâmetros de configuração podem incluir parâmetros relevantes para cada matriz primitiva de semente, e/ou parâmetros relevantes para matrizes delta transmitidas.
[0230] De modo a minimizar a taxa de bits transmitida total, o codificador pode implementar uma permuta entre atualizar a configuração de matriz e dispender alguns bits a mais em atualizações de coeficiente de matriz enquanto mantendo a configuração de matriz inalterada.
[0231] A matriz interpolada pode ser conseguida transmitindo informações de rampa para atravessar de uma matriz primitiva para um canal codificado para outra que opera no mesmo canal. A rampa pode ser transmitida como a taxa de mudança de coeficientes de matriz por unidade de acesso ("AU"). Se m1 e m2 forem coeficientes de matriz primitiva para tempos os quais são K unidade de acesso afastada, então a rampa para interpolar de m1 para m2 pode ser definida como delta = (m2 - m1)/K.
[0232] Se os coeficientes m1 e m2 compreendem bits que têm o seguinte formato: m1 = a.bcdefg e m2 = a.bcuvwx, onde ambos os coeficientes são especificados com um número específico (o qual pode ser denotado como "frac_bits") de bits de precisão, então a rampa "delta" seria indicada por um valor da forma 0,0000mnop (com uma precisão mais alta e extra zeros dianteiros requeridos devido à especificação de deltas em uma base por AU). A precisão adicional requerida para representar a rampa "delta" pode ser definida como "delta_precision". Se uma modalidade da invenção incluir uma etapa de incluir cada valor delta diretamente em um fluxo de bits codificado, o fluxo de bits codificado precisaria incluir valores que têm um número de bits, "B," o qual satisfaz a expressão: B = frac_bits + delta_precision. Claramente é ineficiente transmitir os zeros dianteiros após o local decimal. Assim, em algumas modalidades, o que é codificado no fluxo de bits codificado (o qual é fornecido para o decodificador) é um delta normalizado (um número inteiro) que tem a forma: mnopqr, a qual está representada com delta_bits mais um bit de sinal. Os valores delta_bits e delta_precision podem ser transmitidos no fluxo de bits codificado como parte das informações de configuração para as matrizes delta. Em tais modalidades, o decodificador está configurado para derivar o delta requerido neste caso como delta = (delta normalizado no fluxo de bits)*- (frac bits + delta_precision) .
[0233] Assim, em algumas modalidades, os valores de interpolação incluídos no fluxo de bits codificado incluem valores delta normalizados que têm Y bits de precisão (onde Y = frac_bits), e valores de precisão. Os valores delta normalizados são indicativos de versões normalizadas de valores delta, onde os valores delta são indicativos de taxas de mudança de coeficientes das matrizes primitivas, cada um dos coeficientes das matrizes primitivas tem Y bits de precisão, e os valores de precisão são indicativos do aumento em precisão (isto é, "delta_precision") requerida para representar os valores delta relativos à precisão requerida para representar os coeficientes das matrizes primitivas. Os valores delta podem ser derivados escalando os valores delta normalizados por um fator de escala que é dependente da resolução dos coeficientes das matrizes primitivas e dos valores de precisão.
[0234] As modalidades da invenção podem ser implementadas em hardware, firmware, ou software, ou uma sua combinação (por exemplo, como uma rede lógica programável). Por exemplo, o codificador 40 ou 100, ou o decodificador 42 ou 102, ou subsistemas 47, 48, 60, e 61 do decodificador 42, ou subsistemas 110-113 e 106-109 do decodificador 102, podem ser implementados em hardware ou firmware apropriadamente programado (ou de outro modo configurado), por exemplo, como um processador de uso geral programado, um processador de sinal digital, ou um microprocessador. A menos que de outro modo especificado, os algoritmos ou processos incluídos como parte da invenção não estão inerentemente relacionados a qualquer computador específico ou outro aparelho. Especificamente, várias máquinas de uso geral podem ser utilizadas com representações escrito de acordo com os ensinamentos aqui, ou pode ser mais conveniente construir um aparelho mais especializado (por exemplo, circuitos integrado) para executar as etapas de método requeridas. Assim, a invenção implementada em um ou mais conjunto de instruções de computador que executam em um ou mais sistemas de computador programáveis (por exemplo, um sistema de computador o qual implementa o codificador 40 ou 100, ou o decodificador 42 ou 102, ou o subsistema 47, 48, 60, e/ou 61 do decodificador 42, ou subsistemas 110-113 e 106-109 do decodificador 102), cada um compreendendo pelo menos um processador, pelo menos um sistema de armazenamento de dados (que inclui memória e/ou elementos de armazenamento voláteis e não voláteis), pelo menos um dispositivo ou porta de entrada, e pelo menos um dispositivo ou porta de saída. O conjunto de instruções é aplicado a dados de entrada para executar as funções aqui descritas e gerar informações de saída. As informações de saída são aplicadas a um ou mais dispositivos de saída, em um modo conhecido.
[0235] Cada tal conjunto de instruções pode ser implementado em qualquer linguagem de computador desejada (incluindo máquina, conjunto ou linguagens de programação procedurais de alto nível, lógica, ou orientada em objeto) para comunicar com um sistema de computador. Em qualquer caso, a linguagem pode ser uma linguagem compilada ou interpretada.
[0236] Por exemplo, quando implementadas por sequências de instruções de software de computador, várias funções e etapas das modalidades da invenção podem ser implementadas por sequências de instruções de software multiencadeadas que executam em um hardware de processamento de sinal digital adequado, em cujo caso os vários dispositivos, etapas, e funções das modalidades podem corresponder a porções das instruções de software.
[0237] Cada tal conjunto de instruções de computador está de preferência armazenado ou baixado para um meio ou dispositivo de armazenamento (por exemplo, memória ou meio de estado sólido, ou meio magnético ou ótico) legível por um computador programável de uso geral ou especial, para configurar e operar o computado quando o meio ou dispositivo de armazenamento é lido pelo sistema de computador para executar os procedimentos aqui descritos. O sistema inventivo pode também ser implementado como um meio de armazenamento legível por computador, configurado com (isto é, armazenando) um conjunto de instruções de computador, onde o meio de armazenamento assim configurado faz com que um sistema de computador opere em um modo específico e predefinido para executar as funções aqui descritas.
[0238] Apesar de implementações terem sido descritas por meio de exemplo e em termos de modalidades específicas exemplares, deve ser compreendido que as implementações da invenção não estão limitadas às modalidades descritas. Ao contrário é pretendido cobrir várias modificações e disposições similares como seria aparente para aqueles versados na técnica. Portanto, o escopo das concretizações anexas deve ser conferido a interpretação mais ampla de modo a abranger todas tais modificações e disposições similares.
Claims (15)
1. Método para codificar uma representação de áudio de N canais, caracterizado pelo fato de que a representação é especificada sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, onde M é menor do que ou igual a N, o método incluindo as etapas de: determinar uma primeira cascata de matrizes primitivas NxN que, quando aplicada a amostras dos N canais de sinal codificados, implementa uma primeira mistura de conteúdo de áudio dos N canais de sinal codificados aos M canais de saída, em que a primeira mistura é consistente com a mistura variável no tempo, A(t), no sentido que a primeira mistura é pelo menos igual a A(t1), e em que uma matriz primitiva NxN é definida como uma matriz na qual N-1 linhas contêm elementos fora da diagonal iguais a zero e elementos na diagonal com um valor absoluto de 1; determinar valores de interpolação que, com a primeira cascata de matrizes primitivas e uma função de interpolação definida sobre o subintervalo, são indicativos de uma sequência de cascatas de matrizes primitivas atualizadas NxN, de modo que cada uma das cascatas de matrizes primitivas atualizadas, quando aplicada a amostras dos N canais de sinal codificados, implementa uma mistura atualizada, associada com um diferente tempo no subintervalo, dos N canais de sinal codificados aos M canais de saída, em que cada mistura atualizada é consistente com a mistura variável no tempo, A(t); e gerar um fluxo de bits codificado que é indicativo de conteúdo de áudio codificado, os valores de interpolação, e a primeira cascata de matrizes primitivas.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que cada uma das matrizes primitivas é uma matriz primitiva unitária, o método ainda incluindo: uma etapa de gerar o conteúdo de áudio codificado ao executar operações de matriz em amostras dos N canais da representação, incluindo ao aplicar uma sequência de cascatas de matriz às amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e a sequência de cascatas de matriz inclui uma primeira cascata de matriz inversa que é uma cascata de inversas das matrizes primitivas da primeira cascata; ou uma etapa de gerar o conteúdo de áudio codificado ao executar operações de matriz em amostras dos N canais da representação, incluindo ao aplicar uma sequência de cascatas de matriz às amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e cada cascata de matriz na sequência é a inversa de uma cascata correspondente das cascatas de matrizes primitivas atualizadas NxN, e N = M, de modo que os M canais de saída são os mesmos que os N canais da representação recuperados sem perda.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira cascata de matrizes primitivas implementa uma matriz primitiva de semente, e os valores de interpolação são indicativos de uma matriz delta de semente para a matriz primitiva de semente.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que um downmix variável no tempo, A2(t), de conteúdo de áudio ou conteúdo codificado da representação para M1 canais de alto- falante também foi especificado sobre o intervalo de tempo, onde M1 é um número inteiro menor do que M, e o método também inclui uma etapa de: determinar uma segunda cascata de matrizes primitivas M1xM1 que, quando aplicada a amostras de M1 canais do conteúdo de áudio codificado em cada instante de tempo t no intervalo implementa um downmix da representação de áudio de N canais aos M1 canais de alto-falante, em que o downmix é consistente com a mistura variável no tempo, A2(t).
5. Método para recuperação de M canais de uma representação de áudio de N canais, caracterizado pelo fato de que a representação é especificada sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, o método incluindo etapas de: obter um fluxo de bits codificado que é indicativo de conteúdo de áudio codificado, valores de interpolação, e uma primeira cascata de matrizes primitivas NxN, em que uma matriz primitiva NxN é definida como uma matriz na qual N-1 linhas contêm elementos fora da diagonal iguais a zero e elementos na diagonal com um valor absoluto de 1; e executar interpolação para determinar uma sequência de cascatas de matrizes primitivas atualizadas NxN, dos valores de interpolação, a primeira cascata de matrizes primitivas, e uma função de interpolação sobre o subintervalo, em que a primeira cascata de matrizes primitivas NxN, quando aplicada a amostras de N canais de sinal codificados do conteúdo de áudio codificado, implementa uma primeira mistura de conteúdo de áudio dos N canais de sinal codificados aos M canais de saída, em que a primeira mistura é consistente com a mistura variável no tempo, A(t), no sentido que a primeira mistura é pelo menos igual a A(t1), e os valores de interpolação, com a primeira cascata de matrizes primitivas, e a função de interpolação, são indicativas de uma sequência de cascatas de matrizes primitivas atualizadas NxN, de modo que cada uma das cascatas de matrizes primitivas atualizadas, quando aplicada a amostras dos N canais de sinal codificados do conteúdo de áudio codificado, implementa uma mistura atualizada, associada com um diferente tempo no subintervalo, dos N canais de sinal codificados aos M canais de saída, em que cada mistura atualizada é consistente com a mistura variável no tempo, A(t).
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que cada uma das matrizes primitivas é uma matriz primitiva unitária.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que: o conteúdo de áudio codificado foi gerado ao executar operações de matriz em amostras dos N canais da representação, incluindo ao aplicar uma sequência de cascatas de matriz às amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e a sequência de cascatas de matriz inclui uma primeira cascata de matriz inversa que é uma cascata de inversas das matrizes primitivas da primeira cascata; ou o conteúdo de áudio codificado foi gerado ao executar operações de matriz em amostras dos N canais da representação, incluindo ao aplicar uma sequência de cascatas de matriz às amostras, em que cada cascata de matriz na sequência é uma cascata de matrizes primitivas, e cada cascata de matriz na sequência é a inversa de uma cascata correspondente das cascatas de matrizes primitivas atualizadas NxN, e N = M, de modo que os M canais de saída são os mesmos que os N canais da representação recuperados sem perda.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que um downmix variável no tempo, A2(t), de conteúdo de áudio ou conteúdo codificado da representação para M1 canais de alto- falante também foi especificado sobre o intervalo de tempo, onde M1 é um número inteiro menor do que N, e o método também inclui etapas de: receber uma segunda cascata de matrizes primitivas M1xM1; e aplicar a segunda cascata de matrizes primitivas M1xM1 a amostras de M1 canais do conteúdo de áudio codificado em cada instante de tempo t no intervalo para implementar um downmix da representação de áudio de N canais aos M1 canais de alto-falante, em que o downmix é consistente com a mistura variável no tempo, A2(t).
9. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que: o fluxo de bits codificado é também indicativo da função de interpolação; ou a primeira cascata de matrizes primitivas implementa uma matriz primitiva de semente, e os valores de interpolação são indicativos de uma matriz delta de semente para a matriz primitiva de semente.
10. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que também inclui uma etapa de: aplicar pelo menos uma das cascatas de matrizes primitivas atualizadas NxN a amostras do conteúdo de áudio codificado, incluindo ao aplicar uma matriz primitiva de semente e uma matriz delta de semente separadamente às amostras do conteúdo de áudio codificado para gerar amostras transformadas, e linearmente combinar as amostras transformadas de acordo com a função de interpolação, deste modo gerando amostras recuperadas indicativas de amostras dos M canais da representação de áudio de N canais.
11. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que: a função de interpolação é constante sobre alguns intervalos do fluxo de bits codificado, e cada uma mais recentemente atualizada das cascatas de matrizes primitivas atualizadas NxN é atualizada ao interpolar somente durante um intervalo do fluxo de bits codificado no qual a função de interpolação não é constante; ou em que os valores de interpolação incluem valores delta normalizados representáveis com Y bits, uma indicação deste número de bits de precisão, e valores de precisão, onde os valores delta normalizados são indicativos de versões normalizadas de valores delta, os valores delta são indicativos de taxas de mudança de coeficientes das matrizes primitivas, e os valores de precisão indicativos de um aumento em precisão requerida para representar os valores delta em relação à precisão requerida para representar os coeficientes das matrizes primitivas.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que os valores delta são derivados ao escalar os valores delta normalizados por um fator de escala que é dependente da resolução dos coeficientes das matrizes primitivas e os valores de precisão.
13. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que também inclui etapas de: extrair uma palavra de verificação do fluxo de bits codificado, e verificar se canais de um segmento da representação de áudio foram corretamente recuperados, ao comparar uma segunda palavra de verificação derivada de amostras de áudio geradas pelo subsistema multiplicação de matriz contra a palavra de verificação extraída do fluxo de bits codificado.
14. Codificador (100) de áudio configurado para codificar uma representação de áudio de N canais, caracterizado pelo fato de que a representação é especificada sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, onde M é menor do que ou igual a N, e em que o codificador é configurado para executar o método como definido em qualquer uma das reivindicações 1 a 4.
15. Decodificador (102) configurado para implementar recuperação de uma representação de áudio de N canais, caracterizado pelo fato de que a representação é especificada sobre um intervalo de tempo, o intervalo de tempo inclui um subintervalo de um tempo t1 até um tempo t2, e uma mistura variável no tempo, A(t), de N canais de sinal codificados para M canais de saída foi especificada sobre o intervalo de tempo, e em que o decodificador é configurado para executar o método como definido em qualquer uma das reivindicações 5 a 13.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361883890P | 2013-09-27 | 2013-09-27 | |
US61/883,890 | 2013-09-27 | ||
PCT/US2014/057611 WO2015048387A1 (en) | 2013-09-27 | 2014-09-26 | Rendering of multichannel audio using interpolated matrices |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112016005982A2 BR112016005982A2 (pt) | 2017-08-01 |
BR112016005982B1 true BR112016005982B1 (pt) | 2022-08-09 |
Family
ID=51660691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112016005982-4A BR112016005982B1 (pt) | 2013-09-27 | 2014-09-26 | Método para codificar uma representação de áudio de n canais, método para recuperação de m canais de uma representação de áudio de n canais, codificador de áudio e decodificador |
Country Status (21)
Country | Link |
---|---|
US (1) | US9826327B2 (pt) |
EP (1) | EP3050055B1 (pt) |
JP (1) | JP6388924B2 (pt) |
KR (1) | KR101794464B1 (pt) |
CN (1) | CN105659319B (pt) |
AU (1) | AU2014324853B2 (pt) |
BR (1) | BR112016005982B1 (pt) |
CA (1) | CA2923754C (pt) |
DK (1) | DK3050055T3 (pt) |
ES (1) | ES2645432T3 (pt) |
HU (1) | HUE037042T2 (pt) |
IL (1) | IL244325B (pt) |
MX (1) | MX352095B (pt) |
MY (1) | MY190204A (pt) |
NO (1) | NO3029329T3 (pt) |
PL (1) | PL3050055T3 (pt) |
RU (1) | RU2636667C2 (pt) |
SG (1) | SG11201601659PA (pt) |
TW (1) | TWI557724B (pt) |
UA (1) | UA113482C2 (pt) |
WO (1) | WO2015048387A1 (pt) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10068577B2 (en) | 2014-04-25 | 2018-09-04 | Dolby Laboratories Licensing Corporation | Audio segmentation based on spatial metadata |
EP3134897B1 (en) | 2014-04-25 | 2020-05-20 | Dolby Laboratories Licensing Corporation | Matrix decomposition for rendering adaptive audio using high definition audio codecs |
US10176813B2 (en) * | 2015-04-17 | 2019-01-08 | Dolby Laboratories Licensing Corporation | Audio encoding and rendering with discontinuity compensation |
ES2904275T3 (es) * | 2015-09-25 | 2022-04-04 | Voiceage Corp | Método y sistema de decodificación de los canales izquierdo y derecho de una señal sonora estéreo |
CN113242508B (zh) | 2017-03-06 | 2022-12-06 | 杜比国际公司 | 基于音频数据流渲染音频输出的方法、解码器系统和介质 |
CN110771181B (zh) | 2017-05-15 | 2021-09-28 | 杜比实验室特许公司 | 用于将空间音频格式转换为扬声器信号的方法、系统和设备 |
EP3442124B1 (de) * | 2017-08-07 | 2020-02-05 | Siemens Aktiengesellschaft | Verfahren zum schützen der daten in einem datenspeicher vor einer unerkannten veränderung und datenverarbeitungsanlage |
GB201808897D0 (en) * | 2018-05-31 | 2018-07-18 | Nokia Technologies Oy | Spatial audio parameters |
BR112021022540A2 (pt) * | 2019-05-10 | 2021-12-28 | Fraunhofer Ges Forschung | Aparelho para previsão com base em bloco e para codificação e decodificação de figura, seu método e fluxo contínuo de dados |
EP3987825B1 (en) * | 2019-06-20 | 2024-07-24 | Dolby Laboratories Licensing Corporation | Rendering of an m-channel input on s speakers (s<m) |
US12062378B2 (en) * | 2020-01-09 | 2024-08-13 | Panasonic Intellectual Property Corporation Of America | Encoding device, decoding device, encoding method, and decoding method |
US12020028B2 (en) * | 2020-12-26 | 2024-06-25 | Intel Corporation | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7123652B1 (en) | 1999-02-24 | 2006-10-17 | Thomson Licensing S.A. | Sampled data digital filtering system |
EP1173925B1 (en) * | 1999-04-07 | 2003-12-03 | Dolby Laboratories Licensing Corporation | Matrixing for lossless encoding and decoding of multichannels audio signals |
JP4218134B2 (ja) * | 1999-06-17 | 2009-02-04 | ソニー株式会社 | 復号装置及び方法、並びにプログラム提供媒体 |
CA2808226C (en) * | 2004-03-01 | 2016-07-19 | Dolby Laboratories Licensing Corporation | Multichannel audio coding |
ATE527654T1 (de) | 2004-03-01 | 2011-10-15 | Dolby Lab Licensing Corp | Mehrkanal-audiodecodierung |
WO2006062993A2 (en) | 2004-12-09 | 2006-06-15 | Massachusetts Institute Of Technology | Lossy data compression exploiting distortion side information |
RU2393550C2 (ru) | 2005-06-30 | 2010-06-27 | ЭлДжи ЭЛЕКТРОНИКС ИНК. | Устройство и способ кодирования и декодирования звукового сигнала |
JP5053849B2 (ja) * | 2005-09-01 | 2012-10-24 | パナソニック株式会社 | マルチチャンネル音響信号処理装置およびマルチチャンネル音響信号処理方法 |
EP1903559A1 (en) | 2006-09-20 | 2008-03-26 | Deutsche Thomson-Brandt Gmbh | Method and device for transcoding audio signals |
DE602007013415D1 (de) * | 2006-10-16 | 2011-05-05 | Dolby Sweden Ab | Erweiterte codierung und parameterrepräsentation einer mehrkanaligen heruntergemischten objektcodierung |
US8107571B2 (en) | 2007-03-20 | 2012-01-31 | Microsoft Corporation | Parameterized filters and signaling techniques |
US8249883B2 (en) | 2007-10-26 | 2012-08-21 | Microsoft Corporation | Channel extension coding for multi-channel source |
US8705749B2 (en) * | 2008-08-14 | 2014-04-22 | Dolby Laboratories Licensing Corporation | Audio signal transformatting |
EP2214161A1 (en) * | 2009-01-28 | 2010-08-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus, method and computer program for upmixing a downmix audio signal |
WO2011013381A1 (ja) * | 2009-07-31 | 2011-02-03 | パナソニック株式会社 | 符号化装置および復号装置 |
TWI444989B (zh) * | 2010-01-22 | 2014-07-11 | Dolby Lab Licensing Corp | 針對改良多通道上混使用多通道解相關之技術 |
CN108989721B (zh) * | 2010-03-23 | 2021-04-16 | 杜比实验室特许公司 | 用于局域化感知音频的技术 |
RS1332U (en) | 2013-04-24 | 2013-08-30 | Tomislav Stanojević | FULL SOUND ENVIRONMENT SYSTEM WITH FLOOR SPEAKERS |
-
2014
- 2014-09-24 TW TW103133002A patent/TWI557724B/zh active
- 2014-09-26 BR BR112016005982-4A patent/BR112016005982B1/pt active IP Right Grant
- 2014-09-26 DK DK14781027.9T patent/DK3050055T3/da active
- 2014-09-26 HU HUE14781027A patent/HUE037042T2/hu unknown
- 2014-09-26 CA CA2923754A patent/CA2923754C/en active Active
- 2014-09-26 ES ES14781027.9T patent/ES2645432T3/es active Active
- 2014-09-26 CN CN201480053066.5A patent/CN105659319B/zh active Active
- 2014-09-26 RU RU2016110693A patent/RU2636667C2/ru active
- 2014-09-26 MY MYPI2016700878A patent/MY190204A/en unknown
- 2014-09-26 KR KR1020167007671A patent/KR101794464B1/ko active IP Right Grant
- 2014-09-26 MX MX2016003500A patent/MX352095B/es active IP Right Grant
- 2014-09-26 EP EP14781027.9A patent/EP3050055B1/en active Active
- 2014-09-26 US US15/024,925 patent/US9826327B2/en active Active
- 2014-09-26 JP JP2016516930A patent/JP6388924B2/ja active Active
- 2014-09-26 SG SG11201601659PA patent/SG11201601659PA/en unknown
- 2014-09-26 PL PL14781027T patent/PL3050055T3/pl unknown
- 2014-09-26 WO PCT/US2014/057611 patent/WO2015048387A1/en active Application Filing
- 2014-09-26 AU AU2014324853A patent/AU2014324853B2/en active Active
- 2014-09-26 UA UAA201602990A patent/UA113482C2/uk unknown
-
2015
- 2015-11-25 NO NO15196158A patent/NO3029329T3/no unknown
-
2016
- 2016-02-28 IL IL244325A patent/IL244325B/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
WO2015048387A1 (en) | 2015-04-02 |
CN105659319A (zh) | 2016-06-08 |
RU2636667C2 (ru) | 2017-11-27 |
EP3050055B1 (en) | 2017-09-13 |
AU2014324853A1 (en) | 2016-03-31 |
EP3050055A1 (en) | 2016-08-03 |
KR20160045881A (ko) | 2016-04-27 |
IL244325A0 (en) | 2016-04-21 |
TWI557724B (zh) | 2016-11-11 |
UA113482C2 (xx) | 2017-01-25 |
JP6388924B2 (ja) | 2018-09-12 |
DK3050055T3 (da) | 2017-11-13 |
US20160241981A1 (en) | 2016-08-18 |
JP2016536625A (ja) | 2016-11-24 |
IL244325B (en) | 2020-05-31 |
TW201528254A (zh) | 2015-07-16 |
KR101794464B1 (ko) | 2017-11-06 |
CN105659319B (zh) | 2020-01-03 |
AU2014324853B2 (en) | 2017-10-19 |
ES2645432T3 (es) | 2017-12-05 |
SG11201601659PA (en) | 2016-04-28 |
CA2923754C (en) | 2018-07-10 |
PL3050055T3 (pl) | 2018-01-31 |
NO3029329T3 (pt) | 2018-06-09 |
MX352095B (es) | 2017-11-08 |
MY190204A (en) | 2022-04-04 |
BR112016005982A2 (pt) | 2017-08-01 |
MX2016003500A (es) | 2016-07-06 |
HUE037042T2 (hu) | 2018-08-28 |
RU2016110693A (ru) | 2017-09-28 |
US9826327B2 (en) | 2017-11-21 |
CA2923754A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112016005982B1 (pt) | Método para codificar uma representação de áudio de n canais, método para recuperação de m canais de uma representação de áudio de n canais, codificador de áudio e decodificador | |
CN106463125B (zh) | 基于空间元数据的音频分割 | |
KR102122672B1 (ko) | 공간 벡터들의 양자화 | |
JP4832507B2 (ja) | コンパクトなコードブックを用いるエントロピー符号化 | |
KR102032072B1 (ko) | 객체-기반의 오디오로부터 hoa로의 컨버전 | |
CN110675882A (zh) | 用于对降混合矩阵解码及编码的方法、编码器及解码器 | |
CN111630593B (zh) | 用于译码声场表示信号的方法和装置 | |
EP3134897B1 (en) | Matrix decomposition for rendering adaptive audio using high definition audio codecs | |
CN108780647B (zh) | 用于音频信号译码的方法和设备 | |
TWI587286B (zh) | 音頻訊號之解碼和編碼的方法及系統、電腦程式產品、與電腦可讀取媒體 | |
US10176813B2 (en) | Audio encoding and rendering with discontinuity compensation | |
CN113168838A (zh) | 音频编码器及音频解码器 | |
BR112017006278B1 (pt) | Método para aprimorar o diálogo num decodificador em um sistema de áudio e decodificador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 patent gazette] | ||
B07A | Application suspended after technical examination (opinion) [chapter 7.1 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 26/09/2014, OBSERVADAS AS CONDICOES LEGAIS |