BR112014027685B1 - Codificador de áudio configurado para gerar dados de áudio codificados, método para codificar dados de áudio para gerar dados de áudio codificados, método e aparelho para processamento de uma sequência de bits codificada - Google Patents

Codificador de áudio configurado para gerar dados de áudio codificados, método para codificar dados de áudio para gerar dados de áudio codificados, método e aparelho para processamento de uma sequência de bits codificada Download PDF

Info

Publication number
BR112014027685B1
BR112014027685B1 BR112014027685-4A BR112014027685A BR112014027685B1 BR 112014027685 B1 BR112014027685 B1 BR 112014027685B1 BR 112014027685 A BR112014027685 A BR 112014027685A BR 112014027685 B1 BR112014027685 B1 BR 112014027685B1
Authority
BR
Brazil
Prior art keywords
filter
stage
biquad
memory
sample
Prior art date
Application number
BR112014027685-4A
Other languages
English (en)
Other versions
BR112014027685A2 (pt
Inventor
Khushbu P. Rathi
Original Assignee
Dolby Laboratories Licensing Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dolby Laboratories Licensing Corporation filed Critical Dolby Laboratories Licensing Corporation
Publication of BR112014027685A2 publication Critical patent/BR112014027685A2/pt
Publication of BR112014027685B1 publication Critical patent/BR112014027685B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/04Speech 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/26Pre-filtering or post-filtering
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/04Recursive filters
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/04Speech 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/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H2017/0072Theoretical filter design
    • H03H2017/009Theoretical filter design of IIR filters

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

filtro iir de múltiplos estágios e filtragem paralelizada de dados com o mesmo. em algumas modalidades, um filtro de múltiplos estágios cujos estágios de filtro biquad são combinados com latência entre os estágios, um sistema (por exemplo, um codificador ou decodificador de áudio) incluindo tal filtro, e métodos para filtragem biquad de múltiplos estágios. em modalidades típicas, todos os estágios de filtro biquad do filtro operam independentemente para realizar o processamento totalmente paralelizado de dados. em algumas modalidades, o filtro de múltiplos estágios inventivo inclui uma memória de armazenamento, pelo menos dois estágios de filtro biquad, e um controlador acoplado e configurado para determinar uma sequência única de instruções para os estágios de filtro. tipicamente, o filtro de múltiplos estágios é configurado para realizar a filtragem de múltiplos estágios de um bloco de amostras de entrada em um único circuito de processamento com interação através de um índice de amostra, mas sem interação através de um índice de estágio de filtro biquadrático.

Description

Antecedentes da Invenção Referência Cruzada a Pedidos Relacionados
[0001] Esse pedido reivindica prioridade do pedido de patente provisório U.S. No. 61/645.291, depositado em 10 de maio de 2012, que é incorporado aqui por referência em sua totalidade.
Campo da Invenção
[0002] A presente invenção pertence a filtros de múltiplos estágios compreendendo estágios de filtro biquadráticos, e à filtragem paralelizada de dados (por exemplo, dados de áudio) utilizando tais filtros. Algumas modalidades da invenção são métodos, sistemas e processadores para filtragem de dados de áudio (utilizando um filtro de múltiplos estágios compreendendo estágios de filtro biquadráticos) durante a codificação ou decodificação de dados de acordo com um dos formatos conhecidos como Dolby Digital (AC-3), Dolby Digital Plus (E- AC-3) e Dolby E, ou de acordo com outro formato de codificação. Dolby, Dolby Digital, Dolby Digital Plus e Dolby E são marcas registradas da Dolby Laboratories Licensing Corporation.
Antecedentes da Invenção
[0003] Por toda essa descrição, incluindo nas reivindicações, a expressão realizando uma operação "em" sinais ou dados (por exemplo, filtragem ou escalonamento de sinais ou dados) é utilizada em um sentido amplo para denotar a realização da operação diretamente em sinais ou dados, ou em versões processadas de sinais ou dados (por exemplo, em versões de sinais que sofreram filtragem preliminar ou outro processamento antes do desempenho da operação nos mesmos).
[0004] No processamento de sinal, um filtro biquadrático digital é um filtro linear recursivo de segunda ordem, contendo dois polos e dois zeros. A abreviação filtro "biquad" (ou "bi-quad") será utilizada aqui para denotar um filtro biquadrático digital. No domínio Z, a função de transferência de um filtro biquadrático é a razão de duas funções quadráticas:
Figure img0001
[0005] Filtros recursivos de alta ordem (filtros de resposta de impulso finito ou "IIR" de ordem superior a uma segunda ordem) podem ser altamente sensíveis à quantização de seus coeficientes, e podem facilmente se tornar instáveis. Filtros recursivos de primeira e segunda ordem também podem ter problemas de instabilidade desse tipo, mas os problemas de instabilidade são muito menos severos. Portanto, os filtros recursivos de alta ordem são tipicamente implementados como filtros em cascata serial compreendendo uma cascata serial de seções bi-quad (e, opcionalmente, também um filtro de primeira ordem). Tais filtros em cascata serial são algumas vezes referidos aqui como filtros biquad de múltiplos estágios, e compreendem uma sequência dê filtros bi-quad (algumas vezes referidos aqui como estágios bi-quad ou seções bi-quad).
[0006] Por exemplo, codificadores convencionais configurados para codificar dados de áudio de acordo com o formato AC-3 (Dolby Digital) bem conhecido, ou um dos formatos Dolby Digital Plus e Dolby E bem conhecidos, implementam um número de filtros biquad de múltiplos estágios. Por exemplo, um codificador Dolby Digital Plus emprega tipicamente um filtro biquad de dois estágios (isso é, um filtro incluindo dois filtros biquad em cascata) para implementar a filtragem de passa alta em um subsistema de detector transiente, um filtro biquad de quatro estágios (isso é, um filtro incluindo quatro filtros biquad em cascada) para implementar filtragem de passa baixa em um subsistema de efeito de frequência baixa ("LFE"), e um filtro biquad de três estágios para implementar a filtragem de passa baixa limitadora de largura de banda. Um codificador Dolby E emprega tipicamente um filtro biquad de dois estágios (isso é, um filtro incluindo dois filtros biquad em cascata) para implementar a filtragem de passa alta em um subsistema detector transiente, e um filtro biquad de quatro estágios (isso é, um filtro incluindo quatro filtros biquad em cascata) para implementar a filtragem de passa baixa em um subsistema de efeitos de baixa frequência ("LFE"). Um decodificador Dolby E emprega tipicamente um filtro biquad de três estágios (isso é, um filtro incluindo três filtros biquad em cascata) para implementar a filtragem de passa baixa em um subsistema de efeitos de baixa frequência ("LFE").
[0007] Por exemplo, a Figura 1 é um diagrama de um filtro biquad (de um tipo algumas vezes referido como Forma Direta II - Estrutura Transposta), incluindo elementos 1, 2, 3, 4, 5, b0, b1, b2, -a1 e -a2, conectados como ilustrado. Os elementos 1, 2 e 3 são elementos de adição, os elementos 4 e 5 são elementos de retardo, e cada um dos elementos de ganho b0, b1, -a1 e -a2 aplica um ganho correspondente dentes os ganhos b0, b1, b2, -a1 e -a2, ao sinal determinado para sua entrada. Apesar de não ilustrado ou descrito aqui, é bem sabido pelos versados na técnica que outras estruturas de filtro biquad equivalentes existem, por exemplo, Forma Direta I, Forma Direta I - Transposta, e Forma Direta II. Quaisquer estruturas de filtro biquad equivalentes estão dentro do escopo da invenção.
[0008] Como ilustrado na Figura 1A, se o filtro biquad da Figura 1 (rotulado como Biquad 1 na Figura 1A) estiver em cascata com um filtro biquad possuindo estrutura idêntica (rotulado como Biquad 2 na Figura 1A), mas cujos elementos de ganho podem aplicar ganhos diferentes aos do filtro da Figura 1, o filtro biquad de múltiplos estágios resultante é um exemplo de um filtro biquad de dois estágios que pode ser empregado (por exemplo, para implementar a filtragem de passa alta em um subsistema detector transiente de um codificador de áudio como mencionado acima). No filtro biquad de múltiplos estágios da Figura 1A, o sinal de saída, x1(n), do primeiro estágio é o sinal de entrada do segundo estágio.
[0009] Para filtros biquad de múltiplos estágios (e alguns filtros IIR de múltiplos estágios), um cálculo de amostra de saída em cada estágio no momento "n" (isso é, o sinal de saída do estágio y(n)) em resposta aos valores de um sinal de domínio de tempo x(n) (um sinal de entrada ou um sinal gerado em outro estágio do filtro de múltiplos estágios) no momento "n" e momentos anteriores, depende das saídas anteriores (isso é, as saídas y(n-1) e y(n-2), nos momentos n-1 e n-2). Além disso, para cada dois estágios consecutivos (filtros biquad) em um filtro biquad de múltiplos estágios, a saída de cada estágio anterior entra no estágio subsequente, de modo que a saída do estágio subsequente não possa ser determinada até depois de a saída do estágio anterior ter sido determinada. Essas são as razões principais pelas quais o processamento totalmente paralelizado não foi empregado (antes da presente invenção) para implementar um filtro biquad de múltiplos estágios.
[0010] Em muitas arquiteturas de processador de núcleo atuais (por exemplo, arquiteturas de processador de sinal digital) existem unidades SIMD (instrução única, múltiplos dados) e/ou múltiplas ALUs (unidades lógicas aritméticas) ou AMUs (unidades de manipulação aritmética) que podem ser utilizadas para paralelizar muitos algoritmos e aperfeiçoar o desempenho. No entanto, algoritmos convencionais para programar processadores para implementar filtros biquad de múltiplos estágios não utilizam as instruções SIMD e não são paralelizados.
[0011] Por exemplo, codificadores Dolby Digital Plus (que codificam dados de áudio de acordo com o formato Dolby Digital Plus) foram implementados como processadores neon ARM programados (cada um dos quais é um processador córtex ARM com um motor SIMD Neon permitindo o processamento paralelo) e como processadores de sinal digital C64 Texas Instruments programados. Muitos codificadores de dados de áudio (por exemplo, codificadores que codificam os dados de áudio de acordo com os formatos de codificação AC-3, Dolby Digital Plus, Dolby E e/ou outros formatos de codificação) foram ou podem ser implementados como processadores programados possuindo qualquer uma dentre uma variedade de arquiteturas, possuindo unidades SIMD (instrução única, múltiplos dados) e/ou múltiplas ALUs (unidades lógicas aritméticas) ou AMUs (unidades de manipulação aritmética). Tais processadores podem ser programados para implementar vários algoritmos (incluídos na codificação de dados de áudio) utilizando processamento paralelo. No entanto, a programação convencional que foi empregada para implementar filtros biquad de múltiplos estágios em tais processadores não implementou o processamento paralelo.
[0012] Modalidades típicas da presente invenção empregam o processamento paralelo para implementar um filtro biquad de múltiplos estágios. Algumas modalidades empregam o processamento paralelo para implementar um filtro biquad de múltiplos estágios de um tipo utilizado na codificação de dados de áudio de acordo com o formato AC- 3 (Dolby Digital), o formato Dolby Digital Plus, ou o formato Dolby E.
[0013] Apesar de a invenção não ser limitada ao uso na codificação de dados de áudio de acordo com o formato AC-3, Dolby Digital Plus ou Dolby E, algumas modalidades são métodos de codificação de áudio, sistemas, e processadores (por exemplo, para codificação de dados de áudio de acordo com o formato AC-3, Dolby Digital Plus ou Dolby E) empregando pelo menos um filtro biquad de múltiplos estágios implementando (ou projetado de acordo com) uma modalidade da invenção.
[0014] Uma sequência de bits codificada AC-3 compreende de um a seis canais de conteúdo de áudio, e metadados indicativos de pelo menos uma característica do conteúdo de áudio. O conteúdo de áudio são dados de áudio que foram comprimidos utilizando-se a codificação de áudio perceptual.
[0015] Detalhes de codificação AC-3 (também conhecida como Dolby Digital) são bem conhecidos e são apresentados em muitas referencias publicadas incluindo as seguintes: ATSC Standard A52/A: Digital Audio Compression Standard (AC-3), Revision A, Advanced Television Systems Committee, 20 de agosto de 2001; Flexible Perceptual coding for Audio Transmission and Storage," por Craig C. Todd, et al., 96th. Convention of the Audio Engineering Society, 26 de fevereiro de 1994, Preprint 3796; "Design and Implementation of AC-3 Coders," por Steve Vernon, IEEE Trans. Consumer Electronics, Vol. 41, No. 3, agosto de 1995; "Dolby Digital Audio Coding Standards," book chapter por Robert L. Andersen e Grant A. Davidson em The Digital Signal Processing Handbook, Segunda Edição, Vijay K. Madisetti, Editor Chefe, CRC Press, 2009; "High Quality, Low-Rate Audio Transform Coding for Transmission and Multimedia Applications," por Bosi et al., Audio Engineering Society Preprint 3365, 93rd AES Convention, outubro de 1992; e Patentes U.S. Nos. 5.583.962, 5.632.005; 5.633.981; 5.727.119 e 6.021.386.
[0016] Detalhes da codificação Dolby Digital (AC-3) e Dolby Digital Plus (algumas vezes referido como AC-3 Melhorado ou "E-AC-3") são apresentados em "Introduction to Dolby Digital Plus, an Enhancement to the Dolby Digital Coding System," Artigo da Convenção AES, 117th. AES Convention, 28 de outubro de 2004, e na Especificação Dolby Digital/ Dolby Digital Plus (ATSC A/52:2010), disponível em http://www.atsc.org/ cms/index.php/standards/published-standards.
Breve Descrição da Invenção
[0017] Em uma classe de modalidades, a invenção é um filtro de múltiplos estágios compreendendo pelo menos dois estágios (cada um dos quais é um filtro biquad), onde os estágios são combinados com latência entre os ditos estágios, de modo que todos os estágios sejam operáveis independentemente em resposta a uma única sequência comum de instruções, para realizar o processamento totalmente paralelizado de dados nesses ditos estágios. Tipicamente, o filtro de múltiplos estágios também inclui um controlador acoplado para determinar a sequência comum de instruções para todos os estágios, e uma memória de dados acoplada a todos os estágios, e todos os estágios operam em paralelo para filtrar um bloco de valores de dados de entrada em resposta à sequência comum de instruções, mas com cada um dos estágios operando em valores de dados diferentes, e com pelo menos um dos estágios operando em valores de dados que incluem valores armazenados, gerados por outros dos estágios em resposta a um subconjunto de valores de dados de entrada e armazenados com diferentes latências na memória antes de serem recuperados para processamento no dito um dos estágios. Dessa forma, o filtro de múltiplos estágios nessas modalidades possui um arquitetura SIMD (instrução simples, múltiplos dados) na qual os estágios de filtro biquad individuais operam independentemente e em paralelo em resposta à sequência única de instruções. Por exemplo, o filtro de múltiplos estágios pode incluir N estágios (onde N é um número maior que um) e um dos estágios (o estágio "M+1" na sequência) pode operar em valores de dados gerados por um estágio anterior (o estágio "M" na sequência) em momentos diferentes (por exemplo, em resposta a uma sequência de valores de dados de entrada diferentes do bloco), armazenado em uma memória de armazenamento temporário (em momentos diferentes) e lidos (pelo estágio "(M+1)") a partir da memória de armazenamento temporário depois de residir na memória de armazenamento temporário com momentos de latência diferentes.
[0018] Em algumas modalidades, a invenção é um filtro de múltiplos estágios, incluindo: uma memória de armazenamento temporário; pelo menos dois estágios de filtro biquad, incluindo um primeiro estágio de filtro biquad e um estágio de filtro biquad subsequente; e um controlador, acoplado aos estágios de filtro biquad e configurado para determinar uma sequência única de instruções para ambos o primeiro estágio de filtro biquad e o estágio de filtro biquad subsequente, onde o dito primeiro estágio de filtro biquad e o dito estágio de filtro biquad subsequente operam independentemente e em paralelo em resposta à sequência de instruções; em que o primeiro estágio de filtro biquad é acoplado à memória e configurado para realizar a filtragem biquadrática em um bloco de N amostras de entrada em resposta à sequência de instruções para gerar valores intermediários, e para determinar os valores intermediários para a memória (para armazenamento na dita memória), onde os valores intermediários incluem uma versão filtrada de cada um de pelo menos um subconjunto de amostras de entrada; e em que o estágio de filtro biquad subsequente é acoplado à memória e configurado para realizar a filtragem biquadrática nos valores armazenados recuperados da memória em resposta à sequência de instruções para gerar um bloco de valores de saída, onde os valores de saída incluem um valor de saída correspondendo a cada uma das amostras de entrada no bloco de N amostras de entrada, e os valores armazenados incluem pelo menos alguns dos valores intermediários gerados no primeiro estágio de filtro biquad em resposta ao bloco de N amostras de entrada.
[0019] Em modalidades típicas, o filtro de múltiplos estágios é configurado para realizar a filtragem de múltiplos estágios do bloco de N amostras de entrada em um único circuito de processamento com interação através de um índice de amostra, mas sem interação através de um índice de estágio de filtro biquadrático.
[0020] Em algumas modalidades do filtro de múltiplos estágios inventivo onde o filtro de múltiplos estágios possui M estágios, o estágio de filtro biquad subsequente é configurado para gerar um valor de saída correspondendo a uma amostra de entrada "j" em resposta a um subconjunto de valores armazenados recuperados da memória, onde j é um índice na faixa de M-1 a N-1, o dito subconjunto incluindo a versão filtrada da amostra de entrada j, a versão filtrada da amostra de entrada "j-1", e a versão filtrada da amostra de entrada "j-2".
[0021] Em algumas modalidades do filtro de múltiplos estágios inventivo, o estágio de filtro biquad subsequente é configurado para gerar um valor de saída correspondendo a cada uma das amostras de entrada em resposta a um subconjunto diferente dos valores armazenados recuperados da memória, cada dito subconjunto incluindo pelo menos três dos valores intermediários gerados no primeiro estágio de filtro biquad e recuperado a partir da memória depois de residir na dita memória por tempos de latência diferentes. Por exemplo, em uma modalidade típica na qual o filtro de múltiplos estágios possui M estágios de filtro biquad, o subconjunto de valores armazenados recuperados para gerar o valor de saída correspondente a uma amostra de entrada j, onde j é um índice na faixa de M-1 a N-1, inclui pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j", pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j-1", e pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j-2".
[0022] Em outra classe de modalidades, a invenção é um método para realizar a filtragem de múltiplos estágios em um bloco de N amostras de entrada, o dito método incluindo as etapas de: (a) realizar uma primeira operação de filtragem biquadrática no bloco de N amostras de entrada para gerar valores intermediários e determinar os valores intermediários para uma memória de armazenador (para armazenamento na dita memória) onde os valores intermediários incluem uma versão filtrada de cada uma do pelo menos um subconjunto de amostra de entrada; e (b) realizar uma segunda operação de filtragem biquadrática nos valores armazenados recuperados a partir da memória, para gerar um bloco de valores de saída, onde os valores de saída incluem um valor de saída correspondendo a cada uma das amostras de entrada no bloco de N amostras de entrada, um subconjunto diferente de valores armazenados é recuperado e filtrado para gerar o valor de saída correspondente a cada uma das amostras de entrada no bloco, e cada dito subconjunto de valores armazenados inclui pelo menos dois (por exemplo, três) dos valores intermediários gerados durante o desempenho da etapa (a) que são recuperados a partir da memória depois de residir na dita memória por tempos de latência diferentes; em que as etapas (a) e (b) são realizadas em resposta a uma sequência única de instruções, de modo que as etapas (a) e (b) sejam realizadas independentemente e em paralelo em resposta à sequência única de instruções. Em modalidades típicas, a filtragem de múltiplos estágios do bloco de amostras de entrada é realizada em um circuito único com interação através de um índice de amostra, mas sem interação através de um índice de estágio de filtro biquadrático.
[0023] Em algumas modalidades do método inventivo onde a filtragem é realizada em um filtro de múltiplos estágios possuindo M estágios, os valores armazenados recuperados na etapa (b) para gerar o valor de saída correspondente à amostra de entrada "j", onde j é um índice na faixa de M-1 a N-1, incluem a versão filtrada da amostra de entrada "j" gerada na etapa (a), a versão filtrada da amostra de entrada "j-1" gerada na etapa (a), e a versão filtrada de uma amostra de entrada "j-2" gerada na etapa (a).
[0024] Em outra classe de modalidades, a invenção é um codificador de áudio configurado para gerar dados de áudio codificados em resposta aos dados de áudio de entrada, o dito codificador incluindo pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio (por exemplo, para filtrar uma versão preliminarmente processada dos dados de áudio). Em outra classe de modalidades, a invenção é um método para codificação de dados de áudio para gerar dados de áudio codificados, incluindo a realização de qualquer modalidade do método de filtragem biquad de múltiplos estágios inventivo nos dados de áudio (por exemplo, em uma versão processada preliminarmente dos dados de áudio). Por exemplo, uma modalidade da invenção é um codificador de áudio incluindo um estágio de pré-processamento (para processamento preliminar de dados de áudio de entrada a serem codificados pelo codificador), onde o estágio de pré-processamento inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar dados de áudio (por exemplo, dados de entrada ou uma versão preliminarmente processada dos dados de entrada). Outra modalidade da invenção é um pré-processador (para realizaçao do processamento preliminar de dados de áudio a serem codificados por um codificador), onde o pré-processador inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar dados de áudio (por exemplo, dados que entram no pré-processador ou uma versão preliminarmente processada de tais dados de entrada).
[0025] Em outra classe de modalidades, a invenção é um decodificador de áudio configurado para gerar dados de áudio decodificados em resposta aos dados de áudio codificados. Em algumas modalidades nessa classe, o decodificador inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio codificados (por exemplo, para filtrar uma versão preliminarmente processada de dados de áudio codificados). Em outra classe de modalidades, a invenção é um método de decodificação de dados de áudio codificados para gerar os dados de áudio decodificados. Em algumas dessas modalidades, a decodificação inclui o desempenho de qualquer modalidade do método de filtragem biquad de múltiplos estágios inventivo nos dados de áudio codificados (por exemplo, em uma versão preliminarmente processada dos dados de áudio codificados). Por exemplo, uma modalidade da invenção é um decodificador de áudio incluindo um estágio de pós-processamento (para o pós-processamento de dados de áudio decodificados que foram decodificados pelo decodificador), onde o estágio de pós-processamento inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio (por exemplo, os dados decodificados ou uma versão processada de dados decodificados). Outra modalidade da invençao é um pós-processador (por exemplo, para realização de pós- processamento de dados de áudio decodificados que foram decodificados por um decodificador), onde o pós-processador inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar dados de áudio (por exemplo, dados decodificados que são registrados no pós-processador ou uma versão processada de tais dados de entrada).
[0026] De acordo com as modalidades típicas da presente invençao, instruções SIMD (ou instruções para o processamento paralelo por múltiplas ALUs ou AMUs) são utilizadas para programar um processador (por exemplo, um processador de sinal digital ou um processador de finalidade geral) para implementar um filtro de múltiplos estágios. O filtro de múltiplos estágios pode implementar a filtragem de largura de banda, a filtragem de passa baixa (por exemplo, em um subsistema LFE de um codificador de áudio), a filtragem de passa alta (por exemplo, em um subsistema de detector de transiente de um codificador de áudio) ou outra filtragem.
[0027] Outros aspectos da invenção incluem um sistema ou dispositivo (por exemplo, um codificador, um decodificador, ou um processador) configurado (por exemplo, programado) para realizar qualquer modalidade do método inventivo, e um meio legível por computador (por exemplo, um disco) que armazena o código para implementação de qualquer modalidade do método inventivo ou etapas do mesmo. Por exemplo, o sistema inventivo pode ser ou pode incluir um processador de finalidade geral programável, o processador de sinal digital, ou microprocessadores, programado com software ou firmware e/ou de outra forma configurado para realizar qualquer uma dentre uma variedade de operações em dados, incluindo uma modalidade do método ou etapas inventivas. Tal processador de finalidade geral pode ser ou incluir um sistema de computador incluindo um dispositivo de entrada, uma memória, e um conjunto de circuitos de processamento programado (e/ou de outra forma configurado) para realizar uma modalidade do método inventivo (ou etapas do mesmo) em resposta aos dados determinados.
[0028] Algumas modalidades da invenção são codificadores (por exemplo, codificadores que codificam os dados de áudio de acordo com o formato Dolby Digital Plus, AC-3 ou Dolby E) ou decodificadores, implementados como processadores programados (por exemplo, processadores neon ARM, cada um dos quais é um processador Cortex ARM com um motor SIMD Neon permitindo o processamento paralelo, ou outros processadores possuindo unidades SIMD (instrução única, múltiplos dados) e/ou múltiplas ALUs (unidades lógicas aritméticas) ou AMUs (unidades de manipulação aritmética)) ou processadores de sinal digital programados (e/ou configurados de outra forma) (por exemplo, DSPs possuindo unidades SIMD e/ou múltiplas ALUs ou AMUs). Breve Descrição dos Desenhos A Figura 1 é um diagrama em bloco de um filtro biquad convencional; a Figura 1A é um diagrama em bloco de um filtro biquad de múltiplos estágios convencional; a Figura 2 é um fluxograma de um método convencional para realização da filtragem em um filtro implementado como filtros biquad serialmente em cascata ("seções biquad em cascata"); a Figura 3 é um fluxograma de uma modalidade do método inventivo para a realização da filtragem em um filtro biquad de múltiplos estágios compreendendo filtros biquad em cascata ("seções biquad em cascata") que operam em paralelo em resposta a uma sequência única de instruções; a Figura 4 é um diagrama em bloco de um filtro de múltiplos estágios (por exemplo, implementado pela programação de um DSP ou outro processador de acordo com uma modalidade da invenção) que compreende filtros biquad em cascata e que podem realizar um método do tipo descrito com referência à Figura 3. Na Figura 4, a memória 10 inclui localizações de memória que armazenam cada bloco de dados de entrada x(n), e locais de memória de armazenamento que armazenam todos os valores necessários dentre os valores intermediários x1(n),...,xN-1(n) gerados pelos filtros biquad. a Figura 5 é um diagrama em bloco de um sistema incluindo um codificador (incluindo uma modalidade do filtro de múltiplos estágios inventivo) e um decodificador (também incluindo uma modalidade do filtro de múltiplos estágios inventivo); a Figura 6 e um fluxograma de outra modalidade do método inventivo para realizar a filtragem em um filtro biquad de múltiplos estágios compreendendo filtros biquad em cascata ("seções biquad em cascata") que operam em paralelo em resposta a uma única sequência de instruções; a Figura 7 é um fluxograma de uma modalidade das etapas 40, 41 e 42 da modalidade da Figura 6 do método inventivo; a Figura 8 é um fluxograma de uma modalidade das etapas 47, 48 e 49 da modalidade da Figura 6 do método inventivo; a Figura 9 é um diagrama de valores gerados em uma implementação do sistema da Figura 4 onde os cálculos são realizados no lugar; a Figura 10 é um diagrama em bloco de um sistema incluindo um codificador (incluindo uma modalidade do filtro de múltiplos estágios inventivo) e um decodificador que é uma modalidade do decodificador inventivo.
Descrição Detalhada das Modalidades da Invenção
[0029] As modalidades do método e sistemas inventivos (por exemplo, codificadores e decodificadores) configurados para implementar o método inventivo serão descritas com referência às Figuras 3, 4, 5, 6, 7 e 8.
[0030] Primeiro, com referência à Figura 2, se descreve um método convencional para filtragem de amostras de dados (por exemplo, blocos de amostras de dados de áudio) com um filtro de múltiplos estágios compreendendo uma cascata de M filtros biquad (onde M é um número que é referido como "nsections" abaixo e na Figura 2). Um exemplo de tal filtro biquad de múltiplos estágios convencional é o filtro da Figura 1A descrita acima.
[0031] No método da Figura 2, cada novo bloco de N amostras a serem filtradas é inicialmente armazenado (na etapa 20). Cada amostra no bloco é identificada pelo índice j, onde 0 < j < N-1. Cada estágio (seção) no filtro de múltiplos estágios é identificado pelo índice i, onde 0 < i < M-1.
[0032] Na etapa 21, o índice i é inicializado para zero, e na etapa 22, o índice j é inicializado para zero.
[0033] Na etapa 23, a amostra de entrada j é filtrada no filtro biquad i, e então, na etapa 24, o índice j é incrementado. A etapa 25 determina se o índice incrementado j (igual a j + 1) é inferior a N. Se for determinado na etapa 25 que o índice incrementado j é inferior a N, a etapa 23 é realizada novamente para filtrar a próxima amostra ("(j+1)") no filtro biquad i.
[0034] Se for determinado na etapa 25 que o índice incrementado j é igual a N (de modo que todas as amostras no bloco atual tenham sido filtradas no filtro biquad atual, na etapa 26, o índice i é incrementado).
[0035] A etapa 27 determina se o índice incrementado mais recentemente i (igual a i + 1) é inferior ao número de "nsections" (que é igual a M). Se for determinado na etapa 27 que o índice incrementado mais recentemente i é inferior a M, outra interação das etapas 22 a 26 é então realizada para filtrar o último bloco dos valores intermediários (as saídas do filtro biquad anterior ("i"), gerados no filtro biquad anterior na interação anterior das etapas de 22 a 25) no próximo filtro biquad (("(i+1)").
[0036] Se for determinado na etapa 27 que o índice incrementado mais recentemente i é igual a M, de modo que o processamento de todas as amostras no bloco atual em todos os filtros biquad esteja completo, então a etapa 28 é realizada. Na etapa 28, as N amostras filtradas geradas pela filtragem do bloco atual de amostras de entrada no filtro de múltiplos estágios são enviadas. Nesse ponto, qualquer bloco adicional de N amostras a serem filtradas é armazenado (em um novo desempenho da etapa 20) e o método da Figura 2 é repetido para filtrar o novo bloco de amostras no filtro de múltiplos estágios.
[0037] Para o processo da Figura 2, no caso de M = 2 (isso é, no caso de o filtro de múltiplos estágios compreender apenas dois filtros biquad em cascata), o processamento realizado em cada estágio do filtro de múltiplos estágios também é descrito pelo pseudocódigo a seguir, onde N = o número de amostras de saída a serem geradas pela filtragem de um bloco de N amostras no filtro de múltiplos estágios: com (i=0;i<2;i++) { com (j=0;j<N;j++) { Output[j]=function(output[j-1],output[j-2], input[j], input[j-1], input[j-2]; } }
[0038] Durante o desempenho do método da Figura 2 convencional, visto que a saída de cada estágio do filtro de múltiplos estágios para cada amostra ("output[j]") depende, em geral, das saídas do estágio para as duas amostras anteriores (output[j-1] e output[j-2]), e da entrada atual para o estágio ("input[j]") e as duas entradas anteriores para o estágio (input1] e input[j-2]), as operações para o circuito (etapas 23, 24 e 25 da Figura 2) implementadas dentro do estágio não são paralelizadas. Além disso, visto que a saída do primeiro estágio (i = 0) entra no segundo estágio (i = 1), as operações através dos estágios não são paralelizadas em desempenho do método da Figura 2 convencional. Isso resulta em uma exigência de contagem de instrução alta (algumas vezes referida como MIPS ou Milhões de Instruções por Segundo) para o filtro de múltiplos estágios mesmo quando é implementado por um processador cuja arquitetura inclui múltiplas ALUs (ou AMUs) ou unidades SIMD.
[0039] A seguir, com referência à Figura 3, descreve-se uma modalidade do método inventivo para filtragem de um bloco de amostras de dados (por exemplo, um bloco de amostras de dados de áudio) com um filtro de múltiplos estágios compreendendo uma cascata de dois filtros biquad. Inicialmente, na etapa 30, cada novo bloco de N amostras a ser filtrado é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso em etapas subsequentes (incluindo as etapas 31, 33 e 34).
[0040] Cada amostra em um bloco é identificada pelo índice j, onde 0 < j < N-1. Cada estágio (seção) no filtro de múltiplos estágios é identificado pelo índice i, onde 0 < i < 1.
[0041] Na etapa 31, a primeira amostra de entrada (j=0) é filtrada no primeiro filtro biquad (i = 0). O valor gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, em desempenhos subsequentes das etapas 33 e/ou 34).
[0042] Na etapa 32, o índice j é configurado para 1.
[0043] Então, as etapas 33 e 34 são realizadas em paralelo. Na etapa 33, a amostra de entrada "j" é filtrada no primeiro filtro biquad (i = 0), e pelo menos um valor (por exemplo, cada) (um valor "intermediário") gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes. Na etapa 34, a amostra de entrada "j-1" para o segundo filtro biquad (i = 1) é filtrada, e pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes.
[0044] Então, na etapa 35, o índice j é incrementado. A etapa 36 determina se o índice incrementado j (igual a j + 1) é inferior a N. Se for determinado na etapa 36 que o índice incrementado j é inferior a N, as etapas 33 e 34 são novamente realizadas para filtrar a próxima amostra de entrada para o primeiro filtro biquad (na etapa 33) e a próxima amostra de entrada para o segundo filtro biquad (na etapa 34). Pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por cada interação de cada uma das etapas 33 e 34 é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes. Por exemplo, um ou mais valores intermediários gerados em uma ou mais interações anteriores da etapa 33 podem ser recuperados a partir do armazenador para uso em um desempenho da etapa 34.
[0045] Se for determinado na etapa 36 que o índice incrementado j é igual a N (de modo que todas as amostras de entrada no bloco atual tenham sido filtradas no primeiro filtro biquad, então a etapa 37 é realizada).
[0046] Na etapa 37, a última amostra de entrada (j = N - 1) para o segundo filtro biquad (i = 1) é filtrada. O valor gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para o uso subsequente (por exemplo, para saída na etapa 38).
[0047] Então, na etapa 38, as N amostras filtradas geradas pelo segundo filtro biquad são enviadas (como a saída do filtro de múltiplos estágios em resposta ao bloco atual de N amostras de entrada).Nese ponto, qualquer bloco adicional de N amostras a ser filtrado é armazenado (em um novo desempenho da etapa 30) e o método da Figura 3 é repetido para filtrar o novo bloco de amostras no filtro de múltiplos estágios.
[0048] O processamento realizado (durante o desempenho do método da Figura 3) em cada estágio do filtro de múltiplos estágios também é descrito pelo pseudocódigo a seguir, onde N = o número de amostras de saída a serem geradas pela filtragem de um bloco de N amostras no filtro de múltiplos estágios, outputstage1[k] é a saída do primeiro estágio do filtro de múltiplos estágios em resposta à amostra de entrada k, outputstage2[k] é a saída do segundo estágio do filtro de múltiplos estágios correspondente à amostra de entrada k, e input[k] é a amostra de entrada k para o primeiro estágio do filtro de múltiplos estágios: {1o. processamento de amostra do 1o. estágio} com (j = 1;j < N; j ++) { Outputstage1[j] = função (outputstage1[j-1], outputstage1[j-2], input[j], input[j-1], input[j-2]); Outputstage2[j-1] = função (outputstage2[j-2], outputstage2[j-3], outputstage1[j-1], outputstage1[j-2], outputstage1[j-3]); } {Último processamento de amostra ("N-1") do segundo estágio).
[0049] Como é aparente a partir da Figura 3 e do pseudocódigo correspondente, o processamento em ambos os estágios do filtro de múltiplos estágios é combinado em um único circuito de amostra (etapas 33, 34, 35 e 36 da Figura 3). Pela introdução de uma latência de uma amostra entre dois estágios (no caso de um filtro biquad de dois estágios) ou mais geralmente, como descrito abaixo com relação às Figuras 6, 7 e 8, uma latência de uma amostra entre cada estágio de um filtro de múltiplos estágios possuindo dois ou mais estágios de filtro biquad, o processamento em todos os estágios do filtro de múltiplos estágios pode ser totalmente paralelizado de acordo com a invenção. O processamento de um bloco de amostras em todos os estágios de filtro biquad de um filtro de múltiplos estágios pode, dessa forma, ser paralelizado em um único circuito de amostra (combinado para todos os estágios), de acordo com a modalidade descrita da invenção.
[0050] Variações da modalidade da Figura 3 do método inventivo, para filtragem de um bloco de amostras de dados (por exemplo, um bloco de amostras de dados de áudio) com um filtro de múltiplos estágios compreendendo uma cascata de M filtros biquad (onde M é superior a 2) são contempladas. Tais variações aso tipicamente implementadas de uma forma a ser descrita com referência às Figuras 6, 7 e 8.
[0051] Inicialmente, na etapa 40 do fluxograma da Figura 6, cada novo bloco de N amostras a ser filtrado é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes (incluindo as etapas 41, 43 a 45 e 48).
[0052] Cada amostra em um bloco é identificada pelo índice j, onde 0 < j< N-1. Cada estágio biquad (seção) no filtro de múltiplos estágios é identificado pelo índice i, onde 0 < i < M-1.
[0053] Na etapa 41, a filtragem de pré-circuito é realizada nas primeiras M-1 amostras de entrada (j = 0 a j = M-2) nos estágios de filtro biquad i = 0 a i = M-2 (por exemplo, da forma a ser descrita com referencia à Figura 7). Deve-se notar, como ilustrado na Figura 7, que para alguns estágios de filtro biquad, a filtragem de pré-circuito ocorre correspondendo apenas a um subconjunto das primeiras amostras de entrada M - 1. Os valores gerados por essa etapa são armazenados (por exemplo, na memória 10 da Figura 4) de modo a estarem disponíveis para uso subsequente (por exemplo, nos desempenhos subsequentes das etapas 43 a 45).
[0054] Na etapa 42, o índice j é configurado para M - 1.
[0055] Então, as etapas de 43 a 45 (uma etapa para cada um dos M estágios) são realizadas em paralelo. Na etapa 43, a amostra de entrada "j" para o primeiro filtro de biquad (i = 0) é filtrada, e pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso em etapas subsequentes. Na etapa 44, a amostra de entrada "j-1" para o segundo filtro biquad (i = 1) é filtrada, e pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes. De forma similar (em pelo menos uma etapa realizada em paralelo com etapas 43 e 44, assumindo que M seja maior que 2), a amostra de entrada "j-2" para o terceiro filtro biquad (i = 2) é filtrada, a amostra de entrada "j-3" para o quarto filtro biquad (i = 3) é filtrada (assumindo-se que M seja maior que ou igual a 4) e assim por diante para cada um dos filtros biquad i = 4 a i = M-2, e pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por cada etapa é armazenado de modo a estar disponível para uso nas etapas subsequentes. Na etapa 45 (realizada em paralelo com as etapas 43 e 44, se M for maior que 2), a amostra de entrada "j-M+1" para o último filtro biquad (i = M-1) é filtrada, e pelo menos um valor (por exemplo cada valor) (um valor "intermediário") gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes.
[0056] Então, na etapa 46, o índice j é incrementado, e a etapa 47 determina se o índice incrementado j (igual a j + 1) é inferior a N. Se for determinado na etapa 47 que o índice incrementado j é inferior a N, as etapas 43 a 45 (e qualquer outra etapa realizada em paralelo com as etapas 43 a 45) são realizadas novamente para filtrar a próxima amostra no primeiro filtro biquad (na etapa 43), a próxima amostra no segundo filtro biquad (na etapa 44) e assim por diante para cada estágio de filtro biquad adicional. Pelo menos um valor (por exemplo, cada valor) (um valor "intermediário") gerado por cada interação de cada uma das etapas de 43 a 45 é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso nas etapas subsequentes. Por exemplo, um ou mais valores intermediários gerados em uma ou mais interações anteriores da etapa 43 podem ser recuperados a partir do armazenador para uso em um desempenho da etapa 44.
[0057] Se for determinado na etapa 47 que o índice incrementado j é igual a N (de modo que todas as amostras de entrada no bloco atual tenham sido filtradas em um dos filtros biquad (o filtro para o qual i = 0)), então a etapa de filtragem de pós-circuito 48 é realizada.
[0058] Na etapa 48, a filtragem pós-circuito é realizada em qualquer amostra de entrada não filtrada restante para os estágios de filtro biquad i = 1 a i = M-1 (por exemplo, da forma a ser descrita com referencia à Figura 8). Os valores gerados por essa etapa são armazenados (por exemplo, na memória 10 da Figura 4) de modo a estarem disponíveis para uso subsequente (por exemplo, para envio na etapa 49).
[0059] Depois da etapa 48, na etapa 49, as N amostras filtradas geradas pelo filtro biquad final (i = M - 1) são enviadas (como a saída do filtro de múltiplos estágios em resposta ao bloco atual de N amostras de entrada). Nesse ponto, qualquer bloco adicional de N amostras a serem filtradas é armazenado (em um novo desempenho de etapa 40) e o método da Figura 6 é repetido para filtrar o novo bloco de amostras no filtro de múltiplos estágios.
[0060] A Figura 7 é um fluxograma de etapas 40 e 42, e detalhes de uma modalidade da etapa 41, da modalidade da Figura 6 do método inventivo. As etapas 50 a 58 da Figura 7 são uma implementação da etapa de filtragem pré-circuito 41 da Figura 6. Na etapa 50, a primeira amostra (j = 0) do bloco atual é filtrada no primeiro estágio de filtro biquad (i = 0), e o valor de amostra filtrado gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, nas etapas 51 e 52). Na etapa 51, a segunda amostra do bloco (j = 1) é filtrada no primeiro estágio de filtro biquad (i = 0), e o valor de amostra filtrado gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, na etapa 53). Na etapa 52, a primeira amostra do bloco (j = 0) para o segundo estágio de filtro biquad (i = 1) é filtrada, e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, na etapa 54). As etapas 51 e 52 são preferivelmente realizadas em paralelo (em resposta à mesma instrução ou sequência de instruções determinadas para os primeiro e segundo estágios).
[0061] Nas etapas ilustradas verticalmente abaixo da etapa 51 na Figura 7 (incluindo as etapas 53 e 56), cada uma das terceira amostra (j = 2) através da amostra "M-1" (j = M-2) do bloco atual é filtrada no primeiro estágio de filtro biquad (i = 0), e o valor de amostra filtrado gerado por cada etapa é armazenado de modo a estar disponível para uso subsequente. Na etapa 53, a terceira amostra (j = 2) do bloco é filtrada no primeiro estágio de filtro biquad (i = 0) e o valor de amostra filtrado gerado por tal etapa é armazenado de modo a estar disponível para uso subsequente. Na etapa 56, a amostra "M - 1" (j = M-2) do bloco atual é filtrada no primeiro estágio de filtro biquad (i = 0), e o valor de amostra filtrado gerado por tal etapa é armazenado de modo a estar disponível para o uso subsequente.
[0062] Nas etapas ilustradas verticalmente abaixo da etapa 52 na Figura 7 (incluindo etapas 54 e 57), cada uma dentre a segunda amostra de entrada (j = 1) através da amostra de entrada "M - 2" (j = M-3) para o segundo estágio de filtro biquad (i = 1) é filtrada, e o valor de amostra filtrada gerado por cada etapa é armazenado de modo a estar disponível para uso subsequente. Na etapa 54, a segunda amostra de entrada (j = 1) para o segundo estágio de filtro biquad é filtrada, e o valor de amostra filtrado gerado por tal etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente. Na etapa 57, a amostra de entrada "M-2" (j = M-3) para o segundo estágio de filtro biquad é filtrada, e o valor de amostra filtrado gerado por tal etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente.
[0063] Geralmente, para o estágio de filtro biquad "k", onde k está em índice que varia de 0 a M-2, uma sequência de etapas (uma coluna de etapas na Figura 7) é realizada para filtrar cada uma das primeira amostra de entrada (j = 0) para o estágio de filtro biquad "k" através da amostra de entrada "m-1-k" (j = M-2-k) para o estágio de filtro biquad "k" e os valores de amostra filtrados gerados por cada etapa são armazenados (por exemplo, na memória 10 da Figura 4) de modo a estarem disponíveis para uso subsequente.
[0064] Dessa forma, se M = 3, as etapas 53, 54 e 55 da Figura 7 são realizadas (preferivelmente em paralelo). Na etapa 53, a terceira amostra de entrada (j = 2) para o primeiro estágio de filtro biquad (i = 0) é filtrada, e o valor de amostra filtrado gerado por essa etapa é armazenado. Na etapa 54, a segunda amostra de entrada (j = 1) para o segundo estágio de filtro biquad (i = 1) é filtrada, e o valor de amostra filtrado gerado por essa etapa é armazenado. Na etapa 55, a primeira amostra de entrada (j = 0) para o terceiro estágio de filtro biquad (i = 2) é filtrada, e o valor de amostra filtrada gerado por essa etapa é armazenado.
[0065] De forma similar, se M > 5, as etapas da fileira de etapas abaixo da fileira que inclui as etapas 53 a 55 (como indicado na Figura 7) são então realizadas (preferivelmente em paralelo), e então as etapas da fileira de etapas que incluem as etapas 56, 57 e 58 da Figura 7 são realizadas (preferivelmente em paralelo). Na etapa 56, a amostra de entrada "M - 1" (j = M-2) para o primeiro estágio de filtro biquad (i = 0) é filtrada, e o valor da amostra filtrada gerado por essa etapa é armazenado. Na etapa 57, a amostra de entrada "M - 2" (j = M - 3) para o segundo estágio de filtro biquad (i = 1) é filtrada, e o valor de amostra filtrada gerado por essa etapa é armazenado. Na etapa 58, a primeira amostra de entrada (j = 0) para o estágio de filtro biquad "M - 1" (i = M - 2) é filtrado, e o valor de amostra filtrado gerado por essa etapa é armazenado.
[0066] As etapas de cada fileira de etapas na Figura 7 (por exemplo, etapas 51 e 52, ou etapas 53, 54 e 55) são preferivelmente realizadas em paralelo (em resposta à mesma instrução ou sequência de instruções determinadas para os estágios relevantes).
[0067] A Figura 8 é um fluxograma de uma modalidade das etapas 47 e 49, e detalhes de uma modalidade da etapa 48, da modalidade da Figura 6 do método inventivo. As etapas 60 a 66 da Figura 8 são uma implementação da etapa de filtragem pós-circuito 48 da Figura 6.
[0068] Geralmente, como ilustrado na Figura 8, para o estágio de filtro biquad "k", onde k é um índice que varia de 1 a M - 1, uma sequência de etapas (uma coluna de etapas na Figura 8) é realizada para filtrar cada uma das amostras de entrada "N - k + 1" (j = N - k) para o estágio de filtro biquad "k" através da última amostra de entrada (j = N - 1) para o estágio de filtro biquad "k", e os valores de amostra filtrados gerados por cada uma dessas etapas são armazenados (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente.
[0069] Por exemplo, na etapa 60, a última amostra (j = N - 1) do bloco atual é filtrada no segundo estágio de filtro biquad (i = 1), e o valor de amostra filtrado gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente. Na etapa 61, a penúltima amostra do bloco (j = N - 2) é filtrada no terceiro estágio de filtro biquad (i = 2), e o valor de amostra filtrada gerado por essa etapa é armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, na etapa 63). Na etapa 63, a última amostra (j = N - 1) do bloco é filtrada no terceiro estágio de filtro biquad (i = 2), e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente.
[0070] Na etapa 64, a última amostra (j = N - 1) do bloco é filtrada no penúltimo estágio de filtro biquad (i = M - 2) e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente.
[0071] Na etapa 62, a amostra "N - M + 1" do bloco é filtrada no ultimo estágio de filtro biquad (i = M - 1), e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, nas etapas verticalmente abaixo da etapa 62 na Figura 8). Na etapa 65, a penúltima amostra (j = N - 2) do bloco é filtrada no último estágio de filtro biquad (i = M - 1) e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente (por exemplo, na etapa 66 na Figura 8). Na etapa 66, a última amostra (j = N - 1) do bloco é filtrada no último estágio de filtro (i = M - 1), e o valor de amostra filtrado gerado por essa etapa é preferivelmente armazenado (por exemplo, na memória 10 da Figura 4) de modo a estar disponível para uso subsequente.
[0072] As etapas de cada fileira de etapas na Figura 8 (por exemplo, etapas 64 e 65, ou as etapas na fileira incluindo as etapas 60, 61 e 62) são preferivelmente realizada em paralelo (em resposta à mesma instrução ou sequência de instruções determinadas para os estágios relevantes).
[0073] O método da Figura 3 (e variações do mesmo para filtragem de um bloco de amostras de dados com um filtro de múltiplos estágios compreendendo uma cascata de mais de dois filtros biquad) realiza a filtragem de múltiplos estágios de um bloco de N amostras de entrada em um único circuito com interação através de um índice de amostra (índice j da Figura 3), mas sem interação através de um índice de estágio de filtro biquadrático. Em contraste, o método convencional da Figura 2 processa um bloco de amostras de dados em dois circuitos aninhados com interação através de ambos um índice de amostra (índice j da Figura 2) e interação através de um índice de estágio de filtro biquadrático (índice i da Figura 2).
[0074] Nas modalidades típicas (por exemplo, a modalidade da Figura 4, a ser descrita abaixo), os estágios do filtro de múltiplos estágios inventivo (cada um dos quais é um filtro biquad) são combinados com a latência entre os estágios, de modo que todos os estágios possam operar independentemente, permitindo a paralelização do processamento de estágios diferentes. Todos os estágios podem operar em paralelo (para filtrar um bloco de valores de dados de entrada), em resposta a uma única sequência comum de instruções a partir de um controlador, mas com cada estágio operando em diferentes valores de dados, com pelo menos um dos estágios operando em valores de dados que incluem valores armazenados (gerados por outro dos estágios em resposta a um subconjunto de valores de dados de entrada, e armazenados com diferentes latências em uma memória de armazenador antes de serem recuperados para processamento no dito um dos estágios). Dessa forma, o filtro de múltiplos estágios possui uma arquitetura SIMD (instrução única, múltiplos dados) onde os estágios de filtro biquad individuais operam independentemente e em paralelo em resposta à sequência única de instruções. Por exemplo, o filtro de múltiplos estágios pode incluir N estágios, e um dos estágios (o estágio "M + 1" na sequência) pode operar em valores de dados gerados por um estágio anterior (o estágio "M" na sequência) em momentos diferentes (por exemplo, em resposta a uma sequência de diferentes valores de dados de entrada do bloco), armazenados em uma memória de armazenamento (em momentos diferentes), e lidos (pelo estágio "(M+1)") a partir da memória de armazenador depois de residir na memória de armazenador com tempos de latência diferentes.
[0075] A seguir, com referência à Figura 4, descreve-se uma classe de modalidades do filtro de múltiplos estágios inventivos. O filtro de múltiplos estágios da Figura 4 inclui múltiplos filtros biquad (M filtros biquad, onde M é um inteiro maior que um) e é configurado para realizar um método do tipo descrito com referência à Figura 3 (ou uma variação de tal método, tal como ilustrado na Figura 6). O filtro da Figura 4 inclui a memória 10, o controlador 11, e filtros biquad B1, B2,...,BM, conectados como ilustrado, e é configurado para filtrar um bloco de N valores de dados de entrada x(n), onde "n" é um índice variando de 1 a N, em resposta a uma única sequência de instruções determinadas para os filtros biquad pelo controlador 11. Cada um dos valores de dados de entrada x(n) pode ser uma amostra de dados de áudio.
[0076] Deve-se apreciar que a expressão que uma "unida sequência de instruções" é determinada para estágios individuais (por exemplo, cada um dos quais é um filtro biquad) de um filtro de múltiplos estágios, é utilizada aqui em um sentido amplo incluindo ambos: casos nos quais uma sequência única de instruções é determinada para todos os estágios (por exemplo, em um único barramento ou condutor ao qual todos os estágios são acoplados); e casos nos quais sequencias idênticas (ou substancialmente idênticas) de instruções são determinadas simultaneamente (ou substancialmente simultaneamente) para os estágios (por exemplo, cada sequência determinada em barramento diferente ou condutor acoplado a um estágio diferente).
[0077] Em resposta ao bloco de valores de dados de entrada x(n), o filtro B1 gera N valores intermediários (filtrados biquad) x1(n), e determina os mesmos para locais na memória de armazenamento na memória 10. Em operação, o filtro B2 recupera os valores intermediários necessários x1(n) a partir da memória 10, gera valores intermediários (filtrados biquad) x2(n) em resposta a isso e determina os valores intermediários que gera para os locais de memória de armazenamento na memória 10. De forma similar, em operação, cada outro dos filtros biquad (filtro Bi, onde i é um índice variando de 3 a M) recupera os valores intermediários xi-1(n) da memória 10, gera os valores filtrados biquad xi(n) em resposta a isso, e determina os valores que gera para os locais de memória de armazenamento na memória 10. Os valores filtrados biquad, xM(n) = y(n), gerados no filtro biquad final (BM) compreendem um bloco de N valores de dados de saída totalmente filtrados gerados em resposta ao bloco de valores de dados de entrada x(n).
[0078] A memória 10 inclui locais de memória que armazenam cada bloco de dados de entrada x(n), e locais de memória de armazenamento que armazenam valores intermediários xi(n),...,xM-1(n) gerados pelos filtros biquad B1, B2,...,BM-1 (por exemplo, locais de armazenamento que armazenam valores intermediários xi(n),...,xM-1(n) gerados para cada bloco de dados de entrada). Em algumas implementações, para as quais os cálculos são realizados no lugar, as mesmas localizações de memória que são utilizadas para armazenar dados de entrada x(n) podem ser utilizadas para armazenar valores intermediários xi(n),...,xM- 1(n) uma vez que as amostras de dados de entrada em particular não são mais necessárias pelo filtro de múltiplos estágios. Em tais implementações, a memória 10 tipicamente não precisa incluir mais locais de memória (ou significativamente mais) que uma memória convencional (para implementar uma versão convencional não paralelizada do filtro de múltiplos estágios), visto que tal memória convencional incluiria tipicamente locais de memória para o armazenamento de cada bloco de dados de entrada, x(n), a serem filtrados, e cada valor de saída gerado por cada um dos estágios do filtro de múltiplos estágios que é necessário para operação do estágio propriamente dito e/ou para operação de cada estágio subsequente do filtro.
[0079] Por exemplo, a Figura 9 é um diagrama de valores gerados em uma implementação do sistema da Figura 4 onde os cálculos são realizados no lugar, no caso de N = 4 e M = 2 (isso é, operação biquad de dois estágios nos blocos de 4 amostras de cada vez).
[0080] No exemplo da Figura 9, começamos com quatro amostras no armazenador de entrada, x(0)...x(3).
[0081] Em uma primeira etapa, a amostra x(0) é filtrada através do filtro B0 (biquad de primeiro estágio) para produzir a amostra x1(0). A amostra x1(0) é armazenada na memória no local previamente ocupado pela amostra x(0). Todos os outros locais de memória são inalterados.
[0082] Em uma segunda etapa, a amostra x1(0) é filtrada através do filtro B1 (biquad de segundo estágio) para produzir a amostra y(0). A amostra y(0) é armazenada na memória no local previamente ocupado pela amostra x1(0).
[0083] Em paralelo, a amostra x(1) é filtrada através do filtro B0 para produzir a amostra x1(1). A amostra x1(1) é armazenada na memória no local previamente ocupado pela amostra x(1).
[0084] Nas etapas subsequentes, o processamento continua até que todas as amostras de entrada x(0)...x(3) tenham sido substituídas pelas amostras de saída y(0)...y(3).
[0085] No exemplo da Figura 9, quando o filtro B1 é aplicado à amostra x1(2), as amostras x1(1) e x1(0) não residem mais no armazenador (tendo sido substituídas por y(0) e y(1)). Ao invés disso, as amostras que são derivadas pelo filtro B1 a partir de x1(1) e x1(0) (isso é, amostras correspondentes a s1(n) e s2(n) na Figura 1) são contidas em 2 variáveis de estado associadas com o filtro B1.
[0086] No exemplo da Figura 9, cada filtro (por exemplo, cada um dos filtros B0 e B1) exige acesso aos locais de memória que armazenam duas amostras (correspondendo a s1(n) e s2(n) na Figura 1) que gera (em resposta às amostras de entrada "j-1" e "j-2" do bloco atual de N amostras de entrada) para uso na filtragem da amostra de entrada "j" do bloco atual. Esses locais de memória podem estar dentro da memória 10 do sistema da Figura 4 (ou podem ser outros locais de memória de armazenamento)
[0087] Para cada um dos filtros, cada par de amostras armazenadas (correspondendo a s1(n) e s2(n) na Figura 1) que foram geradas pelo filtro é atualizado cada vez que uma nova amostra de entrada (com um índice incrementado j) é determinado para o filtro. As amostras armazenadas (correspondendo a s1(n) e s2(n) na Figura 1) são exemplos de "valores intermediários" (como essa frase é utilizada em outros locais aqui) que são gerados pelo filtro (que é um estágio de um filtro de múltiplos estágios) e armazenados para uso subsequente de acordo com a invenção, mas são subsequentemente utilizados pelo estágio de filtro que gerou os mesmos (não por um estágio de filtro diferente do filtro de múltiplos estágios).
[0088] Apesar de a Figura 9 ilustrar um exemplo específico do método inventivo utilizando no lugar a filtragem, onde o tamanho de bloco (N) é igual a 4 e o número de estágios de filtro biquad (M) no filtro inventivo é igual a 2, as modalidades do método inventivo utilizando no lugar disso a filtragem são contempladas para quaisquer valores de M e N sujeitos às restrições que M > 1 e N > M. Na implementação da Figura 9 (e outras modalidade sutilizando no lugar disso a filtragem onde o tamanho de bloco é diferente de 4 e/ou o número de estágios biquad é diferente de 2), os mesmos locais de memória (por exemplo, na memória 10 da Figura 4) que são utilizados para armazenar os dados de entrada x(n) podem ser utilizados para armazenar os valores intermediários x1(n),...,xM-1(n) uma vez que amostras de dados de entrada particulares não são mais necessários pelo filtro de múltiplos estágios.
[0089] O filtro da Figura 4 pode ser implementado pela programação de um processador de sinal digital (DSP) ou outro processador que inclui uma memória (funcionando como memória 10), um controlador (funcionando como o controlador 11), e ALUs (unidades lógicas aritméticas) ou AMUs (unidades de manipulação aritmética), com cada um dos filtros biquad B1, B2,...,BM sendo implementados como uma ALU ou AMU configurada adequadamente.
[0090] Dessa forma, o filtro da Figura 4 inclui: uma memória de armazenamento (localizações de armazenamento na memória 10); pelo menos dois estágios de filtro biquad (filtros biquad B1, B2,...,BM), incluindo um primeiro estágio de filtro biquad (por exemplo, filtro biquad B1) e um estágio de filtro biquad subsequente (por exemplo, filtro biquad B2); e um controlador (controlador 11) acoplado aos estágios de filtro biquad e configurado para determinar uma sequência única de instruções para ambos o primeiro estágio de filtro biquad e um estágio de filtro biquad subsequente. O primeiro estágio de filtro biquad e o estágio de filtro biquad subsequente (e cada outro estágio de filtro biquad do filtro da Figura 4) operam independentemente e em paralelo em resposta à sequência de instruções.
[0091] O primeiro estágio de filtro biquad é acoplado à memória e configurado para realizar a filtragem biquadrática em um bloco de N amostras de entrada em resposta à sequência de instruções para gerar valores intermediários (por exemplo, os valores x1(n)), e para determinar os valores intermediários para a memória (para armazenamento na dita memória). Esses valores intermediários incluem uma versão filtrada de cada uma das amostras de entrada. Em determinadas modalidades da invenção, não mais do que um valor intermediário x1(n) precisa estar presente na memória 10 de cada vez. O estágio de filtro biquad subsequente é acoplado à memória e configurado para realizar a filtragem biquadrática nos valores armazenados recuperados a partir da memória em resposta à sequência de instruções para gerar um bloco de valores de saída (por exemplo, os valores x2(n)), onde os valores de saída incluem um valor de saída correspondente para cada uma das amostras de entrada no bloco de N amostras de entrada, e os valores armazenados incluem pelo menos alguns valores intermediários gerados no primeiro estágio de filtro biquad em resposta ao bloco de N amostras de entrada.
[0092] O estágio de filtro biquad subsequente (por exemplo, filtro B2 da Figura 4), em uma modalidade na qual o filtro de múltiplos estágios possui M estágios, é configurado para gerar um valor de saída correspondente à amostra de entrada "j" em resposta a um subconjunto de valores armazenados recuperados a partir da memória, onde j é um índice na faixa de M-1 a N-1, o dito subconjunto incluindo a versão filtrada da amostra de entrada "j", a versão filtrada de uma amostra de entrada "j-1", e a versão filtrada da amostra de entrada "j-2".
[0093] O estágio de filtro biquad subsequente (por exemplo, filtro B2 da Figura 4) é configurado para gerar um valor de saída (x2(n)) correspondendo a cada uma das amostras de entrada, x(n), em resposta a um subconjunto diferente de valores armazenados recuperados da memória, cada dito subconjunto incluindo pelo menos dois (por exemplo, três) dos valores intermediários gerados no primeiro estágio de filtro biquad (por exemplo, os valores x1(n), x1(n-1), e x1(n-2), indicados na Figura 4) e recuperados a partir da memória depois de residir na dita memória por tempos de latência diferentes. Mais especificamente, em uma modalidade na qual o filtro de múltiplos estágios possui M estágios, o subconjunto de valores armazenados recuperados pelo filtro B2 gera o valor de saída correspondente a uma amostra de entrada "j", onde j é um índice na faixa de M-1 a N-1, inclui pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j", pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j-1", e pelo menos um valor gerado no primeiro estágio de filtro biquad em resposta à amostra de entrada "j-2".
[0094] O filtro da Figura 4 é configurado para realizar a filtragem de múltiplos estágios em um bloco de N amostras de entrada (valores de dados x(n)), incluindo a realização das etapas de: (a) realizar uma primeira operação de filtragem biquadrática no bloco de N amostras de entrada para gerar valores intermediários (por exemplo, os valores x1(n), x1(n-1) e x1(n-2), indicados na Figura 4), e determinando os valores intermediários para uma memória de armazenamento (para armazenamento na dita memória), onde os valores intermediários incluem uma versão filtrada de cada um do pelo menos um subconjunto de amostras de entrada; e (b) realizar uma segunda operação de filtragem biquadrática nos valores armazenados recuperados a partir da memória, para gerar um bloco de valores de saída (por exemplo, os valores x2(n) indicados na Figura 4), onde os valores de saída incluem um valor de saída correspondente a cada uma das amostras de entrada no bloco de N amostras de entrada, um subconjunto diferente de valores armazenados é recuperado e filtrado para gerar o valor de saída correspondente para cada uma das amostras de entrada no bloco, e cada dito subconjunto de valores armazenados inclui pelo menos dois (por exemplo, três) dos valores intermediários gerados durante a realização da etapa (a) (por exemplo, os valores x1(n), x1(n-1) e x1(n-2), indicados na Figura 4) que são recuperados a partir da memória depois de residir na dita memória por diferentes tempos de latência; em que as etapas (a) e (b) são realizadas em resposta a uma única sequência de instruções, de modo que as etapas (a) e (b) sejam realizadas independentemente e em paralelo em resposta à sequência única de instruções.
[0095] Os valores armazenados recuperados na etapa (b) para gerar o valor de saída correspondente a uma amostra de entrada "j" em uma modalidade na qual a filtragem é realizada em um filtro de múltiplos estágios possuindo M estágios, onde j é um índice na faixa de M-1 a N- 1, incluem a versão filtrada da amostra de entrada "j" gerada na etapa (a), a versão filtrada de uma amostra de entrada "j-1" gerada na etapa (a), e a versão filtrada de uma amostra de entrada "j-2" gerada na etapa (a).
[0096] A Figura 5 é um diagrama em bloco de um sistema incluindo um codificador (codificador 150) incluindo uma modalidade do filtro de múltiplos estágios inventivos ("filtro M B" 153).Por exemplo, o filtro 153 pode ser do tipo ilustrado em e descrito com referência à Figura 4. O codificador 150 inclui opcionalmente dois ou mais filtros de múltiplos estágios, cada um dos quais é uma modalidade do filtro de múltiplos estágios inventivo. Em resposta às amostras de dados de áudio registradas, o codificador 150 gera os dados de áudio codificados e determina os dados de áudio codificados para o subsistema de distribuição 151.
[0097] O subsistema de distribuição 151 é configurado para armazenar os dados de áudio codificados e/ou transmitir um sinal indicativo dos dados de áudio codificados. O decodificador 152 é acoplado e configurado (por exemplo, programado) para receber os dados de áudio codificados a partir do subsistema 151 (por exemplo, pela leitura ou recuperação de dados de áudio codificados a partir do armazenador no subsistema 151, ou recebendo um sinal indicativo dos dados de áudio codificados que foram transmitidos pelo subsistema 151).
[0098] O decodificador 152 inclui uma modalidade do filtro de múltiplos estágios inventivo ("filtro M B" 154). Por exemplo, o filtro 154 pode ser do tipo ilustrado em e descrito com referência à Figura 4. O decodificador 152 inclui opcionalmente dois ou mais filtros de múltiplos estágios, cada um dos quais é uma modalidade do filtro de múltiplos estágios inventivo. O decodificador 152 opera para decodificar os dados de áudio codificados, gerando, assim, os dados de áudio decodificados.
[0099] O sistema da Figura 5 também inclui o subsistema de pré- processamento de áudio ("pré-processador") 155 configurado para realizar o processamento preliminar de dados de áudio para serem codificados pelo codificador 150. O pré-processador 155 inclui uma modalidade do filtro de múltiplos estágios inventivo ("filtro M B" 157). Por exemplo, o filtro 157 pode ser do tipo ilustrado em e descrito com referência à Figura 4.
[0100] O sistema da Figura 5 também inclui o subsistema de pós- processamento de áudio ("pós-processador") 156 configurado para realizar o pós-processamento de dados de áudio decodificados que foram decodificados pelo decodificador 154. O pós-processador 156 inclui uma modalidade de filtro de múltiplos estágios inventivo ("filtro M B" 158). Por exemplo, o filtro 158 pode ser do tipo ilustrado em e descrito com referência à Figura 4.
[0101] Em algumas implementações, o codificador 150 é um codificador AC-3 (ou AC-3 melhorado ou Dolby E), que é configurado para gerar uma sequência de bits de áudio codificado AC-3 (ou AC-3 melhorado ou Dolby E) em resposta aos dados de áudio de entrada de domínio de tempo e o decodificador 52 é um decodificador AC-3 (ou AC- 3 melhorado ou Dolby E).
[0102] Em uma classe de modalidades, a invenção é um codificador de áudio (por exemplo, o codificador 150 da Figura 5) configurado para gerar dados de áudio codificados em resposta aos dados de áudio de entrada, o dito codificador incluindo pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio (por exemplo, para filtrar uma versão preliminarmente processada dos dados de áudio). O codificador 150 é configurado para codificar dados de áudio para gerar dados de áudio codificados, incluindo pela realização de uma modalidade do método de filtragem de múltiplos estágios inventivo nos dados de áudio (por exemplo, em uma versão preliminarmente processada dos dados de áudio).
[0103] Em uma classe de modalidades, a invenção é um decodificador de áudio (por exemplo, decodificador 152 da Figura 5), configurado par gerar dados de áudio decodificados em resposta aos dados de áudio codificados, o dito decodificador incluindo pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio codificados (por exemplo, para filtrar uma versão preliminarmente processada dos dados de áudio codificados). O decodificador 152 é configurado para decodificar os dados de áudio codificados para gerar dados de áudio decodificados, incluindo pela realização de uma modalidade do método de filtragem de múltiplos estágios inventivo nos dados de áudio codificados (por exemplo, em uma versão preliminarmente processada de dados de áudio codificados).
[0104] Outra modalidade da invenção é um pré-processador (por exemplo, pré-processador 155 da Figura 5) para realizar o processamento preliminar de dados de áudio (por exemplo, dados de áudio a serem codificados por um codificador), onde o pré-processador inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar os dados de áudio (por exemplo, dados que são registrados no pré-processador ou a versão preliminarmente processada de tais dados de entrada).
[0105] Outra modalidade da invenção é um pós-processador (por exemplo, pós-processador 156 da Figura 5) para realizar o pós- processamento de dados de áudio decodificados que foram decodificados por um decodificador, onde o pós-processador inclui pelo menos um filtro de múltiplos estágios (que é qualquer modalidade do filtro de múltiplos estágios inventivo) acoplado e configurado para filtrar dados de áudio (por exemplo, dados decodificados que são registrados para o pós-processador ou uma versão processada de tais dados de entrada).
[0106] A Figura 10 é um diagrama em bloco de um sistema incluindo um codificador (codificador 150) incluindo uma modalidade do filtro de múltiplos estágios inventivo ("filtro M B" 153). O codificador 150 da Figura 10 é idêntico ao codificador 150 da Figura 5, e pode ser implementado de qualquer uma das formas nas quais o codificador 150 da Figura 5 pode ser implementado. O filtro de múltiplos estágios 153 pode implementar qualquer modalidade do filtro de múltiplos estágios inventivo. Em resposta às amostras de dados de áudio de entrada, o codificador 150 gera os dados de áudio codificados (representando um ou mais canais de áudio de entrada) e determina os dados de áudio codificados para o subsistema de distribuição 151.
[0107] O subsistema de distribuição 151 é configurado para armazenar os dados de áudio codificados e/ou para transmitir um sinal indicativo dos dados de áudio codificados. O subsistema 151 da Figura 10 é idêntico ao subsistema 151 da Figura 5 e pode ser implementado de qualquer uma dentre as formas nas quais o subsistema 151 da Figura 5 pode ser implementado.
[0108] O decodificador 252 da Figura 10 possui uma entrada acoplada para receber os dados de áudio codificados a partir do subsistema 151 (por exemplo, pela leitura ou recuperação dos dados de áudio codificados do armazenador no subsistema 151, ou recebimento de um sinal indicativo dos dados de áudio codificados que foram transmitidos pelo subsistema 151).
[0109] O decodificador 252 é configurado (por exemplo, programado) para extrair (da sequência de bits codificada recebida) os dados codificados representando um ou mais canais de informação de áudio processada pelo filtro de múltiplos estágios 153, e para decodificar os dados codificados para fornecer as representações decodificadas de um ou mais canais da informação de áudio.
[0110] De acordo com modalidades típicas da presente invenção, instruções SIMD (ou instruções para o processamento paralelo pelas múltiplas ALUs ou AMUs) são utilizadas para programar um processador (por exemplo, um processador de sinal digital ou processador de finalidade geral) para implementar um filtro de múltiplos estágios. O filtro de múltiplos estágios pode implementar a largura de banda limitando a filtragem de passa baixa, a filtragem de passa baixa (por exemplo, em um subsistema LFE de um codificador de áudio), a filtragem de passa alta (por exemplo, em um subsistema detector transiente de um codificador de áudio) ou outra filtragem.
[0111] Outros aspectos da invenção incluem um sistema ou dispositivo (por exemplo, um codificador, um decodificador ou um processador) configurado (por exemplo, programado) para realizar qualquer modalidade do método inventivo, e um meio legível por computador (por exemplo, um disco) que armazena o código para implementar qualquer modalidade do método inventivo ou etapas do mesmo. Por exemplo, o sistema inventivo pode ser ou incluir um processador de finalidade geral programável, processador de sinal digital, ou microprocessador, programado com software ou firmware e/ou de outra forma configurado para realizar qualquer uma dentre uma variedade de operações nos dados, incluindo uma modalidade do método inventivo ou etapas do mesmo. Tal processador de finalidade geral pode ser ou incluir um sistema de computador incluindo um dispositivo de entrada, uma memória, e um conjunto de circuitos de processamento programado (e/ou de outra forma configurado) para realizar uma modalidade do método inventivo (ou etapas do mesmo) em resposta aos dados determinados.
[0112] Algumas modalidades da invenção são codificadores (por exemplo, codificadores que codificam os dados de áudio de acordo com o formato Dolby Digital Plus, AC-3 ou Dolby E) ou decodificadores, implementados como processadores programados (por exemplo, processadores neon ARM, cada um dos quais é um processador Cortex ARM com um motor SIMD Neon permitindo o processamento em paralelo, ou outros processadores possuindo unidades SIMD (instrução única, múltiplos dados) e/ou múltiplas ALUs (unidades lógicas aritméticas) ou AMUs (unidades de manipulação aritmética)) ou processadores de sinal digital programados (e/ou de outra forma configurados) (por exemplo, DSPs possuindo unidades SIMD e/ou múltiplas ALUs ou AMUs).
[0113] A combinação de operações de todos os estágios de filtro biquad de um filtro biquad de múltiplos estágios (em um único circuito de amostra) de acordo com modalidades típicas da invenção aperfeiçoa o desempenho pela permissão do paralelismo. Os processadores com unidades SIMD e múltiplas ALUs (ou AMUs) pode fazer uso eficiente de seus recursos pela implementação de uma modalidade do método inventivo.
[0114] Modalidades típicas do método inventivo para implementação de um filtro biquad de múltiplos estágios não afetam a precisão da saída ou estabilidade do filtro (com relação à precisão e estabilidade obteníveis por uma implementação convencional do filtro).
[0115] Testes realizados pelo inventor mostraram que um codificador, configurado para codificar os dados de áudio de acordo com o formato Dolby Digital Plus, e implementados como um processador de sinal digital Texas Instruments C64 programado para incluir uma modalidade do filtro biquad de dois estágios inventivo (implementando a filtragem de passa alta em um subsistema de detector de transiente do codificador) exigem apenas uma média de 1846 ciclos para filtrar um bloco típico de dados de áudio, em contraste com o número médio de ciclos (4141) necessários para filtrar o bloco quando o codificador foi, ao invés disso, convencionalmente programado para incluir uma implementação convencional (não paralelizada) do filtro de dois estágios.
[0116] Testes realizados pelo inventor também mostram que um codificador, configurado para codificar os dados de áudio de acordo com o formato Dolby Digital Plus, e implementados como um processador de sinal digital Texas Instruments C64 programado para incluir uma modalidade do filtro biquad de quatro estágios inventivo (implementando a filtragem de passa baixa em um subsistema de efeitos de baixa frequência ("LFE") do codificador) exige apenas uma média de 5802 ciclos para filtrar um bloco típico de dados de áudio, em contraste com o número médio de ciclos (10375) necessário para filtrar o bloco quando o codificador foi, ao invés disso, convencionalmente programado para incluir uma implementação convencional (não paralelizada) do filtro de quatro estágios.
[0117] Espera-se que a invenção também possa fornecer benefícios de desempenho similares quando o filtro inventivo for implementado pela programação adequada de outros processadores (possuindo outras arquiteturas de processador de núcleo). Espera-se também que o grau de aperfeiçoamento de desempenho dependa da arquitetura de processador, do número de estágios do filtro, e do número de polos no filtro.
[0118] A invenção pode ser implementada em hardware, firmware, ou software, ou uma combinação dos mesmos (por exemplo, como um conjunto lógico programável). A menos que especificado o contrário, os algoritmos ou processos incluídos como parte da invenção não são inerentemente relacionados com qualquer computador em particular ou outro aparelho. Em particular, várias máquinas de finalidade geral podem ser utilizadas com programas escritos de acordo com os ensinamentos apresentados aqui, ou pode ser mais conveniente se construir um aparelho mais especializado (por exemplo, circuitos integrados) para realizar as etapas de método necessárias. Dessa forma, a invenção pode ser implementada em um ou mais programas de computador executados em um ou mais sistemas de computador programáveis (por exemplo, um sistema de computador que implementa o codificador da Figura 5), cada um compreendendo pelo menos um processador, pelo menos um sistema de armazenamento de dados (incluindo memória volátil e não volátil e/ou elementos de armazenamento), pelo menos um dispositivo de entrada ou porta, e pelo menos um dispositivo ou porta de saída. O código de programa é aplicado aos dados de entrada para realizar as funções descritas aqui e gerar informação de saída. A informação de saída é aplicada a um ou mais dispositivos de saída, de forma conhecida.
[0119] Cada programa pode ser implementado em qualquer linguagem de computador desejada (incluindo linguagem de máquina, conjunto, ou procedimento de alto nível, lógica ou de programação orientada por objeto) para comunicar com um sistema de computador. Em qualquer caso, a linguagem pode ser uma linguagem compilada ou interpretada.
[0120] Por exemplo, quando implementada pelas sequências de instrução de software de computador, várias funções e etapas das modalidades da invenção podem ser implementadas por sequências de instrução de software de múltiplas sequências correndo no hardware de processamento de sinal digital adequado, caso no qual os vários dispositivos, etapas e funções das modalidades podem corresponder a partes das instruções de software.
[0121] Cada programa de computador é preferivelmente armazenado em ou descarregado para um meio de armazenamento ou dispôs(por exemplo, memória de estado sólido ou mídia, ou mídia magnética ou ótica) legível por um computador programável de finalidade geral ou especial, para configurar e operar o computador quando o meio de armazenamento ou dispositivo é lido pelo sistema de computador para realizar os procedimentos descritos aqui. O sistema inventivo também pode ser implementado como um meio de armazenamento legível por computador, configurado com (isso é, armazenando) um programa de computador, onde o meio de armazenamento configurado dessa forma faz com que um sistema de computador opere de uma forma específica e predefinida para realizar as funções descritas aqui.
[0122] É contemplado que os filtros de múltiplos estágios, cujos estágios individuais são filtros IIR, mas não são filtros biquad (como o são nas modalidades específicas descritas aqui), podem ser implementados de acordo com a invenção de modo que o processamento de seus estágios individuais seja paralelizado (por exemplo, de modo que todos os seus estágios sejam operados independentemente em resposta a uma única sequência comum de instruções para realizar o processamento totalmente paralelizado de dados nos ditos estágios). Por exemplo, um filtro de múltiplos estágios do tipo descrito na publicação do pedido de patente U.S. No. 2012/0019723 A1, publicada em 26 de janeiro de 2012, pode ser modificado de acordo com uma modalidade da presente invenção de modo que o processamento de seus estágios individuais seja paralelizado (por exemplo, de modo que todos os seus estágios operem independentemente em resposta a uma única sequência comum de instruções, para realizar o processamento totalmente paralelizado de dados nos ditos estágios).
[0123] Em algumas modalidades do método inventivo, algumas ou toda as etapas descritas aqui são realizadas simultaneamente ou em uma ordem diferente da especificada nos exemplos descritos aqui. Apesar de as etapas serem realizadas em uma ordem de particular em algumas modalidades do método inventivo, algumas etapas podem ser realizadas simultaneamente ou em uma ordem diferente em outras modalidades.
[0124] Um número de modalidades da invenção foi descrito. Não obstante, será compreendido que várias modificações podem ser feitas sem se distanciar do espirito e escopo da invenção. Inúmeras modificações e variações da presente invenção são possíveis em vista dos ensinamentos acima. Deve-se compreender que dentro do escopo das reivindicações em anexo, a invençao pode ser praticada de outra forma além da descrita especificamente aqui.

