МНОГОКАСКАДНЫЙ IIR-ФИЛЬТР И РАСПАРАЛЛЕЛЕННАЯ ФИЛЬТРАЦИЯ ДАННЫХ ТАКОВЫМ
MULTISTAGE IIR FILTER AND PARALLEL DATA FILTRATION BY SUCH A FILTER

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Перекрестная ссылка на родственные заявки
Данная заявка заявляет приоритет предварительной заявки на патент США №61/645291, поданной 10 мая 2012 г., которая ссылкой полностью включается в настоящее раскрытие.
Область изобретения
1.
Изобретение относится к многокаскадным фильтрам, включающим каскады биквадратных фильтров, и к распараллеленной фильтрации данных (например, аудиоданных) с использованием таких фильтров. Некоторые варианты осуществления изобретения представляют собой способы, системы и процессоры для фильтрации аудиоданных (с использованием многокаскадного фильтра, включающего каскады биквадратных фильтров) в ходе кодирования или декодирования данных в соответствии с одним из форматов, известных как Dolby Digital (AC-3), Dolby Digital Plus (E-AC-3) и Dolby E, или в соответствии с другим форматом кодирования. Dolby, Dolby Digital, Dolby Digital Plus и Dolby E являются торговыми знаками Dolby Laboratories Licensing Corporation.
Предпосылки изобретения
2.
Повсюду в данном раскрытии, в том числе в формуле изобретения, выражение выполнения операции «на» сигналах или данных (например, фильтрация или масштабирование сигналов или данных) используется в широком смысле для обозначения операции непосредственно на сигналах или данных, или на обработанных версиях сигналов или данных (например, на версиях сигналов, которые претерпели предварительную фильтрацию или другую обработку перед выполнением на них указанной операции).
В области обработки сигналов цифровой биквадратный фильтр представляет собой рекурсивный линейный фильтр второго порядка, содержащий два полюса и два нуля. Сокращение «biquad» будет использоваться в настоящем раскрытии для обозначения цифрового биквадратного фильтра. В области Z передаточная функция биквадратного фильтра представляет собой отношение двух квадратичных функций:
<mrow><mi>H</mi><mo stretchy="false">(</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mrow><msub><mi>b</mi><mn>0</mn></msub><mo>+</mo><msub><mi>b</mi><mn>1</mn></msub><msup><mi>z</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mo>+</mo><msub><mi>b</mi><mn>2</mn></msub><msup><mi>z</mi><mrow><mo>−</mo><mn>2</mn></mrow></msup></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>1</mn></msub><msup><mi>z</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><msup><mi>z</mi><mrow><mo>−</mo><mn>2</mn></mrow></msup></mrow></mfrac></mrow>
.
Рекурсивные фильтры высокого порядка (фильтры с бесконечной импульсной характеристикой, или «IIR-фильтры», с порядком выше второго порядка) могут иметь высокую чувствительность к квантованию их коэффициентов и легко могут становиться неустойчивыми. Рекурсивные фильтры первого и второго порядка также могут иметь трудности, связанные с неустойчивостью этого типа, но эти связанные с неустойчивостью трудности являются менее серьезными. Поэтому рекурсивные фильтры высокого порядка, как правило, реализуются как последовательно соединенные в каскад фильтры, включающие последовательный каскад из биквадратных звеньев (и, необязательно, также фильтр первого порядка). Такие последовательно соединенные в каскад фильтры иногда именуются в настоящем раскрытии многокаскадными биквадратными фильтрами и включают последовательность биквадратных фильтров (иногда именуемых в настоящем раскрытии биквадратными каскадами или биквадратными звеньями).
Например, традиционные кодеры, сконфигурированные для кодирования аудиоданных в соответствии с хорошо известным форматом AC-3 (Dolby Digital) или хорошо известными форматами Dolby Digital Plus и Dolby E, реализуют несколько многокаскадных биквадратных фильтров. Например, кодер Dolby Digital Plus, как правило, задействует для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов двухкаскадный биквадратный фильтр (т.е. фильтр, включающий два соединенных в каскад биквадратных фильтра), четырехкаскадный биквадратный фильтр (т.е. фильтр, включающий четыре соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»); и трехкаскадный биквадратный фильтр для реализации фильтрации пропускания нижних частот с ограничением полосы пропускания. Кодер Dolby E, как правило, задействует двухкаскадный биквадратный фильтр (т.е. фильтр, включающий два соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов, и четырехкаскадный биквадратный фильтр (т.е. фильтр, включающий четыре соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»). Кодер Dolby E, как правило, задействует трехкаскадный биквадратный фильтр (т.е. фильтр, включающий три соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»).
0
1
2
1
2
0
1
2
1
2
0
1
2
1
2
Например, фиг. 1 представляет собой схему биквадратного фильтра (относящегося к типу, иногда именуемому «конструкция Direct Form II - Transposed»), включающего элементы 1, 2, 3, 4, 5, b, b, b, -a и -a, соединенные так, как это показано. Элементы 1, 2 и 3 представляют собой элементы сложения, элементы 4 и 5 представляют собой элементы задержки, и каждый из элементов усиления b, b, b, -a и -a применяет к сигналу, утвержденному в его вводе, соответствующий один из коэффициентов усиления b, b, b, -a и -a. И хотя это не показано и не описано в настоящем раскрытии, специалистам в данной области техники хорошо известно, что существуют и другие, эквивалентные конструкции биквадратных фильтров, например «Direct Form I», «Direct Form I - Transposed» и «Direct Form II». Любые такие эквивалентные конструкции биквадратных фильтров находятся в пределах объема изобретения.
Как показано на фиг. 1А, если биквадратный фильтр по фиг. 1 (помеченный на фиг. 1А как Biquad 1) соединен в каскад с биквадратным фильтром, имеющим такую же конструкцию (помеченным на фиг. 1А как Biquad 2), но элементы усиления которого могут применять иные коэффициенты усиления, чем элементы по фиг. 1, то результирующий многокаскадный биквадратный фильтр будет представлять собой один из примеров двухкаскадного биквадратного фильтра, который может быть задействован (например, для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов одного из вышеупомянутых аудиокодеров). В многокаскадном биквадратном фильтре по фиг. 1А выходной сигнал, x1(n), первого каскада является входным сигналом во второй каскад.
Для многокаскадных биквадратных фильтров (и некоторых других многокаскадных IIR-фильтров) вычисление в каждом каскаде выходного дискретного значения в момент времени «n» (т.е. выходного сигнала y(n) каскада) в ответ на значения сигнала x(n) во временной области (входного сигнала или сигнала, сгенерированного в другом каскаде многокаскадного фильтра) в момент времени «n» и предыдущие моменты времени, обладает зависимостью от предыдущих выводов (т.е. выводов y(n-1) и y(n-2) в моменты времени n-1 и n-2). Также, для каждых двух последовательных каскадов (биквадратных фильтров) в многокаскадном биквадратном фильтре вывод каждого более раннего каскада является вводом в следующий каскад, поэтому вывод следующего каскада нельзя определить до тех пор, пока не будет определен вывод более раннего каскада. Эти причины являются основными причинами того, почему для реализации многокаскадного биквадратного фильтра (до настоящего изобретения) не была задействована полностью распараллеленная обработка данных.
Во многих современных архитектурах процессорного ядра (например, в архитектурах процессоров цифровой обработки сигналов) имеются блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или блоков AMU (блоков арифметической обработки), которые могут быть использованы для распараллеливания многих алгоритмов и повышения производительности. Однако традиционные алгоритмы для программирования процессоров с целью реализации многокаскадных биквадратных фильтров не используют команды SIMD и не являются распараллеленными.
Например, кодеры Dolby Digital Plus (которые кодируют аудиоданные в соответствии с форматом Dolby Digital Plus) были реализованы как программируемые процессоры ARM neon (каждый из которых представляет собой процессор ARM Cortex с механизмом Neon SIMD, допускающим параллельную обработку данных) и как программируемые процессоры цифровой обработки сигналов Texas Instruments C64. Многие кодеры аудиоданных (например, кодеры, которые кодируют аудиоданные в соответствии с AC-3, Dolby Digital Plus, Dolby E и/или другими форматами кодирования) были реализованы или могли бы быть реализованы как программируемые процессоры, имеющие любую из большого разнообразия архитектур, содержащих блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или блоков AMU (блоков арифметической обработки). Такие процессоры могли бы программироваться для реализации различных алгоритмов (включенных в кодирование аудиоданных) с использованием параллельной обработки данных. Однако традиционным программированием, которое было задействовано для реализации многокаскадных биквадратных фильтров в таких процессорах, не была реализована параллельная обработка данных.
Типичные варианты осуществления настоящего изобретения задействуют для реализации многокаскадного биквадратного фильтра параллельную обработку данных. Некоторые варианты осуществления изобретения задействуют параллельную обработку данных для реализации многокаскадного биквадратного фильтра, относящегося к типу, используемому при кодировании аудиоданных в соответствии с форматом AC-3 (Dolby Digital), форматом Dolby Digital Plus или форматом Dolby E.
И хотя изобретение не ограничивается использованием при кодировании аудиоданных в соответствии с форматом AC-3, Dolby Digital Plus или Dolby E, некоторые варианты осуществления изобретения представляют собой способы, системы и процессоры для кодирования аудиоданных (например, для кодирования аудиоданных в соответствии с форматом AC-3, Dolby Digital Plus или Dolby E), которые задействуют по меньшей мере один многокаскадный биквадратный фильтр, реализующий один из вариантов осуществления изобретения (или спроектированный в соответствии с ним).
Кодированный битовый поток AC-3 включает от одного до шести каналов звукового содержимого и метаданные, служащие признаком по меньшей мере одной характерной особенности этого звукового содержимого. Звуковое содержимое представляет собой аудиоданные, которые были сжаты с использованием перцепционного кодирования звука.
Подробности кодирования AC-3 (также известного как Dolby Digital) хорошо известны и изложены во многих опубликованных источниках, включая следующие:
стандарт ATSC A52/A: Digital Audio Compression Standard (AC-3), Revision A, Advanced Television Systems Committee, 20 августа 2001;
th
«Flexible Perceptual Coding for Audio Transmission and Storage», авторов Craig C. Todd и др., 96 Convention of the Audio Engineering Society, 26 февраля, 1994, Preprint 3796;
«Design and Implementation of AC-3 Coders», автора Steve Vernon, IEEE Trans. Consumer Electronics, Vol.41, No. 3, август 1995;
глава «Dolby Digital Audio Coding Standards» авторов Robert L. Andersen и Grant A. Davidson, в справочнике The Digital Signal Processing Handbook, Second Edition, Vijay K. Madisetti, Editor-in-Chief, CRC Press, 2009;
«High Quality, Low-Rate Audio Transform Coding for Transmission and Multimedia Applications» авторов Bosi и др., Audio Engineering Society Preprint 3365, 93rd AES Convention, октябрь 1992; и
патенты США №№5583962; 5632005; 5633981; 5727119 и 6021386.
th
Подробности кодирования Dolby Digital (AC-3) и Dolby Digital Plus (иногда именуемого Enhanced AC-3 или «E-AC-3») изложены в статье «Introduction to Dolby Digital Plus, an Enhancement to the Dolby Digital Coding System», AES Convention Paper 6196, 117 AES Convention, 28 октября, 2004, и в технических условиях Dolby Digital/Dolby Digital Plus (ATSC A/52:2010), доступных по адресу:
http://www.atsc.org/cms/index.php/standards/published-standards
.
КРАТКОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В одном из классов вариантов осуществления изобретения изобретение представляет собой многокаскадный фильтр, включающий по меньшей мере два каскада (каждый из которых представляет собой биквадратный фильтр), где каскады объединены c задержкой между указанными каскадами так, что все каскады являются действующими независимо в ответ на единый, общий поток команд с целью выполнения полностью распараллеленной обработки данных на указанных каскадах. Как правило, многокаскадный фильтр также включает контроллер, подключенный для утверждения общего потока команд во всех каскадах, и память данных, соединенную со всеми каскадами, где все каскады являются действующими параллельно с целью фильтрации блока входных значений данных в ответ на общий поток команд, но где каждый из каскадов действует на разные значения данных, и где по меньшей мере один из каскадов действует на значениях данных, которые включают буферизованные значения, сгенерированные другим из каскадов в ответ на подмножество входных значений данных и сохраненные в памяти с отличающимися задержками перед извлечением для обработки в указанном одном из каскадов. Таким образом, многокаскадный фильтр в этих вариантах осуществления изобретения имеет архитектуру SIMD («один поток команд - много потоков данных»), в которой отдельные каскады биквадратных фильтров действуют независимо и параллельно в ответ на единый поток команд. Например, многокаскадный фильтр может включать N каскадов (где N - число больше единицы), и один из каскадов («M+1»-й каскад в последовательности) может действовать на значениях данных, генерируемых предыдущим одним из каскадов («М»-м каскадом в последовательности) в разное время (например, в ответ на последовательность разных входных значений данных блока), сохраненных в буферную память (в разное время) и считываемых («М+1»-м каскадом) из буферной памяти после пребывания в буферной памяти в течение разного времени ожидания.
В некоторых вариантах осуществления изобретения, изобретение представляет собой многокаскадный фильтр, включающий:
буферную память;
по меньшей мере два каскада биквадратных фильтров, в том числе первый каскад биквадратного фильтра и следующий каскад биквадратного фильтра; и
контроллер, соединенный с каскадами биквадратных фильтров и сконфигурированный для утверждения единого потока команд как в первом каскаде биквадратного фильтра, так и в следующем каскаде биквадратного фильтра, где указанный первый каскад биквадратного фильтра и указанный следующий каскад биквадратного фильтра действуют независимо и параллельно в ответ на поток команд,
где первый каскад биквадратного фильтра соединен с памятью и сконфигурирован для выполнения биквадратной фильтрации на блоке из N входных дискретных значений в ответ на поток команд с целью генерирования промежуточных значений и для утверждения этих промежуточных значений в памяти (для хранения в указанной памяти), где промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений, и
где следующий каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на буферизованных значениях, извлеченных из памяти, в ответ на поток команд с целью генерирования блока выходных значений, где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и буферизованные значения включают по меньшей мере некоторые из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра в ответ на блок из N входных дискретных значений.
В типичных вариантах осуществления изобретения многокаскадный фильтр является сконфигурированным для выполнения многокаскадной фильтрации на блоке из N входных значений в едином цикле обработки данных с повторением по индексу дискретных значений, но без повторения по индексу каскадов биквадратных фильтров.
В некоторых вариантах осуществления многокаскадного фильтра согласно изобретению, при этом многокаскадный фильтр содержит М каскадов, следующий каскад биквадратного фильтра является сконфигурированным для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, в ответ на подмножество буферизованных значений, извлеченных из памяти, где j - индекс в интервале от M-1 до N-1, при этом указанное подмножество включает подвергнутую фильтрации версию «j»-го из входных дискретных значений, подвергнутую фильтрации версию «j-1»-го из входных дискретных значений и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений.
В некоторых вариантах осуществления многокаскадного фильтра согласно изобретению следующий каскад биквадратного фильтра является сконфигурированным для генерирования выходного значения, соответствующего каждому из входных дискретных значений, в ответ на другое подмножество буферизованных значений, извлеченных из памяти, где каждое такое подмножество включает по меньшей мере три из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра и извлеченных из памяти после пребывания в указанной памяти в течение разного времени ожидания. Например, в одном из типичных вариантов осуществления изобретения, где многокаскадный фильтр содержит М каскадов биквадратных фильтров, подмножество буферизованных значений, извлекаемое для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включает по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j»-е из входных дискретных значений, по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-1»-е из входных дискретных значений, и по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-2»-е из входных дискретных значений
В другом классе вариантов осуществления изобретения изобретение представляет собой способ выполнения многокаскадной фильтрации на блоке из N входных дискретных значений, при этом указанный способ включает этапы:
(а) выполнения первой операции биквадратной фильтрации на блоке из N входных дискретных значений с целью генерирования промежуточных значений и утверждение промежуточных значений в буферной памяти (для хранения в указанной памяти), где промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений; и
(b) выполнения второй операции биквадратной фильтрации на буферизованных значениях, извлеченных из памяти, с целью генерирования блока выходных значений, где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, другое подмножество буферизованных значений извлекается и фильтруется для генерирования выходного значения, соответствующего каждому из входных дискретных значений в блоке, и каждое такое подмножество буферизованных значений включает по меньшей мере два (например, три) из промежуточных значений, сгенерированных в ходе выполнения этапа (а), которые извлекаются из памяти после пребывания в указанной памяти в течение разного времени ожидания,
где этапы (а) и (b) выполняются в ответ на единый поток команд так, что этапы (а) и (b) выполняются независимо и параллельно в ответ на единый поток команд. В типичных вариантах осуществления изобретения многокаскадная фильтрация блока входных дискретных значений выполняется в едином цикле с повторением по индексу дискретных значений, но без повторения по индексу каскадов биквадратных фильтров.
В некоторых вариантах осуществления способа согласно изобретению, где фильтрация выполняется в многокаскадном фильтре, содержащем М каскадов, буферизованные значения, извлекаемые на этапе (b) для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включают подвергнутую фильтрации версию «j»-го из входных дискретных значений, сгенерированную на этапе (а), подвергнутую фильтрации версию «j-1»-го из входных дискретных значений, сгенерированную на этапе (а), и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений, сгенерированную на этапе (а).
В другом классе вариантов осуществления изобретения изобретение представляет собой аудиокодер, сконфигурированный для генерирования кодированных аудиоданных в ответ на входные аудиоданные, при этом указанный кодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, для фильтрации предварительно обработанной версии аудиоданных). В другом классе вариантов осуществления изобретения изобретение представляет собой способ кодирования аудиоданных с целью генерирования кодированных аудиоданных, что заключается в выполнении какого-либо из вариантов осуществления способа согласно изобретению многокаскадной биквадратной фильтрации на аудиоданных (например, на предварительно обработанной версии аудиоданных). Например, один из вариантов осуществления изобретения представляет собой аудиокодер, включающий каскад предварительной обработки данных (предназначенный для предварительной обработки входных аудиоданных, подлежащих кодированию кодером), где каскад предварительной обработки данных включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, входных данных или предварительно обработанной версии входных данных). Другой вариант осуществления изобретения представляет собой предпроцессор (предназначенный для выполнения предварительной обработки аудиоданных, подлежащих кодированию кодером), где предпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, данных, которые являются входными в предпроцессор, или предварительно обработанной версии таких входных данных).
В другом классе вариантов осуществления изобретения изобретение представляет собой аудиодекодер, сконфигурированный для генерирования декодированных аудиоданных в ответ на кодированные аудиоданные. В некоторых вариантах осуществления изобретения в этом классе декодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации кодированных аудиоданных (например, для фильтрации предварительно обработанной версии кодированных аудиоданных). В другом классе вариантов осуществления изобретения изобретение представляет собой способ декодирования кодированных аудиоданных с целью генерирования декодированных аудиоданных. В некоторых таких вариантах осуществления изобретения декодирование включает выполнение какого-либо из вариантов осуществления способа согласно изобретению многокаскадной биквадратной фильтрации на кодированных аудиоданных (например, на предварительно обработанной версии кодированных аудиоданных). Например, один из вариантов осуществления изобретения представляет собой аудиодекодер, включающий каскад постобработки (предназначенный для постобработки декодированных аудиоданных, которые были декодированы декодером), где каскад постобработки включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, декодированных данных или обработанной версии декодированных данных). Другой вариант осуществления изобретения представляет собой постпроцессор (например, предназначенный для выполнения постобработки декодированных аудиоданных, которые были декодированы декодером), где постпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, декодированных данных, которые являются входными в постпроцессор, или обработанной версии таких входных данных).
В соответствии с типичными вариантами осуществления настоящего изобретения для выполнения многокаскадного фильтра с целью программирования процессора (например, процессора цифровой обработки сигналов или процессора общего назначения) используются команды SIMD (или команды для параллельной обработки данных несколькими блоками ALU или AMU). Многокаскадный фильтр может реализовывать полосовую фильтрацию, фильтрацию пропускания нижних частот (например, в подсистеме LFE аудиокодера), фильтрацию пропускания верхних частот (например, в подсистеме детектора кратковременных сигналов аудиокодера) или другую фильтрацию.
Другие особенности изобретения включают систему или устройство (например, кодер, декодер или процессор), сконфигурированные (например, запрограммированные) для выполнения какого-либо из вариантов осуществления способа согласно изобретению, и машиночитаемый носитель данных (например, диск), на котором хранится код, предназначенный для реализации какого-либо из вариантов осуществления способа согласно изобретению или его этапов. Например, система согласно изобретению может представлять собой или включать в себя программируемый процессор общего назначения, процессор цифровой обработки сигналов или микропроцессор, запрограммированные программным обеспечением или аппаратно-программным обеспечением и/или иначе сконфигурированные для выполнения какой-либо из множества операций на данных, включающих один из вариантов осуществления способа согласно изобретению или его этапов. Такой процессор общего назначения может представлять собой или включать в себя компьютерную систему, включающую устройство ввода, память и схему обработки данных, запрограммированную (и/или иначе сконфигурированную) для выполнения одного из вариантов осуществления способа согласно изобретению (или его этапов) в ответ на утвержденные в ней данные.
Некоторые варианты осуществления изобретения представляют собой кодеры (например, кодеры, которые кодируют аудиоданные в соответствии с форматом Dolby Digital Plus, AC-3 или Dolby E) или декодеры, реализованные как программируемые процессоры (например, процессоры ARM neon, каждый из которых представляет собой процессор ARM Cortex с механизмом Neon SIMD, допускающим параллельную обработку данных, или другие процессоры, содержащие блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или AMU (блоков арифметической обработки)) или программируемые (и/или иначе конфигурируемые) процессоры цифровой обработки сигналов (например, процессоры DSP, содержащие блоки SIMD и/или несколько блоков ALU или AMU).
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
Фиг. 1 - блок-схема традиционного биквадратного фильтра.
Фиг. 1А - блок-схема традиционного многокаскадного биквадратного фильтра.
Фиг. 2 - схема последовательности операций традиционного способа выполнения фильтрации в фильтре, реализованном как последовательно соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»).
Фиг. 3 - схема последовательности операций одного из вариантов осуществления способа согласно изобретению выполнения фильтрации в многокаскадном биквадратном фильтре, включающем соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»), которые действуют параллельно в ответ на единый поток команд.
1
N-1
Фиг. 4 - блок-схема многокаскадного фильтра (например, реализованного программируемым DSP или другим процессором в соответствии с одним из вариантов осуществления изобретения), который включает соединенные в каскад биквадратные фильтры и который может выполнять способ, относящийся к типу, описанному со ссылкой на фиг. 3. На фиг. 4 память 10 включает ячейки памяти, в которых хранится каждый блок входных данных x(n), и ячейки буферной памяти, в которых хранятся все необходимые значения из числа промежуточных значений x(n),…, x(n), сгенерированных биквадратными фильтрами.
Фиг. 5 - блок-схема системы, включающей кодер (включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению) и декодер (также включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению).
Фиг. 6 - схема последовательности операций другого варианта осуществления способа согласно изобретению выполнения фильтрации в многокаскадном биквадратном фильтре, включающем соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»), которые действуют параллельно в ответ на единый поток команд.
Фиг. 7 - схема последовательности операций одного из вариантов осуществления этапов 40, 41 и 42 варианта осуществления способа согласно изобретению по фиг. 6.
Фиг. 8 - схема последовательности операций одного из вариантов осуществления этапов 47, 48 и 49 варианта осуществления способа согласно изобретению по фиг. 6.
Фиг. 9 - схема значений, генерируемых в реализации системы по фиг. 4, где вычисления выполняются на месте.
Фиг. 10 - блок-схема системы, включающей кодер (включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению) и декодер, который представляет собой один из вариантов осуществления согласно изобретению декодера.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Варианты осуществления способа согласно изобретению и систем (например, кодеров и декодеров), сконфигурированных для реализации способа согласно изобретению, будут описаны со ссылкой на фиг. 3, 4, 5, 6, 7 и 8.
Сначала, со ссылкой на фиг. 2, описан традиционный способ фильтрации дискретных значений данных (например, блоков дискретных значений аудиоданных) многокаскадным фильтром, включающим каскад из М биквадратных фильтров (где М - число, которое ниже и на фиг. 2 именуется «nsections»). Одним из примеров такого традиционного многокаскадного биквадратного фильтра является фильтр по вышеописанной фиг. 1А.
В способе по фиг. 2 каждый новый блок из N дискретных значений, подлежащих фильтрации, первоначально буферизуется (на этапе 20). Каждое дискретное значение в блоке опознается по индексу j, где 0≤ j ≤N-1. Каждый каскад (звено) в многокаскадном фильтре опознается по индексу i, где 0≤i ≤M-1.
На этапе 21 индексу i присваивается нулевое начальное значение, и на этапе 22 индексу j присваивается нулевое начальное значение.
На этапе 23 «j»-е входное дискретное значение фильтруется в «i»-м биквадратном фильтре, а затем на этапе 24 индекс j приращивается. Этап 25 определяет, является ли приращенный индекс j (равный j+1) меньшим, чем N. Если на этапе 25 определено, что приращенный индекс j меньше, чем N, этап 23 выполняется снова с целью фильтрации следующего («(j+1)-го») дискретного значения в «i»-м биквадратном фильтре.
Если на этапе 25 определено, что приращенный индекс j равен N (так что все дискретные значения в текущем блоке были подвергнуты фильтрации в текущем биквадратном фильтре), то на этапе 26 приращивается индекс i.
Этап 27 определяет, является ли самый последний приращенный индекс i (равный i+1) меньшим, чем число «nsections» (которое равно М). Если на этапе 27 определено, что самый последний приращенный индекс i меньше М, то с целью фильтрации самого последнего блока промежуточных значений (выводов предыдущего («i»-го) биквадратного фильтра, сгенерированных в предыдущем биквадратном фильтре на предыдущем повторении этапов 22-25) выполняется следующее повторение этапов 22-26 в следующем («i+1»-м) биквадратном фильтре.
Если на этапе 27 определено, что самый последний приращенный индекс i равен М, т.е. обработка всех дискретных значений текущего блока во всех биквадратных фильтрах завершена, то выполняется этап 28. На этапе 28 выводится N подвергнутых фильтрации дискретных значений, сгенерированных путем фильтрации текущего блока входных дискретных значений в многокаскадном фильтре. В этот момент буферизуется (при выполнении этапа 20 заново) какой-либо дополнительный блок из N дискретных значений, подлежащих фильтрации, и способ по фиг. 2 повторяется для фильтрации этого нового блока дискретных значений в многокаскадном фильтре.
Для процесса по фиг. 2 в случае, когда М=2 (т.е. в случае, когда многокаскадный фильтр включает лишь два соединенных в каскад биквадратных фильтра), обработка данных, выполняемая в каждом каскаде многокаскадного фильтра, также описывается нижеследующим псевдокодом, в котором N равно количеству выходных дискретных значений, подлежащих генерированию путем фильтрации блока из N дискретных значений в многокаскадном фильтре:
для (i=0; i<2; i++)
{
для (j=0; j<N; j++)
{
Output[j]=функция(output[j-1], output[j-2], input [j], input[j-1], input[j-2]);
}
}
В ходе выполнения традиционного способа по фиг. 2, так как вывод каждого каскада многокаскадного фильтра для каждого дискретного значения (output[j]) зависит, в общем, от выводов каскада для двух предыдущих дискретных значений (output[j-1] и output[j-2]) и от текущего ввода в каскад («input[j]») и двух предыдущих вводов в каскад (input[j-1] и input[j-2]), операции цикла (этапы 23, 24 и 25 по фиг. 2), реализуемые в пределах каскада, не являются распараллеленными. Также, поскольку вывод первого каскада (i=0) является вводом во второй каскад (i=1), операции по этим каскадам при выполнении традиционного способа по фиг. 2 не являются распараллеленными. Это ведет к высоким требованиям к числу команд (иногда именуемому MIPS или миллионы команд в секунду) для многокаскадного фильтра даже тогда, когда он реализуется процессором, архитектура которого содержит несколько блоков ALU (или AMU) или блоки SIMD.
Далее, со ссылкой на фиг. 3, описан один из вариантов осуществления способа согласно изобретению для фильтрации блока дискретных значений данных (например, блока дискретных значений аудиоданных) многокаскадным фильтром, содержащим каскад из двух биквадратных фильтров. Сначала на этапе 30 каждый новый блок из N дискретных значений, подлежащих фильтрации, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы он был доступен для использования на следующих этапах (включая этапы 31, 33 и 34).
Каждое дискретное значение в блоке опознается по индексу j, где 0≤j≤N-1. Каждый каскад (звено) в многокаскадном фильтре опознается по индексу i, где 0≤i≤1.
На этапе 31 первое входное дискретное значение (j=0) фильтруется в первом (i=0) биквадратном фильтре. Значение, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, при последующих выполнениях этапов 33 и/или 34).
На этапе 32 индекс j приравнивается 1
Затем параллельно выполняются этапы 33 и 34. На этапе 33 «j»-е входное дискретное значение фильтруется в первом (i=0) биквадратном фильтре, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. На этапе 34 «j-1»-е входное дискретное значение во второй (i=1) биквадратный фильтр фильтруется, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах.
Затем на этапе 35 индекс j приращивается. Этап 36 определяет, является ли приращенный индекс j (равный j+1) меньшим, чем N. Если на этапе 36 определено, что приращенный индекс j меньше N, то этапы 33 и 34 выполняются снова для фильтрации следующего входного дискретного значения в первый биквадратный фильтр (на этапе 33) и следующего входного дискретного значения - во второй биквадратный фильтр (этап 34). По меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное каждым повторением каждого из этапов 33 и 34, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. Например, одно или несколько промежуточных значений, сгенерированных в одном или нескольких повторениях в одном или нескольких предыдущих повторениях этапа 33, могут извлекаться из буфера для использования при выполнении этапа 34.
Если на этапе 36 определено, что приращенный индекс j равен N (т.е. что фильтрации в первом биквадратном фильтре были подвергнуты все входные дискретные значения в текущем блоке), то выполняется этап 37.
На этапе 37 фильтруется последнее входное дискретное значение (j=N-1) во второй (i=1) биквадратный фильтр. Значение, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, для вывода на этапе 38).
Затем на этапе 38 выводится (в качестве вывода многокаскадного фильтра в ответ на текущий блок из N входных дискретных значений) N подвергнутых фильтрации дискретных значений, сгенерированных вторым биквадратным фильтром. В этот момент буферизуется (при выполнении этапа 30 заново) какой-либо дополнительный блок из N дискретных значений, подлежащих фильтрации, и способ по фиг. 3 повторяется с целью фильтрации в многокаскадном фильтре нового блока дискретных значений.
Выполняемая (в ходе выполнения способа по фиг. 3) обработка данных в каждом каскаде многокаскадного фильтра также описывается следующим псевдокодом, в котором N равно количеству выходных дискретных значений, подлежащих генерированию путем фильтрации блока из N входных дискретных значений в многокаскадном фильтре, outputstage1[k] - вывод первого каскада многокаскадного фильтра в ответ на k-е входное дискретное значение, outputstage2[k] - вывод второго каскада многокаскадного фильтра в соответствии с k-м входным дискретным значением, а input[k] - k-е входное дискретное значение каскад в первый каскад многокаскадного фильтра:
{обработка первого дискретного значения первого каскада}
для (j=1; j<N; j++)
{
Outputstage1[j]=функция(outputstage1[j-1],
outputstage1[j-2], input[j], input[j-1], input[j-2]);
Outputstage2[j-1]=функция(outputstage2[j-2], outputstage2[j-3],
outputstage1[j-1], outputstage1[j-2], outputstage1[j-3]);
}
{Обработка последнего («N-1»-го) дискретного значения второго каскада.}
Как видно из фиг. 3 и соответствующего псевдокода, обработка данных в обоих каскадах многокаскадного фильтра объединена в единый цикл обработки дискретных значений (этапы 33, 34, 35 и 36 по фиг. 3). Внося задержку на одно дискретное значение между двумя каскадами (в случае двухкаскадного биквадратного фильтра) или, более обобщенно, как это описывается ниже в отношении фиг. 6, фиг. 7 и фиг. 8, задержку на одно дискретное значение между каждым каскадом многокаскадного фильтра, содержащего два или более каскадов биквадратных фильтров, обработку данных на всех каскадах многокаскадного фильтра можно полностью распараллелить согласно изобретению. Обработку блока дискретных значений во всех каскадах биквадратных фильтров многокаскадного фильтра, таким образом, в соответствии с описанным вариантом осуществления изобретения можно распараллелить в едином цикле обработки дискретных значений (объединенном для всех каскадов).
Предполагаются изменения варианта осуществления способа согласно изобретению по фиг. 3, для фильтрации блока дискретных значений (например, блока дискретных значений аудиоданных) многокаскадным фильтром, содержащим каскад из М биквадратных фильтров (где М больше 2). Такие изменения, как правило, реализуются способом, который будет описываться со ссылкой на фиг. 6, 7 и 8.
Сначала на этапе 40 схемы последовательности операций по фиг. 6 каждый новый блок из N дискретных значений, подлежащих фильтрации, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы он был доступен для использования на следующих этапах (включая этапы 41, 43-45 и 48).
Каждое дискретное значение в блоке опознается по индексу j, где 0≤j≤N-1. Каждый биквадратный каскад (звено) в многокаскадном фильтре опознается по индексу i, где 0≤i≤M-1.
На этапе 41 на первых М-1 входных дискретных значениях (от j=0 до j=M-2) в каскадах биквадратных фильтров от i=0 до i=M-2 выполняется фильтрация перед циклом (например, способом, который будет описан со ссылкой на фиг. 7). Следует отметить, что, как показано на фиг. 7, для некоторых каскадов биквадратных фильтров фильтрация перед циклом происходит в соответствии только с подмножеством из первых М-1 входных дискретных значений. Значения, сгенерированные на этом этапе, буферизуются (например, в памяти 10 по фиг. 4) так, чтобы они были доступны для последующего использования (например, при последующих выполнениях этапов 43-45).
На этапе 42 индекс j приравнивается к M-1.
Затем параллельно выполняются этапы 43-45 (по одному этапу на каждый из М каскадов). На этапе 43 «j»-е входное дискретное значение в первый (i=0) биквадратный фильтр фильтруется, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. На этапе 44 фильтруется «j-1»-е входное дискретное значение во второй (i=1) биквадратный фильтр, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. Аналогично (на по меньшей мере одном этапе, выполняемом параллельно с этапами 43 и 44, в предположении, что М больше 2) фильтруется «j-2»-е входное дискретное значение в третий (i=2) биквадратный фильтр, «j-3»-е входное дискретное значение в четвертый (i=3) биквадратный фильтр (в предположении, что М больше или равно 4) и т.д. для каждого дополнительного фильтра из числа биквадратных фильтров от i=4 до i=M-2, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на каждом из этих этапов, буферизуется так, чтобы оно было доступно для использования на следующих этапах. На этапе 45 (выполняемом параллельно с этапами 43 и 44, если М больше или равно 2) «j-M+1»-е входное дискретное значение в последний (i=M-1) биквадратный фильтр фильтруется, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах.
Затем на этапе 46 приращивается индекс j, и этап 47 определяет, является ли приращенный индекс j (равный j+1) меньшим, чем N. Если на этапе 47 определено, что приращенный индекс j меньше N, то этапы 43-45 (и любой другой этап (этапы), выполняемый параллельно с этапами 43-45) выполняются снова для фильтрации следующего дискретного значения в первом биквадратном фильтре (на этапе 43), следующего дискретного значения - во втором биквадратном фильтре (на этапе 44) и т.д. для биквадратного фильтра каждого дополнительного каскада. По меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное каждым повторением каждого из этапов 43-45, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. Например, одно или несколько промежуточных значений, сгенерированных в одном или нескольких предыдущих повторениях этапа 43, могут извлекаться из буфера для использования при выполнении этапа 44.
Если на этапе 47 определено, что приращенный индекс j равен N (так что все входные дискретные значения в текущем блоке были подвергнуты фильтрации в одном из биквадратных фильтров (в фильтре, для которого i=0)), на этапе 48 выполняется фильтрация после цикла.
На этапе 48 выполняется фильтрация после цикла на любых входных дискретных значениях, оставшихся не подвергнутыми фильтрации, для каскадов биквадратных фильтров от i=1 до i=M-1 (например, способом, который будет описываться со ссылкой на фиг. 8). Значение (значения), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, для вывода на этапе 49).
После этапа 48 на этапе 49 N подвергнутых фильтрации дискретных значений, генерируемых завершающим (i=M-1) биквадратным фильтром, выводятся (в качестве вывода многокаскадного фильтра в ответ на текущий блок из N входных дискретных значений). В этот момент буферизуется (при повторном выполнении этапа 40) какой-либо дополнительный блок из N дискретных значений, подлежащих фильтрации, и способ по фиг. 6 повторяется для фильтрации в многокаскадном фильтре нового блока дискретных значений.
Фиг. 7 представляет собой схему последовательности операций этапов 40 и 42 и подробности варианта осуществления этапа 41 варианта осуществления способа согласно изобретению по фиг. 6. Этапы 50-58 по фиг. 7 представляют собой реализацию этапа 41 фильтрации перед циклом по фиг. 6. На этапе 50 первое дискретное значение (j=0) текущего блока фильтруется в первом каскаде (i=0) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапах 51 и 52). На этапе 51 второе дискретное значение блока (j=1) фильтруется в первом каскаде (i=0) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапе 53). На этапе 52 первое дискретное значение блока (j=0) фильтруется во втором каскаде (i=1) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапе 54). Этапы 51 и 52 предпочтительно выполняются параллельно (в ответ на одну и ту же команду или последовательность команд, утвержденную в первом и втором каскадах).
На этапах, показанных на фиг. 7 ниже этапа 51 по вертикали (в том числе на этапах 53 и 56), каждое из дискретных значений текущего блока от третьего (j=2) до «М-1»-го (j=M-2) фильтруется в первом каскаде (i=0) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на каждом из этих этапов, буферизуется так, чтобы оно было доступно для последующего использования. На этапе 53 третье дискретное значение (j=2) блока фильтруется в первом каскаде (i=0) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется так, чтобы оно было доступно для последующего использования. На этапе 56 «М-1»-е дискретное значение (j=М-2) текущего блока фильтруется в первом каскаде (i=0) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется так, чтобы оно было доступно для последующего использования.
На этапах, показанных на фиг. 7 ниже этапа 52 по вертикали (в том числе на этапах 54 и 57), каждое из входных дискретных значений текущего блока от второго (j=1) до «М-2»-го (j=M-3) во втором каскаде (i=1) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на каждом из этих этапов, буферизуется так, чтобы оно было доступно для последующего использования. На этапе 54 второе входное дискретное значение (j=1) во второй каскад биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования. На этапе 57 «М-2»-е входное дискретное значение (j=М-3) во второй каскад биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования.
В общем, для «k»-го каскада биквадратного фильтра, где k - индекс в интервале от 0 до М-2, для фильтрации каждого из входных дискретных значений от первого входного дискретного значения (j=0) в «k»-й каскад биквадратного фильтра до «M-1-k»-го входного дискретного значения (j=M-2-k) в «k»-й каскад биквадратного фильтра выполняется последовательность этапов (колонка этапов по фиг. 7), и значение (значения) подвергнутых фильтрации дискретных значений, сгенерированное на каждом из этих этапов, буферизуется (буферизуются) (например, в памяти 10 по фиг. 4) так, чтобы они были доступны для последующего использования.
Так, если М=3, то выполняются (предпочтительно параллельно) этапы 53, 54 и 55 по фиг. 7. На этапе 53 третье входное дискретное значение (j=2) в первый каскад (i=0) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется. На этапе 54 второе входное дискретное значение (j=1) во второй каскад (i=1) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется. На этапе 55 первое входное дискретное значение (j=0) в третий каскад (i=2) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется.
Аналогично, когда М>5, тогда выполняются (предпочтительно параллельно) этапы из строки этапов ниже строки, включающей этапы 53-55 (как указано на фиг. 7), а затем выполняются (предпочтительно параллельно) этапы из строки этапов, которая включает этапы 56, 57 и 58 по фиг. 7. На этапе 56 «М-1»-е входное дискретное значение (j=M-2) в первый каскад (i=0) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется. На этапе 57 «М-2»-е входное дискретное значение (j=M-3) во второй каскад (i=1) биквадратного фильтра фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется. На этапе 58 первое входное дискретное значение (j=0) в «М-1»-й каскад биквадратного фильтра (i=М-2) фильтруется, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется.
Этапы каждой строки этапов по фиг. 7 (например, этапы 51 и 52 или этапы 53, 54 и 55) предпочтительно выполняются параллельно (в ответ на одну и ту же команду или последовательность команд, утвержденные в имеющих отношение к делу каскадах).
Фиг. 8 представляет собой последовательность операций одного из вариантов осуществления этапов 47 и 49 и подробности одного из вариантов осуществления этапа 48 варианта осуществления способа согласно изобретению по фиг. 6. Этапы 60-66 по фиг. 8 представляют собой одну из реализаций этапа 48 фильтрации после цикла по фиг. 6.
В общем, как показано на фиг. 8, для «k»-го каскада биквадратного фильтра, где k - индекс в интервале от 1 до М-1, для фильтрации каждого из дискретных значений от «N-k+1»-го входного дискретного значения (j=N-k) в «k»-й каскад биквадратного фильтра до последнего входного дискретного значения (j=N-1) в «k»-й каскад биквадратного фильтра выполняется последовательность этапов (колонка этапов по фиг. 8), и значение (значения) подвергнутых фильтрации дискретных значений, сгенерированное (сгенерированные) на каждом из этих этапов, буферизуется (буферизуются) (например, в памяти 10 по фиг. 4) так, чтобы быть доступным (доступными) для последующего использования.
Например, на этапе 60 последнее дискретное значение (j=N-1) текущего блока фильтруется во втором каскаде (i=1) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования. На этапе 61 предпоследнее дискретное значение (j=N-2) этого блока фильтруется в третьем каскаде (i=2) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапе 63). На этапе 63 последнее дискретное значение (j=N-1) блока фильтруется в третьем каскаде (i=2) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования
На этапе 64 последнее дискретное значение (j=N-1) этого блока фильтруется в предпоследнем каскаде (i=М-2) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования.
На этапе 62 «N-M+1»-е дискретное значение блока фильтруется в последнем каскаде (i=М-1) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапах ниже этапа 62 по вертикали на фиг. 8). На этапе 65 предпоследнее дискретное значение (j=N-2) блока фильтруется в последнем каскаде (i=М-1) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, на этапе 66 по фиг. 8). На этапе 66 последнее дискретное значение (j=N-1) блока фильтруется в последнем каскаде (i=М-1) биквадратного фильтра, и значение подвергнутого фильтрации дискретного значения, сгенерированное на этом этапе, предпочтительно буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования.
Этапы из каждой строки этапов по фиг. 8 (например, этапы 64 и 65 или этапы в строке, включающей этапы 60, 61 и 62) предпочтительно выполняются параллельно (в ответ на одну и ту же команду или последовательность команд, утвержденные в имеющих отношение к делу каскадах).
Способ по фиг. 3 (и его изменения, предназначенные для фильтрации блока дискретных значений данных многокаскадным фильтром, включающим каскад из двух или более биквадратных фильтров) выполняет многокаскадную фильтрацию блока из N входных дискретных значений в едином цикле с повторением по индексу дискретных значений (индекс j по фиг. 3), но без повторения по индексу каскадов биквадратных фильтров. Для сравнения, традиционный способ по фиг. 2 обрабатывает блок дискретных значений данных в двух вложенных циклах с повторением как по индексу дискретных значений (индекс j по фиг. 2), так и с повторением по индексу каскадов биквадратных фильтров (индекс i по фиг. 2).
В типичных вариантах осуществления изобретения (например, в варианте осуществления изобретения по фиг. 4, который будет описываться ниже) каскады многокаскадного фильтра согласно изобретению (где каждый из каскадов представляет собой биквадратный фильтр) объединены с задержкой между каскадами так, что все каскады могут действовать независимо, допуская распараллеливание обработки данных на разных каскадах. Все каскады могут действовать параллельно (для фильтрации блока входных значений данных) в ответ на единый, общий поток команд из контроллера, но каждый каскад действует на разных значениях данных, где по меньшей мере один из каскадов действует на значениях данных, которые включают буферизованные значения (сгенерированные одним из других каскадов в ответ на подмножество входных значений данных и сохраненные с разными задержками в буферной памяти перед извлечением для обработки в указанном одном из каскадов). Таким образом, многокаскадный фильтр имеет архитектуру SIMD («один поток команд - много потоков данных»), в которой отдельные каскады биквадратных фильтров действуют независимо и параллельно в ответ на единый поток команд. Например, многокаскадный фильтр может включать N каскадов, и один из каскадов («М+1»-й каскад в последовательности) может действовать на значениях данных, сгенерированных одним из предыдущих каскадов («М»-м каскадом в последовательности) в разное время (например, в ответ на последовательность разных входных значений данных из блока), сохраненных в буферной памяти (в разное время) и считанных («М+1»-м каскадом) из буферной памяти после их пребывания в буферной памяти с разным временем ожидания.
2
M
Далее, со ссылкой на фиг. 4, описан один из классов вариантов осуществления многокаскадного фильтра согласно изобретению. Многокаскадный фильтр по фиг. 4 содержит несколько биквадратных фильтров (М биквадратных фильтров, где М - целое число больше единицы) и является сконфигурированным для выполнения способа, относящегося к типу, описанному со ссылкой на фиг. 3 (или изменения такого способа, как, например, изменение по фиг. 6). Фильтр по фиг. 4 содержит память 10, контроллер 11 и биквадратные фильтры B1, B, …, B, соединенные так, как это показано, и является сконфигурированным для фильтрации блока из N входных значений данных x(n), где «n» - индекс в интервале от 1 до N, в ответ на единый поток команд, утвержденный в биквадратных фильтрах контроллером 11. Каждое из входных значений данных x(n) может представлять собой входное дискретное значение аудиоданных.
Следует принять во внимание, что выражение о том, что «единый поток команд» утвержден в отдельных каскадах (каждый из которых, например, представляет собой биквадратный фильтр) многокаскадного фильтра, используется в настоящем раскрытии в широком смысле, охватывающем как случаи, в которых единый поток команд утвержден во всех каскадах (например, в единой шине или проводнике, с которыми соединены все каскады), так и случаи, в которых в каскадах одновременно (или по существу одновременно) утверждены одинаковые (или по существу одинаковые) потоки команд (например, каждый поток утвержден в отдельной шине или проводнике, связанными с одним из каскадов).
1
2
1
2
i
i-1
i
M
M
В ответ на блок входных значений данных x(n) фильтр B1 генерирует N промежуточных (подвергнутых биквадратной фильтрации) значений x(n) и утверждает их в ячейках буферной памяти в памяти 10. При применении фильтр B извлекает требуемые промежуточные значения x(n) из памяти 10, генерирует в ответ на них промежуточные (подвергнутые биквадратной фильтрации) значения x(n) и утверждает промежуточные значения, которые он генерирует, в ячейках буферной памяти в памяти 10. Аналогично, при применении каждый из остальных биквадратных фильтров (фильтр B, где i - индекс в интервале от 3 до M) извлекает промежуточные значения x(n) из памяти 10, генерирует в ответ на них подвергнутые биквадратной фильтрации значения x(n) и утверждает значения, которые он генерирует, в ячейках буферной памяти в памяти 10. Подвергнутые биквадратной фильтрации значения, x(n)=y(n), сгенерированные в завершающем биквадратном фильтре (B) составляют блок из N полностью подвергнутых фильтрации выходных значений данных, сгенерированных в ответ на блок входных значений данных x(n).
1
M-1
2
M-1
1
M-1
1
M-1
Память 10 содержит ячейки памяти, в которых хранится каждый блок входных данных x(n), и ячейки буферной памяти, в которых хранятся промежуточные значения x(n),…, x(n), сгенерированные биквадратными фильтрами B1, B, …, B (например, буферные ячейки, в которых хранятся промежуточные значения x(n),…, x(n), сгенерированные для каждого блока входных данных). В некоторых реализациях, для которых вычисления выполняются на месте, для хранения промежуточных значений x(n), …, x(n) могут использоваться те же ячейки памяти, которые использовались для хранения входных данных x(n), после того, как конкретные входные дискретные значения данных больше не будут нужны для многокаскадного фильтра. В таких реализациях память 10, как правило, необязательно включает больше (или значительно больше) ячеек памяти, чем обычная память (предназначенная для реализации традиционной, нераспараллеленной версии многокаскадного фильтра), поскольку такая традиционная память, как правило, может включать ячейки памяти для хранения каждого блока входных данных, x(n), подлежащих фильтрации, и каждое выходное значение, сгенерированное каждым из каскадов многокаскадного фильтра, которые требуются для работы самого фильтра и/или для работы каждого из следующих каскадов фильтра.
Например, фиг. 9 представляет собой схему значений, сгенерированных в реализации системы по фиг. 4, где вычисления выполняются на месте, в случае, когда N=4 и M=2 (т.е. в случае двухкаскадной биквадратной операции на блоках из 4 дискретных значений единовременно).
В примере по фиг. 9 начинают с четырех дискретных значений во входном буфере, x(0) … x(3).
На первом этапе дискретное значение x(0) фильтруется через фильтр B0 (биквадратный фильтр с первым каскадом), вырабатывающий дискретное значение x1(0). Дискретное значение x1(0) сохраняется в памяти в ячейке, ранее занятой дискретным значением x(0). Все остальные ячейки памяти остаются неизменными.
На втором этапе дискретное значение x1(0) фильтруется через фильтр B1 (биквадратный фильтр со вторым каскадом), вырабатывающий дискретное значение y(0). Дискретное значение y(0) сохраняется в памяти в ячейке, ранее занятой дискретным значением x1(0).
Параллельно дискретное значение x(1) фильтруется через фильтр B0, вырабатывающий дискретное значение x1(1). Дискретное значение x1(1) сохраняется в памяти в ячейке, ранее занятой дискретным значением x(1).
На следующих этапах обработка данных продолжается до тех пор, пока все входные дискретные значения x(0) … x(3) не будут замещены выходными дискретными значениями y(0) … y(3).
1
2
В примере по фиг. 9, когда фильтр B1 применяется к дискретному значению x1(2), дискретные значения x1(1) и x1(0) уже не пребывают в буфере (были замещены y(0) и y(1)). Вместо этого в двух переменных состояния, связанных с фильтром B1, содержатся дискретные значения, полученные фильтром B1 из x1(1) и x1(0) (т.е. дискретные значения, соответствующие s(n) и s(n) на фиг. 1).
1
2
В примере по фиг. 9 каждый фильтр (например, каждый из фильтров B0 и B1) требует для использования при фильтрации «j»-го входного дискретного значения текущего блока доступа к ячейкам памяти, в которых хранятся два дискретных значения (соответствующих s(n) и s(n) на фиг. 1), которые он генерирует (в ответ на «j-1»-е и «j-2»-е входные дискретные значения текущего блока из N входных дискретных значений). Эти ячейки памяти могут находиться в памяти 10 системы по фиг. 4 (или могут представлять собой ячейки другой буферной памяти).
1
2
1
2
Для каждого из фильтров каждая пара сохраненных дискретных значений (соответствующих s(n) и s(n) на фиг. 1), которые были сгенерированы фильтром, обновляется каждый раз, когда в фильтре утверждается новое входное дискретное значение (с приращенным индексом j). Сохраненные дискретные значения (соответствующие s(n) и s(n) на фиг. 1) представляют собой примеры «промежуточных значений» (в том смысле, в каком эта фраза используется где-либо в настоящем раскрытии), которые генерируются фильтром (представляющим собой один каскад многокаскадного фильтра) и буферизуются для последующего использования согласно изобретению, однако они впоследствии используются каскадом фильтра, который их генерирует (а не другим каскадом многокаскадного фильтра).
1
M-1
Несмотря на то что фиг. 9 показывает конкретный пример способа согласно изобретению, использующего фильтрацию на месте, где длина блока (N) равна 4, а количество каскадов (M) биквадратных фильтров в фильтре согласно изобретению равно 2, варианты осуществления способа согласно изобретению, использующего фильтрацию на месте, предполагаются для любых значений М и N при условии, что M>1 и N>M. В реализации по фиг. 9 (и в других вариантах осуществления изобретения, использующих фильтрацию на месте, где длина блока отлична от 4 и/или количество биквадратных каскадов отлично от 2), для хранения промежуточных значений x(n), …, x(n) могут использовать те же ячейки памяти (например, в памяти 10 по фиг. 4), которые используются для хранения входных данных x(n), если конкретные входные дискретные значения данных больше не нужны для многокаскадного фильтра.
1
2
M
Фильтр по фиг. 4 может быть реализован путем программирования процессора цифровой обработки сигналов (DSP) или другого процессора, который включает память (выполняющую функцию памяти 10), контроллер (выполняющий функцию контроллера 11) и блоки ALU (арифметические логические блоки) или блоки AMU (блоки арифметической обработки), где каждый из биквадратных фильтров B, B, …, B реализован как соответственно сконфигурированный один из блоков ALU или AMU.
Таким образом, фильтр по фиг. 4 содержит:
1
2
M
1
2
буферную память (буферные ячейки в памяти 10); по меньшей мере два каскада биквадратных фильтров (биквадратные фильтры B, B, …, B), включающие первый каскад биквадратного фильтра (например, биквадратный фильтр B) и следующий каскад биквадратного фильтра (например, биквадратный фильтр B); и
контроллер, соединенный с каскадами биквадратных фильтров и сконфигурированный для утверждения единого потока команд как в первый каскад биквадратного фильтра, так и в следующий каскад биквадратного фильтра. Первый каскад биквадратного фильтра и следующий каскад биквадратного фильтра (и каждый из других каскадов биквадратных фильтров фильтра по фиг. 4) действуют независимо и параллельно в ответ на поток команд.
1
1
2
Первый каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на блоке из N входных дискретных значений в ответ на поток команд с целью генерирования промежуточных значений (например, значений x(n)) и для утверждения этих промежуточных значений в памяти (для хранения в указанной памяти). Эти промежуточные значения включают подвергнутую фильтрации версию каждого из входных дискретных значений. В некоторых вариантах осуществления изобретения необходимо, чтобы в каждый момент времени в памяти 10 присутствовало не более одного промежуточного значения x(n). Следующий каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на буферизованных значениях, извлеченных из памяти в ответ на поток команд с целью генерирования блока выходных значений (например, значений x(n)), где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и буферизованные значения включают по меньшей мере некоторые из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра в ответ на блок из N входных дискретных значений.
2
В варианте осуществления изобретения, где многокаскадный фильтр содержит М каскадов, следующий каскад биквадратного фильтра (например, фильтр В по фиг. 4) сконфигурирован для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений в ответ на подмножество буферизованных значений, извлеченных из памяти, где j - индекс в интервале от M-1 до N-1, при этом указанное подмножество включает подвергнутую фильтрации версию «j»-го из входных дискретных значений, подвергнутую фильтрации версию «j-1»-го из входных дискретных значений и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений.
2
2
1
1
1
2
Этот следующий каскад биквадратного фильтра (например, фильтр Впо фиг. 4) сконфигурирован для генерирования выходного значения (x(n)), соответствующего каждому из входных дискретных значений, x(n), в ответ на другое подмножество буферизованных значений, извлеченных из памяти, где каждое такое подмножество включает по меньшей мере два (например, три) из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра (например, значения x(n), x(n-1) и x(n-2), указанные на фиг. 4) и извлеченные из памяти после пребывания в указанной памяти с разным временем ожидания. Конкретнее, в одном из вариантов осуществления изобретения, где многокаскадный фильтр содержит М каскадов, подмножество буферизованных значений, извлекаемых фильтром В для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включает по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j»-е из входных дискретных значений, по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-1»-е из входных дискретных значений, и по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-2»-е из входных дискретных значений,
Фильтр по фиг. 4 сконфигурирован для выполнения многокаскадной фильтрации на блоке из N входных дискретных значений (значений данных x(n)), которая включает выполнение этапов:
1
1
1
(а) выполнения первой операции биквадратной фильтрации на блоке из N входных дискретных значений с целью генерирования промежуточных значений (например, значений x(n), x(n-1) и x(n-2), указанных на фиг. 4) и утверждения промежуточных значений в буферной памяти (для хранения в указанной памяти), где промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений; и
2
1
1
1
(b) выполнения второй операции биквадратной фильтрации на буферизованных значениях, извлеченных из памяти, с целью генерирования блока выходных значений (например, значений x(n), указанных на фиг. 4), где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и другое подмножество буферизованных значений извлекается и фильтруется для генерирования выходного значения, соответствующего каждому из входных дискретных значений в блоке, и каждое указанное подмножество буферизованных значений включает по меньшей мере два (например, три) из промежуточных значений, сгенерированных путем выполнения этапа (а) (например, значения x(n), x(n-1) и x(n-2), указанные на фиг. 4), которые извлечены из памяти после пребывания в указанной памяти в течение разного времени ожидания,
где этапы (а) и (b) выполняются в ответ на единый поток команд так, что этапы (а) и (b) выполняются в ответ на этот единый поток команд независимо и параллельно.
В варианте осуществления изобретения, где фильтрация выполняется в многокаскадном фильтре, содержащем М каскадов, буферизованные значения, извлеченные на этапе (b) для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включают подвергнутую фильтрации версию «j»-го из входных дискретных значений, сгенерированных на этапе (а), подвергнутую фильтрации версию «j-1»-го из входных дискретных значений, сгенерированных на этапе (а), и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений, сгенерированных на этапе (а).
Фиг. 5 представляет собой блок-схему системы, содержащей кодер (кодер 150), содержащий один из вариантов осуществления многокаскадного фильтра согласно изобретению («фильтр MB» 153). Например, фильтр 153 может относиться к типу, показанному и описанному со ссылкой на фиг. 4. Кодер 150, необязательно, включает два или больше многокаскадных фильтров, каждый из которых представляет собой один из вариантов осуществления многокаскадного фильтра согласно изобретению. В ответ на входные дискретные значения аудиоданных кодер 150 генерирует кодированные аудиоданные и утверждает кодированные аудиоданные в подсистеме 151 доставки.
Подсистема 151 доставки сконфигурирована для хранения кодированных аудиоданных и/или для передачи сигнала, служащего признаком кодированных аудиоданных. Декодер 152 подключен и сконфигурирован (например, запрограммирован) для приема кодированных аудиоданных из подсистемы 151 (например, путем считывания или извлечения кодированных аудиоданных из памяти в подсистеме 151 или путем приема сигнала, служащего признаком кодированных аудиоданных, который был передан подсистемой 151).
Декодер содержит один из вариантов осуществления многокаскадного фильтра согласно изобретению («фильтр МВ» 154). Например, фильтр 154 может относиться к типу, показанному и описанному со ссылкой на фиг. 4. Декодер 152, необязательно, содержит два или больше многокаскадных фильтров, каждый из которых представляет собой один из вариантов осуществления многокаскадного фильтра согласно изобретению. Декодер 152 действует для декодирования кодированных аудиоданных, посредством чего генерируются декодированные аудиоданные.
Система по фиг. 5 также содержит подсистему 155 предварительной обработки аудиоданных («предпроцессор»), сконфигурированную для выполнения предварительной обработки аудиоданных, подлежащих кодированию кодером 150. Предпроцессор 155 включает один из вариантов осуществления многокаскадного фильтра согласно изобретению («фильтр МВ» 157). Например, фильтр 157 может относиться к типу, показанному и описанному со ссылкой на фиг. 4.
Система по фиг. 5 также включает подсистему 156 постобработки аудиоданных («постпроцессор»), сконфигурированную для выполнения постобработки декодированных аудиоданных, которые были декодированы декодером 154. Постпроцессор 156 включает один из вариантов осуществления многокаскадного фильтра согласно изобретению («фильтр МВ» 158). Например, фильтр 158 может относиться к типу, показанному и описанному со ссылкой на фиг. 4.
В некоторых реализациях, кодер 150 представляет собой кодер AC-3 (или усовершенствованный AC-3 или Dolby E), который сконфигурирован для генерирования кодированного битового потока аудиоданных AC-3 (или усовершенствованного AC-3 или Dolby E) в ответ на входные аудиоданные во временной области, и декодер 52 представляет собой декодер AC-3 (или усовершенствованный AC-3 или Dolby E).
В одном из классов вариантов осуществления изобретения изобретение представляет собой аудиокодер (например, кодер 150 по фиг. 5), сконфигурированный для генерирования кодированных аудиоданных в ответ на входные аудиоданные, где указанный кодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, для фильтрации предварительно обработанной версии аудиоданных). Кодер 150 сконфигурирован для кодирования аудиоданных с целью генерирования кодированных аудиоданных, что заключается в выполнении одного из вариантов осуществления способа многокаскадной фильтрации согласно изобретению на аудиоданных (например, на предварительно обработанной версии аудиоданных).
В одном из классов вариантов осуществления изобретения изобретение представляет собой аудиодекодер (например, декодер 152 по фиг. 5), сконфигурированный для генерирования декодированных аудиоданных в ответ на кодированные аудиоданные, где указанный декодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации кодированных аудиоданных (например, для фильтрации предварительно обработанной версии кодированных аудиоданных). Декодер 152 сконфигурирован для декодирования кодированных аудиоданных с целью генерирования декодированных аудиоданных, что заключается в выполнении одного из вариантов осуществления способа многокаскадной фильтрации согласно изобретению на кодированных аудиоданных (например, на предварительно обработанной версии кодированных аудиоданных).
Другой вариант осуществления изобретения представляет собой предпроцессор (например, предпроцессор 155 по фиг. 5), предназначенный для выполнения предварительной обработки аудиоданных (например, аудиоданных, подлежащих кодированию кодером), где предпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, данных, которые представляют собой ввод в предпроцессор, или предварительно обработанной версии таких входных данных).
Другой вариант осуществления изобретения представляет собой постпроцессор (например, постпроцессор 156 по фиг. 5), предназначенный для выполнения постобработки декодированных аудиоданных, которые были декодированы декодером, где постпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, декодированных данных, которые представляют собой ввод в постпроцессор, или предварительно обработанной версии таких входных данных).
Фиг. 10 представляет собой блок-схему системы, включающей кодер (кодер 150), включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению («фильтр МВ» 153). Кодер 150 по фиг. 10 является таким же, как кодер 150 по фиг. 5, и он может быть реализован любым из способов, которыми может быть реализован кодер 150 по фиг. 5. Многокаскадный фильтр 153 может реализовывать какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению. В ответ на входные дискретные значения аудиоданных кодер 150 генерирует кодированные аудиоданные (представляющие один или несколько входных звуковых каналов) и утверждает кодированные аудиоданные в подсистеме 151 доставки.
Подсистема 151 доставки сконфигурирована для хранения кодированных аудиоданных и/или для передачи сигнала, служащего признаком кодированных аудиоданных. Подсистема 151 по фиг. 10 является такой же, как подсистема 151 по фиг. 5, и она может быть реализована любым из способов, которым может быть реализована подсистема 151 по фиг. 5.
Декодер 252 по фиг. 10 содержит ввод, подключенный для приема кодированных аудиоданных из подсистемы 151 (например, путем считывания или извлечения кодированных аудиоданных из памяти подсистемы 151 или путем приема сигнала, служащего признаком кодированных аудиоданных, который был передан подсистемой 151).
Декодер 252 сконфигурирован (например, запрограммирован) для извлечения (из принимаемого кодированного битового потока) кодированных данных, представляющих один или несколько каналов звуковой информации, обработанной многокаскадным фильтром 153, и для декодирования кодированных данных с целью создания декодированных представлений одного или нескольких каналов звуковой информации.
Согласно типичным вариантам осуществления изобретения для программирования процессора (например, процессора цифровой обработки сигналов или процессора общего назначения) с целью реализации многокаскадного фильтра используются команды SIMD (или команды на параллельную обработку несколькими блоками ALU или AMU). Многокаскадный фильтр может реализовывать фильтрацию пропускания нижних частот с ограничением полосы пропускания, фильтрацию пропускания нижних частот (например, в подсистеме LFE аудиокодера), фильтрацию пропускания верхних частот (например, в подсистеме детектора кратковременных сигналов аудиокодера) или другую фильтрацию.
Другие особенности изобретения включают систему или устройство (например, кодер, декодер или процессор), сконфигурированные (например, запрограммированные) для выполнения какого-либо из вариантов осуществления способа согласно изобретению, и машиночитаемый носитель данных (например, диск), на котором хранится код для реализации какого-либо из вариантов осуществления способа согласно изобретению или его этапов. Например, система согласно изобретению может представлять собой или включать в себя программируемый процессор общего назначения, процессор цифровой обработки сигналов или микропроцессор, запрограммированные программным обеспечением или программно-аппаратным обеспечением и/или иначе сконфигурированный для выполнения одной из множества операций на данных, в том числе одного из вариантов осуществления способа согласно изобретению или его этапов. Такой процессор общего назначения может представлять собой или включать в себя компьютерную систему, включающую устройство ввода, память и схему обработки данных, запрограммированную (и/или иначе сконфигурированную) для выполнения одного из вариантов осуществления способа согласно изобретению (или его этапов) в ответ на утвержденные в ней данные
Некоторые варианты осуществления изобретения представляют собой кодеры (например, кодеры, которые кодируют аудиоданные в соответствии с форматом Dolby Digital Plus, AC-3 или Dolby E) или декодеры, реализованные как запрограммированные процессоры (например, процессоры ARM neon, каждый из которых представляет собой процессор ARM Cortex с механизмом Neon SIMD, допускающим параллельную обработку данных, или другие процессоры, содержащие блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или AMU (блоков арифметической обработки)) или запрограммированные (и/или иначе сконфигурированные) процессоры цифровой обработки сигналов (например, процессоры DSP, содержащие блоки SIMD и/или несколько блоков ALU или AMU).
Объединение операций всех каскадов биквадратных фильтров многокаскадного биквадратного фильтра (в едином цикле обработки дискретных значений) согласно типичным вариантам осуществления изобретения повышает производительность, делая возможной параллельность. Путем реализации одного из вариантов осуществления способа согласно изобретению процессоры с блоками SIMD и несколькими блоками ALU (или AMU) могут эффективно использовать свои ресурсы.
Типичные варианты осуществления способа согласно изобретению, предназначенные для реализации многокаскадного биквадратного фильтра, не затрагивают точность вывода или устойчивость фильтра (относительно точности и устойчивости, достигаемых традиционной реализацией фильтра).
Испытания, выполненные автором изобретения, показали, что кодер, сконфигурированный для кодирования аудиоданных в соответствии с форматом Dolby Digital Plus и реализованный как процессор цифровой обработки сигналов Texas Instruments C64, запрограммированный для включения одного из вариантов осуществления двухкаскадного биквадратного фильтра согласно изобретению (реализующего фильтрацию пропускания верхних частот в подсистеме детектора кратковременных сигналов кодера), требует для фильтрации типичного блока аудиоданных лишь 1846 циклов, в отличие от среднего количества циклов (4141), требуемых для фильтрации блока, когда кодер вместо этого запрограммирован традиционно так, чтобы он включал традиционную (не распараллеленную) реализацию двухкаскадного фильтра.
Испытания, выполненные автором изобретения, также показали, что кодер, сконфигурированный для кодирования аудиоданных в соответствии с форматом Dolby Digital Plus и реализованный как процессор цифровой обработки сигналов Texas Instruments C64, запрограммированный для включения одного из вариантов согласно изобретению четырехкаскадного биквадратного фильтра согласно изобретению (реализующего фильтрацию пропускания нижних частот в подсистеме низкочастотных эффектов («LFE») кодера), требует для фильтрации типичного блока аудиоданных в среднем лишь 5802 циклов, в отличие от среднего количества циклов (10375), требуемых для фильтрации блока, когда кодер вместо этого запрограммирован традиционно так, чтобы он включал традиционную (не распараллеленную) реализацию четырехкаскадного фильтра.
Ожидается, что изобретение также может обеспечивать аналогичные преимущества в отношении производительности, когда изобретательский фильтр реализуется соответствующим программированием других процессоров (имеющих другие архитектуры процессорного ядра). Также ожидается, что степень повышения производительности будет зависеть от архитектуры процессора, количества каскадов фильтра и количества полюсов в фильтре.
Изобретение может быть реализовано в аппаратном обеспечении, аппаратно-программном обеспечении или программном обеспечении, а также как их сочетание (например, как программируемая логическая матрица). Если не обусловлено иное, алгоритмы или процессы, включенные как часть изобретения, в сущности не относятся к какому-либо конкретному компьютеру или другому устройству. В частности, различные машины общего назначения могут использоваться с программами, написанными в соответствии с идеями настоящего раскрытия, или для выполнения необходимых этапов способа может быть более удобным создание более специализированных устройств (например, интегральных микросхем). Таким образом, изобретение может быть реализовано в одной или нескольких компьютерных программах, исполняемых на одной или нескольких программируемых компьютерных системах (например, на компьютерной системе, которая реализует кодер по фиг. 5), каждая из которых включает по меньшей мере один процессор, по меньшей мере одну систему хранения данных (в том числе энергозависимую и энергонезависимую память и/или запоминающие элементы), по меньшей мере одно устройство или порт ввода и по меньшей мере одно устройство или порт вывода. Программный код применяется к входным данным для выполнения функций, описанных в настоящем раскрытии и для генерирования выходной информации. Выходная информация известным образом применяется к одному или нескольким устройствам вывода.
Для установления связи с компьютерной системой каждая такая программа может быть реализована на любом желаемом компьютерном языке (включая машинные, ассемблерные или высокоуровневые процедурные, логические или объектно-ориентированные языки программирования). В любом случае, язык может быть компилируемым или интерпретируемым языком.
Например, различные функции и этапы вариантов осуществления изобретения, когда они реализовываются последовательностями команд компьютерного программного обеспечения, могут быть реализованы многопотоковыми последовательностями команд программного обеспечения, запускаемыми в подходящем аппаратном обеспечении цифровой обработки сигналов, и, в этом случае, различные устройства, этапы и функции вариантов осуществления изобретения могут соответствовать частям команд программного обеспечения.
Каждая такая компьютерная программа предпочтительно хранится или загружается на носитель данных или устройство (например, твердотельную память или носители либо магнитные или оптические носители), пригодные для считывания специализированным программируемым компьютером или программируемым компьютером общего назначения с целью конфигурирования и приведения в действие компьютера, когда носитель данных или устройство считывается компьютерной системой для выполнения процедур, описываемых в настоящем раскрытии. Система согласно изобретению также может быть реализована как машиночитаемый носитель данных, сконфигурированный (например, хранящийся в памяти) компьютерной программой, где носитель данных, сконфигурированный таким образом, вызывает действие компьютерной системы обусловленным и предварительно определенным образом с целью выполнения функций, описываемых в настоящем раскрытии.
Предполагается, что многокаскадные фильтры, отдельные каскады которых представляют собой IIR-фильтры, но не биквадратные фильтры (которыми они являются в частных вариантах осуществления изобретения, описанных в настоящем раскрытии), могут быть реализованы согласно изобретению так, чтобы обработка данных их отдельных каскадов была распараллелена (например, чтобы все их каскадах были способны действовать независимо в ответ на единый, общий поток команд для выполнения полностью распараллеленной обработки данных на указанных каскадах). Например, многокаскадный фильтр, относящийся к типу, описанному в опубликованной заявке на патент США №2012/0019723 A1, опубликованной 26 января 2012 г., может быть модифицирован в соответствии с одним из вариантов осуществления настоящего изобретения так, чтобы обработка данных его отдельных каскадов являлась распараллеленной (например, чтобы все его каскады действовали независимо в ответ на единый, общий поток команд с целью выполнения полностью распараллеленной обработки данных в указанных каскадах).
В некоторых вариантах осуществления способа согласно изобретению некоторые или все этапы, описанные в настоящем раскрытии, выполняются одновременно или в ином порядке, отличном от указанного в примерах, описанных в настоящем раскрытии. И хотя в некоторых вариантах осуществления способа согласно изобретению этапы выполняются в конкретном порядке, некоторые этапы могут выполняться одновременно или в ином порядке в других вариантах осуществления изобретения.
Было описано несколько вариантов осуществления изобретения. Тем не менее следует понимать, что без отступления от сути и объема изобретения могут делаться различные модификации. В свете приведенных выше идей возможны многочисленные модификации и изменения настоящего изобретения. Следует понимать, что в пределах объема прилагаемой формулы изобретения изобретение может применяться на практике иначе, чем это описано конкретно в настоящем раскрытии.