АУДИО КОДЕР, АУДИО ДЕКОДЕР, СПОСОБ КОДИРОВАНИЯ АУДИО ИНФОРМАЦИИ, СПОСОБ ДЕКОДИРОВАНИЯ АУДИО ИНФОРМАЦИИ И КОМПЬЮТЕРНАЯ ПРОГРАММА, ИСПОЛЬЗУЮЩАЯ ХЭШ-ТАБЛИЦУ, КОТОРАЯ ОПИСЫВАЕТ ЗНАЧИМЫЕ ЗНАЧЕНИЯ СОСТОЯНИЯ И ГРАНИЦЫ ИНТЕРВАЛА
AUDIO ENCODER, AUDIO DECODER, METHOD OF ENCODING AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAMME USING HASH TABLE DESCRIBING SIGNIFICANT STATE VALUES AND INTERVAL BOUNDARIES

Область применения
Воплощения в соответствии с изобретением связаны с аудио декодером для обеспечения декодированной аудио информации на основе кодированной аудио информации, аудио кодером для обеспечения кодированной аудио информации на основе входной аудио информации, способом для получения декодированной аудио информации на основе кодированной аудио информации, способом получения кодированной аудио информации на основе входной аудио информации и компьютерной программой.
Воплощения в соответствии с изобретением связаны с улучшенным спектральным бесшумным кодированием, которое может быть использовано в аудио кодере и декодере, например, в так называемом едином кодере речи и аудио (USAC).
Уровень техники
Далее будет кратко описан уровень техники для того, чтобы облегчить понимание настоящего изобретения и его преимуществ. За последние десять лет были предприняты большие усилия для создания возможности цифрового хранения и распространения аудио содержания с хорошей эффективностью битрейта. Одним из важных достижений на этом пути является определение международного стандарта ISO/IEC 14496-3. Часть 3 данного стандарта связана с кодированием и декодированием аудио содержания, а подраздел 4 части 3 связан с общим аудио кодированием, ISO/IEC 14496, часть 3, раздел 4 определяет концепцию кодирования и декодирования общего аудио содержания. Кроме этого были предложены дальнейшие улучшения с целью повышения качества и/или снижения необходимой скорости передачи данных.
Согласно концепции, описанной в указанном стандарте, звуковой сигнал во временной области преобразуется в частотно-временное представление. Преобразование из временной области в частотно-временную область, как правило, осуществляется с помощью блоков преобразования, которые обозначаются как "кадры" образцов временной области. Было установлено, что выгоднее использовать перекрывающиеся кадры, которые перемещаются, например, на половину кадра, так как перекрытие позволяет эффективно избежать (или хотя бы уменьшить) артефакты. Кроме того, было обнаружено, что необходимо выполнить разделение на окна для того, чтобы избежать артефактов, появляющихся из-за обработки временно ограниченных кадров.
При преобразовании разделенной на окна части входного аудио сигнала из временной области в частотно-временную область, во многих случаях происходит уплотнение энергии, так что некоторые спектральные значения составляют значительно большую величину, чем множество других спектральных значений. Соответственно, во многих случаях есть сравнительно небольшое число спектральных значений с величиной, которая существенно выше средней величины спектральных значений. Типичным примером преобразования из временной области в частотно-временную область, приводящего к уплотнению энергии, является так называемое модифицированное дискретное косинус преобразование (MDCT).
Спектральные значения часто масштабируются и квантуются в соответствии с психоакустической моделью так, что ошибки квантования сравнительно меньше для психоакустичеки важных спектральных значений и сравнительно больше для психоакустически менее важных спектральных значений. Масштабированные и квантованные спектральные значения кодируются в целях обеспечения эффективного битрейта их представления.
Например, использование так называемого кодирования Хаффмана квантованных спектральных коэффициентов описано в международном стандарте ISO/IEC 14496-3:2005 (E), часть 3, раздел 4.
Тем не менее, было установлено, что качество кодирования спектральных значений оказывает значительное влияние на требуемый битрейт. Кроме того, было установлено, что сложность аудио декодера, который часто представляет собой портативное устройство, используемое потребителем, и который поэтому должен быть дешевым и потреблять мало энергии, зависит от способа кодирования, используемого для кодирования спектральных значений.
В связи с этим, существует необходимость в разработке концепции кодирования и декодирования аудио содержания, которая предусматривает улучшение компромисса между эффективностью битрейта и эффективностью использования ресурсов.
Сущность изобретения
Примером воплощения изобретения является аудио декодер для получения декодированной аудио информации на основе кодированной аудио информации. Аудио декодер включает в себя арифметический декодер для получения множества декодированных спектральных значений на основе арифметически-кодированного представления спектральных значений. Аудио декодер также включает конвертер частотной области во временную область для получения аудио представления во временной области с помощью декодированных спектральных значений в целях получения декодированной аудио информации. Арифметический декодер предназначен для выбора правила отображения, описывающего отображение значения кода в код символа (код символа обычно описывает спектральное значение или множество спектральных значений или наиболее значимую битовую плоскость спектрального значения или множества спектральных значений) в зависимости от состояния контекста, которое описано с помощью числового значения текущего контекста. Арифметический декодер настроен определять числовое значение текущего контекста в зависимости от множества ранее декодированных спектральных значений. Арифметический декодер далее настроен оценивать хэш-таблицу, записи которой определяют как значимые значения состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста для того, чтобы выбрать правило отображения. Значение индекса правила отображения индивидуально соотносится с числовым значением контекста, так как является значимым значением состояния. Общее значение индекса правила отображения соотносится с различными числовыми значениями контекста, лежащих в пределах интервала, ограниченного границами интервала (при этом границы интервала описываются записями хэш-таблицы).
Данный вариант реализации изобретения основан на том, что эффективность вычисления при отражении числового значения текущего контекста на значение индекса правила отображения может быть улучшена по сравнению с традиционными решениями при использовании одиночной хэш-таблицы, записи которой определяют как значимые значения состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста. Соответственно, табличный поиск по одной таблице является достаточно точным, чтобы отобразить сравнительно большое количество возможных величин числового значения текущего контекста на сравнительно небольшое количество различных значений индекса правила отображения. Приведение в соответствие двойственных значений к записям таблицы, предпочтительно к одной записи хэш-таблицы, позволяет сохранять небольшое количество составляющих таблицы, что, в свою очередь, снижает вычислительные затраты, необходимые для выбора правила отображения. Кроме этого, было обнаружено, что использование записей хэш-таблицы, которые определяют как значимые значения состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, обычно хорошо адаптируется к эффективному отображению контекста, так как интервалы числовых значений контекста, для которых необходимо использовать общее значение индекса правила отображения, являются сравнительно большими, при этом такие интервалы числовых значений контекста обычно разделены с значимыми величинами состояния числового значения контекста. Было обнаружено, что концепция изобретения, согласно которой записи хэш-таблицы определяют как значимые значения состояния, так и границы интервалов числовых значений контекста хорошо применяется даже в тех случаях, когда два интервала числовых значений контекста, которым соответствуют различные значения значимого значения состояния.
В итоге использование хэш-таблицы, записи которой определяют как значимые значения состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, обеспечивает компромисс между эффективностью кодирования, сложностью вычисления и емкостью памяти.
В предпочтительном варианте реализации изобретения арифметический декодер настроен сравнивать числовое значение текущего контекста или шкалу числовых значений текущего контекста с множеством пронумерованных записей хэш-таблицы, чтобы получить значение индекса записи хэш-таблицы таким образом, что числовое значение текущего контекста находится в пределах интервала, определенного с помощью записи хэш-таблицы, которая установлена с помощью полученного значения индекса хэш-таблицы и примыкающей записи хэш-таблицы. Арифметический декодер предпочтительно настроен определять, включает ли числовое значение текущего контекста значение, определенное записью хэш-таблицы, установленной с помощью полученного значения индекса хэш-таблицы, а также выборочно обеспечивать, в зависимости от результата определения, значение индекса правила отображения, которое индивидуально соответствует числовому значению (текущего) контекста, определенному с помощью записи хэш-таблицы, установленной при помощи полученного значения индекса хэш-таблицы, либо значению индекса правила отображения, установленного при помощи полученного значения индекса хэш-таблицы и соответствующего различным числовым значениям (текущего) контекста в пределах установленного интервала, одной стороны, с помощью значения состояния (также назначено как значение контекста), определенного с помощью записи хэш-таблицы, установленной при помощи полученного значения индекса хэш-таблицы. Соответственно, записи хэш-таблицы могут определять как значимые значения состояния (также назначенные как значимые величины контекста), так и интервалы числовых значений (текущего) контекста. Итоговое решение, является ли числовое значение текущего контекста значимой величиной состояния или оно находится в пределах интервала значений состояния, которому соответствует общее значение индекса правила отображения, основывается на сравнении числового значения текущего контекста и значения состояния, представленного с помощью полученной в итоге записи хэш-таблицы. Соответственно, создается механизм эффективного использования двойственных значений записей хэш-таблицы.
В предпочтительном варианте реализации изобретения арифметический декодер настроен определять, используя хэш-таблицу, равно ли числовое значение текущего контекста значению границы интервала состояния (которое обычно, но не обязательно, является значимой величиной состояния), определяемому с помощью записи хэш-таблицы, либо оно находится в пределах интервала, который определен двумя (предпочтительно примыкающими) записями хэш-таблицы. Соответственно, арифметический декодер предпочтительно настроен обеспечивать значение индекса правила отображения, соответствующее записи хэш-таблицы, если обнаружено, что числовое значение текущего контекста равняется значению границы интервала состояния, а также обеспечивать значение индекса правила отображения, соответствующее интервалу между значениями состояния, которые определены двумя примыкающими записями хэш-таблицы, если обнаружено, что числовое значение текущего контекста находится в пределах интервала между пограничными значениями состояния, которые определены двумя примыкающими записями хэш-таблицы. Арифметический декодер далее настроен выбирать таблицу кумулятивных частот для арифметического декодера в зависимости от значения индекса правила отображения. Соответственно, арифметический декодер настроен обеспечивать «специальное» значение индекса правила отображения для числового значения текущего контекста, которое равно значению границы интервала состояния, в остальных случаях при обеспечении «относящегося к интервалу» значения индекса правила отображения. Соответственно, становится возможным сочетать значимые состояния и переходы между двумя интервалами, используя общий и эффективный с точки зрения вычислений механизм.
В предпочтительном варианте реализации изобретения значение индекса правила отображения, соответствующее первой заданной записи хэш-таблицы, отличается от значения индекса правила отображения, соответствующего первому интервалу числовых значений контекста, верхняя граница которого определена с помощью первой записи хэш-таблицы, а также отличается от значения индекса правила отображения, соответствующего второму интервалу числовых значений контекста, нижняя граница которого определена с помощью первой записи хэш-таблицы так, что первая заданная запись хэш-таблицы определяет, одним значением, границы двух интервалов числовых значений (текущего) контекста и значимое состояние числового значения (текущего) контекста. В этом случае первый интервал ограничен значением состояния, определенным с помощью первой заданной записи хэш-таблицы, при этом значение состояния, определенное с помощью первой заданной записи хэш-таблицы, не принадлежит первому интервалу. Аналогичным образом второй интервал ограничен значением состояния, определенным с помощью первой заданной записи хэш-таблицы, при этом значение состояния, определенное с помощью первой заданной записи хэш-таблицы, не принадлежит второму интервалу. Кроме этого необходимо отметить, что при использовании этого механизма возможен «индивидуальны» подход при обеспечении соответствия «назначенного» значения индекса правила отображения отдельному числовому значению состояния текущего контекста, которое в числовом выражении находится между самым высоким значением состояния (также обозначено как значение контекста) первого интервала и самым низким значением состояния (также обозначено как значение контекста) второго интервала, при этом между самым высоким числовым значением первого интервала и самым низким числовым значением второго интервала обычно находится одно целое число, а именно число, определенное с помощью первой заданной записи хэш-таблицы. Таким образом, особенно характерные числовые значения текущего контекста могут быть отображены на соответствующем значении индекса правила отображения, а менее характерные числовые значения могут быть отражены на соответствующие значения индекса правила отображения на основе интервала.
В предпочтительном варианте реализации изобретения значение индекса правила отображения, соответствующее первому интервалу значений контекста, равно значению индекса правила отображения, соответствующему второму интервалу значений контекста так, что первая заданная запись хэш-таблицы определяет единичное значимое значение состояния в пределах двухстороннего окружения незначимых величин состояния. Другими словами, оказывается возможным отображать особое числовое значение текущего контекста на соответствующее значение индекса правила отображения, в то время как примыкающие числовые значения текущего контекста с обоих сторон указанных характерных числовых значений текущего контекста относятся к общему значению индекса правила отображения, которое отличается от значения индекса правила отображения, соответствующего особому числовому значению текущего контекста.
В предпочтительном варианте реализации изобретения значение индекса правила отображения, соответствующее второй заданной записи хэш-таблицы, идентично значению индекса правила отображения, которое соответствует третьему интервалу значений контекста, границы которого определяются с помощью второй заданной записи хэш-таблицы, и отличается от значения индекса правила отображения, соответствующего четвертому интервалу значений контекста, границы которого определяются с помощью второй заданной записи хэш-таблицы так, что вторая заданная запись хэш-таблицы определяет границу между двумя интервалами числовых значений текущего контекста без определения значимого состояния числовых значений контекста. Таким образом, концепция настоящего изобретения также позволяет определять примыкающие интервалы числовых значений (текущего) контекста, которым соответствуют различные значения индекса правила отображения, если между ними отсутствует значимое состояние. Этого можно достичь, используя относительно простой и эффективный с точки зрения вычислений механизм.
В предпочтительном варианте реализации изобретения арифметический декодер настроен оценивать одиночную хэш-таблицу, пронумерованные записи которой определяют как значения значимых состояний среди числовых значений контекста, так и границы интервалов числовых значений контекста, для того чтобы получить значение индекса хэш-таблицы, определяющего интервал, среди интервалов, определенных записями хэш-таблицы, где находится числовое значение текущего контекста, а также далее определить, используя запись таблицы, назначенную с помощью полученного значения индекса хэш-таблицы, является ли числовое значение текущего контекста значением значимого состояния или значением незначимого состояния. При использовании такой концепции сложность вычислений, которые выполняются многократно, может быть достаточно невысокой, так что оценка множества пронумерованных записей хэш-таблицы может производится при небольших вычислительных затратах. Только на финальном этапе, который выполняется один раз для каждого числового значения текущего контекста, принимается решение, является ли числовое значение текущего контекста значением значимого состояния или значением незначимого состояния.
В предпочтительном варианте реализации изобретения арифметический декодер настроен выборочно оценивать таблицу отображения, которая отображает значения индекса интервала на значения индекса правила отображения в том случае, если обнаружено, что числовое значение текущего контекста не является значением значимого состояния, а также получать значение индекса правила отображения, соответствующего значениям интервала незначимого состояния (также обозначенных как значения незначимого контекста), в пределах которого находится числовое значение текущего контекста. Соответственно, создается эффективный с точки зрения вычислений механизм для получения значения индекса правила отображения для интервала числовых значений текущего контекста, который определен с помощью записей хэш-таблицы.
В предпочтительном варианте реализации изобретения записи хэш-таблицы пронумерованы, и арифметический декодер настроен оценивать последовательность записей хэш-таблицы, получать в результате значение индекса записи хэш-таблицы так, что числовое значение текущего контекста находится в пределах интервала, определенного записью хэш-таблицы, обозначенной с помощью полученного в результате значения индекса хэш-таблицы, и примыкающей записи хэш-таблицы. В этом случае арифметический декодер настроен выполнять определенное количество повторов для того, чтобы повторно определить полученное в итоге значение индекса хэш-таблицы. Каждый повтор включает одно сравнение значения состояния, представленного текущей записью хэш-таблицы, и значения состояния, представленного с помощью числового значения текущего контекста, а также выборочно обновлять значение текущего индекса хэш-таблицы в зависимости от результата указанного одиночного сравнения. Соответственно, снижается сложность вычислений для оценки хэш-таблицы и идентификации значения индекса правила отображения.
В предпочтительном варианте реализации изобретения арифметический декодер настроен разграничивать числовое значение текущего контекста, включающее значение значимого состояния, и числовое значение текущего контекста, включающее значение незначимого состояния, только после выполнения определенного количества повторов. При этом уменьшается сложность вычислений, так как оценка, проводимая при каждом повторе, остается простой.
Следующий вариант реализации изобретения относится к аудио кодеру для обеспечения кодированной информации на основе входной аудио информации. Аудио кодер содержит энергосберегающий конвертер временной области в частотную область для обеспечения аудио представления в частотной области на основе представления входной аудио информации во временной области таким образом, что аудио представление частотной области включает набор спектральных значений. Аудио кодер также включает арифметический кодер, которые настроен кодировать спектральное значение или его необработанную версию, либо множество спектральных значений или их необработанных версий, используя кодовое слово переменной длины. Арифметический кодер настроен отображать спектральное значение или значение наиболее значимой битовой плоскости спектрального значения (либо аналогично множество спектральных значений или значение наиболее значимой битовой плоскости множества спектральных значений) на значение кода. Арифметический кодер настроен выбирать правило отображения, которое описывает отображение спектрального значения или наиболее значимой битовой плоскости спектрального значения на значение кода в зависимости от состояния контекста, описанного с помощью числового значения текущего контекста. Арифметический кодер настроен определять числовое значение текущего контекста в зависимости от множества ранее кодированных спектральных значений. Арифметический кодер настроен оценивать хэш-таблицу, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, при этом значение индекса правила отображения индивидуально соотносится с числовым значением (текущего) контекста, так как является значением значимого состояния, и при этом общее значение индекса правила отображения соотносится с различными числовыми значениями (текущего) контекста, которые находятся в пределах интервала, ограниченного границами интервала (при этом границы интервала описываются записями хэш-таблицы).
Аудио кодер основан на тех же идеях, что и описанный выше аудио декодер, и может быть дополнен теми же свойствами и функциями, что и указанный ранее аудио декодер, при этом кодированные спектральные значения заменяют декодированные спектральные значения. А именно, вычисление значения индекса правила отображения может быть выполнено таким же образом, что и в аудио кодере.
Вариант реализации настоящего изобретения создает способ обеспечения декодированной аудио информации на основе кодированной аудио информации. Способ включает получение множества декодированных спектральных значений на основе арифметически кодированного представления спектральных значений, а также получение аудио представления временной области, используя декодированные спектральные значения для того, чтобы получить декодированную аудио информацию. Получение множества декодированных спектральных значений включает выбор правила отображения, которое описывает отображение значения кода, представляющего спектральное значение или наиболее значимую битовую плоскость спектрального значения (либо аналогично множество спектральных значений или значение наиболее значимой битовой плоскости множества спектральных значений), в кодированной форме на код символа, представляющего спектральное значение или наиболее значимую битовую плоскость спектрального значения (либо аналогично множество спектральных значений или значение наиболее значимой битовой плоскости множества спектральных значений) в декодированной форме в зависимости от состояния контекста, который описывается с помощью числового значения текущего состояния. Числовое значение текущего контекста определяется в зависимости от множества ранее декодированных спектральных значений. Проводится оценка хэш-таблицы, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста. Значение индекса правила отображения индивидуально соотносится с числовым значением текущего контекста, так как является значением значимого состояния, и общее значение индекса правила отображения соотносится с числовым значением текущего контекста, который находится в пределах интервала, ограниченного границами (при этом границы интервала описываются с помощью записей хэш-таблицы).
Вариант реализации настоящего изобретения создает способ обеспечения декодированной аудио информации на основе кодированной аудио информации. Способ включает обеспечение аудио представления в частотной области на основе представления входной аудио информации во временной области, используя энергосберегающий конвертер временной области в частотную область так, что аудио представление частотной области включает набор спектральных значений. Способ также включает арифметическое кодирование спектрального значения или его необработанной версии, используя кодовое слово переменной длины, при этом спектральное значение или значение наиболее значимой битовой плоскости спектрального значения (либо аналогично множество спектральных значений или значение наиболее значимой битовой плоскости множества спектральных значений) отображается на значение кода.
Правило отображения, которое описывает отображение спектрального значения или наиболее значимой битовой плоскости спектрального значения (либо аналогично множество спектральных значений или наиболее значимую битовую плоскость множества спектральных значений) на значение кода выбирается в зависимости от состояния контекста, описанного с помощью числового значения текущего контекста. Числовое значение текущего контекста определяется в зависимости от множества ранее кодированных примыкающих спектральных значений. Проводится оценка хэш-таблицы, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, при этом значение индекса правила отображения индивидуально соотносится с числовым значением (текущего) контекста, так как является значением значимого состояния, и при этом общее значение индекса правила отображения соотносится с различными числовыми значениями (текущего) контекста, которые находятся в пределах интервала, ограниченного границами.
Следующий вариант реализации изобретения относится к компьютерной программе для выполнения одного из казанных способов.
Краткое описание чертежей
Варианты реализации настоящего изобретения будут далее описаны со ссылкой на прилагаемые фигуры:
Фиг.1 показывает блок-схему аудио кодера согласно одному из вариантов реализации изобретения;
Фиг.2 показывает блок-схему аудио декодера согласно одному из вариантов реализации изобретения;
Фиг.3 показывает представление кода псевдо-программы алгоритма "values_decode()" для декодирования спектральных значений;
Фиг.4 показывает схематическое представление контекста для вычисления состояния;
Фиг.5a показывает представление кода псевдо-программы алгоритма "arith_map_context()" для отображения контекста;
Фиг.5b показывает представление кода псевдо-программы следующего алгоритма "arith_map_context()" для отображения контекста;
Фиг.5c показывает представление кода псевдо-программы алгоритма "arith_get_context() для получения значения состояния контекста;
Фиг.5d показывает представление кода псевдо-программы алгоритма "arith_get_context()" для получения значения состояния контекста;
Фиг.5e показывает представление кода псевдо-программы алгоритма "arith_get_pk()" для извлечения значения индекса сводной таблицы частот „pki” из значения состояния (или переменной состояния);
Фиг.5f показывает представление кода псевдо-программы алгоритма "arith_get_pk()" для извлечения значения индекса сводной таблицы частот „pki” из значения состояния (или переменной состояния);
Фиг.5g показывает представление кода псевдо-программы алгоритма "arith_decode()" для арифметического декодирования символа из кодового слова переменной длины:
Фиг.5h показывает первую часть представления кода псевдо-программы следующего алгоритма "arith_decode()" для арифметического декодирования символа из кодового слова переменной длины;
Фиг.5i показывает вторую часть представления кода псевдо-программы следующего алгоритма "arith_decode()" для арифметического декодирования символа из кодового слова переменной длины;
a
Фиг.5j показывает представление кода псевдо-программы алгоритма для извлечения абсолютных величин , b спектральных значений из общею значения m;
a
Фиг.5k показывает представление кода псевдо-программы алгоритма для ввода декодированных значений , b в массив декодированных спектральных значений;
a
Фиг.5l показывает представление кода псевдо-программы алгоритма "arith_update_context()" для получения значения контекста поддиапазона основе абсолютных значений , b декодированных спектральных значений;
Фиг.5m показывает представление кода псевдо-программы алгоритма "arith_finish()" для заполнения записей массива декодированных спектральных значений и массива значений контекста поддиапазона;
a
Фиг.5n показывает представление кода псевдо-программы следующего алгоритма для извлечения абсолютных значений , b декодированных спектральных значений из общего значения m;
Фиг.5o показывает представление кода псевдо-программы алгоритма "arith_update_context()" для обновления массива декодированных спектральных значений и массива значений контекста поддиапазона;
Фиг.5p показывает представление кода псевдо-программы алгоритма "arith_save_context()" для заполнения записей массива декодированных спектральных значений и массива значений контекста поддиапазона;
Фиг.5q показывает легенду определений;
Фиг.5r показывает легенду переменных;
Фиг.6a показывает синтаксис представления необработанного блока данных единого кодирования речи и аудио (USAC);
Фиг.6b показывает синтаксис представления единого элемента канала;
Фиг.6c показывает синтаксис представления парного элемента канала;
Фиг.6d показывает синтаксис представления контрольной информации "ICS";
Фиг.6e показывает синтаксис представления потока канала частотной области;
Фиг.6f показывает синтаксис представления арифметически кодированных спектральных данных;
Фиг.6g показывает синтаксис представления для декодирования набора спектральных значений;
Фиг.6h показывает следующий синтаксис представления для декодирования набора спектральных значений;
Фиг.6i показывает легенду элементов данных и переменных;
Фиг.6j показывает следующую легенду элементов данных и переменных;
Фиг.7 показывает блок-схему аудио кодера согласно первому аспекту изобретения;
Фиг.8 показывает блок-схему аудио декодера согласно первому аспекту изобретения;
Фиг.9 показывает графическое представление отображения числового значения текущего контекста на значение индекса правила отображения согласно первому аспекту изобретения;
Фиг.10 показывает блок-схему аудио кодера согласно второму аспекту изобретения;
Фиг.11 показывает блок-схему аудио декодера согласно второму аспекту изобретения;
Фиг.12 показывает блок-схему аудио кодера согласно третьему аспекту изобретения;
Фиг.13 показывает блок-схему аудио декодера согласно третьему аспекту изобретения;
Фиг.14a показывает схематическое представление контекста для вычисления состояния как оно используется в соответствии с рабочим проектом 4 проекта стандарта USAC;
Фиг.14b показывает обзор таблиц, используемых в схеме арифметического кодирования в соответствии с рабочим проектом 4 проекта стандарта USAC;
Фиг.15a показывает схематическое представление контекста для вычисления состояния как оно используется в вариантах реализации настоящего изобретения
Фиг.15b показывает обзор таблиц, используемых в схеме арифметического кодирования согласно настоящему изобретению;
Фиг.16a показывает графическое представление запроса памяти только для чтения на схемы бесшумного кодирования в соответствии с настоящим изобретением, рабочим проектом 5 проекта стандарта USAC и согласно кодированию Хаффмана ААС (усовершенствованное аудио кодирование);
Фиг.16b показывает графическое представление общего запроса данных памяти только для чтения декодера USAC в соответствии с настоящим изобретением и в соответствии с рабочим проектом 5 проекта стандарта USAC;
Фиг.17 показывает графическое представление порядка сравнения бесшумного кодирования в соответствии с рабочим проектом 3 или рабочим проектом 5 проекта стандарта USAC со схемой кодирования согласно настоящему изобретению;
Фиг.18 показывает таблицу представления средних битрейтов арифметического кодера USAC в соответствии с рабочим проектом 3 проекта стандарта USAC и в соответствии с вариантом реализации настоящего изобретения;
Фиг.19 показывает таблицу представления минимального и максимального уровней резервуара бит для арифметического декодера в соответствии с рабочим проектом 3 проекта стандарта USAC и для арифметического декодера в соответствии с вариантом реализации настоящего изобретения;
Фиг.20 показывает таблицу представления обычных порядковых чисел для декодирования 32-кбитного потока в соответствии с рабочим проектом 3 проекта стандарта USAC для различных версий арифметического кодера;
Фиг.21(1) и 21(2) показывают содержание таблицы "ari_lookup_m[600]";
Фиг.22(1)-21(4) показывают содержание таблицы "ari_hash_m[600]";
Фиг.23(1)-23(7) показывают содержание таблицы "ari_cf_m[600]";
Фиг.24 показывает содержание таблицы "ari_cf_r[]"
Подробное описание вариантов реализации изобретения
1. Аудио кодер в соответствии с фиг.7
Фиг.7 показывает блок-схему аудио кодера, согласно одному из вариантов реализации изобретения. Аудио декодер 700 настроен получать входную аудио информацию 710 и получать на ее основе кодированную аудио информацию 712. Аудио кодер включает в себя энергосберегающий конвертер временной области в частотную область 720, который предназначен обеспечивать аудио представление в частотной области 722 на основе представления входной аудио информации 710 во временной области так, что аудио представление в частотной области 722 включает в себя набор спектральных значений. Аудио кодер 700 также включает в себя арифметический кодер 730, предназначенный для кодирования спектрального значения (из набора спектральных значений, формирующих аудио представление в частотной области 722) или его предварительно обработанной версии с помощью кодового слова переменной длиной, чтобы получить кодированную аудио информацию 712 (которая может включать, например, множество кодовых слов переменной длины).
Арифметический кодер 730 настроен на отображение спектрального значения или значения наиболее значимой битовой плоскости спектрального значения на значение кода (т.е. на кодовое слово переменной длины) в зависимости от состояния контекста. Арифметический кодер предназначен для выбора правила отображения, описывающего отображение спектрального значения или наиболее значимой битовой плоскости спектрального значения на значение кода в зависимости от состояния (текущего) контекста. Арифметический кодер настроен, чтобы определять текущее состояние контекста или числовое значение текущего контекста в зависимости от множества ранее кодированных (предпочтительно, но не обязательно смежных) спектральных значений. Для этого арифметический кодер настроен оценивать хэш-таблицу, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, при этом значение индекса правила отображения индивидуально соотносится с числовым значением (текущего) контекста, так как является значением значимого состояния, при этом общее значение индекса правила отображения соотносится с разными числовыми значениями (текущего) контекста, которые находятся в пределах интервала, ограниченного границами (при этом границы интервала предпочтительно определяются записями хэш-таблицы).
Как можно видеть, отображение спектрального значения (аудио представления в частотной плоскости 722) или наиболее значимой битовой плоскости спектрального значения на значение кода (кодированной аудио информации 712) может осуществляться кодированием спектрального значения 740 с помощью правила отображения 742. Трекер состояния 750 может быть настроен для отслеживания состояния контекста. Трекер состояния 750 обеспечивает информацию 754, описывающую текущее состояние контекста. Информация 754, описывающая текущее состояние контекста, предпочтительно может быть в форме числового значения текущего контекста. Селектор правила отображения 760 настроен выбирать правило отображения, например, сводную таблицу частот, описывающую отображение спектрального значения, или наиболее значимую битовую плоскость спектрального значения, на значение кода. Соответственно, селектор правила отображения 760 предоставляет информацию правила отображения 742 для кодирования спектрального значения 740. Информация правила отображения 742 может иметь форму значения индекса правила отображения или сводной таблицы частот, которая выбирается в зависимости от значения индекса правила отображения. Селектор правила отображения 760 включает (или по меньшей мере оценивает) хэш-таблицу 752, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста, при этом значение индекса правила отображения индивидуально соотносится с числовым значением контекста, так как является значением значимого состояния, при этом общее значение индекса правила отображения соотносится с разными числовыми значениями (текущего) контекста, которые находятся в пределах интервала, ограниченного границами. Хэш-таблица 762 оценивается для того, чтобы выбрать правило отображения, т.е. чтобы обеспечить информацию правила отображения 742.
Подводя итог вышесказанному, аудио кодер 700 выполняет арифметическое кодирование аудио представления в частотной области, осуществляемого конвертером временной области в частотную область. Арифметическое кодирование зависит от контекста, например, правило отображения (например, сводная таблица частот) выбирается в зависимости от ранее кодированных спектральных значений. Таким образом, спектральные значения, смежные во времени и/или по частоте (или по меньшей мере в заданном окружении) друг с другом и/или с кодируемым в данный момент спектральным значением (т.е. спектральные значения в пределах заданного окружения в данный момент кодируемого спектрального значения) рассматриваются в арифметическом кодировании для регулировки распределения вероятности, оцениваемой арифметическим кодированием. При выборе соответствующего правила отображения оцениваются числовые значения текущего контекста 754, предоставленные трекером состояния 750. Поскольку обычно число различных правил отображения значительно меньше, чем число возможных числовых значений текущего контекста 754, селектор правила отображения 760 определяет одни и те же правила отображения (описанные, например, с помощью значения индекса правила отображения) для сравнительно большого количества различных числовых значений контекста. Тем не менее, обычно существуют особые спектральные конфигурации (представленные особыми числовыми значениями контекста), которым должно соответствовать определенное правило отображения для того, чтобы обеспечить эффективное кодирование.
Обнаружено, что выбор правила отображения в зависимости от числового значения текущего контекста может осуществляться с особо высокой эффективностью вычисления, если записи одной хэш-таблицы определяют как значения значимого состояния, так и границы интервалов числовых значений (текущего) контекста. Было обнаружено, что этот механизм хорошо адаптируется к требованиям выбора правила отображения, так как во многих случаях единое значение значимого состояния (или значимое числовое значение контекста) находится между интервалом множества значений незначимого состояния, который расположен слева (которому соответствует общее правило отображения) и интервалом множества значений незначимого состояния, который расположен справа (которому соответствует общее правило отображения). Также механизм использования единой хэш-таблицы, записи которой определяют как значения значимого состояния, так и границы интервалов числовых значений (текущего) контекста может эффективно справляться с различными случаями, когда, например, существуют два смежных интервала значений незначимого состояния (также обозначенных как незначимые числовые значения состояния) без значения значимого состояния между ними. Высокая эффективность вычисления достигается благодаря малому количеству обращений к таблице. Например, единичный итеративный табличный поиск оказывается достаточным в большинстве вариантов реализации изобретения для того, чтобы обнаружить, равняется ли числовое значение текущего контекста одному из значений значимого состояния, либо в каком из интервалов значений незначимого состояния находится числовое значение текущего контекста. Соответственно, число обращений к таблице, которые являются энергоемкими и затратными по времени, останется небольшим. Таким образом, селектор правила отображения 760, который использует хэш-таблицу 762, может рассматриваться как эффективный селектор правила отображения в с точки зрения сложности вычисления, но при этом позволяющий добиться эффективного кодирования (в плане битрейта).
Дальнейшие детали относительно извлечения информации о правиле отображений 742 из числового значения текущего контекста 754 будут рассмотрены ниже.
2. Аудио декодер в соответствии с фиг.8
Фиг.8 показывает блок-схему аудио декодера 800. Аудио декодер 800 настроен на получение кодированной аудио информации 810 и на представлении на ее основе декодированной аудио информации 812. Аудио декодер 800 включает в себя арифметический декодер 820, который предназначен для предоставления множества декодированных спектральных значений 822 на основе арифметически кодированного представления 821 спектральных значений. Аудио декодер 800 также включает конвертер частотной области во временную область 830, который предназначен для получения декодированных спектральных значений 822 и получения аудио представления во временной области 812, которое может включать декодированную аудио информацию, с помощью декодированных спектральных значений 822, для получения декодированной аудио информации 812.
Арифметический декодер 820 включает в себя определитель спектрального значения 824, настроенный на отображение значения кода арифметически кодированного представления 821 спектральных значений на код символа, представляющий одно или более декодированных спектральных значений, или по меньшей мере часть (например, наиболее значимую битовую плоскость) одного или более декодированных спектральных значений. Определитель спектрального значения 824 может быть настроен для выполнения отображения в зависимости от правила отображения, которое может быть описано в информации правила отображения 828a. Информация правила отображения 828a может быть, например, в форме значения индекса правила отображения или выбранной сводной таблицы частот (которая выбирается, например, в зависимости от значения индекса правила отображения).
Арифметический декодер 820 настроен на выбор правила отображения (например, сводной таблицы частот), описывающего отображение значений кода (которое описывается с помощью арифметически кодированного представления 821 спектральных значений) на код символа (описывающий одно или более спектральных значений или его наиболее значимую битовую плоскость) в зависимости от состояния контекста (которое может быть описано в информации состояния контекста 826a). Арифметический декодер 820 настроен определять текущее состояние контекста (описанное с помощью числового значения текущего контекста) в зависимости от множества ранее декодированных спектральных значений. Для этого может быть использован трекер состояния 826, который получает информацию с описанием ранее декодированных спектральных значений и обеспечивает на их основе числовое значение текущего контекста 826a, которое описывает состояние текущего контекста.
Арифметический декодер также настроен оценивать хэш-таблицу 829, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста для того, чтобы выбрать правило отображения, при этом значение индекса правила отображения индивидуально соотносится с числовым значением контекста, так как является значением значимого состояния, при этом общее значение индекса правила отображения соотносится с разными числовыми значениями контекста, которые находятся в пределах интервала, ограниченного границами. Оценка хэш-таблицы 829 может осуществляться, например, при помощи блока оценки хэш-таблицы, который может быть частью селектора правила отображения 828. Соответственно, информация правила отображения 828a, например, в форме значения индекса правила отображения может быть получена на основе числового значения текущего контекста 826a, которое описывает состояние текущего контекста. Селектор правила отображения 828 может, например, определять значение индекса правила отображения 828a в зависимости от результата оценки хэш-таблицы 829. В качестве альтернативы оценка хэш-таблицы 829 может напрямую обеспечивать получение значения индекса правила отображения.
Что касается функциональных возможностей декодера аудио сигнала 800, следует отметить, что арифметический декодер 820 настроен на выбор правила отображения (например, сводную таблицу частот), которое, в среднем, хорошо адаптировано к декодируемым спектральным значениям, так как правило отображения выбирается в зависимости от состояния текущего контекста (описанного, например, с помощью числового значения текущего состояния), что, в свою очередь, определяется в зависимости от множества ранее декодированных спектральных значений. Таким образом, могут быть использованы статистические зависимости между декодируемыми смежными спектральными значениями. Кроме того, при использовании селектора правила отображения 828 может быть эффективно реализован арифметический декодер 820, обеспечивающий компромисс между сложностью вычислений, размером таблицы и эффективностью кодирования. При оценке (единичной) хэш-таблицы 829, записи которой описывают как значения значимого состояния, так и границы интервалов значений незначимого состояния, может быть достаточно единичного итеративного табличного поиска для того, чтобы извлечь информацию правила отображения 828a из числового значения текущего контекста 826a. Соответственно, становится возможным отображать сравнительно большое число различных возможных числовых значений (текущего) контекста на сравнительно небольшое количество различных значений индекса правила отображения. Используя хэш-таблицу 829, как было описано выше, возможно применить то, что во многих случаях единичное изолированное значение значимого состояния (значение значимого контекста) находится между интервалом значений незначимого состояния, который расположен слева (значения незначимого контекста) и интервалом значений незначимого состояния, который расположен справа (значения незначимого контекста), при этом другое значение индекса правила отображения соотносится со значением значимого состояния (значение значимого контекста), при сравнении значений состояния (значений контекста) левостороннего интервала и значений состояния (значений контекста) правостороннего интервала состояния. Однако использование хэш-таблицы 829 также хорошо подходит для ситуаций, когда два интервала числовых значений непосредственно примыкают друг к другу без значения значимого состояния между ними.
Итак, селектор правила отображения 828, который оценивает хэш-таблицу 829, является особенно эффективным при выборе правила отображения (или в случае предоставления значения индекса правила отображения) в зависимости от состояния текущего контекста (или в зависимости от числового значения текущего контекста, описывающего состояние текущего контекста), так как механизм хеширования хорошо адаптируется к типичным сценариям контекста в аудио декодере.
Дальнейшие подробности будут описаны ниже.
3. Механизм хеширования значения контекста в соответствии с фиг.8
Далее будет рассмотрен механизм хеширования контекста, который может быть реализован селектором правила отображения 760 и/или селектором правила отображения 828. Для того чтобы реализовать указанный механизм хеширования значения контекста может быть использована хэш-таблица 762 и/или хэш-таблица 829.
Далее будут рассмотрены детали сценария хеширования числового знасения текущего контекста со ссылкой на фиг.9. Как показывает график на фиг.9, абсцисса 910 представляет числовые значения текущего контекста (т.е. числовые значения контекста). Ордината 912 представляет значения индекса правила отображения. Маркеры 914 представляют значения индекса правила отображения для незначимых числовых значений контекста (которые описывают незначимые состояния). Маркеры 916 описывают значения индекса правила отображения для «индивидуальных» (действительных) значимых числовых значений контекста, описывающих индивидуальные (действительные) значимые состояния. Маркеры 916 описывают значения индекса правила отображения для «неподходящих» числовых значений контекста, которые описывают «неподходящие» значимые состояния, при этом «неподходящим» значимым состоянием является значимое состояние, которому соответствует то же значение индекса правила отображения, что и одному из смежных интервалов незначимых числовых значений контекста.
Как можно увидеть, запись хэш-таблицы "ari_hash_m[i1]" описывает индивидуальное (действительное) значимое состояние, имеющее числовое значение контекста c1. Как можно увидеть, значение индекса правила отображения mriv1 соотносится с индивидуальным (действительным) значимым состоянием, которое имеет числовое значение контекста c1. Соответственно, как числовое значение контекста c1, так и индекса правила отображения mriv1 могут быть описаны записью хэш-таблицы "ari_hash_m[i1]". Интервал 932 числовых значений контекста ограничен числовым значением контекста c1, при этом числовое значение контекста c1 не принадлежит интервалу 932, так что самое большое числовое значение контекста интервала 932 равно c1-1, значение индекса правила отображения mriv4 (которое отличается от mriv1) соответствует числовым значениям контекста интервала 932, значение индекса правила отображения mriv4 может быть описано, например, с помощью записи таблицы "ari_lookup_m[i1-1]" дополнительной таблицы "ari_lookup_m".
Кроме этого, значение индекса правила отображения mriv2 может соответствовать числовым значениям контекста, находящихся в пределах интервала 934. Нижняя граница интервала 934 определяется с помощью числового значения контекста c1, которое является значимым числовым значением контекста, при этом числовое значение контекста c1 не принадлежит интервалу 932. Соответственно, наименьшее значение интервала 934 равно с1+1 (исходя из предположения, что числовые значения контекста являются целыми числами). Другая граница интервала 934 определяется с помощью числового значения контекста с2, при этом числовое значение контекста не принадлежит интервалу 934, так что наибольшее значение интервала 934 равно с2-1. Числовое значение контекста с2 является так называемым «неподходящим» числовым значением контекста, которое описывается с помощью записи хэш-таблицы "ari_hash_m[i2]". Например, значение индекса правила отображения mriv2 может соотносится с числовым значением контекста с2 таким образом, что числовое значение контекста, соответствующее «неподходящему» значимому числовому значению контекста с2, равно значению индекса правила отображения, соответствующему интервалу 934, ограниченному числовым значением контекста с2. Кроме этого, интервал 936 числового значения контекста также ограничен числовым значением контекста с2, при этом числовое значение контекста с2 не принадлежит интервалу 936, так что наименьшее числовое значение контекста интервала 936 равно с2+1. Значение индекса правила отображения mriv3, которое обычно отличается от значения индекса правила отображения mriv2, соответствует числовым значениям контекста интервала 936.
Как можно увидеть, значение индекса правила отображения mriv4, которое соответствует интервалу 932 числовых значений контекста, может быть описано с помощью записи "ari_lookup_m[i1-1]" таблицы "ari_lookup_m", индекс правила отображения mriv2, соответствующий числовым значениям контекста интервала 934, может быть описано с помощью записи "ari_lookup_m[i1]" таблицы "ari_lookup_m", и значение индекса правила отображения mriv3 может быть описано с помощью записи "ari_lookup_m[i2]" таблицы "ari_lookup_m". В данном здесь примере значение индекса хэш-таблицы i2, может быть больше на 1, чем значение индекса хэш-таблицы i1.
Как можно увидеть на фиг.9, селектор правила отображения 760 или селектор правила отображения 828 может получать числовое значение текущего контекста 764, 826a и решать при помощи оценки записей таблицы "ari_hash_m", является ли числовое значение текущего контекста значимым значением состояния (независимо от того, является ли оно «индивидуальным» значимым значением состояния или «неподходящим» значимым значением значением состояния) или числовое значение текшего контекста находится в пределах одного из интервалов 932, 934, 936, которые ограничены («индивидуальным» или «неподходящим») значением значимого состояния c1, с2. Как проверка, равняется ли числовое значение текущего контекста значению значимого состояния c1, с2, так и оценка, в каком из интервалов 932, 934, 936 находится числовое значение текущего контекста (в том случае, если числовое значение текущего контекста не равно значению значимого состояния) может осуществляться при использовании табличного поиска единичной, общей хэш-таблицы.
Кроме этого, можно использовать оценку хэш-таблицы "ari_hash_m" для получения значения индекса хэш-таблицы (например, i1-1, i1, i2). Таким образом, селектор правила отображения 760, 828 настроен получать, с помощью оценки единичной хэш-таблицы 762, 829 (например, хэш-таблицы "ari_hash_m"), значение индекса хэш-таблицы (например, i1-1, i1 или i2), обозначающий значение значимого состояния (например, с1 или с2) и/или интервал (например, 932, 934, 936), а также информацию о том, является ли числовое значение текущего контекста значимым значением контекста (также обозначенным как значимое значение состояния) или нет.
Кроме этого, если в ходе оценки хэш-таблицы 762, 829 "ari_hash_m" обнаруживается, что числовое значение текущего контекста не является «значимым» значением контекста (или «значимым» значением состояния), может использоваться значение индекса хэш-таблицы (например, i1-1, i1 или i2), полученное при оценке хэш-таблицы "ari_hash_m" для получения значения индекса правила отображения, соответствующего интервалам 932, 934, 936 числовых значений контекста. Например, значение индекса хэш-таблицы (например, i1-1, i1 или i2) может использоваться для обозначения записи дополнительной таблицы отображения (например, "ari_lookup_m"), которая описывает значения индекса правила отображения, соответствующие интервалам 932, 934, 936, в пределах которых находится числовое значение текущего контекста.
Дальнейшие детали будут рассмотрены далее при подробном обсуждении алгоритма "arith_get_pk" (при этом существуют различные варианты алгоритма "arith_get_pk"), примеры которого показаны на фиг.5e и 5f.
Кроме этого, необходимо отметить, что размер интервалов может отличаться в каждом отдельном случае. В некоторых случаях интервал числовых значений контекста включает единичное числовое значение контекста. Однако во многих случаях интервал включает множество числовых значений контекста.
4. Аудио кодер в соответствии с фиг.10
На фиг.10 показана блок-схема аудио кодера 1000 согласно варианту реализации изобретения. Аудио кодер 1000 согласно фиг.10 подобен аудио кодеру 700 в соответствии с фиг.7, поэтому идентичные сигналы и средства обозначены одинаковыми номерами ссылок на фиг.7 и 10.
Аудио кодер 1000 настроен получать входную аудио информацию 710 и обеспечивать на ее основе кодированную аудио информацию 712. Аудио кодер 1000 включает энергосберегающий конвертер временной области в частотную область, который настроен обеспечивать представление в частотной области 722 на основе представления входной аудио информации 710 во временной области таким образом, что аудио представление в частотной области 722 включает набор спектральных значений. Аудио кодер 1000 также включает арифметический кодер 1030, настроенный кодировать спектральное значение (из набора спектральных значений, формирующих аудио представление в частотной области 722) или ее ранее обработанную версию при помощи кодового слова переменной длины для того, чтобы получить кодированную аудио информацию 712 (которая может включать, например, множество кодовых слов переменной длины).
Арифметический кодер 1030 настроен отображать спектральное значение или множество спектральных значений, либо значение наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода (т.е. на кодовое слово переменной длины) в зависимости от состояния контекста. Арифметический кодер 1030 настроен выбирать правило отображения, описывающее отображение спектрального значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода в зависимости от состояния контекста. Арифметический кодер настроен определять текущее состояние контекста в зависимости от множества ранее кодированных (предпочтительно, но не обязательно смежных) спектральных значений. Для этой цели арифметический кодер настроен модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее кодированному спектральному значению (например, для того, чтобы выбрать соответствующее правило отображения), в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее одному или более кодируемому спектральному значению (например, для того, чтобы выбрать соответствующее правило отображения).
Как можно видеть, отображение спектрального значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода может осуществляться при помощи кодирования спектрального значения 740 при использовании правила отображения, описанного в информации правила отображения 742. Трекер состояния 750 настроен отслеживать состояние контекста. Трекер состояния 750 настроен модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее кодированию одного или более кодируемого спектрального значения, в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее кодированию одного или более кодируемого спектрального значения. Модификация числового представления числового значения предыдущего контекста может осуществляться, например, при помощи модификатора числового представления 1052, который получает числовое значение предыдущего контекста или одно или более значение поддиапазона контекста и обеспечивает числовое значение текущего контекста. Соответственно, трекер состояния 1050 обеспечивает информацию 754, описывающую состояние текущего контекста, например, в форме числового значения текущего контекста. Селектор правила отображения 1060 может выбирать правило отображения, например, сводную таблицу частот, описывающую отображение значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода. Соответственно, селектор правила отображения 1060 обеспечивает информацию правила отображения 742 для спектрального кодирования 740.
Необходимо отметить, что в некоторых вариантах реализации изобретения трекер состояния 1050 может быть идентичен трекеру состояния 750 или трекеру состояния 826. Также необходимо отметить, что селектор правила отображения 1060 в некоторых вариантах реализации изобретения может быть идентичен селектору правила отображения 760 или селектору правила отображения 828.
Суммируя вышесказанное, аудио кодер 1000 выполняет арифметическое кодирование аудио представления в частотной области, которое обеспечивается конвертером временной области в частотную область. Арифметическое кодирование зависит от контекста, поэтому выбирается правило отображения (например, сводная таблица частот) в зависимости от ранее кодированных спектральных значений. Соответственно, спектральные значения, смежные по времени и/или по частоте (или по меньшей мере в пределах заданного окружения) по отношению друг к другу и/или к кодируемому спектральному значению (т.е. спектральные значения в пределах заданного окружения кодируемого спектрального значения) рассматривается в арифметическом кодировании, чтобы адаптироваться к распределению возможности, которое оценивается в арифметическом кодировании.
При определении числового значения текущего контекста модифицируется числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее кодированному спектральному значению, в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более кодируемому спектральному значению. Такой подход позволяет избежать полного повторного вычисления числового значения текущего контекста, в то время как при обычном подходе полное повторное вычисление требует значительных ресурсных затрат. Существует большое количество возможностей для модификации числового представления числового значения предыдущего контекста, включая комбинацию повторного масштабирования числового представления числового значения предыдущего контекста, добавление значения поддиапазона контекста или значения, извлеченного из него, к числовому представлению числового значения предыдущего контекста или к обработанному числовому представлению числового значения предыдущего контекста, замена части числового представления (а не всего числового представления) числового значения предыдущего контекста в зависимости от значения поддиапазона контекста и т.д. Таким образом, обычно числовое представление числового значения предыдущего контекста формируется на основе числового представления числового значения предыдущего контекста, а также на основе по меньшей мере одного значения поддиапазона контекста, при этом обычно выполняется комбинация операций, чтобы объединить числовое значение предыдущего контекста со значением поддиапазона контекста, таких как, например, операция сложения, операция вычитания, операция умножения, операция деления, булева операция AND, булева операция OR, булева операция NAND, булева операция NOR, булева операция отрицания, операция дополнения или операция перемещения. Соответственно, по меньшей мере часть числового представления числового значения предыдущего контекста обычно остается неизменной (за исключением опционального перемещения на другую позицию) при извлечении числового значения текущего контекста из числового значения предыдущего контекста. Наоборот, другие части числового представления числового значения предыдущего контекста изменяются в зависимости от одного или более значений поддиапазона контекста. Таким образом, числовое значение текущего контекста может быть получено при сравнительно небольших вычислительных затратах, при этом избегая полного повторного вычисления числового значения текущего контекста.
Таким образом, может быть получено имеющее смысл числовое значение текущего контекста, что подходит для селектора правила отображения 1060.
Следовательно, возможно добиться эффективного кодирования, оставляя вычисление контекста достаточно простым.
5. Аудио декодер в соответствии с фиг.11
На фиг.11 показана блок-схема аудио декодера. Аудио декодер 1100 подобен аудио декодеру 800 в соответствии с фиг.8, поэтому идентичные сигналы, средства и функции обозначены одинаковыми номерами ссылок.
Аудио кодер 1100 настроен получать кодированную аудио информацию 810 и обеспечивать на ее основе декодированную аудио информацию 812. Аудио декодер 1100 включает арифметический декодер 1120, настроенный обеспечивать множество декодированных спектральных значений 822 на основе арифметически кодированного представления 821 спектральных значений. Аудио декодер 1100 также включает конвертер частотной области во временную область 830, который настроен получать декодированные спектральные значения 822 и обеспечивать аудио представление во временной области 812, которое может составлять декодированную аудио информацию, используя декодированные спектральные значения 822, для того, чтобы получить декодированную аудио информацию 812.
Арифметический декодер 1120 включает определитель спектрального значения 824, который настроен отображать значение кода арифметически кодированного представления 821 спектральных значений на код символа, представляющий одно или более декодированное спектральное значение или по меньшей мере часть (например, наиболее значимой битовой плоскости) одного или более декодированных спектральных значений. Определитель спектрального значения 824 настроен выполнять отображение в зависимости от правила отображения, которое может быть описано с помощью информации правила отображения 828a.
Информация правила отображения 828a может включать, например, значение индекса правила отображения или выборочный набор записей сводной таблиц частот.
Арифметический декодер 1120 настроен выбирать правило отображения (например, сводную таблицу частот), которое описывает отображение значения кода (описанного с помощью арифметически кодированного представления 821 спектральных значений) на код символа (которое описывает одно или более спектральных значений) в зависимости от состояния контекста, данное состояние контекста может быть описано с помощью информации о состоянии контекста 1126a. Информация о состоянии контекста 1126a может иметь форму числового значения текущего контекста. Арифметический декодер 1120 настроен определять состояние текущего контекста в зависимости от множества ранее декодированных спектральных значений 822. Для этой цели может быть использован трекер состояния 1126, который получает информацию, описывающую ранее декодированные спектральные значения. Арифметический декодер настроен модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее декодированным спектральным значениям, в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее одному или более декодируемым спектральным значениям. Модификация числового представления числового значения предыдущего контекста может осуществляться, например, с помощью модификатора числового представления 1127, который является частью трекера состояния 1126. Соответственно, может быть получена информация о состоянии текущего контекста 1126a, например, в форме числового значения текущего контекста. Выбор правила отображения может осуществляться с помощью селектора правила отображения 1128, который извлекает информацию правила отображения 828a из информации о состоянии текущего контекста 1126a и обеспечивает информацию правила отображения 828a для определителя спектрального значения 824.
Что касается функциональности декодера аудио сигнала 1100, необходимо отметить, что арифметический декодер 1120 настроен выбирать правило отображения (например, сводную таблицу частот), которое обычно хорошо адаптируется к декодируемому спектральному значению, т.к. правило отображения выбирается в зависимости от состояния текущего контекста, который, в свою очередь, определяется в зависимости от множества ранее декодированных спектральных значений. Соответственно, можно применять статистические зависимости между декодируемыми смежными спектральными значениями.
Кроме этого, при модификации числового представления числового значения предыдущего контекста, описывающего состояние контекста, соответствующею декодированию одного или более ранее декодированных спектральных значений, в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения текущего контекста, описывающего состояние контекста, соответствующего декодированию одного или более декодируемых спектральных значений, возможно получить значимую информацию о состоянии текущего контекста, которая подходит для отображения значения индекса правила отображения, при сравнительно низких затратах на вычисление. При обработке по меньшей мере части числового представления числового значения предыдущего контекста (возможно бит-смещенная или масштабированная версия) в ходе обновления другой части числового представления числового значения предыдущего контекста в зависимости от значений поддиапазона контекста, которые не были учтены в числовом значении предыдущего контекста, но которые должны быть учтены в числовом значении текущего контекста, количество операций по извлечению числового значения текущего контекста может оставаться незначительным. Также возможно применять тот факт, что контексты, используемые для декодирования смежных спектральных значений обычно подобны или коррелируют друг с другом. Например, контекст для декодирования первого спектрального значения (или первого множества спектральных значений) зависит от первого набора ранее декодированных спектральных значений. Контекст для декодирования второго спектрального значения (или второго множества спектральных значений), который является смежным с первым спектральным значением (или первым набором спектральных значений) может включать второй набор ранее декодированных спектральных значений. Так как предполагается, что первое спектральное значение и второе спектральное значение являются смежными (например, в отношении соответствующих частот), первый набор спектральных значений, который определяет контекст для кодирования первого спектрального значения, может включать некоторое пересечение со вторым набором спектральных значений, который определяет контекст для декодирования второго спектрального значения. Соответственно, становится понятным, что состояние контекста для декодирования второго спектрального значения включает некоторую корреляцию с состоянием контекста для декодирования первого спектрального значения. Используя такие корреляции, можно достичь эффективности вычисления при извлечении контекста, т.е. при извлечении числового значения текущего контекста. Было обнаружено, что можно эффективно применять корреляцию между состояниями контекста для декодирования смежных спектральных значений (например, между состоянием контекста, описанного с помощью числового значения предыдущего контекста, и состоянием контекста, описанного с помощью числового значения текущего контекста), модифицируя только те части числового значения предыдущего контекста, которые зависят от значений поддиапазона контекста, не рассматриваемых для извлечения числового значения состояния предыдущего контекста, а также извлекая числовое значение текущего контекста из числового значения предыдущего контекста.
Таким образом, описанная здесь концепция позволяет обеспечить высокую эффективность вычислений при извлечении числового значения текущего контекста.
Дальнейшие детали будут рассмотрены ниже.
6. Аудио кодер в соответствии с фиг.12
На фиг.12 показана блок-схема аудио кодера согласно варианту реализации изобретения. Аудио кодер 1200 согласно фиг.12 подобен аудио кодеру 700 в соответствии с фиг.7, поэтому идентичные сигналы, средства и функции обозначены одинаковыми номерами ссылок.
Аудио кодер 1200 настроен получать входную аудио информацию 710 и обеспечивать на ее основе кодированную аудио информацию 712. Аудио кодер 12000 включает энергосберегающий конвертер временной области в частотную область 720, который настроен обеспечивать аудио представление в частотной области 722 на основе представления входной аудио информации 710 во временной области таким образом, что аудио представление в частотной области 722 включает набор спектральных значений. Аудио кодер 1200 также включает арифметический кодер 1230, настроенный кодировать спектральное значение (из набора спектральных значений, формирующих аудио представление в частотной области 722) или множество спектральных значений, или их ранее обработанную версию при помощи кодового слова переменной длины для того, чтобы получить кодированную аудио информацию 712 (которая может включать, например, множество кодовых слов переменной длины).
Арифметический кодер 1230 настроен отображать спектральное значение или множество спектральных значений, либо значение наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода (т.е. на кодовое слово переменной длины) в зависимости от состояния контекста. Арифметический кодер 1230 настроен выбирать правило отображения, описывающее отображение спектрального значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений, на значение кода в зависимости от состояния контекста. Арифметический кодер настроен определять текущее состояние контекста в зависимости от множества ранее кодированных (предпочтительно, но не обязательно смежных) спектральных значений. Для этой цели арифметический кодер настроен получать множество значений поддиапазона контекста на основе ранее кодированных спектральных значений, сохранять указанные значения поддиапазона контекста и извлекать числовое значение текущего контекста, соответствующее одному или более кодируемому спектральному значению в зависимости от сохраненных значений поддиапазона контекста. Кроме этого, арифметический кодер настроен вычислять норму вектора, формируемого множеством ранее кодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее кодированных спектральных значений.
Как можно видеть, отображение спектрального значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода может осуществляться при помощи кодирования спектрального значения 740 при использовании правила отображения, описанного в информации правила отображения 742. Трекер состояния 1250 настроен отслеживать состояние контекста и может включать блок вычисления значения поддиапазона контекста 1252 для того, чтобы вычислять норму вектора, которая формируется множеством ранее кодированных спектральных значений, с целью получить общие значения поддиапазона контекста, соответствующие множеству ранее кодированных спектральных значений. Трекер состояния 1250 также предпочтительно настроен определять состояние текущего контекста в зависимости от результата указанного вычисления значения поддиапазона контекста, которое осуществляется блоком вычисления значения поддиапазона контекста 1252. Соответственно, трекер состояния 1250 предоставляет информацию 1254, которая описывает состояние текущего контекста. Селектор правила отображения 1260 может выбирать правило отображения, например, сводную таблицу частот, описывающую отображение спектрального значения или множества спектральных значений, либо наиболее значимой битовой плоскости спектрального значения или множества спектральных значений на значение кода. Соответственно, селектор правила отображения 1260 обеспечивает информацию правила отображения 742 для спектрального кодирования 740.
Суммируя вышесказанное, аудио кодер 1200 выполняет арифметическое кодирование аудио представления в частотной области, которое обеспечивается конвертером временной области в частотную область. Арифметическое кодирование зависит от контекста, поэтому выбирается правило отображения (например, сводная таблица частот) в зависимости от ранее кодированных спектральных значений. Соответственно, спектральные значения, смежные по времени и/или по частоте (или по меньшей мере в пределах заданного окружения) по отношению друг к другу и/или к кодируемому спектральному значению (т.е. спектральные значения в пределах заданного окружения кодируемого спектрального значения) рассматривается в арифметическом кодировании, чтобы адаптировать распределение возможности, которое оценивается в арифметическом кодировании.
Чтобы обеспечить числовое значение текущего контекста, определяется значение поддиапазона контекста, соответствующее множеству ранее кодированных спектральных значений, на основе вычисления нормы вектора, формируемого множеством ранее кодированных спектральных значений. Результат определения числового значения текущего контекста применяется при выборе состояния текущего контекста, т.е. при выборе правила отображения.
При вычислении нормы вектора, формируемого множеством ранее кодированных спектральных значений, может быть получена значимая информация, описывающая часть контекста одного или более кодируемых спектральных значений, при этом норма вектора ранее кодированных спектральных значений контекстной информации, необходимой для дальнейшего использования при извлечении числового значения текущего контекста, может оставаться незначительным, если применяется рассматриваемый выше подход для вычисления значений поддиапазона контекста. Было обнаружено, что норма вектора ранее кодированных спектральных значений обычно включает наиболее значимую информацию относительно состояния контекста. И наоборот, было обнаружено, что знак указанных ранее кодированных спектральных значений обычно имеет побочное воздействие на состояние контекста, поэтому будет рациональным пренебречь знаком ранее декодированных спектральных значений для того, чтобы уменьшить количество информации, которая сохраняется для дальнейшего использования. Было обнаружено, что вычисление нормы вектора ранее кодированных спектральных значений является рациональным подходом для извлечения значения поддиапазона контекста, так как эффект усреднения, обычно получаемый при вычислении нормы, значительно не затрагивает наиболее важную информацию о состоянии контекста. Таким образом, вычисление значения поддиапазона контекста, выполняемое блоком вычисления значения поддиапазона контекста 1252 позволяет обеспечить компактную информацию о поддиапазоне контекста для хранения и дальнейшего использования, при этом наиболее значимая информация о состоянии контекста сохраняется, несмотря на уменьшение количество информации.
Соответственно, можно добиться эффективного кодирования входной аудио информации 710, при этом затраты на вычисление и количество данных, сохраняемых арифметическим кодером 1230, остаются незначительными.
7. Аудио декодер в соответствии с фиг.13
На фиг.13 показана блок-схема аудио декодера 1300. Аудио декодер 1300 подобен аудио декодеру 800 в соответствии с фиг.8 и аудио декодеру 1100 в соответствии с фиг.11, поэтому идентичные сигналы, средства и функции обозначены одинаковыми номерами ссылок.
Аудио кодер 1300 настроен получать кодированную аудио информацию 810 и обеспечивать на ее основе декодированную аудио информацию 812. Аудио декодер 1300 включает арифметический декодер 1320, настроенный обеспечивать множество декодированных спектральных значений 822 на основе арифметически кодированного представления 821 спектральных значений. Аудио декодер 1300 также включает конвертер частотной области во временную область 830, который настроен получать декодированные спектральные значения 822 и обеспечивать аудио представление во временной области 812, которое может составлять декодированную аудио информацию, используя декодированные спектральные значения 822, для того, чтобы получить декодированную аудио информацию 812.
Арифметический декодер 1320 включает определитель спектрального значения 824, который настроен отображать значение кода арифметически кодированного представления 821 спектральных значений на код символа, представляющий одно или более декодированное спектральное значение или по меньшей мере часть (например, наиболее значимую битовую плоскость) одного или более декодированных спектральных значений. Определитель спектрального значения 824 настроен выполнять отображение в зависимости от правила отображения, которое может быть описано с помощью информации правила отображения 828a. Информация правила отображения 828a может включать, например, значение индекса правила отображения или выборочный набор записей сводной таблиц частот.
Арифметический декодер 1320 настроен выбирать правило отображения (например, сводную таблицу частот), которое описывает отображение значения кода (описанного с помощью арифметически кодированного представления 821 спектральных значений) на код символа (которое описывает одно или более спектральное значение) в зависимости от состояния контекста (которое может быть описано при помощи информации о состоянии контекста 1326a). Арифметический декодер 1320 настроен определять состояние текущего контекста в зависимости от множества ранее декодированных спектральных значений 822. Для этой цели может быть использован трекер состояния 1326, который получает информацию, описывающую ранее декодированные спектральные значения. Арифметический декодер также настроен получать множество значений поддиапазона контекста на основе ранее декодированных спектральных значений и сохранять указанные значения поддиапазона контекста. Арифметический декодер настроен извлекать числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению в зависимости от сохраненных значений поддиапазона контекста. Арифметический декодер 1320 настроен вычислять норму вектора, формируемого множеством ранее декодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста. соответствующее множеству ранее декодированных спектральных значений.
Вычисление нормы вектора, формируемого множеством ранее кодированных спектральных значений, для получения общего значения поддиапазона контекста, соответствующего множеству ранее декодированных спектральных значений, может выполняться, например, с помощью блока вычисления значения поддиапазона контекста 1327, который является частью трекера состояния 1326. Соответственно, может быть получена информация о состоянии текущего контекста 1326a на основе значений поддиапазона контекста, при этом трекер состояния 1326 предпочтительно обеспечивает числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению, в зависимости от сохраненных значений поддиапазона контекста. Выбор правила отображения может осуществляться с помощью селектора правила отображения 1328, который извлекает информацию правила отображения 828a из информации о состоянии текущего контекста 1326a и обеспечивает информацию правила отображения 828a для определителя спектрального значения 824.
Что касается функциональности декодера аудио сигнала 1300, необходимо отметить, что арифметический декодер 1320 настроен выбирать правило отображения (например, сводную таблицу частот), которое обычно хорошо адаптируется к декодируемому спектральному значению, т.к. правило отображения выбирается в зависимости от состояния текущего контекста, который, в свою очередь, определяется в зависимости от множества ранее декодированных спектральных значений. Соответственно, можно применять статистические зависимости между декодируемыми смежными спектральными значениями.
Было обнаружено, что в плане использования памяти эффективно хранить значения поддиапазона контекста, которые основаны на вычислении нормы вектора, формируемого множеством ранее декодированных спектральных значений, для их дальнейшего применения при определении значения контекста. Также было обнаружено, что такие значения поддиапазона контекста содержат наиболее значимую информацию о контексте. Соответственн, концепция, на основе которой функционирует трекер состояния 1326, обеспечивает компромисс между эффективностью кодирования и затратами на вычисления и хранение данных.
Дальнейшие детали будут рассмотрены ниже.
8. Аудио кодер в соответствии с фиг.1
Далее будет описан аудио кодер в соответствии с вариантом реализации настоящего изобретения. Фиг.1 показывает блок-схему такого аудио кодера 100.
Аудио кодер 100 настроен на получение входной аудио информации 110 и на предоставление на ее основе битового потока 112, который представляет собой кодированную аудио информацию. Аудио декодер 100 может дополнительно включать препроцессор 120, который настроен на получение входной аудио информации 110 и предоставление на ее основе предварительно обработанной входной аудио информации 110a, на фиг. Аудио кодер 100 также включает энергосберегающий конвертер сигнала из временной области в частотную область 130, который также обозначается как конвертер сигнала. Конвертер сигнала 130 настроен на получение входной аудио информации 110, 110a и предоставление на ее основе аудио информации 132 в частотной области, которая предпочтительно имеет вид набора спектральных значений. Например, трансформер сигнала 130 может быть настроен для получения фрейма входной аудио информации 110, 110a (например, блок образцов временной области) и для предоставления набора спектральных значений, представляющих аудио содержание соответствующего аудио фрейма. Кроме того, трансформер сигнала 130 может быть настроен на получение множества последующих, пересекающихся или непересекающихся аудио фреймов входной аудио информации 110, 110a и предоставление на ее основе аудио представления во временной и частотной области, которое состоит из последовательности последующих наборов спектральных значений, один набор спектральных значений связан с каждым фреймом.
Энергосберегающий трансформер сигнала из временной области в частотную область 130 может включать в себя энергосберегающий банк фильтров, который обеспечивает спектральные значения, соответствующие различным, пересекающимся или непересекающимся, частотным диапазонам. Например, трансформер сигнала 130 может включать в себя оконный MDCT трансформер 130а, который настроен разделять на окна входную аудио информацию 110, 110a (или ее фрейм) с помощью окна преобразования и выполнения модифицированного дискретного косинус-преобразования разделенной на окна входной аудио информации 110, 110a (или разделенного на окна фрейма). Таким образом, аудио представление в частотной области 132 может включать в себя набор, например, 1024 спектральных значений в виде MDCT коэффициентов, соответствующих фрему входной аудио информации.
Аудио декодер 100 может дополнительно включать спектральный постпроцессор 140, который настроен на получение аудио представления в частотной области 132 и предоставление на ее основе пост обработанного аудио представления в частотной области 142. Спектральный постпроцессор 140 может, например, быть настроен на выполнение временного ограничения шума и/или долгосрочного прогноза и/или любой другой спектральной пост-обработки, известной в данной области. Аудио кодер дополнительно содержит, по желанию, скейлер/квантователь 150, который настроен на получение в частотной области аудио представления 132 или версию его пост-обработки 142 и для обеспечения масштабированного и квантованного аудио представления в частотной области 152.
Аудио кодер 100 далее содержит, по желанию, психо-акустическую модель процессора 160, который настроен на получение входной аудио информации 110 (или пост-обработанной версии 110a) и представление на ее основе дополнительной контрольной информации, которая может быть использована для управления энергосберегающим трансформером сигнала из временной области в частотную область 130 для управления дополнительным спектральным пост-процессором 140 и/или для контроля за дополнительным скейлером/квантователем 150. Например, психо-акустическая модель процессора 160 может быть сконфигурирована для анализа входной аудио информации, чтобы определить, какие компоненты входной аудио информации 110, 110a особенно важны для человеческого восприятия аудио содержания и какие компоненты входной аудио информации 110, 110a менее важны для восприятия аудио содержания. Таким образом, психо-акустическая модель процессора 160 может обеспечить контрольную информации, которая используется аудио кодером 100 для регулировки масштабирования аудио представления в частотной области 132, 142 скейлером/квантователем 150 и/или разрешения квантования, которое применяется скейлером/квантователем 150. Следовательно, важные для восприятия группы масштабных коэффициентов (т.е. группы смежных спектральных значений, которые являются особенно важными для человеческого восприятия аудио содержания) масштабируются с большим коэффициентом масштабирования и квантуются со сравнительно высоким разрешением, в то время как менее важные для восприятия группы масштабных коэффициентов (т.е. группы смежных спектральных значений) масштабируются со сравнительно меньшим коэффициентом масштабирования и квантуются со сравнительно низким разрешением квантования. Таким образом, масштабированные спектральные значения частот более важных для восприятия, как правило, значительно больше, чем спектральные значения частот менее важных для восприятия.
Аудио кодер также включает в себя арифметический кодер 170, который настроен на получение масштабированной и квантованной версии 152 аудио представления в частотной области 132 (или, наоборот, пост-обработанной версии 142 аудио представления в частотной области 132, или даже само аудио представление в частотной области 132), а также на обеспечение арифметической информации кодового слова 172a на ее основе таким образом, что арифметическая информация кодового слова представляет аудио представление в частотной области 152.
Аудио кодер 100 также включает в себя форматтер полезной нагрузки битового потока 190, который настроен на получение арифметической информации кодового слова 172a. Форматтер полезной нагрузки битового потока 190 также обычно настроен на получение дополнительной информации, как, например, информации коэффициента масштабирования, описывающей, какие коэффициенты масштабирования были применены скейлером/квантователем 150. Кроме того, форматтер полезной нагрузки битового потока 190 может быть настроен на получение другой управляющей информации. Форматтер полезной нагрузки битового потока 190 настроен на обеспечение битового потока 112 на основе полученной информации путем сборки битового потока в соответствии с желаемым синтаксисом потока, который будет обсуждаться ниже.
Далее будут рассмотрены подробности, касающиеся арифметического кодера 170. Арифметический кодер 170 настроен на получение множества пост-обработанных, масштабированных и квантованных спектральных значений аудио представления в частотной области 132. Арифметический кодер включает в себя экстрактор наиболее значимой битовой плоскости 174, который настроен на извлечение наиболее значимой битовой плоскости m спектрального значения или даже двух спектральных значений. Следует отметить, что наиболее значимая битовая плоскость может содержать один или более битов (например, два или три бита), которые являются наиболее значимыми битами спектрального значения. Таким образом, экстрактор наиболее значимой битовой плоскости 174 обеспечивает значение наиболее значимой битовой плоскости 176 спектрального значения.
а
a
a
Однако экстрактор наиболее значимой битовой плоскости 174 может обеспечивать комбинированное наиболее значимое значение битовой плоскости m, которое объединяет наиболее значимые битовые плоскости множества спектральных значений (например, спектральных значений  и b). Наиболее значимая битовая плоскость спектрального значения  обозначается как m. В качестве альтернатив комбинированное значение наиболее значимой битовой плоскости множества спектральных значений , b также обозначается как m.
Арифметический кодер 170 также включает первый определитель кодового слова 180, который настроен определять арифметическое кодовое слово acod_m[pki][m], представляющее значение наиболее значимой битовой плоскости - значение m. По желанию, определитель кодового слова 180 может также предоставить одно или более управляющее кодовое слово (также обозначенные здесь с "ARITH_ESCAPE") с указанием, например, сколько доступно менее значимых битовых плоскостей (и, следовательно, указывающих числовой вес наиболее значимой битовой плоскости). Первый определитель кодового слова 180 может быть сконфигурирован для обеспечения кодового слова, соответствующего значению наиболее значимой битовой плоскости m с помощью выбранной сводной таблицы частот, имеющей (или которая ссылается на) индекс сводной таблицы частоты pki.
Для того чтобы определить, какую сводную таблицу частот надо выбрать, арифметический кодер предпочтительно включает трекер состояния 182, который настроен на отслеживание состояния арифметического кодера, например, с помощью наблюдения за тем, какие спектральные значения были кодированы ранее. Трекер состояния 182, следовательно, дает информацию о состоянии 184, например, значение состояния обозначается "s" или "t". Арифметический кодер 170 также включает селектор сводной таблицы частот 186, который настроен на получение информации о состоянии 184 и предоставление информации 188, описывающей выбранную сводную таблицу частот для определителя кодового слова 180. Например, селектор сводной таблицы частот 186 может предоставить индекс сводной таблицы частот „pki”, описывающий, какая сводная таблица частот из набора из 96 сводных таблиц частот выбрана для использования определителем кодового слова. Кроме того, селектор сводной таблицы частот 186 может предоставить всю выбранную сводную таблицу частот или часть таблицы для определителя кодового слова. Таким образом, определитель кодового слова 180 может использовать выбранную сводную таблицу частот или часть таблицы для предоставления кодового слова acod_m[pki][m] значения наиболее значимой битовой плоскости m, так что фактическое кодовое слово acod_m[pki][m], кодирующее значение наиболее значимой битовой плоскости m зависит от значения m и индекса сводной таблицы частот pki, и, следовательно, от информации о текущем состоянии 184. Более подробная информация о процессе кодирования и формате полученного кодового слова будет рассмотрена ниже.
Необходимо отметить, что в некоторых вариантах реализации изобретения трекер состояния 182 может быть идентичен по функции трекеру состояния 750, трекеру состояния 1050 или трекеру состояния 1250. Селектор сводной таблицы частот 186 в некоторых вариантах реализации изобретения может быть идентичен по функции селектору правила отображения 760, селектору правила отображения 1060 или селектору правила отображения 1260. Кроме этого, первый определитель кодового слова 180 в некоторых вариантах реализации изобретения может быть идентичен по функции блоку кодирования спектрального значения 740.
Арифметический кодер 170 включает экстрактор менее значимой битовой плоскости 189a, который настроен на извлечение одной или более менее значимой битовой плоскости из масштабированного и квантованного аудио представления в частотной области 152, если одно или более кодируемое спектральное значение превышает диапазон кодируемых значений, используя только наиболее значимую битовую плоскость. Менее значимые битовые плоскости могут включать в соответствии с необходимостью один или более битов. Соответственно, экстрактор менее значимой битовой плоскости 189a предоставляет информацию о менее значимой битовой плоскости 189b. Арифметический кодер 170 также включает второй определитель кодового слова 189c, который настроен на получение информации о менее значимой битовой плоскости 189d и предоставление на ее основе 0, 1 или более кодовых слов "acod_r", представляющих содержание 0, 1 или более менее значимых битовых плоскостей. Второй определитель кодового слова 189c может быть настроен на применение алгоритма арифметического кодирования или любой другой алгоритм кодирования для того, чтобы извлечь кодовые слова менее значимых битовых плоскостей "acod_r" из информации о менее значимой битовой плоскости 189b.
Следует отметить, что количество менее значимых битовых плоскостей может варьироваться в зависимости от значения масштабированных и квантованных спектральных значений 152, так что менее значимые битовые плоскости могут вообще отсутствовать, если масштабированное и квантованное кодируемое спектральное значение сравнительно невелико, так, например, может быть одна менее значимая битовая плоскость, если кодируемое в настоящий момент масштабированное и квантованное спектральное значение является средним по размеру или, например, может быть более одной менее значимой битовой плоскости, если кодируемое масштабированное и квантованное спектральное значение является сравнительно большим.
Подводя итог вышесказанному, арифметический кодер 170 настроен на кодирование масштабированных и квантованных спектральных значений, которые описаны в информации 152, с помощью иерархического процесса кодирования. Наиболее значимая битовая плоскость (содержащая, например, один, два или три бита на спектральное значение) одного или более спектральных значений кодируется для получения арифметического кодового слова "acod_m[pki][m]" значения m наиболее значимой битовой плоскости. Одна или более менее значимых битовых плоскостей (каждая из менее значимых битовых плоскостей включает, например, один, два или три бита) одного или более спектральных значений кодируются, чтобы получить одно или более кодовых слов "acod_r". При кодировании наиболее значимой битовой плоскости значение m наиболее значимой битовой плоскости отображается на кодовое слово acod_m[pki][m]. Для этого 96 различных сводных таблиц частот доступны для кодирования значения m в зависимости от состояния арифметического кодера 170, т.е. в зависимости от ранее кодированных спектральных значений. Таким образом, получается кодовое слово "acod_m[pki][m]". Кроме того, одно или более кодовых слов "acod_r" предусмотрены и включены в битовый поток, если присутствуют одна или более менее значимых битовых плоскостей.
Описание сброса
Аудио кодер 100 может быть дополнительно настроен принимать решение о том, можно ли достичь повышения битрейта путем сброса контекста, например, установив индекса состояния на значение по умолчанию. Таким образом, аудио кодер 100 может быть сконфигурирован для обеспечения информации сброса (например, под названием "arith_reset_flag"), указывающей, является ли контекст для арифметического кодирования сброшенным, а также указывающей, следует ли сбросить контекст для арифметического декодирования в соответствующем декодере.
Подробнее формат битового потока и применяемые сводные таблицы частот будут рассмотрены ниже.
9. Аудио декодер в соответствии с фиг.2
Далее будет описан аудио декодер в соответствии с вариантом реализации настоящего изобретения. Фиг.2 показывает блок-схему такого аудио декодера 200.
Аудио декодер 200 настроен на получение битового потока 210, который представляет кодированную аудио информацию и который может быть идентичен битовому потоку 112, который предоставляет кодер 100. Аудио декодер 200 обеспечивает декодированную аудио информацию 212 на основе битового потока 210.
a
a
a
Аудио декодер 200 включает дополнительный де-форматтер полезной нагрузки битового потока 220, который настроен на получение битового потока 210 и извлечение из битового потока 210 кодированного аудио представления в частотной области 222. Например, де-форматтер полезной нагрузки битового потока 220 может быть настроен на извлечение из битового потока 210 арифметически кодированных спектральных данных, таких как, например, арифметическое кодовое слово "acod_m[pki][m]", представляющее значение наиболее значимой битовой плоскости m спектрального значения  или множества спектральных значений , b, а также кодовое слово "acod_r", представляющее содержание менее значимо q битовой плоскости спектрального значение а или множества спектральных значений , b в аудио представлении в частотной области. Таким образом, кодированное аудио представление в частотной области 222 составляет (или включает арифметически кодированное представление спектральных значений. Де-форматтер полезной нагрузки битового потока 220 дополнительно настроен на извлечение из битового потока дополнительной информации управления, которая не показана на фиг.2. Кроме того, де-форматтер полезной нагрузки битового потока дополнительно настроен на извлечение из битового потока 210 информации сброса состояния 224. которая также обозначается как арифметический флаг сброса или "arith_reset_flag".
Аудио декодер 200 включает арифметический декодер 230, который также обозначается как "спектральный бесшумный декодер". Арифметический декодер 230 настроена на прием кодированного аудио представления в частотной области 220 и, при необходимости, информации о сбросе состояния 224. Арифметический декодер 230 также настроен на предоставление декодированного аудио представления в частотной области 232, которое может включать декодированное представление спектральных значений. Например, декодированное аудио представление в частотной области 232 может содержать декодированное представление спектральных значений, которые описаны в кодированном аудио представлении в частотной области 220.
Аудио декодер 200 также включает дополнительный обратный квантователь/рескейлер 240, который настроен на получение декодированного аудио представления в частотной области 232 и предоставление на его основе обратно квантованного и ре-масштабированного аудио представления в частотной области 242.
Аудио декодер 200 также дополнительно может включать спектральный предпроцессор 250, который настроен на получение обратно квантованнного и ре-масштабированного аудио представления в частотной области 242 и предоставление на его основе предварительно обработанной версии 252 обратно квантованного и ре-масштабированного аудио представления в частотной области 242. Аудио кодер 200 также включает в себя трансформер сигнала из частотной области во временную область 260, который также обозначается как конвертер сигнала. Трансформер сигнала 260 настроена на прием предварительно обработанной версии 252 обратно квантованного и ре-масштабированного аудио представления в частотной области 242 (или, наоборот, обратно квантованного и ре-масштабированного аудио представления в частотной области 242 или декодированного аудио представления в частотной области 232) и предоставление на его основе аудио информации представления во временной области 262. Трансформер сигнала из частотной области во временную область 260 может, например, включать трансформер для выполнения обратного модифицированного дискретного косинус-преобразования (IMDCT) и соответствующего разделения на окна (а также других вспомогательных функций, как, например, перекрытие-и-добавление).
Аудио декодер 200 может дополнительно содержать пост-процессор временной области 270, который настроен на получение представления аудио информации во временной области 262 и получение декодированной аудио информации 212 с помощью пост-обработки во временной области. Однако, если пост-обработка отсутствует, представление во временной области 262 может быть идентичным декодированной аудио информации 212.
Следует отметить, что обратный квантователь/рескейлер 240, спектральный пред-процессор 250, трансформер сигнала из частотной области во временную область 260 и пост-процессор во временной области 270 управляются в зависимости от управляющей информации, которая извлекается из битового потока 210 с помощью де-форматтера полезной нагрузки битового потока 220.
Подводя итог общей функциональности аудио декодера 200, декодированное аудио представление в частотной области 232, например, набор спектральных значений, соответствующих аудио фрейму кодированной аудио информации, могут быть получены на основе кодированного представления в частотной области 222 с помощью арифметического декодера 230. Следовательно, набор, например. 1024 спектральных значений, которые могут быть MDCT коэффициентами, обратно квантованы, ре-масштабированы и предварительно обработаны. Соответственно, получается обратно квантованный, ре-масштабированный и спектрально предварительно обработанный набор спектральных значений (например, 1024 MDCT коэффициенты). Далее, представление во временной области аудио фрейма извлекается из обратно квантованного, ре-масштабированного и спектрально предварительно обработанного набора значений в частотной области (например, MDCT коэффициенты). Соответственно, получается представление аудио фрейма во временной области. Представление во временной области данного аудио фрейма может быть объединено с представлениями во временной области предыдущих и/или последующих аудио фреймов. Например, перекрытие-и-добавление между представлениями во временной области последующих аудио фреймов может быть выполнено для того, чтобы сгладить переходы между представлениями во временной области смежных аудио фреймов, а также с целью получения отмены сглаживания. Для получения дополнительной информации о реконструкции декодированной аудио информации 212 на основе декодированного аудио представления во временной области 232, делается ссылка, например, на международный стандарт ISO/IEC 14496-3, часть 3, раздел 4, где это детально обсуждается. Тем не менее, могут быть использованы другие более сложные схемы перекрытия и отмены наложения.
Далее будут рассмотрены подробности, касающиеся арифметического декодера 230. Арифметический декодер 230 включает определитель наиболее значимой битовой плоскости 284, который настроен на получение арифметического кодового слова acod_m[pki][m], описывающего значение m наиболее значимой битовой плоскости. Определитель наиболее значимой битовой плоскости 284 может быть настроен на использование сводной таблицы частот из набора, содержащего множество из 96 сводных таблиц частот для извлечения значения m наиболее значимой битовой плоскости из арифметического кодового слова "acod_m[pki][m]".
Определитель наиболее значимой битовой плоскости 284 настроен на извлечение значений 286 наиболее значимой битовой плоскости спектральных значений на основе кодового слова acod_m. Арифметический декодер 230 дополнительно включает определитель наименее значимой битовй плоскости 288, который настроен на получение одного или более кодовых слов "acod_r", представляющих одну или более менее значимую битовую плоскость спектрального значения. Соответственно, определитель наименее значимой битовой плоскости 288 настроен обеспечить декодированные значения 290 одной или более менее значимой битовой плоскости. Аудио декодер 200 также включает сумматор битовой плоскости 292, который настроен на получение декодированных значений 286 наиболее значимых битовых плоскостей спектральных значений и декодированных значений 290 одной или более менее значимых битовых плоскостей спектральных значений, если такие менее значимые битовые плоскости доступные для текущих спектральных значений. Соответственно, сумматор битовой плоскости 292 обеспечивает декодированные спектральные значения, которые являются частью декодированного аудио представления в частотной области 232. Естественно, арифметический декодер 230, как правило, настроены на предоставление множества спектральных значений для того, чтобы получить полный набор декодированных спектральных значений, соответствующих текущему фрейму аудио содержания.
Арифметический декодер 230 дополнительно включает селектор сводной таблицы частот 296, который настроен на выбор одной из 96 сводных таблиц частот в зависимости от индекса состояния 298, описывающего состояние арифметического декодера. Арифметический декодер 230 дополнительно включает трекер состояния 299, который настроен для отслеживания состояния арифметического декодера в зависимости от ранее декодированных спектральных значений. Информация о состоянии при необходимости может быть сброшена к информации состояния по умолчанию в ответ на информацию о сбросе состояния 224. Таким образом, селектор сводной таблицы частот 296 настроен для предоставления индекса (например, pki), выбранной сводной таблицы частот или части самой выбранной сводной таблицы частот, для применения в декодировании значения m наиболее значимой битовой плоскости в зависимости от кодового слова "acod_m".
Подводя итог функциональности аудио декодера 200, аудио декодер 200 настроен на получение битрейт эффективного кодированного аудио представления в частотной области 222 и получение декодированного аудио представления в частотной области на его основе. В арифметическом декодере 230, который используется для получения декодированного аудио представления в частотной области 232 на основе кодированного аудио представления в частотной области 222, вероятность различных комбинаций значений наиболее значимых битовых плоскостей смежных спектральных значений применяется арифметическим декодером 280, который настроен применять сводную таблицу частот. Другими словами, применяются статистические зависимости между спектральными значениями путем выбора различных сводных таблиц частот из набора, включающего 96 различных сводных таблиц частоты в зависимости от индекса состояния 298, который получается при наблюдении за ранее вычисленными декодированными спектральными значениями.
Необходимо отметить, что трекер состояния 299 может быть идентичен по функции трекеру состояния 826, трекеру состояния 1126 или трекеру состояния 11326. Селектор сводной таблицы частот 296 может быть идентичен по функции селектору правила отображения 828, селектору правила отображения 1128 или селектору правила отображения 1328. Определитель наиболее значимой битовой плоскости 284 может быть идентичен по функции определителю спектрального значения 824.
10. Обзор за инструментов спектрального бесшумного кодирования
Далее будут рассмотрены подробности, касающиеся алгоритма кодирования и декодирования, который выполняется, например, арифметическим кодером 170 и арифметическим декодером 230.
Основное внимание уделяется описанию алгоритма декодирования. Следует отметить, однако, что соответствующий алгоритм кодирования может быть выполнен в соответствии с объяснением алгоритма декодирования, в котором отображения меняются на противоположные, при этом вычисления значения индекса правила отображения в значительной мере похожи. На стороне кодера кодируемые спектральные значения заменяются на декодируемые спектральные значения.
Следует отметить, что декодирование, которое будет обсуждаться далее, используется для того, чтобы обеспечить так называемое "спектральное бесшумное кодирование" обычно пост-обработанных, масштабированных и квантованных спектральных значений. Спектральное бесшумное кодирование используются в концепции аудио кодирования/декодирования (или любой другой концепции кодирования/декодирования) для дальнейшего сокращения избыточности квантованного спектра, которое выполняется, например, при помощи энергосберегающего трансформера из временной области в частотную область. Схема спектрального бесшумного кодирования, применяемая в вариантах реализации настоящего изобретения, основана на арифметическом кодировании в сочетании с динамически адаптированным контекстом.
В некоторых вариантах реализации изобретения схема спектрального бесшумного кодирования основана на двойках, т.е комбинации двух соседних спектральных коэффициентов. Каждая двойка разделена на знак, наиболее значимую 2-битовую плоскость, и оставшиеся менее значимые битовые плоскости. Бесшумное кодирование наиболее значимой 2-битовой плоскости m использует зависимые от контекста сводные таблицы частот, извлеченные из четырех ранее декодированных двоек. Бесшумное кодирование использует квантованные спектральные значения и зависимые от контекста сводные таблицы частот, извлеченные из четырех ранее декодированных соседних двоек. Во внимание принимается смежное положение как по времени, так и по частоте, как показано на фиг.4. Сводные таблицы частот (которые будут рассмотрены далее) затем используются арифметическим кодером для создания бинарного кода переменной длины (а также арифметическим декодером для извлечения декодированных значений из бинарного кода переменной длины).
Например, арифметический кодер 170 производит бинарный код для данного набора символов и их соответствующих вероятностей (в зависимости от соответствующих вероятностей). Бинарный код создается путем отображения интервала вероятности, в котором находится набор символов, на кодовое слово.
Бесшумное кодирование оставшейся менее значимой битовой плоскости r использует одиночную таблицу сводных частот. Сводные частоты соответствуют, например, единому распределению символов, встречающихся в менее значимых битовых плоскостях, т.е. существует одинаковая вероятность появления 0 или 1 в менее значимых битовых плоскостях.
Далее будет дан еще один короткий обзор инструментов спектрального бесшумного кодирования. Спектральное бесшумное кодирование используется для дальнейшего сокращения избыточности квантованного спектра. Схема спектрального бесшумного кодирования основывается на арифметическом кодировании в сочетании с динамически адаптированным контекстом. Бесшумное кодирование использует квантованные спектральные значения и контекстно-зависимые сводные таблицы частот, полученные, например, из четырех ранее декодированных соседних двоек спектральных значений. Здесь учитывается смежное расположение как во времени, так и по частоте, как показано на фиг.4. Сводные таблицы частот затем используются арифметическим кодером для создания бинарного кода переменной длины.
Арифметический кодер производит бинарный код для данного набора символов и их соответствующих вероятностей. Двоичный код образуется путем отображения интервала вероятности, в котором находится набор символов, на кодовое слово.
11. Процесс декодирования
11.1 Обзор процесса декодирования
Далее будет дан обзор процесса декодирования спектрального значения со ссылкой на фиг.3, на которой показан псевдо-программный код процесса декодирования множества спектральных значений.
Процесс декодирования множества спектральных значений содержит инициализацию 310 контекста. Инициализация 310 контекста включает извлечение текущего контекста из предыдущего контекста с помощью функции "arith_map_context(N, arith_reset_flag)". Извлечение текущего контекста из предыдущего контекста может выборочно включать сброс контекста. Как сброс контекста, так и извлечение текущего контекста из предыдущего контекста будут рассмотрены ниже.
а
Декодирование множества спектральных значений также включает повторение декодирования спектральных значений 312 и обновление контекста 313, обновление контекста 313 выполняется функцией "arith_update_context(i, , b)", которая описана ниже. Декодирование спектральных значений 312 и обновление контекста 312 повторяется lg/2 раз, при этом lg/2 указывает число двоек спектральных значений для декодирования (например, для аудио фрейма), пока не обнаруживается так называемый символ "ARITH_STOP". Кроме этого, декодирование набора lg спектральных значений также включает декодирование знаков 314 и итоговый шаг 315.
Декодирование двойки спектральных значений 312 включает расчет значения контекста 312a. декодирование наиболее значимой битовой плоскости 312b, арифметическое обнаружение конечного символа 312с, добавление менее значимой битовой плоскости 312d и обновление массива 312e.
Вычисление значения состояния 312a включает вызов функции "arith_get_context(c,i,N)", как показано, например, на фиг.5c или 5d. Соответствено, числовое значение текущего контекста (состояния) с предоставляется как возвратное значение вызова функции "arith_get_context(c,i,N)". Таким образом, числовое значение предыдущего контекста (также обозначенное "с"), которое является входной переменной функции "arith_get_context(c,i,N)" обновляется для того, чтобы получить, в качестве возвратного значения, числовое значение текущего контекста c.
а
Декодирование наиболее значимой битовой плоскости 312b включает повторное выполнение алгоритма декодирования 312ba и извлечение 312bb значений , b из полученного значения m алгоритма 312ba, при этом переменная lev инициализируется до нуля. Алгоритм 312ba повторяется до тех пор, пока не достигнута команда "прерывание" (или условие). Алгоритм 312ba включает вычисление индекса состояния „pki” (который также служит в качестве индекса сводной таблицы частот) в зависимости от числового значения текущего контекста c, а также в зависимости от значения уровня "esc_nb", с помощью функции "arith_get_pk()", которая обсуждается ниже (соответствующие варианты реализации изобретения показаны, например, на фиг.5e и 5f). Алгоритм 312ba также включает выбор сводной таблицы частот в зависимости от индекса состояния pki, который обновляется вызовом функции "arith_get_pk()", при этом переменная "cum_freq" может быть установлена на начальный адрес одной из 96 сводных таблиц частот в зависимости от индекса „pki”. Переменная "cfl" может быть инициализирована на длину выбранной сводной таблицы частот (или части таблицы), которая, например, равна количеству символов в алфавите, т.е. количеству различных значений, которые могут быть декодированы. Длины всех сводных таблиц частот (или частей таблиц) от "arith_cf_m[pki=0][17]" до "anth_cf_m[pki=95][17]", доступных для декодирования значения наиболее значимой битовой плоскости m, составляют 17, так что 16 различных значений наиболее значимых битовых плоскостей и управляющий символ ("ARITH_ESCAPE") могут быть декодированы. Впоследствии, значение m наиболее значимой битовой плоскости может быть получено путем выполнения функции "arith_decode()", с учетом выбранной сводной таблицы частоты (описанной переменной "cum_freq" и переменной "cfl"). При извлечении значения m наиболее значимой битовой плоскости, оцениваются биты под названием "acod_m" в битовом потоке 210 (см., например, фиг.6g или 6h).
a
Алгоритм 312ba также включает проверку того, равно ли значение наиболее значимой битовой плоскости m управляющему символу "ARITH_ESCAPE", или нет. Если значение наиболее значимой битовой плоскости m не равно арифметическому управляющему символу, алгоритм 312ba прерывается (условие "перерывания"), а остальные инструкции алгоритма 312ba поэтому могут быть пропущены. Таким образом, выполнение процесса продолжается установкой значения b и значения  на шаг 312bb. В отличие от этого, если декодированное значение m наиболее значимой битовой плоскости совпадает с арифметическим управляющим символом "ARITHESCAPE", значение уровня „lev" увеличивается на единицу. Значение уровня "esc_nb" приравнивается к значению уровня „lev" пока переменная „lev" не превышает значение 7, в этом случае переменная "esc_nb" устанавливается в значение 7. Как уже упоминалось, алгоритм 312ba повторяется до тех пор, пока декодированное значение m наиболее значимой битовой плоскости отличается от арифметического управляющего символа, при этом используется модифицированный контекст (поскольку входной параметр функции "arith_get_pk()" адаптируется в зависимости от значения переменной значения "esc_nb").
а
Так как наиболее значимая битовая плоскость декодируется при помощи однократного или повторяющегося выполнения алгоритма 312ba. т.е. декодируется значение m наиболее значимой битовой плоскости, отличающееся от арифметического управляющего символа, переменная спектрального значения "b" приравнивается множеству (например, 2) наиболее значимых битов значения m наиболее значимой битовой плоскости, и переменная спектрального значения "" устанавливается в соответствии с (например, 2) наименьшими битами значения m наиболее значимой битовой плоскости. Подробности относительно функциональности можно рассмотреть с помощью ссылки 312bb.
Следовательно, на шаге 312c проверяется, присутствует ли арифметический символ остановки. Это тот случай, когда значение m наиболее значимой битовой плоскости равно нулю, а переменная „lev" больше, чем ноль. Соответствен, арифметическое условие остановки обозначается как «необычное» условие, при котором значение m наиболее значимой битовой плоскости равно нулю, а переменная „lev" указывает, что значению m наиболее значимой битовой плоскости соответствует увеличенный числовой вес. Другими словами, арифметическое условие остановки обнаруживается тогда, когда битовый поток указывает, что увеличенный числовой вес, больший, чем минимальный числовой вес, должен соответствовать значению наиболее значимой битовой плоскости, которое равно нулю, что является условием, которое не встречается в нормальной ситуации кодирования. Другими словами, обнаруживается арифметическое условие остановки, если кодированный арифметический управляющий символ перехода следует за кодированным значением 0 наиболее значимой битовой плоскости.
a
После оценки присутствия арифметического условия остановки, которая выполняется на шаге 212с, могут быть получены менее значимые битовые плоскости, например, как показано на ссылке с номером 212d на фиг.3. Для каждой менее значимой битовой плоскости декодируются два бинарных значения. Одно бинарное значение соответствует переменной  (или первому спектральному значению двойки спектральных значений) и другое бинарное значение соответствует переменной b (или второму спектральному значению двойки спектральных значений). Количество менее значимых битовых плоскостей обозначено переменной lev.
a
а
При декодировании одной или более менее значимых битовых плоскостей (если они присутствуют) повторно выполняется алгоритм 212da, при этом количество выполнений алгоритма 212da определяется переменной "lev". Необходимо отметить, что первый повтор алгоритма 212da выполняется на основе значений переменных , b, как это настроено на шаге 212bb. Дальнейшие повторы алгоритма 212da выполняются на основе обновленных значений переменных , b.
a
В начале повтора выбирается таблица сводных частот. Следовательно, выполняется арифметическое декодирование для того, чтобы получить значение переменной r, при этом значение переменной r описывает множество менее значимых битов, например, один менее значимый бит соответствует переменной , другой менее значимый бит соответствует переменной b. Функция "ARITH_DECODE" используется для того, чтобы получить значение r, при этом для арифметического декодирования используется сводная таблица частот "arith_cf_r".
а
a
Следовательно обновляются значения переменных  и b. Для этой цели переменная а сдвигается влево на один бит, и наименее значимый бит переменной , которая была сдвинута, устанавливается как значение, определяемое как наименее значимый бит значения r. Переменная b сдвигается влево на один бит, и наименее значимый бит переменной b, которая была сдвинута, устанавливается как значение, определяемое как бит 1 переменной r, при этом бит 1 переменной r имеет числовой вес 2 в бинарном представлении переменной r. Алгоритм 412ba повторяется до тех пор, пока не будут декодированы все наименее значимые биты.
После декодирования менее значимых битовых плоскостей обновляется массив "x_ac_dec", в котором значения переменных сохраняются в записях указанного массива, имея индексы массива 2*i и 2*i+1.
a
Следовательно обновляется состояние контекста при использовании функции "arith_update_context(i,,b)", которая подробнее будет рассмотрена далее со ссылкой на фиг.5g.
За обновлением состояния контекста, который выполняется на шаге 313, повторяются алгоритмы 312 и 313 до тех пор, пока текущая переменная i не достигнет значения lg/2 или не будет обнаружено арифметическое условие остановки.
Далее выполняется завершающий алгоритм "arith_finish(), как показывает ссылка 315. Подробнее завершающий алгоритм "arith_finish()" будет рассматриваться далее со ссылкой на фиг.5m.
a
После завершающего алгоритма 315 декодируются знаки спектральных значений с помощью алгоритма 314. Как можно увидеть, знаки спектральных значений, отличных от нуля, кодируются индивидуально. С помощью алгоритма 314 читаются знаки всех спектральных значений, имеющие индексы i между i=0 и i=lg-1, которые не равны нулю. Для каждого неравного нулю спектрального значения, имеющего индекс спектрального значения между i=0 и i=lg-1, читается значение (обычно единичный бит) s из битового потока. Если значение s, которое читается из битового потока, равно 1, знак указанного спектрального значения инвертируется. Для этой цели получается доступ к массиву "x_ac_dec" для того, чтобы определить, равно ли нулю спектральное значение, имеющее индекс i, а также для того, чтобы обновить знаки декодированных спектральных значений. Однако необходимо отметить, что знаки переменных , b остаются неизменными слева при декодировании знака 314.
При выполнении завершающего алгоритма 315 перед декодированием знаков 314 возможно сбросить все необходимые элементы после символа ARITH_STOP.
Необходимо отметить, что концепция получения значений менее значимых битовых плоскостей не имеет особого значения для некоторых вариантов реализации настоящего изобретения. В некоторых вариантах реализации настоящего изобретения можно опустить декодирование менее значимых битовых плоскостей. В качестве альтернативы для этой цели могу быть использованы другие алгоритмы декодирования.
11.2 Порядок декодирования в соответствии с фиг.4
Далее будет описан порядок декодирования спектральных значений.
Квантованные спектральные коэффициенты "х_ас_dec[]" бесшумно кодируются и передаются (например, в битовом потоке), начиная с самого низкочастотного коэффициента и переходя к самому высокочастотному коэффициенту.
а
а
а
Следовательно, квантованные спектральные коэффициенты "х_ас_dec[]" бесшумно декодируются, начиная с самого низкочастотного коэффициента и переходя к самому высокочастотному коэффициенту. Квантованные спектральные коэффициенты декодируются группами из двух следующих друг за другом (например, смежных по частоте) коэффициентов  и b, которые собираются в иак называемые двойки (, b) (также обозначенные как {, b}). Необходимо отметить, что квантованные спектральные коэффициенты иногда обозначаются как "qdec".
а
Декодированные коэффициенты "x_ac_dec[]" затем сохраняются для режима частотной области (например, декодированные коэффициенты для усовершенствованного аудио кодирования, например, полученные с помощью модифицированного дискретного косинус преобразования, как описано в ISO/IEC 14496, часть 3, раздел 4) в массиве "x_ac_quant[g][win][sfb][bin]". Порядок передачи кодовых слов бесшумного кодирования таков, что, когда они декодируются в порядке поступления и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом и "g" является наиболее медленно увеличивающимся индексом. В пределах кодового слова порядок декодирования будет , b.
а
a
Декодированные коэффициенты "x_ac_dec[]" хранятся для преобразования кодированного возбуждения (ТСХ), например, непосредственно в массиве x_tcx_invquant[win][bin], а порядок передачи кодовых слов бесшумного кодирования такой, что, когда они декодируются в порядке поступления и хранениея в массиве, "bin" является наиболее быстро увеличивающимся индексом и "win" является наиболее медленно увеличивающимся индексом. В пределах кодового слова порядок декодирования будет , b. Другими словами, если спектральные значения описывают преобразование кодированного возбуждения фильтра линейного предсказания кодера речи, спектральные значения , b связаны со смежными и увеличивающимися частотами преобразования кодированного возбуждения. Спектральные коэффициенты, соответствующие более низкой частоте, кодируются перед спектральными коэффициентами, соответствующими более высокой частоте.
Примечательно, что аудио декодер 200 может быть настроен на применение декодированного аудио представления в частотной области 232, которое обеспечивается арифметическим декодером 230, как для "прямой" генерации представления аудио сигнала во временной области с помощью преобразования сигнала из частотной области во временную область, так и для "косвенного" предоставления представления аудио сигнала во временной области, используя как декодер из частотной области во временную область, так и фильтр линейного предсказания, возбуждаемый выходом трансформера сигнала из частотной области во временную область.
Другими словами, арифметический декодер, функции которого обсуждаются здесь подробно, хорошо подходит для декодирования спектральных значений представления аудио содержания во временной и частотной области, кодированного в частотной области, и для обеспечения представления стимула сигнала во временной и частотной области для фильтра линейного предсказания, адаптированного для декодирования (или синтеза) речевого сигнала, кодированного в области линейного предсказания. Таким образом, арифметический декодер хорошо подходит для использования в аудио декодере, способном работать как с аудио содержанием, кодированным в частотной области, так и с аудио содержанием, кодированным в линейно предсказанной частотной области (режим преобразования кодированного возбуждения области линейного предсказания).
11.3 Инициализация контекста в соответствии с фиг.5а и 5b
Далее будет описана инициализация контекста (также обозначается как "отображение контекста"), которая выполняется в шаге 310.
Инициализация контекста включает сопоставление между прошлым контекстом и текущим контекстом в соответствии с алгоритмом "arith_map_context()", первый пример показан на фиг.5а второй пример показан на фиг.5а.
Как видно, текущий контекст хранится в глобальной переменной q[2] [n_context], которая принимает форму массива, имеющего первое измерение 2 и второе измерение "n_context". Прошлый контекст при необходимости (но это не обязательно) может храниться в переменной "qs[n_context]", которая принимает форму таблицы, имеющей измерение "n_context" (если она используется).
Согласно примеру алгоритма "arith_map_context" на фиг.5а, входная переменная N описывает длину текущего окна, а входная переменная "arith_reset_flag" указывает, необходим ли сброс контекста. Кроме этого, глобальная переменная "previous_N" описывает длину предыдущего окна. Необходимо отметить, что обычно число спектральных значений, соответствующих окну, по меньшей мере приблизительно равняется половине длины указанного окна в плане образцов временной области. Кроме этого, необходимо отметить, что число двоек спектральных значений, соответственно, по меньшей мере приблизительно равняется половине длины указанного окна в плане образцов временной области.
Согласно примеру на фиг.5а, отображение контекста может выполняться в соответствии с алгоритмом "arith_map_context()". Необходимо отметить, что функция "arith_map_context()" устанавливает записи q[0][i] массива текущего контекста q в нулевое значение для i=0 до i=N/4-1, если флаг "arith_reset_flag" является активным и указывает, что контекст должен быть сброшен. В противном случае, если флаг "arith_reset_flag" является неактивным, записи q[0][i] массива текущего контекста q извлекаются из записей q[1][k] массива текущего контекста q. Необходимо отметить, что функция "arith_map_context()" согласно фиг.5а устанавливает записи q[0][i] массива текущего контекста q в значения q[1][k] массива текущего контекста q, если количество спектральных значений, соответствующих текущему (например, кодированному в частотной области) аудио фрейму, равняется количеству спектральных значений, соответствующих предыдущему аудио фрейму для j=k=0 до j=k=N/4-1.
Более сложное отображение выполняется, если количество спектральных значений, соответствующих текущему аудио фрейму, отличается от количества спектральных значений, соответствующих предыдущему аудио фрейму. Однако подробности, касающиеся отображения в данном случае, не особенно важны для ключевой идеи настоящего изобретения, так что за более подробной информацией можно обратиться к ссылке на псевдо программный код на фиг.5а.
Кроме этого, инициализация значения для числового значения с текущего контекста возвращается с помощью функции "arith_map_context()". Это значение инициализации может быть равным, например, значению записи q[0][0], сдвинутому влево на 12 битов. 0Таким образом, числовое значение с (текущего) контекста оказывается инициализированным для повторного обновления.
Кроме этого, на фиг.5b показан другой пример алгоритма "arith_map_context()", который может быть использован альтернативным образом. За более подробной информацией можно обратиться к ссылке на псевдо программный код на фиг.5b.
Таким образом, флаг "arith_reset_flag" определяет, должен ли быть сброшен контекст. Если флаг активен, вызывается субалгоритм сброса 500 а алгоритма "arith_map_context()". Наоборот, если флаг "arith_reset_flag" неактивен (что означает отсутствие необходимости сброса контекста), процесс декодирования начинается со стадии инициализации, где вектор (или массив) элемента контекста обновляется при помощи копирования и отображения элементов контекста предыдущего фрейма, которые сохраняются в q[1][] до q[0][]. Элементы контекста в пределах q сохраняются на 4 битах на каждую двойку. Копирование и/или отображение элемента выполняется субалгоритмом 500b.
В примере, показанном на фиг.5b, процесс декодирования начинается со стадии инициализации, где выполняется отображение сохраненным прошлым контекстом, который сохраняется в qs, и контекстом текущего фрейма q. Прошлый контекст qs сохраняется на 2 битах на каждую линию частоты.
11.4 Вычисление значения состояния в соответствии с фиг.5c и 5d
Далее будет более подробно описано вычисление значения состояния 312a.
Первый образец алгоритма будет описан со ссылкой на фиг.5c, второй образец алгоритма будет описан со ссылкой на фиг.5d.
Следует отметить, что числовое значение с текущего контекста (как показано на фиг.3) может быть получено в качестве возвращаемого значения функции "arith_get_context(c,i,N)", представление псевдо программного кода которого показано на фиг.5c. В качестве альтернативы числовое значение с текущего контекста может быть получено в качестве возвращаемого значения функции "arith_get_context(c,i)", представление псевдо программного кода которого показано на фиг.5d.
Что касается вычисления значения состояния, также делается ссылка на фиг.4. которая показывает контекст, используемый для оценки состояния, т.е. для вычисления числового значения с текущего контекста. Фиг.4 показывает двумерное представление спектральных значений как по времени, так и по частоте. Абсцисса 410 описывает время, а ордината 412 описывает частоту. Как видно на фиг.4 кортеж спектральных значений 420, которые подвергаются декодированию (предпочтительно с использованием числового значения текущего контекста), связан с индексом времени t0 и индексом частоты i. Как видно, для индекса времени t0, кортежи, имеющие индексы частоты i-1, i-2 и i-3, уже декодированы, в то время как спектральные значения кортежа 120 с индексом частоты i должны быть декодированы. Как видно из фиг.4, спектральное значение 430, имеющее индекс времени t0 и индекс частоты i-1, уже декодировано до того, как будет декодирован кортеж 420 спектральных значений, а кортеж 430 спектральных значений рассматривается для контекста, который используется для декодирования кортежа 420 спектральных значений. Таким же образом, кортеж 440 спектральных значений, имеющий индекс времени t0-1 и индекс частоты i-1, кортеж 450 спектральных значений, имеющий индекс времени t0-1 и индекс частоты i, кортеж 460 спектральных значений, имеющий индекс времени t0-1 и индекс частоты i+1, уже декодированы до того, как будет декодирован кортеж 420 спектральных значений, а также учтены для определения контекста, который используется для декодирования кортежа 420 спектральных значений. Спектральные значения (коэффициенты), уже декодированные в то время, когда декодируются и рассматриваются для контекста спектральные значения кортежа 420, показаны в заштрихованных квадратах. В отличие от этого, некоторые другие спектральные значения, уже декодированные (в то время, когда декодируются спектральные значения кортежа 420), но не рассмотренные для контекста (для декодирования спектральных значений кортежа 420), представлены квадратами с пунктирными линиями, а также другие спектральные значения (которые до сих пор не декодированы в то время, когда декодируются спектральные значения кортежа 420) показаны окружностями с пунктирными линиями. Кортежи, представленные квадратами с с пунктирными линиями, и кортежи, представленные окружностями с пунктирными линиями, не используются для определения контекста для декодирования спектральных значений кортежа 420.
Тем не менее, следует отметить, что некоторые из этих спектральных значений, которые не используются для "обычного" или "нормального" вычисления контекста для декодирования спектральных значений кортежа 420, могут, тем не менее, быть оцененными для выявления множества ранее декодированных смежных спектральных значений, которые выполняют, по отдельности или вместе взятые, заданное условие относительно их величин. Подробнее этот вопрос будет рассматриваться далее.
Алгоритм "arith_get_context(c,i,N)" будет подробно рассмотрен со ссылкой на фиг.5c. На фиг.5c показано функционирование указанной функции "arith_get_context(c,i,N)" в виде псевдо программного кода, который использует условные обозначения известного языка С и/или С++. Таким образом, будут рассмотрены некоторые детали вычисления числового значения "с" текущего контекста, которое осуществляется с помощью функции "arith_get_context(c,i,N)".
Следует отметить, что функция "arith_get_context(c,i,N)" получает, в качестве входных переменных, «старый контекст состояния», который может быть описан с помощью числового значения предыдущего контекста "с". Функция "arith_get_context(c,i,N)" также получает, в качестве входной переменной, индекс i кортежа из двух декодируемых спектральных значений. Индекс i, как правило, является индексом частоты. Входная переменная N описывает длину окна, для которого декодируются спектральные значения.
Функция "arith_get_context(c,i,N)" обеспечивает, в качестве выходного значения, обновленную версию входной переменной с, которая описывает обновленный контекст состояния и которая может быть рассмотрена как числовое значение текущего контекста. Таким образом, функция "arith_get_context(c,i,N)" получает числовое значение "с" предыдущего контекста как входную переменную и предоставляет ее обновленную версию, которая рассматривается как числовое значение текущего контекста. В доплнение к этому функция "arith_get_context(c,i,N)" учитывает переменные i, N, а также получает доступ к «глобальному» массиву q[][].
Что касается функции "arith_get_context(c,i,N)", необходимо отметить, что переменная "с", которая изначально представляет числовое значение предыдущего контекста в бинарной форме, сдвигается вправо на 4 бита на шаге 504а. Соответственно, отбрасываются четыре наименее значимых бита числового значения предыдущего контекста (представленного с помощью входной переменной с). Также уменьшается числовой вес остальных битов числовых значений предыдущего контекста, например, с коэффициентом 16.
12
13
14
15
Кроме этого, если индекс i кортежа из 2-х элементов меньше чем N/4-1, т.е он не принимает максимальное значение, числовое значение текущего контекста модифицируется таким образом, что значение записи q[0][i+1] добавляется к битам с 12 по 15 (т.е. к битам, имеющим числовой вес 2, 2, 2 и 2) значения контекста, которое сдвигалось, что выполняется на шаге 504а. Для этой цели запись q[0][i+1] массива q[][] (или, если быть более точным, бинарная репрезентация значения, представленного указанной записью) сдвигается влево на 12 битов. Измененная версия значения, представленная записью q[0][i+1] затем добавляется к значению контекста с, которое извлекается на шаге 504а, т.е. к числовому представлению со сдвинутыми битами (т.е. сдвинутому влево на 4 бита) числового значения предыдущего контекста. Необходимо отметить, что запись q[0][i+1] массива q[][] представляет значение поддиапазона, соответствующее предыдущей части аудио содержания (например, часть аудио содержания, имеющая временной индекс t0-1, что было определено при рассмотрении фиг.4), а также имеющее более высокую частоту (например, частоту, имеющую индекс частоты i+1, что было определено при рассмотрении фиг.4), чем кортеж спектральных значений, декодируемых в настоящий момент (используя числовое значение текущего контекста с на выходе функции "arith_get_context(c,i,N)"). Другими словами, если кортеж 420 декодируемых спектральных значений декодируется при помощи числового значения текущего контекста, запись q[0][i+1] может быть основана на кортеже 460 ранее декодированных спектральных значений.
Необходимое добавление записи q[0][i+1] массива q[][] (сдвинутого влево на 12 битов) показано с помощью ссылки под номером 504b. Как можно видеть, добавление значения, представленного записью q[0][i+1] выполняется только в том случае, если индекс частоты i не обозначает кортеж спектральных значений, имеющий самый высокий индекс частоты i=N/4-1.
Следовательно на шаге 504c выполняется булева операция AND, при которой значение переменной с объединяется посредством операции AND с шестнадцатеричным значением 0×FFF0 для того, чтобы получить значение переменной с. При выполнении операции AND четыре наименее значимых бита переменной с устанавливаются в 0.
На шаге 504d значение записи q[0][i+1] добавляется к значению переменной с, которая получена на шаге 504c, для того, чтобы обновить значение переменной с. Однако, указанное обновление переменной с на шаге 504d выполняется только в том случае, если индекс частоты i декодируемого кортежа из 2-х значений больше нуля. Необходимо отметить, что запись q[1][i-1] является значением поддиапазона контекста, основанным на кортеже ранее декодированных спектральных значений текущей части аудио содержания для частот, меньших чем частоты спектральных значений, декодируемых при помощи числового значения текущего контекста. Например, запись q[1][i-1] массива q[][] может соответствовать кортежу 430, имеющему временной индекс t0 и частотный индекс i-1, если предполагается, что кортеж 420 спектральных значений должен быть декодирован при помощи числового значения текущего контекста, возвращенного при выполнении функции "arith_get_context(c,i,N)".
Таким образом, биты 0, 1, 2 и 3 (т.е. четыре наименее значимых бита) числового значения предыдущего контекста отбрасываются на шаге 504а при помощи сдвига за пределы бинарного числового представления числового значения предыдущего контекста. Кроме этого, биты 12, 13, 14 и 15 сдвинутой переменной с (т.е. сдвинутого числового значения предыдущего контекста) настроены принимать значения, определенные значением поддиапазона контекста q[0][i+1] на шаге 504b. Биты 0, 1, 2 и 3 сдвинутого числового значения предыдущего контекста (т.е. биты 4, 5, 6 и 7 исходного числового значения предыдущего контекста) переписываются значением поддиапазона контекста q[0][i+1] на шаге 504с и 504d.
Следовательно, можно сказать, что биты от 0 до 3 числового значения предыдущего контекста представляют значение поддиапазона контекста, соответствующее кортежу 432 спектральных значений, биты от 4 до 7 числового значения предыдущего контекста представляют значение поддиапазона контекста, соответствующее кортежу 434 ранее декодированных спектральных значений, биты от 8 до 11 числового значения предыдущего контекста представляют значение поддиапазона контекста, соответствующее кортежу 440 ранее декодированных спектральных значений, и биты от 12 до 15 числового значения предыдущего контекста представляют значение поддиапазона контекста, соответствующее кортежу 450 ранее декодированных спектральных значений. Числовое значение предыдущего контекста на входе функции " arith_get_context(c,i,N)" соответствует декодированию кортежа 430 спектральных значений.
Числовое значение текущего контекста, получаемое как переменная на выходе функции "arith_get_context(c,i,N)", соответствует декодированию кортежа 420 спектральных значений. Соответственно, биты с 0 по 3 числовых значений текущего контекста описывают значение поддиапазона контекста, соответствующее кортежу 430 спектральных значений, биты с 4 по 7 числовых значений текущего контекста описывают значение поддиапазона контекста, соответствующее кортежу 440 спектральных значений, биты с 8 по 11 числовых значений текущего контекста описывают значение поддиапазона контекста, соответствующее кортежу 450 спектральных значений, и биты с 12 по 15 числовых значений текущего контекста описывают значение поддиапазона контекста, соответствующее кортежу 460 спектральных значений. Таким образом, можно увидеть, что часть числового значения предыдущего контекста, а именно, биты с 8 по 15 числового значения предыдущего контекста, также включены в числовое значение текущего контекста, как и биты с 4 по 11 числового значения текущего контекста. И наоборот, биты с 0 по 7 текущего числового значения предыдущего контекста отбрасываются при извлечении числового представления числового значения текущего контекста из числового представления предыдущего контекста.
На шаге 504е переменная с, которая представляет числовое значение текущего контекста, при необходимости обновляется, если индекс частоты i декодируемого кортежа из 2-х значений больше, чем заданное значение, например, 3. В этом случае, т.е. если i больше 3, определяется, не превышает ли (или равняется) сумма значений поддиапазона контекста q[3][i-3], q[1][i-2] и q[1][i-1] заданное значение, например, 5. Если обнаружено, что сумма указанных значений поддиапазона контекста меньше, чем указанное заданное значение, к переменной с добавляется шестнадцатеричное значение, например, 0×10000. Соответственно, переменная с устанавливается таким образом, что она указывает, есть ли условие, при котором значения поддиапазона контекста q[1][i-3], q[1][i-2] и q[1][i-1] составляют особенно малое значение суммы. Например, бит 16 числового значения текущего контекста может выступать флагом для индикации такого состояния.
Итак, возвратное значение функции "arith_get_context(c,i,N)" определяется с помощью шагов 504а, 504b, 504с, 504d и 504е, где извлекается числовое значение текущего контекста из числового значения предыдущего контекста на шаге 504а, 504b, 504с, 504d и 504е, при этом на шаге 504е извлекается и добавляется к переменной с флаг, указывающий на окружение ранее декодированных спектральных значений, имеющих, в среднем, особенно малые абсолютные значения. Соответственно, значение переменной с, полученное на этапах 504а, 504b, 504с, 504d, возвращается на шаге 504f в качестве возвратного значения функции "arith_get_context(c,i,N)", если не выполняется условие, которое было оценено на шаге 504е. И наоборот, значение переменной с, полученное на этапах 504а, 504b, 504с, 504d, увеличивается на шестнадцатеричное значение 0×10000, и результат опреации увеличения возвращается на шаге 504е, если выполняется условие, которое было оценено на шаге 504е.
Подводя итог вышесказанному, необходимо отметить, что бесшумный декодер имеет на выходе кортеж из двух беззнаковых квантованных спектральных коэффициентов (что будет подробно рассматриваться далее). Сначала состояние с контекста вычисляется на основе ранее декодированных спектральных коэффициентов, «окружающих» декодируемый кортеж из 2-х элементов. В предпочтительном варианте реализации изобретения состояние (которое представлено, например, с помощью числового значения контекста) обновляется с увеличением при помощи состояния контекста последнего декодированного кортежа из 2-х элементов (обозначенного как числовое значение предыдущего контекста), учитывая только два новых кортежа из 2-х элементов (например, кортежи 430 и 460). Состояние кодируется на 17 битах (например, используя числовое представление числового значения текущего контекста) и возвращается функцией "arith_get_context()". Более подробно это рассматривается на фиг.5c, где представлен код программы.
Необходимо отметить, что код псевдо программы альтернативного варианта функции "arith_get_context()" показан на фиг.5d. Функция "arith_get_context()" согласно фиг.5d подобна функции "arith_get_context(c,i,N)" согласно фиг.5c. Однако функция "arith_get_context(c,i)" согласно фиг.5d не включает обработку или декодирование кортежей спектральных значений, содержащих минимальный индекс частоты i=0 или максимальный индекс частоты i=N/4-1.
11.5 Выбор правила отображения
Далее будет описан выбор правила отображения, например, сводной таблицы частот, которая описывает отображение значения кода на код символа. Выбор правила отображения производится в зависимости от состояния контекста, который описывается числовым значением текущего контекста с.
11.5.1 Выбор правила отображения с помощью алгоритма в соответствии с Фиг.5e
Далее описывается выбор правила отображения с помощью функции "arith_get_pk(c)". Следует отметить, что функция "arith_get_pk()" вызывается в начале субалгоритма 312ba при декодировании значения кода "acod_m" для получения кортежа спектральных значений. Необходимо отметить, что функция "arith_get_pk(с)" вызывается с различными аргументами при различных повторах алгоритма 312b. Например, при первом повторе алгоритма 312b функция "arith_get_pk(с)" вызывается с аргументом, равным числовому значению текущего контекста с, который получен при предыдущем выполнении функции "arith_get_context(c,i,N)" на шаге 312a. Наоборот, при дальнейших повторах субалгоритма 312a, вызывается функция "arith_get_pk(с)" с аргументом, который представляет собой сумму числового значения текущего контекста с, полученного функцией "arith_get_context(c,i,N)" на шаге 312a, и версии значения переменной "esc_nb" со сдвинутыми битами, при этом значение переменной "esc_nb" сдвинуто влево на 17 битов. Таким образом, числовое значение текущего контекста с, полученное функцией "arith_get_context(c,i,N)" используется в качестве входного значения функции "arith_get_pk()" при первом повторе алгоритма 312ba, т.е. при декодировании сравнительно небольших спектральных значений. Наоборот, при декодировании сравнительно больших спектральных значений входная переменная функции "arith_get_pk()" модифицируется с учетом значения переменной "esc_nb", как показано на фиг.3.
При рассмотрении фиг.5e, на которой показан код псевдо программы первого варианта реализации функции "arith_get_pk(c)", необходимо отметить, что функция "arith_get_pk()" получает переменную с в качестве входного значения, при этом переменная с описывает состояние контекста, и при этом входная переменная с функции "arith_get_pk()" равняется числовому значению текущего контекста, полученному в качестве возвратной переменной функцией "arith_get_context()" по меньшей мере в некоторых ситуациях. Кроме этого, необходимо отметить, что функция "arith_get_pk()" обеспечивает, в качестве выходной переменной, пепеменную "pki", которая описывает индекс модели вероятности и может рассматриваться как значение индекса правила отображения.
При рассмотрении фиг.5e можно видеть, что функция "arith_get_pk()" включает инициализацию переменной 506а, при этом инициализируется переменная "i_min", принимая значение -1. Подобным образом переменная i приравнивается к переменной "i_min", так что переменная i также инициализируется со значением -1. Переменная "i_max" инициализируется и принимает значение, меньшее на 1, чем число записей таблицы "ari_lookup_m[]" (которая будет более подробно рассмотрена со ссылкой на фиг.21(1) и 22(2)). Соответственно, переменные "i_min" и "i_max" определяются как интервал.
Следовательно, поиск 506b выполняется для идентификации значения индекса, который обозначает запись таблицы "ari_hash_m", так что значение входной переменной с функции "arith_get_pk()" находится в пределах интервала, определенного указанной записью и смежной записью.
При поиске 506b субалгоритм 506ba повторяется, пока разница между переменными "i_min" и "i_max" больше, чем 1. В субалгоритме 506ba переменная i устанавливается равной среднеарифметическому значений переменных "i_min" и "i_max". Следовательно переменная i обозначает запись таблицы "ari_hash_m[]" в середине интервала таблицы, который определен переменными "i_min" и "i_max". Следовательно, переменная j приравнивается значению записи "ari_hash_m[i]" таблицы "ari_hash_m[]". Таким образом, переменная j принимает значение, определенное записью таблицы "ari_hash_m[]", котрая находится в середине интервала таблицы, определенного с помощью переменных "i_min" и "i_max". Следовательно, интервал, определенный переменными "i_min" и "i_max", обновляется, если значение входной переменной с функции "arith_get_pk()" отличается от значения состояния, определенного наивысшими битами записи таблицы "j=ari_hash_m[i]" таблицы "ari_hash_m[]". Например, «верхние биты» (8 и выше) записей таблицы "ari_hash_m[]" описывают значимые значения состояния. Соответственно, значение "j>>8" описывает значимое значение состояния, представленное записью "j=ari_hash_m[i]" таблицы "ari_hash_m[]" и обозначенное записью индекса хэш-таблицы i. Соответственно, если значение переменной с меньше, чем значение "j>>8", это означает, что значение состояния, описанного переменной с.меньше, чем значение значимого состояния, описанного с помощью записи "ari_hash_m[i]" таблицы "ari_hash_m[]". В этом случае значение переменной "i_max" приравнивается значению переменной i, которая, в свою очередь, сокращает размер интервала, определенного с помощью переменных "i_min" и "i_max", при этом новый интервал приблизительно равняется нижней половине предыдущего интервала. Если обнаруживается, что входная переменная с функции "arith_get_pk()" больше, чем значение "j>>8", что означает, что значение контекста, описанного с помощью переменной с больше, чем значение значимого состояния, описанного с помощью записи "ari_hash_m[i]" массива "ari_hash_m[]", значение переменной "i_min" приравнивается значению переменной i. Соответственно, размер интервала, определенного с помощью значений переменных "i_min" и "i_max", уменьшается до приблизительно половины размера предыдущего интервала, определенного с помощью предыдущих значений переменных "i_min" и "i_max". Если быть более точным, интервал, определенный обновленным значением переменной "i_min" и предыдущим (неизмененным) значением переменной "i_max". приблизительно равен большей половине предыдущего интервала в том случае, если значение переменной с больше, чем значение значимого состояния, определенного с помощью записи "ari_hash_m[i]".
Однако, если обнаруживается, что значение контекста, описанного с помощью входной переменной с алгоритма "arith_get_pk()" равняется значимому значению состояния, определенному с помощью записи "ari_hash_m[i]" (т.е. с==(j>>8)), значение индекса правила отображения, определенного с помощью самых нижних 8 битов записи "ari_hash_m[i]", возвращается в качестве возвратного значения функции "arith_get_pk()" (инструкция "return (j&oxFF)").
Суммируя вышесказанное, необходимо отметить, что запись "ari_hash_m[i]", наибольшие биты (биты от 8 и выше) которой описывают значение значимого состояния, оценивается при каждом повторе 506ba, и значение контекста (или числовое значение текущего контекста), описанное при помощи входной переменной с функции "arith_get_pk()", сравнивается со значением значимого состояния, описанного с помощью указанной записи таблицы "ari_hash_m[i]". Если значение контекста, представленное с помощью входной переменной с, меньше, чем значение значимого состояния, представленное записью таблицы "ari_hash_m[i]", верхняя граница (описанная с помощью значения "i_max") интервала таблицы уменьшается, и если значение контекста, представленное с помощью входной переменной с, больше, чем значение значимого состояния, представленное записью таблицы "ari_hash_m[i]", нижняя граница (описанная с помощью значения "i_max") интервала таблицы увеличивается. В обоих указанных случаях субалгоритм 506ba повторяется, пока размер интервала (определенного разностью между "i_min" и "i_max") не станет меньше или равным 1. Если, наоборот, значение коньекста, описанного с помощью переменной с, равняется значению значимого состояния, описанного с помощью записи "ari_hash_m[i]", функция "arith_get_pk()" прерывается, при этом возвратное значение определяется с помощью наименьших битов записи таблицы "ari_hash_m[i]".
Однако, если поиск 506b прекращается из-за того, что размер интервала достигает своего минимального значения ("i_min" - "i_max" меньше или равно 1), возвратное значение функции "arith_get_pk()" определяется с помощью записи "ari_lookup_m[i_max]" таблицы "ari_lookup_m[]", как можно увидеть с помощью ссылки 506с. Соответственно, записи таблицы ari_hash_m[]" определяют как значимые значения состояния, так и границы интервалов. В субалгоритме 506b границы интервала поиска "i_min" и "i_max" повторно адаптируются таким образом, что запись "ari_hash_m[i]" таблицы "ari_hash_m[]", индекс хэш-таблицы i которой находится, по меньшей мере приблизительно, в центре интерала поиска, определенного с помощью значений границ интервала "i_min" и "i_max", по меньшей мере приблизительно определяет значение контекста, описанного с помощью входной переменной с. Таким образом достигается, что значение контекста, описанное с помощью входной переменной с, находится в пределах интервала, определенного с помощью "ari_hash_m[i_min]" и "ari_hash_m[i_max]", после завершения повторов субалгоритма 506ba, пока значение контекста, описанное с помощью входной переменной с, не будет равным значимому значению состояния, которое описано с помощью записи таблицы "ari_hash_m[]".
Однако, если повтор субалгоритма 506ba прекращается из-за того, что размер интервала (определенный при помощи "i_min" - "i_max") достигает или превышает минимальное значение, считается, что значение контекста, описанное с помощью входной переменной с, не является значимым значением состояния. В этом случае все равно используется индекс "i_max", который обозначает верхнюю границу интервала. Верхнее значение интервала "i_max", которое получается при последнем повторе субалгоритма 506ba, используется повторно как значение индекса таблицы для доступа к таблице "ari_lookup_m[]". Таблица "ari_lookup_m[]" описывает значения индекса правила отображения, соответствующие интервалам множества смежных числовых значений контекста. Интервалы, которым соответствуют значения индекса правила отображения, описанные с помощью записей таблицы "ari_lookupm[]", определяются с помощью значимых значений состояния, которые описаны с помощью записей таблицы "ari_hash_m[]". Записи таблицы "ari_hash_m[]" определяют как значимые значения состояния, так и границы интервалов смежных числовых значений контекста. При выполнении алгоритма 506b определяется, равно ли числовое значение контекста, описанное с помощью входной переменной с, значимому значению состояния, и, если оно не равно, то в каком интервале числовых значений контекста (из множества интервалов, границы которых определяются с помощью значимых значений состояния) находится значение контекста, описанное с помощью входной переменной с. Таким образом, алгоритм 506b выполняет двойную функцию, определяя, описывает ли входная переменная с значимое значение состояния, и, если нет, то идентифицируя интервал, ограниченный значимыми значениями состояния, в котором находится значение контекста, представленное входной переменной с. Соответственно, алгоритм 506е является особенно эффективным и требует сравнительно небольшое количество обращений к таблице.
Суммируя вышесказанное, необходимо отметить, что состояние контекста с определяет сводную таблицу частот, которая применялась для декодирования наиболее значимой 2-х-битовой плоскости m. Отображение от с до соответствующего индекса сводной таблицы частот ”pki” выполняется функцией "arith_get_pk()". Код псевдо программы указанной функции "arith_get_pk()" рассматривался со ссылкой на фиг.5e.
Таким образом, значение m декодируется, используя функцию "arith_decode" (которая рассматривается подробнее далее) совместно со сводной таблицей частот "arith_cf_m[pki][]", где ”pki” соответствует индексу (также обозначенному как значение индекса правила отображения), возвращенному функцией "arith_get_pk()". которая рассматривается со ссылкой на фиг.5e.
11.5.2 Выбор правила отображения с помощью алгоритма в соответствии с Фиг.5f
Далее будет рассмотрен другой вариант реализации алгоритма выбора правила отображения "arith_get_pk()" со ссылкой на фиг.5f, где показан код псевдо программы такого алгоритма, который может быть использован для декодирования кортежа спектральных значений. Алгоритм в соответствии с фиг.5f может быть рассмотрен как оптимизированная версия (например, версия с оптимизированной скоростью) алгоритма "get_pk()" или алгоритма "arith_get_pk()".
Алгоритм "arith_get_pk()" в соответствии с фиг.5f принимает, в качестве входной переменной, переменную с, которая описывает состояние контекста. Входная переменная с может, например, представлять числовое значение текущего контекста.
Алгоритм "arith_get_pk()" обеспечивает, в качестве выходной переменной, переменную ”pki”, которая описывает индекс вероятностной дистрибуции (или модели вероятности), соответствующий состоянию контекста, которое описано с помощью входной переменной с. Переменная ”pki” может, например, быть значением индекса правила отображения.
Алгоритм в соответствии с фиг.5f включает определение содержания массива "i_diff[]". Как можно видеть, первая запись массива "i_diff[]" (имеющая индекс массива 0) равна 299 и следующие записи массива (имеющие индексы массива от 1 до 8) принимают значения 149, 74, 37, 18, 9 4, 2 и 1. Соответственно, уменьшается размер шага для выбора значения индекса хеш-таблицы "i_min" при каждом повторе, так как записи массива "i_diff[]" определяют указанные размеры шага. Более подробно это будет рассмотрено далее.
Однако могут быть выбраны различные размеры шагов, например, разное содержание массива "i_diff[]", при этом содержание массива "i_diff[]" может быть адаптировано к размеру хеш-таблицы "ari_hash_m[i]".
Необходимо отметить, что переменная "i_min" инициализируется и принимает значение 0 в самом начале алгоритма "arith_get_pk()".
На шаге инициализации 508а инициализируется переменная s в зависимости от входной переменной с, при этом числовое представление переменной с сдвигается влево на 8 битов для того, чтобы получить числовое представление переменной s.
Следовательно, осуществляется табличный поиск 508b для того, чтобы идентифицировать значение индекса хеш-таблицы "i_min" записи хеш-таблицы "ari_hash_m[]" таким образом, что значение контекста, описанное с помощью значения контекста с, находится в пределах интервала, ограниченного значением контекста, представленным записью хеш-таблицы "ari_hash_m[i_min]", и значением контекста, представленным другой записью хеш-таблицы "ari_hash_m", при этом запись "ari_hash_m" является смежной (в плане значения индекса хеш-таблицы) по отношению к записи "ari_hash_m[i_min]". Таким образом, алгоритм 508b позволяет определить значение индекса хеш-таблицы "i_min", обозначающее запись "j=ari_hash_m[i_min]" хеш-таблицы "ari_hash_m[]" таким образом, что запись хеш-таблицы "ari_hash_m[i_min]" по меньшей мере приблизительно определяет значение контекста, которое представлено с помощью входной переменной с.
Табличный поиск 508b включает повторяющееся выполнение субалгоритма 508ba, при этом субалгоритм 508ba выполняется заданное количество повторов, например, 9 раз. На первом шаге субалгоритма 508ba переменная i приравнивается сумме значений переменной "i_min" и значению записи таблицы "i_diff[k]". Необходимо отметить, что k представляет собой подвижную переменную, которая увеличивается, начиная от исходного значения k=0, с каждым повтором субалгоритма 508ba. Массив "i_diff[]" определяет заданные значения увеличения, при этом значения увеличения уменьшаются при увеличении индекса таблицы k, т.е. с увеличением числа повторов.
На втором шаге субалгоритма 508ba значение записи таблицы "ari_hash_m[]" копируется в переменную j. Предпочтительно, если наибольшие биты записей таблицы "ari_hash_m[]" описывают значения значимого состояния числового значения контекста, и наименьшие биты (от 0 до 7) записей таблицы "ari_hash_m[]" описывают значения индекса правила отображения, соответствующие необходимым значимым значениям состояния.
На третьем шаге субалгоритма 508ba значение переменной s сравнивается со значением переменной j, и переменная "i_min" выборочно устанавливается как значение "i+1", если значение переменной s больше, чем значение переменной j. Следовательно, первый, второй и третий шаги субалгоритма 508ba повторяются заданное количество раз, например, 9 раз. Таким образом, при каждом выполнении субалгоритма 508ba значение переменной "i_min" увеличивается на "i_diff[]"+1, только если значение контекста, описанное с помощью действующего в настоящий момент индекса хеш-таблицы i_min+i_diff[], меньше, чем значение контекста, описанное с помощью входной переменной с. Соответственно, значение индекса хеш-таблицы "i_min" (повторно) увеличивается при каждом выполнении субалгоритма 508ba. только если значение контекста. описанное с помощью входной переменной с и. соответственно, переменной s, больше, чем значение контекста, описанное с помощью записи "ari_hash_m[i=i_min+diff[k]]".
Кроме этого, необходимо отметить, что только единичное сравнение, а именно, сравнение, больше ли значение переменной s, чем значение переменной j, осуществляется при каждом исполнении субалгоритма 508ba. Соответственно, субалгоритм 508ba особенно эффективен с точки зрения вычислений. Кроме этого, необходимо отметить, что возможны разные результаты в плане итогового значения переменной "i_min". Например, возможно, что значение переменной "i_min" после итогового исполнения субалгоритма 512ba такое, что значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min]" меньше, чем значение контекста, описанное с помощью входной переменной с, и значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min+1]" больше, чем значение контекста, описанное с помощью входной переменной с. Наоборот, может случиться, что после итогового исполнения субалгоритма 508ba значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min-1] будет меньше, чем значение контекста, описанное с помощью входной переменной с, и значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min]" будет больше, чем значение контекста, описанное с помощью входной переменной с. В качестве альтернативы, может быть, что значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min]" будет равным значению контекста, описанному с помощью входной переменной с.
Для этой цели обеспечивается определенное возвратное значение 508с. Переменная j принимает значение записи хеш-таблицы "ari_hash_m[i_min]". Следовательно, определяется, больше ли значение контекста, описанное с помощью входной переменной с (а также с помощью переменной s), чем значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min]" (первый случай определен условием "s>j"), или значение контекста, описанное с помощью входной переменной с, меньше, чем значение контекста, описанное с помощью записи таблицы "ari_hash_m[i_min]" (второй случай определен условием "c
>j"), или контекста, описанное с помощью входной переменной с, равно значению контекста, описанному с помощью записи таблицы "ari_hash_m[i_min]" (третий случай).
В первом случае, ("s>j"), запись "ari_lookup_m[i_min+1]" таблицы "ari_lookup_m[]", обозначенная с помощью значения индекса таблицы "i_min+1" возвращается в качестве выходного значения функции "arith_get_pk()". Во втором случае (c<(s>>j)) запись "ari_lookup_m[i_min]" таблицы "ari_lookup_m[]", обозначенная с помощью значения индекса таблицы "i_min" возвращается в качестве возвратного значения функции "arith_get_pk()". В третьем случае (т.е. если значение контекста, описанное с помощью входной переменной с равно значимому значению состояния, описанному с помощью записи таблицы "ari_hash_m[i_min]"), значение индекса правила отображения, описанное с помощью наименьших 8 битов записи хеш-таблицы "ari_hash_m[i_min]", возвращается в качестве возвратного значения функции "arith_get_pk()".
Суммируя вышесказанное, необходимо отметить, что на шаге 508b выполняется простой табличный поиск, при этом табличный поиск обеспечивает значение переменной "i_min" без разграничения, равно или нет значение контекста, описанное с помощью входной переменной с, значимому значению состояния, определенному одной из записей состояния таблицы "ari_hash_m[i_min]". На шаге 508с, который выполняется вслед за табличным поиском 508b, оценивается отношение между величинами - значением контекста, которое описано с помощью входной переменной с, и значимым значением состояния, которое описано с помощью записи хеш-таблицы "ari_hash_m[i_min]", а также выбирается возвратное значение функции "arith_get_pk()" в зависимости от результата указанной оценки, при этом значение переменной "i_min", которое определяется при оценке таблицы 508b, учитывается при выборе значения индекса правила отображения, даже если значение контекста, описанное с помощью входной переменной с, отличается от значимого значения состояния, которое описано с помощью записи хеш-таблицы "ari_hash_m[i_min]".
Необходимо дополнительно отметить, что сравнение в алгоритме должно выполняться предпочтительно (или в качестве альтернативы) между индексом контекста (числовое значение контекста) с и j=ari_hash_m[i]>>8. В действительности каждая запись таблицы "ari_hash_m[]" представляет индекс контекста, кодированный за пределами 8 битов, а соответствующая ему вероятностная модель кодирована на первых 8 битах (наименее значимы биты). В данном варианте реализации изобретения важно выяснить, больше ли значение текущего контекста с, чем ari_hash_m[i]>>8, что эквивалентно выяснению, больше ли s=c<<8, чем ari_hash_m[i].
Суммируя вышесказанное, необходимо отметить, что после вычисления состояния контекста (например, при помощи алгоритма "arith_get_context(c,i,N)" согласно фиг.5c или при помощи алгоритма "arith_get_context(c,i)" согласно фиг.5d) декодируется наиболее значимая 2-х-битовая плоскость при помощи алгоритма "arith_decode" (который будет рассмотрен далее), который вызывается с подходящей сводной таблицей частот, соответствующей вероятностной модели, которая соответствует состоянию контекста. Соответствие согласовывается посредством функции "arith_get_pk()", например, функции "arith_get_pk()", которая рассматривалась со ссылкой на фиг.5f.
11.6 Арифметическое декодирование
11.6.1 Арифметическое декодирование при помощи алгоритма в соответствии с фиг.5g
Далее будет подробно рассмотрена функциональность функции "arith_decode()" в соответствии с фиг.5g.
Следует отметить, что функция "arith_decode()" использует вспомогательную функцию "arith_first_symbol(void)", которая возвращает TRUE, если это первый символ последовательности и FALSE, если не первый. Функция "arith_decode()" также использует вспомогательную функцию "arith_get_next_bit(void)", которая получает и предоставляет следующий бит битового потока.
Кроме того, функция "arith_decode()" использует глобальные переменные "low", "high" и "value". Кроме того, функция "arith_decode()" получает в качестве входной переменной, переменную "cum_freq[]", которая указывает на первую запись или элемент (имеющий индекс элемента или индекс записи 0) выбранной сводной таблицы частот. Кроме того, функция "arth_decode()" использует входную переменную "cfl", которая указывает на длину выбранной сводной таблицы частот или дополнительную сводную таблицу частот, обозначенную переменной "cum_freq[]".
Функция "arith_decode()" включает в себя в качестве первого этапа инициализацию переменной 570а, которая выполняется, если вспомогательная функция "arith_first_symbol()" показывает, что первый символ последовательности символов декодируется. Инициализация значения 550а инициализирует переменную "value" в зависимости от множества, например, 16 бит, которые получаются из битового потока, используя вспомогательную функцию "arith_get_next_bit", так, что переменная "value" имеет значение, представленное указанным числом бит. Кроме того, переменная "low" инициализируется, чтобы принять значение 0, а переменная "high" инициализируется, чтобы принять значение 65535.
На втором этапе 570b переменная "range" устанавливается в значение, которое больше на 1, чем разница между значениями переменных "high" и "low". Переменная "cum" устанавливается в значение, которое представляет собой относительное положение значения переменной "value" между значением переменной "low" и значением переменной "high". Таким образом, например, переменная "cum" принимает значение от 0 до 216 в зависимости от значения переменной "value".
Указатель р инициализируется в значение, которое меньше на 1, чем начальный адрес выбранной сводной таблицы частот.
Алгоритм "arith_decode()" также включает итеративный поиск сводной таблицы частот 570с. Итеративный поиск сводной таблицы частот повторяется, пока переменная cfl меньше или равна 1. При итеративном поиске сводной таблицы частот 570с указатель переменной q устанавливается в значение, равное сумме текущего значения указателя переменной р и половине значения переменной "cfl". Если значение записи *q выбранной сводной таблицы частот, запись которой адресована указателем переменной q, больше, чем значение переменной "cum", указатель переменной р устанавливается в значение указателя переменной q, и переменная "cfl" увеличивается. Наконец, переменная "cfl" смещается вправо на один бит, тем самым фактически разделяя значение переменной "cfl" на 2 и пренебрегая частью модуля.
Таким образом, итеративный поиск сводной таблицы частот 570 с фактически сравнивает значение переменной "cum" и множество записей выбранной сводной таблицы частот, чтобы определить интервал выбранной сводной таблицы частот, который ограничен записями сводной таблицы частот, так что значение cum находится в пределах выявленного интервала. Соответственно, записи выбранной сводной таблицы частот определяют интервалы, в которых соответствующие значения символа связанны с каждым из интервалов выбранной сводной таблицы частот. Кроме того, размер ширины интервалов между двумя смежными значениями сводной таблицы частот определяет вероятности символов, соответствующих указанным интервалам, так что выбранная сводная таблица частот в целом определяет вероятность распределения разных символов (или значений символов). Подробнее доступные сводные таблицы частот будут рассмотрены ниже, см. фиг.23.
Возвращаясь к фиг.5g, значение символа получено из значения переменной указателя р, при этом значение символа извлекается как показано на фиг.570d. Таким образом, разница между значением переменной указателя р и начальным адресом "cum_freq" оценивается для того, чтобы получить значение символа, которое представлено переменной "symbol".
Алгоритм "arith_decode" также включает в себя адаптацию 570е переменных "high" и "low". Если значение символа, представленное переменной "symbol", отличается от 0, переменная "high" обновляется, как показывает ссылка 570е. Кроме того, значение переменной "low" обновляется, как показано на ссылке с номером 570е. Переменная "high" устанавливается в значение, которое определяется значением переменной "low", переменной "range" и записью с индексом "symbol - 1" выбранной сводной таблицы частот. Переменная "low" увеличивается, причем величина роста определяется переменной "range" и записью выбранной сводной таблицы частот с индексом "symbol". Соответственно, разница между значениями переменных "low" и "high" регулируется в зависимости от числовой разницы между двумя смежными записями выбранной сводной таблицы частот.
Соответственно, если обнаружено значение символа, имеющее низкую вероятность, интервал между значениями переменных "low" и "high" сводится к малой ширине. Напротив, если обнаруженное значение символа содержит сравнительно большую вероятность, ширина интервала между значениями переменных "low" и high" устанавливается в сравнительно большое значение. Ширина интервала между значениями переменных "low" и "high" зависит от обнаруженного символа и соответствующих записей сводной таблицы частот.
Алгоритм "arith_decode()" также включает перенормировку интервала 570f, в котором интервал, определенный на шаге 570е, итеративно изменяется и масштабируется, пока не будет достигнуто условие "break". В перенормировке интервала 570f выполняется выборочная операция 570fa сдвига вниз. Если переменная "high" меньше, чем 32768, все остается как есть, а перенормировка интервала продолжает операцию увеличения размера интервала 570fb. Однако, если переменная "high" не меньше, чем 32768, а переменная "low" больше или равна 32768, переменные "values", "low" и "high" сокращаются на 32768, так что интервал, определенный переменными "low" и "high", смещается вниз, и так, что значение переменной "value" также сдвигается вниз. Однако, если будет установлено, что значение переменной "high" не меньше 32768, а также, что переменная "low" не превышает или равна 32768, а также, что переменная "low" больше или равна 16384 и, что переменная "high" меньше, чем 49152, переменные "value", "low" и "high" сокращаются на 16384, таким образом, смещая вниз интервал между значениями переменных "high" и "low", а также значение переменной "value". Если, однако, ни одно из указанных выше условий не выполняется, перенормировка интервала отменяется.
Однако, если любое из вышеуказанных условий, которые оцениваются на шаге 570fa, выполняется, выполняется операция увеличения интервала 570fb. В операции увеличения интервала 570fb значение переменной "low" удваивается. Кроме того, значение переменной "high" удваивается, и результат удвоения увеличивается на 1. Кроме того, удваивается значение переменной "value" (сдвигается влево на один бит), и бит битового потока, который получен вспомогательной функцией "arith_get_next_bit", используется как наименее значимый бит. Соответственно, размер интервала между значениями переменных "low" и "high" приблизительно удваивается, и точность переменной "value" увеличивается за счет нового бита битового потока. Как уже упоминалось выше, шаги 570fa и 570fb повторяются, пока не выполнится условие "break", то есть, пока интервал между значениями переменных "low" и "high" достаточно велик.
Что касается функциональности алгоритма "arith_decode()", следует отметить, что интервал между значениями переменных "low" и "high" сокращается на шаге 570е в зависимости от двух смежных записей сводной таблицы частот, на которую ссылается переменная "cum_freq". Если интервал между двумя смежными значениями выбранной сводной таблицы частот маленький, то есть, если смежные значения сравнительно близки друг к другу, интервал между значениями переменных "low" и "high", которые получаются в шаге 570е, будет сравнительно небольшой. С другой стороны, если две смежные записи сводной таблицы частот расположены дальше, интервал между значениями переменных "low" и "high", который получается в шаге 570е, будет сравнительно большим.
Следовательно, если интервал между значениями переменных "low" и "high", который получается в шаге 570е, сравнительно невелик, будет выполнено большое количество шагов перенормировки интервала, чтобы повторно отмасштабировать интервал к достаточному размеру (так, что ни одно из условий оценки 570fa не выполняется). Таким образом, сравнительно большое количество бит битового потока будет использовано для того, чтобы повысить точность переменной "value". Если, напротив, размер интервала, полученного на шаге 570е, является сравнительно большим, потребуется меньшее количество повторений шагов перенормировки интервала 570fa и 570fb, чтобы перенормировать интервал между значениями переменных "low" и "high" до «достаточного» размера. Соответственно, будет использоваться лишь сравнительно небольшое количество бит битового потока, чтобы увеличить точность переменной "value" и подготовить декодирование следующего символа.
Подводя итог вышесказанному, если символ декодирован, который содержит сравнительно высокую вероятность, и с которым связан большой интервал записей выбранной сводной таблицы частот, лишь сравнительно небольшое количество бит будет считано из битового потока, с тем чтобы обеспечить декодирование последующих символов. С другой стороны, если символ декодирован, который содержит сравнительно небольшую вероятность, и с которым связан малый интервал записей выбранной сводной таблицы частот, из битового потока будет взято сравнительно большое количество бит, чтобы подготовить декодирование следующего символа.
Таким образом, записи сводных таблиц частот отражают вероятности разных символов, а также отражают количество бит, необходимых для декодирования последовательности символов. Изменяя сводную таблицу частот в зависимости от контекста, т.е. в зависимости от ранее декодированных символов (или спектральных значений), например, путем выбора разных сводных таблиц частот в зависимости от контекста, могут быть использованы стохастические зависимости между разными символами, что обеспечит особенно эффективное с точки зрения битрейта кодирование последующих (или смежных) символов.
Подводя итог вышесказанному, функция "arith_decode()", которая была описана, ссылаясь на фиг.5g, вызывается сводной таблицей частот "arith_cf_m[pki][]", соответственно индексу "pki”, возвращаемому функцией "arith_get_pk()", чтобы определить значение наиболее значимой битовой плоскости m (которое может быть установлено в значение символа, представляемого возвращаемой переменной "symbol").
Подводя итог вышесказанному, необходимо отметить, что арифметический декодер является целым вариантом реализации изобретения с использованием способа генерации тегов с масштабированием. Подробнее это рассматривается в работе "Introduction to Data Compression" К. Sayood, Third Edition, 2006, Elsevier Inc.
Код компьютерной программы в соответствии с фиг.5g описывает используемый алгоритм согласно варианту реализации настоящего изобретения.
11.6.2 Арифметическое декодирование с использованием алгоритма в соответствии с фиг.5h и 5i
На фиг.5h и 5i показан код псевдопрграммы следующего варианта реализации алгоритма "arith_decode()", который может быть использован как альтернатива алгоритму "arith_decode", описанному со ссылкой на фиг.5g.
Необходимо отметить, что оба алгоритма согласно фиг.5g, 5h и 5i могут быть использованы в алгоритме "values_decode()" согласно фиг.3.
Таким образом, значение m декодируется с использованием функции "arith_decode()", которая вызывается со сводной таблицей частот "arith_cf_m[pki][]", при этом "pki" соответствует индексу, возвращаемому функцией "arith_get_pk()". Арифметический кодер (или декодер) является целым вариантом реализации изобретения с использованием способа генерации тегов с масштабированием. Подробнее это рассматривается в работе "Introduction to Data Compression" К. Sayood, Third Edition, 2006, Elsevier Inc. Код компьютерной программы в соответствии с фиг.5h и 5i описывает используемый алгоритм.
11.7 Механизм перехода
Далее будет кратко рассмотрен механизм перехода, который используется в алгоритме декодирования "values_decode()" в соответствии с фиг.3.
Когда декодированное значение m (которое возвращается как значение символа функцией "arith_decode()") является символом перехода "ARITH_ESCAPE", переменные "lev" и "esc_nb" увеличиваются на 1 и декодируется другое значение m. В этом случае функция "arith_get_pk()" вызывается еще раз со значением "с+esc_nb<<17" в качестве входного аргумента, где переменная "esc_nb" описывает количество символов перехода, декодированных ранее для того же кортежа из 2-х элементов и ограниченного до 7.
Если идентифицируется символ перехода, то предполагается, что значение наиболее значимой битовой плоскости m содержит увеличенный числовой вес. Кроме этого повторяется текущее числовое декодирование, при этом модифицированное числовое значение текущего контекста "с+esc_nb<<17" используется в качестве входной переменной функции "arith_get_pk()". Соответственно, обычно получаются различные значения индекса правила отображения "pki" при различных повторах субалгоритма 312ba.
11.8 Арифметический механизм остановки
Далее будет рассмотрен арифметический механизм остановки. Арифметический механизм остановки позволяет сократить количество необходимых битов в том случае, если часть высоких частот полностью квантована аудио кодером до 0.
Арифметический механизм остановки может быть осуществлен следующим образом. Если значение m не является символом перехода "ARITH_ESCAPE", декодер проверяет, не является ли последующее m символом "ARITH_ESCAPE". Если выполняется условие "esc_nb>0&&m==0", обнаруживается символ "ARITH_STOP", и процесс декодирования останавливается. В этом случае декодер переходит непосредственно к функции "arith_finish", которая будет рассмотрена далее. Условие означает, что остальная часть фрейма состоит из значений 0.
11.9 Декодирование менее значимой битовой плоскости
Далее будет рассмотрено декодирование одной или более менее значимой битовой плоскости. Декодирование менее значимой битовой плоскости осуществляется, например, на шаге 312d, как показано на фиг.3. В качестве альтернативы могут быть использованы алгоритмы в соответствии с фиг.5j и 5n.
11.9.1. Декодирование менее значимой битовой плоскости в соответствии с фиг.5j
а
a
Как показано на фиг.5j, значения переменных  и b извлекаются из значения m. Например, числовое представления значения m сдвигается вправо на 2 бита бля того, чтобы получить числовое представление переменной b. Кроме этого, значение переменной  получается посредством вычитания версии значения переменной b, смещенной влево на 2 бита, из значения переменной m.
a
a
Арифметическое декодирование значений r менее значимой битовой плоскости повторяются, при этом количество повторений определяется значением переменной "lev". Значение наименее значимой битовой плоскости r определяется при помощи функции "arith_decode", при этом используется сводная таблица частот, адаптированная к декодированию наименее значимой битовой плоскости (сводная таблица частот "arith_cf_r"). Наименее значимый бит (имеющий числовой вес 1) переменной r описывает наименее значимую битовую плоскость r спектрального значения, представленного переменной , и бит переменной r, имеющий числовой вес 2, описывает наименее значимый бит спектрального значения, представленного переменной b. Соответственно, переменная а обновляется посредством сдвига переменной  влево на 1 бит и прибавлением бита, имеющего числовой вес 1, переменной r в качестве наименее значимого бита. Подобным образом, переменная b обновляется посредством сдвига переменной b влево на 1 бит и прибавлением бита, имеющего числовой вес 2, переменной r.
a
а
Соответственно, два наиболее значимых бита переменных , b, несущие информацию, определяются с помощью значения наиболее значимой битовой плоскости m, и один или более наименее важный бит (если они присутствуют) значений  и b определяются одним или более значением r наименее значимой битовой плоскости.
Таким образом, если символ "ARITH_STOP" не встречается, декодируются оставшиеся битовые плоскости, если они присутствуют, текущего кортежа из 2-х элементов. Оставшиеся битовые плоскости декодируются от уровня наиболее значимых к наименее значимым с помощью вызова функции "arith_decode" в количестве lev раз совместно со сводной таблицей частот "arith_cf_r[]"). Декодированные битовые плоскости r допускают уточнение ранее декодированного значения m в зависимости от алгоритма, код псевдо программы которого показан на фиг.5j.
11.9.2 Декодирование полосы наименее значимых битов в соответствии с фиг.5n.
В качестве альтернативы алгоритм, код псевдо программы которого показан на фиг.5n, может быть использован для декодирования наименее значимой битовой плоскости. В этом случае, если не встречается символ "ARITH_STOP", декодируются оставшиеся битовые плоскости, если они присутствуют, текущего кортежа из 2-х элементов. Оставшиеся битовые плоскости декодируются от уровня наиболее значимых к наименее значимым с помощью вызова функции "arith_decode" в количестве lev раз совместно со сводной таблицей частот "arith_cf_r()"). Декодированные битовые плоскости r допускают уточнение ранее декодированного значения m в зависимости от алгоритма, показанного на фиг.5n.
11.10 Обновление контекста
11.11 Обновление контекста в соответствии с фиг.5k, 5l и 5m.
Далее будут рассмотрены операции, используемые для завершения декодирования кортежа спектральных значений, со ссылкой на 5k и 5l. Кроме этого, буде рассмотрена операция, используемая для завершения декодирования набора кортежейспектральных значений, соответствующих текущей части (например, текущему фрейму) аудио содержания.
а
а
Как показано на фиг.5k. запись, имеющая индекс 2*i массива "х_ас_dec[]" приравнивается к , и запись, имеющая индекс 2*i+1 массива "х_ас_dec[]" приравнивается к b после декодирования менее значимого бита 312d. Другими словами, в момент после декодирования менее значимого бита 312d, беззнаковое значение кортежа из двух элементов (, b) полностью декодируется. Оно сохраняется в элементе (например, в массиве "х_ас_dec[]"), который содержит спектральные коэффициенты в соответствии с алгоритмом, показанным на фиг.5k.
Следовательно, контекст "q" также обновляется для следующего кортежа из 2-х элементов. Необходимо отметить, что обновление контекста также должно быть выполнено для последнего кортежа. Обновление контекста выполняется при помощи функции "arith_update_context()", код псевдо программы которой представлен на фиг.5l.
a
a
а
а
а
Как показано на фиг.51, функция "arith_update_context(i,,b)" получает в качестве входных переменных декодированные беззнаковые квантованные спектральные коэффициенты (или спектральные значения) , b кортежа из 2-х элементов. Дополнительно функция "arith_update_context()" также принимает в качестве входной переменной для декодирования индекс i (например, частотный индекс) квантованного спектрального коэффициента. Другими словами, входная переменная i может, например, быть индексом кортежа спектральных значений, абсолютные значения которых определяются входными переменными , b. Как можно увидеть, запись "q[1][i]" массива "q[][]" может быть настроена как значение, равное +b+l. Дополнительно значение записи "q[1][i]" массива "q[][]" может быть ограничено до шестнадцатеричное значение "0×F". Таким образом, запись "q[1][i]" массива "q[][]" получается при вычислении суммы абсолютных значений текущего декодированного кортежа {, b} спектральных значений, имеющих индекс частоты 1, и добавлении 1 к указанной сумме.
Необходимо отметить, что запись "q[l|[i]" массива "q[][]" может рассматриваться как значение поддиапазона контекста, т.к. она описывает поддиапазон контекста, который используется для последующего декодирования дополнительных спектральных значений (или кортежей спектральных значений).
а
Необходимо отметить, что суммирование абсолютных значений  и b двух спектральных значений, декодированных в настоящий момент (знаковые версии сохраняются в записях "x_ac_dec[2*i]" и "x_ac_dec[2*i+1]"), может рассматриваться как вычисление нормы (например, нормы L1) декодированных спектральных значений.
Было обнаружено, что значения поддиапазона контекста (т.е. записи массива "q[][]"), которые описывают норму вектора, формируемого множеством ранее декодированных спектральных значений, являются особенно значимыми и эффективными с точки зрения занимаемой памяти. Было обнаружено, что норма, которая вычисляется на основе множества ранее декодированных спектральных значений, включает информацию о значимом контексте в компактной форме. Было обнаружено, что знак спектральных значений не особенно важен для выбора контекста. Также было обнаружено, что при формировании нормы на основе множества ранее декодированных спектральных значений обычно сохраняется самая важная информация, даже если опускаются некоторые детали. Кроме этого, было обнаружено, что сокращение числового значения текущего контекста до максимального значения обычно не приводит к значительной потере информации. Наоборот, было обнаружено, что более эффективно использовать то же самое состояние контекста для значимых спектральных значений, которые больше, чем заданное пороговое значение. Таким образом, сокращение значений поддиапазона контекста приводит к повышению эффективности с точки зрения занимаемой памяти. Кроме этого, было обнаружено, что сокращение значений поддиапазона контекста до определенного максимального значения позволяет просто и эффективно с точки зрения вычислений обновлять числовое значение текущего контекста, что рассматривалось, например, со ссылкой на фиг.5c и 5d. При сокращении значений поддиапазона контекста до сравнительно небольшого значения (например, до значения 15) состояние контекста, которое основано на множестве значений поддиапазона контекста, может быть представлено эффективно, что рассматривалось со ссылкой на фиг.5c и 5d.
Кроме этого, было обнаружено, что сокращение значений поддиапазона контекста до значений между 1 и 15 приводит компромиссу между точностью и затратами на память, т.к. для хранения подобного значения поддиапазона контекста достаточно 4-х битов.
Однако, необходимо отметить, что в некоторых вариантах реализации изобретения значение поддиапазона контекста может быть основано только на одном декодированном спектральном значении. В этом случае формирование нормы может быть опущено.
Следующий кортеж из 2-х элементов фрейма декодируется после завершения функции "arith_update_context()" при помощи увеличения i на 1 и повторения процесса, как это было рассмотрено ранее, начиная с функции "arith_get_context()".
Когда декодируются lg/2 кортежи из 2-х элементов в пределах фрейма или встречается символ остановки согласно "ARITH_ESCAPE", процесс декодирования спектральной величины завершается и начинается декодирование знаков.
Декодирование знаков подробно рассматривалось со ссылкой на фиг.3, где декодирование знаков показано номером 314.
После декодирования всех беззнаковых квантованных спектральных коэффициентов добавляется знак взаимодействия. Для каждого квантованного значения "x_ac_dec", неравного нулю, считывается бит. Если значение считанного бита равно 0, квантованное значение положительно, все остается как есть, и знаковое значение приравнивается к ранее декодированному беззнаковому значению. В противном случае (т.е. если значение считанного бита равно 1) декодированный коэффициент (или спектральное значение) является отрицательным и из беззнакового значения забирается дополнительный двоичный код. Знаковые биты считываются от низких к высоким частотам. Более подробно это рассматривается со ссылкой на фиг.3 и при объяснении относительно декодирования знаков 314.
Декодирование заканчивается вызовом функции "arith_finish()". Оставшиеся спектральные коэффициенты устанавливаются в 0. Соответствующие состояния контекста обновляются.
Более подробно это рассматривается со ссылкой на фиг.5m, где показан код псевдо программы функции "arith_finish()". Как можно увидеть, функция "arith_finish()" принимает входную переменную lg, которая описывает декодированные квантованные спектральные коэффициенты. Входная переменная lg функции "arith_finish()" предпочтительно описывает ряд декодированных спектральных коэффициентов, оставляя неучтенными спектральные коэффициенты, которым присвоено значение 0 в ответ на обнаружение символа "ARITH_STOP". Входная переменная N функции "arith_finish()" описывает длину текущего окна (т.е. окна, соответствующего обрабатываемой части аудио содержания). Обычно число спектральных значений, соответствующих длине окна N равно N/2, а количество кортежей из 2-х спектральных значений, соответствующих окну с длиной N, равно N/4.
Функция "arith_finish()" также получает в качестве входного значения вектор "х_ac_dec" декодированных спектральных значений или по меньшей мере ссылку на вектор декодированных спектральных значений.
Функция "arith_finish()" настроена устанавливать записи массива (или вектор) "х_ac_dec", для которых не декодировались спектральные значения из-за присутствия арифметического условия остановки, в нулевое значение. Кроме этого, функция "arith_finish()" настроена приравнивать значения поддиапазона контекста "q[1][i]", которые соответствуют спектральным значениям, для которых не декодировались значения из-за присутствия арифметического условия остановки, к заданному значению 1. Заданное значение 1 соответствует кортежу спектральных значений, в котором оба спектральных значения равны 0.
Соответственно, функция "arith_finish()" позволяет обновлять весь массив (или вектор) "x_ac_dec" спектральных значений, а также весь массив значений поддиапазона контекста "q[1][i]", даже если присутствует арифметическое условие остановки.
11.10.2 Обновление контекста в соответствии с фиг.5о и 5р
а
Далее будет рассмотрен следующий вариант обновления контекста со ссылкой на фиг.5о и 5р. После того, как беззнаковое значение кортежа из 2-х значений (, b) полностью декодировано, контекст q обновляется для следующего кортежа. Обновление также выполняется в том случае, если текущий кортеж из 2-х значений является последним. Оба обновления выполняются с помощью функции "arith_update_context()", код псевдо программы которой показан на фиг.5о.
Следующий кортеж из 2-х значений фрейма декодируется при увеличении i на 1 с помощью вызова функции "arith_decode()". Если lg/2 кортежи из 2-х значений уже были декодированы с фреймом или встретился символ остановки "ARITH_STOP", вызывается функция "arith_finish()". Контекст сохраняется в массиве (или векторе) "qs" для следующего фрейма. Код псевдо программы функции "arith_save_context()" показан на фиг.5р.
После того как декодированы все беззнаковые квантованные спектральные коэффициенты, добавляется знак. Для каждого неквантованного значения "qdec" считывается бит. Если значение считанного бита равно 0, квантованное значение является положительным, все остается как есть, и знаковое значение приравнивается к ранее декодированному беззнаковому значению. В противном случае декодированный коэффициент является отрицательным и из беззнакового значения забирается дополнительный двоичный код. Знаковые биты считываются от низких к высоким частотам.
11.11 Обобщение процесса декодирования
a
а
Далее кратко описывается процесс декодирования. За более подробной информацией можно обратиться к вышеизложенному описанию, а также к фиг.3, 4, 5а, 5c, 5e, 5g, 5j, 5k, 5l и 5m. Квантованные спектральные коэффициенты "x_ac_dec" бесшумно кодируются, начиная с самого низкого частотного коэффициента и увеличиваясь до самого высокого частотного коэффициента. Они декодируются в группах по два последующих коэффициента , b, которые собираются в так называемые кортежи (, b).
a
a
Декодированные коэффициенты "x_ac_dec" для частотной области (т.е. для режима частотной области) хранятся в массиве "х_ас_quant[g][win][sfb][bin]". Порядок передачи кодовых слов бесшумного кодирования таков, что. когда они декодируются в порядке получения и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом, a "g" самым медленно увеличивающимся индексом. В пределах кодового слова декодирование осуществляется в порядке , затем b. Декодированные коэффициенты "x_ac_dec" для "ТСХ" (т.е. для аудио декодирования с использованием преобразования кодированного возбуждения) сохраняются (например, напрямую) в массиве "х_ас_invquant[win][bin]", и порядок передачи кодовых слов бесшумного кодирования таков, что, когда они декодируются в порядке получения и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом, а "win" самым медленно увеличивающимся индексом. В пределах кодового слова декодирование осуществляется в порядке , затем b.
Сначала флаг "arith_reset_flag" определяет, должен ли быть сброшен контекст. Если флаг является активным, это учитывается функцией "arith_map_context".
Процесс декодирования начинается со стадии инициализации, где обновляется элемент контекста вектор "q" с помощью копирования и отображения элементов контекста предыдущего фрейма, который сохранен в "q[1][]" до "q[0][]". Элементы контекста в пределах "q" сохраняются на 4-х битах на каждый кортеж из 2-х значений. За более подробной информацией можно обратиться к фиг.5а, где показан код псевдо программы.
Бесшумный декодер предоставляет на выходе кортежи из 2-х беззнаковых квантованных спектральных коэффициентов. Сначала состояние контекста с вычисляется на основе ранее декодированных спектральных коэффициентов, окружающих декодируемый кортеж из 2-х элементов. Затем состояние обновляется с увеличением при помощи состояния контекста последних декодированных кортежей, учитывая только два новых кортежа. Состояние декодируется на 17 битах и возвращается функцией "arith_get_context". Код псевдо программы установленной функции "arith_get_context" показан на фиг.5c.
Состояние контекста с определяет сводную таблицу частот, используемую для декодирования наиболее значимой 2-х битовой плоскости m. Отображение от с до соответствующего индекса сводной таблицы частот "pki" осуществляется функцией "arith_get_pki()". Код псевдо программы функции "arith_get_pki()" показан на фиг.5e.
Значение m декодируется при помощи функции "arith_decode()", вызываемой со сводной таблицей частот "arith_cf_m[pki][]", где "pki" соответствует индексу, возвращаемому функцией "arith_get_pki()". Арифметический кодер (и декодер) является целым вариантом реализации изобретения с использованием способа генерации тегов с масштабированием. Код псевдо программы, изображенный на фиг.5g, описывает используемый алгоритм.
Когда декодированное значение m является символом перехода, "ARITH_ESCAPE", переменные „lev" и "esc_nb" увеличиваются на 1, другое значение m декодируется. В этом случае снова вызывается функция "get_pk", имеющая значение "c+esc_nb<<l7" в качестве входного аргумента, где "esc_nb" представляет количество, ограниченное до 7, символов перехода, декодируемых ранее для того же кортежа из 2-х элементов.
Если значение m не является символом перехода "ARITHE_SCAPE", декодер проверяет, формирует ли последующее m символ "ARITH_STOP". Если выполняется условие "(esc_nb>0&&m==0)", обнаруживается символ "ARITH_STOP" и процесс декодирования заканчивается. Декодер переходит непосредственно к знаковому декодированию, которое будет рассмотрено далее. Условие обозначает, что остальная часть фрейма состоит из значений 0.
а
Если символ "ARITH_STOP" не встречается, декодируются оставшиеся битовые плоскости, если таковые существуют, для данного кортежа из 2-х элементов. Оставшиеся битовые плоскости декодируются от наиболее значимого к наименее значимому уровню при помощи вызова "arith_decode()" lev количество раз совместно со сводной таблицей частот "arith_cf_r[]". Декодированные битовые плоскости r позволяют уточнять ранее декодированное значение m в соответствии с алгоритмом кода псевдо программы, который показан на фиг.5j. На этом этапе беззнаковое значение кортежа (, b) является полностью декодированным. Оно сохраняется в элементе, который содержит спектральные коэффициенты в соответствии с алгоритмом, код псевдо программы которой показан на фиг.5к.
Контекст "q" также обновляется для следующего кортежа. Необходимо отметить, что обновление контекста также должно осуществляться для последнего кортежа. Обновление контекста выполняется функцией "arith_update_context()", код псевдо программы которой показан на фиг.5l.
Следующий кортеж из 2-х элементов фрейма декодируется при помощи увеличения i на 1 и повтора описанного ранее процесса, начиная с функции "arith_get_context()". После того как lg/2 кортежи декодированы в пределах фрейма или появляется символ остановки "ARITH_STOP", процесс декодирования спектральной величины прекращается и начинается декодирование знаков.
Декодирование завершается вызовом функции "arith_finish()". Оставшиеся спектральные коэффициенты приравниваются к 0. Соответствующие состояния контекста обновляются. Код псевдо программы функции "arith_finish()" показан на фиг.5m.
После декодирования всех беззнаковых квантованных спектральных коэффициентов, добавляется знак взаимодействия. Для каждого квантованного значения "x_ac_dec()", неравного нулю, считывается бит. Если значение считанного бита равно 0, то квантованное значение является положительным, все остается как есть, и знаковое значение приравнивается к ранее декодированному беззнаковому значению. В противном случае декодированный коэффициент является отрицательным, и из беззнакового значения забирается дополнительный двоичный код. Знаковые биты считываются от низких к высоким частотам.
11.12 Условные обозначения
На фиг.5q показана легенда определений, которые относятся к алгоритмам в соответствии с фиг.5а, 5c, 5e, 5f, 5g, 5j, 5k, 5l и 5m.
На фиг.5r показана легенда определений, которые относятся к алгоритмам в соответствии с фиг.5b, 5d, 5f, 5h, 5i, 5n, 5o, и 5p.
12 Таблицы отображения
В одном из вариантов осуществления изобретения особенно эффективные таблицы "ari_lookup_m", "ari_hash_m" и "ari_cf_m" используются для выполнения функции "arith_get_pk()" в соответствии с фиг.5e или 5f, и и для выполнения функции "arith_decode", которая описывалась со ссылкой на фиг.5g, 5h и 5i. Однако необходимо отметить, что в некоторых вариантах реализации изобретения могут быть использованы разные таблицы.
12.1 Таблица "ari_hash_m[600]" в соответствии с фиг.22
Содержание особо эффективного применения таблицы "ari_hash_m", которая используется функцией "arith_get_pk", первый вариант реализации которой показан со ссылкой на фиг.5e и второй вариант реализации которой показан со ссылкой на фиг.5f, представлено в таблице на фиг.22. Следует отметить, что таблица на фиг.22 содержит 600 записей таблицы (или массива) "ari_hash m[600]". Следует также отметить, что таблица на фиг.22 показывает элементы в порядке индексов элементов так, что первое значение "0×000000100UL" соответствует записи таблицы "ari_hash_m[0]", имеющей индекс элемента (или табличный индекс) 0, так, что последнее значение "0×7ffffffff4fUL" соответствует записи таблицы "ari_hash m[599]", имеющей индекс элемента или табличный индекс 599. Далее следует отметить, что "0х" означает, что записи таблицы в таблице "ari_hash m[]" представлены в шестнадцатеричном формате. Кроме того,, необходимо отметить, что индекс "UL" указывает, что записи таблицы "ari_hash m[]" представлены беззнаковыми «длинными» целыми значениями (имеющими точность 32 бита).
Далее необходимо отметить, что записи таблицы в таблице "ari_hash m[]" на фиг.22 расположены по числовому порядку, чтобы обеспечить выполнение табличного поиска 506b, 508b, 510b функции "arith_get_pk()".
Следует также отметить, что наиболее значимые 24 бита записи таблицы в таблице "ari_hash m[]" представляют определенные значимые значения состояния, в то время как наименее значимые 8 бит представляют значения индекса правила отображения pki. Таким образом, записи таблицы "ari_hash m[]" описывают отображение "прямого попадания" значения состояния в значении индекса правила отображения "pki".
Однако, наибольшие 24 бита записей таблицы "ari_hash m[]" представляют, в то же самое время, границы интервалов числовых значений контекста, которым соответствует одно и то же значение индекса правила отображения. Данная концепция уже была подробно рассмотрена.
12.2 Таблица "ari_lookup_m" в соответствии с фиг.21
Содержание особо эффективного варианта таблицы "ari_lookup_m" показано в таблице на фиг.21. Следует отметить, что таблица на фиг.21 содержит записи таблицы "ari_lookup_m". На указанные записи ссылается индекс одномерной записи целочисленного типа (также именуемая "индекс элемента" или "индекс массива" или "табличный индекс"), который, например, обозначается "i_max" или "i_min". Следует отметить, что таблица "ari_lookup_m", которая включает в себя всего 600 записей, хорошо подходит для использования функцией "arith_get_pk" в соответствии с фиг.5e или 5f. Необходимо также отметить, что таблица "ari_lookup_m" в соответствии с фиг.21 адаптирована для совместного функционирования с таблицей "ari_hash m" в соответствии с фиг.22.
Следует отметить, что записи таблицы "ari_lookup_m[600]" перечислены в порядке возрастания индекса табличного индекса i (например, "i_max" или "i_min") от нуля до 599. Термин "0х" означает, что записи в таблице приведены в шестнадцатеричном формате. Соответственно, первая запись таблицы "0×02" соответствует записи таблицы "ari_lookup_m[0]" с табличным индексом 0, и последняя запись таблицы "0×5Е" соответствует записи таблицы "ari_lookup_m[599]" с табличным индексом 599.
Следует также отметить, что записи таблицы "ari_lookup_m[600]" соответствуют интервалам, которые определены смежными записями таблицы "arith_hash m[]". Таким образом, записи таблицы "ari_lookup_m" описывают значения индекса правила отображения, соответствующие интервалам числовых значений контекста, при этом интервалы определяются при помощи записей таблицы "arith_hash m[]".
12.3. Таблица "ari_cf_m[96][17]" в соответствии с фиг.23
Фиг.23 показывает набор из 96 сводных таблиц частот (или дополнительных таблиц) "ari_cf_m[pki][17]", одна из которых выбрана аудио кодером 100, 700, или аудио декодером 200, 800, например, для выполнения функции "arith_decode()", то есть для декодирования значения наиболее значимой битовой плоскости. Выбранная одна из 96 сводных таблиц частот (или дополнительных таблиц), показанная на фиг.23, выбирает функцию таблицы "cum_freq[]" для выполнения функции "arith_decode()".
Как видно из фиг.23, каждая подгруппа представляет собой сводную таблицу частот с 17 записями. Например, первая подгруппа 2310 представляет 17 записей сводной таблицы частот для "pki=0". Вторая подгруппа 2312 представляет 17 записей сводной таблицы частот для "pki=1". Наконец, 96-я подгруппа 2396 представляет 17 записей сводной таблицы частот для "pki=95". Таким образом, фиг.23 фактически представляет 96 различных сводных таблиц частот (или дополнительных таблиц) для "pki=0" до "pki=9", где каждая из 96 сводных таблиц частот представлена одной подгруппой (которая заключена в круглые скобки), и где каждая из указанных сводных таблиц частот включает 17 записей.
В подгруппе (например, подгруппе 2310, или подгруппе 2312, или подгруппе 2396) первое значение описывает первую запись сводной таблицы частот (имеющую индекс массива или индекс таблицы 0), и последнее значение описывает последнюю запись сводной таблицы частот (имеющую индекс массива или индекс таблицы 16).
Таким образом, каждая подгруппа 2310, 2312, 2396 таблицы на фиг.23 представляет записи сводной таблицы частот для использования функцией "arith_decode" в соответствии с фиг.5g или в соответствии с фиг.5h и 5i. Входная переменная "cum_freq[]" функции "arith_decode" описывает, какая из 96 сводных таблиц частот (представленных отдельными подгруппами из 17 записей таблицы "ari_cf_m") должна быть использована для декодирования текущих спектральных коэффициентов.
12.4 Таблица "ari_cf_r[]" в соответствии с фиг.24
Фиг.24 показывает содержание таблицы "ari_cf_r[]".
На фиг.24 показаны четыре записи указанной таблицы. Однако, необходимо отметить, что таблицы "ari_cf_r[]" в разных вариантах реализации изобретения могут отличаться друг от друга.
13. Оценка функционирования и преимущества
Варианты реализации изобретения использует обновленные функции (или алгоритмы) и обновленный набор таблиц, как отмечалось выше, чтобы получить оптимальное соотношение между сложностью вычислений, требованиями к памяти, а также эффективностью кодирования.
В целом, варианты реализации настоящего изобретения производят улучшенное спектральное бесшумное кодирование. Варианты реализации настоящего изобретения представляют усовершенствование спектрального бесшумного кодирования в стандарте USAC (унифицированном кодировании речи и аудио).
Варианты реализации настоящего изобретения представляют обновленное предложение для СЕ по улучшению спектрального бесшумного кодирования спектральных коэффициентов, которое основано на схемах, представленных в документах MPEG m16912 и m17002. Оба предложения были проанализированы, потенциальные недостатки удалены, а сильные стороны объединены.
Как и в документах m16912 и m17002, итоговое предложение основано на "оригинальной" схеме арифметического кодирования на основе контекста, как описано в рабочем проекте 5 стандарта USAC (проект стандарта унифицированного кодирования речи и аудио), но существенно снижает требования к памяти (оперативной (RAM) и постоянной (ROM)) без увеличения сложности вычислений, осуществляя при этом эффективное кодирование. Кроме этого, была доказана возможность перекодировки битовых потоков без потерь в соответствии с рабочими проектами 3 и 5, проекта стандарта USAC.
Настоящее описание характеризует вариант осуществления для СЕ на улучшения спектрального бесшумного кодирования спектральных коэффициентов. Предложенная схема основана на "оригинальной" схеме арифметического кодирования на основе контекста, как описано в рабочем проекте 4 проекта стандарта USAC, но существенно снижает требования к памяти (RAM, ROM), в то же время сохраняя бесшумное кодирование. Варианты реализации настоящего изобретения имеют своей целью заменить схему спектрального бесшумного кодирования как она используется в рабочем проекте 5 проекта стандарта USAC.
Описанная схема арифметического кодирования основана на схеме как в эталонной модели 0 (RM0) или рабочем проекте 4 (WD4) проекта стандарта USAC. Спектральные коэффициенты, расположенные по частоте или по времени, представляют собой модель контекста. Этот контекст используется для выбора сводных таблиц частот для арифметического кодера. По сравнению с рабочим проектом WD4 контекстное моделирование еще более усовершенствовано, и таблицы, содержащие вероятности символа, были повторно настроены. Число различных вероятностных моделей увеличилось с 32 до 96.
Варианты реализации изобретения уменьшают размеры таблицы (запрос на данные ROM) до 1518 слов длиной 32 бита или 6072 байт (WD: 16894,5 слов или 67578 байт). Статический запрос RAM снижается с 666 слов (2664 байт) до 72 (288 байт) на каждый основной канал кодера. В то же время, он полностью сохраняет выполнение кодирования и может даже достичь прироста приблизительно с 1,29% до 1,9%, по сравнению с общей скоростью передачи данных по всем 9 рабочим точкам. Все битовые потоки рабочих проектов 3 и 5 могут быть перекодированы без потерь, не влияя на ограничения битового резервуара.
Далее будет приведено краткое описание концепции кодирования в соответствии с рабочим проектом 5 проекта стандарта USAC для облегчения понимания преимуществ концепции, описанной в данном документе. А также будут рассмотрены предпочтительные варианты реализации настоящего изобретения.
В рабочем проекте 5 USAC схема контекстно зависимого арифметического кодирования используется для бесшумного кодирования квантованных спектральных коэффициентов. В качестве контекста используются декодированные спектральные коэффициенты, которые расположены ранее по частоте и времени. В соответствии с рабочим проектом 5 в качестве контекста используется максимальное количество из 16-ти спектральных коэффициентов, 12 из которых расположены ранее по времени. Спектральные коэффициенты, используемые для контекста и для декодирования, сгруппированы в кортежи по 4 коэффициента (т.е. четыре спектральных коэффициента, соседних по частоте, см. фиг.14а). Контекст сокращается и отображается в сводной таблице частот, которая затем используется для декодирования следующего кортежа из 4х спектральных коэффициентов.
Для полной схемы бесшумного кодирования согласно рабочему проекту 5 требуется запрос памяти (ROM) из 16894,5 слов (67578 байт). Кроме того, требуются 666 слов (2664 байт) статической оперативной памяти (RAM) на каждый основной канал кодера для хранения состояний для следующего фрейма. Таблица на фиг.14b описывает таблицы, используемые в схеме арифметического кодирования USAC WD4.
Необходимо отметить, что в отношении бесшумного кодирования, рабочие проекты 4 и 5 проекта стандарта USAC одинаковы. Оба используют тот же самый бесшумный кодер.
Общий запрос памяти полного декодера USAC WD4 оценивается в 37000 слов (148000 байт) для данных ROM без программного кода, и от 10000 до 17000 слов для статической оперативной памяти (RAM). Очевидно, что таблицы бесшумного кодера потребляют около 45% общего запроса данных постоянно памяти (ROM). Самая крупная отдельная таблица уже потребляет 4096 слов (16384 байт).
Было установлено, что и размер сочетания всех таблиц и отдельные крупные таблицы превышают типичные размеры кэша, содержащегося в процессорах с фиксированной точкой для портативных устройств потребительского класса, диапазон которых обычно составляет 8-32 кбайт (например, ARM9E, TIC64xx и т.д.). Это означает, что набор таблиц, вероятно, не может сохраняться в оперативной памяти (RAM), которая позволяет быстрый произвольный доступ к данным. Это приводит к тому, что весь процесс декодирования замедляется.
Кроме этого, было доказано, что современная эффективная технология аудио кодирования, такая как НЕ-ААС может применяться в большинстве мобильных устройств. НЕ-ААС применяет схему энтропийного кодирования Хаффмана с размером таблицы 995 слов. Более подробно см. ISO/IEC JTC1/SC29/WG11 N2005, MPEG98, February 1998, San Jose, "Revised Report on Complexity of MPEG-2 AAC2".
На 90-й конференции по проблемам MPEG в рабочих документах m16912 и m17002 были представлены два предложения, которые ставили своей целью сократить объем необходимой памяти и повысить эффективность схемы бесшумного кодирования. После анализа предложений модно прийти к следующим выводам.
Значительное уменьшение затрат на память возможно при сокращении размера кодового слова. Как показано в рабочем документе MPEG m17002, при сокращении размера кортежа с 4-х элементов до 1 элемента, затраты на память могут уменьшиться с 16984,5 до 900 слов без снижения эффективности кодирования; и
Может быть устранена избыточность при помощи применения для LSB кодирования кодовой книги неунифицированного вероятностного распределения вместо унифицированного вероятностного распределения.
В ходе проведенного анализа было обнаружено, что переход от схемы кодирования кортежей из 4-х элементов к кортежам из 1 элемента з0начительно влияет на уровень сложности вычислений: уменьшение размера кодируемого элемента увеличивает с тем же коэффициентом количество кодируемых символов. Это означает, что при уменьшении кортежа с 4-х элементов до 1 операции, необходимые для определения контекста, доступа к хэш-таблицам и декодирования символа, будут выполняться в четыре раза чаще, чем ранее. Кроме усложнения алгоритма по определению контекста это приводит к увеличению сложности вычислений на коэффициент 2,5 или x.xxPCU.
Далее будет кратко описана новая предлагаемая схема согласно вариантам реализации настоящего изобретения.
Для преодоления проблем, связанных с объемом необходимой памяти и сложностью вычислений, предлагается заменить схему рабочего проекта 5 (WD5) на улучшенную схему бесшумного кодирования. Основное внимание в данной разработке уделялось сокращению объема необходимой памяти, при сохранении достаточного сжатия данных и без повышения сложности вычислений. А именно, целью было достичь хорошего (или даже максимального) компромисса между осуществлением сжатия в многомерном сложном пространстве, сложностью вычислений и затратами на память.
Предложенная новая схема кодирования заимствует основной элемент бесшумного кодера WD5, а именно адаптацию контекста. Контекст извлекается при помощи ранее кодированных спектральных элементов, которые, как в WD5, поступают из прошлого и текущего фрейма (при этом фрейм может рассматриваться как часть аудио содержания). Спектральные коэффициенты кодируются при помощи комбинирования двух коэффициентов вместе в кортежи-двойки. Другое отличие состоит в том, что спектральные коэффициенты разделены на три части: знак, более значимые биты или наиболее значимые биты (MSBs) и менее значимые биты или наименее значимые биты LSBs). Знак кодируется независимо от величины, которая далее разделяется на две части: наиболее значимые биты (или более значимые биты) и остальная часть битов (или менее значимые биты), если таковые присутствуют. Кортежи, у которых величина двух элементов меньше или равна 3, кодируются непосредственно с помощью MSBs кодирования. В противном случае сначала передается кодовое слово перехода, которое обозначает дополнительную битовую плоскость. В базовой версии отсутствующая информация. LSBs или знак, кодируются при помощи унифицированного распределения вероятностей. В качестве альтернативы могут использоваться различные распределения вероятностей.
Уменьшение размера таблицы возможно, т.к.:
необходимо сохранять только вероятности для 17 символов: {[0;+3], [0;+3]}+ESC символ;
отсутствует необходимость сохранять группирующую таблицу (egroups, dgroups, dgvectors);
размер хэш-таблицы может быть уменьшен при определенной настройке.
Далее будут рассмотрены некоторые подробности относительно MSBs кодирования. Как уже отмечалось, одним из основных различий между WD5 проекта стандарта USAC, предложением, представленным на 90-й Конференции по проблемам MPEG, и данным предложением является размер символов. В WD5 проекта стандарта USAC рассматривались кортежи из 4-х элементов для создания контекста и бесшумного кодирования. В предложении, представленном на 90-й Конференции по проблемам MPEG, использовались кортежи из 1 элемента для уменьшения затрат ROM. В процессе разработки было обнаружено, что кортежи из 2-х элементов являются наилучшим решением для уменьшения затрат постоянной памяти (ROM) без увеличения сложности вычислений. Вместо обработки четырех кортежей из 4-х элементов для создания контекста, теперь учитываются четыре кортежа из 2-х элементов. Как показано на фиг.15а, три кортежа из 2-х элементов поступают из прошлого фрейма (также обозначенного как предыдущая часть аудио содержания) и один поступает из текущего фрейма (также обозначенного как текущая часть аудио содержания).
Уменьшение размера таблицы происходит благодаря трем основным факторам. Во-первых, необходимо сохранять только вероятности для 17 символов: {[0;+3], [0;+3]}+ESC символ). Отсутствует необходимость в группирующих таблицах (egroups, dgroups, dgvectors). Наконец, размер хэш-таблицы уменьшается при определенной настройке.
Несмотря на то, что размер был уменьшен с четырех до двух, сохранился такой же уровень сложности, как в WD5 проекта стандарта USAC. Это достигнуто путем упрощения как процесса создания контекста, так и доступа к хэш-таблице.
Упрощение и оптимизация выполнены так, что процесс кодирования не был затронут, а даже несколько улучшен. Это достигнуто, в основном, при помощи увеличения количества моделей вероятности с 32 до 96.
Далее будут рассмотрены некоторые подробности относительно LSBs кодирования. В некоторых вариантах реализации изобретения LSBs кодируются с помощью унифицированного распределения вероятности. В отличие от WD5 проекта стандарта USAC, LSBs обрабатываются кортежами из 2-х элементов вместо 4-х элементов.
Далее будут рассмотрены некоторые подробности относительно кодирования знака. Знак кодируется без применения арифметического основного кодера с целью снижения сложности. Знак передается только одним битом, когда соответствующая величина не равна нулю. 0 обозначает положительное значение, а 1 обозначает отрицательное значение.
Далее будут рассмотрены вопросы, касающиеся требований к памяти. Предлагаемая новая схема показывает общий запрос ROM максимально 1522.5 новых слов (6090 байт). См. таблицу на фиг.15b, которая описывает таблицы, используемые в предлагаемой схеме кодирования. В отличие от запроса ROM схемы бесшумного кодирования в WD5 проекта стандарта USAC, запрос ROM сокращается по меньшей мере на на 15462 слова (61848 байт). Получается тот же порядок величин, который предъявляется для запроса памяти ААС декодера Хаффмана в HL-AAC (995 слов или 3980 байт). Более подробно см. ISO/IEC JTC1/SC29/WG11 N2005, MPEG98, February 1998, San Jose, "Revised Report on Complexity of MPEG-2 AAC2", а также фиг.16a.
Это сокращает общий запрос ROM бесшумного кодера более чем на 92% и полного декодера USAC от примерно 37000 слов до примерно 21500 слов, или более чем на 41%. Более подробно см. фиг.16а и 16b, при этом на фиг.16а показаны требования к ROM в предложенной схеме бесшумного кодирования и в схеме бесшумного кодирования в соответствии с WD4 проекта стандарта USAC, а на фиг.16b показан общий запрос на данные ROM декодера USAC в соответствии с предложенной схемой и в соответствии с WD4 проекта стандарта USAC.
Далее, количество информации, необходимой для вывода контекста в следующем фрейме (статическая RAM), также уменьшается. В соответствии с WD4 проекта стандарта USAC, необходимо сохранять полный набор коэффициентов (максимально 1152) с обычным разрешением 16 бит дополнительно к индексу группы на каждый кортеж из 4-х элементов разрешением 10 бит, что насчитывает 666 слов (2664 байт) на каждый основной канал кодера (полный декодер USAC WD4: приблизительно от 10000 до 17000 слов). Новая схема сокращает постоянную информацию до 2 бит на спектральный коэффициент, который насчитывает до 72 слов (288 байт) в сумме на основной канал кодера. Запрос на статическую память может быть сокращен на 594 слова(2376 байт).
Далее описываются некоторые подробности, касающиеся возможного повышения эффективности кодирования. Эффективность декодирования в соответствии с новым предложением вариантов реализации изобретения сравнивалась в качестве эталона с битовыми потоками в соответствии с рабочими проектами WD3 и WD5 проекта стандарта USAC. Сравнение проводилось с помощью транскодера на основе программного декодера в качестве эталона. Для дополнительной информации относительно сравнения бесшумного кодирования в соответствии с WD3 и WD5 проекта стандарта USAC и предлагаемой схемы кодирования см. фиг.9, где схематично представлено тестирование.
Кроме этого, требования к памяти в вариантах реализации изобретения сравнивались с вариантами в соответствии с WD3 (или WD5) проекта стандарта USAC.
Эффективность кодирования не только сохраняется, но и несколько увеличивается. Более подробно см. таблицу на фиг.18, где представлена таблица средних битрейтов, производимых арифметическим кодером WD3 (или аудио кодером USAC, который использует арифметический кодер WD3) и аудио кодером (например, аудио кодером USAC) в соответствии с вариантом реализации изобретения.
Информацию о средних битрейтах каждого оперативного режима можно найти в таблице на фиг.18.
Кроме этого, на фиг.19 представлена таблица минимального и максимального уровней резервуара бит для арифметического кодера WD3 (или аудио кодер USAC, который использует арифметический кодер WD3) и аудио кодера в соответствии с вариантом реализации настоящего изобретения.
Далее будут рассмотрены некоторые детали относительно сложности вычислений. Уменьшение степени размерности арифметического кодирования обычно приводит к увеличению сложности вычислений. На самом деле, уменьшение размера вдвое приводит к увеличению в два раза операций арифметического кодера.
Однако, было обнаружено, что увеличение сложности может быть ограничено некоторыми модификациями, которые вводятся в новую схему кодирования в соответствии с реализацией настоящего изобретения. В некоторых вариантах реализации изобретения было значительно упрощено создание контекста. Для каждого кортежа из 2-х элементов контекст обновляется с увеличением на основе последнего созданного контекста. Вероятности сохраняются на 14 битах вместо 16, что позволяет избежать 64-битовые операции во время процесса декодирования. Кроме этого в некоторых вариантах реализации изобретения было значительно оптимизировано отображение вероятностной модели. Самый неблагоприятный случай был значительно улучшен и ограничен до 10 повторов вместо 95.
В результате сложность вычислений предложенной схемы бесшумного кодирования осталась на том же уровне, что и в WD5. Оценка «на бумаге» выполнялась различными версиями бесшумного кодирования и регистрировалась в таблице, которая представлена на фиг.20. Она показывает, что новая схема кодирования только примерно на 13% менее сложна, чем арифметический кодер WD5.
В итоге можно увидеть, что варианты реализации настоящего изобретения обеспечивают оптимальный баланс между вычислительной сложностью, требованиями к памяти и эффективностью кодирования.
14. Синтаксис битового потока
14.1 Полезная нагрузка спектрального бесшумного кодера
Далее описываются некоторые детали, касающиеся полезной нагрузки спектрального бесшумного кодера. В некоторых вариантах есть множество различных режимов кодирования, таких как, например, так называемый режим кодирования «линейного предсказания области» и режим кодирования «частотной области». В режиме кодирования линейного предсказания области ограничение шума производится на основе анализа линейного предсказания аудио сигнала, и шумоподобный сигнал кодируется в частотной области. В режиме кодирования частотной области ограничение шума осуществляется на основе психоакустического анализа и шумоподобная версия аудио содержания кодируется в частотной области.
Спектральные коэффициенты кодированного сигнала «линейного предсказания области» и кодированного сигнала "частотной области" скалярно квантуются, а затем бесшумно кодируются при помощи адаптивного контекстно-зависимого арифметического кодирования. Квантованные коэффициенты собираются в кортежи-двойки до того, как они передаются от самых низких частот к самым высоким частотам. Каждый кортеж-двойка разделяется на знак s, наиболее значимую 2-х-битовую плоскость m и оставшиеся одну или более менее значимые битовые плоскости r (если таковые присутствуют). Значение m кодируется в соответствии со смежными коэффициентами. Другими словами, m кодируется в соответствии с окружением. Остальные менее значимые битовые плоскости r энтропийно-кодируются без учета контекста. Посредством m и r величина этих спектральных коэффициентов может быть реконструирована на стороне декодера. Для всех символов, неравных 0, знаки s кодируются за пределами арифметического кодера с использованием 1 бита. Другими словами, значения m и r формируют символы арифметического кодера. Таким образом, знаки s кодируются за пределами арифметического кодера с использованием 1 бита на каждый квантованный коэффициент, неравный 0.
Подробная процедура арифметического кодирования описана в данном документе.
14.2. Элементы синтаксиса
Далее описывается синтаксис битового потока битового потока, несущего арифметически кодированную спектральную информацию, со ссылкой на фиг.6a-6j.
Фиг.6а показывает синтаксическое представление так называемого блока необработанных данных USAC ("usac_raw_data_block()").
Блок необработанных данных USAC состоит из одного или более одноканальных элементов ("single_channel_element()") и/или одного или более двухканальных элементов ("channel_pair_element()").
Что касается фиг.6b, то здесь описывается синтаксис одноканального элемента. Одноканальный элемент состоит из потока канала линейного предсказания области ("lpd_channel_stream()") или потока канала частотной области (fd_channel_stream()") в зависимости от основного режима.
Фиг.6с представляет синтаксис двухканального элемента. Двухканальный элемент включает информацию об основном режиме ("core_mode0", "core_mode1"). Кроме того, двухканальный элемент может включать информацию о конфигурации "ics_info()". Кроме того, в зависимости от информации об основном режиме двухканальный элемент состоит из потока канала линейного предсказания области или потока канала частотной области, связанного с первым из каналов, и двухканальный элемент также включает поток канала линейного предсказания области или поток канала частотной области, связанный со вторым из каналов.
Информация о конфигурации "ics_info()", синтаксическое представление которой показано на фиг.6d, содержит множество различных элементов информации о конфигурации, которые нерелевантны для настоящего изобретения.
Поток канала частотной области ("fd_channel_stream()"), синтаксическое представление которого показано на фиг.6е, включает получение информации ("global_gain") и информации о конфигурации ("ics_info()"). Кроме того, поток канала частотной области содержит данные коэффициента масштабирования ("scale_factor_data()"), которые описывают коэффициенты масштабироваеия, используемые для масштабирования спектральных значений разных полос коэффициентов масштабирования, и который применяется, например, блоком масштабирования 150 и рескейлером 240. Поток канала частотной области также включает арифметически кодированные спектральные данные ("ас_spectral_data()"), которые представляют арифметически кодированные спектральные значения.
Арифметически кодированные спектральные данные ("ас_spectral_data()"), синтаксическое представление которых показано на фиг.6f, включают в себя дополнительный флаг арифметического сброса ("arith_reset_flag"), который используется для выборочного сброса контекста, как было описано выше. Кроме того, арифметически кодированные спектральные данные включают множество блоков арифметических данных ("arith_data"), которые содержат арифметически кодированные спектральные значения. Структура блоков арифметически кодированных данных зависит от числа частотных полос (представленных переменной "num_bands"), а также от состояния флага арифметического сброса, что будет рассматриваться далее.
Структура арифметически кодированных блоков данных будет описана со ссылкой на фиг.6g, которая показывает синтаксическое представление указанных блоков арифметически кодированных данных. Представление данных в арифметически кодированных блоках данных зависит от числа lg кодируемых спектральных значений, статуса флага арифметического сброса, а также от контекста, то есть ранее кодированных спектральных значений.
Контекст для кодирования текущего набора (т.е. кортежа из 2-х элементов) спектральных значений определяется в соответствии с алгоритмом определения контекста, который показан номером 660. Подробности относительно алгоритма определения контекста были рассмотрены выше (фиг.5а и 5b). Блок арифметически кодированных данных включает в себя наборы lg/2 кодовых слов, каждый набор кодовых слов представляет множество (например, кортеж-двойку) спектральных значений. Набор кодовых слов включает в себя арифметическое кодовое слово "acod_m[pki]|m]", представляющее собой значение наиболее значимой битовой плоскости m кортежа спектральных значений, который использует от 1 до 20 бит. Кроме того, набор кодовых слов включает одно или более кодовых слов "acod_r[r]", если кортеж спектральных значений требует больше битовых плоскостей, чем более значимая битовая плоскость, для корректной репрезентации. Кодовое слово "acod_r[r]" представляет собой менее значимую битовую плоскость, которая использует от 1 до 20 бит.
Однако, если требуется одна или более менее значимых битовых плоскостей (в дополнение к более значимым битовым плоскостям) для правильного представления спектральных значений, то это передается с помощью одного или более арифметических кодовых слов перехода ("ARITH_ESCAPE"). Таким образом, в целом можно сказать, что для спектрального значения определяется, сколько требуется битовых плоскостей (наиболее значимая битовая плоскость и, возможно, одна или более дополнительных менее значимых битовых плоскостей). Если требуется одна или больше менее значимых битовых плоскостей, то это передается одним или более арифметическими кодовыми словами перехода "acod_m[pki][ARITH_ESCAPE]", которые кодируются в соответствии с текущей выбранной сводной таблицей частот, индекс которой задается переменной pki. Кроме того, контекст адаптируется, как можно увидеть на ссылках 664, 662, если одно или более арифметических кодовых слов перехода включены в битовый поток. Следуя за одним или несколькими арифметическими кодовыми словами перехода, арифметическое кодовое слово "acod_m[pki][m]" включается в битовый поток, как показано на ссылке 663, где pki определяет текущий действующий индекс вероятностной модели (учитывая адаптацию контекста, вызванную включением арифметических кодовых слов перехода), и где m обозначает значение наиболее значимой битовой плоскости кодируемого или декодируемого спектрального значения.
Как уже говорилось выше, присутствие любой менее значимой битовой плоскости приводит к наличию одного или более кодовых слов "acod_r[r]", каждое из которых представляет один бит наименее значимой битовой плоскости первого спектрального значения, а также один бит наименее значимой битовой плоскости второго спектрального значения. Одно или более кодовых слов "acod_r[r]" кодируется в соответствии с соответствующей сводной таблицей частот, которая является постоянной и независимой от контекста. Однако возможны разные механизмы для выбора сводной таблицы частот для декодирования одного или более кодовых слов "acod_r[r]".
Кроме того, следует отметить, что контекст обновляется после кодирования каждого кортежа спектральных значений, как показано на ссылке 668, так что контекст, как правило, различен для кодирования и декодирования двух последующих кортежей спектральных значений.
Фиг.6i показывает условные обозначения определений и вспомогательных элементов, определяющих синтаксис арифметически кодированного блока данных.
Кроме этого на фиг.6h показан альтернативный синтаксис арифметических данных "arith_data()" совместно с соответствующими условными обозначениями определений и вспомогательных элементов, которые показаны на фиг.6j.
Подводя итог вышесказанному, был описан формат битового потока, который может быть обеспечен аудио кодером 100 и который может быть оценен аудио декодером 200. Битовый поток арифметически кодированных спектральных значений кодируется так, что он подходит для алгоритма декодирования, который описан выше.
Кроме того, в целом следует отметить, что кодирование является обратной операцией декодирования, так что в целом можно предположить, что кодер выполняет поиск в таблице, используя рассмотренные выше таблицы, что примерно обратно поиску в таблице, выполняемому декодером. В общем, можно сказать, что специалист в данной области, который знает алгоритм декодирования и/или синтаксис желаемого битового потока, с легкостью сможет разработать арифметический кодер, который обеспечивает данные, определенные в синтаксисе битового потока и требуемые арифметическим декодером.
Кроме этого, необходимо отметить, что механизмы для определения числового значения текущего контекста и извлечения индекса правила отображения могут быть одинаковыми в аудио кодере и аудио декодере, так как обычно необходимо, чтобы аудио декодер использовал тот же самый контекст, что и аудио кодер, так что декодирование адаптируется к процессу кодирования.
15. Альтернативные варианты использования
Хотя некоторые аспекты уже были описаны в контексте устройства, ясно, что эти аспекты также представляют собой описание соответствующего способа, где блок или устройство соответствуют шагу способа или свойству шага способа. Аналогично, аспекты, изложенные в контексте шага способа, также представляют собой описание соответствующего блока или элемента либо свойства соответствующего устройства. Некоторые или все шаги способа могут быть выполнены посредством (или с помощью) аппаратного обеспечения, как, например, микропроцессор, программируемый компьютер или электронная схема. В некоторых вариантах один или несколько наиболее важных шагов способа могут быть выполнены таким устройством.
Изобретенный кодированный аудио сигнал может быть сохранен на цифровом носителе или может быть передан с помощью передающего средства, такого как беспроводное средство передачи или проводное средство передачи, например Интернет.
В зависимости от требований к определенным реализациям изобретения, воплощения изобретения могут быть реализованы в виде аппаратного средства или программного средства. Воплощение может быть осуществлено с помощью цифрового носителя, например дискеты, DVD, Blue-Ray, CD, ROM, PROM, EPROM, EEPROM или флэш-памяти, имеющего сохраненные на нем электронно читаемые контролирующие сигналы, которые взаимодействуют (или способны взаимодействовать) с программируемой компьютерной системой таким образом, что выполняется соответствующий способ. Таким образом, цифровой носитель может быть читаемым на компьютере.
Некоторые воплощения в соответствии с изобретением содержат носитель данных, имеющий электронно читаемые контролирующие сигналы, которые способны взаимодействовать с программируемой компьютерной системой так, что выполняется один из способов, описанных в данном документе.
Как правило, варианты осуществления настоящего изобретения могут быть реализованы в виде программного продукта с программным кодом, который задействован для осуществления одного из способов, когда программный продукт запускается на компьютере. Программный код, например, может быть сохранен на считываемом носителе.
Другие варианты включают компьютерную программу, которая хранится на считываемом носителе, для выполнения одного из способов, описанных в данном документе.
Иными словами, воплощением изобретенного способа, следовательно, является компьютерная программа, имеющая программный код для выполнения одного из способов, описанных в данном документе, когда компьютерная программа запускается на компьютере.
Еще одним вариантом реализации изобретенных способов, таким образом, является носитель данных (или цифровое средство хранения, или носитель, считываемый на компьютере), включающий записанную на нем компьютерную программу для выполнения одного из способов, описанных в данном документе. Носитель данных, цифровое средство хранения или записанное средство, как правило, является материальным и/или непереходным.
Еще одним вариантом реализации изобретенного способа является, таким образом, поток данных или последовательность сигналов, представляющих компьютерную программу для выполнения одного из способов, описанных в данном документе. Поток данных или последовательность сигналов, например, может быть настроена для передачи через соединение передачи данных, например, через Интернет.
Еще один вариант реализации изобретения включает средства обработки, например, компьютер или программируемое логическое устройство, настроенное или адаптированное для выполнения одного из способов, описанных в данном документе.
Еще один вариант реализации изобретения включает компьютер с установленной на нем компьютерной программой для выполнения одного из способов, описанных в данном документе.
Еще один вариант реализации изобретения включает устройство или систему, настроенную на передачу (например, электронным или оптическим образом) компьютерной программы принимающему устройству для выполнения одного из способов, описанных в данном документе. Принимающим устройством может быть, например, компьютер, мобильное устройство, запоминающее устройство и т.д. Устройство или система может включать, например, файловый сервер для передачи компьютерной программы принимающему устройству.
В некоторых вариантах реализации изобретения программируемое логическое устройство (например, программируемая вентильная матрица) может быть использовано для выполнения некоторых или всех функциональных возможностей способов, описанных в данном документе. В некоторых вариантах программируемая вентильная матрица может взаимодействовать с микропроцессором для выполнения одного из способов, описанных в данном документе. Как правило, способы предпочтительно осуществляются с помощью любого аппаратного средства.
Описанные выше варианты осуществления изобретения являются только иллюстрацией принципов данного изобретения. Подразумевается, что модификации и варианты конфигурации и элементов, описанных в данном документе, будут очевидны для других специалистов в данной области. Таким образом, данный документ ограничивается только областью предстоящих патентных притязаний, а не конкретными деталями, представленными в виде описания и объяснения вариантов реализации изобретения в настоящем документе.
16. Заключение
Таким образом, варианты реализации настоящего изобретения включают один или более следующих аспектов, при этом аспекты могут использованы как по отдельности, так и в комбинации.
a) Механизм хеширования состояния контекста
Согласно аспекту изобретения состояния в хэш-таблице рассматриваются как значимые состояния и границы групп. Это позволяет значительно сократить размер необходимых таблиц.
b) Инкрементное обновление контекста
Согласно аспекту некоторые варианты реализации изобретения включают эффективный с точки зрения вычислений способ обновления контекста. Некоторые варианты используют инкрементное обновление контекста, при котором числовое значение текущего контекста извлекается из числового значения предыдущего контекста.
c) Извлечение контекста
Согласно аспекту изобретения использование суммы двух спектральных абсолютных значений представляет собой объединение с усечением членов ряда. Это вид векторного квантования спектральных коэффициентов с усилением (противоположное конвенциональному векторному квантованию с разложением по схеме shape-gain). Он нацелен на ограничение порядка контекста в процессе передачи наиболее значимой информации из окружения.
Некоторые другие методы, применяемые в вариантах реализации настоящего изобретения, рассматриваются в неопубликованных патентных заявках РСТ ЕР 2010/065725, РСТ ЕР 2010/065726 и РСТ ЕР 2010/065727. Кроме этого, в некоторых вариантах реализации настоящего изобретения используется символ остановки. В некоторых вариантах реализации настоящего изобретения для контекста рассматриваются только беззнаковые значения.
Вышеуказанные неопубликованные международные патентные заявки раскрывают аспекты, которые используются в некоторых вариантах реализации настоящего изобретения.
Например, в некоторых вариантах реализации настоящего изобретения используется идентификация нулевой зоны. Соответственно, устанавливается так называемый «флаг малого значения» (например, 16 бит числового значения текущего контекста с).
В некоторых вариантах может использоваться вычисление контекста, зависимое от диапазона. Однако, в других вариантах зависимое от диапазона вычисление контекста может быть опущено в целях уменьшения сложности вычислений и размера таблиц.
Кроме этого, важным аспектом изобретения является хеширование контекста при помощи функции хеширования. Хеширование контекста может быть основано на концепции двух таблиц, которая рассматривается в указанных выше неопубликованных международных патентных заявках. Однако, в некоторых вариантах реализации изобретения хеширование контекста может быть адаптировано определенным образом с целью повышения эффективности вычислений. В других вариантах используется хеширование контекста как оно описано в указанных выше неопубликованных международных патентных заявках.
Необходимо отметить, что инкрементное хеширование контекста является достаточно простым и эффективным с точки зрения вычислений. Кроме этого, независимость контекста от знака значений, как это используется в некоторых вариантах реализации изобретения, способствует упрощению контекста, при этом требования к памяти остаются достаточно низкими.
В некоторых вариантах реализации изобретения применяется извлечение контекста при помощи суммы двух спектральных значений и ограничения контекста. Эти два контекста могут быть объединены. Оба аспекта направлены на ограничение порядка контекста при передаче наиболее значимой информации из окружения.
В некоторых вариантах используется «флаг малого значения», который аналогичен идентификации группы из множества нулевых значений.
В некоторых вариантах реализации изобретения применяется арифметический механизм остановки. Концепция подобна использованию символа "end-of-block" в JPEG, который имеет аналогичную функцию. Однако в некоторых вариантах символ ("ARITH_STOP") эксплицитно не включен в энтропийный кодер. Наоборот, используется комбинация уже существующих символов, которые не могли встретиться ранее, например, "ESC+0". Другими словами, аудио декодер настроен выявлять комбинацию существующих символов, которые обычно не применяются для представления числового значения, а также интерпретировать появление такой комбинации уже существующих символов как арифметическое условие остановки.
Вариант реализации настоящего изобретения применяет механизм хеширования контекста с использованием двух таблиц.
Таким образом, некоторые варианты реализации изобретения могут включать один или более из следующих основных аспектов:
- расширенный контекст для выявления в окружении либо нулевых областей, либо областей с малыми величинами;
- хеширование контекста;
- генерация состояния контекста: инкрементное обновление состояния контекста; и
- извлечение контекста: особое квантование значений контекста, включая суммирование величин и ограничение.
Таким образом, один из аспектов реализации настоящего изобретения заключается в инкрементном обновлении контекста. Варианты реализации изобретения включают эффективную концепцию обновления контекста, которая позволяет избежать сложных вычислений в соответствии с рабочим проектом (например, рабочим проектом 5). Наоборот, в некоторых вариантах реализации изобретения используются простые операции сдвига и логические операции. Простое обновление контекста значительно упрощает вычисление контекста.
В некоторых вариантах реализации изобретения контекст независим от знака значений (например, декодированные спектральные значения). Независимость контекста от знака значений приводит к уменьшению сложности переменной контекста. Эта концепция основана на том факте, что пренебрежение знаком в контексте не приводит к значительному ухудшению эффективности кодирования.
Согласно одному из аспектов изобретения, контекст извлекается при помощи суммы двух спектральных значений. Соответственно, значительно снижаются требования к памяти, необходимой для хранения контекста. Соответственно, использование контекстного значения, которое представляет собой сумму двух спектральных значений, может рассматриваться как предпочтительное в некоторых случаях.
В некоторых случаях ограничение контекста также является усовершенствованием. В дополнение к извлечению контекста при помощи суммы двух спектральных значений, записи контекстного массива "q" ограничиваются до максимального значения "0×F" в некоторых вариантах, что, в свою очередь, приводит к ограничению требований к памяти. Ограничение значений контекстного массива "q" имеет ряд преимуществ.
В некоторых вариантах реализации изобретения используется так называемый «флаг малого значения». При получении переменной контекста с (которая также обозначена как числовое значение текущего контекста) настраивается данный флаг, если значения ряда записей "q[1][i-3]" - "q[1][i-1]" очень малы. Соответственно, вычисление контекста может быть выполнено с высокой эффективностью. Также может быть получено значимое контекстное значение (например, числовое значение текущего контекста).
В некоторых вариантах реализации изобретения используется арифметический механизм остановки. Механизм "ARITH_STOP" позволяет остановить арифметическое кодирование или декодирование, если остались только нулевые значения. Соответственно, эффективность кодирования может быть повышена при умеренных затратах в плане сложности.
Согласно одному из аспектов изобретения применяется механизм хеширования контекста с использованием двух таблиц. Выполняется отображение контекста посредством алгоритма разделения на интервалы при помощи оценки таблицы "ari_hash_m" совместно с последующей оценкой поиска таблицы "ari_lookup_m". Этот алгоритм более эффективен, чем алгоритм WD3.
Далее будут рассмотрены некоторые дополнительные детали.
Необходимо отметить, что таблицы "arith_hash_m[600]" и "arith_lookup_m[600]" являются двумя различными таблицами. Первая используется для отображения одного контекстного индекса (например, числового значения контекста) по отношению к индексу вероятностной модели (например, значение индекса правила отображения), вторая используется для отображения группы последовательных контекстов, разграниченных с помощью индексов контекста в "arith_hash_m[]", по отношению к одной вероятностной модели.
Необходимо также отметить, что таблица "arith_cf_msb[96][16]" может использоваться как альтернатива таблице "arith_cf_m[96][17]", несмотря на то что их размеры немного отличаются, "arith_cf_msb[96][16]" и "arith_cf_m[96][17]" могут относиться к одной и той же таблице, поскольку 17-е коэффициенты вероятностных моделей всегда являются нулевыми. Это иногда не учитывается при вычислении необходимого объема для хранения таблиц.
Итак, некоторые варианты реализации изобретения представляют новую схему бесшумного кодирования (кодирования и декодирования), которая приводит к модификациям в рабочем проекте MPEG USAC (например, в рабочем проекте 5 MPEG USAC). Указанные модификации рассматриваются в прилагаемых чертежах и соответствующем описании.
В качестве заключительного пояснения необходимо отметить, что префиксы "ari" и "arith" в названии переменных, массивов, функций и т.д. взаимозаменяемы.