Claims (15)

1. Codificador de áudio configurado para gerar dados de áudio codificados em resposta a dados de áudio de entrada, em que o codificador inclui pelo menos um filtro de múltiplos estágios acoplado e configurado para filtrar os dados de áudio, caracterizado pelo fato de que o filtro de múltiplos estágios inclui: uma memória de armazenamento; pelo menos dois estágios de filtro biquad, incluindo um primeiro estágio de filtro biquad e um estágio de filtro biquad subsequente, e um controlador, acoplado aos estágios de filtro biquad e configurado para determinar uma sequência única de instruções para ambos o primeiro estágio de filtro biquad e o estágio de filtro biquad subsequente, em que o primeiro estágio de filtro biquad e o estágio de filtro biquad subsequente operam independentemente e em paralelo em resposta à sequência de instruções; em que o primeiro estágio de filtro biquad é acoplado à memória e configurado para realizar a filtragem biquadrática em um bloco de N amostras de entrada em resposta à sequência de instruções para gerar valores intermediários, e para determinar os valores intermediários para a memória, em que os valores intermediários incluem uma versão filtrada de cada um de pelo menos um subconjunto de amostras de entrada; e em que o estágio de filtro biquad subsequente é acoplado à memória e configurado para realizar a filtragem biquadrática em valores armazenados recuperados a partir da memória em resposta à sequência de instruções para gerar um bloco de valores de saída, em que os valores de saída incluem um valor de saída correspondente para cada uma das amostras de entrada no bloco de N amostras de entrada, e os valores armazenados incluem pelo menos alguns dos valores intermediários gerados no primeiro estágio de filtro biquad em resposta ao bloco de N amostras de entrada; em que o filtro de múltiplos estágios é configurado para realizar a filtragem de múltiplos estágios do bloco de N amostras de entrada em um único circuito de processamento com iteração através de um índice de amostra, mas sem iteração através de um índice de estágio de filtro biquadrático.
2. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o filtro de múltiplos estágios possui M estágios de filtro biquad, o estágio de filtro biquad subsequente é configurado para gerar um valor de saída correspondente a uma amostra de entrada "j" em resposta a um subconjunto dos valores armazenados recuperados da memória, em que j é um índice na faixa de M-1 a N-1, o subconjunto incluindo a versão filtrada da amostra de entrada "j", a versão filtrada de uma amostra de entrada "j-1" e a versão filtrada de uma amostra de entrada "j-2".
3. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o filtro de múltiplos estágios possui M estágios de filtro biquad, o estágio de filtro biquad subsequente sendo configurado para gerar um valor de saída correspondente a uma amostra de entrada "j" em resposta a um subconjunto de valores armazenados recuperados da memória, em que j é um índice na faixa de M-1 a N-1, o subconjunto incluindo a versão filtrada da amostra de entrada "j" gerada pelo primeiro estágio de filtro biquad, e um valor gerado pelo estágio de filtro biquad subsequente em resposta a uma amostra de entrada "j-1", e um valor gerado pelo estágio de filtro biquad subsequente em resposta a uma amostra de entrada "j-2".
4. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o estágio de filtro biquad subsequente é configurado para gerar um valor de saída correspondente a cada uma das amostras de entrada em resposta a um subconjunto diferente dos valores armazenados recuperados da memória, cada subconjunto incluindo pelo menos três valores intermediários gerados no primeiro estágio de filtro biquad e recuperado a partir da memória depois de residir na memória por tempos de latência diferentes.
5. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador é um processador que inclui pelo menos uma única instrução, unidade de dados múltiplos programada para implementar o filtro de múltiplos estágios.
6. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador é um processador que inclui múltiplas unidades lógicas aritméticas programadas para implementar os estágios do filtro biquad.
7. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador é um processador que inclui múltiplas unidades de manipulação aritmética programadas para implementar os estágios do filtro biquad.
8. Método para codificar dados de áudio para gerar dados de áudio codificados, incluindo a realização de filtragem de múltiplos estágios em um bloco de N amostras de dados de áudio, em que a filtragem de múltiplos estágios é caracterizado pelo fato de que inclui as etapas de: (a) realizar uma primeira operação de filtragem biquadrática no bloco de N amostras para gerar valores intermediários, e determinando os valores intermediários para uma memória de armazenamento, em que os valores intermediários incluem uma versão filtrada de cada um de pelo menos um subconjunto de N amostras ; e (b) realizar uma segunda operação de filtragem biquadrática nos valores armazenados recuperados a partir da memória, para gerar um bloco de valores de saída, em que os valores de saída incluem um valor de saída correspondente a cada uma das amostras no bloco de N amostras, um subconjunto diferente de valores armazenados é recuperado e filtrado para gerar o valor de saída correspondente a cada uma das amostras no bloco, e cada subconjunto de valores armazenados inclui pelo menos dois valores intermediários gerados durante a realização da etapa (a) que são recuperados da memória após residir na memória por diferentes tempos de latência; em que as etapas (a) e (b) são realizadas em resposta a uma única sequência de instruções, de modo que as etapas (a) e (b) sejam realizadas independentemente e em paralelo em resposta à sequência singular de instruções; em que a filtragem de múltiplos estágios do bloco de N amostras é realizada em um único loop com iteração sobre um índice de amostras, mas sem iteração sobre um índice de estágio de filtro biquadrático.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a filtragem de múltiplos estágios é realizada em um filtro de múltiplos estágios possuindo M estágios, os valores armazenados recuperados na etapa (b) para gerar o valor de saída correspondendo a uma amostra "j", em que j é um índice na faixa de M1 a N-1, inclui a versão filtrada da amostra "j" gerada na etapa (a), a versão filtrada de uma amostra "j-1" gerada na etapa (a), e a versão filtrada de uma amostra "j-2" gerada na etapa (a).
10. Método para processamento de uma sequência de bits codificada, caracterizado pelo fato de que compreende as etapas de: receber a sequência de bits codificada e extrair dados codificados da mesma, que representam um ou mais canais de informação de áudio processada por um filtro de múltiplos estágios; e decodificar os dados codificados para fornecer representações decodificadas de um ou mais canais de informação de áudio processada pelo filtro de múltiplos estágios, em que o filtro de múltiplos estágios opera para realizar independentemente e em paralelo, em resposta a uma sequência única de instruções: (a) uma primeira operação de filtragem biquadrática em um bloco de N amostras para gerar valores intermediários para determinar para uma memória de armazenamento, em que os valores intermediários incluem uma versão filtrada de cada um do pelo menos um subconjunto de N amostras; e (b) uma segunda operação de filtragem biquadrática nos valores armazenados recuperados a partir da memória para gerar um bloco de valores de saída, em que os valores de saída incluem um valor de saída correspondendo a cada uma das amostras no bloco de N amostras, um subconjunto diferente de valores armazenados é recuperado e filtrado para gerar o valor de saída correspondendo a cada uma das amostras no bloco, e cada subconjunto dos valores armazenados inclui pelo menos dois dos valores intermediários gerados durante a realização da etapa (a) que são recuperados a partir da memória depois de residir na memória por tempos de latência diferentes; em que o filtro de múltiplos estágios é configurado para executar a filtragem de múltiplos estágios do bloco de N amostras em um único loop de processamento com iteração sobre um índice de amostra, mas sem iteração sobre um índice de estágio de filtro biquadrático.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o filtro de múltiplos estágios é um filtro biquad de três estágios para realizar a filtragem de passa baixa de limitação de largura de banda.
12. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que um de um ou mais canais é um canal de efeitos de baixa frequência (LFE) e o filtro de múltiplos estágios é um filtro biquad de quatro estágios para realizar a filtragem de passa baixa no canal LFE.
13. Aparelho para processamento de uma sequência de bits codificada, caracterizado pelo fato de que compreende: uma entrada acoplada para receber a sequência de bits codificada; um decodificador acoplado à entrada, e configurado para extrair, a partir da sequência de bits codificada, os dados codificados representando um ou mais canais de informação de áudio processada por um filtro de múltiplos estágios, e decodificar os dados codificados para fornecer as representações decodificadas de um ou mais canais de informação de áudio processada pelo filtro de múltiplos estágios, em que o filtro de múltiplos estágios opera para realizar independentemente e em paralelo, em resposta a uma única sequência de instruções: (a) uma primeira operação de filtragem biquadrática em um bloco de N amostras para gerar valores intermediários para determinar para uma memória de armazenamento, em que os valores intermediários incluem uma versão filtrada de cada uma das pelo menos um subconjunto de N amostras; e (b) uma segunda operação de filtragem biquadrática nos valores armazenados recuperados a partir da memória para gerar um bloco de valores de saída, em que os valores de saída incluem um valor de saída correspondendo a cada uma das amostras no bloco de N amostras, um subconjunto diferente de valores armazenados sendo recuperado e filtrado para gerar o valor de saída correspondente a cada uma das amostras no bloco, e cada subconjunto de valores armazenados incluindo pelo menos dois valores intermediários gerados durante a realização da etapa (a) que são recuperados a partir da memória depois de residir na memória por tempos de latência diferentes; em que o filtro de múltiplos estágios é configurado para executar a filtragem de múltiplos estágios do bloco de N amostras em um único loop de processamento com iteração sobre um índice de amostra, mas sem iteração sobre um índice de estágio de filtro biquadrático.
14. Aparelho, de acordo com a reivindicação 13, caracterizado pelo fato de que o filtro de múltiplos estágios é um filtro biquadrático de três estágios para realizar a filtragem de passa baixa de limitação de largura de banda.
15. Aparelho, de acordo com a reivindicação 13, caracterizado pelo fato de que um de um ou mais canais é um canal de efeitos de baixa frequência (LFE) e o filtro de múltiplos estágios é um filtro biquadrático de quatro estágios para realizar a filtragem de passa baixa no canal LFE.
BR112014027685-4A 2012-05-10 2013-04-17 Codificador de áudio configurado para gerar dados de áudio codificados, método para codificar dados de áudio para gerar dados de áudio codificados, método e aparelho para processamento de uma sequência de bits codificada BR112014027685B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261645291P 2012-05-10 2012-05-10
US61/645,291 2012-05-10
PCT/US2013/036932 WO2013169450A1 (en) 2012-05-10 2013-04-17 Multistage iir filter and parallelized filtering of data with same

