RU2628162C2 - Аудио кодер, аудио декодер, способ кодирования и декодирования аудио информации и компьютерная программа, определяющая значение поддиапазона контекста на основе нормы ранее декодированных спектральных значений - Google Patents
Аудио кодер, аудио декодер, способ кодирования и декодирования аудио информации и компьютерная программа, определяющая значение поддиапазона контекста на основе нормы ранее декодированных спектральных значений Download PDFInfo
- Publication number
- RU2628162C2 RU2628162C2 RU2012141241A RU2012141241A RU2628162C2 RU 2628162 C2 RU2628162 C2 RU 2628162C2 RU 2012141241 A RU2012141241 A RU 2012141241A RU 2012141241 A RU2012141241 A RU 2012141241A RU 2628162 C2 RU2628162 C2 RU 2628162C2
- Authority
- RU
- Russia
- Prior art keywords
- value
- context
- values
- spectral values
- audio
- Prior art date
Links
- 230000003595 spectral effect Effects 0.000 title claims abstract description 628
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004590 computer program Methods 0.000 title claims abstract description 16
- 238000013507 mapping Methods 0.000 claims abstract description 135
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000006870 function Effects 0.000 description 148
- 238000004422 calculation algorithm Methods 0.000 description 109
- 230000000875 corresponding effect Effects 0.000 description 95
- 238000004364 calculation method Methods 0.000 description 39
- 230000008569 process Effects 0.000 description 23
- 230000007246 mechanism Effects 0.000 description 20
- 230000007704 transition Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000009826 distribution Methods 0.000 description 12
- 230000005236 sound signal Effects 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000005284 excitation Effects 0.000 description 5
- 230000008447 perception Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 102100026396 ADP/ATP translocase 2 Human genes 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 2
- 101000884399 Homo sapiens Arylamine N-acetyltransferase 2 Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 108010076504 Protein Sorting Signals Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009291 secondary effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/0017—Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/02—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/002—Dynamic bit allocation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/02—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
- G10L19/0204—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders using subband decomposition
- G10L19/0208—Subband vocoders
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/02—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
- G10L19/032—Quantisation or dequantisation of spectral components
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/06—Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
Abstract
Изобретение относится к технике кодирования и декодирования информации и может быть использовано для получения декодированной аудио информации на основе кодированной аудио информации. Достигаемый технический результат - уменьшение ошибок кодирования спектральных значений входной аудио информации. Заявлены кодер, аудио декодер, способ кодирования и декодирования аудио информации и компьютерная программа для получения частотного значения на основе нормальных ранее декодированных спектральных значений. Аудио декодер для обеспечения декодированной аудио информации на основе кодированной аудио информации включает арифметический декодер для предоставления множества декодированных спектральных значений на основе арифметически кодированного представления спектральных значений и частотно-временной конвертер для обеспечения аудио представления временной области, используя декодированные спектральные значения для получения декодированной аудио информации, арифметический декодер выбирает правило отображения, описывающее отображение значения кода на код символа в зависимости от состояния контекста, которое описывается с помощью числового значения текущего контекста, определяет числовое значение текущего контекста в зависимости от множества ранее декодированных спектральных значений. 6 н. и 13 з.п. ф-лы, 24 ил.
Description
Область применения
Воплощения в соответствии с изобретением связаны с аудио декодером для обеспечения декодированной аудио информации на основе кодированной аудио информации, аудио кодером для обеспечения кодированной аудио информации на основе входной аудио информации, способом для получения декодированной аудио информации на основе кодированной аудио информации, способом получения кодированной аудио информации на основе входной аудио информации и компьютерной программой.
Воплощения в соответствии с изобретением связаны с улучшенным спектральным бесшумным кодированием, которое может быть использовано в аудио кодере и декодере, например, в так называемом едином кодере речи и аудио (USAC).
Уровень техники
Далее будет кратко описан уровень техники для того, чтобы облегчить понимание настоящего изобретения и его преимуществ. За последние десять лет были предприняты большие усилия для создания возможности цифрового хранения и распространения аудио содержания с хорошей эффективностью битрейта. Одним из важных достижений на этом пути является определение международного стандарта ISO/IEC 14496-3. Часть 3 данного стандарта связана с кодированием и декодированием аудио содержания, а подраздел 4 части 3 связан с общим аудио кодированием. ISO/IEC 14496, часть 3, раздел 4 определяет концепцию кодирования и декодирования общего аудио содержания. Кроме этого были предложены дальнейшие улучшения с целью повышения качества и/или снижения необходимой скорости передачи данных.
Согласно концепции, описанной в указанном стандарте, звуковой сигнал во временной области преобразуется в частотно-временное представление. Преобразование из временной области в частотно-временную область, как правило, осуществляется с помощью блоков преобразования, которые обозначаются как "кадры" образцов временной области. Было установлено, что выгоднее использовать перекрывающиеся кадры, которые перемещаются, например, на половину кадра, так как перекрытие позволяет эффективно избежать (или хотя бы уменьшить) артефакты. Кроме того, было обнаружено, что необходимо выполнить разделение на окна для того, чтобы избежать артефактов, появляющихся из-за обработки временно ограниченных кадров.
При преобразовании разделенной на окна части входного аудио сигнала из временной области в частотно-временную область, во многих случаях происходит уплотнение энергии, так что некоторые спектральные значения составляют значительно большую величину, чем множество других спектральных значений. Соответственно, во многих случаях есть сравнительно небольшое число спектральных значений с величиной, которая существенно выше средней величины спектральных значений. Типичным примером преобразования из временной области в частотно-временную область, приводящего к уплотнению энергии, является так называемое модифицированное дискретное косинус преобразование (MDCT).
Спектральные значения часто масштабируются и квантуются в соответствии с психоакустической моделью так, что ошибки квантования сравнительно меньше для психоакустичеки важных спектральных значений и сравнительно больше для психоакустически менее важных спектральных значений. Масштабированные и квантованные спектральные значения кодируются в целях обеспечения эффективного битрейта их представления.
Например, использование так называемого кодирования Хаффмана квантованных спектральных коэффициентов описано в международном стандарте ISO/IEC 14496-3:2005 (E), часть 3, раздел 4.
Тем не менее, было установлено, что качество кодирования спектральных значений оказывает значительное влияние на требуемый битрейт. Кроме того, было установлено, что сложность аудио декодера, который часто представляет собой портативное устройство, используемое потребителем, и который поэтому должен быть дешевым и потреблять мало энергии, зависит от способа кодирования, используемого для кодирования спектральных значений.
В связи с этим, существует необходимость в разработке концепции кодирования и декодирования аудио содержания, которая предусматривает улучшение компромисса между эффективностью битрейта и эффективностью использования ресурсов.
Сущность изобретения
Примером воплощения изобретения является аудио декодер для получения декодированной аудио информации на основе кодированной аудио информации. Аудио декодер включает в себя арифметический декодер для получения множества декодированных спектральных значений на основе арифметически-кодированного представления спектральных значений. Аудио декодер также включает конвертер частотной области во временную область для получения аудио представления во временной области с помощью декодированных спектральных значений в целях получения декодированной аудио информации. Арифметический декодер предназначен для выбора правила отображения, описывающего отображение значения кода в код символа (код символа обычно описывает спектральное значение или множество спектральных значений или наиболее значимую битовую плоскость спектрального значения или множества спектральных значений) в зависимости от состояния контекста, которое описано с помощью числового значения текущего контекста. Арифметический декодер настроен определять числовое значение текущего контекста в зависимости от множества ранее декодированных спектральных значений. Арифметический декодер также настроен получать множество значений поддиапазона контекста на основе ранее декодированных спектральных значений, а также сохранять указанные значения поддиапазона контекста. Арифметический декодер настроен извлекать числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению (или, что более точно, определять контекст для декодирования одного или более декодируемого спектрального значения) в зависимости от сохраненных значений поддиапазона контекста. Арифметический декодер настроен вычислять норму вектора, сформированного множеством ранее декодированных спектральных значений для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
Данный вариант реализации изобретения основан на том, что эффективная с точки зрения объема памяти информация о поддиапазоне контекста может быть получена при помощи вычисления нормы вектора, формируемого множеством ранее декодированных спектральных значений, так как норма такого вектора, формируемого множеством ранее декодированных спектральных значений, включает наиболее релевантную информацию о контексте. При формировании нормы знаки спектральных значений обычно не учитываются. Однако, было обнаружено, что знаки спектральных значений оказывают второстепенное влияние на состояние контекста, если вообще оказывают, и могут, таким образом, быть опущены, без существенного ущерба для значения поддиапазона контекста. Кроме этого, было обнаружено, что создание нормы вектора, формируемого множеством ранее декодированных спектральных значений, который обычно имеет эффект усреднения, позволяет уменьшить количество информации, получая при этом значение контекста, которое отражает с достаточной точностью ситуацию текущего контекста. Таким образом, объем памяти, необходимой для хранения контекста в форме множества значений поддиапазона контекста, может быть небольшим при хранении значений поддиапазона контекста, которые основаны на вычислении нормы вектора, формируемой множеством ранее декодированных спектральных значений (а не самих спектральных значений).
В предпочтительном варианте реализации изобретения арифметический декодер настроен суммировать абсолютные значения множества ранее декодированных спектральных значений, которые предпочтительно, но не обязательно, соответствуют смежным частотным областям частотно-временного конвертера, и общую временную часть аудио информации для того, чтобы получить общее значение поддиапазона контекста, соответствующее указанному множеству ранее декодированных спектральных значений. Было обнаружено, что суммирование абсолютных значений множества ранее декодированных спектральных значений, соответствующих вычислению нормы, является эффективным способом вычисления значимых значений поддиапазона контекста. Необходимо отметить, что вычисление суммы абсолютных значений вектора соответствует вычислению так называемой L-1 нормы вектора. Другими словами, вычисление суммы абсолютных значений вектора является примером вычисления нормы.
В предпочтительном варианте реализации изобретения арифметический декодер настроен на квантование нормы множества ранее декодированных спектральных значений, которые соответствуют смежным частотным областям частотно-временного конвертера и общей временной части аудио информации, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений. Квантование нормы может, например, включать вычисление нормы дискретной шкалы (напр., суммы абсолютных целых значений), а также сокращение результата.
В предпочтительном варианте реализации изобретения арифметический декодер настроен на квантование нормы множества ранее декодированных спектральных значений, которые, предпочтительно, но не обязательно, соответствуют смежным частотным областям частотно-временного конвертера и общей временной части аудио информации, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений. Было обнаружено, что квантование указанной нормы может способствовать тому, что количество информации останется достаточно небольшим. Например, квантование может способствовать уменьшению количества бит, необходимых для представления значения поддиапазона контекста, и, таким образом, упростить получение числового значения текущего контекста, имеющего небольшое количество бит.
В предпочтительном варианте реализации изобретения арифметический декодер настроен суммировать абсолютные значения ранее декодированных спектральных значений, которые кодируются с помощью общего значения кода, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений. Было обнаружено, что точность контекста является особенно высокой, если общее значение поддиапазона контекста формируется для спектральных значений, которые кодируются при помощи общего значения кода. Соответственно, каждое значение поддиапазона контекста может соответствовать значению кода, которое, в свою очередь, способствует эффективному использованию памяти при хранении значения поддиапазона контекста.
В предпочтительном варианте реализации изобретения арифметический декодер настроен предоставлять знаковые декодированные дискретные спектральные значения частотно-временному конвертеру, а также суммировать абсолютные значения, соответствующие знаковым декодированным спектральным значениям, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений. Было обнаружено, что иногда с точки зрения качества аудио целесообразно иметь знаковые значения в качестве входных значений частотно-временного конвертера, так как это позволяет рассматривать фазы реконструкции аудио содержания. Однако также было обнаружено, что опущение информации о фазе (напр., знаковой информации о спектральных значениях) в значениях поддиапазона контекста значительно не снижает точность информации о состоянии контекста, которая извлекается с помощью значений поддиапазона контекста, так как информация о фазе, в большинстве случаев, не строго соответствует различным частотным областям.
В предпочтительном варианте реализации изобретения арифметический декодер настроен извлекать предельное значение суммы из суммы абсолютных значений ранее декодированных дискретных спектральных значений (или извлекать предельное значение нормы из нормы вектора, формируемого множеством ранее декодированных дискретных спектральных значений) так, что диапазон возможных значений для предельного значения суммы меньше, чем диапазон возможных значений суммы (или так, что диапазон возможных значений для предельного значения нормы меньше, чем диапазон возможных значений нормы). Было обнаружено, что сокращение значений поддиапазона контекста позволяет уменьшить количество бит, необходимых для хранения значений поддиапазона контекста. Также было обнаружено, что умеренное сокращение значений поддиапазона контекста не приводит к значительной потере информации, так как для спектральных значений, которые превышают определенный порог, контекст впоследствии значительно не меняется.
В предпочтительном варианте реализации изобретения арифметический декодер настроен получать числовое значение текущего контекста в зависимости от множества значений поддиапазона контекста, соответствующих различным наборам ранее декодированных спектральных значений. Такой подход позволяет эффективно рассматривать различные контексты для декодирования различных спектральных значений (или кортежей спектральных значений). При поддержании достаточно высокой детализации значений поддиапазона контекста, так что множество значений поддиапазона контекста используется для получения одного числового значения текущего контекста, возможно сохранять значимую и при этом универсально используемую информацию о поддиапазоне контекста, из которой может быть извлечено фактическое числовое значение контекста непосредственно перед декодированием спектрального значения (или кортежа спектральных значений).
В предпочтительном варианте реализации изобретения арифметический декодер настроен получать числовое представление числового значения текущего контекста таким образом, что первая часть числового представления числового значения текущего контекста определяется первым значением суммы или предельным значением суммы абсолютных значений множества ранее декодированных спектральных значений (или, более обобщенно, первым значением нормы или предельным значением нормы), и вторая часть числового представления числового значения текущего контекста определяется вторым значением суммы или предельным значением суммы абсолютных значений множества ранее декодированных спектральных значений (или, более обобщенно, вторым значением нормы или предельным значением нормы). Было обнаружено, что значения поддиапазона контекста возможно эффективно применять при извлечении числового значения текущего контекста. А именно, было обнаружено, что значения поддиапазона контекста, вычисляемые как это было рассмотрено выше, подходят для формирования числового значения текущего контекста. Также было обнаружено, что значения поддиапазона контекста, вычисляемые как это было рассмотрено выше, подходят для определения различных частей числового представления числового значения текущего контекста. Соответственно, можно достичь как эффективного вычисления значений поддиапазона контекста, так и эффективного извлечения и обновления числового значения текущего контекста.
В предпочтительном варианте реализации изобретения арифметический декодер настроен получать числовое значение текущего контекста таким образом, что первое значение суммы или предельное значение суммы абсолютных значений множества ранее декодированных спектральных значений (либо первого значения нормы или предельное значение нормы) и второе значение суммы или предельное значение суммы абсолютных значений множества ранее декодированных спектральных значений (либо второе значение нормы или предельное значение нормы) представляют различный вес в числовом значении текущего контекста. Соответственно, могут быть приняты во внимание различные расстояния спектральных значений, на которых основаны значения поддиапазона контекста, до одного или более декодируемых спектральных значений. И наоборот, относительно различные позиции спектральных значений, на которых основаны значения поддиапазона контекста, и одного или более декодируемых спектральных значений могут быть рассмотрены в связи с применением различного числового веса в числовом значении текущего контекста. Такой подход способствует повторному обновлению числового значения текущего контекста, так как числовой вес частей числового представления может легко изменяться при помощи операции сдвига.
В предпочтительном варианте реализации изобретения арифметический декодер настроен модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее декодированному спектральному значению, в зависимости от значения суммы или предельного значения суммы абсолютных значений множества ранее декодированных спектральных значений (либо от значения нормы или предельного значения нормы) для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее одному или более декодируемому спектральному значению. Таким образом может быть достигнуто эффективное обновление числового значения текущего контекста, избегая при этом полного повторного вычисления числового значения текущего контекста.
В предпочтительном варианте реализации изобретения арифметический декодер настроен контролировать, меньше или равна сумма множества значений поддиапазона контекста заданному пороговому значению суммы, а также выборочно модифицировать числовое значение текущего контекста в зависимости от результата проверки, при этом каждое из значений поддиапазона контекста является значением суммы или предельным значением суммы абсолютных значений соответствующего множества ранее декодированных спектральных значений (либо значением нормы или предельным значением нормы). Соответственно, может быть обнаружено присутствие расширенной области сравнительно небольших спектральных значений, и результат обнаружения может быть применен для адаптации контекста. Например, из-за присутствия такой расширенной области сравнительно небольших спектральных значений может быть сделан вывод, что есть высокая вероятность того, что спектральное значение, декодируемое с использованием числового значения текущего контекста, является также сравнительно небольшим. Таким образом, контекст может быть адаптирован эффективным способом.
В предпочтительном варианте реализации изобретения арифметический декодер настроен учитывать множество значений поддиапазона контекста, которое определяется при помощи ранее декодированных спектральных значений, соответствующих предыдущей временной части аудио содержания, а также учитывать по меньшей мере одно значение поддиапазона контекста, определяемое при помощи ранее декодированных спектральных значений, соответствующих текущей временной части аудио содержания, чтобы получить числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению, а также соответствующее текущей временной части аудио содержания так, что окружение смежных по времени ранее декодированных спектральных значений предыдущей временной области и смежных по частоте ранее декодированных спектральных значений текущей временной области учитываются для получения числового значения текущего контекста. Таким образом может быть получен значимый контекст. Также необходимо отметить, что описанное выше извлечение значений поддиапазона контекста позволяет сохранить достаточно небольшим объем памяти, необходимый для хранения значений поддиапазона контекста предыдущей временной области.
В предпочтительном варианте реализации изобретения арифметический декодер настроен сохранять набор значений поддиапазона контекста, каждое из которых основано на значении суммы или предельном значении суммы абсолютных значений множества ранее декодированных спектральных значений (или, более обобщенно, на значении нормы вектора, которое формируется множеством ранее декодированных спектральных значений) для заданной временной области аудио информации, а также использовать значения поддиапазона контекста для извлечения числового значения текущего контекста с целью декодирования одного или более спектральных значений временной области аудио информации, которая следует за заданной временной областью аудио информации, оставляя отдельные ранее декодированные спектральные значения для заданной временной части аудио информации неучтенными при извлечении числового значения текущего контекста. Соответственно, может быть повышена эффективность вычисления числового значения текущего контекста. А также исчезает необходимость сохранять отдельные ранее декодированные спектральные значения на длительный период времени.
В предпочтительном варианте реализации изобретения арифметический декодер настроен отдельно декодировать значение величины и знак спектрального значения. В этом случае арифметический декодер настроен оставлять неучтенными знаки ранее декодированных спектральных значений при определении числового значения текущего контекста для декодирования необходимого спектрального значения. Было обнаружено, что подобная раздельная обработка абсолютного значения и знака спектрального значения не приводит к значительному ухудшению эффективности кодирования, но значительно снижает сложность вычислений. Кроме этого, было обнаружено, что вычисление значений поддиапазона контекста на основе вычисления нормы вектора, формируемого множеством ранее декодированных спектральных значений, хорошо подходит для использования в комбинации с такой концепцией.
Вариант реализации изобретения создает аудио кодер для обеспечения кодированной информации на основе входной аудио информации. Аудио кодер содержит энергосберегающий конвертер временной области в частотную область для обеспечения аудио представления в частотной области на основе представления входной аудио информации во временной области таким образом, что аудио представление частотной области включает набор спектральных значений. Аудио кодер включает арифметический кодер, который настроен кодировать спектральное значение или его обработанную ранее версию, либо, аналогично, множество спектральных значений или их обработанных ранее версий, используя кодовое слово переменной длины. Арифметический кодер настроен отображать спектральное значение или значение наиболее значимой битовой плоскости спектрального значения либо, аналогично, множество спектральных значений или значение наиболее значимой битовой плоскости множества спектральных значений на значение кода. Арифметический кодер настроен выбирать правило отображения, которое описывает отображение спектрального значения или наиболее значимой битовой плоскости спектрального значения на значение кода в зависимости от состояния контекста, описанного с помощью числового значения текущего контекста. Арифметический кодер настроен определять числовое значение текущего контекста в зависимости от множества ранее кодированных спектральных значений. Арифметический кодер настроен получать множество значений поддиапазона контекста на основе ранее кодированных спектральных значений, сохранять указанные значения поддиапазона контекста, а также извлекать числовое значение текущего контекста, соответствующее одному или более кодируемому спектральному значению (или, более точно, определять контекст для кодирования спектральных значений), в зависимости от сохраненных значений поддиапазона контекста. Арифметический кодер настроен вычислять норму вектора, которая формируется множеством ранее кодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее кодированных спектральных значений.
Указанный аудио кодер основан на тех же временных настройках, что и описанный выше аудио декодер. Указанный аудио кодер и может быть дополнен любыми свойствами и функциями, описанными выше по отношению к аудио декодеру.
Следующий вариант реализации настоящего изобретения создает способ обеспечения декодированной аудио информации на основе кодированной аудио информации.
Следующий вариант реализации настоящего изобретения создает способ обеспечения кодированной аудио информации на основе входной аудио информации.
Следующий вариант реализации настоящего изобретения создает компьютерную программу для выполнения одного из указанных способов.
Краткое описание чертежей
Варианты реализации настоящего изобретения будут далее описаны со ссылкой на прилагаемые фигуры:
Фиг. 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 ()" для арифметического декодирования символа из кодового слова переменной длины;
Фиг. 5J показывает представление кода псевдо-программы алгоритма для извлечения абсолютных величин a, b спектральных значений из общего значения m;
Фиг. 5K показывает представление кода псевдо-программы алгоритма для ввода декодированных значений a, b в массив декодированных спектральных значений;
Фиг. 5L показывает представление кода псевдо-программы алгоритма "arith_update_context ()" для получения значения контекста поддиапазона основе абсолютных значений a, b декодированных спектральных значений;
Фиг. 5M показывает представление кода псевдо-программы алгоритма "arith_finish ()" для заполнения записей массива декодированных спектральных значений и массива значений контекста поддиапазона;
Фиг. 5N показывает представление кода псевдо-программы следующего алгоритма для извлечения абсолютных значений a, 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(8) показывают содержание таблицы "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 может быть настроен для выполнения отображения в зависимости от правила отображения, которое может быть описано в информации правила отображения 828а. Информация правила отображения 828а может быть, например, в форме значения индекса правила отображения или выбранной сводной таблицы частот (которая выбирается, например, в зависимости от значения индекса правила отображения).
Арифметический декодер 820 настроен на выбор правила отображения (например, сводной таблицы частот), описывающего отображение значений кода (которое описывается с помощью арифметически кодированного представления 821 спектральных значений) на код символа (описывающий одно или более спектральных значений или его наиболее значимую битовую плоскость) в зависимости от состояния контекста (которое может быть описано в информациии состояния контекста 826а). Арифметический декодер 820 настроен определять текущее состояние контекста (описанное с помощью числового значения текущего контекста) в зависимости от множества ранее декодированных спектральных значений. Для этого может быть использован трекер состояния 826, который получает информацию с описанием ранее декодированных спектральных значений и обеспечивает на их основе числовое значение текущего контекста 826а, которое описывает состояние текущего контекста.
Арифметический декодер также настроен оценивать хэш-таблицу 829, записи которой определяют как значения значимого состояния среди числовых значений контекста, так и границы интервалов числовых значений контекста для того, чтобы выбрать правило отображения, при этом значение индекса правила отображения индивидуально соотносится с числовым значением контекста, так как является значением значимого состояния, при этом общее значение индекса правила отображения соотносится с разными числовыми значениями контекста, которые находятся в пределах интервала, ограниченного границами. Оценка хэш-таблицы 829 может осуществляться, например, при помощи блока оценки хэш-таблицы, который может быть частью селектора правила отображения 828. Соответственно, информация правила отображения 828а, например, в форме значения индекса правила отображения может быть получена на основе числового значения текущего контекста 826а, которое описывает состояние текущего контекста. Селектор правила отображения 828 может, например, определять значение индекса правила отображения 828а в зависимости от результата оценки хэш-таблицы 829. В качестве альтернативы оценка хэш-таблицы 829 может напрямую обеспечивать получение значения индекса правила отображения.
Что касается функциональных возможностей декодера аудио сигнала 800, следует отметить, что арифметический декодер 820 настроен на выбор правила отображения (например, сводную таблицу частот), которое, в среднем, хорошо адаптировано к декодируемым спектральным значениям, так как правило отображения выбирается в зависимости от состояния текущего контекста (описанного, например, с помощью числового значения текущего состояния), что, в свою очередь, определяется в зависимости от множества ранее декодированных спектральных значений. Таким образом, могут быть использованы статистические зависимости между декодируемыми смежными спектральными значениями. Кроме того, при использовании селектора правила отображения 828 может быть эффективно реализован арифметический декодер 820, обеспечивающий компромисс между сложностью вычислений, размером таблицы и эффективностью кодирования. При оценке (единичной) хэш-таблицы 829, записи которой описывают как значения значимого состояния, так и границы интервалов значений незначимого состояния, может быть достаточно единичного итеративного табличного поиска для того, чтобы извлечь информацию правила отображения 828а из числового значения текущего контекста 826а. Соответственно, становится возможным отображать сравнительно большое число различных возможных числовых значений (текущего) контекста на сравнительно небольшое количество различных значений индекса правила отображения. Используя хэш-таблицу 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, 826а и решать при помощи оценки записей таблицы "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), обозначающий значение значимого состояния (например, c1 или с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 настроен выполнять отображение в зависимости от правила отображения, которое может быть описано с помощью информации правила отображения 828а.
Информация правила отображения 828а может включать, например, значение индекса правила отображения или выборочный набор записей сводной таблиц частот.
Арифметический декодер 1120 настроен выбирать правило отображения (например, сводную таблицу частот), которое описывает отображение значения кода (описанного с помощью арифметически кодированного представления 821 спектральных значений) на код символа (которое описывает одно или более спектральных значений) в зависимости от состояния контекста, данное состояние контекста может быть описано с помощью информации о состоянии контекста 1126а. Информация о состоянии контекста 1126а может иметь форму числового значения текущего контекста. Арифметический декодер 1120 настроен определять состояние текущего контекста в зависимости от множества ранее декодированных спектральных значений 822. Для этой цели может быть использован трекер состояния 1126, который получает информацию, описывающую ранее декодированные спектральные значения. Арифметический декодер настроен модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее декодированным спектральным значениям, в зависимости от значения поддиапазона контекста для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее одному или более декодируемым спектральным значениям. Модификация числового представления числового значения предыдущего контекста может осуществляться, например, с помощью модификатора числового представления 1127, который является частью трекера состояния 1126. Соответственно, может быть получена информация о состоянии текущего контекста 1126а, например, в форме числового значения текущего контекста. Выбор правила отображения может осуществляться с помощью селектора правила отображения 1128, который извлекает информацию правила отображения 828а из информации о состоянии текущего контекста 1126а и обеспечивает информацию правила отображения 828а для определителя спектрального значения 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 настроен выполнять отображение в зависимости от правила отображения, которое может быть описано с помощью информации правила отображения 828а. Информация правила отображения 828а может включать, например, значение индекса правила отображения или выборочный набор записей сводной таблиц частот.
Арифметический декодер 1320 настроен выбирать правило отображения (например, сводную таблицу частот), которое описывает отображение значения кода (описанного с помощью арифметически кодированного представления 821 спектральных значений) на код символа (которое описывает одно или более спектральное значение) в зависимости от состояния контекста (которое может быть описано при помощи информации о состоянии контекста 1326а). Арифметический декодер 1320 настроен определять состояние текущего контекста в зависимости от множества ранее декодированных спектральных значений 822. Для этой цели может быть использован трекер состояния 1326, который получает информацию, описывающую ранее декодированные спектральные значения. Арифметический декодер также настроен получать множество значений поддиапазона контекста на основе ранее декодированных спектральных значений и сохранять указанные значения поддиапазона контекста. Арифметический декодер настроен извлекать числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению в зависимости от сохраненных значений поддиапазона контекста. Арифметический декодер 1320 настроен вычислять норму вектора, формируемого множеством ранее декодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
Вычисление нормы вектора, формируемого множеством ранее кодированных спектральных значений, для получения общего значения поддиапазона контекста, соответствующего множеству ранее декодированных спектральных значений, может выполняться, например, с помощью блока вычисления значения поддиапазона контекста 1327, который является частью трекера состояния 1326. Соответственно, может быть получена информация о состоянии текущего контекста 1326а на основе значений поддиапазона контекста, при этом трекер состояния 1326 предпочтительно обеспечивает числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению, в зависимости от сохраненных значений поддиапазона контекста. Выбор правила отображения может осуществляться с помощью селектора правила отображения 1328, который извлекает информацию правила отображения 828а из информации о состоянии текущего контекста 1326а и обеспечивает информацию правила отображения 828а для определителя спектрального значения 824.
Что касается функциональности декодера аудио сигнала 1300, необходимо отметить, что арифметический декодер 1320 настроен выбирать правило отображения (например, сводную таблицу частот), которое обычно хорошо адаптируется к декодируемому спектральному значению, т.к. правило отображения выбирается в зависимости от состояния текущего контекста, который, в свою очередь, определяется в зависимости от множества ранее декодированных спектральных значений. Соответственно, можно применять статистические зависимости между декодируемыми смежными спектральными значениями.
Было обнаружено, что в плане использования памяти эффективно хранить значения поддиапазона контекста, которые основаны на вычислении нормы вектора, формируемого множеством ранее декодированных спектральных значений, для их дальнейшего применения при определении значения контекста. Также было обнаружено, что такие значения поддиапазона контекста содержат наиболее значимую информацию о контексте. Соответственн, концепция, на основе которой функционирует трекер состояния 1326, обеспечивает компромисс между эффективностью кодирования и затратами на вычисления и хранение данных.
Дальнейшие детали будут рассмотрены ниже.
8. Аудио кодер в соответствии с фиг. 1
Далее будет описан аудио кодер в соответствии с вариантом реализации настоящего изобретения. Фиг. 1 показывает блок-схему такого аудио кодера 100.
Аудио кодер 100 настроен на получение входной аудио информации 110 и на предоставление на ее основе битового потока 112, который представляет собой кодированную аудио информацию. Аудио декодер 100 может дополнительно включать препроцессор 120, который настроен на получение входной аудио информации 110 и предоставление на ее основе предварительно обработанной входной аудио информации 110а. на фиг. Аудио кодер 100 также включает энергосберегающий конвертер сигнала из временной области в частотную область 130, который также обозначается как конвертер сигнала. Конвертер сигнала 130 настроен на получение входной аудио информации 110, 110а и предоставление на ее основе аудио информации 132 в частотной области, которая предпочтительно имеет вид набора спектральных значений. Например, трансформер сигнала 130 может быть настроен для получения фрейма входной аудио информации 110, 110а (например, блок образцов временной области) и для предоставления набора спектральных значений, представляющих аудио содержание соответствующего аудио фрейма. Кроме того, трансформер сигнала 130 может быть настроен на получение множества последующих, пересекающихся или непересекающихся аудио фреймов входной аудио информации 110, 110а и предоставление на ее основе аудио представления во временной и частотной области, которое состоит из последовательности последующих наборов спектральных значений, один набор спектральных значений связан с каждым фреймом.
Энергосберегающий трансформер сигнала из временной области в частотную область 130 может включать в себя энергосберегающий банк фильтров, который обеспечивает спектральные значения, соответствующие различным, пересекающимся или непересекающимся, частотным диапазонам. Например, трансформер сигнала 130 может включать в себя оконный MDCT трансформер 130а, который настроен разделять на окна входную аудио информацию 110, 110а (или ее фрейм) с помощью окна преобразования и выполнения модифицированного дискретного косинус-преобразования разделенной на окна входной аудио информации 110, 110а (или разделенного на окна фрейма). Таким образом, аудио представление в частотной области 132 может включать в себя набор, например, 1024 спектральных значений в виде MDCT коэффициентов, соответствующих фрему входной аудио информации.
Аудио декодер 100 может дополнительно включать спектральный постпроцессор 140, который настроен на получение аудио представления в частотной области 132 и предоставление на ее основе пост обработанного аудио представления в частотной области 142. Спектральный постпроцессор 140 может, например, быть настроен на выполнение временного ограничения шума и/или долгосрочного прогноза и/или любой другой спектральной пост-обработки, известной в данной области. Аудио кодер дополнительно содержит, по желанию, скейлер/квантователь 150, который настроен на получение в частотной области аудио представления 132 или версию его пост-обработки 142 и для обеспечения масштабированного и квантованного аудио представления в частотной области 152.
Аудио кодер 100 далее содержит, по желанию, психо-акустическую модель процессора 160, который настроен на получение входной аудио информации 110 (или пост-обработанной версии 110а) и представление на ее основе дополнительной контрольной информации, которая может быть использована для управления энергосберегающим трансформером сигнала из временной области в частотную область 130 для управления дополнительным спектральным пост-процессором 140 и/или для контроля за дополнительным скейлером/квантователем 150. Например, психоакустическая модель процессора 160 может быть сконфигурирована для анализа входной аудио информации, чтобы определить, какие компоненты входной аудио информации 110, 110а особенно важны для человеческого восприятия аудио содержания и какие компоненты входной аудио информации 110, 110а менее важны для восприятия аудио содержания. Таким образом, психо-акустическая модель процессора 160 может обеспечить контрольную информации, которая используется аудио кодером 100 для регулировки масштабирования аудио представления в частотной области 132, 142 скейлером/квантователем 150 и/или разрешения квантования, которое применяется скейлером/квантователем 150. Следовательно, важные для восприятия группы масштабных коэффициентов (т.е. группы смежных спектральных значений, которые являются особенно важными для человеческого восприятия аудио содержания) масштабируются с большим коэффициентом масштабирования и квантуются со сравнительно высоким разрешением, в то время как менее важные для восприятия группы масштабных коэффициентов (т.е. группы смежных спектральных значений) масштабируются со сравнительно меньшим коэффициентом масштабирования и квантуются со сравнительно низким разрешением квантования. Таким образом, масштабированные спектральные значения частот более важных для восприятия, как правило, значительно больше, чем спектральные значения частот менее важных для восприятия.
Аудио кодер также включает в себя арифметический кодер 170, который настроен на получение масштабированой и квантованной версии 152 аудио представления в частотной области 132 (или, наоборот, пост-обработанной версии 142 аудио представления в частотной области 132, или даже само аудио представление в частотной области 132), а также на обеспечение арифметической информации кодового слова 172а на ее основе таким образом, что арифметическая информация кодового слова представляет аудио представление в частотной области 152.
Аудио кодер 100 также включает в себя форматтер полезной нагрузки битового потока 190, который настроен на получение арифметической информации кодового слова 172а. Форматтер полезной нагрузки битового потока 190 также обычно настроен на получение дополнительной информации, как, например, информации коэффициента масштабирования, описывающей, какие коэффициенты масштабирования были применены скейлером/квантователем 150. Кроме того, форматтер полезной нагрузки битового потока 190 может быть настроен на получение другой управляющей информации. Форматтер полезной нагрузки битового потока 190 настроен на обеспечение битового потока 112 на основе полученной информации путем сборки битового потока в соответствии с желаемым синтаксисом потока, который будет обсуждаться ниже.
Далее будут рассмотрены подробности, касающиеся арифметического кодера 170. Арифметический кодер 170 настроен на получение множества пост-обработанных, масштабированных и квантованных спектральных значений аудио представления в частотной области 132. Арифметический кодер включает в себя экстрактор наиболее значимой битовой плоскости 174, который настроен на извлечение наиболее значимой битовой плоскости m спектрального значения или даже двух спектральных значений. Следует отметить, что наиболее значимая битовая плоскость может содержать один или более битов (например, два или три бита), которые являются наиболее значимыми битами спектрального значения. Таким образом, экстрактор наиболее значимой битовой плоскости 174 обеспечивает значение наиболее значимой битовой плоскости 176 спектрального значения.
Однако экстрактор наиболее значимой битовой плоскости 174 может обеспечивать комбинированное наиболее значимое значение битовой плоскости m, которое объединяет наиболее значимые битовые плоскости множества спектральных значений (например, спектральных значений а и b). Наиболее значимая битовая плоскость спектрального значения а обозначается как m. В качестве альтернатив комбинированное значение наиболее значимой битовой плоскости множества спектральных значений a, 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 включает экстрактор менее значимой битовой плоскости 189а, который настроен на извлечение одной или более менее значимой битовой плоскости из масштабированного и квантованного аудио представления в частотной области 152, если одно или более кодируемое спектральное значение превышает диапазон кодируемых значений, используя только наиболее значимую битовую плоскость. Менее значимые битовые плоскости могут включать в соответствии с необходимостью один или более битов. Соответственно, экстрактор менее значимой битовой плоскости 189а предоставляет информацию о менее значимой битовой плоскости 189b. Арифметический кодер 170 также включает второй определитель кодового слова 189с, который настроен на получение информации о менее значимой битовой плоскости 189d и предоставление на ее основе 0, 1 или более кодовых слов "acod_r", представляющих содержание 0,1 или более менее значимых битовых плоскостей. Второй определитель кодового слова 189 с может быть настроен на применение алгоритма арифметического кодирования или любой другой алгоритм кодирования для того, чтобы извлечь кодовые слова менее значимых битовых плоскостей "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.
Аудио декодер 200 включает дополнительный де-форматтер полезной нагрузки битового потока 220, который настроен на получение битового потока 210 и извлечение из битового потока 210 кодированного аудио представления в частотной области 222. Например, де-форматтер полезной нагрузки битового потока 220 может быть настроен на извлечение из битового потока 210 арифметически кодированных спектральных данных, таких как, например, арифметическое кодовое слово "acod_m [pki][m]", представляющее значение наиболее значимой битовой плоскости m спектрального значения а или множества спектральных значений a, b, а также кодовое слово "acod_r", представляющее содержание менее значимо q битовой плоскости спектрального значение а или множества спектральных значений a, 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 обратно квантованного и pe-масштабированного аудио представления в частотной области 242 (или, наоборот, обратно квантованного и pe-масштабированного аудио представления в частотной области 242 или декодированного аудио представления в частотной области 232) и предоставление на его основе аудио информации представления во временной области 262. Трансформер сигнала из частотной области во временную область 260 может, например, включать трансформер для выполнения обратного модифицированного дискретного косинус-преобразования (IMDCT) и соответствующего разделения на окна (а также других вспомогательных функций, как, например, перекрытие-и-добавление).
Аудио декодер 200 может дополнительно содержать пост-процессор временной области 270, который настроен на получение представления аудио информации во временной области 262 и получение декодированной аудио информации 212 с помощью пост-обработки во временной области. Однако, если пост-обработка отсутствует, представление во временной области 262 может быть идентичным декодированной аудио информации 212.
Следует отметить, что обратный квантователь/рескейлер 240, спектральный предпроцессор 250, трансформер сигнала из частотной области во временную область 260 и пост-процессор во временной области 270 управляются в зависимости от управляющей информации, которая извлекается из битового потока 210 с помощью де-форматтера полезной нагрузки битового потока 220.
Подводя итог общей функциональности аудио декодера 200, декодированное аудио представление в частотной области 232, например, набор спектральных значений, соответствующих аудио фрейму кодированной аудио информации, могут быть получены на основе кодированного представления в частотной области 222 с помощью арифметического декодера 230. Следовательно, набор, например, 1024 спектральных значений, которые могут быть MDCT коэффициентами, обратно квантованы, ре-масштабированы и предварительно обработаны. Соответственно, получается обратно квантованный, pe-масштабированный и спектрально предварительно обработанный набор спектральных значений (например, 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 включает расчет значения контекста 312а, декодирование наиболее значимой битовой плоскости 312b, арифметическое обнаружение конечного символа 312с, добавление менее значимой битовой плоскости 312d и обновление массива 312е.
Вычисление значения состояния 312а включает вызов функции "arith_get_context(c,i,N)", как показано, например, на фиг. 5C или 5D. Соответствено, числовое значение текущего контекста (состояния) с предоставляется как возвратное значение вызова функции "arith_get_context(c,i,N)". Таким образом, числовое значение предыдущего контекста (также обозначенное "с"), которое является входной переменной функции "arith_get_context(c,i,N)" обновляется для того, чтобы получить, в качестве возвратного значения, числовое значение текущего контекста с.
Декодирование наиболее значимой битовой плоскости 312b включает повторное выполнение алгоритма декодирования 312ba и извлечение 312bb значений а, b из полученного значения m алгоритма 312ba, при этом переменная lev инициализируется до нуля. Алгоритм 312ba повторяется до тех пор, пока не достигнута команда "прерывание" (или условие). Алгоритм 312ba включает вычисление индекса состояния „pki" (который также служит в качестве индекса сводной таблицы частот) в зависимости от числового значения текущего контекста с, а также в зависимости от значения уровня "esc_nb", с помощью функции "arith_get_pk()", которая обсуждается ниже (соответствующие варианты реализации изобретения показаны, например, на фиг. 5E и 5F). Алгоритм 312ba также включает выбор сводной таблицы частот в зависимости от индекса состояния pki, который обновляется вызовом функции "arith_get_pk()", при этом переменная "cum_freq" может быть установлена на начальный адрес одной из 96 сводных таблиц частот в зависимости от индекса "pki". Переменная "cfl" может быть инициализирована на длину выбранной сводной таблицы частот (или части таблицы), которая, например, равна количеству символов в алфавите, т.е. количеству различных значений, которые могут быть декодированы. Длины всех сводных таблиц частот (или частей таблиц) от "arith_cf_m[pki=0][17]" до "arith_cf_m[pki=95][17]", доступных для декодирования значения наиболее значимой битовой плоскости m, составляют 17, так что 16 различных значений наиболее значимых битовых плоскостей и управляющий символ ("ARITH_ESCAPE") могут быть декодированы. Впоследствии, значение m наиболее значимой битовой плоскости может быть получено путем выполнения функции "arith_decode()", с учетом выбранной сводной таблицы частоты (описанной переменной "cum_freq" и переменной "cfl"). При извлечении значения m наиболее значимой битовой плоскости, оцениваются биты под названием "acod_m" в битовом потоке 210 (см., например, фиг. 6G или 6H).
Алгоритм 312ba также включает проверку того, равно ли значение наиболее значимой битовой плоскости m управляющему символу "ARITH_ESCAPE", или нет. Если значение наиболее значимой битовой плоскости m не равно арифметическому управляющему символу, алгоритм 312ba прерывается (условие "перерывания"), а остальные инструкции алгоритма 312ba поэтому могут быть пропущены. Таким образом, выполнение процесса продолжается установкой значения b и значения а на шаг 312bb. В отличие от этого, если декодированное значение m наиболее значимой битовой плоскости совпадает с арифметическим управляющим символом "ARITH_ESCAPE", значение уровня „lev" увеличивается на единицу. Значение уровня "esc_nb" приравнивается к значению уровня „lev" пока переменная „lev" не превышает значение 7, в этом случае переменная "esc_nb" устанавливается в значение 7. Как уже упоминалось, алгоритм 312ba повторяется до тех пор, пока декодированное значение m наиболее значимой битовой плоскости отличается от арифметического управляющего символа, при этом используется модифицированный контекст (поскольку входной параметр функции "arith_get_pk()" адаптируется в зависимости от значения переменной значения "esc_nb").
Так как наиболее значимая битовая плоскость декодируется при помощи однократного или повторяющегося выполнения алгоритма 312ba, т.е. декодируется значение m наиболее значимой битовой плоскости, отличающееся от арифметического управляющего символа, переменная спектрального значения "b" приравнивается множеству (например, 2) наиболее значимых битов значения m наиболее значимой битовой плоскости, и переменная спектрального значения "а" устанавливается в соответствии с (например, 2) наименьшими битами значения m наиболее значимой битовой плоскости. Подробности относительно функциональности можно рассмотреть с помощью ссылки 312bb.
Следовательно, на шаге 312 с проверяется, присутствует ли арифметический символ остановки. Это тот случай, когда значение m наиболее значимой битовой плоскости равно нулю, а переменная „lev" больше, чем ноль. Соответствен, арифметическое условие остановки обозначается как «необычное» условие, при котором значение m наиболее значимой битовой плоскости равно нулю, а переменная „lev" указывает, что значению m наиболее значимой битовой плоскости соответствует увеличенный числовой вес. Другими словами, арифметическое условие остановки обнаруживается тогда, когда битовый поток указывает, что увеличенный числовой вес, больший, чем минимальный числовой вес, должен соответствовать значению наиболее значимой битовой плоскости, которое равно нулю, что является условием, которое не встречается в нормальной ситуации кодирования. Другими словами, обнаруживается арифметическое условие остановки, если кодированный арифметический управляющий символ перехода следует за кодированным значением 0 наиболее значимой битовой плоскости.
После оценки присутствия арифметического условия остановки, которая выполняется на шаге 212с, могут быть получены менее значимые битовые плоскости, например, как показано на ссылке с номером 212d на фиг. 3. Для каждой менее значимой битовой плоскости декодируются два бинарных значения. Одно бинарное значение соответствует переменной а (или первому спектральному значению двойки спектральных значений) и другое бинарное значение соответствует переменной b (или второму спектральному значению двойки спектральных значений). Количество менее значимых битовых плоскостей обозначено переменной lev.
При декодировании одной или более менее значимых битовых плоскостей (если они присутствуют) повторно выполняется алгоритм 212da, при этом количество выполнений алгоритма 212da определяется переменной "lev". Необходимо отметить, что первый повтор алгоритма 212da выполняется на основе значений переменных а, b, как это настроено на шаге 212bb. Дальнейшие повторы алгоритма 212da выполняются на основе обновленных значений переменных а, b.
В начале повтора выбирается таблица сводных частот. Следовательно, выполняется арифметическое декодирование для того, чтобы получить значение переменной r, при этом значение переменной r описывает множество менее значимых битов, например, один менее значимый бит соответствует переменной а, другой менее значимый бит соответствует переменной b. Функция "ARITH_DECODE" используется для того, чтобы получить значение r, при этом для арифметического декодирования используется сводная таблица частот "arith_cf_r".
Следовательно обновляются значения переменных а и b. Для этой цели переменная а сдвигается влево на один бит, и наименее значимый бит переменной а, которая была сдвинута, устанавливается как значение, определяемое как наименее значимый бит значения r. Переменная b сдвигается влево на один бит, и наименее значимый бит переменной b, которая была сдвинута, устанавливается как значение, определяемое как бит 1 переменной r, при этом бит 1 переменной r имеет числовой вес 2 в бинарном представлении переменной r. Алгоритм 412ba повторяется до тех пор, пока не будут декодированы все наименее значимые биты.
После декодирования менее значимых битовых плоскостей обновляется массив "x_ac_dec", в котором значения переменных сохраняются в записях указанного массива, имея индексы массива 2*i и 2*i+1.
Следовательно обновляется состояние контекста при использовании функции "arith_update_context(i,a,b)", которая подробнее будет рассмотрена далее со ссылкой на фиг. 5G.
За обновлением состояния контекста, который выполняется на шаге 313, повторяются алгоритмы 312 и 313 до тех пор, пока текущая переменная i не достигнет значения lg/2 или не будет обнаружено арифметическое условие остановки.
Далее выполняется завершающий алгоритм "arith_finish()", как показывает ссылка 315. Подробнее завершающий алгоритм "arith_finish()" будет рассматриваться далее со ссылкой на фиг. 5M.
После завершающего алгоритма 315 декодируются знаки спектральных значений с помощью алгоритма 314. Как можно увидеть, знаки спектральных значений, отличных от нуля, кодируются индивидуально. С помощью алгоритма 314 читаются знаки всех спектральных значений, имеющие индексы i между i=0 и i=lg-1, которые не равны нулю. Для каждого неравного нулю спектрального значения, имеющего индекс спектрального значения между i=0 и i=lg-1, читается значение (обычно единичный бит) s из битового потока. Если значение s, которое читается из битового потока, равно 1, знак указанного спектрального значения инвертируется. Для этой цели получается доступ к массиву "x_ac_dec" для того, чтобы определить, равно ли нулю спектральное значение, имеющее индекс i, а также для того, чтобы обновить знаки декодированных спектральных значений. Однако необходимо отметить, что знаки переменных a, b остаются неизменными слева при декодировании знака 314.
При выполнении завершающего алгоритма 315 перед декодированием знаков 314 возможно сбросить все необходимые элементы после символа ARITH_STOP.
Необходимо отметить, что концепция получения значений менее значимых битовых плоскостей не имеет особого значения для некоторых вариантов реализации настоящего изобретения. В некоторых вариантах реализации настоящего изобретения можно опустить декодирование менее значимых битовых плоскостей. В качестве альтернативы для этой цели могу быть использованы другие алгоритмы декодирования.
11.2 Порядок декодирования в соответствии с фиг. 4
Далее будет описан порядок декодирования спектральных значений.
Квантованные спектральные коэффициенты "x_ac_dec[]" бесшумно кодируются и передаются (например, в битовом потоке), начиная с самого низкочастотного коэффициента и переходя к самому высокочастотному коэффициенту.
Следовательно, квантованные спектральные коэффициенты "x_ac_dec[]" бесшумно декодируются, начиная с самого низкочастотного коэффициента и переходя к самому высокочастотному коэффициенту. Квантованные спектральные коэффициенты декодируются группами из двух следующих друг за другом (например, смежных по частоте) коэффициентов а и b, которые собираются в иак называемые двойки (а, b) (также обозначенные как {а, b}). Необходимо отметить, что квантованные спектральные коэффициенты иногда обозначаются как "qdec".
Декодированные коэффициенты "x_ac_dec[]" затем сохраняются для режима частотной области (например, декодированные коэффициенты для усовершенствованного аудио кодирования, например, полученные с помощью модифицированного дискретного косинус преобразования, как описано в ISO/IEC 14496, часть 3, раздел 4) в массиве "x_ac_quant[g][win][sfb][bin]". Порядок передачи кодовых слов бесшумного кодирования таков, что, когда они декодируются в порядке поступления и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом и "g" является наиболее медленно увеличивающимся индексом. В пределах кодового слова порядок декодирования будет а, b.
Декодированные коэффициенты "x_ac_dec[]" хранятся для преобразования кодированного возбуждения (ТСХ), например, непосредственно в массиве x_tcx_invquant[win][bin], а порядок передачи кодовых слов бесшумного кодирования такой, что, когда они декодируются в порядке поступления и хранениея в массиве, "bin" является наиболее быстро увеличивающимся индексом и "win" является наиболее медленно увеличивающимся индексом. В пределах кодового слова порядок декодирования будет а, b. Другими словами, если спектральные значения описывают преобразование кодированного возбуждения фильтра линейного предсказания кодера речи, спектральные значения a, b связаны со смежными и увеличивающимися частотами преобразования кодированного возбуждения. Спектральные коэффициенты, соответствующие более низкой частоте, кодируются перед спектральными коэффициентами, соответствующими более высокой частоте.
Примечательно, что аудио декодер 200 может быть настроен на применение декодированного аудио представления в частотной области 232, которое обеспечивается арифметическим декодером 230, как для "прямой" генерации представления аудио сигнала во временной области с помощью преобразования сигнала из частотной области во временную область, так и для "косвенного" предоставления представления аудио сигнала во временной области, используя как декодер из частотной области во временную область, так и фильтр линейного предсказания, возбуждаемый выходом трансформера сигнала из частотной области во временную область.
Другими словами, арифметический декодер, функции которого обсуждаются здесь подробно, хорошо подходит для декодирования спектральных значений представления аудио содержания во временной и частотной области, кодированного в частотной области, и для обеспечения представления стимула сигнала во временной и частотной области для фильтра линейного предсказания, адаптированного для декодирования (или синтеза) речевого сигнала, кодированного в области линейного предсказания. Таким образом, арифметический декодер хорошо подходит для использования в аудио декодере, способном работать как с аудио содержанием, кодированным в частотной области, так и с аудио содержанием, кодированным в линейно предсказанной частотной области (режим преобразования кодированного возбуждения области линейного предсказания).
11.3 Инициализация контекста в соответствии с фиг. 5A и 5B
Далее будет описана инициализация контекста (также обозначается как "отображение контекста"), которая выполняется в шаге 310.
Инициализация контекста включает сопоставление между прошлым контекстом и текущим контекстом в соответствии с алгоритмом "arith_map_context()", первый пример показан на фиг. 5A, второй пример показан на фиг. 5B.
Как видно, текущий контекст хранится в глобальной переменной q[2] [n_context], которая принимает форму массива, имеющего первое измерение 2 и второе измерение "n_context". Прошлый контекст при необходимости (но это не обязательно) может храниться в переменной "qs[n_context]", которая принимает форму таблицы, имеющей измерение "n_context" (если она используется).
Согласно примеру алгоритма "arith_map_context" на фиг. 5A, входная переменная N описывает длину текущего окна, а входная переменная "arith_reset_flag" указывает, необходим ли сброс контекста. Кроме этого, глобальная переменная "previous_N" описывает длину предыдущего окна. Необходимо отметить, что обычно число спектральных значений, соответствующих окну, по меньшей мере приблизительно равняется половине длины указанного окна в плане образцов временной области. Кроме этого, необходимо отметить, что число двоек спектральных значений, соответственно, по меньшей мере приблизительно равняется половине длины указанного окна в плане образцов временной области.
Согласно примеру на фиг. 5A, отображение контекста может выполняться в соответствии с алгоритмом "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[l][k] массива текущего контекста q. Необходимо отметить, что функция "arith map context()" согласно фиг. 5A устанавливает записи q[0][i] массива текущего контекста q в значения q[l][k] массива текущего контекста q, если количество спектральных значений, соответствующих текущему (например, кодированному в частотной области) аудио фрейму, равняется количеству спектральных значений, соответствующих предыдущему аудио фрейму для j=k=0 до j=k=N/4-1.
Более сложное отображение выполняется, если количество спектральных значений, соответствующих текущему аудио фрейму, отличается от количества спектральных значений, соответствующих предыдущему аудио фрейму. Однако подробности, касающиеся отображения в данном случае, не особенно важны для ключевой идеи настоящего изобретения, так что за более подробной информацией можно обратиться к ссылке на псевдо программный код на фиг. 5A.
Кроме этого, инициализация значения для числового значения с текущего контекста возвращается с помощью функции "arith_map_context()". Это значение инициализации может быть равным, например, значению записи q[0][0], сдвинутому влево на 12 битов. Таким образом, числовое значение с (текущего) контекста оказывается инициализированным для повторного обновления.
Кроме этого, на фиг. 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
Далее будет более подробно описано вычисление значения состояния 312а.
Первый образец алгоритма будет описан со ссылкой на фиг. 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.
Кроме этого, если индекс i кортежа из 2-х элементов меньше чем N/4-1, т.е он не принимает максимальное значение, числовое значение текущего контекста модифицируется таким образом, что значение записи q[0][i+1] добавляется к битам с 12 по 15 (т.е. к битам, имеющим числовой вес 212, 213, 214 и 215) значения контекста, которое сдвигалось, что выполняется на шаге 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.
Следовательно на шаге 504 с выполняется булева операция AND, при которой значение переменной с объединяется посредством операции AND с шестнадцатеричным значением 0×FFF0 для того, чтобы получить значение переменной с. При выполнении операции AND четыре наименее значимых бита переменной с устанавливаются в 0.
На шаге 504d значение записи q[0][i+1] добавляется к значению переменной с, которая получена на шаге 504с, для того, чтобы обновить значение переменной с. Однако, указанное обновление переменной с на шаге 504d выполняется только в том случае, если индекс частоты i декодируемого кортежа из 2-х значений больше нуля. Необходимо отметить, что запись q[l][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[1][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(с,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(c)" вызывается с различными аргументами при различных повторах алгоритма 312b. Например, при первом повторе алгоритма 312b функция "arith_get_pk(c)" вызывается с аргументом, равным числовому значению текущего контекста с, который получен при предыдущем выполнении функции "arith_get_context(c,i,N)" на шаге 312а. Наоборот, при дальнейших повторах субалгоритма 312а, вызывается функция "arith_get_pk(c)" с аргументом, который представляет собой сумму числового значения текущего контекста с, полученного функцией "arith_get_context(c,i,N)" на шаге 312а, и версии значения переменной "esc_b" со сдвинутыми битами, при этом значение переменной "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_lookup_m[]", определяются с помощью значимых значений состояния, которые описаны с помощью записей таблицы "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=0, с каждым повтором субалгоритма 508ba. Массив "i_diff[]" определяет заданные значения увеличения, при этом значения увеличения уменьшаются при увеличении индекса таблицы к, т.е. с увеличением числа повторов.
На втором шаге субалгоритма 508ba значение записи таблицы "ari_hash_m[]" копируется в переменную j. Предпочтительно, если наибольшие биты записей таблицы "ari_hash_m[]" описывают значения значимого состояния числового значения контекста, и наименьшие биты (от 0 до 7) записей таблицы "ari_hash_m[]" описывают значения индекса правила отображения, соответствующие необходимым значимым значениям состояния.
На третьем шаге субалгоритма 508ba значение переменной s сравнивается со значением переменной j, и переменная "i_min" выборочно устанавливается как значение
если значение переменной 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<s>>j"), или контекста, описанное с помощью входной переменной с, равно значению контекста, описанному с помощью записи таблицы "ari_hash_m[i_min]" (третий случай).
В первом случае, ("s>j"), запись "ari_lookup_m[i_min+l]" таблицы "ari_lookup_m[]", обозначенная с помощью значения индекса таблицы "i_min+l" возвращается в качестве выходного значения функции "arith_get_pk()M. Во втором случае (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) выбранной сводной таблицы частот. Кроме того, функция "arith_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".
Указатель p инициализируется в значение, которое меньше на 1, чем начальный адрес выбранной сводной таблицы частот.
Алгоритм "arith_decode ()" также включает итеративный поиск сводной таблицы частот 570с. Итеративный поиск сводной таблицы частот повторяется, пока переменная cfl меньше или равна 1. При итеративном поиске сводной таблицы частот 570с указатель переменной q устанавливается в значение, равное сумме текущего значения указателя переменной p и половине значения переменной "cfl". Если значение записи *q выбранной сводной таблицы частот, запись которой адресована указателем переменной q, больше, чем значение переменной "cum", указатель переменной p устанавливается в значение указателя переменной q, и переменная "cfl" увеличивается. Наконец, переменная "cfl" смещается вправо на один бит, тем самым фактически разделяя значение переменной "cfl" на 2 и пренебрегая частью модуля.
Таким образом, итеративный поиск сводной таблицы частот 570с фактически сравнивает значение переменной "cum" и множество записей выбранной сводной таблицы частот, чтобы определить интервал выбранной сводной таблицы частот, который ограничен записями сводной таблицы частот, так что значение cum находится в пределах выявленного интервала. Соответственно, записи выбранной сводной таблицы частот определяют интервалы, в которых соответствующие значения символа связанны с каждым из интервалов выбранной сводной таблицы частот. Кроме того, размер ширины интервалов между двумя смежными значениями сводной таблицы частот определяет вероятности символов, соответствующих указанным интервалам, так что выбранная сводная таблица частот в целом определяет вероятность распределения разных символов (или значений символов). Подробнее доступные сводные таблицы частот будут рассмотрены ниже, см. фиг. 23.
Возвращаясь к фиг. 5G, значение символа получено из значения переменной указателя р, при этом значение символа извлекается, как показано на фиг. 570d. Таким образом, разница между значением переменной указателя p и начальным адресом "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" K. 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" K. 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. Декодирование менее значимой битовой плоскости в соответствии с фиг. 5I
Как показано на фиг. 5J, значения переменных а и b извлекаются из значения m. Например, числовое представления значения m сдвигается вправо на 2 бита бля того, чтобы получить числовое представление переменной b. Кроме этого, значение переменной а получается посредством вычитания версии значения переменной b, смещенной влево на 2 бита, из значения переменной m.
Арифметическое декодирование значений r менее значимой битовой плоскости повторяются, при этом количество повторений определяется значением переменной "lev". Значение наименее значимой битовой плоскости r определяется при помощи функции "arith_decode", при этом используется сводная таблица частот, адаптированная к декодированию наименее значимой битовой плоскости (сводная таблица частот "arith_cf_r"). Наименее значимый бит (имеющий числовой вес 1) переменной r описывает наименее значимую битовую плоскость r спектрального значения, представленного переменной а, и бит переменной r, имеющий числовой вес 2, описывает наименее значимый бит спектрального значения, представленного переменной b. Соответственно, переменная а обновляется посредством сдвига переменной а влево на 1 бит и прибавлением бита, имеющего числовой вес 1, переменной r в качестве наименее значимого бита. Подобным образом, переменная b обновляется посредством сдвига переменной b влево на 1 бит и прибавлением бита, имеющего числовой вес 2, переменной r.
Соответственно, два наиболее значимых бита переменных а, 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 массива "x_ac_dec[]" приравнивается к а, и запись, имеющая индекс 2*i+1 массива "x_ac_dec[]" приравнивается к b после декодирования менее значимого бита 312d. Другими словами, в момент после декодирования менее значимого бита 312d, беззнаковое значение кортежа из двух элементов (а,b) полностью декодируется. Оно сохраняется в элементе (например, в массиве "x_ac_dec[]"), который содержит спектральные коэффициенты в соответствии с алгоритмом, показанным на фиг. 5K.
Следовательно, контекст "q" также обновляется для следующего кортежа из 2-х элементов. Необходимо отметить, что обновление контекста также должно быть выполнено для последнего кортежа. Обновление контекста выполняется при помощи функции "arith_update_context() ", код псевдо программы которой представлен на фиг. 5L.
Как показано на фиг. 5L, функция "arith_update_context(i,a,b) "получает в качестве входных переменных декодированные беззнаковые квантованные спектральные коэффициенты (или спектральные значения) a, b кортежа из 2-х элементов. Дополнительно функция "arith_update_context()" также принимает в качестве входной переменной для декодирования индекс i (например, частотный индекс) квантованного спектрального коэффициента. Другими словами, входная переменная i может, например, быть индексом кортежа спектральных значений, абсолютные значения которых определяются входными переменными а, b. Как можно увидеть, запись "q[l][i]" массива "q[][]" может быть настроена как значение, равное а+b+1. Дополнительно значение записи "q[l][i]" массива "q[][]" может быть ограничено до шестнадцатеричное значение "0×F". Таким образом, запись "q[l][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()" также получает в качестве входного значения вектор "x_ac_dec" декодированных спектральных значений или по меньшей мере ссылку на вектор декодированных спектральных значений.
Функция "arith_finish()" настроена устанавливать записи массива (или вектор) "x_ac_dec", для которых не декодировались спектральные значения из-за присутствия арифметического условия остановки, в нулевое значение. Кроме этого, функция "arith_finish()" настроена приравнивать значения поддиапазона контекста "q[l][i]", которые соответствуют спектральным значениям, для которых не декодировались значения из-за присутствия арифметического условия остановки, к заданному значению 1. Заданное значение 1 соответствует кортежу спектральных значений, в котором оба спектральных значения равны 0.
Соответственно, функция "arith_finish()" позволяет обновлять весь массив (или вектор) "x_ac_dec" спектральных значений, а также весь массив значений поддиапазона контекста "q[l][i]", даже если присутствует арифметическое условие остановки.
11.10.2 Обновление контекста в соответствии с фиг. 5O и 5P
Далее будет рассмотрен следующий вариант обновления контекста со ссылкой на фиг. 5O и 5P. После того, как беззнаковое значение кортежа из 2-х значений (а,b) полностью декодировано, контекст q обновляется для следующего кортежа. Обновление также выполняется в том случае, если текущий кортеж из 2-х значений является последним. Оба обновления выполняются с помощью функции "arith_update_context()", код псевдо программы которой показан на фиг. 5O.
Следующий кортеж из 2-х значений фрейма декодируется при увеличении i на 1 с помощью вызова функции "arith_decode()". Если lg/2 кортежи из 2-х значений уже были декодированы с фреймом или встретился символ остановки "ARITH_STOP", вызывается функция "arith_finish()". Контекст сохраняется в массиве (или векторе) "qs" для следующего фрейма. Код псевдо программы функции "arith_save_context()" показан на фиг. 5P.
После того как декодированы все беззнаковые квантованные спектральные коэффициенты, добавляется знак. Для каждого неквантованного значения "qdec" считывается бит. Если значение считанного бита равно 0, квантованное значение является положительным, все остается как есть, и знаковое значение приравнивается к ранее декодированному беззнаковому значению. В противном случае декодированный коэффициент является отрицательным и из беззнакового значения забирается дополнительный двоичный код. Знаковые биты считываются от низких к высоким частотам.
11.11 Обобщение процесса декодирования
Далее кратко описывается процесс декодирования. За более подробной информацией можно обратиться к вышеизложенному описанию, а также к фиг. 3, 4, 5A, 5C, 5E, 5G, 5J, 5K, 5L и 5M. Квантованные спектральные коэффициенты "x_ac_dec" бесшумно кодируются, начиная с самого низкого частотного коэффициента и увеличиваясь до самого высокого частотного коэффициента. Они декодируются в группах по два последующих коэффициента а, b, которые собираются в так называемые кортежи (а,b).
Декодированные коэффициенты "x_ac_dec" для частотной области (т.е. для режима частотной области) хранятся в массиве "x_ac_quant[g][win][sfb][bin]". Порядок передачи кодовых слов бесшумного кодирования таков, что, когда они декодируются в порядке получения и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом, a "g" самым медленно увеличивающимся индексом. В пределах кодового слова декодирование осуществляется в порядке а, затем b. Декодированные коэффициенты "x_ac_dec" для "ТСХ" (т.е. для аудио декодирования с использованием преобразования кодированного возбуждения) сохраняются (например, напрямую) в массиве "x_ac_invquant[win][bin]", и порядок передачи кодовых слов бесшумного кодирования таков, что, когда они декодируются в порядке получения и хранения в массиве, "bin" является наиболее быстро увеличивающимся индексом, а "win" самым медленно увеличивающимся индексом. В пределах кодового слова декодирование осуществляется в порядке а, затем b.
Сначала флаг "arith_reset_flag" определяет, должен ли быть сброшен контекст. Если флаг является активным, это учитывается функцией "arith_map_context".
Процесс декодирования начинается со стадии инициализации, где обновляется элемент контекста вектор "q" с помощью копирования и отображения элементов контекста предыдущего фрейма, который сохранен в "q[1][]" до "q[0][]". Элементы контекста в пределах "q" сохраняются на 4-х битах на каждый кортеж из 2-х значений. За более подробной информацией можно обратиться к фиг. 5A, где показан код псевдо программы.
Бесшумный декодер предоставляет на выходе кортежи из 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<<17" в качестве входного аргумента, где "esc_nb" представляет количество, ограниченное до 7, символов перехода, декодируемых ранее для того же кортежа из 2-х элементов.
Если значение m не является символом перехода "ARITH_ESCAPE", декодер проверяет, формирует ли последующее m символ "ARITH_STOP". Если выполняется условие "(esc_nb>0&&m=0)", обнаруживается символ "ARITH_STOP" и процесс декодирования заканчивается. Декодер переходит непосредственно к знаковому декодированию, которое будет рассмотрено далее. Условие обозначает, что остальная часть фрейма состоит из значений 0.
Если символ "ARITH_STOP" не встречается, декодируются оставшиеся битовые плоскости, если таковые существуют, для данного кортежа из 2-х элементов. Оставшиеся битовые плоскости декодируются от наиболее значимого к наименее значимому уровню при помощи вызова "arith_decode()" lev количество раз совместно со сводной таблицей частот "arith_cf_r[]". Декодированные битовые плоскости r позволяют уточнять ранее декодированное значение m в соответствии с алгоритмом кода псевдо программы, который показан на фиг. 5J. На этом этапе беззнаковое значение кортежа (а,b) является полностью декодированным. Оно сохраняется в элементе, который содержит спектральные коэффициенты в соответствии с алгоритмом, код псевдо программы которой показан на фиг. 5K.
Контекст "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 показана легенда определений, которые относятся к алгоритмам в соответствии с фиг. 5A, 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. Необходимо также отметить, что таблица "aril_ookup_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 коэффициента (т.е. четыре спектральных коэффициента, соседних по частоте, см. фиг. 14A). Контекст сокращается и отображается в сводной таблице частот, которая затем используется для декодирования следующего кортежа из 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, Т1С64хх и т.д.). Это означает, что набор таблиц, вероятно, не может сохраняться в оперативной памяти (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-х элементов. Как показано на фиг. 15A, три кортежа из 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 байт). Получается тот же порядок величин, который предъявляется для запроса памяти ААС декодера Хаффмана в НЕ-ААС (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%. Более подробно см. фиг. 16A и 16B, при этом на фиг. 16A показаны требования к 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.
Фиг. 6A показывает синтаксическое представление так называемого блока необработанных данных USAC ("usac_raw_data_block()").
Блок необработанных данных USAC состоит из одного или более одноканальных элементов ("single_channel_element ()") и/или одного или более двухканальных элементов ("channel_pair_element ()").
Что касается фиг. 6B, то здесь описывается синтаксис одноканального элемента. Одноканальный элемент состоит из потока канала линейного предсказания области ("lpd_channel_stream ()") или потока канала частотной области ("fd_channel_stream ()") в зависимости от основного режима.
Фиг. 6C представляет синтаксис двухканального элемента. Двухканальный элемент включает информацию об основном режиме ("core_mode()", "core_mode1"). Кроме того, двухканальный элемент может включать информацию о конфигурации "ics_info()". Кроме того, в зависимости от информации об основном режиме двухканальный элемент состоит из потока канала линейного предсказания области или потока канала частотной области, связанного с первым из каналов, и двухканальный элемент также включает поток канала линейного предсказания области или поток канала частотной области, связанный со вторым из каналов.
Информация о конфигурации "ics_info()", синтаксическое представление которой показано на фиг. 6D, содержит множество различных элементов информации о конфигурации, которые нерелевантны для настоящего изобретения.
Поток канала частотной области ("fd_channel_stream ()"), синтаксическое представление которого показано на фиг. 6E, включает получение информации ("global_gain") и информации о конфигурации ("ics_info ()"). Кроме того, поток канала частотной области содержит данные коэффициента масштабирования ("scale_factor_data ()"), которые описывают коэффициенты масштабироваеия, используемые для масштабирования спектральных значений разных полос коэффициентов масштабирования, и который применяется, например, блоком масштабирования 150 и рескейлером 240. Поток канала частотной области также включает арифметически кодированные спектральные данные ("ac_spectral_data ()"), которые представляют арифметически кодированные спектральные значения.
Арифметически кодированные спектральные данные ("ac_spectral_data ()"), синтаксическое представление которых показано на фиг. 6F, включают в себя дополнительный флаг арифметического сброса ("arith_reset_flag"), который используется для выборочного сброса контекста, как было описано выше. Кроме того, арифметически кодированные спектральные данные включают множество блоков арифметических данных ("arith_data"), которые содержат арифметически кодированные спектральные значения. Структура блоков арифметически кодированных данных зависит от числа частотных полос (представленных переменной "num_bands"), а также от состояния флага арифметического сброса, что будет рассматриваться далее.
Структура арифметически кодированных блоков данных будет описана со ссылкой на фиг. 6G, которая показывает синтаксическое представление указанных блоков арифметически кодированных данных. Представление данных в арифметически кодированных блоках данных зависит от числа lg кодируемых спектральных значений, статуса флага арифметического сброса, а также от контекста, то есть ранее кодированных спектральных значений.
Контекст для кодирования текущего набора (т.е. кортежа из 2-х элементов) спектральных значений определяется в соответствии с алгоритмом определения контекста, который показан номером 660. Подробности относительно алгоритма определения контекста были рассмотрены выше (фиг. 5A и 5B). Блок арифметически кодированных данных включает в себя наборы lg/2 кодовых слов, каждый набор кодовых слов представляет множество (например, кортеж-двойку) спектральных значений. Набор кодовых слов включает в себя арифметическое кодовое слово "acod_m [pki][m]", представляющее собой значение наиболее значимой битовой плоскости m кортежа спектральных значений, который использует от 1 до 20 бит.Кроме того, набор кодовых слов включает одно или более кодовых слов "acod_r[r]", если кортеж спектральных значений требует больше битовых плоскостей, чем более значимая битовая плоскость, для корректного представления. Кодовое слово "acod_r[r]n представляет собой менее значимую битовую плоскость, которая использует от 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) Инкрементное обновление контекста
Согласно аспекту некоторые варианты реализации изобретения включают эффективный с точки зрения вычислений способ обновления контекста. Некоторые варианты используют инкрементное обновление контекста, при котором числовое значение текущего контекста извлекается из числового значения предыдущего контекста,
с) Извлечение контекста
Согласно аспекту изобретения использование суммы двух спектральных абсолютных значений представляет собой объединение с усечением членов ряда. Это вид векторного квантования спектральных коэффициентов с усилением (противоположное конвенциональному векторному квантованию с разложением по схеме 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" в названии переменных, массивов, функций и т.д. взаимозаменяемы.
Claims (48)
1. Аудио декодер (200, 800) для обеспечения декодированной аудио информации (212, 812) на основе кодированной аудио информации (210, 810), включающий:
арифметический декодер (230; 820) для обеспечения множества декодированных спектральных значений (232, 822) на основе арифметически кодированного представления (222; 821) спектральных значений, содержащихся в кодированной аудио информации, и
конвертер частотной области во временную область (260, 830) для обеспечения аудио представления временной области (262; 812), используя декодированные спектральные значения (232, 822), в целях получения декодированной аудио информации (212, 812);
при этом арифметический декодер (230, 820) выполнен с возможностью выбора правила отображения, описывающего порядок отображения значения кода арифметически кодированного представления (821) спектральных значений на месте символьного кода, который представляет одно или более декодированное спектральное значение или по меньшей мере часть одного или более декодированного спектрального значения, в зависимости от состояния контекста, описанного с помощью числового значения текущего контекста;
и арифметический декодер (230, 820) выполнен с возможностью определять числовое значение текущего контекста в зависимости от множества ранее декодированных спектральных значений;
при этом арифметический декодер выполнен с возможностью получать множество значений поддиапазона контекста, которые описывают поддиапазоны контекста, на основе ранее декодированных спектральных значений и сохранять указанные значения поддиапазона контекста;
арифметический декодер выполнен с возможностью для определения числового значения текущего контекста, соответствующего одному или более декодируемому спектральному значению, в зависимости от сохраненных значений поддиапазонов контекста;
при этом арифметический декодер выполнен с возможностью вычислять норму вектора, формируемого множеством ранее декодированных спектральных значений (а, b), чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
2. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью суммировать абсолютные значения множества ранее декодированных спектральных значений, которые соответствуют смежным частотным областям частотно-временного конвертера и общей временной области аудио информации, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
3. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью на квантование нормы множества ранее декодированных спектральных значений, которые соответствуют смежным частотным областям частотно-временного конвертера и общей временной области аудио информации, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
4. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью суммировать абсолютные значения множества ранее декодированных спектральных значений (а, b), которые кодированы при помощи общего значения кода, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
5. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью обеспечивать знаковые декодированные спектральные значения для частотно-временного конвертера, а также суммировать абсолютные значения, соответствующие знаковым декодированным спектральным значениям, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений.
6. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью извлекать предельное значение суммы из суммы абсолютных значений ранее декодированных спектральных значений таким образом, что диапазон возможных значений, представленных предельным значением суммы, меньше, чем диапазон возможных значений суммы.
7. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью получать числовое значение текущего контекста в зависимости от множества значений поддиапазона контекста, которые соответствуют различным наборам ранее декодированных спектральных значений.
8. Аудио декодер по п. 7, в котором арифметический декодер выполнен с возможностью получать числовое представление числового значения текущего контекста так, что первая часть числового представления числового значения текущего контекста определяется первым значением суммы или предельным значением суммы абсолютных значений множества ранее декодированных спектральных значений, а также таким образом, что вторая часть числового представления числового значения текущего контекста определяется вторым значением суммы или предельным значением суммы абсолютных значений множества ранее декодированных спектральных значений.
9. Аудио декодер по п. 7, в котором арифметический декодер выполнен с возможностью получать числовое значение текущего контекста так, что первое значение суммы или предельное значение суммы абсолютных значений множества ранее декодированных спектральных значений и второе значение суммы или предельное значение суммы абсолютных значений множества ранее декодированных спектральных значений имеют различный вес в числовом значении текущего контекста.
10. Аудио декодер по п. 7, в котором арифметический декодер выполнен с возможностью модифицировать числовое представление числового значения предыдущего контекста, которое описывает состояние контекста, соответствующее одному или более ранее декодированному спектральному значению, в зависимости от значения суммы или предельного значения суммы абсолютных значений множества ранее декодированных спектральных значений для того, чтобы получить числовое представление числового значения текущего контекста, которое описывает состояние контекста, соответствующее одному или более декодируемому спектральному значению.
11. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью контролировать, меньше или равна сумма множества значений поддиапазона контекста заданному пороговому значению суммы, а также выборочно модифицировать числовое значение текущего контекста (с) в зависимости от результата проверки.
12. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью учитывать множество значений поддиапазона контекста, определяемых при помощи ранее декодированных спектральных значений, соответствующих предыдущей временной части аудио содержания, а также учитывать по меньшей мере одно значение поддиапазона контекста, определяемое при помощи ранее декодированных спектральных значений, соответствующих текущей временной части аудио содержания, для того, чтобы получить числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению, а также соответствующее текущей временной части аудио содержания, таким образом, что окружение смежных по времени ранее декодированных спектральных значений и смежных по частоте ранее декодированных спектральных значений текущей временной части учитывается для получения числового значения текущего контекста.
13. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью сохранять набор значений поддиапазона контекста, каждое из которых является значением суммы или предельным значением суммы абсолютных значений множества ранее декодированных спектральных значений для заданной временной части аудио информации, а также использовать значения поддиапазона контекста для извлечения числового значения текущего контекста для декодирования одного или более спектрального значения временной части аудио информации, следующей за заданной временной частью аудио информации, оставляя отдельные ранее декодированные спектральные значения для заданной временной части аудио информации неучтенными при извлечении числового значения текущего контекста.
14. Аудио декодер по п. 1, в котором арифметический декодер выполнен с возможностью раздельно декодировать значение величины и знак спектрального значения, и
при этом арифметический декодер выполнен с возможностью оставлять знаки ранее декодированных спектральных значений неучтенными при определении числового состояния текущего контекста для декодирования декодируемого спектрального значения.
15. Аудио кодер (100, 700) для обеспечения кодированной аудио информации (112, 712) на основе входной аудио информации (110, 710), аудио кодер, включающий:
энергосберегающий конвертер временной области в частотную область (130, 720) для обеспечения аудио представления частотной области (132, 722) на основе представления временной области (110, 710) входной аудио информации, так, что аудио представление частотной области (132, 722) включает набор спектральных значений, и
арифметический кодер (170; 730) выполнен с возможностью кодировать спектральное значение (а) или его ранее обработанную версию, используя кодовое слово переменной длины, при этом арифметический кодер выполнен с возможностью отображать одно или более спектральное значение (а, b) или значение (m) наиболее значимой битовой плоскости одного или более спектральных значений (а, b) на значение кода,
при этом кодированная аудио информация включает множество кодовых слов переменной длины;
при этом арифметический кодер выполнен с возможностью выбирать правило отображения, описывающее отображение одного или более спектрального значения или наиболее значимой битовой плоскости одного или более спектрального значения на значение кода, в зависимости от состояния контекста, которое описано с помощью числового значения текущего контекста; и
при этом арифметический кодер выполнен с возможностью определять числовое значение текущего контекста в зависимости от множества ранее кодированных спектральных значений;
при этом арифметический кодер выполнен с возможностью получать множество значений поддиапазона контекста, которое описывает поддиапазоны контекста, на основе ранее кодированных спектральных значений, сохранять указанные значения поддиапазона контекста, а также извлекать числовое значение текущего контекста, соответствующее одному или более кодируемому спектральному значению, в зависимости от сохраненных значений поддиапазона контекста,
при этом арифметический кодер выполнен с возможностью вычислять норму вектора, формируемого множеством ранее кодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее кодированных спектральных значений.
16. Способ предоставления декодированной аудио информации на основе кодированной аудио информации, включающий:
предоставление множества декодированных спектральных значений на основе арифметически кодированного представления спектральных значений, которое содержится в кодированной аудио информации; и
обеспечение аудио представления временной области, используя декодированные спектральные значения, чтобы получить декодированную аудио информацию;
при этом предоставление множества декодированных спектральных значений включает выбор правила отображения, описывающего отображение значения кода арифметически кодированного представления (821) спектральных значений, на символьный код, который представляет одно или более декодированное спектральное значение или наиболее значимую битовую плоскость одного или более декодированного спектрального значения, в зависимости от состояния контекста, которое описано с помощью числового значения текущего контекста; и
при этом числовое значение текущего контекста определяется в зависимости от множества ранее декодированных спектральных значений;
при этом множество значений поддиапазона контекста, которые описывают поддиапазоны контекста, определяются на основе ранее декодированных и сохраненных спектральных значений;
при этом числовое значение текущего контекста, соответствующее одному или более декодируемому спектральному значению, извлекается в зависимости от сохраненных значений поддиапазона контекста; и
при этом вычисляется норма (а+b) вектора, формируемого множеством ранее декодированных спектральных значений, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее декодированных спектральных значений (а, b).
17. Способ предоставления кодированной аудио информации на основе входной аудио информации, включающий:
предоставление аудио представления частотной области на основе представления входной аудио информации во временной области, используя энергосберегающее преобразование из временной области в частотную, так, что аудио представление частотной области включает набор спектральных значений; и
арифметическое кодирование спектрального значения или его ранее обработанной версии, используя кодовое слово переменной длины, при этом одно или более спектральное значение или значение наиболее значимой битовой плоскости одного или более спектральных значений отображается на значение кода;
при этом правило отображения, описывающее отображение одного или более спектрального значения или наиболее значимой битовой плоскости одного или более спектрального значения на значение кода выбирается в зависимости от состояния контекста, которое описано с помощью числового значения текущего контекста;
при этом числовое значение текущего контекста определяется в зависимости от множества ранее кодированных смежных спектральных значений;
при этом множество значений поддиапазона контекста, которые описывают поддиапазоны контекста, определяется на основе ранее кодированных спектральных значений; при этом числовое значение текущего контекста, соответствующее одному или более кодируемому спектральному значению, извлекается в зависимости от сохраненных значений поддиапазона контекста; и
при этом вычисляется норма вектора, формируемая множеством ранее кодированных спектральных значений, для того, чтобы получить общее значение поддиапазона контекста, соответствующее множеству ранее кодированных спектральных значений;
при этом кодированная аудио информация включает множество кодовых слов переменной длины.
18. Машиночитаемый носитель информации с записанной на него компьютерной программой для осуществления способа по п. 16, когда программа запускается на компьютере.
19. Машиночитаемый носитель информации с записанной на него компьютерной программой для осуществления способа по п. 17, когда программа запускается на компьютере.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29435710P | 2010-01-12 | 2010-01-12 | |
US61/294,357 | 2010-01-12 | ||
PCT/EP2011/050275 WO2011086067A1 (en) | 2010-01-12 | 2011-01-11 | Audio encoder, audio decoder, method for encoding and decoding an audio information, and computer program obtaining a context sub-region value on the basis of a norm of previously decoded spectral values |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2012141241A RU2012141241A (ru) | 2015-03-27 |
RU2628162C2 true RU2628162C2 (ru) | 2017-08-15 |
Family
ID=43617872
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2012141243A RU2644141C2 (ru) | 2010-01-12 | 2011-01-11 | Аудио кодер, аудио декодер, способ кодирования аудио информации, способ декодирования аудио информации и компьютерная программа, использующая модификацию числового представления числового значения предыдущего контекста |
RU2012141241A RU2628162C2 (ru) | 2010-01-12 | 2011-01-11 | Аудио кодер, аудио декодер, способ кодирования и декодирования аудио информации и компьютерная программа, определяющая значение поддиапазона контекста на основе нормы ранее декодированных спектральных значений |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2012141243A RU2644141C2 (ru) | 2010-01-12 | 2011-01-11 | Аудио кодер, аудио декодер, способ кодирования аудио информации, способ декодирования аудио информации и компьютерная программа, использующая модификацию числового представления числового значения предыдущего контекста |
Country Status (20)
Country | Link |
---|---|
US (4) | US8645145B2 (ru) |
EP (3) | EP2524372B1 (ru) |
JP (3) | JP5624159B2 (ru) |
KR (3) | KR101339057B1 (ru) |
CN (3) | CN102792370B (ru) |
AR (3) | AR079886A1 (ru) |
AU (3) | AU2011206676B2 (ru) |
BR (6) | BR122021008576B1 (ru) |
CA (3) | CA2786946C (ru) |
ES (3) | ES2615891T3 (ru) |
HK (2) | HK1178306A1 (ru) |
MX (3) | MX2012008076A (ru) |
MY (3) | MY160067A (ru) |
PL (3) | PL2524372T3 (ru) |
PT (1) | PT2524371T (ru) |
RU (2) | RU2644141C2 (ru) |
SG (3) | SG182464A1 (ru) |
TW (3) | TWI466103B (ru) |
WO (3) | WO2011086067A1 (ru) |
ZA (3) | ZA201205938B (ru) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11043226B2 (en) | 2017-11-10 | 2021-06-22 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters |
US11127408B2 (en) | 2017-11-10 | 2021-09-21 | Fraunhofer—Gesellschaft zur F rderung der angewandten Forschung e.V. | Temporal noise shaping |
US11217261B2 (en) | 2017-11-10 | 2022-01-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoding and decoding audio signals |
RU2767286C2 (ru) * | 2017-11-10 | 2022-03-17 | Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. | Аудиокодеры, аудиодекодеры, способы и компьютерные программы, применяющие кодирование и декодирование младших значащих битов |
US11315580B2 (en) | 2017-11-10 | 2022-04-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio decoder supporting a set of different loss concealment tools |
US11380341B2 (en) | 2017-11-10 | 2022-07-05 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Selecting pitch lag |
US11462226B2 (en) | 2017-11-10 | 2022-10-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Controlling bandwidth in encoders and/or decoders |
US11545167B2 (en) | 2017-11-10 | 2023-01-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Signal filtering |
US11562754B2 (en) | 2017-11-10 | 2023-01-24 | Fraunhofer-Gesellschaft Zur F Rderung Der Angewandten Forschung E.V. | Analysis/synthesis windowing function for modulated lapped transformation |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4224471B1 (en) | 2008-07-11 | 2024-08-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoder and audio decoder |
MY181247A (en) * | 2008-07-11 | 2020-12-21 | Frauenhofer Ges Zur Forderung Der Angenwandten Forschung E V | Audio encoder and decoder for encoding and decoding audio samples |
EP2315358A1 (en) * | 2009-10-09 | 2011-04-27 | Thomson Licensing | Method and device for arithmetic encoding or arithmetic decoding |
MY188408A (en) | 2009-10-20 | 2021-12-08 | Fraunhofer Ges Forschung | Audio encoder,audio decoder,method for encoding an audio information,method for decoding an audio information and computer program using a region-dependent arithmetic coding mapping rule |
PL2524372T3 (pl) | 2010-01-12 | 2015-08-31 | Fraunhofer Ges Forschung | Koder audio. dekoder audio, sposób kodowania i dekodowania informacji audio i program komputerowy uzyskujący wartość podobszaru kontekstu w oparciu o normę uprzednio zdekodowanych wartości widmowych |
KR20120084639A (ko) * | 2011-01-20 | 2012-07-30 | 한국전자통신연구원 | 엔트로피 부호화를 위한 적응적 정렬 테이블 |
KR101362696B1 (ko) * | 2011-10-19 | 2014-02-17 | 전북대학교산학협력단 | 하이브리드 아키텍쳐가 적용된 신호 변환 장치, 신호 변환 방법 및 기록매체 |
US8880412B2 (en) * | 2011-12-13 | 2014-11-04 | Futurewei Technologies, Inc. | Method to select active channels in audio mixing for multi-party teleconferencing |
CN106409299B (zh) * | 2012-03-29 | 2019-11-05 | 华为技术有限公司 | 信号编码和解码的方法和设备 |
TWI508569B (zh) * | 2012-09-14 | 2015-11-11 | Realtek Semiconductor Corp | 行動高畫質連結資料轉換器以及行動高畫質連結資料轉換方法 |
JP6248186B2 (ja) | 2013-05-24 | 2017-12-13 | ドルビー・インターナショナル・アーベー | オーディオ・エンコードおよびデコード方法、対応するコンピュータ可読媒体ならびに対応するオーディオ・エンコーダおよびデコーダ |
CN110211603B (zh) * | 2013-06-21 | 2023-11-03 | 弗劳恩霍夫应用研究促进协会 | 使用质量控制的时间缩放器、音频解码器、方法和数字存储介质 |
ES2642352T3 (es) | 2013-06-21 | 2017-11-16 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Control de búfer de fluctuación, decodificador de audio, método y programa informático |
US20150113027A1 (en) * | 2013-10-22 | 2015-04-23 | National Tsing Hua University | Method for determining a logarithmic functional unit |
JP2015206874A (ja) * | 2014-04-18 | 2015-11-19 | 富士通株式会社 | 信号処理装置、信号処理方法、及び、プログラム |
US9640376B1 (en) | 2014-06-16 | 2017-05-02 | Protein Metrics Inc. | Interactive analysis of mass spectrometry data |
US10455247B2 (en) | 2014-06-29 | 2019-10-22 | Lg Electronics Inc. | Method and apparatus for performing arithmetic coding on basis of concatenated ROM-RAM table |
EP2996269A1 (en) * | 2014-09-09 | 2016-03-16 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio splicing concept |
US9385751B2 (en) | 2014-10-07 | 2016-07-05 | Protein Metrics Inc. | Enhanced data compression for sparse multidimensional ordered series data |
US10062762B2 (en) * | 2014-12-23 | 2018-08-28 | Stmicroelectronics, Inc. | Semiconductor devices having low contact resistance and low current leakage |
US10354421B2 (en) | 2015-03-10 | 2019-07-16 | Protein Metrics Inc. | Apparatuses and methods for annotated peptide mapping |
CN104872268B (zh) * | 2015-06-02 | 2018-06-12 | 应关雄 | 一种低温除氧剂 |
CA3228657A1 (en) | 2015-10-08 | 2017-04-13 | Dolby International Ab | Layered coding and data structure for compressed higher-order ambisonics sound or sound field representations |
MD3678134T2 (ro) | 2015-10-08 | 2022-01-31 | Dolby Int Ab | Codificare ierarhică pentru reprezentări comprimate de sunet sau câmpuri acustice |
US20170231320A1 (en) * | 2016-02-16 | 2017-08-17 | Djo Consumer, Llc | Fitting system and method for customizable footwear |
CN109328382B (zh) * | 2016-06-22 | 2023-06-16 | 杜比国际公司 | 用于将数字音频信号从第一频域变换到第二频域的音频解码器及方法 |
US20180089309A1 (en) * | 2016-09-28 | 2018-03-29 | Linkedln Corporation | Term set expansion using textual segments |
US10319573B2 (en) | 2017-01-26 | 2019-06-11 | Protein Metrics Inc. | Methods and apparatuses for determining the intact mass of large molecules from mass spectrographic data |
US10797723B2 (en) | 2017-03-14 | 2020-10-06 | International Business Machines Corporation | Building a context model ensemble in a context mixing compressor |
US10361712B2 (en) * | 2017-03-14 | 2019-07-23 | International Business Machines Corporation | Non-binary context mixing compressor/decompressor |
US10546736B2 (en) | 2017-08-01 | 2020-01-28 | Protein Metrics Inc. | Interactive analysis of mass spectrometry data including peak selection and dynamic labeling |
US11626274B2 (en) | 2017-08-01 | 2023-04-11 | Protein Metrics, Llc | Interactive analysis of mass spectrometry data including peak selection and dynamic labeling |
US10510521B2 (en) | 2017-09-29 | 2019-12-17 | Protein Metrics Inc. | Interactive analysis of mass spectrometry data |
CN111386566A (zh) * | 2017-12-15 | 2020-07-07 | 海尔优家智能科技(北京)有限公司 | 设备控制方法、云端设备、智能设备、计算机介质及设备 |
US11044495B1 (en) | 2018-02-13 | 2021-06-22 | Cyborg Inc. | Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation |
US10929607B2 (en) * | 2018-02-22 | 2021-02-23 | Salesforce.Com, Inc. | Dialogue state tracking using a global-local encoder |
US10915341B2 (en) * | 2018-03-28 | 2021-02-09 | Bank Of America Corporation | Computer architecture for processing correlithm objects using a selective context input |
KR20200000649A (ko) * | 2018-06-25 | 2020-01-03 | 네이버 주식회사 | 오디오 병렬 트랜스코딩을 위한 방법 및 시스템 |
KR102721249B1 (ko) | 2018-07-06 | 2024-10-24 | 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. | 산술 인코더, 산술 디코더, 비디오 인코더, 비디오 디코더, 인코딩 방법, 디코딩 방법 및 컴퓨터 프로그램 |
CN110535497B (zh) * | 2018-08-10 | 2022-07-19 | 中兴通讯股份有限公司 | Csi发送、接收方法及其装置、通信节点及存储介质 |
US11640901B2 (en) | 2018-09-05 | 2023-05-02 | Protein Metrics, Llc | Methods and apparatuses for deconvolution of mass spectrometry data |
US11275568B2 (en) | 2019-01-14 | 2022-03-15 | Microsoft Technology Licensing, Llc | Generating a synchronous digital circuit from a source code construct defining a function call |
US11106437B2 (en) * | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US11144286B2 (en) | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
US11093682B2 (en) | 2019-01-14 | 2021-08-17 | Microsoft Technology Licensing, Llc | Language and compiler that generate synchronous digital circuits that maintain thread execution order |
US11113176B2 (en) | 2019-01-14 | 2021-09-07 | Microsoft Technology Licensing, Llc | Generating a debugging network for a synchronous digital circuit during compilation of program source code |
US10491240B1 (en) * | 2019-01-17 | 2019-11-26 | Cyborg Inc. | Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation |
US11346844B2 (en) | 2019-04-26 | 2022-05-31 | Protein Metrics Inc. | Intact mass reconstruction from peptide level data and facilitated comparison with experimental intact observation |
CN111862953B (zh) * | 2019-12-05 | 2023-08-22 | 北京嘀嘀无限科技发展有限公司 | 语音识别模型的训练方法、语音识别方法及装置 |
EP4204948A4 (en) | 2020-08-31 | 2024-10-02 | Protein Metrics Llc | DATA COMPRESSION FOR MULTI-DIMENSIONAL TIME SERIES DATA |
JP2023546851A (ja) * | 2020-10-13 | 2023-11-08 | フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ. | 複数の音声オブジェクトをエンコードする装置および方法、または2つ以上の関連する音声オブジェクトを使用してデコードする装置および方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1111589A1 (en) * | 1999-12-21 | 2001-06-27 | Texas Instruments Incorporated | Wideband speech coding with parametric coding of high frequency component |
US20020007272A1 (en) * | 2000-05-10 | 2002-01-17 | Nec Corporation | Speech coder and speech decoder |
RU2187196C2 (ru) * | 1996-04-19 | 2002-08-10 | Дженерал Электрик Компани | Параллельный каскадный сверточный код с конечной последовательностью битов и декодер для такого кода |
RU2222110C2 (ru) * | 1993-09-24 | 2004-01-20 | Квэлкомм Инкорпорейтед | Многоскоростной последовательный декодер витерби для использования в системе многостанционного доступа с кодовым разделением |
RU2007140383A (ru) * | 2005-04-01 | 2009-05-10 | Квэлкомм Инкорпорейтед (US) | Способы и устройство кодирования и декодирования части речевого сигнала диапазона высоких частот |
Family Cites Families (129)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222189A (en) | 1989-01-27 | 1993-06-22 | Dolby Laboratories Licensing Corporation | Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio |
US5388181A (en) | 1990-05-29 | 1995-02-07 | Anderson; David J. | Digital audio compression system |
US5821885A (en) | 1994-07-29 | 1998-10-13 | Discovision Associates | Video decompression |
US5659659A (en) | 1993-07-26 | 1997-08-19 | Alaris, Inc. | Speech compressor using trellis encoding and linear prediction |
KR19990082402A (ko) | 1996-02-08 | 1999-11-25 | 모리시타 요이찌 | 광대역 오디오신호 부호장치, 광대역 오디오신호 복호장치, 광대역 오디오신호 부호 복호장치 및 광대역 오디오신호 기록매체 |
JP3305190B2 (ja) | 1996-03-11 | 2002-07-22 | 富士通株式会社 | データ圧縮装置及びデータ復元装置 |
US6269338B1 (en) | 1996-10-10 | 2001-07-31 | U.S. Philips Corporation | Data compression and expansion of an audio signal |
JP3367370B2 (ja) * | 1997-03-14 | 2003-01-14 | 三菱電機株式会社 | 適応符号化方法 |
DE19730130C2 (de) | 1997-07-14 | 2002-02-28 | Fraunhofer Ges Forschung | Verfahren zum Codieren eines Audiosignals |
KR100335609B1 (ko) | 1997-11-20 | 2002-10-04 | 삼성전자 주식회사 | 비트율조절이가능한오디오부호화/복호화방법및장치 |
KR100335611B1 (ko) | 1997-11-20 | 2002-10-09 | 삼성전자 주식회사 | 비트율 조절이 가능한 스테레오 오디오 부호화/복호화 방법 및 장치 |
US6029126A (en) | 1998-06-30 | 2000-02-22 | Microsoft Corporation | Scalable audio coder and decoder |
US6704705B1 (en) | 1998-09-04 | 2004-03-09 | Nortel Networks Limited | Perceptual audio coding |
DE19840835C2 (de) * | 1998-09-07 | 2003-01-09 | Fraunhofer Ges Forschung | Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern |
US7334129B1 (en) | 1999-01-13 | 2008-02-19 | Koninklijke Philips Electronics N.V. | Embedding supplemental data in an encoded signal |
US6978236B1 (en) * | 1999-10-01 | 2005-12-20 | Coding Technologies Ab | Efficient spectral envelope coding using variable time/frequency resolution and time/frequency switching |
US20020016161A1 (en) | 2000-02-10 | 2002-02-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for compression of speech encoded parameters |
US6677869B2 (en) * | 2001-02-22 | 2004-01-13 | Panasonic Communications Co., Ltd. | Arithmetic coding apparatus and image processing apparatus |
US6538583B1 (en) | 2001-03-16 | 2003-03-25 | Analog Devices, Inc. | Method and apparatus for context modeling |
JP2004521394A (ja) * | 2001-06-28 | 2004-07-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 広帯域信号伝送システム |
US20030093451A1 (en) | 2001-09-21 | 2003-05-15 | International Business Machines Corporation | Reversible arithmetic coding for quantum data compression |
JP2003255999A (ja) * | 2002-03-06 | 2003-09-10 | Toshiba Corp | 符号化デジタルオーディオ信号の変速再生装置 |
JP4090862B2 (ja) | 2002-04-26 | 2008-05-28 | 松下電器産業株式会社 | 可変長符号化方法および可変長復号化方法 |
US7242713B2 (en) * | 2002-05-02 | 2007-07-10 | Microsoft Corporation | 2-D transforms for image and video coding |
KR100729270B1 (ko) | 2002-05-02 | 2007-06-15 | 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. | 이미지 및/또는 비디오 인코더 및 디코더에서의변환계수를 인코딩하는 방법 및 장치, 및 이에 대응하는컴퓨터 프로그램 및 컴퓨터로 읽을 수 있는 저장매체 |
GB2388502A (en) | 2002-05-10 | 2003-11-12 | Chris Dunn | Compression of frequency domain audio signals |
US7447631B2 (en) | 2002-06-17 | 2008-11-04 | Dolby Laboratories Licensing Corporation | Audio coding system using spectral hole filling |
US7555434B2 (en) | 2002-07-19 | 2009-06-30 | Nec Corporation | Audio decoding device, decoding method, and program |
DE10236694A1 (de) * | 2002-08-09 | 2004-02-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren |
US7299190B2 (en) * | 2002-09-04 | 2007-11-20 | Microsoft Corporation | Quantization and inverse quantization for audio |
US7328150B2 (en) | 2002-09-04 | 2008-02-05 | Microsoft Corporation | Innovations in pure lossless audio compression |
EP2282310B1 (en) | 2002-09-04 | 2012-01-25 | Microsoft Corporation | Entropy coding by adapting coding between level and run-length/level modes |
WO2004028142A2 (en) | 2002-09-17 | 2004-04-01 | Vladimir Ceperkovic | Fast codec with high compression ratio and minimum required resources |
FR2846179B1 (fr) | 2002-10-21 | 2005-02-04 | Medialive | Embrouillage adaptatif et progressif de flux audio |
US6646578B1 (en) | 2002-11-22 | 2003-11-11 | Ub Video Inc. | Context adaptive variable length decoding system and method |
WO2004082288A1 (en) | 2003-03-11 | 2004-09-23 | Nokia Corporation | Switching between coding schemes |
US6900748B2 (en) | 2003-07-17 | 2005-05-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Method and apparatus for binarization and arithmetic coding of a data value |
US7562145B2 (en) | 2003-08-28 | 2009-07-14 | International Business Machines Corporation | Application instance level workload distribution affinities |
JP2005130099A (ja) * | 2003-10-22 | 2005-05-19 | Matsushita Electric Ind Co Ltd | 算術復号装置、算術符号化装置、算術符号化・復号装置、携帯端末装置、動画像撮影装置、及び、動画像記録・再生装置 |
JP2005184232A (ja) * | 2003-12-17 | 2005-07-07 | Sony Corp | 符号化装置、プログラム、およびデータ処理方法 |
JP4241417B2 (ja) * | 2004-02-04 | 2009-03-18 | 日本ビクター株式会社 | 算術復号化装置、および算術復号化プログラム |
DE102004007200B3 (de) * | 2004-02-13 | 2005-08-11 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audiocodierung |
CA2457988A1 (en) | 2004-02-18 | 2005-08-18 | Voiceage Corporation | Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization |
US7516064B2 (en) | 2004-02-19 | 2009-04-07 | Dolby Laboratories Licensing Corporation | Adaptive hybrid transform for signal analysis and synthesis |
KR20050087956A (ko) * | 2004-02-27 | 2005-09-01 | 삼성전자주식회사 | 무손실 오디오 부호화/복호화 방법 및 장치 |
EP1721312B1 (en) * | 2004-03-01 | 2008-03-26 | Dolby Laboratories Licensing Corporation | Multichannel audio coding |
US20090299756A1 (en) * | 2004-03-01 | 2009-12-03 | Dolby Laboratories Licensing Corporation | Ratio of speech to non-speech audio such as for elderly or hearing-impaired listeners |
KR100561869B1 (ko) | 2004-03-10 | 2006-03-17 | 삼성전자주식회사 | 무손실 오디오 부호화/복호화 방법 및 장치 |
US7577844B2 (en) | 2004-03-17 | 2009-08-18 | Microsoft Corporation | Systems and methods for encoding randomly distributed features in an object |
CN100584023C (zh) | 2004-07-14 | 2010-01-20 | 新加坡科技研究局 | 用于基于上下文的信号编码和解码的方法和设备 |
KR100624432B1 (ko) | 2004-08-05 | 2006-09-19 | 삼성전자주식회사 | 내용 기반 적응적 이진 산술 복호화 방법 및 장치 |
US20060047704A1 (en) | 2004-08-31 | 2006-03-02 | Kumar Chitra Gopalakrishnan | Method and system for providing information services relevant to visual imagery |
JP4977471B2 (ja) | 2004-11-05 | 2012-07-18 | パナソニック株式会社 | 符号化装置及び符号化方法 |
US7903824B2 (en) | 2005-01-10 | 2011-03-08 | Agere Systems Inc. | Compact side information for parametric coding of spatial audio |
KR100829558B1 (ko) | 2005-01-12 | 2008-05-14 | 삼성전자주식회사 | 스케일러블 오디오 데이터 산술 복호화 방법 및 장치와스케일러블 오디오 비트스트림 절단 방법 |
EP1836858A1 (en) | 2005-01-14 | 2007-09-26 | Sungkyunkwan University | Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding |
KR100694098B1 (ko) | 2005-04-04 | 2007-03-12 | 한국과학기술원 | 산술 복호 방법 및 그 장치 |
US7991610B2 (en) * | 2005-04-13 | 2011-08-02 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Adaptive grouping of parameters for enhanced coding efficiency |
KR100703773B1 (ko) | 2005-04-13 | 2007-04-06 | 삼성전자주식회사 | 향상된 코딩 효율을 갖는 엔트로피 코딩 및 디코딩 방법과이를 위한 장치, 이를 포함하는 비디오 코딩 및 디코딩방법과 이를 위한 장치 |
US7196641B2 (en) * | 2005-04-26 | 2007-03-27 | Gen Dow Huang | System and method for audio data compression and decompression using discrete wavelet transform (DWT) |
US7546240B2 (en) * | 2005-07-15 | 2009-06-09 | Microsoft Corporation | Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition |
US7539612B2 (en) * | 2005-07-15 | 2009-05-26 | Microsoft Corporation | Coding and decoding scale factor information |
US20070036228A1 (en) | 2005-08-12 | 2007-02-15 | Via Technologies Inc. | Method and apparatus for audio encoding and decoding |
EP1932361A1 (en) | 2005-10-03 | 2008-06-18 | Nokia Corporation | Adaptive variable length codes for independent variables |
US20070094035A1 (en) * | 2005-10-21 | 2007-04-26 | Nokia Corporation | Audio coding |
KR100803206B1 (ko) | 2005-11-11 | 2008-02-14 | 삼성전자주식회사 | 오디오 지문 생성과 오디오 데이터 검색 장치 및 방법 |
CN101167368B (zh) * | 2005-12-05 | 2012-03-28 | 华为技术有限公司 | 一种实现算术编解码的方法及装置 |
CN101133649B (zh) | 2005-12-07 | 2010-08-25 | 索尼株式会社 | 编码装置、编码方法以及解码装置、解码方法 |
KR101237413B1 (ko) | 2005-12-07 | 2013-02-26 | 삼성전자주식회사 | 오디오 신호의 부호화 및 복호화 방법, 오디오 신호의부호화 및 복호화 장치 |
US7283073B2 (en) * | 2005-12-19 | 2007-10-16 | Primax Electronics Ltd. | System for speeding up the arithmetic coding processing and method thereof |
WO2007080211A1 (en) * | 2006-01-09 | 2007-07-19 | Nokia Corporation | Decoding of binaural audio signals |
WO2007080225A1 (en) | 2006-01-09 | 2007-07-19 | Nokia Corporation | Decoding of binaural audio signals |
KR100774585B1 (ko) | 2006-02-10 | 2007-11-09 | 삼성전자주식회사 | 변조 스펙트럼을 이용한 음악 정보 검색 방법 및 그 장치 |
US8027479B2 (en) * | 2006-06-02 | 2011-09-27 | Coding Technologies Ab | Binaural multi-channel decoder in the context of non-energy conserving upmix rules |
US7948409B2 (en) * | 2006-06-05 | 2011-05-24 | Mediatek Inc. | Automatic power control system for optical disc drive and method thereof |
EP1883067A1 (en) | 2006-07-24 | 2008-01-30 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for lossless encoding of a source signal, using a lossy encoded data stream and a lossless extension data stream |
WO2008021247A2 (en) * | 2006-08-15 | 2008-02-21 | Dolby Laboratories Licensing Corporation | Arbitrary shaping of temporal noise envelope without side-information |
US7554468B2 (en) * | 2006-08-25 | 2009-06-30 | Sony Computer Entertainment Inc, | Entropy decoding methods and apparatus using most probable and least probable signal cases |
JP4785706B2 (ja) * | 2006-11-01 | 2011-10-05 | キヤノン株式会社 | 復号装置及び復号方法 |
DE102007017254B4 (de) * | 2006-11-16 | 2009-06-25 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung zum Kodieren und Dekodieren |
US20080243518A1 (en) * | 2006-11-16 | 2008-10-02 | Alexey Oraevsky | System And Method For Compressing And Reconstructing Audio Files |
KR100868763B1 (ko) * | 2006-12-04 | 2008-11-13 | 삼성전자주식회사 | 오디오 신호의 중요 주파수 성분 추출 방법 및 장치와 이를이용한 오디오 신호의 부호화/복호화 방법 및 장치 |
US7365659B1 (en) | 2006-12-06 | 2008-04-29 | Silicon Image Gmbh | Method of context adaptive binary arithmetic coding and coding apparatus using the same |
CN101231850B (zh) | 2007-01-23 | 2012-02-29 | 华为技术有限公司 | 编解码方法及装置 |
KR101365989B1 (ko) | 2007-03-08 | 2014-02-25 | 삼성전자주식회사 | 트리 구조를 기반으로 한 엔트로피 부호화 및 복호화 장치및 방법 |
JP2008289125A (ja) | 2007-04-20 | 2008-11-27 | Panasonic Corp | 算術復号化装置及びその方法 |
US7813567B2 (en) | 2007-04-26 | 2010-10-12 | Texas Instruments Incorporated | Method of CABAC significance MAP decoding suitable for use on VLIW data processors |
PL2137725T3 (pl) * | 2007-04-26 | 2014-06-30 | Dolby Int Ab | Urządzenie i sposób do syntetyzowania sygnału wyjściowego |
JP4748113B2 (ja) | 2007-06-04 | 2011-08-17 | ソニー株式会社 | 学習装置および学習方法、並びにプログラムおよび記録媒体 |
EP2278582B1 (en) | 2007-06-08 | 2016-08-10 | LG Electronics Inc. | A method and an apparatus for processing an audio signal |
PL2165328T3 (pl) | 2007-06-11 | 2018-06-29 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Kodowanie i dekodowanie sygnału audio zawierającego część impulsową i część stacjonarną |
US8521540B2 (en) * | 2007-08-17 | 2013-08-27 | Qualcomm Incorporated | Encoding and/or decoding digital signals using a permutation value |
US20110116542A1 (en) | 2007-08-24 | 2011-05-19 | France Telecom | Symbol plane encoding/decoding with dynamic calculation of probability tables |
US7839311B2 (en) * | 2007-08-31 | 2010-11-23 | Qualcomm Incorporated | Architecture for multi-stage decoding of a CABAC bitstream |
US7777654B2 (en) | 2007-10-16 | 2010-08-17 | Industrial Technology Research Institute | System and method for context-based adaptive binary arithematic encoding and decoding |
US8527265B2 (en) * | 2007-10-22 | 2013-09-03 | Qualcomm Incorporated | Low-complexity encoding/decoding of quantized MDCT spectrum in scalable speech and audio codecs |
US8515767B2 (en) * | 2007-11-04 | 2013-08-20 | Qualcomm Incorporated | Technique for encoding/decoding of codebook indices for quantized MDCT spectrum in scalable speech and audio codecs |
US7714753B2 (en) | 2007-12-11 | 2010-05-11 | Intel Corporation | Scalable context adaptive binary arithmetic coding |
US8631060B2 (en) * | 2007-12-13 | 2014-01-14 | Qualcomm Incorporated | Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures |
EP2077550B8 (en) | 2008-01-04 | 2012-03-14 | Dolby International AB | Audio encoder and decoder |
US8483854B2 (en) * | 2008-01-28 | 2013-07-09 | Qualcomm Incorporated | Systems, methods, and apparatus for context processing using multiple microphones |
JP4893657B2 (ja) * | 2008-02-29 | 2012-03-07 | ソニー株式会社 | 算術復号装置 |
KR101221919B1 (ko) * | 2008-03-03 | 2013-01-15 | 연세대학교 산학협력단 | 오디오 신호 처리 방법 및 장치 |
JP5336522B2 (ja) | 2008-03-10 | 2013-11-06 | フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ | 瞬間的事象を有する音声信号の操作装置および操作方法 |
US8340451B2 (en) | 2008-04-28 | 2012-12-25 | Osaka Prefecture University Public Corporation | Method for constructing image database for object recognition, processing apparatus and processing program |
US7864083B2 (en) | 2008-05-21 | 2011-01-04 | Ocarina Networks, Inc. | Efficient data compression and decompression of numeric sequences |
EP4224471B1 (en) * | 2008-07-11 | 2024-08-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoder and audio decoder |
CA2871268C (en) | 2008-07-11 | 2015-11-03 | Nikolaus Rettelbach | Audio encoder, audio decoder, methods for encoding and decoding an audio signal, audio stream and computer program |
EP2144230A1 (en) * | 2008-07-11 | 2010-01-13 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Low bitrate audio encoding/decoding scheme having cascaded switches |
US7714754B2 (en) | 2008-07-14 | 2010-05-11 | Vixs Systems, Inc. | Entropy decoder with pipelined processing and methods for use therewith |
ES2592416T3 (es) | 2008-07-17 | 2016-11-30 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Esquema de codificación/decodificación de audio que tiene una derivación conmutable |
WO2010016270A1 (ja) * | 2008-08-08 | 2010-02-11 | パナソニック株式会社 | 量子化装置、符号化装置、量子化方法及び符号化方法 |
US20100088090A1 (en) | 2008-10-08 | 2010-04-08 | Motorola, Inc. | Arithmetic encoding for celp speech encoders |
US7932843B2 (en) * | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
US7982641B1 (en) | 2008-11-06 | 2011-07-19 | Marvell International Ltd. | Context-based adaptive binary arithmetic coding engine |
GB2466666B (en) | 2009-01-06 | 2013-01-23 | Skype | Speech coding |
KR101622950B1 (ko) | 2009-01-28 | 2016-05-23 | 삼성전자주식회사 | 오디오 신호의 부호화 및 복호화 방법 및 그 장치 |
US8457975B2 (en) * | 2009-01-28 | 2013-06-04 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Audio decoder, audio encoder, methods for decoding and encoding an audio signal and computer program |
KR20100136890A (ko) * | 2009-06-19 | 2010-12-29 | 삼성전자주식회사 | 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법 |
RU2557455C2 (ru) | 2009-06-23 | 2015-07-20 | Войсэйдж Корпорейшн | Прямая компенсация наложения спектров во временной области с применением в области взвешенного или исходного сигнала |
JP5678071B2 (ja) | 2009-10-08 | 2015-02-25 | フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ | 線形予測符号化ベースのノイズ整形を用いた多重モードオーディオ信号デコーダ、多重モードオーディオ信号エンコーダ、方法およびコンピュータプログラム |
EP2315358A1 (en) * | 2009-10-09 | 2011-04-27 | Thomson Licensing | Method and device for arithmetic encoding or arithmetic decoding |
MY188408A (en) | 2009-10-20 | 2021-12-08 | Fraunhofer Ges Forschung | Audio encoder,audio decoder,method for encoding an audio information,method for decoding an audio information and computer program using a region-dependent arithmetic coding mapping rule |
US8149144B2 (en) | 2009-12-31 | 2012-04-03 | Motorola Mobility, Inc. | Hybrid arithmetic-combinatorial encoder |
PL2524372T3 (pl) | 2010-01-12 | 2015-08-31 | Fraunhofer Ges Forschung | Koder audio. dekoder audio, sposób kodowania i dekodowania informacji audio i program komputerowy uzyskujący wartość podobszaru kontekstu w oparciu o normę uprzednio zdekodowanych wartości widmowych |
CN102131081A (zh) | 2010-01-13 | 2011-07-20 | 华为技术有限公司 | 混合维度编解码方法和装置 |
WO2012048472A1 (en) * | 2010-10-15 | 2012-04-19 | Huawei Technologies Co., Ltd. | Signal analyzer, signal analyzing method, signal synthesizer, signal synthesizing method, windower, transformer and inverse transformer |
US20120207400A1 (en) | 2011-02-10 | 2012-08-16 | Hisao Sasai | Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus |
US8170333B2 (en) | 2011-10-13 | 2012-05-01 | University Of Dayton | Image processing systems employing image compression |
-
2011
- 2011-01-11 PL PL11700402T patent/PL2524372T3/pl unknown
- 2011-01-11 CN CN201180013302.7A patent/CN102792370B/zh active Active
- 2011-01-11 WO PCT/EP2011/050275 patent/WO2011086067A1/en active Application Filing
- 2011-01-11 PL PL11700401T patent/PL2517200T3/pl unknown
- 2011-01-11 PL PL11700132T patent/PL2524371T3/pl unknown
- 2011-01-11 EP EP11700402.8A patent/EP2524372B1/en active Active
- 2011-01-11 EP EP11700401.0A patent/EP2517200B1/en active Active
- 2011-01-11 AU AU2011206676A patent/AU2011206676B2/en active Active
- 2011-01-11 BR BR122021008576-5A patent/BR122021008576B1/pt active IP Right Grant
- 2011-01-11 CN CN201180013281.9A patent/CN102859583B/zh active Active
- 2011-01-11 ES ES11700132.1T patent/ES2615891T3/es active Active
- 2011-01-11 BR BR112012017258-1A patent/BR112012017258B1/pt active IP Right Grant
- 2011-01-11 MX MX2012008076A patent/MX2012008076A/es active IP Right Grant
- 2011-01-11 ES ES11700402.8T patent/ES2532203T3/es active Active
- 2011-01-11 KR KR1020127021034A patent/KR101339057B1/ko active IP Right Grant
- 2011-01-11 BR BR122021008583-8A patent/BR122021008583B1/pt active IP Right Grant
- 2011-01-11 MY MYPI2012003151A patent/MY160067A/en unknown
- 2011-01-11 BR BR112012017257A patent/BR112012017257A2/pt not_active Application Discontinuation
- 2011-01-11 TW TW100100949A patent/TWI466103B/zh active
- 2011-01-11 AU AU2011206677A patent/AU2011206677B9/en active Active
- 2011-01-11 WO PCT/EP2011/050272 patent/WO2011086065A1/en active Application Filing
- 2011-01-11 BR BR122021008581-1A patent/BR122021008581B1/pt active IP Right Grant
- 2011-01-11 SG SG2012051058A patent/SG182464A1/en unknown
- 2011-01-11 MX MX2012008077A patent/MX2012008077A/es active IP Right Grant
- 2011-01-11 SG SG2012051074A patent/SG182466A1/en unknown
- 2011-01-11 SG SG2012051082A patent/SG182467A1/en unknown
- 2011-01-11 CN CN201180013284.2A patent/CN102844809B/zh active Active
- 2011-01-11 ES ES11700401.0T patent/ES2536957T3/es active Active
- 2011-01-11 MY MYPI2012003149A patent/MY159982A/en unknown
- 2011-01-11 CA CA2786946A patent/CA2786946C/en active Active
- 2011-01-11 TW TW100100948A patent/TWI476757B/zh active
- 2011-01-11 AU AU2011206675A patent/AU2011206675C1/en active Active
- 2011-01-11 CA CA2786944A patent/CA2786944C/en active Active
- 2011-01-11 MX MX2012008075A patent/MX2012008075A/es active IP Right Grant
- 2011-01-11 BR BR112012017256-5A patent/BR112012017256B1/pt active IP Right Grant
- 2011-01-11 JP JP2012548403A patent/JP5624159B2/ja active Active
- 2011-01-11 CA CA2786945A patent/CA2786945C/en active Active
- 2011-01-11 RU RU2012141243A patent/RU2644141C2/ru not_active Application Discontinuation
- 2011-01-11 PT PT117001321T patent/PT2524371T/pt unknown
- 2011-01-11 EP EP11700132.1A patent/EP2524371B1/en active Active
- 2011-01-11 KR KR1020127020851A patent/KR101339058B1/ko active IP Right Grant
- 2011-01-11 RU RU2012141241A patent/RU2628162C2/ru active
- 2011-01-11 MY MYPI2012003150A patent/MY153845A/en unknown
- 2011-01-11 WO PCT/EP2011/050273 patent/WO2011086066A1/en active Application Filing
- 2011-01-11 TW TW100100950A patent/TWI466104B/zh active
- 2011-01-11 KR KR1020127021154A patent/KR101336051B1/ko active IP Right Grant
- 2011-01-11 JP JP2012548401A patent/JP5773502B2/ja active Active
- 2011-01-11 JP JP2012548402A patent/JP5622865B2/ja active Active
- 2011-01-12 AR ARP110100095A patent/AR079886A1/es active IP Right Grant
- 2011-01-12 AR ARP110100097A patent/AR079888A1/es active IP Right Grant
- 2011-01-12 AR ARP110100096A patent/AR079887A1/es active IP Right Grant
-
2012
- 2012-07-12 US US13/547,600 patent/US8645145B2/en active Active
- 2012-07-12 US US13/547,664 patent/US8898068B2/en active Active
- 2012-07-12 US US13/547,640 patent/US8682681B2/en active Active
- 2012-08-07 ZA ZA2012/05938A patent/ZA201205938B/en unknown
- 2012-08-07 ZA ZA2012/05939A patent/ZA201205939B/en unknown
- 2012-08-07 ZA ZA2012/05936A patent/ZA201205936B/en unknown
-
2013
- 2013-04-26 HK HK13105056.5A patent/HK1178306A1/xx unknown
- 2013-05-08 HK HK13105504.3A patent/HK1177649A1/xx unknown
-
2014
- 2014-09-19 US US14/491,881 patent/US9633664B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2222110C2 (ru) * | 1993-09-24 | 2004-01-20 | Квэлкомм Инкорпорейтед | Многоскоростной последовательный декодер витерби для использования в системе многостанционного доступа с кодовым разделением |
RU2187196C2 (ru) * | 1996-04-19 | 2002-08-10 | Дженерал Электрик Компани | Параллельный каскадный сверточный код с конечной последовательностью битов и декодер для такого кода |
EP1111589A1 (en) * | 1999-12-21 | 2001-06-27 | Texas Instruments Incorporated | Wideband speech coding with parametric coding of high frequency component |
US20020007272A1 (en) * | 2000-05-10 | 2002-01-17 | Nec Corporation | Speech coder and speech decoder |
RU2007140383A (ru) * | 2005-04-01 | 2009-05-10 | Квэлкомм Инкорпорейтед (US) | Способы и устройство кодирования и декодирования части речевого сигнала диапазона высоких частот |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11043226B2 (en) | 2017-11-10 | 2021-06-22 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters |
US11127408B2 (en) | 2017-11-10 | 2021-09-21 | Fraunhofer—Gesellschaft zur F rderung der angewandten Forschung e.V. | Temporal noise shaping |
US11217261B2 (en) | 2017-11-10 | 2022-01-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoding and decoding audio signals |
RU2767286C2 (ru) * | 2017-11-10 | 2022-03-17 | Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. | Аудиокодеры, аудиодекодеры, способы и компьютерные программы, применяющие кодирование и декодирование младших значащих битов |
US11315583B2 (en) | 2017-11-10 | 2022-04-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits |
US11315580B2 (en) | 2017-11-10 | 2022-04-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio decoder supporting a set of different loss concealment tools |
US11380339B2 (en) | 2017-11-10 | 2022-07-05 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits |
US11380341B2 (en) | 2017-11-10 | 2022-07-05 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Selecting pitch lag |
US11386909B2 (en) | 2017-11-10 | 2022-07-12 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits |
US11462226B2 (en) | 2017-11-10 | 2022-10-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Controlling bandwidth in encoders and/or decoders |
US11545167B2 (en) | 2017-11-10 | 2023-01-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Signal filtering |
US11562754B2 (en) | 2017-11-10 | 2023-01-24 | Fraunhofer-Gesellschaft Zur F Rderung Der Angewandten Forschung E.V. | Analysis/synthesis windowing function for modulated lapped transformation |
US12033646B2 (en) | 2017-11-10 | 2024-07-09 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Analysis/synthesis windowing function for modulated lapped transformation |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2628162C2 (ru) | Аудио кодер, аудио декодер, способ кодирования и декодирования аудио информации и компьютерная программа, определяющая значение поддиапазона контекста на основе нормы ранее декодированных спектральных значений | |
RU2605677C2 (ru) | Аудио кодер, аудио декодер, способ кодирования аудио информации, способ декодирования аудио информации и компьютерная программа, использующая итеративное уменьшение размера интервала | |
RU2568381C2 (ru) | Аудиокодер, аудиодекодер, способ для кодирования аудиоинформации, способ для декодирования аудиоинформации и компьютерная программа, использующие оптимизированную хэш-таблицу | |
RU2574848C2 (ru) | Аудио кодер, аудио декодер, способ кодирования аудио информации, способ декодирования аудио информации и компьютерная программа, использующая хэш-таблицу, которая описывает значимые значения состояния и границы интервала |