АУДИОКОДЕР ДЛЯ КОДИРОВАНИЯ АУДИОСИГНАЛА, СПОСОБ ДЛЯ КОДИРОВАНИЯ АУДИОСИГНАЛА И КОМПЬЮТЕРНАЯ ПРОГРАММА, УЧИТЫВАЮЩИЕ ДЕТЕКТИРУЕМУЮ СПЕКТРАЛЬНУЮ ОБЛАСТЬ ПИКОВ В ВЕРХНЕМ ЧАСТОТНОМ ДИАПАЗОНЕ
AUDIO ENCODER FOR ENCODING AN AUDIO SIGNAL, A METHOD FOR ENCODING AN AUDIO SIGNAL AND A COMPUTER PROGRAM WHICH TAKE INTO ACCOUNT A DETECTABLE SPECTRAL REGION OF PEAKS IN THE UPPER FREQUENCY RANGE

Настоящее изобретение относится к кодированию аудио и, предпочтительно, к способу, устройству или компьютерной программе для управления квантованием спектральных коэффициентов для TCX на основе MDCT в кодеке EVS.
Справочным документом для кодека EVS является стандарт 3GPP TS 24.445 V13.1.0 (2016-03), Проект партнерства 3-го поколения; технический стандарт групповых услуг и системных аспектов; кодек для улучшенных служб голосовой связи (EVS); подробное алгоритмическое описание (редакция 13).
Однако настоящее изобретение дополнительно полезно в других версиях EVS, например, определяемых редакциями, отличными от редакции 13, и, кроме того, настоящее изобретение дополнительно полезно во всех других аудиокодерах, отличных от EVS, которые, однако, основаны на детекторе, блоке формирования и каскаде блока квантования и кодера, которые определены, например, в формуле изобретения.
Кроме того, следует отметить, что все варианты осуществления, определяемые не только независимыми пунктами формулы изобретения, но и зависимыми пунктами формулы изобретения, могут быть использованы отдельно друг от друга или вместе, как намечено посредством взаимозависимостей формулы изобретения или как описано ниже в предпочтительных примерах.
Кодек EVS [1], специфицированный в 3GPP, является современным гибридным кодеком для узкополосного (NB), широкополосного (WB), сверхширокополосного (SWB) или полнодиапазонного (FB) голосового и аудио контента, который может переключаться между несколькими подходами кодирования на основании классификации сигнала:
Фиг.1 показывает общую обработку и разные схемы кодирования в EVS. Конкретно, участок общей обработки кодера на фиг.1 содержит блок 101 повторной выборки сигнала, и блок 102 анализа сигнала. Входной аудиосигнал вводится через вход 103 аудиосигнала в каскад общей обработки и, конкретно, в блок 101 повторной выборки сигнала. Блок 101 повторной выборки сигнала дополнительно имеет вход линии команд для приема параметров линии команд. Выходные сигналы участка общей обработки вводятся в разные элементы, как можно увидеть на фиг.1. Конкретно, фиг.1 содержит блок 110 кодирования на основе линейного предсказания (LP-кодирования), блок 120 кодирования частотной области и блок 130 пассивного кодирования/ CNG сигнала. Блоки 110, 120, 130 соединены с мультиплексором 140 битового потока. Кроме того, переключатель 150 обеспечен для переключения, в зависимости от решения классификатора, выхода каскада общей обработки либо на блок 110 LP-кодирования, либо на блок 120 кодирования частотной области, либо на блок 130 пассивного кодирования/ CNG (генерирования комфортного шума) сигнала. Кроме того, мультиплексор 140 битового потока принимает информацию классификатора, т.е. информацию о том, кодируется ли некоторый текущий участок входного сигнала, вводимого с позицией 103 и обрабатываемого участком общей обработки, с использованием какого-либо из блоков 110, 120, 130.
- LP-кодирование (кодирование на основе линейного предсказания), такое как CELP-кодирование, используют, главным образом, для голосового контента или контента с преобладанием речи и обобщенного аудиоконтента с высокой временной флуктуацией.
- Кодирование частотной области используют для всего остального обобщенного аудиоконтента, такого как музыка или фоновый шум.
CELP
Для обеспечения максимального качества для низких и средних битовых скоростей (передачи данных), выполняют частое переключение между LP-кодированием и кодированием частотной области, на основе анализа сигналов в модуле общей обработки. Для уменьшения сложности, кодек оптимизировали для повторного использования элементов каскада анализа сигналов также в последующих модулях. Например, модуль анализа сигналов характеризует каскад LP-анализа. Результирующие коэффициенты LP-фильтра (LPC) и остаточный сигнал, во-первых, используют для нескольких этапов анализа сигналов, таких как детектор голосовой активности (VAD) или классификатор речи/музыки. Во-вторых, LPC также является элементарной частью схемы LP-кодирования и схемы кодирования частотной области. Для уменьшения сложности, LP-анализ выполняют с внутренней частотой выборки CELP-кодера (SR).
CELP
CELP-кодер работает на внутренней частоте выборки (SR), равной либо 12,8 кГц, либо 16 кГц, и может, таким образом, прямо представлять сигналы вплоть до ширины полосы частот аудиосигнала, равной 6,4 кГц или 8 кГц. Для аудиоконтента, превышающего эту ширину полосы частот на WB, SWB или FB, аудиоконтент выше частотного представления CELP кодируют посредством механизма расширения ширины полосы частот.
inp
inp
CELP
CELP
TCX на основе MDCT является подрежимом кодирования частотной области. Подобно подходу LP-кодирования, формирование шума в TCX выполняют на основе LP-фильтра. Это формирование LPC выполняют в MDCT-области посредством применения коэффициентов усиления, вычисляемых на основании взвешенных квантованных коэффициентов LP-фильтра для MDCT-спектра (на стороне декодера). На стороне кодера, обратные коэффициенты усиления применяют перед скоростным циклом. Это ниже называется применением коэффициентов усиления для формирования LPC. TCX работает на входной частоте выборки (SR). Это используют для кодирования полного спектра прямо в MDCT-области, без дополнительного расширения ширины полосы частот.Входная частота выборки, SR, на которой выполняют MDCT-преобразование, может быть выше, чем частота выборки CELP, SR, для которой вычисляют LP-коэффициенты. Таким образом, коэффициенты усиления для формирования LPC могут быть вычислены только для части MDCT-спектра, соответствующей диапазону частот CELP (f). Для остальной части спектра (при наличии) используют коэффициент усиления формирования наивысшего частотного диапазона.
Фиг.2 показывает на высоком уровне применение коэффициентов усиления для формирования LPC для TCX на основе MDCT. Конкретно, фиг.2 показывает принцип формирования шума и кодирования в TCX или блоке 120 кодирования частотной области фиг.1 на стороне декодера.
CELP
Более конкретно, фиг.2 показывает блок-схему кодера. Входной сигнал 103 вводится в блок 201 повторной выборки для выполнения повторной выборки сигнала с частотой выборки, SR, т.е. с частотой выборки, требуемой блоком 110 LP-кодирования фиг.1. Кроме того, обеспечен вычислитель 203 LPC, который вычисляет параметры LPC, и, в блоке 205, выполняется взвешивание на основе LPC для обеспечения сигнала, дополнительно обрабатываемого блоком 110 LP-кодирования на фиг.1, т.е. остаточного сигнала LPC, который кодируют с использованием ACELP-процессора.
Кроме того, входной сигнал 103 вводится, без какой-либо повторной выборки, в спектрально-временной преобразователь 207, который иллюстративно показан в виде MDCT-преобразования. Кроме того, в блоке 209, параметры LPC, вычисленные блоком 203, применяют после некоторых вычислений. Конкретно, блок 209 принимает вычисленные параметры LPC от блока 203 по линии 213 или, в качестве альтернативы или дополнения, от блока 205 и затем получает MDCT или, в общем, весовые коэффициенты спектральной области для применения соответствующих обратных коэффициентов усиления для формирования LPC. Затем, в блоке 211, выполняют общую операцию блока квантования/кодера, которая может быть, например, скоростным циклом, который настраивает глобальный коэффициент усиления, и, кроме того, выполняет квантование/кодирование спектральных коэффициентов, предпочтительно с использованием арифметического кодирования, как показано в общеизвестной спецификации кодера EVS, для получения в итоге битового потока.
CELP
inp
В отличие от подхода CELP-кодирования, который объединяет базовый кодер на SR и механизм расширения ширины полосы частот, выполняемый на более высокой частоте выборки, подходы кодирования на основе MDCT работают прямо на входной частоте выборки, SR, и кодируют контент полного спектра в MDCT-области.
TCX на основе MDCT кодирует вплоть до 16 кГц аудиоконтент на низких битовых скоростях, например, 9,6 кбит/с или 13,2 кбит/с в SWB. Поскольку при таких низких битовых скоростях только малое подмножество спектральных коэффициентов может быть закодировано прямо посредством арифметического кодера, результирующие промежутки (области нулевых значений) в спектре маскируют посредством двух механизмов:
- механизма заполнения шумом, который вставляет случайный шум в декодированный спектр. Энергией шума управляет коэффициент усиления, который передается в битовом потоке.
- механизма интеллектуального заполнения промежутка (IGF), который вставляет участки сигнала из низкочастотных участков спектра. Характеристиками этих вставленных частотных участков управляют параметры, которые передаются в битовом потоке.
CELP
Заполнение шумом используют для низкочастотных участков вплоть до наивысшей частоты, которой может управлять передаваемый LPC (f). Выше этой частоты используют инструмент IGF, который обеспечивает другие механизмы для управления уровнем вставляемых частотных участков.
Существует два механизма для выбора того, какие спектральные коэффициенты будут сохраняться при процедуре кодирования, или какие спектральные коэффициенты будут заменены посредством заполнения шумом или IGF:
1) Скоростной цикл
После применения обратных коэффициентов усиления для формирования LPC, применяют скоростной цикл. Для этого, оценивают глобальный коэффициент усиления. Затем квантуют спектральные коэффициенты и кодируют квантованные спектральные коэффициенты арифметическим кодером. На основании реального или оцененного потребления битов арифметического кодера или ошибки квантования глобальный коэффициент усиления увеличивают или уменьшают. Это влияет на точность блока квантования. Чем меньше точность, тем больше спектральных коэффициентов квантуется с нулевым значением. Применение обратных коэффициентов усиления для формирования LPC с использованием взвешенного LPC перед скоростным циклом обеспечивает то, что соответствующие восприятию линии сохраняются со значительно большей вероятностью, чем несоответствующий восприятию контент.
2) Тональная маска IGF
CELP
Выше f, где нет никаких доступных LPC, используют другой механизм для идентификации соответствующих восприятию спектральных компонентов: относящуюся к линии энергию сравнивают со средней энергией в области IGF. Преобладающие спектральные линии, которые соответствуют соответствующим восприятию частям сигнала, сохраняют, все другие линии устанавливают равными нулю. MDCT-спектр, который был предварительно обработан Тональной маской IGF, подают затем в Скоростной цикл.
Взвешенные LPC следуют за огибающей спектра сигнала. Посредством применения обратных коэффициентов усиления для формирования LPC с использованием взвешенных LPC, реализуют воспринимаемое приближение спектра к спектру белого шума. Это значительно уменьшает динамику MDCT-спектра перед циклом кодирования, а также, таким образом, обеспечивает управление распределением битов среди спектральных коэффициентов MDCT в цикле кодирования.
CELP
CELP
CELP
CELP
Как объяснено выше, взвешенный LPC является недоступным для частот выше f. Для этих MDCT-коэффициентов, применяют коэффициент усиления формирования наивысшего частотного диапазона ниже f. Это хорошо работает в случаях, когда коэффициент усиления формирования наивысшего частотного диапазона ниже f приблизительно соответствует энергии коэффициентов выше f, что часто имеет место вследствие отклонения спектра, и что может наблюдаться в большинстве аудиосигналов. Следовательно, эта процедура является предпочтительной, поскольку информацию формирования для верхнего диапазона не нужно вычислять и передавать.
CELP
CELP
Однако в случае, когда имеются сильные спектральные компоненты выше f, и коэффициент усиления формирования наивысшего частотного диапазона ниже f является очень малым, это приводит к рассогласованию. Это рассогласование сильно влияет на работу или на скоростной цикл, который фокусируется на спектральных коэффициентах, имеющих наивысшую амплитуду. Это будет на низких битовых скоростях приводить к обнулению остальных компонентов сигнала, особенно в диапазоне низких частот, и будет приводить к плохому воспринимаемому качеству.
CELP
CELP
CELP
CELP
CELP
CELP
Фиг.3-6 иллюстрируют эту проблему. Фиг.3 показывает абсолютный MDCT-спектр перед применением обратных коэффициентов усиления для формирования LPC, фиг.4 показывает соответствующие коэффициенты усиления для формирования LPC. Имеются сильные видимые пики выше f, которые имеют величину того же порядка, что и величина наивысших пиков ниже f. Спектральные компоненты выше f являются результатом предварительной обработки с использованием тональной маски IGF. Фиг.5 показывает абсолютный MDCT-спектр после применения обратных коэффициентов усиления LPC, все еще перед квантованием. Теперь пики выше f значительно превышают пики ниже f, в результате чего скоростной цикл будет главным образом фокусироваться на этих пиках. Фиг.6 показывает результат скоростного цикла на низких битовых скоростях: все спектральные компоненты за исключением пиков выше f были квантованы со значением 0. Это приводит к очень плохому воспринимаемому результату после полного процесса декодирования, поскольку психоакустически хорошо соответствующие части сигнала на низких частотах полностью отсутствуют.
Фиг.3 показывает MDCT-спектр критического кадра перед применением обратных коэффициентов усиления для формирования LPC.
CELP
CELP
Фиг.4 показывает примененные коэффициенты усиления для формирования LPC. На стороне кодера, спектр умножают на обратный коэффициент усиления. Последнее значение коэффициента усиления используют для всех MDCT-коэффициентов выше f. Фиг.4 показывает f на правой границе.
CELP
Фиг.5 показывает MDCT-спектр критического кадра после применения обратных коэффициентов усиления для формирования LPC. Ясно видны высокие пики выше f.
CELP
Фиг.6 показывает MDCT-спектр критического кадра после квантования. Отображаемый спектр включает в себя применение глобального коэффициента усиления но без коэффициентов усиления для формирования LPC. Можно увидеть, что все спектральные коэффициенты за исключением пика выше f квантованы со значением 0.
Задача настоящего изобретения состоит в создании улучшенной концепции кодирования аудиоданных.
Эта задача решается аудиокодером по пункту 1 формулы изобретения, способом кодирования аудиосигнала по пункту 25 формулы изобретения или компьютерной программой по пункту 26 формулы изобретения.
Настоящее изобретение основано на обнаружении того, что такие проблемы уровня техники могут быть решены посредством предварительной обработки аудиосигнала, подлежащего кодированию, в зависимости от конкретной характеристики каскада блока квантования и кодера, включенного в аудиокодер. Для этого детектируют спектральную область пиков в верхнем частотном диапазоне аудиосигнала. Затем используют блок формирования для формирования нижнего частотного диапазона с использованием информации формирования для нижнего частотного диапазона и для формирования верхнего частотного диапазона с использованием по меньшей мере части информации формирования для нижнего частотного диапазона. Конкретно, блок формирования дополнительно выполнен с возможностью ослабления спектральных значений в детектируемой спектральной области пиков, т.е. в спектральной области пиков, детектируемой детектором в верхнем частотном диапазоне аудиосигнала. Затем сформированный нижний частотный диапазон и ослабленный верхний частотный диапазон квантуют и энтропийно кодируют.
Вследствие того факта, что верхний частотный диапазон был селективно ослаблен, т.е. в пределах детектируемой спектральной области пиков, эта детектируемая спектральная область пиков больше не сможет полностью влиять на поведение каскада блока квантования и кодера.
Вместо этого, вследствие того факта, что ослабление было сформировано в верхнем частотном диапазоне аудиосигнала, общее воспринимаемое качество результата операции кодирования улучшается. Конкретно, на низких битовых скоростях, причем довольно низкая битовая скорость является главной целью каскада блока квантования и кодера, высокие спектральные пики в верхнем частотном диапазоне могут потреблять все биты, требуемые для каскада блока квантования и кодера, поскольку кодер может управляться участками верхнего частотного диапазона и может, таким образом, использовать большинство доступных битов в этих участках. Это автоматически приводит к ситуации, в которой никакие биты для более важных для восприятия низкочастотных диапазонов больше не будут доступными. Таким образом, такая процедура может иметь результатом сигнал, в котором закодированы только высокочастотные участки, в то время как низкочастотные участки либо совсем не кодируются, либо кодируются только с очень низким качеством. Однако было обнаружено, что такая процедура является менее приятной для восприятия по сравнению с ситуацией, в которой такая проблематичная ситуация с преобладающими высокими спектральными областями детектируется, и пики в верхнем частотном диапазоне ослабляются перед выполнением процедуры кодера, содержащей каскад блока квантования и энтропийного кодера.
Предпочтительно, спектральную область пиков детектируют в верхнем частотном диапазоне MDCT-спектра. Однако также могут быть использованы другие спектрально-временные преобразователи, такие как блок фильтров, блок фильтров QMF, DFT, FFT или любое другое частотно-временное преобразование.
Кроме того, настоящее изобретение полезно тем, что, для верхнего частотного диапазона, не требуется вычислять информацию формирования. Вместо этого, информацию формирования, исходно вычисляемую для нижнего частотного диапазона, используют для формирования верхнего частотного диапазона. Таким образом, настоящее изобретение обеспечивает в вычислительном отношении очень эффективный кодер, поскольку информация формирования нижнего диапазона может быть также использована для формирования верхнего диапазона, поскольку проблемы, которые могут быть результатом такой ситуации, т.е. высоких спектральных значений в верхнем частотном диапазоне, решаются посредством дополнительного ослабления, дополнительно применяемого блоком формирования дополнительно к прямому формированию, обычно на основе огибающей спектра сигнала нижнего диапазона, который может, например, характеризоваться параметрами LPC для сигнала нижнего диапазона. Но огибающая спектра может быть также представлена любой другой соответствующей мерой, которая пригодна для выполнения формирования в спектральной области.
Каскад блока квантования и кодера выполняет операцию квантования и кодирования в отношении сформированного сигнала, т.е. в отношении сформированного сигнала нижнего диапазона и в отношении сформированного сигнала верхнего диапазона, но сформированный сигнал верхнего диапазона дополнительно подвергают дополнительному ослаблению.
Хотя ослабление верхнего диапазона в детектируемой спектральной области пиков является операцией предварительной обработки, которая больше не сможет быть восстановлена декодером, результат декодера является, тем не менее, более приятным по сравнению с ситуацией, когда дополнительное ослабление не применяется, поскольку ослабление имеет результатом тот факт, что остаются биты для более важного для восприятия нижнего частотного диапазона. Таким образом, в проблематичных ситуациях, в которых верхняя спектральная область с пиками могла бы преобладать во всем результате кодирования, настоящее изобретение обеспечивает дополнительное ослабление таких пиков таким образом, что в конце кодер «видит» сигнал, имеющий ослабленные высокочастотные участки и, таким образом, кодированный сигнал все же имеет полезную и приятную для восприятия низкочастотную информацию. «Потери» в отношении верхнего спектрального диапазона незаметны или почти незаметны слушателям, поскольку слушатели в общем не имеют ясной картины высокочастотного контента сигнала, но имеют, со значительно большей вероятностью, ожидание в отношении низкочастотного контента. Другими словами, сигнал, который имеет низкочастотный контент очень низкого уровня, но имеет значительный частотный контент высокого уровня, является сигналом, который обычно воспринимается как неестественный.
Предпочтительные варианты осуществления настоящего изобретения содержат анализатор линейного предсказания для получения коэффициентов линейного предсказания для временного кадра, и эти коэффициенты линейного предсказания представляют информацию формирования, или информацию формирования получают на основании этих коэффициентов линейного предсказания.
В дополнительном варианте осуществления, несколько коэффициентов формирования вычисляют для нескольких поддиапазонов нижнего частотного диапазона, и, для взвешивания в верхнем частотном диапазоне, используют коэффициент формирования, вычисленный для наивысшего поддиапазона низкочастотного диапазона.
В дополнительном варианте осуществления, детектор определяет спектральную область пиков в верхнем частотном диапазоне, когда по меньшей мере одно из группы условий является истинным, причем упомянутая группа условий содержит по меньшей мере условие амплитуды нижнего частотного диапазона, условие расстояния до пиков и условие амплитуды пиков. Даже более предпочтительно, спектральную область пиков детектируют, только когда два условия являются истинными одновременно, и даже более предпочтительно, спектральную область пиков детектируют, только когда все три условия являются истинными.
В дополнительном варианте осуществления, детектор определяет несколько значений, используемых для проверки условий либо перед, либо после операции формирования, с дополнительным ослаблением или без него.
В одном варианте осуществления, блок формирования дополнительно ослабляет спектральные значения с использованием коэффициента ослабления, причем этот коэффициент ослабления получают на основании максимальной спектральной амплитуды в нижнем частотном диапазоне, умноженной на заданное число, большее или равное 1, и деленой на максимальную спектральную амплитуду в верхнем частотном диапазоне.
Кроме того, конкретный способ в отношении того, как применять дополнительное ослабление, может быть реализован несколькими разными путями. Один путь состоит в том, что блок формирования сначала реализует информацию взвешивания с использованием по меньшей мере части информации формирования для нижнего частотного диапазона для формирования спектральных значений в детектируемой спектральной области пиков. Затем последующую операцию взвешивания выполняют с использованием информации ослабления.
Альтернативная процедура состоит в применении сначала операции взвешивания с использованием информации ослабления и в выполнении затем последующего взвешивания с использованием информации взвешивания, соответствующей упомянутой по меньшей мере части информации формирования для нижнего частотного диапазона. Дополнительная альтернатива состоит в применении единственной информации взвешивания с использованием объединенной информации взвешивания, которую получают на основании ослабления, с одной стороны, и части информации формирования для нижнего частотного диапазона, с другой стороны.
В ситуации, когда взвешивание выполняют с использованием умножения, информация ослабления является коэффициентом ослабления, и информация формирования является коэффициентом формирования, и фактическая объединенная информация взвешивания является коэффициентом взвешивания, т.е. единственным коэффициентом взвешивания для единственной информации взвешивания, причем этот единственный коэффициент взвешивания получают умножением информации ослабления и информации формирования для нижнего диапазона. Таким образом, становится ясно, что блок формирования может быть реализован многими разными путями, но, тем не менее, результатом является формирование верхнего частотного диапазона с использованием информации формирования нижнего диапазона и дополнительного ослабления.
В одном варианте осуществления, каскад блока квантования и кодера содержит процессор скоростного цикла для оценивания характеристики блока квантования таким образом, чтобы получалась заданная битовая скорость. В одном варианте осуществления, эта характеристика блока квантования является глобальным коэффициентом усиления, т.е. значением коэффициента усиления, применяемым ко всему частотному диапазону, т.е. применяемым ко всем спектральным значениям, которые подлежат квантованию и кодированию. Если оказывается, что требуемая битовая скорость является меньшей, чем битовая скорость, получаемая с использованием некоторого глобального коэффициента усиления, то тогда глобальный коэффициент усиления увеличивают и определяют, согласуется ли теперь фактическая битовая скорость с требованием, т.е. является ли она теперь меньшей или равной требуемой битовой скорости. Эту процедуру выполняют, когда глобальный коэффициент усиления используют в кодере перед квантованием таким образом, что спектральные значения делят на глобальный коэффициент усиления. Если, однако, глобальный коэффициент усиления используют по-другому, т.е. посредством умножения спектральных значений на глобальный коэффициент усиления перед выполнением квантования, то тогда глобальный коэффициент усиления уменьшают, когда фактическая битовая скорость является слишком высокой, или глобальный коэффициент усиления может быть увеличен, когда фактическая битовая скорость является меньшей, чем допустимая битовая скорость.
Однако, другие характеристики каскада кодера могут быть также использованы при некотором условии скоростного цикла. Одним путем может быть, например, частотно-селективный коэффициент усиления. Дополнительная процедура может состоять в настройке ширины полосы частот аудиосигнала в зависимости от требуемой битовой скорости. В общем, можно влиять на разные характеристики блока квантования таким образом, чтобы в конце получить битовую скорость, которая согласуется с требуемой (обычно низкой) битовой скоростью.
Предпочтительно, эта процедура особенно хорошо приспособлена для объединения с обработкой интеллектуального заполнения промежутка (IGF-обработкой). В этой процедуре, процессор тональной маски применяют для определения, в верхнем частотном диапазоне, первой группы спектральных значений, подлежащих квантованию и энтропийному кодированию, и второй группы спектральных значений, подлежащих параметрическому кодированию посредством процедуры заполнения промежутка. Процессор тональной маски устанавливает вторую группу спектральных значений равными нулевым значениям, так что эти значения не потребляют многие биты в каскаде блока квантования/кодера. С другой стороны оказывается, что обычно значения, относящиеся к первой группе спектральных значений, которые подлежат квантованию и энтропийному кодированию, являются значениями в спектральной области пиков, которые, при некоторых обстоятельствах, могут быть детектированы и дополнительно ослаблены в случае проблематичной ситуации для каскада блока квантования/кодера. Таким образом, объединение процессора тональной маски в пределах системы интеллектуального заполнения промежутка с дополнительным ослаблением детектируемых спектральных областей пиков имеет результатом очень эффективную процедуру кодера, которая является, кроме того, обратно совместимой и, тем не менее, имеет результатом хорошее воспринимаемое качество даже при очень низких битовых скоростях.
CELP
Варианты осуществления являются предпочтительными по сравнению с потенциальными решениями этой проблемы, которые включают в себя способы для расширения частотного диапазона LPC или другие средства для обеспечения лучшего соответствия коэффициентов усиления, применяемых к частотам выше f, фактическим спектральным коэффициентам MDCT. Эта процедура, однако, нарушает обратную совместимость, когда кодек уже размещен на рынке, и описанные выше способы могут нарушить взаимную совместимость с существующими реализациями.
Далее предпочтительные варианты осуществления настоящего изобретения будут проиллюстрированы с учетом сопровождающих чертежей, на которых:
Фиг.1 показывает общую обработку и другие схемы кодирования в EVS;
Фиг.2 показывает принцип формирования шума и кодирования в TCX на стороне кодера;
Фиг.3 показывает MDCT-спектр критического кадра перед применением обратных коэффициентов усиления для формирования LPC;
Фиг.4 показывает ситуацию по фиг.3, но с примененными коэффициентами усиления для формирования LPC;
CELP
Фиг.5 показывает MDCT-спектр критического кадра после применения обратных коэффициентов усиления для формирования LPC, причем ясно видны высокие пики выше f;
Фиг.6 показывает MDCT-спектр критического кадра после квантования, имеющего только высокочастотную информацию, и не имеющего никакой низкочастотной информации;
Фиг.7 показывает MDCT-спектр критического кадра после применения обратных коэффициентов усиления для формирования LPC и изобретательской предварительной обработки на стороне кодера;
Фиг.8 показывает предпочтительный вариант осуществления аудиокодера для кодирования аудиосигнала;
Фиг.9 показывает ситуацию для вычисления различной информации формирования для разных частотных диапазонов и использования информации формирования нижнего диапазона для верхнего диапазона;
Фиг.10 показывает предпочтительный вариант осуществления аудиокодера;
Фиг.11 показывает блок-схему для иллюстрации функциональности детектора для детектирования спектральной области пиков;
Фиг.12 показывает предпочтительную реализацию реализации условия амплитуды нижнего диапазона;
Фиг.13 показывает предпочтительный вариант осуществления реализации условия расстояния до пиков;
Фиг.14 показывает предпочтительную реализацию реализации условия амплитуды пиков;
Фиг.15а показывает предпочтительную реализацию каскада блока квантования и кодера;
Фиг.15b показывает блок-схему для иллюстрации работы каскада блока квантования и кодера в качестве процессора скоростного цикла;
Фиг.16 показывает процедуру определения для определения коэффициента ослабления в предпочтительном варианте осуществления; и
Фиг.17 показывает предпочтительную реализацию для применения информации формирования нижнего диапазона к верхнему частотному диапазону и дополнительного ослабления сформированных спектральных значений в двух последовательных этапах.
Фиг.8 показывает предпочтительный вариант осуществления аудиокодера для кодирования аудиосигнала 103, имеющего нижний частотный диапазон и верхний частотный диапазон. Аудиокодер содержит детектор 802 для детектирования спектральной области пиков в верхнем частотном диапазоне аудиосигнала 103. Кроме того, аудиокодер содержит блок 804 формирования для формирования нижнего частотного диапазона с использованием информации формирования для нижнего диапазона и для формирования верхнего частотного диапазона с использованием по меньшей мере части информации формирования для нижнего частотного диапазона. Кроме того, формирователь выполнен с возможностью дополнительного ослабления спектральных значений в детектируемой спектральной области пиков в верхнем частотном диапазоне.
Таким образом, блок 804 формирования выполняет своего рода «единственное формирование» в нижнем диапазоне с использованием информации формирования для нижнего диапазона. Кроме того, блок формирования дополнительно выполняет своего рода «единственное» формирование в верхнем диапазоне с использованием информации формирования для нижнего диапазона и, обычно, нижнего диапазона с наивысшими частотами. Это «единственное» формирование выполняют в некоторых вариантах осуществления в верхнем диапазоне, где детектором 802 не были детектированы никакие спектральные области пиков. Кроме того, для спектральной области пиков в пределах верхнего диапазона, выполняют своего рода «двойное» формирование, т.е. информацию формирования из нижнего диапазона применяют к спектральной области пиков и, кроме того, дополнительное ослабление применяют к спектральной области пиков.
Результатом блока 804 формирования является сформированный сигнал 805. Сформированный сигнал является сформированным нижним частотным диапазоном и сформированным верхним частотным диапазоном, причем сформированный верхний частотный диапазон содержит спектральную область пиков. Этот сформированный сигнал 805 передается к каскаду 806 блока квантования и кодера для квантования сформированного нижнего частотного диапазона и сформированного верхнего частотного диапазона, включающего в себя спектральную область пиков, и для энтропийного кодирования квантованных спектральных значений из сформированного нижнего частотного диапазона и сформированного верхнего частотного диапазона, содержащего спектральную область пиков, снова, для получения кодированного аудиосигнала 814.
Предпочтительно, аудиокодер содержит анализатор 808 кодирования с линейным предсказанием для получения коэффициентов линейного предсказания для временного кадра аудиосигнала посредством анализа блока выборок аудиоданных во временном кадре. Предпочтительно, эти выборки аудиоданных ограничены по диапазону нижним частотным диапазоном.
Кроме того, блок 804 формирования выполнен с возможностью формирования нижнего частотного диапазона с использованием коэффициентов линейного предсказания в качестве информации формирования, показанной позицией 812 на фиг.8. Кроме того, блок 804 формирования выполнен с возможностью использования по меньшей мере части коэффициентов линейного предсказания, получаемых из блока выборок аудиоданных, ограниченного по диапазону нижним частотным диапазоном, для формирования верхнего частотного диапазона во временном кадре аудиосигнала.
Как показано на фиг.9, нижний частотный диапазон предпочтительно подразделяется на множество поддиапазонов, таких как иллюстративные четыре поддиапазона SB1, SB2, SB3 и SB4. Кроме того, как схематично показано, ширина поддиапазона увеличивается от нижнего к верхнему поддиапазону, т.е. поддиапазон SB4 шире по частоте, чем поддиапазон SB1. В других вариантах осуществления, однако, также могут быть использованы диапазоны, имеющие равную ширину.
CELP
CELP
Поддиапазоны SB1-SB4 продолжаются вплоть до граничной частоты, которой является, например, f. Таким образом, все поддиапазоны ниже граничной частоты f образуют нижний диапазон, и частотный контент выше граничной частоты образует верхний диапазон.
Конкретно, анализатор 808 LPC фиг.8 обычно вычисляет информацию формирования отдельно для каждого поддиапазона. Таким образом, анализатор 808 LPC предпочтительно вычисляет четыре разных вида информации о поддиапазоне для четырех поддиапазонов SB1-SB4, так что каждый поддиапазон имеет свою соответствующую информацию формирования.
Кроме того, формирование применяется блок 804 формирования для каждого поддиапазона SB1-SB4 с использованием информации формирования, вычисляемой точно для этого поддиапазона и, что важно, также выполняют формирование для верхнего диапазона, но информацию формирования для верхнего диапазона не вычисляют вследствие того факта, что анализатор линейного предсказания, вычисляющий информацию формирования, принимает ограниченный по диапазону сигнал, ограниченный нижним частотным диапазоном. Тем не менее, для выполнения также формирования для верхнего частотного диапазона, информацию формирования для поддиапазона SB4 используют для формирования верхнего диапазона. Таким образом, блок 804 формирования выполнен с возможностью взвешивания спектральных коэффициентов верхнего частотного диапазона с использованием коэффициента формирования, вычисляемого для наивысшего поддиапазона нижнего частотного диапазона. Наивысший поддиапазон, соответствующий SB4 на фиг.9, имеет наивысшую центральную частоту среди всех центральных частот поддиапазонов нижнего частотного диапазона.
Фиг.11 показывает предпочтительную блок-схему для объяснения функциональности детектора 802. Конкретно, детектор 802 выполнен с возможностью определения спектральной области пиков в верхнем частотном диапазоне, когда по меньшей мере одно из группы условий является истинным, причем группа условий содержит условие 1102 амплитуды нижнего диапазона, условие 1104 расстояния до пиков и условие 1106 амплитуды пиков.
Предпочтительно, разные условия применяют в точном порядке, показанном на фиг.11. Другими словами, условие 1102 амплитуды нижнего диапазона вычисляют перед условием 1104 расстояния до пиков, и условие расстояния до пиков вычисляют перед условием 1106 амплитуды пиков. В ситуации, когда все три условия должны быть истинными для детектирования спектральной области пиков, эффективный в вычислительном отношении детектор получают посредством применения последовательной обработки на фиг.11, где, как только некоторое условие становится не истинным, т.е. становится ложным, процесс детектирования для некоторого временного кадра останавливают и определяют, что ослабление спектральной области пиков в этом временном кадре не требуется. Таким образом, если для некоторого временного кадра уже определено, что условие 1102 амплитуды нижнего диапазона не выполняется, т.е. является ложным, то тогда средство управления переходит к принятию решению о том, что ослабление спектральной области пиков в этом временном кадре не нужно, и процедура продолжается без какого-либо дополнительного ослабления. Если, однако, контроллер определяет для условия 1102, что оно является истинным, то определяют второе условие 1104. Это условие расстояния до пиков еще раз определяют перед амплитудой 1106 пиков, так что средство управления определяет, что никакое ослабление спектральной области пиков не выполняют, когда условие 1104 приводит к ложному результату. Только когда условие 1104 расстояния до пиков имеет истинный результат, определяют третье условие 1106 амплитуды пиков.
В других вариантах осуществления, может быть определено большее или меньшее число условий, и может быть выполнено последовательное или параллельное определение, хотя последовательное определение, иллюстративно показанное на фиг.11, является предпочтительным для экономии вычислительных ресурсов, которые являются особенно ценными в мобильных применениях, которые имеют батарейное электропитание.
Фиг.12, 13, 14 обеспечивают предпочтительные варианты осуществления для условий 1102, 1104 и 1106.
В условии амплитуды нижнего диапазона, максимальную спектральную амплитуду в нижнем диапазоне определяют, как показано в блоке 1202. Этим значением является max_low. Кроме того, в блоке 1204, определяют максимальную спектральную амплитуду в верхнем диапазоне, которая указана как max_high.
1
В блоке 1206, определенные значения из блоков 1232 и 1234 обрабатывают предпочтительно вместе с заданным числом c для получения ложного или истинного результата условия 1102. Предпочтительно, условия в блоках 1202 и 1204 выполняют перед формированием с использованием информации формирования нижнего диапазона, т.е. перед процедурой, выполняемой блоком 804 спектрального формирования или, в отношении фиг.10, 804а.
1
В отношении заданного числа c фиг.12, используемого в блоке 1206, значение 16 является предпочтительным, но было доказано, что значения между 4 и 30 также являются пригодными.
Фиг.13 показывает предпочтительный вариант осуществления условия расстояния до пиков. В блоке 1302, определяют первую максимальную спектральную амплитуду в нижнем диапазоне, которая указана как max_low.
CELP
Кроме того, определяют первое спектральное расстояние, как показано в блоке 1304. Это первое спектральное расстояние указано как dist_low. Конкретно, первое спектральное расстояние является расстоянием до первой максимальной спектральной амплитуды, определяемой блоком 1302 от граничной частоты, между центральной частотой нижнего частотного диапазона и центральной частотой верхнего частотного диапазона. Предпочтительно, граничной частотой является f, но эта частота может иметь любое другое значение, как указано выше.
CELP
Кроме того, блок 1306 определяет вторую максимальную спектральную амплитуду в верхнем диапазоне, которую называют max_high. Кроме того, определяют второе спектральное расстояние 1308 и указывают его как dist_high. Второе спектральное расстояние до второй максимальной спектральной амплитуды от граничной частоты снова предпочтительно определяют с использованием f в качестве граничной частоты.
Кроме того, в блоке 1310 определяют, является ли истинным условие расстояния до пиков, когда первая максимальная спектральная амплитуда, взвешенная посредством первого спектрального расстояния и взвешенная посредством заданного числа, которое является большим, чем 1, является большей, чем вторая максимальная спектральная амплитуда, взвешенная посредством второго спектрального расстояния.
2
Предпочтительно, заданное число c равно 4 в наиболее предпочтительном варианте осуществления. Было доказано, что значения между 1,5 и 8 являются пригодными.
Предпочтительно, определение в блоке 1302 и 1306 выполняют после формирования с использованием информации формирования нижнего диапазона, т.е. после блока 804а, но, конечно, перед блоком 804b на фиг.10.
Фиг.14 показывает предпочтительную реализацию условия амплитуды пиков. Конкретно, блок 1402 определяет первую максимальную спектральную амплитуду в нижнем диапазоне, и блок 1404 определяет вторую максимальную спектральную амплитуду в верхнем диапазоне, причем результат блока 1402 указан как max_low2, и результат блока 1404 указан как max_high.
3
3
Затем, как показано в блоке 1406, условие амплитуды пиков является истинным, когда вторая максимальная спектральная амплитуда является большей, чем первая максимальная спектральная амплитуда, взвешенная посредством заданного числа с, которое является большим, чем 1. с предпочтительно устанавливают равным значению 1,5 или значению 3, в зависимости от разных скоростей, причем, в общем, было доказано, что значения между 1,0 и 5,0 являются пригодными.
Кроме того, как указано на фиг.14, определение в блоках 1402 и 1404 имеет место после формирования с использованием информации формирования нижнего диапазона, т.е. после обработки, показанной в блоке 804а, и перед обработкой, показанной блоком 804b, или, в отношении фиг.17, после блока 1702 и перед блоком 1704.
В других вариантах осуществления, условие 1106 амплитуды пиков и, конкретно, процедуру на фиг.14, блок 1402, не определяют на основании наименьшего значения в нижнем частотном диапазоне, т.е. наименьшего значения частоты спектра, но определение первой максимальной спектральной амплитуды в нижнем диапазоне выполняют на основе участка нижнего диапазона, причем этот участок продолжается от заданной начальной частоты до максимальной частоты нижнего частотного диапазона, причем заданная начальная частота является большей, чем минимальная частота нижнего частотного диапазона. В одном варианте осуществления, заданная начальная частота находится по меньшей мере на 10% нижнего частотного диапазона выше минимальной частоты нижнего частотного диапазона, или, в других вариантах осуществления, заданная начальная частота является частотой, равной половине максимальной частоты нижнего частотного диапазона в пределах диапазона допусков, составляющего плюс минус 10% от половины максимальной частоты.
3
3
3
3
3
Кроме того, предпочтительно, чтобы третье заданное число с зависело от битовой скорости, подлежащей обеспечению каскадом блока квантования/кодера, таким образом, чтобы упомянутое заданное число было большим для более высокой битовой скорости. Другими словами, если битовая скорость, которая должна быть обеспечена каскадом 806 блока квантования и кодера, является высокой, то тогда с является высоким, в то время как если заданная битовая скорость должна быть низкой, то тогда заданное число с является низким. При рассмотрении предпочтительного уравнения в блоке 1406 становится ясно, что чем больше заданное число с, тем реже определяют спектральную область пиков. Если, однако, с является малым, то тогда спектральную область пиков, где существуют спектральные значения, подлежащие, в конечном счете, ослаблению, определяют более часто.
Блоки 1202, 1204, 1402, 1404 или 1302 и 1306 всегда определяют спектральную амплитуду. Определение спектральной амплитуды может быть выполнено по-разному. Одним путем определения огибающей спектра является определение абсолютного значения спектрального значения реального спектра. В качестве альтернативы, спектральная амплитуда может быть модулем комплексного спектрального значения. В других вариантах осуществления, спектральная амплитуда может быть любой степенью спектрального значения реального спектра или любой степенью модуля комплексного спектра, причем степень является большей, чем 1. Предпочтительно, степень является целым числом, но было дополнительно доказано, что степени, равные 1,5 или 2,5, являются пригодными. Предпочтительно, тем не менее, чтобы степени были равны 2 или 3.
В общем, блок 804 формирования выполнен с возможностью ослабления по меньшей мере одного спектрального значения в детектируемой спектральной области пиков на основании максимальной спектральной амплитуды в верхнем частотном диапазоне и/или на основании максимальной спектральной амплитуды в нижнем частотном диапазоне. В других вариантах осуществления, блок формирования выполнен с возможностью определения максимальной спектральной амплитуды на участке нижнего частотного диапазона, причем этот участок продолжается от заданной начальной частоты нижнего частотного диапазона до максимальной частоты нижнего частотного диапазона. Заданная начальная частота является большей, чем минимальная частота нижнего частотного диапазона и предпочтительно находится по меньшей мере на 10% от нижнего частотного диапазона выше минимальной частоты нижнего частотного диапазона, или заданная начальная частота предпочтительно находится на частоте, равной половине максимальной частоты нижнего частотного диапазона в пределах диапазона допусков, составляющего плюс минус 10% от половины максимальной частоты.
Блок формирования дополнительно выполнен с возможностью определения коэффициента ослабления, определяющего дополнительное ослабление, причем коэффициент ослабления получают на основании максимальной спектральной амплитуды в нижнем частотном диапазоне, умноженной на заданное число, которое является большим или равным одному, и деленой на максимальную спектральную амплитуду в верхнем частотном диапазоне. Для этой цели делается ссылка на блок 1602, показывающий определение максимальной спектральной амплитуды в нижнем диапазоне (предпочтительно после формирования, т.е. после блока 804а на фиг.10 или после блока 1702 на фиг.17).
3
3
3
3
3
3
3
Кроме того, блок формирования выполнен с возможностью определения максимальной спектральной амплитуды в верхнем частотном диапазоне, снова предпочтительно после формирования, выполняемого, например, блоком 804а на фиг.10 или блоком 1702 на фиг.17. Затем, в блоке 1606 показано, что вычисляют коэффициент fac ослабления, причем заданное число с устанавливают большим или равным 1. В вариантах осуществления, с на фиг.16 является тем же самым заданным числом с, что и на фиг.14. Однако в других вариантах осуществления, с на фиг.16 может быть установлено отлично от с на фиг.14. Кроме того, с на фиг.16, которое прямо влияет на коэффициент ослабления, также зависит от битовой скорости, так что большее заданное число с устанавливают для более высокой битовой скорости, подлежащей обеспечению каскадом 806 блока квантования/кодера, показанным на фиг.8.
CELP
Фиг.17 показывает предпочтительную реализацию, подобную тому, что показано на фиг.10 в блоках 804a и 804b, т.е. показывает, что формирование с использованием информации о коэффициентах усиления нижнего диапазона, применяемой к спектральным значениям выше граничной частоты, такой как f, выполняют для получения сформированных спектральных значений выше граничной частоты и, кроме того, на следующем этапе 1704, коэффициент fac ослабления, вычисляемый блоком 1606 на фиг.16, применяют в блоке 1704 фиг.17. Таким образом, фиг.17 и фиг.10 показывают ситуацию, в которой блок формирования выполнен с возможностью формирования спектральных значений в детектируемой спектральной области на основе первой операции взвешивания с использованием части информации формирования для нижнего частотного диапазона и второй последующей операции взвешивания с использованием информации ослабления, т.е. иллюстративного коэффициента fac ослабления.
В других вариантах осуществления, однако, порядок этапов на фиг.17 изменяют на обратный, так что первая операция взвешивания имеет место с использованием информации ослабления, и вторая последующая операция взвешивания имеет место с использованием по меньшей мере части информации формирования для нижнего частотного диапазона. Или, в качестве альтернативы, формирование выполняют с использованием единственной операции взвешивания с использованием объединенной информации взвешивания, зависящей от информации ослабления и получаемой на основании нее, с одной стороны, и по меньшей мере части информации формирования для нижнего частотного диапазона, с другой стороны.
Как показано на фиг.17, информацию дополнительного ослабления применяют ко всем спектральным значениям в детектируемой спектральной области пиков. В качестве альтернативы, коэффициент ослабления применяют только, например, к наивысшему спектральному значению или группе наивысших спектральных значений, причем количество элементов в группе может изменяться, например, от 2 до 10. Кроме того, варианты осуществления также применяют коэффициент ослабления ко всем спектральным значениям в верхнем частотном диапазоне, для которых спектральная область пиков была детектирована детектором для временного кадра аудиосигнала. Таким образом, в этом варианте осуществления, один и тот же коэффициент ослабления применяют ко всему верхнему частотному диапазону, когда только единственное было определено в качестве спектральной области пиков.
Если для какого-либо кадра не были детектированы никакие спектральные области пиков, то нижний частотный диапазон и верхний частотный диапазон формируется блоком формирования без какого-либо дополнительного ослабления. Таким образом, выполняют переключение с одного временного кадра на другой временной кадр, причем, в зависимости от реализации, предпочтительным является некоторое сглаживание информации ослабления.
Предпочтительно, чтобы каскад блока квантования и кодера содержал процессор скоростного цикла, показанный на фиг.15а и фиг.15b. В одном варианте осуществления, каскад 806 блока квантования и кодера содержит блок 1502 взвешивания глобального коэффициента усиления, блок 1504 квантования и энтропийный кодер 1506, такой как арифметический кодер или кодер Хаффмана. Кроме того, энтропийный кодер 1506 обеспечивает, для некоторого набора квантованных значений для временного кадра, оцененную или измеренную битовую скорость для контроллера 1508.
Контроллер 1508 выполнен с возможностью приема критерия завершения цикла, с одной стороны, и/или заданной информации о битовой скорости, с другой стороны. Как только контроллер 1508 определяет, что заданная битовая скорость не получена, и/или критерий завершения цикла не выполнен, контроллер обеспечивает настроенный глобальный коэффициент усиления для блока 1502 взвешивания глобального коэффициента усиления. Затем блок взвешивания глобального коэффициента усиления применяет настроенный глобальный коэффициент усиления к сформированным и ослабленным спектральным линиям временного кадра. Взвешенный выходной сигнал глобального коэффициента усиления блока 1502 обеспечивают для блока 1504 квантования, и квантованный результат обеспечивают для энтропийного кодера 1506, который еще раз определяет оцененную или измеренную битовую скорость для данных, взвешенных с использованием настроенного глобального коэффициента усиления. В случае выполнения критерия завершения и/или реализации заданной битовой скорости, кодированный аудиосигнал выводят у выходной линии 814. Если, однако, заданная битовая скорость не получена или критерий завершения не выполнен, то тогда цикл начинают снова. Это показано более подробно на фиг.15b.
Если контроллер 1508 определяет, что битовая скорость является слишком высокой, как показано в блоке 1510, то тогда глобальный коэффициент усиления увеличивают, как показано в блоке 1512. Таким образом, все сформированные и ослабленные спектральные линии становятся меньшими, поскольку их делят на увеличенный глобальный коэффициент усиления, и блок квантования затем квантует меньшие спектральные значения таким образом, что энтропийный кодер обеспечивает в результате меньшее число требуемых битов для этого временного кадра. Таким образом, процедуры взвешивания, квантования и кодирования выполняют с использованием настроенного глобального коэффициента усиления, как показано в блоке 1514 на фиг.15b, и, затем, еще раз определяют, является ли битовая скорость слишком высокой. Если битовая скорость все еще является слишком высокой, то тогда еще раз выполняют блоки 1512 и 1514. Если, однако, определяют, что битовая скорость не является слишком высокой, то управление переходит к этапу 1516, который указывает, выполнен ли критерий завершения. Когда критерий завершения выполнен, скоростной цикл останавливают и конечный глобальный коэффициент усиления дополнительно вводят в кодированный сигнал через выходной интерфейс, такой как выходной интерфейс 1014 фиг.10.
Если, однако, определяют, что критерий завершения не выполнен, то тогда глобальный коэффициент усиления уменьшают, как показано в блоке 1518, так что, в конце, используют разрешенную максимальную битовую скорость. Это обеспечивает то, что временные кадры, которые легко закодировать, кодируют с более высокой точностью, т.е. с меньшими потерями. Таким образом, для таких примеров, глобальный коэффициент усиления уменьшают, как показано в блоке 1518, и выполняют этап 1514 с использованием уменьшенного глобального коэффициента усиления, и выполняют этап 1510, чтобы определить, является ли результирующая битовая скорость слишком высокой или нет.
Естественно, при необходимости может быть установлена конкретная реализация в отношении инкремента увеличения или уменьшения глобального коэффициента усиления. Кроме того, контроллер 1508 может быть реализован таким образом, чтобы он имел либо блоки 1510, 1512 и 1514, либо блоки 1510, 1516, 1518 и 1514. Таким образом, в зависимости от реализации, а также в зависимости от начального значения глобального коэффициента усиления, процедура может быть такой, чтобы она начиналась с очень высокого глобального коэффициента усиления и продолжалась до тех пор, пока не будет найден самый низкий глобальный коэффициент усиления, который все еще удовлетворяет требованиям по битовой скорости. С другой стороны, процедура может выполняться таким образом, чтобы она начиналась с довольно низкого глобального коэффициента усиления, и глобальный коэффициент усиления увеличивался до тех пор, пока не будет получена допустимая битовая скорость. Кроме того, как показано на фиг.15b, может быть также применена даже комбинация обеих процедур.
Фиг.10 показывает встраивание изобретательского аудиокодера, состоящего из блоков 802, 804a, 804b и 806 в переключаемую систему кодера временной области/ частотной области.
Конкретно, аудиокодер содержит общий процессор. Общий процессор состоит из ACELP/TCX-контроллера 1004 и ограничителя диапазона, такого как устройство 1006 повторной выборки, и LPC-анализатора 808. Это показано штриховыми рамками, указанными позицией 1002.
Кроме того, ограничитель диапазона подает сигнал на LPC-анализатор, который уже был описан в отношении фиг.8. Затем информация формирования LPC, генерируемая LPC-анализатором 808, передается к CELP-кодеру 1008, и выходной сигнал CELP-кодера 1008 вводится в выходной интерфейс 1014, который генерирует конечный кодированный сигнал 1020. Кроме того, ветвь кодирования временной области, состоящая из кодера 1008, дополнительно содержит кодер 1010 расширения ширины полосы временной области, который обеспечивает информацию и, обычно, параметрическую информацию, такую как информация об огибающей спектра, по меньшей мере для верхнего диапазона полнодиапазонного аудиосигнала, вводимого на входе 1001. Предпочтительно, верхний диапазон, обрабатываемый кодером 1010 расширения ширины полосы временной области, является диапазоном, начинающимся с граничной частоты, которая также используется ограничителем 1006 диапазона. Таким образом, ограничитель диапазона выполняет низкочастотную фильтрацию для получения нижнего диапазона, и верхний диапазон, отфильтрованный низкочастотным ограничителем 1006 диапазона, обрабатывается кодером 1010 расширения ширины полосы временной области.
С другой стороны, ветвь кодирования спектральной области или TCX содержит спектрально-временной преобразователь 1012 и, иллюстративно, тональную маску, описанную выше, для получения обработки кодера заполнения промежутка.
Затем, результат спектрально-временного преобразователя 1012 и при необходимости дополнительную обработку тональной маски вводят в блок 804а спектрального формирования, и результат блока 804а спектрального формирования вводят в блок 804b ослабления. Блок 804b ослабления управляется детектором 802, который выполняет детектирование либо с использованием данных временной области, либо с использованием выходного сигнала блока 1012 спектрально-временного преобразователя, как показано позицией 1022. Блоки 804а и 804b вместе реализуют блок 804 формирования фиг.8, описанный выше. Результат блока 804 вводят в каскад 806 блока квантования и кодера, который управляется, в некотором варианте осуществления, заданной битовой скоростью. Кроме того, если заданные числа, применяемые детектором, также зависят от заданной битовой скорости, то тогда заданную битовую скорость также вводят в детектор 802 (не показано на фиг.10).
Таким образом, кодированный сигнал 1020 принимает данные от каскада блока квантования и кодера, контрольную информацию от контроллера 1004, информацию от CELP-кодера 1008 и информацию от кодера 1010 расширения ширины полосы временной области.
Далее предпочтительные варианты осуществления настоящего изобретения будут описаны более подробно.
CELP
CELP
CELP
Возможность, которая обеспечивает взаимную совместимость и обратную совместимость с существующими реализациями, состоит в выполнении предварительной обработки на стороне кодера. Алгоритм, объясняемый ниже, анализирует MDCT-спектр. В случае, когда присутствуют значительные компоненты сигнала ниже f и найдены высокие пики выше f, которые потенциально могут нарушить кодирование полного спектра в скоростном цикле, эти пики выше f ослабляют. Хотя ослабление не может проходить в обратном направлении на стороне декодера, результирующий декодированный сигнал является значительно более приятным для восприятия, чем ранее, когда большие части спектра были полностью обнулены.
CELP
Ослабление уменьшает фокус скоростного цикла на пиках выше f и обеспечивает то, что значительные низкочастотные MDCT-коэффициенты сохраняются после скоростного цикла.
Нижеследующий алгоритм описывает предварительную обработку на стороне кодера:
1) Детектирование контента нижнего диапазона (например, 1102):
CELP
Детектирование контента нижнего диапазона анализирует, присутствуют ли значительные участки сигнала нижнего диапазона. Для этого, ищут по MDCT-спектру максимальную амплитуду MDCT-спектра ниже и выше f перед применением обратных коэффициентов усиления для формирования LPC. Процедура поиска возвращает следующие значения:
CELP
а) max_low_pre: максимальный MDCT-коэффициент ниже f, оцениваемый по спектру абсолютных значений перед применением обратных коэффициентов усиления для формирования LPC
CELP
b) max_high_pre: максимальный MDCT-коэффициент выше f, оцениваемый по спектру абсолютных значений перед применением обратных коэффициентов усиления для формирования LPC
Для решения, оценивают следующее условие:
Условие 1: c1 * max_low_pre>max_high_pre
CELP
Если Условие 1 является истинным, то допускается значительное количество контента нижнего диапазона, и предварительную обработку продолжают; если Условие 1 является ложным, то предварительную обработку прекращают. Это обеспечивает то, что никакие повреждающие воздействия не применяются к сигналам только верхнего диапазона, например, синусоидальным качаниям частоты выше f.
Псевдокод:
max_low_pre=0;
TCX
(CELP)
for(i=0; i<L; i++)
{
M
tmp=fabs(X(i));
if(tmp>max_low_pre)
{
max_low_pre=tmp;
}
}
max_high_pre=0;
TCX
TCX
(BW)
(CELP)
for(i=0; i<L - L; i++)
{
M
TCX
(CELP)
tmp=fabs(X(L+i));
if(tmp>max_high_pre)
{
max_high_pre=tmp;
}
}
1
if(c * max_low_pre>max_high_pre)
{
/* продолжить предварительную обработку */
…
}
где
M
X является MDCT-спектром перед применением обратных коэффициентов усиления для формирования LPC,
TCX
CELP
(CELP)
L является числом MDCT-коэффициентов вплоть до f,
TCX
(BW)
L является числом MDCT-коэффициентов для полного MDCT-спектра.
1
В иллюстративной реализации с устанавливают равным 16, и fabs возвращает абсолютное значение.
2) Оценивание меры расстояния до пиков (например, 1104):
CELP
CELP
CELP
Мера расстояния до пиков анализирует влияние спектральных пиков выше f на арифметический кодер. Таким образом, максимальную амплитуду MDCT-спектра ниже и выше f ищут по MDCT-спектру после применения обратных коэффициентов усиления для формирования LPC, т.е. в области, где применяют также арифметический кодер. Дополнительно к максимальной амплитуде также оценивают расстояние от f. Процедура поиска возвращает следующие значения:
CELP
a) max_low: максимальный MDCT-коэффициент ниже f, оцениваемый по спектру абсолютных значений после применения обратных коэффициентов усиления для формирования LPC
CELP
b) dist_low: расстояние до max_low от f
CELP
c) max_high: максимальный MDCT-коэффициент выше f, оцениваемый по спектру абсолютных значений после применения обратных коэффициентов усиления для формирования LPC
CELP
d) dist_high: расстояние до max_high от f
Для решения, оценивают следующее условие:
2
Условие 2: c * dist_high * max_high>dist_low * max_low
Если Условие 2 является истинным, то допускается значительная нагрузка для арифметического кодера, вследствие либо очень высокого спектрального пика, либо высокой частоты этого пика. Высокий пик будет преобладать в процессе кодирования в Скоростном цикле, высокая частота будет штрафовать арифметический кодер, поскольку арифметический кодер всегда проходит от низкой до высокой частоты, т.е. более высокие частоты являются неэффективными для кодирования. Если Условие 2 является истинным, то предварительную обработку продолжают. Если Условие 2 является ложным, то предварительную обработку прекращают.
max_low=0;
dist_low=0;
TCX
(CELP)
for(i=0; i<L; i++)
{
TCX
(CELP)
tmp=fabs( (L -1 - i));
if(tmp>max_low)
{
max_low=tmp;
dist_low=i;
}
}
max_high=0;
dist_high=0;
TCX
TCX
(BW)
(CELP)
for(i=0; i<L - L; i++)
{
TCX
(CELP)
tmp=fabs( (L+i));
if(tmp>max_high)
{
max_high=tmp;
dist_high=i;
}
}
2
if(c * dist_high * max_high>dist_low * max_low)
{
/* продолжить предварительную обработку */
…
}
где
является MDCT-спектром после применения обратных коэффициентов усиления для формирования LPC,
TCX
CELP
(CELP)
L является числом MDCT-коэффициентов вплоть до f,
TCX
(BW)
L является числом MDCT-коэффициентов для полного MDCT-спектра
2
В иллюстративной реализации с устанавливают равным 4.
3) Сравнение амплитуд пиков (например, 1106):
CELP
CELP
low
Наконец, сравнивают амплитуды пиков в психо-акустически подобных спектральных областях. Таким образом, максимальную амплитуду MDCT-спектра ниже и выше f ищут по MDCT-спектру после применения обратных коэффициентов усиления для формирования LPC. Максимальную амплитуду MDCT-спектра ниже f не ищут для полного спектра, а ищут, начиная только с f>0 Гц. Это имеет место для исключения самых низких частот, которые являются психо-акустически наиболее важными и обычно имеют наивысшую амплитуду после применения обратных коэффициентов усиления для формирования LPC, а также для сравнения только компонентов с подобной психо-акустической важностью. Процедура поиска возвращает следующие значения:
CELP
low
a) max_low2: максимальный MDCT-коэффициент ниже f, оцениваемый по спектру абсолютных значений после применения обратных коэффициентов усиления для формирования LPC, начиная с f
CELP
b) max_high: максимальный MDCT-коэффициент выше f, оцениваемый по спектру абсолютных значений после применения обратных коэффициентов усиления для формирования LPC
Для решения, оценивают следующее условие:
3
Условие 3: max_high>c * max_low2
CELP
CELP
3
Если условие 3 является истинным, то допускаются спектральные коэффициенты выше f, которые имеют значительно более высокие амплитуды, чем спектральные коэффициенты только ниже f, и которые считаются затратными для кодирования. Постоянная с определяет максимальный коэффициент усиления, который является настроечным параметром. Если Условие 2 является истинным, то предварительную обработку продолжают.Если Условие 2 является ложным, то предварительную обработку прекращают.
Псевдокод:
max_low2=0;
TCX
(CELP)
for(i=Llow; i<L; i++)
{
tmp=fabs( (i));
if(tmp>max_low2)
{
max_low2=tmp;
}
}
max_high=0;
TCX
TCX
(BW)
(CELP)
for(i=0; i<L - L; i++)
{
TCX
(CELP)
tmp=fabs( (L+i));
if(tmp>max_high)
{
max_high=tmp;
}
}
3
if(max_high>c * max_low2)
{
/* продолжить предварительную обработку */
…
}
где
low
low
L является смещением, соответствующим f
является MDCT-спектром после применения обратных коэффициентов усиления для формирования LPC,
TCX
CELP
(CELP)
L является числом MDCT-коэффициентов вплоть до f,
TCX
(BW)
L является числом MDCT-коэффициентов для полного MDCT-спектра
low
TCX
3
(CELP)
В иллюстративной реализации, f устанавливают равным L/2. В иллюстративной реализации, c устанавливают равным 1,5 для низких битовых скоростей и устанавливают равным 3,0 для высоких битовых скоростей.
CELP
4) Ослабление высоких пиков выше f (например, фиг.16 и 17):
CELP
3
Если будет обнаружено, что условия 1-3 являются истинными, то применяют ослабление пиков выше f. Ослабление обеспечивает максимальный коэффициент c усиления, сравнимый с психо-акустически подобной спектральной областью. Коэффициент ослабления вычисляют следующим образом:
3
коэффициент ослабления=c * max_low2/max_high
CELP
Коэффициент ослабления затем применяют ко всем MDCT-коэффициентам выше f.
Псевдокод:
1
if((c * max_low_pre>max_high_pre) &&
2
(c * dist_high * max_high>dist_low * max_low) &&
3
(max_high>c * max_low2)
)
{
3
fac=c * max_low2/max_high;
TCX
TCX
(CELP)
(BW)
for(i=L; i<L; i++)
{
(i)=(i) * fac;
}
}
где
является MDCT-спектром после применения обратных коэффициентов усиления для формирования LPC,
TCX
CELP
(CELP)
L является числом MDCT-коэффициентов вплоть до f,
TCX
(BW)
L является числом MDCT-коэффициентов для полного MDCT-спектра
CELP
Предварительная обработка на стороне кодера значительно уменьшает нагрузку для цикла кодирования при сохранении, все же, релевантных спектральных коэффициентов выше f.
1
2
3
Фиг.7 показывает MDCT-спектр критического кадра после применения обратных коэффициентов усиления для формирования LPC и описанной выше предварительной обработки на стороне кодера. В зависимости от числовых значений, выбираемых для c, c и c, результирующий спектр, который затем подается в скоростной цикл, должен выглядеть, как указано выше. Он значительно уменьшен, но все же, вероятно, сохранится для скоростного цикла и не будет потреблять все доступные биты.
Хотя некоторые аспекты были описаны в контексте устройства, ясно, что эти аспекты также представляют собой описание соответствующего способа, причем блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа, также представляют собой описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все этапы способа могут быть выполнены аппаратно-реализуемым устройством (или с его использованием), таким как, например, микропроцессор, программируемый компьютер или электронная схема. В некоторых вариантах осуществления, один или несколько наиболее важных этапов способа могут быть выполнены таким устройством.
Изобретательский кодированный аудиосигнал может храниться на цифровом носителе данных или может передаваться в среде передачи данных, такой как беспроводная среда передачи данных или проводная среда передачи данных, такая как сеть Интернет.
В зависимости от некоторых требований к реализации, варианты осуществления настоящего изобретения могут быть реализованы в аппаратном или программном средстве. Реализация может быть выполнена с использованием энергонезависимого носителя данных или цифрового носителя данных, например, гибкого диска, DVD, Blu-Ray, CD, ROM, PROM, EPROM, EEPROM или флэш-памяти, на котором хранятся электронным способом считываемые управляющие сигналы и который взаимодействует (или способен взаимодействовать) с программируемой компьютерной системой таким образом, чтобы выполнялся соответствующий способ. Таким образом, цифровой носитель данных может быть компьютерно-читаемым.
Некоторые варианты осуществления согласно настоящему изобретению содержат носитель данных, имеющий электронным способом считываемые управляющие сигналы, которые способны взаимодействовать с программируемой компьютерной системой таким образом, чтобы выполнялся один из способов, описанных здесь.
В общем, варианты осуществления настоящего изобретения могут быть реализованы в виде компьютерного программного продукта с программным кодом, причем программный код выполнен с возможностью выполнения одного из способов, когда компьютерный программный продукт выполняется на компьютере. Программный код может храниться, например, на машиночитаемом носителе.
Другие варианты осуществления содержат компьютерную программу для выполнения одного из способов, описанных здесь, хранимую на машиночитаемом носителе.
Другими словами, одним вариантом осуществления изобретательского способа является, таким образом, компьютерная программа, имеющая программный код для выполнения одного из способов, описанных здесь, когда компьютерная программа выполняется на компьютере.
Дополнительным вариантом осуществления изобретательского способа является, таким образом, носитель данных (или цифровой носитель данных, или компьютерно-читаемый носитель данных), содержащий записанную на нем компьютерную программу для выполнения одного из способов, описанных здесь. Носитель данных, цифровой носитель данных или записываемый носитель являются обычно материальными и/или энергонезависимыми.
Дополнительным вариантом осуществления изобретательского способа является, таким образом, поток данных или последовательность сигналов, представляющие компьютерную программу для выполнения одного из способов, описанных здесь. Упомянутые поток данных или последовательность сигналов могут быть, например, выполнены с возможностью быть переданными через соединение для передачи данных, например, через сеть Интернет.
Дополнительный вариант осуществления содержит средство обработки, например, компьютер, или программируемое логическое устройство, выполненное с возможностью или пригодное для выполнения одного из способов, описанных здесь.
Дополнительный вариант осуществления содержит компьютер, имеющий установленную на нем компьютерную программу для выполнения одного из способов, описанных здесь.
Дополнительный вариант осуществления согласно настоящему изобретению содержит устройство или систему, выполненную с возможностью передачи (например, электронным или оптическим способом) компьютерной программы для выполнения одного из способов, описанных здесь, к приемнику. Приемник может быть, например, компьютером, мобильным устройством, устройством памяти и т.п. Упомянутые устройство или система могут, например, содержать файловый сервер для передачи компьютерной программы к приемнику.
В некоторых вариантах осуществления, программируемое логическое устройство (например, матрица программируемых логических вентилей) может быть использовано для выполнения некоторых или всех функциональностей способов, описанных здесь. В некоторых вариантах осуществления, матрица программируемых логических вентилей может взаимодействовать с микропроцессором для выполнения одного из способов, описанных здесь. В общем, способы предпочтительно выполняются любым аппаратно-реализуемым устройством.
Устройство, описанное здесь, может быть реализовано с использованием аппаратно-реализуемого устройства или с использованием компьютера или с использованием комбинации аппаратно-реализуемого устройства и компьютера.
Устройство, описанное здесь, или любые компоненты устройства, описанного здесь, могут быть реализованы по меньшей мере частично в аппаратном и/или программном средстве.
Способы, описанные здесь, могут быть выполнены с использованием аппаратно-реализуемого устройства или с использованием компьютера или с использованием комбинации аппаратно-реализуемого устройства и компьютера.
Способы, описанные здесь, или любые компоненты устройства, описанного здесь, могут быть реализованы по меньшей мере частично аппаратным и/или программным средством.
Описанные выше варианты осуществления только иллюстрируют принципы настоящего изобретения. Следует понимать, что модификации и изменения систем и деталей, описанных здесь, будут очевидны специалистам в данной области техники. Таким образом, предполагается, что настоящее изобретение ограничено только объемом нижеследующей формулы изобретения, а не конкретными деталями, представленными здесь в описании и объяснении вариантов осуществления.
В приведенном выше описании можно увидеть, что различные признаки сгруппированы вместе в вариантах осуществления с целью упорядочения раскрытия. Этот способ раскрытия не следует интерпретировать как отражающий идею, состоящую в том, что заявленные варианты осуществления требуют большего числа признаков, чем число признаков, которые явным образом приведены в каждом пункте формулы изобретения. Напротив, нижеследующая формула изобретения отражает то, что объект изобретения может находиться в меньшем числе признаков, а не во всех признаках одного раскрытого варианта осуществления. Таким образом, нижеследующая формула изобретения, тем самым, встроена в Подробное Описание, причем каждый пункт формулы изобретения может быть действительным сам по себе в качестве отдельного варианта осуществления. В то время как каждый пункт формулы изобретения может быть действительным сам по себе в качестве отдельного варианта осуществления, следует отметить, что хотя зависимый пункт формулы изобретения может относиться в формуле изобретения к конкретной комбинации с одним или несколькими другими пунктами формулы изобретения, другие варианты осуществления могут также включать в себя комбинацию зависимого пункта формулы изобретения с объектом каждого другого зависимого пункта формулы изобретения или комбинацию каждого признака с другими зависимыми или независимыми пунктами формулы изобретения. Такие комбинации предлагаются здесь, если не указано, что конкретная комбинация не предполагается. Кроме того, предполагается включение также признаков некоторого пункта формулы изобретения в любой другой независимый пункт формулы изобретения, даже если этот пункт формулы изобретения не является прямо зависящим от данного независимого пункта формулы изобретения.
Следует дополнительно отметить, что способы, раскрытые в описании изобретения или в формуле изобретения могут быть реализованы устройством, имеющим средство для выполнения каждого из соответствующих этапов этих способов.
Кроме того, в некоторых вариантах осуществления единственный этап может включать в себя или может быть разбит на множественные подэтапы. Такие подэтапы могут быть включены и могут являться частью раскрытия этого единственного этапа, если они не исключены явным образом.
СПИСОК ЛИТЕРАТУРЫ
[1] 3GPP TS 26.445 - Кодек для улучшенных служб голосовой связи (EVS); подробное алгоритмическое описание
ПРИЛОЖЕНИЕ
Ниже приведены выдержки из вышеупомянутой редакции 13 стандарта (3GPP TS 26.445 - Кодек для улучшенных служб голосовой связи (EVS); подробное алгоритмическое описание). Раздел 5.3.3.2.3 описывает предпочтительный вариант осуществления блока формирования, раздел 5.3.3.2.7 описывает предпочтительный вариант осуществления блока квантования из каскада блока квантования и кодера, и раздел 5.3.3.2.8 описывает арифметический кодер в каскаде блока квантования и кодера, причем предпочтительный скоростной цикл для постоянной битовой скорости и глобального коэффициента усиления описан в разделе 5.3.2.8.1.2. IGF-признаки предпочтительного варианта осуществления описаны в разделе 5.3.3.2.11, где конкретная ссылка делается на вычисление тональной маски IGF раздела 5.3.3.2.11.5.1. Другие выдержки упомянутого стандарта включены в настоящий документ по ссылке.
5.3.3.2.3 Формирование LPC в MDCT-области
5.3.3.2.3.1 Общий принцип
inp
CELP
Формирование LPC выполняют в MDCT-области посредством применения коэффициентов усиления, вычисляемых на основании взвешенных квантованных коэффициентов LP-фильтра, к MDCT-спектру. Входная частота выборки, sr, на которой основано MDCT-преобразование, может быть большей, чем частота выборки CELP, sr, для которой вычисляют LP-коэффициенты. Таким образом, коэффициенты усиления для формирования LPC могут быть вычислены только для части MDCT-спектра, соответствующей частотному диапазону CELP. Для остальной части спектра (при наличии) используют коэффициент усиления формирования наивысшего частотного диапазона.
5.3.3.2.3.2 Вычисление коэффициентов усиления для формирования LPC
Для вычисления 64 коэффициентов усиления для формирования LPC взвешенные коэффициенты  LP-фильтра сначала преобразуют в частотную область с использованием отдельно размещаемого в стеке DFT длиной 128:
, (1)
LPS
LPC
Коэффициенты g усиления для формирования LPC вычисляют затем как обратные абсолютные значения X:
, (2)
5.3.3.2.3.3 Применение коэффициентов усиления для формирования LPC к MDCT-спектру
М
TCX
(CELP)
MDCT-коэффициенты Х, соответствующие частотному диапазону CELP, группируют в 64 поддиапазона. Коэффициенты каждого поддиапазона умножают на обратную величину соответствующего коэффициента усиления для формирования LPC для получения сформированного спектра . Если число MDCT-бинов, соответствующих частотному диапазону CELP, L, не является кратным 64, то ширина поддиапазонов изменяется на один бин, что определяется следующим псевдокодом:
Остальные MDCT-коэффициенты выше частотного диапазона CELP (при наличии) умножают на обратную величину последнего коэффициента усиления для формирования LPC:
(3)
5.3.3.2.4 Адаптивные низкочастотные предыскажения
5.3.3.2.4.1 Общий принцип
Цель процессов адаптивных низкочастотных предыскажений и коррекции предыскажений (adaptive low-frequency emphasis and de-emphasis - ALFE) состоит в улучшении субъективной эффективности TCX-кодека частотной области на низких частотах. Для этой цели, низкочастотные спектральные линии MDCT усиливают перед квантованием в кодере, в результате чего увеличивается их SNR квантования, и это усиление отменяют перед обратным MDCT-процессом во внутреннем или внешнем декодерах для предотвращения артефактов усиления.
Существуют два разных ALFE-алгоритма, которые выбирают, согласованно, в кодере и декодере на основании выбора алгоритма арифметического кодирования и битовой скорости. ALFE-алгоритм 1 используют при 9,6 кбит/с (арифметический кодер на основе огибающей) и при 48 кбит/с и выше (арифметический кодер на основе контекста). ALFE-алгоритм 2 используют от 13,2 вплоть до 32 кбит/с включительно. В кодере, ALFE работает на спектральных линиях в векторе x[] прямо перед (алгоритм 1) или после (алгоритм 2) каждого MDCT-квантования, которое выполняют много раз внутри скоростного цикла в случае арифметического кодера на основе контекста (см. подраздел 5.3.3.2.8.1).
5.3.3.2.4.2 Алгоритм 1 адаптивных предыскажений
ALFE-алгоритм 1 работает на основе коэффициентов усиления частотного диапазона LPC, lpcGains[]. Сначала, находят минимальный и максимальный из первых девяти коэффициентов усиления - низкочастотных (low-frequency - LF) коэффициентов усиления, с использованием операций сравнения, выполняемых внутри цикла по индексам 0-8 коэффициентов усиления.
0,25
Затем, если соотношение между минимумом и максимумом превышает порог, равный 1/32, то постепенное усиление самых низких линий в x выполняют таким образом, чтобы первая линия (DC) усиливалась на (32 min/max), и 33-я линия не усиливалась:
tmp=32 * min
if ((max<tmp) && (max>0))
{
fac=tmp=pow(tmp/max, 1/128)
for (i=31; i>=0; i--)
{ /* постепенное усиление самых нижних 32 линий */
x[i] *=fac
fac *=tmp
}
}
5.3.3.2.4.3 Алгоритм 2 адаптивных предыскажений
ALFE-алгоритм 2, в отличие от алгоритма 1, не работает на основе передаваемых коэффициентов усиления LPC, но обеспечивает сигналы посредством модификаций для квантованных низкочастотных (LF) MDCT-линий. Процедура подразделяется на пять последовательных этапов:
TCX
TCX
(BW)
- Этап 1: сначала найти первый максимум амплитуды с индексом i_max в нижней спектральной четверти (k=0 (L/4) с использованием invGain=2/g и модифицировать этот максимум: xq[i_max]+=(xq[i_max]<0) ? -2: 2
TCX
- Этап 2: затем сжать диапазон значений всех x[i] вплоть до i_max посредством повторного квантования всех линий с k=0 (i_max-1, как в подразделе, описывающем квантование, но с использованием invGain вместо g в качестве глобального коэффициента усиления.
TCX
TCX
(BW)
- Этап 3: найти первый максимум амплитуды ниже i_max (k=0 (L/4), который вдвое ниже, если i_max>-1, с использованием invGain=4/g и модифицировать этот максимум: xq[i_max]+=(xq[i_max]<0) ? -2: 2
- Этап 4: повторно сжать и квантовать все x[i] вплоть до полувысоты i_max, найденной на предыдущем этапе, как на этапе 2
TCX
TCX
- Этап 5: закончить и всегда сжимать две линии с последним найденным i_max, т.е. с k=i_max+1, i_max+2, снова с использованием invGain=2/g, если начальный i_max, найденный на этапе 1, больше чем -1, или с использованием invGain=4/g в иных случаях. Все i_max инициализируют со значением -1. Более подробно см. AdaptLowFreqEmph() в tcx_utils_enc.c.
5.3.3.2.5 Мера шума спектра в энергетическом спектре
P
M
S
Для управления квантованием в процессе TCX-кодирования, меру шума между 0 (тональная) и 1 (подобная шуму) определяют для каждой спектральной линии MDCT выше заданной частоты на основании текущего энергетического спектра преобразования. Энергетический спектр X(k) вычисляют на основании MDCT-коэффициентов X(k) и MDST-коэффициентов X(k) на одном и том же сегменте сигнала временной области и с использованием одной и той же операции взвешивания:
P
M
S
TCX
2
2
(BW)
X(k)=X(k)+X(k), для k=0 (L -1, (4)
TCX
start
(BW)
Каждую меру шума в noiseFlags(k) вычисляют затем следующим образом. Сначала, если длина преобразования изменена (например, после переходного преобразования TCX по ACELP-кадру), или если предыдущий кадр не использовал кодирование TCX20 (например, в случае, когда использовалась меньшая длина преобразования в последнем кадре), то все noiseFlags(k) вплоть до L -1 сбрасываются на ноль. Начальную линию k меры шума инициализируют согласно следующей таблице 1.
start
Таблица 1: таблица инициализации k в мере шума
Битовая скорость (кбит/с)
9,6
13,2
16,4
24,4
32
48
96
128
bw=NB, WB
66
128
200
320
320
320
320
320
bw=SWB,FB
44
96
160
320
320
256
640
640
start
start
TCX
start
(BW)
Для переходов от ACELP к TCX, k масштабируют с коэффициентом 1,25. Затем, если начальная линия k меры шума меньше чем L -6, то noiseFlags(k) около и выше k получают рекурсивно на основании текущих сумм линий энергетического спектра:
start
TCX
(BW)
для k (L-8
Кроме того, каждый раз, когда дано, что noiseFlags(k) имеет значение ноль в вышеупомянутом цикле, переменную lastTone устанавливают равной k. Верхние 7 линий обрабатывают отдельно, поскольку s(k) больше не может быть обновлено (s(k), однако, вычисляют, как указано выше):
TCX
TCX
(BW)
(BW)
для L - 7 (L-2
TCX
TCX
TCX
(BW)
(BW)
(BW)
Самую верхнюю линию с k=L-1 определяют как являющуюся подобной шуму, следовательно, noiseFlags(L-1)=1. Наконец, если вышеупомянутая переменная lastTone (которая была инициализирована со значением ноль) является большей, чем 0, то тогда noiseFlags(lastTone+1)=0. Следует отметить, что эту процедуру выполняют только в TCX20, и не выполняют в других режимах TCX (noiseFlags(k)=0 для k=0…L -1).
5.3.3.2.6 Детектор коэффициента низкочастотного пропускания
lpf
P
lpf
TCX
TCX
lpf
lpf
P
lpf
(BW)
(BW)
Коэффициент c низкочастотного пропускания определяют на основании энергетического спектра для всех битовых скоростей ниже 32,0 кбит/с.Таким образом, энергетический спектр X(k) итерационно сравнивают с порогом t для всех k=L - 1 (L/2, где t=32,0 для регулярных окон MDCT и t=64,0 для окон перехода от ACELP к MDCT. Итерации прекращают, как только будет выполнено X(k)>t.
lpf
lpf
lpf,prev
TCX
lpf,prev
lpf,prev
lpf
(CELP)
Коэффициент c низкочастотного пропускания определяется как c=0,3*c+0,7*(k+1)/L, где c является последним определенным коэффициентом низкочастотного пропускания. При запуске кодера, c устанавливают равным 1,0. Коэффициент c низкочастотного пропускания используют для определения бина остановки заполнения шумом (см. подраздел 5.3.3.2.10.2).
5.3.3.2.7 Однородный блок квантования с адаптивной мертвой зоной
TCX
TCX
Для однородного квантования MDCT-спектра  после или перед ALFE (в зависимости от применяемого алгоритма предыскажений, см. подраздел 5.3.3.2.4.1), коэффициенты сначала делят на глобальный коэффициент g усиления (см. подраздел 5.3.3.2.8.1.1), который управляет размером шага квантования. Результаты затем округляют в сторону нуля со смещением округления, которое адаптировано для каждого коэффициента на основании величины коэффициента (относительно g) и тональности (определяемой noiseFlags(k) в подразделе 5.3.3.2.5). Для высокочастотных спектральных линий с низкой тональностью и величиной, используют смещение округления, равное нулю, тогда как для всех других спектральных линий используют смещение, равное 0,375. Более конкретно, выполняют следующий алгоритм.
TCX
(BW)
Начиная с наивысшего кодированного MDCT-коэффициента с индексом k=L -1, мы устанавливаем (k)=0 и уменьшаем k на 1 до тех пор, пока не станут истинными условия noiseFlags(k)>0 и . Затем вниз от первой линии с индексом k'≥0, где это условие не удовлетворяется (что гарантировано, поскольку noiseFlags(0)=0), выполняют округление в сторону нуля со смещением округления, равным 0,375, и ограничение результирующих целых значений диапазоном от -32768 до 32767:
(8)
TCX
(BW)
причем k=0 (k'. Наконец, все квантованные коэффициенты (k) у и выше k=L устанавливают равными нулю.
5.3.3.2.8 Арифметический кодер
Квантованные спектральные коэффициенты бесшумно кодируют посредством энтропийного кодирования и, более конкретно, посредством арифметического кодирования.
Арифметическое кодирование использует вероятности с точностью 14 битов для вычисления своего кода. Алфавитное распределение вероятностей может быть получено разными путями. При низких скоростях, его получают на основании огибающей LPC, в то время как при высоких скоростях его получают на основании прошлого контекста. В обоих случаях, гармоническая модель может быть добавлена для улучшения вероятностной модели.
Нижеследующий псевдокод описывает подпрограмму арифметического кодирования, которую используют для кодирования любого символа, связанного с вероятностной моделью. Вероятностная модель представлена накопленной таблицей частот, cum_freq[]. Получение вероятностной модели описано в следующих подразделах.
/* глобальные переменные */
low
high
bits_to_follow
ar_encode(symbol, cum_freq[])
{
if (ari_first_symbol()) {
low=0;
high=65535;
bits_to_follow=0;
}
range=high-low+1;
if (symbol>0) {
high=low+((range*cum_freq[symbol-1])>>14) - 1;
}
low+=((range*cum_freq[symbol-1])>>14) - 1;
for (;;) {
if (high<32768) {
write_bit(0);
while (bits_to_follow) {
write_bit(1);
bits_to_follow--;
}
}
else if (low>=32768) {
write_bit(1)
while (bits_to_follow) {
write_bit(0);
bits_to_follow--;
}
low -=32768;
high -=32768;
}
else if ((low>=16384) && (high<49152)) {
bits_to_follow+=1;
low -=16384;
high -=16384;
}
else break;
low+=low;
high+=high+1;
}
if (ari_last_symbol()) /* flush bits */
if (low<16384) {
write_bit(0);
while (bits_to_follow>0) {
write_bit(1);
bits_to_follow--;
}
} else {
write_bit(1);
while (bits_to_follow>0) {
write_bit(0);
bits_to_follow--;
}
}
}
}
Функции-помощники ari_first_symbol() и ari_last_symbol() детектируют первый символ и последний символ генерируемого кодового слова, соответственно.
5.3.3.2.8.1 Арифметический кодер на основе контекста
5.3.3.2.8.1.1 Блок оценки глобального коэффициента усиления
TCX
Оценивание глобального коэффициента g усиления для TCX-кадра выполняют в двух итерационных этапах. Первая оценка рассматривает коэффициент усиления SNR, равный 6дБ на выборку на бит из SQ. Вторая оценка улучшает эту оценку посредством учета энтропийного кодирования.
Сначала вычисляют энергию каждого блока из 4 коэффициентов:
(9)
Поиск с делением пополам выполняют с конечным разрешением, равным 0,125 дБ:
Инициализация: установить fac=offset=12,8 и target=0,15 (target_bits - L/16)
Итерация: выполнить следующий блок операций 10 раз
1- fac=fac/2
2- offset=offset - fac
, где
Первая оценка коэффициента усиления задается тогда выражением:
5.3.3.2.8.1.2 Скоростной цикл для постоянной битовой скорости и глобального коэффициента усиления
TCX
TCX
Для установления наилучшего коэффициента g усиления в пределах ограничений used_bits≤target_bits, процесс схождения g и used_bits реализуют посредством использования следующих переменных и постоянных:
Lb
Ub
W и W обозначают веса, соответствующие нижней границе и верхней границе,
Lb
Ub
g и g обозначают коэффициенты усиления, соответствующие нижней границе и верхней границе, и
Lb
Ub
Lb_found и Ub_found обозначают флаги, указывающие на нахождение g и g, соответственно.
(и (являются переменными, причем
μ=max(1,2.3-0,0025*target_bits) и η=1/μ.
(и (являются постоянными, установленными равными 10 и 0,96.
После начального оценивания потребления битов посредством арифметического кодирования, stop устанавливают равной 0, когда target_bits является большей, чем used_bits, в то время как stop устанавливают равной used_bits, когда used_bits является большей, чем target_bits.
TCX
TCX
Lb
TCX
Lb
Если stop является большей, чем 0, что означает, что used_bits является большей, чем target_bits, то g должен быть модифицирован таким образом, чтобы он был большим, чем предыдущий g, и Lb_found устанавливают равной ИСТИНА, g устанавливают в качестве предыдущего g. W устанавливают следующим образом:
Lb
W=stop - target_bits+λ, (11)
TCX
Если Ub_found была установлена, то это означает, что used_bits была меньше чем target_bits, g обновляют как интерполированное значение между верхней границей и нижней границей.
TCX
Lb
Ub
Ub
Lb
Ub
Lb
g=(g*W+g* W)/(W+W), (12)
Иначе, что означает, что Ub_found имеет значение ЛОЖЬ, коэффициент усиления увеличивают следующим образом:
TCX
TCX
g=g*(1+μ*((stop /ν)/(target_bits -1), (13)
Ub
причем большее соотношение усиления обеспечивается, когда соотношение used_bits(=stop) и target_bits является большим, для ускорения получения g.
TCX
TCX
TCX
Ub
Если stop равна 0, что означает, что used_bits является меньшей, чем target_bits, то g должен быть меньше чем предыдущий g, и Ub_found устанавливают равной 1, Ub устанавливают равной предыдущему g, и W устанавливают следующим образом:
Ub
W=target_bits - used_bits+λ, (14)
Если Lb_found уже была установлена, то коэффициент усиления вычисляют следующим образом:
TCX
Lb
Ub
Ub
Lb
Ub
Lb
g=(g*W+g* W)/(W+W), (15)
Lb
иначе, для ускорения к коэффициенту g усиления нижнего диапазона, коэффициент усиления уменьшают следующим образом:
TCX
TCX
g=g*(1 - η*(1 - (used_bits*ν)/(target_bits)), (16)
причем большие скорости уменьшения коэффициента усиления обеспечиваются, когда соотношение used_bits и target_bits является малым.
TCX
QMDCT
После вышеупомянутой коррекции коэффициента усиления, выполняют квантование и получают оценку used_bits посредством арифметического кодирования. В результате, stop устанавливают равной 0, когда target_bits является большей, чем used_bits, и устанавливают равной used_bits, когда она является большей, чем target_bits. Если счетчик цикла является меньшим, чем 4, выполняют либо процесс установления нижней границы, либо процесс установления верхней границы, в следующем цикле в зависимости от значения stop.Если счетчик цикла равен 4, то получают конечный коэффициент g усиления и квантованную MDCT-последовательность X(k).
5.3.3.2.8.1.3 Получение и кодирование вероятностной модели
Квантованные спектральные коэффициенты Х бесшумно кодируют, начиная с коэффициента наименьшей частоты и продвигаясь к коэффициенту наивысшей частоты. Их кодируют группами из двух коэффициентов a и b, собираемых в так называемый 2-кортеж {a,b}.
Каждый 2-кортеж {a,b} разбит на три части, а именно, MSB, LSB и знак. Знак кодируют независимо от величины с использованием однородного распределения вероятностей. Величину саму дополнительно делят на две части, два наиболее значительных бита (most significant bit - MSB), и остальные наименее значительные битовые плоскости (least significant bitplane - LSB, если это применимо). 2-кортежи, для которых величина двух спектральных коэффициентов является меньшей или равной 3, кодируют прямо посредством MSB-кодирования. Иначе, сначала передают символ перехода для сигнализации любой дополнительной битовой плоскости.
Соотношения между 2-кортежем, отдельными спектральными значениями a и b 2-кортежа, наиболее значительными битовыми плоскостями m и остальными наименее значительными битовыми плоскостями r, показаны в примере на фиг.1. В этом примере три символа перехода отправляют перед фактическим значением m, что указывает на три передаваемые наименее значительные битовые плоскости.
Фиг. 1: пример кодированной пары (2-кортежа) спектральных значений a и b и их представление в виде m и r.
Вероятностную модель получают на основании прошлого контекста. Прошлый контекст преобразуют на основании 12-битового индекса и отображают с использованием справочной таблицы ari_context_lookup[] в одну из 64 доступных вероятностных моделей, хранимых в ari_cf_m[].
Прошлый контекст получают на основании двух 2-кортежей, уже закодированных в одном и том же кадре. Контекст может быть получен на основании прямого соседства или может быть обнаружен дополнительно в прошлых частотах. Отдельные контексты сохраняют для областей пиков (коэффициенты, относящиеся к гармоническим пикам) и других областей (без пиков) согласно гармонической модели. Если никакая гармоническая модель не используется, то используют только другие области (без пиков).
Обнуленные спектральные значения, находящиеся в конце спектра, не передаются. Это обеспечивают посредством передачи индекса последнего необнуленного 2-кортежа. При использовании гармонической модели, конец спектра определяют как конец спектра, состоящий из коэффициентов области пиков, после которых следуют коэффициенты другой области (без пиков), и это определение стремится увеличить число конечных нулей и, таким образом, улучшает эффективность кодирования. Число выборок для кодирования вычисляют следующим образом:
Нижеследующие данные записывают в битовый поток в следующем порядке:
1 - lastnz/2-1 кодируют на битах .
2 - энтропийно-кодированные MSB вместе с символами перехода.
3 - знаки с 1-битовыми кодовыми словами
4 - остальные биты квантования, описанные в разделе, если бюджет битов использован не полностью.
5 - LSB записывают в обратном порядке от конца буфера битового потока.
Нижеследующий псевдокод описывает, как получают контекст и как вычисляют данные битового потока для MSB, знаков и LSB. Входными аргументами являются квантованные спектральные коэффициенты X[], размер рассматриваемого спектра L, бюджет битов target_bits, параметры (pi, hi) гармонической модели, и индекс последнего необнуленного символа lastnz.
ari_context_encode(X[], L,target_bits,pi[],hi[],lastnz)
{
c[0]=c[1]=p1=p2=0;
for (k=0; k<lastnz; k+=2) {
ari_copy_states();
(a1_i,p1,idx1)=get_next_coeff(pi,hi,lastnz);
(b1_i,p2,idx2)=get_next_coeff(pi,hi,lastnz);
t=get_context(idx1,idx2,c,p1,p2);
esc_nb=lev1=0;
a=a1=abs(X[a1_i]);
b=b1=abs(X[b1_i]);
/* кодирование знака */
if(a1>0) save_bit(X[a1_i]>0?0:1);
if(b1>0) save_bit(X[b1_i]>0?0:1);
/* кодирование MSB */
while (a1>3 || b1>3) {
pki=ari_context_lookup[t+1024*esc_nb];
/* записать кодовое слово перехода */
ari_encode(17, ari_cf_m[pki]);
a1>>=1; b1>>=1; lev1++;
esc_nb=min(lev1,3);
}
pki=ari_context_lookup[t+1024*esc_nb];
ari_encode(a1+4*b1, ari_cf_m[pki]);
/* кодирование LSB */
for(lev=0;lev<lev1;lev++){
write_bit_end((a>>lev)&1);
write_bit_end((b>>lev)&1);
}
/* проверить бюджет */
if(nbbits>target_bits){
ari_restore_states();
break;
}
c=update_context(a,b,a1,b1,c,p1,p2);
}
write_sign_bits();
}
Функции-помощники ari_save_states() и ari_restore_states() используются для сохранения и восстановления состояний арифметического кодера, соответственно. Это позволяет отменить кодирование последних символов, если это нарушает бюджет битов. Кроме того, и в случае перерасхода бюджета битов, это позволяет заполнить остальные биты нулями до достижения конца бюджета битов или до обработки выборок lastnz в спектре.
Другие функции-помощники описаны в следующих подразделах.
5.3.3.2.8.1.4 Коэффициент Get next
(a,p,idx)=get_next_coeff(pi, hi, lastnz)
If ((ii[0] (lastnz - min(#pi, lastnz)) or
(ii[1]<min(#pi, lastnz) and pi[ii[1]]<hi[ii[0]])) then
{
p=1
idx=ii[1]
a=pi[ii[1]]
}
else
{
p=0
idx=ii[0]+#pi
a=hi[ii[0]]
}
ii[p]=ii[p]+1
Счетчики ii[0] и ii[1] инициализируют со значением 0 в начале ari_context_encode() (и ari_context_decode() в декодере).
5.3.3.2.8.1.5 Обновление контекста
Контекст обновляют, как описано в нижеследующем псевдокоде. Он состоит из конкатенации двух 4-битовых элементов контекста.
5.3.3.2.8.1.6 Получение контекста
Конечный контекст улучшают двумя путями:
Контекст t является индексом от 0 до 1023.
5.3.3.2.8.1.7 Оценивание потребления битов
Оценивание потребления битов арифметического кодера на основе контекста необходимо для оптимизации скоростного цикла квантования. Упомянутое оценивание выполняют посредством вычисления потребления битов без вызова арифметического кодера. Генерируемые биты могут быть точно оценены следующим образом:
cum_freq=arith_cf_m[pki]+m
proba*=cum_freq[0]- cum_freq[1]
nlz=norm_l(proba) /*получить число начальных нулей */
nbits=nlz
proba>>=14
где proba является целочисленной переменной, инициализируемой со значением 16384, и m является символом MSB.
5.3.3.2.8.1.8 Гармоническая модель
Как для арифметического кодирования на основе контекста, так и для арифметического кодирования на основе огибающей, гармоническую модель используют для более эффективного кодирования кадров с гармоническим контентом. Эта модель блокируется, если применяются любые из следующих условий:
- Битовая скорость не является ни одной из скоростей 9,6, 13,2, 16,4, 24,4, 32, 48 кбит/с.
- Предыдущий кадр кодировался посредством ACELP.
- Используют арифметическое кодирование на основе огибающей, и тип кодера не является ни голосовым типом, ни обобщенным типом.
- Однобитовый флаг гармонической модели в битовом потоке установлен равным нулю.
Когда модель блокирована, интервал частотной области между гармониками является ключевым параметром и обычно анализируется и кодируется для обоих типов арифметического кодера.
5.3.3.2.8.1.8.1 Кодирование интервала между гармониками
Когда лаг и коэффициент усиления высоты тона используют для постобработки, параметр лага используют для представления интервала между гармониками в частотной области. Иначе применяют нормальное представление интервала.
5.3.3.2.8.1.8.1.1 Кодирование интервала в зависимости от лага высоты тона временной области
int
TCX
UNIT
Если целая часть d лага высоты тона во временной области является меньшей, чем размер L кадра MDCT, то интервальная единица T частотной области (между пиками гармоник, соответствующими лагу высоты тона) с 7-битовой относительной погрешностью задается следующим образом:
fr
где d обозначает дробную часть лага высоты тона во временной области, res_max обозначает максимальное число допустимых дробных значений, значениями которых являются либо 4, либо 6 в зависимости от условий.
UNIT
UNIT
Поскольку T имеет ограниченный диапазон, фактический интервал между пиками гармоник в частотной области кодируют относительно T с использованием битов, заданных в таблице 2. Среди вариантов множителей Ratio(), приведенных в таблице 3 или таблице 4, выбирают множитель, который обеспечивает наиболее пригодный интервал между гармониками коэффициентов преобразования MDCT-области.
T
Таблица 2: число битов для задания множителя в зависимости от Index
<img file="00000023.jpg" he="5" wi="11" img-content="undefined" img-format="jpg" />
<b>0</b>
<b>1</b>
<b>2</b>
<b>3</b>
<b>4</b>
<b>5</b>
<b>6</b>
<b>7</b>
<b>8</b>
<b>9</b>
<b>10</b>
<b>11</b>
<b>12</b>
<b>13</b>
<b>14</b>
<b>15</b>
NB:
5
4
4
4
4
4
4
3
3
3
3
2
2
2
2
2
WB:
5
5
5
5
5
5
4
4
4
4
4
4
4
2
2
2
MUL
T
Таблица 3: варианты множителя в порядке возрастания Index в зависимости от Index (NB)
<img file="00000024.jpg" he="5" wi="10" img-content="undefined" img-format="jpg" />
0
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
30
32
34
36
38
40
1
0,5
1
2
3
4
5
6
7
8
9
10
12
16
20
24
30
2
2
3
4
5
6
7
8
9
10
12
14
16
18
20
24
30
3
2
3
4
5
6
7
8
9
10
12
14
16
18
20
24
30
4
2
3
4
5
6
7
8
9
10
12
14
16
18
20
24
30
5
1
2
2.5
3
4
5
6
7
8
9
10
12
14
16
18
20
6
1
1,5
2
2,5
3
3,5
4
4,5
5
6
7
8
9
10
12
16
7
1
2
3
4
5
6
8
10
-
-
-
-
-
-
-
-
8
1
2
3
4
5
6
8
10
-
-
-
-
-
-
-
-
9
1
1,5
2
3
4
5
6
8
-
-
-
-
-
-
-
-
10
1
2
2,5
3
4
5
6
8
-
-
-
-
-
-
-
-
11
1
2
3
4
-
-
-
-
-
-
-
-
-
-
-
-
12
1
2
4
6
-
-
-
-
-
-
-
-
-
-
-
-
13
1
2
3
4
-
-
-
-
-
-
-
-
-
-
-
-
14
1
1.5
2
4
-
-
-
-
-
-
-
-
-
-
-
-
15
1
1.5
2
3
-
-
-
-
-
-
-
-
-
-
-
-
16
0.5
1
2
3
-
-
-
-
-
-
-
-
-
-
-
-
T
Таблица 4: варианты множителя в порядке зависимости от Index (WB)
<img file="00000025.jpg" he="5" wi="11" img-content="undefined" img-format="jpg" />
0
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
30
32
34
36
38
40
1
1
2
3
4
5
6
7
8
9
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
44
48
54
60
68
78
80
2
1,5
2
2.5
3
4
5
6
7
8
9
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
48
52
54
68
3
1
1,5
2
2,5
3
4
5
6
7
8
9
10
11
12
13
14
15
16
18
20
22
24
26
28
30
32
34
36
40
44
48
54
4
1
1,5
2
2,5
3
3,5
4
4,5
5
5,5
6
6,5
7
7,5
8
9
10
11
12
13
14
15
16
18
20
22
24
26
28
34
40
41
5
1
1,5
2
2,5
3
3,5
4
4,5
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22,5
24
25
27
28
30
35
6
0,5
1
1,5
2
2,5
3
3,5
4
4,5
5
5,5
6
7
8
9
10
7
1
2
2,5
3
4
5
6
7
8
9
10
12
15
16
18
27
8
1
1,5
2
2,5
3
3,5
4
5
6
8
10
15
18
22
24
26
9
1
1,5
2
2,5
3
3,5
4
5
6
8
10
12
13
14
18
21
10
0,5
1
1,5
2
2,5
3
4
5
6
8
9
11
12
13,5
16
20
11
0,5
1
1,5
2
2,5
3
4
5
6
7
8
10
11
12
14
20
12
0,5
1
1,5
2
2,5
3
4
4,5
6
7,5
9
10
12
14
15
18
13
0,5
1
1,25
1,5
1,75
2
2,5
3
3,5
4
4,5
5
6
8
9
14
14
0,5
1
2
4
-
-
-
-
-
-
-
-
-
-
-
-
15
1
1,5
2
4
-
-
-
-
-
-
-
-
-
-
-
-
16
1
2
3
4
-
-
-
-
-
-
-
-
-
-
-
-
5.3.3.2.8.1.8.1.2 Кодирование интервала независимо от лага высоты тона временной области
Когда лаг и коэффициент усиления высоты тона во временной области не используют, или коэффициент усиления высоты тона является меньшим или равным 0,46, используют нормальное кодирование интервала с неравным разрешением.
UNIT
Единичный интервал T спектральных пиков кодируют следующим образом:
UNIT
Res
T=index+base*2 - bias, (21)
MDCT
и фактический интервал T представляют с дробным разрешением Res следующим образом:
MDCT
UNIT
Res
T=T/2, (22)
Каждый параметр показан в таблице 5, где «малый размер» означает, что размер кадра является меньшим, чем 256 из целевых битовых скоростей, меньших или равных 150.
Таблица 5: неравное разрешение для кодирования (0≤index<256)
Res
base
bias
<img file="00000026.jpg" he="4" wi="16" img-content="undefined" img-format="jpg" />
3
6
0
<img file="00000027.jpg" he="4" wi="23" img-content="undefined" img-format="jpg" />
4
8
16
<img file="00000028.jpg" he="4" wi="25" img-content="undefined" img-format="jpg" />
3
12
80
ʺмалый размер(или <img file="00000029.jpg" he="4" wi="27" img-content="undefined" img-format="jpg" />
1
28
208
<img file="00000030.jpg" he="4" wi="27" img-content="undefined" img-format="jpg" />
0
188
224
5.3.3.2.8.1.8.2 Недействительный
5.3.3.2.8.1.8.3 Поиск интервала между гармониками
PERIOD
ABSM
В поиске наилучшего интервала между гармониками, кодер пытается найти индекс, который может максимизировать взвешенную сумму E пиковой части абсолютных MDCT-коэффициентов. E(k) обозначает сумму трех выборок абсолютного значения коэффициентов преобразования MDCT-области и выражается следующим образом:
где num_peak является максимальным числом, при котором  достигает предела выборок в частотной области.
В случае, когда интервал не основан на лаге высоты тона во временной области, для экономии вычислительных ресурсов используют иерархический поиск. Если индекс интервала является меньшим, чем 80, периодичность проверяют посредством крупного шага, равного 4. После получения наилучшего интервала, находят более мелкую периодичность вокруг наилучшего интервала от -2 до+2. Если индекс больше или равен 80, то периодичность находят для каждого индекса.
5.3.3.2.8.1.8.4 Решение гармонической модели
hm
B
При начальном оценивании, получают число используемых битов без гармонической модели, used_bits, и число используемых битов с гармонической моделью, used_bits, и индикатор Idicator потребляемых битов определяют следующим образом:
B
no_hm
hm
idicator=B - B, (25)
no_hm
B=max(stop, used_bits), (26)
hm
hm
hm
hm
B=max(stop, used_bits)+Index_ bits, (27)
hm
hm
B
hm
где Index_ bits обозначает дополнительные биты для моделирования гармонической структуры, и stop и stop указывают на потребляемые биты, когда их больше, чем целевых битов. Таким образом, чем больше Idicator, тем более предпочтительно использовать гармоническую модель. Относительную периодичность indicator определяют как нормированную сумму абсолютных значений для областей пиков сформированных MDCT-коэффициентов следующим образом:
MDCT_max
PERIOD
где T является интервалом между гармониками, при котором получают максимальное значение E. Когда оценка периодичности этого кадра является большей, чем порог, т.е.
TCX
TCX
hm
no_hm
hm
hm
no_hm
hm
no_hm
этот кадр считают подлежащим кодированию посредством гармонической модели. Сформированные MDCT-коэффициенты, деленые на коэффициент g усиления, квантуют для создания целых значений MDCT-коэффициентов, , и сжимают посредством арифметического кодирования с использованием гармонической модели. Этот процесс нуждается в итерационном процессе схождения (скоростном цикле) для получения g и  с потребляемыми битами B. В конце схождения, для подтверждения достоверности гармонической модели, дополнительно вычисляют потребляемые биты B посредством арифметического кодирования с использованием нормальной (негармонической модели) для  и сравнивают с B. Если B больше чем B, то арифметическое кодирование  возвращают к использованию нормальной модели. B - B может быть использована для остаточного квантования для дополнительных улучшений. Иначе, в арифметическом кодировании используют гармоническую модель.
no_hm
hm
no_hm
hm
Напротив, если индикатор периодичности этого кадра является меньшим или равным порогу, то квантование и арифметическое кодирование выполняют, допуская нормальную модель, для создания последовательности целых значений сформированных MDCT-коэффициентов,  с потребляемыми битами B. После схождения скоростного цикла, вычисляют потребляемые биты B посредством арифметического кодирования с использованием гармонической модели для . Если B больше чем B, то арифметическое кодирование  переключают на использование гармонической модели. Иначе, нормальную модель используют в арифметическом кодировании.
5.3.3.2.8.1.9 Использование информации о гармониках в арифметическом кодировании на основе контекста
U
Для арифметического кодирования на основе контекста, все области классифицируют в две категории. Одна является пиковой частью и состоит из 3 последовательных выборок с центром в U-ом пике (U является положительным целым вплоть до предела) пика гармоники τ, причем
, (30)
Другие выборки относятся к нормальной части или части впадины. Часть пика гармоники может быть задана интервалом между гармониками и целыми кратными этого интервала. Арифметическое кодирование использует разные контексты для области пика и области впадины.
Для легкости описания и реализации, гармоническая модель использует следующие последовательности индексов:
ip=(pi, hi), конкатенация pi и hi, (33)
M
В случае блокированной гармонической модели, этими последовательностями являются pi() и hi=ip=(0, (,L- 1).
5.3.3.2.8.2 Арифметический кодер на основе огибающей
-1
-1
-1
-1
В MDCT-области, спектральные линии взвешивают с использованием модели W(z) восприятия таким образом, что каждая линия может быть квантована с одной и той же точностью. Дисперсии отдельных спектральных линий следуют за формой линейного предсказателя A(z), взвешиваемого посредством модели восприятия, в результате чего взвешенной формой является S(z)=W(z)A(z). W(z) вычисляют посредством преобразования  в коэффициенты усиления LPC частотной области, как подробно описано в подразделах 5.3.3.2.4.1 и 5.3.3.2.4.2. A(z) получают на основании  после преобразования в прямо-формируемые коэффициенты, и применения компенсации 1-γz отклонения, и, наконец, преобразования в коэффициенты усиления LPC частотной области. Все другие инструменты частотного формирования, а также вклад от гармонической модели, должны быть включены в эту форму S(z) огибающей. Заметим, что это дает только относительные дисперсии спектральных линий, в то время как общая огибающая имеет произвольный масштаб, в результате чего мы должны начать с масштабирования огибающей.
5.3.3.2.8.2.1 Масштабирование огибающей
k
Мы можем предположить, что спектральные линии x имеют нулевое среднее значение и распределены согласно распределению Лапласа, таким образом, функция распределения вероятностей имеет вид:
, (34)
k
2
k
Энтропия и, таким образом, потребление битов такой спектральной линии выражается в виде bits=1+log2eb. Однако эта формула предполагает, что знак кодируется также для тех спектральных линий, которые квантуются со значением ноль. Для компенсации этого противоречия, мы используем вместо этого приближение
, (35)
k
k
k
2
k
k
k
2
k
которое является точным для b≥0,08. Мы можем предположить, что потреблением битов линий с b≤0,08 является bits=log(1,0224), что соответствует потреблению битов при b=0,08. Для больших b>255 мы для простоты используем истинную энтропию bits=log(2eb).
k
k
k
k
k
k
k
k
2
2
2
2
2
2
2
2
2
2
Дисперсией спектральных линий является тогда σ=2b. Если s является k-ым элементом мощности формы |S(z)| огибающей, то тогда s описывает относительную энергию спектральных линий, так что γσ=b, где (является коэффициентом масштабирования. Другими словами, s описывает только форму спектра без какой-либо значащей амплитуды, и (используется для масштабирования этой формы для получения фактической дисперсии σ.
Наша задача состоит в том, чтобы, когда мы кодируем все линии спектра с использованием арифметического кодера, потребление битов соответствовало предопределенному уровню В, а именно, . Мы можем затем использовать алгоритм деления пополам для определения коэффициента (масштабирования таким образом, чтобы достигалась целевая битовая скорость В.
k
После масштабирования формы b огибающей таким образом, чтобы ожидаемое потребление битов сигналами, соответствующими этой форме, обеспечивало целевую битовую скорость, мы можем приступить к квантованию спектральных линий.
5.3.3.2.8.2.2 Скоростной цикл квантования
k
Предположим, что x квантуется с целым значением  таким образом, что интервалом квантования является , тогда вероятность того, что спектральная линия окажется в этом интервале, составляет для
и для
Отсюда следует, что потребление битов для этих двух случаев составляет в идеальном случае
Посредством предварительного вычисления членов  и , мы можем эффективно вычислить потребление битов всего спектра.
k
Скоростной цикл может быть затем применен с поиском деления пополам, где мы настраиваем масштаб спектральных линий посредством коэффициента (и вычисляем потребление ρx битов спектра до тех пор, пока мы не окажемся достаточно близко к требуемой битовой скорости. Следует отметить, что вышеупомянутые значения идеального случая для потребления битов не обязательно идеально совпадают с конечным потреблением битов, поскольку арифметический кодек работает с приближением конечной точности. Этот скоростной цикл, таким образом, основан на приближении потребления битов, но имеет преимущество в вычислительно эффективной реализации.
После определения оптимального масштаба σ, спектр может быть закодирован стандартным арифметическим кодером. Спектральная линия, которая квантуется со значением , кодируется в интервале
и спектральная линия, которая квантуется со значением , кодируется в интервале
Знак  будет закодирован одним дополнительным битом.
Заметим, что арифметический кодер должен работать с реализацией с фиксированной точкой таким образом, чтобы вышеупомянутые интервалы были точными по битам на всех платформах. Таким образом, во всей системе, все входные сигналы для арифметического кодера, в том числе модель с линейным предсказанием и фильтр взвешивания, должны быть реализованы с фиксированной точкой.
5.3.3.2.8.2.3 Получение и кодирование вероятностной модели
После определения оптимального масштаба σ, спектр может быть закодирован стандартным арифметическим кодером. Спектральная линия, которая квантуется со значением , кодируется в интервале
и спектральная линия, которая квантуется со значением , кодируется в интервале
Знак  будет закодирован одним дополнительным битом.
5.3.3.2.8.2.4 Гармоническая модель в арифметическом кодировании на основе огибающей
В случае арифметического кодирования на основе огибающей, для улучшения арифметического кодирования может быть использована гармоническая модель. Подобную процедуру поиска, как в арифметическом кодировании на основе контекста, используют для оценивания интервала между гармониками в MDCT-области. Однако гармоническую модель используют в комбинации с огибающей LPC, как показано на фиг.2. Форму огибающей воспроизводят согласно информации гармонического анализа.
Форму гармоник относительно k в выборке частотных данных определяют следующим образом:
когда τ-4≤k≤τ+4, иначе Q(k)=1,0, где (обозначает центральное положение U-ых гармоник.
h и (являются высотой и шириной каждой гармоники в зависимости от показанного единичного интервала,
Высота и ширина становятся большими, когда интервал становится большим.
Огибающая S(k) спектра модифицируется формой Q(k) гармоник относительно k следующим образом:
harm
harm
norm
где коэффициент g усиления гармонических компонентов всегда устанавливают равным 0,75 для Обобщенного режима, и g выбирают из {0,6, 1,4, 4,5, 10,0}, что минимизирует E для голосового режима с использованием 2 битов,
Фиг.2: пример огибающей гармоник, объединенной с огибающей LPC, используемый в арифметическом кодировании на основе огибающей.
5.3.3.2.9 Кодирование глобального коэффициента усиления
5.3.3.2.9.1 Оптимизация глобального коэффициента усиления
opt
TCX
Оптимальный глобальный коэффициент g усиления вычисляют на основании квантованных и неквантованных MDCT-коэффициентов. Для битовых скоростей вплоть до 32 кбит/с, адаптивную низкочастотную коррекцию предыскажений (см. подраздел 6.2.2.3.2) применяют к квантованным MDCT-коэффициентам перед этим этапом. В случае, когда вычисление имеет результатом оптимальный коэффициент усиления, меньший или равный нулю, используют глобальный коэффициент g усиления, определенный перед этим (посредством оценивания и скоростного цикла).
5.3.3.2.9.2 Квантование глобального коэффициента усиления
opt
TCX,gain
Для передачи декодеру оптимальный глобальный коэффициент g усиления квантуют относительно 7-битового индекса I:
Деквантованный глобальный коэффициент  усиления получают, как определено в подразделе 6.2.2.3.3.
5.3.3.2.9.3 Остаточное кодирование
Остаточное квантование является улучшающим уровнем квантования, который улучшает первую стадию SQ. Оно использует возможные неиспользованные биты target_bits-nbbits, где nbbits является числом битов, потребляемых энтропийным кодером. Остаточное квантование выбирает «жадную» стратегию и отсутствие энтропийного кодирования для остановки кодирования всегда, когда битовый поток достигает требуемого размера.
Остаточное квантование может улучшить первое квантование двумя средствами. Первое средство является улучшением квантования глобального коэффициента усиления. Улучшение глобального коэффициента усиления выполняют только для скоростей около и выше 13,2 кбит/с. Самое большее три дополнительных бита выделяют для этого. Квантованный коэффициент  усиления улучшают последовательно, начиная с n=0 и увеличивая n на один после каждой следующей итерации:
Второе средство улучшения состоит в повторном квантовании квантованной спектральной линии для каждой линии. Сначала, ненулевые квантованные линии обрабатывают 1-битовым блоком остаточного квантования:
Наконец, если биты остаются, то нулевые линии рассматриваются и квантуются на 3 уровнях. Смещение округления SQ с мертвой зоной было учтено в конструкции блока остаточного квантования:
5.3.3.2.10 Заполнение шумом
NFstart
NFstop
На стороне декодера заполнение шумом применяют для заполнения промежутков в MDCT-спектре, когда коэффициенты квантованы со значением ноль. Заполнение шумом вставляет псевдослучайный шум в промежутки, начиная с бина k вплоть до бина k-1. Для управления величиной шума, вставляемого в декодере, вычисляют коэффициент шума на стороне кодера и передают его декодеру.
5.3.3.2.10.1 Отклонение заполнения шумом
Для компенсации отклонения LPC, вычисляют коэффициент компенсации отклонения. Для битовых скоростей ниже 13,2 кбит/с, компенсацию отклонения вычисляют на основании прямо формируемых квантованных LP-коэффициентов , в то время как для более высоких скоростей используют постоянное значение:
5.3.3.2.10.2 Бины начала и остановки заполнения шумом
Бины начала и остановки заполнения шумом вычисляют следующим образом:
5.3.3.2.10.3 Ширина переходов шума
На каждой стороне сегмента заполнения шумом переходное глубокое замирание применяют к вставленному шуму. Ширину переходов (число бинов) определяют следующим образом:
(57)
где HM означает, что гармоническая модель используется для арифметического кодека, и previous обозначает предыдущий режим кодека.
5.3.3.2.10.4 Вычисление сегментов шума
NFstart
NFstop,LP
Определяют сегменты заполнения шумом, которые являются сегментами последовательных бинов MDCT-спектра между k и k, для которых все коэффициенты квантованы со значением ноль. Эти сегменты определяют, как определено следующим псевдокодом:
NF0
NF1
NF
где k(j) и k(j) являются бинами начала и остановки сегмента j заполнения шумом, и k является числом сегментов.
5.3.3.2.10.5 Вычисление коэффициента шума
Коэффициент шума вычисляют на основании неквантованных MDCT-коэффициентов бинов, для которых применяют заполнение шумом.
NF
Если ширина w перехода шума составляет 3 или менее бинов, то коэффициент ослабления вычисляют на основании энергии четных и нечетных MDCT-бинов:
Для каждого сегмента значение ошибки вычисляют на основании неквантованных MDCT-коэффициентов с применением глобального коэффициента усиления, компенсации отклонения и переходов:
Вес для каждого сегмента вычисляют на основании ширины сегмента:
, (62)
Коэффициент шума затем вычисляют следующим образом:
5.3.3.2.10.6 Квантование коэффициента шума
Для передачи коэффициент шума квантуют для получения 3-битового индекса:
5.3.3.2.11 Интеллектуальное Заполнение Промежутка
Инструмент Интеллектуальное Заполнение Промежутка (Intelligent Gap Filling - IGF) является улучшенной технологией заполнения шумом для заполнения промежутков (областей нулевых значений) в спектрах. Эти промежутки могут возникать вследствие крупного квантования в процессе кодирования, когда большие участки данного спектра могут быть установлены равными нулю для удовлетворения ограничений по битам. Однако с использованием инструмента IGF эти пропущенные части сигнала восстанавливаются на стороне приемника (receiver side - RX) с использованием параметрической информации, вычисляемой на стороне передачи (transmission side - TX). IGF используют, только если TCX-режим является активным.
См. таблицу 6 ниже, в которой приведены все рабочие точки IGF:
Таблица 6: режимы применения IGF
<b>Битовая скорость</b>
<b>Режим</b>
9,6 кбит/с
WB
9,6 кбит/с
SWB
13,2 кбит/с
SWB
16,4 кбит/с
SWB
24,4 кбит/с
SWB
32,2 кбит/с
SWB
48,0 кбит/с
SWB
16,4 кбит/с
FB
24,4 кбит/с
FB
32,0 кбит/с
FB
48,0 кбит/с
FB
96,0 кбит/с
FB
128,0 кбит/с
FB
На стороне передачи, IGF вычисляет уровни на основании диапазонов коэффициента масштабирования с использованием комплексного или вещественного TCX-спектра. Кроме того, индексы спектрального приближения к спектру белого шума вычисляют с использованием измерения неравномерности спектральной характеристики и коэффициента амплитуды. Арифметический кодер используют для бесшумного кодирования и эффективной передачи на сторону приемника (RX).
5.3.3.2.11.1 Функции-помощники IGF
5.3.3.2.11.1.1 Отображение значений с использованием коэффициента согласования
Если имеется переход из CELP в TCX-кодирование (isCELPToTCX=true) или передается кадр TCX10 (isTCX10=true), то длина кадра TCX может измениться. В случае изменения длины кадра, все значения, которые связаны с длиной кадра, отображаются функцией tF:
где n является натуральным числом, например, смещением диапазона коэффициента масштабирования, и f является коэффициентом согласования, см. таблицу 11.
5.3.3.2.11.1.2 Энергетический спектр TCX
n
Энергетический спектр РP текущего кадра TCX вычисляют с использованием:
n
n
где n является фактической длиной окна TCX, RP является вектором, содержащим вещественную (косинус-преобразованную) часть текущего TCX-спектра, и IP является вектором, содержащим мнимую (синус-преобразованную) часть текущего TCX-спектра.
5.3.3.2.11.1.3 Функция SFM измерения неравномерности спектральной характеристики
n
Пусть РP является энергетическим спектром TCX, вычисляемым согласно подразделу 5.3.3.2.11.1.2, и b является линией начала, и е является линией конца диапазона измерения SFM.
Функцию SFM, применяемую с IGF, определяют с использованием:
где n является фактической длиной окна TCX, и p определяют с использованием:
5.3.3.2.11.1.4 Функция CREST коэффициента амплитуды
n
Пусть РP является энергетическим спектром TCX, вычисляемым согласно подразделу 5.3.3.2.11.1.2, и b является линией начала, и е является линией конца диапазона измерения коэффициента амплитуды.
Функцию CREST, применяемую с IGF, определяют с использованием:
max
где n является фактической длиной окна TCX, и E определяют с использованием:
5.3.3.2.11.1.5 Функция hT отображения
Функцию hT отображения определяют с использованием:
k
k
где s является вычисленным значением неравномерности спектральной характеристики, и k является диапазоном шума в объеме. В отношении пороговых значений ThM, ThS см. приведенную ниже таблицу 7.
Таблица 7: Пороги для приближения к спектру белого шума для nT, ThM, и ThS
<b>Битовая скорость</b>
<b>Режим</b>
<b>nT</b>
<b>ThM</b>
<b>ThS</b>
9,6 кбит/с
WB
2
0,36, 0,36
1,41, 1,41
9,6 кбит/с
SWB
3
0,84, 0,89, 0,89
1,30, 1,25, 1,25
13,2 кбит/с
SWB
2
0,84, 0,89
1,30, 1,25
16,4 кбит/с
SWB
3
0,83, 0,89, 0,89
1,31, 1,19, 1,19
24,4 кбит/с
SWB
3
0,81, 0,85, 0,85
1,35, 1,23, 1,23
32,2 кбит/с
SWB
3
0,91, 0,85, 0,85
1,34, 1,35, 1,35
48,0 кбит/с
SWB
1
1,15
1,19
16,4 кбит/с
FB
3
0,63, 0,27, 0,36
1,53, 1,32, 0,67
24,4 кбит/с
FB
4
0,78, 0,31, 0,34, 0,34
1,49, 1,38, 0,65, 0,65
32,0 кбит/с
FB
4
0,78, 0,31, 0,34, 0,34
1,49, 1,38, 0,65, 0,65
48,0 кбит/с
FB
1
0,80
1,0
96,0 кбит/с
FB
1
0
2,82
128,0 кбит/с
FB
1
0
2,82
5.3.3.2.11.1.6 Недействительный
5.3.3.2.11.1.7 Таблицы коэффициентов масштабирования IGF
Таблицы коэффициентов масштабирования IGF доступны для всех режимов, где применяется IGF.
Таблица 8: таблица смещений диапазонов коэффициента масштабирования
<b>Битовая скорость</b>
<b>Режим</b>
<b>Число диапазонов (nB)</b>
<b>Смещения (t[0],t[1], (,t[nB]) диапазонов коэффициента масштабирования</b>
9,6 кбит/с
WB
3
164, 186, 242, 320
9,6 кбит/с
SWB
3
200, 322, 444, 566
13,2 кбит/с
SWB
6
256, 288, 328, 376, 432, 496, 566
16,4 кбит/с
SWB
7
256, 288, 328, 376, 432, 496, 576, 640
24,4 кбит/с
SWB
8
256, 284, 318, 358, 402, 450, 508, 576, 640
32,2 кбит/с
SWB
8
256, 284, 318, 358, 402, 450, 508, 576, 640
48,0 кбит/с
SWB
3
512, 534, 576, 640
16,4 кбит/с
FB
9
256, 288, 328, 376, 432, 496, 576, 640, 720, 800
24,4 кбит/с
FB
10
256, 284, 318, 358, 402, 450, 508, 576, 640, 720, 800
32,0 кбит/с
FB
10
256, 284, 318, 358, 402, 450, 508, 576, 640, 720, 800
48,0 кбит/с
FB
4
512, 584, 656, 728, 800
96,0 кбит/с
FB
2
640, 720, 800
128,0 кбит/с
FB
2
640, 720, 800
Таблица 8 выше относится к длине окна TCX20 и коэффициенту согласования, равному 1,00.
Для всех длин окон применяют следующее повторное отображение
где tF является функцией отображения коэффициента согласования, описанной в подразделе 5.3.3.2.11.1.1.
5.3.3.2.11.1.8 Функция m отображения
Таблица 9: минимальный исходный поддиапазон IGF, minSb
<b>Битовая скорость</b>
<b>Режим</b>
<b></b><img file="00000092.jpg" he="4" wi="11" img-content="undefined" img-format="jpg" />
9,6 кбит/с
WB
30
9,6 кбит/с
SWB
32
13,2 кбит/с
SWB
32
16,4 кбит/с
SWB
32
24,4 кбит/с
SWB
32
32,2 кбит/с
SWB
32
48,0 кбит/с
SWB
64
16,4 кбит/с
FB
32
24,4 кбит/с
FB
32
32,0 кбит/с
FB
32
48,0 кбит/с
FB
64
96,0 кбит/с
FB
64
128,0 кбит/с
FB
64
Для каждого режима функцию отображения определяют для линий источника доступа на основании данной целевой линии в IGF-диапазоне.
Таблица 10: функции отображения для каждого режима
<b>Битовая скорость</b>
<b>Режим</b>
<b>nT</b>
<b>Функция отображения</b>
9,6 кбит/с
WB
2
<img file="00000093.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
9,6 кбит/с
SWB
3
<img file="00000094.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
13,2 1кбит/с
SWB
2
<img file="00000095.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
16,4 кбит/с
SWB
3
<img file="00000096.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
24,4 кбит/с
SWB
3
<img file="00000097.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
32,2 кбит/с
SWB
3
<img file="00000098.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
48,0 кбит/с
SWB
1
<img file="00000099.jpg" he="4" wi="4" img-content="undefined" img-format="jpg" />
16,4 кбит/с
FB
3
<img file="00000100.jpg" he="4" wi="7" img-content="undefined" img-format="jpg" />
24,4 кбит/с
FB
4
<img file="00000101.jpg" he="4" wi="5" img-content="undefined" img-format="jpg" />
32,0 кбит/с
FB
4
<img file="00000102.jpg" he="4" wi="5" img-content="undefined" img-format="jpg" />
48,0 кбит/с
FB
1
<img file="00000103.jpg" he="4" wi="4" img-content="undefined" img-format="jpg" />
96,0 кбит/с
FB
1
<img file="00000103.jpg" he="4" wi="4" img-content="undefined" img-format="jpg" />
128,0 кбит/с
FB
1
<img file="00000103.jpg" he="4" wi="4" img-content="undefined" img-format="jpg" />
Функцию m1 отображения определяют с использованием:
Функцию m2a отображения определяют с использованием:
Функцию m2b отображения определяют с использованием:
Функцию m3a отображения определяют с использованием:
Функцию m3b отображения определяют с использованием:
Функцию m3 с отображения определяют с использованием:
Функцию m3d отображения определяют с использованием:
Функцию m4 отображения определяют с использованием:
Значение f является соответствующим коэффициентом согласования, см. таблицу 11, и tF описана в подразделе 5.3.3.2.11.1.1.
Следует отметить, что все значения t(0), t(1), …, t(nB) должны быть уже отображены функцией tF, описанной в подразделе 5.3.3.2.11.1.1. Значения для nB определены в таблице 8.
На описанные здесь функции отображения в тексте будет делаться ссылка как на «функцию m отображения», что предполагает, что выбирается надлежащая функция для текущего режима.
5.3.3.2.11.2 Входные элементы (TX) IGF
Модуль кодера IGF ожидает следующие векторы и флаги в качестве входных данных:
M
R: вектор с вещественной частью текущего TCX-спектра X
S
I: вектор с мнимой частью текущего TCX-спектра X
P
P: вектор со значениями энергетического спектра TCX X
isTransient: флаг, сигнализирующий, содержит ли текущий кадр переходной процесс, см. подраздел 5.3.2.4.1.1
isTCX10: флаг, сигнализирующий кадр TCX10
isTCX20: флаг, сигнализирующий кадр TCX20
isCelpToTCX: флаг, сигнализирующий переход из CELP в TCX; генерировать флаг посредством теста на то, был ли последний кадр кадром CELP
isIndepFlag: флаг, сигнализирующий о том, что текущий кадр является независимым от предыдущего кадра
Следующие комбинации, приведенные в таблице 11, сигнализируемые посредством флагов isTCX10, isTCX20 и isCelpToTCX, допустимы с IGF:
Таблица 11: переходы TCX, коэффициент f согласования, длина n окна
<b>Битовая скорость/Режим</b>
<b></b><img file="00000112.jpg" he="4" wi="14" img-content="undefined" img-format="jpg" />
<b></b><img file="00000113.jpg" he="4" wi="15" img-content="undefined" img-format="jpg" />
<b></b><img file="00000114.jpg" he="5" wi="22" img-content="undefined" img-format="jpg" />
<b>Коэффициент f согласования</b>
<b>Длина n окна </b>
9,6 кбит/с/WB
false
true
false
1,00
320
false
true
true
1,25
400
9,6 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,25
800
13,2 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,25
800
16,4 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,25
800
24,4 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,25
800
32,0 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,25
800
48,0 кбит/с/SWB
false
true
false
1,00
640
false
true
true
1,00
640
true
false
false
0,50
320
16,4 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,25
1200
24,4 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,25
1200
32,0 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,25
1200
48,0 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,00
960
true
false
false
0,50
480
96,0 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,00
960
true
false
false
0,50
480
128,0 кбит/с/FB
false
true
false
1,00
960
false
true
true
1,00
960
true
false
false
0,50
480
5.3.3.2.11.3 Функции IGF на стороне передачи (TX)
Все объявления функций предполагают, что входные элементы обеспечиваются на покадровой основе. Единственными исключениями являются два последовательных кадра TCX10, где второй кадр кодируется в зависимости от первого кадра.
5.3.3.2.11.4 Вычисление коэффициента масштабирования IGF
Этот подраздел описывает, как вектор g(k), k=0, 1, …, nB-1 коэффициента масштабирования IGF вычисляют на стороне передачи (TX).
5.3.3.2.11.4.1 Комплексное вычисление
В случае, когда энергетический спектр P TCX является доступным, значения g коэффициента масштабирования IGF вычисляют с использованием P:
и пусть m:N→N является функцией отображения, которая отображает целевой диапазон IGF в исходный диапазон IGF, описанный в подразделе 5.3.3.2.11.1.8, тогда вычисляют:
где t(0), t(1), …, t(nB) должны быть уже отображены функцией tF, см. подраздел 5.3.3.2.11.1.1, и nB является числом диапазонов коэффициента масштабирования IGF, см. таблицу 8.
g(k) вычисляют с использованием:
и предел g(k) для  вычисляют с использованием:
Значения g(k), k=0, 1, …, nB-1, будут переданы к стороне приемника (RX) после дополнительного сжатия без потерь с использованием арифметического кодера, описанного в подразделе 5.3.3.2.11.8.
5.3.3.2.11.4.2 Вещественное вычисление
Если TCX-спектр является недоступным, то вычисляют:
где t(0), t(1), …, t(nB) должны быть уже отображены функцией tF, см. подраздел 5.3.3.2.11.1.1, и nB является числом диапазонов коэффициента масштабирования IGF, см. таблицу 8.
g(k) вычисляют с использованием:
и предел g(k) для  вычисляют с использованием:
Значения g(k), k=0, 1, …, nB-1, будут переданы к стороне приемника (RX) после дополнительного сжатия без потерь с использованием арифметического кодера, описанного в подразделе 5.3.3.2.11.8.
5.3.3.2.11.5 Тональная маска IGF
Для определения того, какие спектральные компоненты должны быть переданы базовым кодером, вычисляют тональную маску. Таким образом, идентифицируют все значительные спектральные компоненты, тогда как контент, который хорошо подходит для параметрического кодирования посредством IGF, квантуют со значением ноль.
5.3.3.2.11.5.1 Вычисление тональной маски IGF
В случае, когда энергетический спектр P TCX является недоступным, удаляют весь спектральный контент выше t(0):
где R является вещественным TCX-спектром после применения TNS, и n является текущей длиной окна TCX.
В случае, когда энергетический спектр P TCX является доступным, вычисляют:
где t(0) является первой спектральной линией в диапазоне IGF.
HP
Если дано E, то применяют следующий алгоритм:
Инициализировать last и next:
5.3.3.2.11.6 Вычисление неравномерности спектральной характеристики IGF
Таблица 12: Число nT мозаичных элементов и ширина wT мозаичных элементов
<b>Битовая скорость</b>
<b>Режим</b>
<b></b><img file="00000127.jpg" he="4" wi="6" img-content="undefined" img-format="jpg" />
<img file="00000128.jpg" he="4" wi="6" img-content="undefined" img-format="jpg" />
9,6 кбит/с
WB
2
t(2)-t(0),t(nB)-t(2)
9,6 кбит/с
SWB
3
t(1)-t(0), t(2)-t(1),t(nB)-t(2)
13,2 кбит/с
SWB
2
t(4)-t(0),t(nB)-t(4)
16,4 кбит/с
SWB
3
t(4)-t(0), t(6)-t(4),t(nB)-t(6)
24,4 кбит/с
SWB
3
t(4)-t(0), t(7)-t(4),t(nB)-t(7)
32,2 кбит/с
SWB
3
t(4)-t(0), t(7)-t(4),t(nB)-t(7)
48,0 кбит/с
SWB
1
t(nB)-t(0)
16,4 кбит/с
FB
3
t(4)-t(0), t(7)-t(4),t(nB)-t(7)
24,4 кбит/с
FB
4
t(4)-t(0), t(6)-t(4), t(9)-t(6),t(nB)-t(9)
32,0 кбит/с
FB
4
t(4)-t(0), t(6)-t(4), t(9)-t(6),t(nB)-t(9)
48,0 кбит/с
FB
1
t(nB)-t(0)
96,0 кбит/с
FB
1
t(nB)-t(0)
128,0 кбит/с
FB
1
t(nB)-t(0)
Для вычисления неравномерности спектральной характеристики IGF два статических массива, prevFIR и prevIIR, оба с размером nT, необходимы для обеспечения состояний фильтра по кадрам. Кроме того, статический флаг wasTransient необходим для сохранения информации входного флага wasTransient из предыдущего кадра.
5.3.3.2.11.6.1 Сбрасывание состояний фильтра
Оба вектора prevFIR и prevIIR являются статическими массивами размера nT в модуле IGF, и оба массива инициализируют с нулевыми значениями:
Эта инициализация должна быть выполнена:
- при запуске кодека
- при любом переключении битовой скорости
- при любом переключении типа кодека
- при переходе из CELP в TCX, например, при isCelpToTCX=true
- если текущий кадр имеет переходные свойства, например, если isTransient=true.
5.3.3.2.11.6.2 Сбрасывание текущих уровней приближения к спектру белого шума
Вектор currWLevel должен быть инициализирован с нулевыми значениями для всех мозаичных элементов,
currWLevel(k)=0, k=0,1, (,nT-1, (92)
- при запуске кодека
- при любом переключении битовой скорости
- при любом переключении типа кодека
- при переходе из CELP в TCX, например, при isCelpToTCX=true
5.3.3.2.11.6.3 Вычисление индексов неравномерности спектральной характеристики
Следующие этапы 1) -4) должны быть выполнены последовательно:
1) Обновить предыдущие буферы уровней и инициализировать текущие уровни:
В случае, когда prevIsTransient или isTransient имеет значение «истина», то применяют
currWLevel(k)=0, k=0,1, (,nT-1, (94)
иначе, если энергетический спектр P является доступным, то вычисляют
где SFM является функцией измерения неравномерности спектральной характеристики, описанной в подразделе 5.3.3.2.11.1.3, и CREST является функцией коэффициента амплитуды, описанной в подразделе 5.3.3.2.11.1.4.
Вычисляют:
После вычисления вектора s(k), состояния фильтра обновляют с использованием:
prevFIR(k)=tmp(k), k=0,1, (,nT-1
prevIIR(k)=0,1, (,nT-1, k=0,1, (,nT-1
prevIsTransient=isTransient, (98)
2) Функцию  отображения применяют к вычисленным значением для получения вектора currWLevel индексов уровней приближения к спектру белого шума. Функция  отображения описана в подразделе 5.3.3.2.11.1.5.
currWLevel(k)=hT(s(k),k), k=0,1, (,nT-1, (99)
3) С использованием выбранных режимов, см. таблицу 13, применяют следующее конечное отображение:
currWLevel(nT-1)=currWLevel(nT-2), (100)
Таблица 13: режимы для отображения этапа 4)
<b>Битовая скорость</b>
<b>Режим</b>
<b> Отображение</b>
9,6 кбит/с
WB
применить
9,6 кбит/с
SWB
применить
13,2 кбит/с
SWB
NOP
16,4 кбит/с
SWB
применить
24,4 кбит/с
SWB
применить
32,2 кбит/с
SWB
применить
48,0 кбит/с
SWB
NOP
16,4 кбит/с
FB
применить
24,4 кбит/с
FB
применить
32,0 кбит/с
FB
применить
48,0 кбит/с
FB
NOP
96,0 кбит/с
FB
NOP
128,0 кбит/с
FB
NOP
После выполнения этапа 4) вектор currWLevel индексов уровней приближения к спектру белого шума готов для передачи.
5.3.3.2.11.6.4 Кодирование уровней приближения к спектру белого шума IGF
Уровни приближения к спектру белого шума IGF, определяемые в векторе currWLevel, передают с использованием 1 или 2 битов на каждый мозаичный элемент.Точное значение общего числа требуемых битов зависит от фактических значений, содержащихся в currWLevel, и значения флага isIndep.Подробная обработка описана в псевдокоде, приведенном ниже:
isSame=1;
nTiles=nT;
k=0;
if (isIndep) {
isSame=0;
} else {
for (k=0; k<nTiles; k++) {
if (currWLevel(k) !=prevWLevel(k)) {
isSame=0;
break;
}
}
}
if (isSame) {
write_bit(1);
} else {
if (!isIndep) {
write_bit(0);
}
encode_whitening_level(currWLevel(0));
for (k=1; k<nTiles; k++) {
isSame=1;
if (currWLevel(k) !=currWLevel(k-1)) {
isSame=0;
break;
}
}
if (!isSame) {
write_bit(1);
for (k=1; k<nTiles; k++) {
encode_whitening_level();
}
} else {
write_bit(0);
}
}
где вектор prevWLevel содержит уровни приближения к спектру белого шума из предыдущего кадра, и функция encode_whitening_level следит за фактическим отображением уровня currWLevel(k) в двоичный код. Эту функцию реализуют согласно псевдокоду, приведенному ниже:
if (currWLevel(k)=1) {
write_bit(0);
} else {
write_bit(1);
if (currWLevel(k)=0) {
write_bit(0);
} else {
write_bit(1);
}
}
5.3.3.2.11.7 Индикатор временной неравномерности IGF
Временную огибающую восстанавливаемого посредством IGF сигнала выравнивают на стороне приемника (RX) согласно передаваемой информации в отношении временной неравномерности огибающей, которая является индикатором неравномерности IGF.
igf
Временную неравномерность измеряют в виде коэффициента усиления линейного предсказания в частотной области. Сначала, выполняют линейное предсказание вещественной части текущего TCX-спектра, и затем вычисляют коэффициент η усиления предсказания:
i
где k=i-ый PARCOR-коэффициент, получаемый посредством линейного предсказания.
igf
tns
На основании коэффициента η усиления предсказания и коэффициента η усиления предсказания, описанного в подразделе 5.3.3.2.2.3, флаг isIgfTemFlat индикатора временной неравномерности IGF определяют следующим образом:
5.3.3.2.11.8 Бесшумное кодирование IGF
Вектор g коэффициента масштабирования IGF бесшумно кодируют арифметическим кодером для записи эффективного представления вектора в битовый поток.
Этот модуль использует общие функции арифметического кодера для необработанных данных из инфраструктуры, которые обеспечиваются базовым кодером. Используемыми функциями являются ari_encode_14bits_sign(bit), которая кодирует значение bits, ari_encode_14bits_ext(value,cumulativeFrequencyTable), которая кодирует value из алфавита из 27 символов (SYMBOLS_IN_TABLE) с использованием накопленной таблицы cumulativeFrequencyTable частот, ari_start_encoding_14bits(), которая инициализирует арифметический кодер, и ari_finish_encoding_14bits(), которая завершает арифметический кодер.
5.3.3.2.11.8.1 Флаг независимости IGF
Внутреннее состояние арифметического кодера сбрасывают в случае, когда флаг isIndepFlag имеет значение true («истина»). Этот флаг может быть установлен равным false («ложь») только в режимах, где окна TCX10 (см. таблицу 11) используют для второго кадра из двух последовательных кадров TCX10.
5.3.3.2.11.8.2 Флаг all-Zero («все нули») IGF
Флаг all-Zero IGF сигнализирует, что все коэффициенты масштабирования IGF равны нулю:
, (103)
Флаг all-Zero записывают в битовый поток сначала. В случае, когда этот флаг равен true («истина»), состояние кодера сбрасывают, и никакие дополнительные данные не записывают в битовый поток, иначе арифметически кодированный вектор g коэффициента масштабирования следует в битовый поток.
5.3.3.2.11.8.3 Функции-помощники арифметического кодирования IGF
5.3.3.2.11.8.3.1 Функция сброса
Состояния арифметического кодера состоят из t{0,1} и вектора prev, который представляет значение вектора g, сохраняемого из предыдущего кадра. При кодировании вектора g, значение 0 для t означает, что не существует никакого доступного предыдущего кадра, поэтому prev является неопределенным и не используется. Значение 1 для t означает, что существует доступный предыдущий кадр, поэтому prev имеет достоверные данные и используется, причем это имеет место только в режимах, когда окна TCX10 (см. таблицу 11) используют для второго кадра из двух последовательных кадров TCX10. Для сброса состояния арифметического кодера, достаточно установить t=0.
Если кадр имеет установленный isIndepFlag, то состояние кодера сбрасывают перед кодированием вектора g коэффициента масштабирования. Следует отметить, что комбинация t=0 и isIndepFlag=false («ложь») является достоверной и может возникнуть для второго кадра из двух последовательных кадров TCX10, когда первый кадр имеет allZero=1. В этом конкретном случае, кадр не использует никакой контекстной информации из предыдущего кадра (вектора prev), поскольку t=0, и его фактически кодируют как независимый кадр.
5.3.3.2.11.8.3.2 Функция arith_encode_bits
Функция arith_encode_bits кодирует беззнаковое целое x с длиной nBits битов, посредством записи одного бита в единицу времени.
arith_encode_bits(x, nBits)
{
for (i=nBits - 1; i>=0; --i) {
bit=(x>>i) & 1;
ari_encode_14bits_sign(bit);
}
}
5.3.3.2.11.8.3.2 Функции Save («сохранить») и Restore («восстановить») для состояния кодера
Сохранение состояния кодера обеспечивают с использованием функции iisIGFSCFEncoderSaveContextState, которая копирует t и вектор prev в tSave и вектор prevSave, соответственно. Восстановление состояния кодера реализуют с использованием дополнительной функции iisIGFSCFEncoderRestoreContextState, которая копирует tSave и вектор prevSave назад в t и вектор prev, соответственно.
5.3.3.2.11.8.4 Арифметическое кодирование IGF
Следует отметить, что арифметический кодер должен быть способным только подсчитывать биты, например, при выполнении арифметического кодирование, без записи битов в битовый поток. Если арифметический кодер вызывают запросом на подсчет с использованием параметра doRealEncoding, установленного равным false («ложь»), то внутреннее состояние арифметического кодера должно быть сохранено перед вызовом функции iisIGFSCFEncoderEncode верхнего уровня и восстановлено после вызова вызывающей программой. В этом конкретном случае, биты, генерируемые внутренне арифметическим кодером, не записываются в битовый поток.
Функция arith_encode_residual кодирует целый остаток x предсказания с использованием накопленной таблицы cumulativeFrequencyTable частот и смещения tableOffset таблицы. Смещение tableOffset таблицы используют для настройки значения x перед кодированием для минимизации общей вероятности того, что очень малое или очень большое значение будет закодировано с использованием кодирования с переходом, которое является немного менее эффективным. Значения, которые находятся между MIN_ENC_SEPARATE=-12 и MAX_ENC_SEPARATE=12, включительно, кодируют прямо с использованием накопленной таблицы cumulativeFrequencyTable частот и размера SYMBOLS_IN_TABLE=27 алфавита.
Для вышеупомянутого алфавита из символов SYMBOLS_IN_TABLE, значения 0 и SYMBOLS_IN_TABLE-1 резервируют в качестве кодов перехода для указания на то, что значение является слишком малым или слишком большим для соответствия интервалу, заданному по умолчанию. В этих случаях, значение extra указывает на положение значения в одном из концов распределения. Значение extra кодируют с использованием 4 битов, если оно находится в диапазоне {0, (,14}, или с использованием 4 битов со значением 15, за которыми следуют дополнительные 6 битов, если оно находится в диапазоне {15, (,15+62}, или с использованием 4 битов со значением 15, за которыми следуют дополнительные 6 битов со значением 63, за которыми следуют дополнительные 7 битов, если оно больше или равно 15+63. Последний из трех случаев главным образом пригоден для предотвращения редкой ситуации, в которой специально сконструированный искусственный сигнал может создавать неожиданно большое условие остаточного значения в кодере.
arith_encode_residual(x, cumulativeFrequencyTable, tableOffset)
{
x+=tableOffset;
if ((x>=MIN_ENC_SEPARATE) && (x<=MAX_ENC_SEPARATE)) {
ari_encode_14bits_ext((x - MIN_ENC_SEPARATE)+1, cumulativeFrequencyTable);
return;
} else if (x<MIN_ENC_SEPARATE) {
extra=(MIN_ENC_SEPARATE - 1) - x;
ari_encode_14bits_ext(0, cumulativeFrequencyTable);
} else { /* x>MAX_ENC_SEPARATE */
extra=x - (MAX_ENC_SEPARATE+1);
ari_encode_14bits_ext(SYMBOLS_IN_TABLE - 1, cumulativeFrequencyTable);
}
if (extra<15) {
arith_encode_bits(extra, 4);
} else { /* extra>=15 */
arith_encode_bits(15, 4);
extra -=15;
if (extra<63) {
arith_encode_bits(extra, 6);
} else { /* extra>=63 */
arith_encode_bits(63, 6);
extra -=63;
arith_encode_bits(extra, 7);
}
}
}
Функция encode_sfe_vector кодирует вектор g коэффициента масштабирования, который состоит из nB целых значений. Значение t и вектор prev, которые образуют состояние кодера, используются в качестве дополнительных параметров для этой функции. Следует отметить, что функция iisIGFSCFEncoderEncode верхнего уровня должна вызвать общую функцию ari_start_encoding_14bits инициализации кодера перед вызовом функции encode_sfe_vector, а также затем вызвать функцию ari_done_encoding_14bits завершения арифметического кодера.
Функцию quant_ctx используют для квантования контекстного значения ctx посредством ограничения ее {-3, (,3}, и ее определяют следующим образом:
quant_ctx(ctx)
{
if (abs(ctx)<=3) {
return ctx;
} else if (ctx>3) {
return 3;
} else { /* ctx<-3 */
return -3;
}
}
Определения символьных имен, указанных в комментариях псевдокода, используемых для вычисления контекстных значений, приведены в следующей таблице 14:
Таблица 14: определение символьных имен
<b>Предыдущий кадр (при наличии)</b>
<b>Текущий кадр</b>
a=prev[f]
x=g[f] (значение, подлежащее кодированию)
c=prev[f-1]
b=g[f-1] (при наличии)
c=g[f-2] (при наличии)
encode_sfe_vector(t, prev, g, nB)
for (f=0; f<nB; f++) {
if (t=0) {
if (f=0) {
ari_encode_14bits_ext(g[f]>>2, cf_se00);
arith_encode_bits(g[f] & 3, 2); /* LSB в виде 2-битовых необработанных данных */
}
else if (f=1) {
pred=g[f - 1]; /* pred=b */
arith_encode_residual(g[f] - pred, cf_se01, cf_off_se01);
} else { /* f>=2 */
pred=g[f - 1]; /* pred=b */
ctx=quant_ctx(g[f - 1] - g[f - 2]); /* Q(b - e) */
arith_encode_residual(g[f] - pred, cf_se02[CTX_OFFSET+ctx)],
cf_off_se02[IGF_CTX_OFFSET+ctx]);
}
}
else { /* t=1 */
if (f=0) {
pred=prev[f]; /* pred=a */
arith_encode_residual(x[f] - pred, cf_se10, cf_off_se10);
} else { /* (t=1) && (f>=1) */
pred=prev[f]+g[f - 1] - prev[f - 1]; /* pred=a+b - c */
ctx_f=quant_ctx(prev[f] - prev[f - 1]); /* Q(a - c) */
ctx_t=quant_ctx(g[f - 1] - prev[f - 1]); /* Q(b - c) */
arith_encode_residual(g[f] - pred,
cf_se11[CTX_OFFSET+ctx_t][CTX_OFFSET+ctx_f)],
cf_off_se11[CTX_OFFSET+ctx_t][CTX_OFFSET+ctx_f]);
}
}
}
}
Существует пять случаев в вышеупомянутой функции, в зависимости от значения t, а также от положения f значения в векторе g:
- когда t=0 и f=0, кодируют первый коэффициент масштабирования независимого кадра, посредством разделения его на наиболее значимые биты, которые кодируют с использованием накопленной таблицы cf_se00 частот, и по меньшей мере два значимых бита кодируют прямо.
- когда t=0 и f=1, кодируют второй коэффициент масштабирования независимого кадра (в качестве остатка предсказания) с использованием накопленной таблицы cf_se01 частот.
- когда t=0 и f (2, кодируют третий и следующие коэффициенты масштабирования независимого кадра (в качестве остатков предсказания) с использованием накопленной таблицы cf_se02[CTX_OFFSET+ctx] частот, определяемой квантованным контекстным значением ctx.
- когда t=1 и f=0, кодируют первый коэффициент масштабирования независимого кадра (в качестве остатка предсказания) с использованием накопленной таблицы cf_se10 частот.
- когда t=1 и f (1, кодируют второй и следующие коэффициенты масштабирования независимого кадра (в качестве остатков предсказания) с использованием накопленной таблицы cf_se11[CTX_OFFSET+ctx_t][CTX_OFFSET+ctx_f] частот, определяемой квантованными контекстными значениями ctx_t и ctx_f.
Следует отметить, что заданные накопленные таблицы частот, cf_se01, cf_se02 и смещения таблиц, cf_off_se01, cf_off_se02, зависят от текущей рабочей точки и, неявно, от битовой скорости, и выбираются из множества доступных вариантов во время инициализации кодера для каждой данной рабочей точки. Накопленная таблица cf_se00 частот является общей для всех рабочих точек, и накопленные таблицы cf_se10 и cf_se11 частот, и соответствующие смещения cf_off_se10 и cf_off_se11 таблиц также являются общими, но они используются только для рабочих точек, соответствующих битовым скоростям, большим или равным 48 кбит/с, в случае зависимых кадров TCX10 (когда t=1)
5.3.3.2.11.9 Средство записи битового потока IGF
Арифметически кодированные коэффициенты масштабирования IGF, уровни приближения к спектру белого шума IGF, и индикатор временной неравномерности IGF передают затем на сторону декодера через битовый поток. Кодирование коэффициентов масштабирования IGF описано в подразделе 5.3.3.2.11.8.4. Уровни приближения к спектру белого шума IGF кодируют, как описано в подразделе 5.3.3.2.11.6.4. Наконец, флаг индикатора временной неравномерности IGF, представленный в виде одного бита, записывают в битовый поток.
В случае кадра TCX20, т.е. (isTCX20=true), и когда никакие запросы на подсчет не передаются к средству записи битового потока, выходной сигнал средства записи битового потока подают прямо в битовый поток. В случае кадра TCX10, т.е. (isTCX10=true), когда два подкадра кодируют независимо в пределах 20 мс-кадра, выходной сигнал средства записи битового потока для каждого подкадра записывают во временный буфер, что приводит к тому, что битовый поток содержит выходной сигнал средства записи битового потока для отдельных подкадров. Контент этого временного буфера, наконец, записывают в битовый поток.