Publications (2)

Publication Number Publication Date
BR112014027685A2 BR112014027685A2 (pt) 2017-06-27
BR112014027685B1 true BR112014027685B1 (pt) 2021-10-05

Family

ID=48430922

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014027685-4A BR112014027685B1 (pt) 2012-05-10 2013-04-17 Codificador de áudio configurado para gerar dados de áudio codificados, método para codificar dados de áudio para gerar dados de áudio codificados, método e aparelho para processamento de uma sequência de bits codificada

Country Status (22)

Country Link
US (3) US20160254006A1 (pt)
EP (1) EP2847860B1 (pt)
JP (1) JP5866062B2 (pt)
KR (1) KR101707127B1 (pt)
CN (1) CN104272593B (pt)
AU (1) AU2013260023B2 (pt)
BR (1) BR112014027685B1 (pt)
CA (1) CA2872262C (pt)
DK (1) DK2847860T3 (pt)
ES (1) ES2862999T3 (pt)
HK (1) HK1208568A1 (pt)
HU (1) HUE053514T2 (pt)
IL (1) IL235271B (pt)
IN (1) IN2014DN09176A (pt)
MX (1) MX338857B (pt)
MY (1) MY167846A (pt)
PL (1) PL2847860T3 (pt)
RU (1) RU2599970C2 (pt)
SG (1) SG11201407338SA (pt)
TW (1) TWI538000B (pt)
UA (1) UA112001C2 (pt)
WO (1) WO2013169450A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
SG11201908276SA (en) * 2017-03-09 2019-10-30 Avnera Corp Real-time acoustic processor
RU2716902C1 (ru) * 2019-07-22 2020-03-17 Федеральное государственное бюджетное образовательное учреждение высшего образования "Омский государственный технический университет" (ОмГТУ) Многокаскадный биквадратный фильтр
US11388670B2 (en) * 2019-09-16 2022-07-12 TriSpace Technologies (OPC) Pvt. Ltd. System and method for optimizing power consumption in voice communications in mobile devices
US11165414B2 (en) 2019-12-20 2021-11-02 Infineon Technologies Ag Reconfigurable filter network with shortened settling time
CN113258902B (zh) * 2021-04-29 2022-02-22 睿思芯科(深圳)技术有限公司 一种处理器、滤波方法及相关设备
CN113741972B (zh) * 2021-08-20 2023-08-25 深圳市风云实业有限公司 一种sm3算法的并行处理方法及电子设备

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63222510A (ja) * 1987-03-12 1988-09-16 Oki Electric Ind Co Ltd 多重信号処理装置
EP0520068B1 (en) 1991-01-08 1996-05-15 Dolby Laboratories Licensing Corporation Encoder/decoder for multidimensional sound fields
US5632005A (en) 1991-01-08 1997-05-20 Ray Milton Dolby Encoder/decoder for multidimensional sound fields
US5727119A (en) 1995-03-27 1998-03-10 Dolby Laboratories Licensing Corporation Method and apparatus for efficient implementation of single-sideband filter banks providing accurate measures of spectral magnitude and phase
US6175849B1 (en) * 1998-02-10 2001-01-16 Lucent Technologies, Inc. System for digital filtering in a fixed number of clock cycles
US7933341B2 (en) 2000-02-28 2011-04-26 Broadcom Corporation System and method for high speed communications using digital signal processing
US20020049799A1 (en) 2000-10-24 2002-04-25 Minsheng Wang Parallel implementation for digital infinite impulse response filter
US6836839B2 (en) * 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7290021B2 (en) 2001-04-24 2007-10-30 California Institute Of Technology Method and apparatus for parallel signal processing
JP4446883B2 (ja) * 2002-05-30 2010-04-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ オーディオ符号化
CA2389969A1 (en) 2002-06-25 2003-12-25 John W. Bogdan Digital signal processing of multi-sampled phase
US7152084B2 (en) 2002-11-08 2006-12-19 Socovar, S.E.C. Parallelized infinite impulse response (IIR) and integrator filters
US6873280B2 (en) 2003-06-12 2005-03-29 Northrop Grumman Corporation Conversion employing delta-sigma modulation
US7159002B2 (en) * 2003-08-29 2007-01-02 Texas Instruments Incorporated Biquad digital filter operating at maximum efficiency
US7411444B2 (en) 2003-11-13 2008-08-12 Texas Instruments Incorporated Technique for improving antialiasing and adjacent channel interference filtering using cascaded passive IIR filter stages combined with direct sampling and mixing
US7747666B2 (en) 2004-08-09 2010-06-29 L-3 Communications Corporation Parallel filter realization for wideband programmable digital radios
US7421050B2 (en) 2004-10-14 2008-09-02 Agere Systems Inc. Parallel sampled multi-stage decimated digital loop filter for clock/data recovery
US7319580B2 (en) 2005-03-29 2008-01-15 Intel Corporation Collapsing zipper varactor with inter-digit actuation electrodes for tunable filters
US20110113082A1 (en) * 2007-02-07 2011-05-12 Amirhossein Alimohammad Signal filtering and filter design techniques
JP5059508B2 (ja) * 2007-07-26 2012-10-24 ルネサスエレクトロニクス株式会社 マイクロプロセッサ
TW200919521A (en) 2007-10-16 2009-05-01 Inpaq Technology Co Ltd Chip-type feedthrough filter with over-voltage protection function
TWI538394B (zh) 2009-04-10 2016-06-11 杜比實驗室特許公司 利用順逆向濾波方式獲取所欲非零相移之技術
JP5540211B2 (ja) * 2010-04-06 2014-07-02 株式会社コルグ 1ビットオーディオ信号用イコライズ装置
RU2436228C1 (ru) * 2010-04-21 2011-12-10 Андрей Александрович Костоглотов Цифровой интеллектуальный многокаскадный фильтр

Also Published As

Publication number Publication date
TW201411673A (zh) 2014-03-16
EP2847860A1 (en) 2015-03-18
SG11201407338SA (en) 2014-12-30
US20140046673A1 (en) 2014-02-13
EP2847860B1 (en) 2021-03-03
MX2014013481A (es) 2015-05-07
IL235271B (en) 2019-12-31
KR101707127B1 (ko) 2017-02-15
JP5866062B2 (ja) 2016-02-17
CN104272593B (zh) 2017-02-08
US20160254006A1 (en) 2016-09-01
US20150310872A1 (en) 2015-10-29
UA112001C2 (uk) 2016-07-11
US9076449B2 (en) 2015-07-07
CA2872262C (en) 2017-01-03
US9324335B2 (en) 2016-04-26
AU2013260023A1 (en) 2014-10-30
CA2872262A1 (en) 2013-11-14
PL2847860T3 (pl) 2021-07-05
AU2013260023B2 (en) 2015-11-05
RU2599970C2 (ru) 2016-10-20
HK1208568A1 (en) 2016-03-04
MY167846A (en) 2018-09-26
BR112014027685A2 (pt) 2017-06-27
ES2862999T3 (es) 2021-10-08
CN104272593A (zh) 2015-01-07
JP2015520974A (ja) 2015-07-23
IN2014DN09176A (pt) 2015-07-10
RU2014144746A (ru) 2016-06-10
MX338857B (es) 2016-05-03
KR20140139601A (ko) 2014-12-05
DK2847860T3 (da) 2021-03-29
HUE053514T2 (hu) 2021-07-28
TWI538000B (zh) 2016-06-11
IL235271A0 (en) 2014-12-31
WO2013169450A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
BR112014027685B1 (pt) Codificador de áudio configurado para gerar dados de áudio codificados, método para codificar dados de áudio para gerar dados de áudio codificados, método e aparelho para processamento de uma sequência de bits codificada
EP2949047B1 (en) Data compression and decompression using simd instructions
US9298457B2 (en) SIMD instructions for data compression and decompression
ES2727131T3 (es) Decodificador con filtros configurables
US20090055005A1 (en) Audio Processor
US9274802B2 (en) Data compression and decompression using SIMD instructions
US20130019029A1 (en) Lossless compression of a predictive data stream having mixed data types
KR100778349B1 (ko) 이산값의 시퀀스를 갖는 신호 처리 장치 및 방법
BR122019014628B1 (pt) agrupamento adaptativo de parâmetros para maior eficiência de codificação
BRPI0611546A2 (pt) codificação sem perdas de informações com taxa de bits máxima garantida
BRPI0415152B1 (pt) dispositivo e método para o processamento de pelo menos dois valores de entrada
PT1609084E (pt) Dispositivo e método para a conversão numa representação transformada ou para a conversão inversa da representação transformada
US9787288B2 (en) Optimal factoring of FIR filters
US20100182170A1 (en) Fast approximate dynamic Huffman coding with periodic regeneration and precomputing
US20020147753A1 (en) Methods and systems for raising a numerical value to a fractional power
US8018359B2 (en) Conversion of bit lengths into codes
CN112956131A (zh) 编码装置、解码装置、代码串的数据结构、编码方法、解码方法、编码程序、解码程序
US8819093B2 (en) Systems and methods to reduce I/O and/or speed up out-of-core linear solvers
JP3889738B2 (ja) 逆量子化装置、オーディオ復号化装置、画像復号化装置、逆量子化方法および逆量子化プログラム
Uzelac et al. A fast MPEG audio layer III software decoder
TW202418807A (zh) 非疊代的熵編碼
JPH03182000A (ja) 帯域分割方法

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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