RU2471288C2 - Устройство и способ комбинаторного кодирования малой сложности сигналов - Google Patents

Устройство и способ комбинаторного кодирования малой сложности сигналов Download PDF

Info

Publication number
RU2471288C2
RU2471288C2 RU2010141852/08A RU2010141852A RU2471288C2 RU 2471288 C2 RU2471288 C2 RU 2471288C2 RU 2010141852/08 A RU2010141852/08 A RU 2010141852/08A RU 2010141852 A RU2010141852 A RU 2010141852A RU 2471288 C2 RU2471288 C2 RU 2471288C2
Authority
RU
Russia
Prior art keywords
positions
occupied
unoccupied
vector
decoding
Prior art date
Application number
RU2010141852/08A
Other languages
English (en)
Other versions
RU2010141852A (ru
Inventor
Удар МИТТАЛ
Джеймс П. ЭШЛИ
Original Assignee
Моторола Мобилити, Инк.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40811155&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=RU2471288(C2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Моторола Мобилити, Инк. filed Critical Моторола Мобилити, Инк.
Publication of RU2010141852A publication Critical patent/RU2010141852A/ru
Application granted granted Critical
Publication of RU2471288C2 publication Critical patent/RU2471288C2/ru

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

Изобретение относится к способам кодирования векторных или матричных величин для речевых сигналов, аудиосигналов, сигналов изображения, видеосигналов и других сигналов, в частности к способам для кодирования и декодирования положения импульса и/или величин импульса, которые адаптивно переключаются между кодированием положения импульсов, имеющих ненулевое значение, и кодированием положения импульсов, имеющих нулевое значение. Техническим результатом является обеспечение способа и устройства для комбинаторного факториального импульсного кодирования малой сложности векторов. Указанный результат достигается тем, что способ работы кодера, который кодирует кодовое слово (С) из вектора (х), включает прием вектора (х), имеющего n положений, подлежащих кодированию; определение оценки плотности множества занятых положений из n положений вектора (х); и адаптивное переключение между кодированием этого множества занятых положений и кодированием множества незанятых положений из n положений в соответствии с оценкой плотности упомянутого множества занятых положений для генерирования кодированного значения для кодового слова. При этом кодированное значение содержит упомянутую оценку плотности для использования соответствующим декодером. 4 н. и 6 з.п. ф-лы, 2 табл., 11 ил.,

Description

Уровень техники
Общеизвестны способы кодирования векторных или матричных величин для речевых сигналов, аудиосигналов, сигналов изображения, видеосигналов и других сигналов. Один такой способ, описанный в патенте США 6236960, Peng et al (который включен в данный документ по ссылке), известен как факториальное импульсное кодирование (или FPC). FPC может кодировать вектор xi, используя в сумме M битов, с учетом того, что:
Figure 00000001
и все значения вектора xi представляют собой целочисленные значения, так что
-m≤xi≤m, где m представляет собой суммарное количество импульсов единичной амплитуды, и n представляет собой длину вектора. Суммарные M битов используются для кодирования N комбинаций максимально эффективным образом, так что сохраняется справедливость следующего выражения, которое описывает теоретически минимальное количество комбинаций:
Figure 00000002
Для этого уравнения F(n,d) представляют собой количество комбинаций d ненулевых векторных элементов по n положениям, определяемым посредством:
Figure 00000003
D(m,d) представляет собой количество комбинаций d ненулевых векторных элементов при заданных m суммарных единичных импульсах, определяемых посредством:
Figure 00000004
и 2d представляет комбинации, необходимые для описания полярности (знака) d ненулевых векторных элементов. Член min(m,n) учитывает случай, когда количество импульсов m единичной величины превышает длину n вектора. Способ и устройство кодирования и декодирования векторов этого вида были полностью описаны в известном уровне техники. Кроме того, практическая реализация данного способа кодирования была описана в стандарте C.S0014-B Проекта 2 партнерства по созданию системы третьего поколения (3GPP2), где длина вектора n=54, и количество импульсов единичной величины m=7 создает кодовое слово из M=35 битов.
Хотя эти значения n и m не вызывают какой-либо чрезмерной нагрузки из-за сложности, большие значения могут быстро вызвать проблемы, особенно в мобильных карманных устройствах, в которых необходимо поддерживать объем памяти и сложность вычислений минимально возможными. Например, использование данного способа кодирования для некоторых применений (таких как аудиокодирование) может потребовать n=144 и m=28 или выше. При таких условиях затраты, связанные с выведением комбинаторного выражения F(n,d), используя способы известного уровня техники, могут быть слишком высокие для практической реализации.
Рассматривая эти затраты более подробно, можно переписать уравнение 3 как:
Figure 00000005
Непосредственная реализация является проблематичной, так как F(144, 28) потребует 197 битов точности в числителе и 98 битов точности в знаменателе для получения 99-битового частного. Так как большинство процессоров цифровой обработки сигналов (DSP), используемых в современных карманных устройствах, обычно поддерживают только операции умножения 16 бит × 16 бит, необходимо применять специальные подпрограммы умножения/деления с многократно увеличенной точностью. Такие подпрограммы требуют последовательности вложенных операций умножения/накопления, которые обычно требуют порядка k операций умножения/накопления (MAC), где k представляет собой количество 16-битовых сегментов в операнде. Для 197-битового операнда
Figure 00000006
. Поэтому выполнение одного 197×16-битового умножения потребует минимум 13 операций MAC плюс операции сдвига и сохранения. Член знаменателя вычисляется подобным образом для получения 98-битового результата. Кроме того, требуется 197/98-битовое деление, которое представляет собой очень сложную операцию, таким образом, вычисление всего факториального отношения в уравнении 5 потребовало бы значительных ресурсов.
В попытке уменьшить сложность уравнение 5 можно переписать для распределения операций деления для получения следующего:
Figure 00000007
В данном выражении уменьшается динамический диапазон операций деления, но, к сожалению, необходимо повышенное разрешение частного, чтобы точно представить деление на 3, 7, 9 и т.д. Чтобы приспособить эту структуру, также необходима операция округления, чтобы гарантировать целочисленный результат. При заданном большом количестве операций деления с высокой точностью эта реализация не решает надлежащим образом проблему сложности для больших m и n и дополнительно имеет потенциальную возможность получения неправильного результата из-за накопленных ошибок точности.
В еще другой реализации уравнение 5 может быть переупорядочено следующим образом:
Figure 00000008
Если это выражение оценивается слева направо, то результат всегда создает целочисленное значение. Хотя этот способ контролирует вопрос точности и динамического диапазона в некоторой степени, большие значения m и n все же требуют интенсивного использования операций умножения и деления с многократно увеличенной точностью.
Наконец, чтобы минимизировать сложность вычислений, может быть возможным выполнять предварительное вычисление и сохранение всех факториальных комбинаций в таблице соответствия. Таким образом, все значения F(n,m) могут быть просто сохранены в матрице размера n×m и соответствующим образом извлечены из памяти, используя всего несколько циклов процессора. Проблема с данным подходом, однако, заключается в том, что когда n и m становятся большими, таким же становится связанное с ними требование к памяти. Ссылаясь на предыдущий пример, F(144, 28) потребует 144 × 28 ×
Figure 00000009
=52416 байтов памяти, что является чрезмерным для большинства мобильных карманных устройств. Поэтому существует потребность в способе и устройстве для комбинаторного факториального импульсного кодирования малой сложности векторов.
Краткое описание чертежей
Признаки изобретения, которые, как считается, являются новыми, подробно изложены в прилагаемой формуле изобретения. Само изобретение, однако, как в отношении организации, так и способа работы, вместе с его целями и преимуществами, лучше всего может быть понято посредством ссылки на последующее подробное описание изобретения, которое описывает некоторые примерные варианты осуществления изобретения, рассматриваемые вместе с прилагаемыми чертежами, на которых:
фиг.1 представляет собой блок-схему кодера.
Фиг.2 представляет собой блок-схему декодера.
Фиг.3 представляет собой блок-схему последовательности операций, изображающую работу генератора комбинаторной функции по фиг.1 и фиг.3.
Фиг.4 представляет собой блок-схему кодера согласно различным вариантам осуществления.
Фиг.5 представляет собой блок-схему последовательности операций, изображающую работу кодера согласно различным вариантам осуществления.
Фиг.6 представляет собой блок-схему декодера согласно различным вариантам осуществления.
Фиг.7 представляет собой блок-схему последовательности операций, изображающую работу декодера согласно различным вариантам осуществления.
Фиг.8 представляет собой блок-схему последовательности операций, изображающую работу кодера, использующего оценку плотности, согласно различным вариантам осуществления.
Фиг.9 представляет собой блок-схему последовательности операций, изображающую работу декодера, использующего оценку плотности, согласно различным вариантам осуществления.
Фиг.10 представляет собой блок-схему последовательности операций, изображающую работу кодера относительно порогового значения согласно различным вариантам осуществления.
Фиг.11 представляет собой блок-схему последовательности операций, изображающую работу декодера относительно порогового значения согласно различным вариантам осуществления.
Специалист в данной области техники понимает, что элементы на фигурах изображены для простоты и ясности и необязательно, чтобы они были нарисованы в масштабе. Например, размеры некоторых элементов на фигурах могут быть увеличены относительно других элементов, чтобы способствовать улучшению понимания вариантов осуществления настоящего изобретения.
Подробное описание
Хотя данное изобретение допускает наличие варианта осуществления во многих разных видах, на чертежах показаны и в данном документе подробно описываются конкретные варианты осуществления, понимая, что настоящее раскрытие должно рассматриваться как пример принципов изобретения и не предполагается, что оно ограничивает изобретение конкретными изображенными и описанными вариантами осуществления. В описании ниже подобные позиции используются для описания таких же, подобных или соответствующих деталей на нескольких видах чертежей.
В данном документе относительные термины, такие как первый и второй, верхний и нижний и т.п., могут использоваться исключительно для различения одного объекта или действия от другого объекта или действия, не требуя или подразумевая обязательно какой-либо фактической такой зависимости или порядка между такими объектами или действиями. Термины «содержит», «содержащий» или любой другой их вариант, как предполагается, охватывают неисключительное включение, так что процесс, способ, предмет или устройство, которое содержит список элементов, не включает в себя только эти элементы, но может включать в себя другие элементы, не перечисленные в явной форме или присущие такому процессу, способу, предмету или устройству. Элемент, которому предшествует «содержит …» не исключает, без дополнительных ограничений, наличие дополнительных идентичных элементов в процессе, способе, предмете или устройстве, которые содержат элемент.
Ссылка в данном документе на «один вариант осуществления», «некоторые варианты осуществления», «вариант осуществления» или подобные термины означает, что конкретный признак, структура или характеристика, описанные в связи с вариантом осуществления, включен в по меньшей мере один вариант осуществления настоящего изобретения. Таким образом, необязательно, что все появления таких фраз или в различных местах в данном описании изобретения ссылаются на один и тот же вариант осуществления. Кроме того, конкретные признаки, структуры или характеристики могут объединяться без ограничения любым подходящим образом в одном или нескольких вариантах осуществления.
Термин «или», как он используется в данном документе, должен интерпретироваться как включающий или означающий любое одно или любое сочетание. Поэтому «А, В или С» означает «любое из следующего: А; В; С; А и В; А и С; В и С; А, В и С». Исключение для этого определения имеет место только тогда, когда сочетание элементов, функций, этапов или действий является некоторым образом в своей основе взаимно исключающим.
Настоящее изобретение относится, в основном, к кодированию векторов и, в частности, к комбинационному факториальному импульсному кодированию векторов.
Как показано на чертежах, на которых подобные позиции обозначают подобные компоненты, фиг.1 представляет собой блок-схему кодера 100. Кодер 100 содержит генератор 102 векторов, схему (кодер) 106 комбинационного кодирования, генератор 108 комбинационных функций и схему 104 другого кодирования. Во время работы входной сигнал, подлежащий кодированию, принимается генератором 102 векторов. Как известно в технике, входной сигнал может содержать такие сигналы, как речевой сигнал, аудиосигнал, сигнал изображения, видеосигнал и другие сигналы.
Генератор 102 векторов принимает входной сигнал и создает вектор xi. Генератор 102 векторов может содержать любое количество парадигм кодирования, включая, но не ограничиваясь ими, кодирование речи CELP (линейное предсказание с кодовым возбуждением), описанное Peng et al, кодирование в области преобразования для аудио, изображений и видео, включая способы, основанные на дискретном преобразовании Фурье (DFT), дискретном косинусном преобразовании (DCT) и модифицированном дискретном косинусном преобразовании (MDCT), кодирование с вейвлет-преобразованием, прямую импульсно-кодовую модуляцию (PCM) во временной области, дифференциальную PCM, адаптивную дифференциальную PCM (ADPCM) или любой один из семейства методов полосного кодирования, которые общеизвестны в технике. Фактически, любой вектор сигнала вида, приведенного выше, может быть выгодно обработан согласно некоторым вариантам осуществления настоящего изобретения.
Схема 106 комбинаторного кодирования принимает вектор xi и использует факториальное импульсное кодирование для получения кодового слова C. Как описано выше, факториальное импульсное кодирование может кодировать вектор xi, используя в сумме M битов, при условии, что
Figure 00000010
, и все значения вектора xi являются целочисленными, так что -m≤xi≤m, где m представляет собой суммарное количество единичных импульсов амплитуды, и n представляет собой длину вектора. Как описано выше, большие значения m и n могут быстро вызывать проблемы, особенно в мобильных карманных устройствах, в которых необходимо поддерживать объем памяти и сложность вычислений максимально низкими.
Чтобы решить этот вопрос, генератор 108 комбинаторных функций использует метод малой сложности для получения F'(n,d). Схема 106 комбинаторного кодирования затем использует F'(n,d) для получения кодового слова C. Схема 108 использует аппроксимации с относительно низким разрешением (биты точности) факториальных комбинаций F'(n,d), которые обеспечивают только необходимую точность для возможности генерирования достоверного кодового слова. Т.е. пока сохраняются некоторые свойства, подходящая аппроксимация функции F(n,d) достаточна для того, чтобы гарантировать, что результирующее кодовое слово является однозначно декодируемым.
Чтобы описать генерирование F'(n,d), сначала выводят функцию F'(n,d), которая представляет собой подходящую аппроксимацию F(n,d). Первым этапом является взятие логарифма по произвольному основанию a в уравнении 5 и взятие антилогарифма по основанию a переупорядоченных членов:
Figure 00000011
где функция expa(k)=ak. Затем определяют функции P(i), Q(d) и R(k) и подставляют в уравнение 8, так что:
Figure 00000012
Figure 00000013
Однако согласно примерному варианту осуществления настоящего изобретения не является необходимым, чтобы F(n,d) и F'(n,d) были эквивалентными по порядку, чтобы результирующее кодовое слово являлось однозначно декодируемым. Существует только два условия, которые достаточны для того, чтобы они были справедливыми:
Figure 00000014
и
Figure 00000015
Для первого условия ограничение просто определяет, что если F'(n,d)<F(n,d), тогда будет перекрытие кодовых пространств, и, впоследствии, будет более одного входа, способного генерировать конкретное кодовое слово; таким образом, кодовое слово не является однозначно декодируемым. Второе условие определяет, что «ошибка» для данного n, d должна быть больше или равна сумме слагаемых ошибки, связанных с предыдущим элементом рекурсивной зависимости, описанной у Peng et.al в патенте США 6236960. Может быть показано, что F(n,d)=F(n-1,d)+F(n-1,d-1), которое верно только тогда, когда комбинаторное выражение точно равно F(n,d)=
Figure 00000016
!/d!(n-d)!. Однако, когда неравенство в уравнении 11 является достаточным, оно может необязательно быть верным для всех значений n и d. Для таких значений F(n,d) может удовлетворять другому неравенству, выведенному из уравнения 31 у Peng et al. и определяется:
Figure 00000017
В данном случае, уравнение 11 должно выполняться со строгим неравенством для некоторых (m,k), (m≤n), (k≤d), т.е.:
Figure 00000018
Возвращаясь обратно к уравнению 9, изобретатели теперь хотят сгенерировать F'(n,d) посредством создания функций P'(i), Q'(d) и R'(k) с аппроксимацией малой сложности исходных функций, так что:
Figure 00000019
и где выполняются условия, приведенные в уравнениях 10 и 11. Рассматривая P(i), можно аппроксимировать функцию, так что P'(i)≥loga(i),
Figure 00000020
. Если выбрать a=2 и затем ограничить P'(i) до 32 битов точности, то легко реализовать результирующие операции на карманном мобильном устройстве, так как большинство DSP поддерживают 32-битовые сложения с одним циклом. Поэтому изобретатели определяют:
Figure 00000021
где l(i) представляет собой коэффициент сдвига, который может изменяться как функция i. В предпочтительном варианте осуществления l(i)=l=21, но возможны многие другие множества значений. Для данного примера коэффициент 2l эквивалентен сдвигу l битов влево, посредством чего функция округления до ближайшего меньшего целого
Figure 00000022
удаляет дробные биты, в тоже время округляя до следующего наибольшего целого числа, и, наконец, коэффициент 2-l сдвигает результаты обратно вправо на l битов. Используя данную методологию, функция P'(i)≥log2(i) для всех i≥1 и также обеспечивает достаточный динамический диапазон и точность, используя только 32 бита, так как 9 битов положительного целочисленного разрешения в области log2 могут представлять 512-битовое число. Чтобы избежать сложности вычислений этих значений в реальном времени, они могут вычисляться предварительно и сохраняться в таблице, используя 144 × 4 битов памяти для примера F(144, 28). Используя подобную методологию для аппроксимации Q(d), изобретатели получают:
Figure 00000023
где функция округления до ближайшего меньшего целого
Figure 00000024
используется из-за вычитания величины из общего. Это гарантирует, что Q'(d)
Figure 00000025
, так что вклад Q'(d) будет гарантировать F'(n,d)≥F(n,d). Хотя l(j) может принимать многие значения в зависимости от конфигурации m и n, предпочтительный вариант осуществления использует значение l(j)=l=14 для переменного коэффициента сдвига. Подобно P'(i), Q'(d) может вычисляться предварительно и сохраняться в таблице, используя только 28×4 байтов памяти для примера F(144, 28). Для определения R'(k) необходимо сначала определить k следующим образом:
Figure 00000026
С P'(i) и Q'(d), определенными выше, k представляет собой предпочтительно 32-битовое число с 8-битовой целочисленной составляющей ki без знака и 24-битовой дробной составляющей kf. Используя это, можно вывести R'(k)≥exp2(k)=2k, принимая k=ki+kf, и затем беря антилогарифм по основанию 2 для получения 2k=
Figure 00000027
. Затем можно использовать разложение в ряд Тейлора для оценки дробной составляющей до требуемой точности, представленной
Figure 00000028
, округляя результат, используя функцию округления до ближайшего большего целого, и затем сдвигая соответствующим образом результат для формирования результата с многократно увеличенной точностью (только с l старшими битами), так что:
Figure 00000029
где
Figure 00000030
представляет собой целочисленный коэффициент сдвига, применяемый к результату разложения в ряд Тейлора. В данном случае, l представляет собой коэффициент сдвига, используемый подобно уравнениям 15 и 16, чтобы гарантировать R'(k)≥2k. Однако, так как R'(k) практически не может быть вычислена предварительно для эффективной работы в реальном времени, необходимо очень внимательно относится к заданию точных операций, необходимых как в кодере, так и в декодере для обеспечения того, чтобы восстановленный вектор сигнала точно соответствовал вектору входного сигнала. Отметьте, что R'(k) может быть получен в результате сдвига влево
Figure 00000031
, который может быть точно представлен l битами.
В вышеприведенном описании функции P'(i), Q'(d) и R'(k) были выбраны так, что каждая индивидуальная оценка функции гарантирует, что результирующее F'(n,d)≥F(n,d). Однако необходимо только, чтобы совокупное влияние удовлетворяло данному условию. Например, P'(i) и Q'(d) могут быть такими, которые описаны выше, но R'(k) может быть более обычной функцией R'(k)≈2k, которая может обрезать или округлять самые младшие биты, так что R'(k) может быть меньше, чем 2k для некоторых значений k. Это допустимо, пока данное влияние является незначительным относительно влияния P'(i) и Q'(d), поэтому свойства в уравнениях 10 и 11 все же сохраняются действительными.
Также любая функция P'(i), Q'(d) и R'(k) может использоваться без потери общности, пока выполняются свойства уравнений 10 и 11. Необходимо быть внимательным, однако, что повышение скорости передачи битов может происходить, если используется слишком малая точность. Также необходимо отметить, что существует присущий компромисс между скоростью передачи битов и сложностью, и для больших значений m и n увеличение на 1 или 2 бита может быть приемлемым компромиссом для существенного снижения сложности.
Теперь описывается формулировка частичного кодового слова C для положения и величин в схеме 106 комбинаторного кодирования. Пусть π={p1, p2, …, pv} будут положениями ненулевых импульсов (в возрастающем порядке) и µ={m1, m2, …, mv} величинами в соответствующих положениях у вектора x. Код для положений импульса определяется:
Figure 00000032
и код для величин импульса определяется:
Figure 00000033
Таким образом, формулировка этого кодового слова требует сложение v и v-1 чисел с многократно увеличенной точностью. Подобные операции вычитания необходимы в декодере. Эти операции также добавляют сложность способу FPC, когда m и n большие. Рассмотрим кодирование/декодирование аудиосигнала для системы многоуровневого встроенного кодирования. Этот метод используется для кодирования преобразования сигнала остаточной ошибки на трех уровнях многоуровневой системы. Пусть размер 20-мс блока равен n=280 и одинаков для всех уровней. Количество импульсов для кодирования зависит от скорости передачи битов каждого уровня. Если каждый уровень составляет 8 кбит/с, 16 кбит/с или 32 кбит/с, тогда они требуют 160 битов, 320 битов и 640 битов для кодирования 20-мс блока соответственно. Используя метод FPC, блок длиной 280 может кодироваться с использованием 28, 74 и 230 импульсов для 160 битов, 320 битов и 640 битов на уровень соответственно. Операции с многократно увеличенной точностью в уравнениях 19 и 20 выполняются на процессоре цифровой обработки сигналов, который обычно работает с 16-битовыми словами. Таким образом, для образования 160-битового кодового слова операции сложения необходимы для выполнения свыше 10 слов, и для 640-битового кодового слова операция сложения должна выполняться по 40 словам. Каждая операция сложения занимает 4 единицы (генерирование переноса, перемещение в массив, сложение с учетом разряда переноса). Следовательно, кодирование/декодирование k-битового кодового слова на p-уровнях многоуровневой системы требует
Figure 00000034
операций/с. Для различных значений n, m и p сложность операций сложения/вычитания с многократно увеличенной сложностью показана в таблице 1. В этой таблице WMOPS обозначает взвешенный миллион операций в секунду.
Таблица 1
Сложность сложения/вычитания при кодировании/декодировании FPC, используя способ известного уровня техники
Кол-во уровней (p) Размер блока (n) Скорость передачи битов уровня/биты на 20-мс блок (k) Кол-во импульсов (m) Сложность сложения/вычитания с многократно увеличенной точностью
3 280 8 кбит/c/160 28 0,64 WMOPS
3 280 16 кбит/с/320 74 3,48 WMOPS
3 280 32 кбит/с/640 230 22,0 WMOPS
Из таблицы 1 отмечаем, что, если скорость передачи битов удваивается, сложность сложения с многократно увеличенной точностью повышается в шесть раз.
Как упомянуто выше, комбинаторная функция заменяется аппроксимирующей функцией F'(n,r), которая определяется следующим образом:
Figure 00000035
где
Figure 00000036
и R'(k) представляет собой аппроксимацию функции R'(k)≈2k, заданной как:
Figure 00000037
где k=ki+kf разбивается на целочисленную и дробную составляющие k, и
Figure 00000028
представляет собой разложение в ряд Тейлора с низким разрешением дробной составляющей k. Основываясь на вышеприведенных предварительно определенных функциях Q'(r) и R'(k), сначала получают P'(i), так что однозначно определяемое неравенство декодируемости
Figure 00000038
выполняется для всех значений n и d.
Возвращаясь обратно к уравнениям 19 и 20, замена аппроксимирующих функций F' вместо фактических функций F дает:
Figure 00000039
Кодирование количества ненулевых положений:
Формат lR-битового представления мантиссы и порядка также имеет преимущества при кодировании нескольких ненулевых положений. Кодирование количества ненулевых положений v определяется посредством:
Figure 00000040
Можно легко видеть, что умножение двух аппроксимирующих функций может быть существенно более легким в формате мантиссы и порядка, чем в формате с многократно увеличенной точностью. Основное преимущество, однако, заключается в том, что когда изобретатели хотят уменьшить сложность, тогда используя lR-битовое представление мантиссы и порядка, каждая из F'(n,k) и F'(m-1,k-1) может быть предварительно сохранена с использованием только двух слов (произведение их lR-битовой мантиссы и суммы их порядка также может быть предварительно сохранено). Это позволяет быстрее выполнять кодирование v без какого-либо существенного требуемого объема постоянного запоминающего устройства (ROM).
Фиг.2 представляет собой блок-схему декодера 200. Как показано, декодер 200 содержит схему 206 комбинаторного декодирования, схему 210 восстановления сигнала, схему 204 другого декодирования и генератор 108 комбинаторной функции. Во время работы комбинаторное кодовое слово принимается схемой 206 комбинаторного декодирования. Схема 206 комбинаторного декодирования подает n и d на генератор комбинаторной функции и принимает в ответ F'(n,d). Схема 302 декодирования затем создает вектор xi, основанный на F'(n,d). Схема 206 работает аналогично схеме 106 за исключением того, что вычитание заменяется операциями сложения. Другими словами,
Figure 00000041
. Вектор xi подается на схему 210 восстановления сигнала, где выходной сигнал (например, речевой сигнал, аудиосигнал, сигнал изображения, видеосигнал или другие сигналы) создается на основе xi и других параметров от схемы 204 другого декодирования. Более конкретно, другие параметры могут включать в себя любое количество параметров восстановления сигнала, связанных с парадигмой кодирования сигнала, используемой в конкретном варианте осуществления. Они могут включать в себя, но не ограничиваются ими, параметры масштабирования сигнала и энергии и параметры формирования спектра и/или синтезирующего фильтра. Обычно эти параметры используются для масштабирования энергии и/или спектральной формы вектора xi восстановленного сигнала таким образом, чтобы воспроизводить окончательный выходной сигнал.
Фиг.3 представляет собой блок-схему последовательности операций, изображающую работу генератора комбинаторной функции по фиг.1 и фиг.3. Более конкретно, логическая последовательность 300 операций на фиг.3 изображает эти этапы генератора 108 комбинаторной функции для получения F'(n,d). Логическая последовательность операций начинается в позиции 301, 302, где принимаются входные величины n и d. В позиции 303 накопитель A устанавливается в 0. В позиции 304 счетчик i устанавливается равным n-d+1. В позиции 306 логарифмическая аппроксимация P'(i) добавляется в накопитель A. В позиции 310 счетчик i получает приращение 1. Позиции 306 и 310 повторяются в цикле до тех пор, пока содержимое счетчика i не станет больше n. В позиции 312 проверяется i>n и завершается цикл, когда i становится больше n. На этом этапе накопитель содержит логарифмическую аппроксимацию числителя комбинаторной функции F(n,d). Логарифмическая аппроксимация знаменателя комбинаторной функции Q'(d) вычитается из содержимого накопителя в позиции 316, и получается логарифмическая аппроксимация комбинаторной функции. В позиции 318 берется экспоненциальная аппроксимация R'(A) содержимого накопителя для генерирования аппроксимации B комбинаторной функции. В позиции 314 B выводится в качестве F'(n,d).
Хотя использование комбинаторного вычисления с уменьшенной сложностью, описанного выше, служит для значительного снижения сложности, вычисление этих функций все же вносит существенный вклад в сложность способов кодирования и декодирования. Чтобы решить этот вопрос, некоторые варианты осуществления настоящего изобретения обеспечивают адаптивное переключение между способами кодирования и декодирования положений импульсов и/или величин импульсов, чтобы уменьшить количество моментов времени, когда должно выполняться вычисление комбинаторной функции.
Возвращаясь снова к уравнениям 19 и 20, а также к их соответствующим уравнениям 25 и 26 реализации с уменьшенной сложностью, отмечается, что процесс кодирования в уравнении 19 и уравнение 25 требуют v вычислений комбинаторных функций F и F' соответственно. Аналогично, уравнения 20 и 26 требуют v-1 вычислений этих функций. Декодирование положений импульсов и величины импульса является итеративным, и, следовательно, количество моментов времени, когда вычисляются эти функции, обычно значительно больше. В декодере количество вычислений этих функций увеличивается линейно с количеством ненулевых положений или занятых положений v. Чтобы уменьшить сложность кодирования/декодирования положений импульса и/или величин импульса, некоторые альтернативные варианты осуществления изобретения обеспечивают способ кодирования и декодирования положения импульса и/или величин импульса, который требует меньшего количества вычислений этих комбинаторных функций. В этих альтернативных вариантах осуществления изобретатели предлагают модифицировать уравнения 19 и 20 и посредством расширения модифицировать уравнения 25 и 26, чтобы селективно кодировать незанятые положения.
Рассмотрим сначала уравнение 20 и соответствующее уравнение 26 с уменьшенной сложностью. Если определим
Figure 00000042
тогда уравнение 20 можно переписать следующим образом:
Figure 00000043
И уравнение 26 можно переписать следующим образом:
Figure 00000044
Отметьте, что уравнения 20а и 26а подобны по структуре уравнениям 19 и 25 соответственно, причем pk заменено на p'k, n заменено на m-1, и занятые положения v заменены на v-1, т.е. кодирование величин импульса может рассматриваться как кодирование положения v-1 импульсов, размещенных в m-1 расположениях, где занятые положения идентифицируются посредством p'k. Фактически, кодирование величин импульса может рассматриваться как величины mj занятых импульсов, преобразуемых для генерирования псевдоположений, определенных членами pj и uj. Таким образом, любое изменение в способе кодирования положений импульса легко может быть расширено на кодирование величин импульса, и наоборот.
Согласно некоторым альтернативным вариантам осуществления изобретатели тогда предполагают оптимизацию кодирования величин импульса и/или положений импульса для уменьшения количества требуемых вычислений комбинаторных функций. Перед кодированием/декодированием положений импульса v кодируется/декодируется (уравнение 27). Следовательно, если удвоенное количество ненулевых положений больше количества расположений, т.е. 2·v>n, тогда количество незанятых положений u1, u2, …, uv меньше количества занятых положений v. Таким образом, в таких случаях кодирование/декодирование незанятых положений с использованием уравнения, подобного уравнению 19 (или 25), будет приводить к меньшему количеству вычислений комбинаторных функций и, следовательно, будет иметь меньшую сложность. Чтобы проиллюстрировать это математически, определим сначала uk в качестве незанятых положений, и U пусть будет множеством незанятых положений, т.е.
Figure 00000045
Отметим, что размер U равен n-v. Теперь, когда 2·v>n, код для положения теперь вычисляется как:
Figure 00000046
или
Figure 00000047
Аналогично для кодирования величин, если 2·(v-1)>(m-1), тогда
Figure 00000048
или
Figure 00000049
где u'k принадлежит множеству U', определенному как
Figure 00000050
и p'k являются теми, которые определены в уравнении 28.
Изобретатели теперь оценивают то, как предлагаемый способ селективного кодирования незанятых положений может уменьшить сложность посредством применения предлагаемого метода при кодировании 27 импульсов в 280 расположениях, т.е. n=280 и m=27. Так как 2·m<n, то может не требоваться предлагаемый подход кодирования для генерирования кода для положений (Cπ) импульса. Однако для кодирования величины импульса предлагаемый метод может выгодно использоваться.
Оказывается, что без использования предлагаемого метода сложность наихудшего случая алгоритма кодирования/декодирования (когда используются комбинаторные функции малой сложности) в данном конкретном примере наблюдается тогда, когда количество ненулевых положений (v) находится между 25 и 27, т.е. между m и m-2. Когда v=25, тогда использование уравнения 26 потребует 24 вычисления комбинаторной функции для кодирования и несколько больше для декодирования. Использование предлагаемого метода (уравнение 26z) в такой ситуации потребует вычисление комбинаторной функции только дважды в кодере и значительно меньшее количество раз в декодере при сравнении с другими методами декодирования.
Согласно предлагаемому методу кодирования/декодирования, согласующемуся с вариантами осуществления настоящего изобретения, сложность наихудшего случая в данном примере тогда, когда v близко к m/2. В данном случае кодирование и декодирование количества ненулевых положений v, используя уравнение 27, вносит существенный вклад в сложность. Сохранение параметров (запоминание 54 слов требуется в данном примере), как описано в разделе «Кодирование количества ненулевых положений», дополнительно уменьшает сложность.
Таблица ниже показывает снижение сложности, когда предлагаемый способ кодирования незанятых положений используется для кодирования 27 импульсов в 280 расположениях, и кодирование выполняется 2 раза в 20-мс кадре. Таблица также показывает преимущество, получаемое от сохранения параметров, используемых при вычислении кода для количества ненулевых положений (уравнение 27). Из таблицы изобретатели заключают, что селективное кодирование незанятых положений, приводящее к снижению сложности на 0,6 WMOP (с 3,59 до 2,9), и, если также сохраняются параметры, используемые в уравнении 27, тогда уменьшение составляет 0,75 WMOP (с 3,59 до 2,75).
Процесс декодирования является обратным процессу кодирования и включает в себя сначала декодирование количества ненулевых положений (v), основываясь на принятом кодовом слове С. Различные способы, например способ, описанный у Peng et al и у Mittal et al (патент США 6662154), для кодирования/декодирования количества ненулевых положений, могут применяться для этой цели. Кодовые слова Сπ для положения и Cµ для величин извлекаются на основе кодового слова C и v. Положение p1, p2,…, pv декодируется на основе кодового слова Сπ. Величины m1, m2, …, mv декодируются на основе кодового слова Cµ. Теперь декодируется кодированный сигнал:
Figure 00000051
Сохранение параметров Кодирование незанятых положений, когда необходимо Сложность (WMOP)
Нет Нет 3,59
Да Нет 3,50
Нет Да 2,90
Да Да 2,75
Метод, описанный в данном документе, уменьшения количества вычислений комбинаторной функции посредством переключения между кодированием занятых и незанятых положений, может дополнительно быть усовершенствован улучшенной аппроксимирующей комбинаторной функцией, как описано ниже. Она основывается на признании того факта, что декодер имеет значительную сложность, вызванную необходимостью декодера многократно находить наибольшее значение pk, так что F'(pk,k) меньше числа Ck с многократно увеличенной точностью. Декодер итеративно получает такое значение pk. Эти итерации могут потребовать нескольких вычислений комбинаторных функций F', которые добавляют сложность в процесс декодирования.
Чтобы дополнительно уменьшить сложность аппроксимирующей комбинаторной функции в уравнении 21 вместо предварительного сохранения P'(i), частичное суммирование P'(i), такое как:
Figure 00000052
и теперь уравнение 21 может быть эквивалентно вычислено как:
Figure 00000053
Даже если использование аппроксимирующих комбинаторных функций значительно уменьшило сложность, вычисление этих функций все же образует одну из главных долей сложности декодирования. Один способ снижения количества вычислений комбинаторной функции посредством переключения между кодированием занятого положения и незанятого положения недавно был описан в отдельном раскрытии. Даже с этими улучшениями декодер имеет существенную сложность. Это потому, что декодеру необходимо многократно находить наибольшее значение pk, так что F'(pk,k) меньше числа Ck с многократно увеличенной точностью. Декодер итеративно получает такое значение pk. Эти итерации могут потребовать нескольких вычислений комбинаторных функций, которые добавляют сложность процессу декодирования.
При признании того факта, что существует потребность в способе кодирования, где декодеру не нужно выполнять итерацию для получения pk, представлена улучшенная комбинаторная функция, в которой декодеру не нужно выполнять итерацию для получения pk. Если уравнение 33 используется для определения F'(pk,k), тогда может быть невыполнимым получение такого решения без итераций.
Изобретатели переопределили аппроксимирующую комбинаторную функцию следующим образом:
Figure 00000054
где
Figure 00000055
представляет собой логарифм i до l(i)=16 десятичных разрядов, и Q″(d)=Q'(d)+d вычисляется предварительно и сохраняется, так что F'(n,d), определенная в уравнении 34, удовлетворяет однозначно определяемому неравенству 24 декодируемости.
При Q'(d), определенном в уравнении 16 в качестве аппроксимирующего логарифма (основание 2) d!, F'(n,d), определенная в уравнении 34, представляет собой аппроксимацию фактической комбинаторной функции, определенной в уравнении 3 и уравнении 5. Возвращаясь обратно к уравнению 5, числитель, как можно считать, представляет собой d-ую степень среднего геометрического: n, n-1, n-2, …, n-d+1. Среднее арифметическое этих чисел равно
Figure 00000056
. Если аппроксимировать среднее геометрическое со средним арифметическим, то аппроксимация уравнения 5 может быть записана как:
Figure 00000057
Если взять логарифм (основание 2) уравнения 34 и использовать подход, подобный подходу, использованному при получении уравнения 21, то получим
Figure 00000058
Таким образом,
Figure 00000059
где P'(n)≈log2(n),
Figure 00000060
, R(k)≈2k. Ряд Тейлора малой сложности используется для генерирования R'(k). Способ генерирования R'(k) описывается при обсуждении после уравнения 18 выше.
Как используется в данном документе и в прилагаемой формуле изобретения, многочисленные факториальные комбинации, т.е. комбинаторная функция F или аппроксимирующие факториальные комбинации F', обозначенные, в основном, в F', могут использоваться без отступления от сущности и объема различных предложенных вариантов осуществления. Как описано выше, эти комбинаторные функции могут включать в себя, но не ограничиваются ими, следующие уравнения:
Figure 00000061
Figure 00000062
Адаптивное переключение между способами кодирования и декодирования положений импульса и/или величин импульса для уменьшения количества раз, когда должно выполняться вычисление комбинаторной функции, может быть лучше понято в результате ссылки на чертежи. Ссылаясь теперь на фиг.4, на ней изображена блок-схема 400 кодера. Как можно видеть, этот кодер, хотя в некоторой степени подобный кодеру на фиг.1, имеет переключатель 410, который управляется информацией о плотности, подаваемой блоком 408 оценки плотности положений, как показано. Целевой вектор x вводится в блок 408 оценки плотности положений, который выводит плотность в виде суммарного количества занятых положений (v) и в виде количества занятых положений, которые еще должны кодироваться (η), и возможного количества расположений этих занятых положений (ρ). Блок 106 комбинаторного кодирования может генерировать и выводить как занятое положение (pk), так и незанятое положение (uk) на переключатель 410. Какое из этих двух, (pk) или (uk), которое должно быть подано на генератор 108 комбинаторной функции от переключателя 410, определяется переключателем 410. Переключатель может пропускать незанятое положение (uk) на 108, если количество ненулевых положений больше некоторого заданного значения. Переключатель также может пропускать незанятое положение (uk), если отношение количества занятых положений, которые еще должны кодироваться, к возможному количеству расположений этих занятых положений, больше заданного значения.
Фиг.5 представляет собой блок-схему последовательности операций, изображающую упрощенное представление работы кодера по фиг.4. Логическая последовательность операций начинается в позиции 510, где входной сигнал принимается генератором 102 векторов. Как описано выше, входной сигнал может содержать речевой сигнал, аудиосигнал, сигнал изображения, видеосигнал или другие сигналы. В позиции 520 создается вектор xi и вводится в схему 106 комбинаторного кодирования, где m и v определяются и подаются на генератор 108 комбинаторной функции. Как описано выше, m представляет собой суммарное количество импульсов единичной амплитуды (или сумму абсолютных значений целочисленных составляющих xi), и v представляет собой количество ненулевых элементов xi. В позиции 530 F'(pj,j) создается генератором 108 комбинаторной функции и подается на схему 106 комбинаторного кодирования, где вектор xi кодируется для создания комбинаторного кодового слова C в позиции 540. Как описано выше, F'(pj,j) создается посредством замены функций P(i), Q(j) и R(k) в F(pj,j) аппроксимациями малой сложности исходных функций, так что удовлетворяются условия, приведенные в уравнениях 10 и 11.
Ссылаясь теперь на фиг.6, на ней изображена блок-схема 600 декодера, соответствующая некоторым вариантам осуществления. Декодер 600 работает противоположно кодеру 400. Как показано, декодер 600 содержит схему 206 комбинаторного декодирования, схему 210 восстановления сигнала, схему 204 другого кодирования, генератор 208 комбинаторной функции, переключатель 610 и блок 608 оценки плотности положений. Во время работы комбинаторное кодовое слово принимается схемой 206 комбинаторного декодирования. Схема 206 комбинаторного декодирования подает n и d на генератор комбинаторной функции и принимает в ответ F'(n,d). Схема 302 декодирования затем создает вектор xi, основанный на F'(n,d). Схема 206 работает аналогично схеме 106 за исключением того, что вычитание заменяет операции сложения. Другими словами,
Figure 00000063
. Вектор xi подается на схему 210 восстановления сигнала, где создается выходной сигнал (например, речевой сигнал, аудиосигнал, сигнал изображения, видеосигнал или другие сигналы), основываясь на xi и других параметрах от схемы 204 другого декодирования. Более конкретно, другие параметры могут включать в себя любое количество параметров восстановления сигнала, связанных с парадигмой кодирования сигнала, используемой в конкретном варианте осуществления. Они могут включать в себя, но не ограничиваются ими, параметры масштабирования и энергии сигнала и параметры формирования спектра и/или синтезирующего фильтра. Обычно эти параметры используются для масштабирования энергии и/или формы спектра вектора xi восстановленного сигнала таким образом, чтобы воспроизвести окончательный выходной сигнал.
Фиг.7 представляет собой блок-схему последовательности операций, изображающую упрощенное представление работы декодера по фиг.6. Логическая последовательность операций начинается в позиции 710, где комбинаторное кодовое слово принимается комбинаторным декодером 206. В позиции 720 pj и j передаются от комбинаторного декодера 206 на генератор 208 комбинаторной функции, и F(pj,j) возвращается на декодер 206 в позиции 730. Кодовое слово декодируется декодером 206, основываясь на F(pj,j) в позиции 740 для получения вектора xi, и xi подается на схему 210 восстановления сигнала, где в позиции 750 создается выходной сигнал.
Можно видеть, что предлагаемый способ кодирования «незанятого положения» в различных вариантах осуществления применяется при кодировании как положений, так и величины. Однако специалисту в данной области техники понятно, что данный способ может применяться для кодирования любых из этих параметров. Аналогично, декодер работает противоположно кодеру. В то время как декодер известного уровня техники всегда декодирует положение (pk) и (
Figure 00000064
), декодер, соответствующий вариантам осуществления настоящего изобретения, может декодировать незанятые положения (uk), когда 2·v>n, или может декодировать
Figure 00000065
, когда 2·(v-1)>m-1. После декодирования uk и
Figure 00000065
декодер может преобразовать их в pk,
Figure 00000064
и mk.
Начиная с простого обзора кодирования в соответствии с некоторыми вариантами осуществления настоящего изобретения рассмотрим следующую последовательность операций:
принимается сигнал, кодированный с использованием последовательности импульсов;
определяется количество положений (v) ненулевых импульсов, и может генерироваться код Cv для v, используя уравнение 27 (отметьте, что это дополнительный этап, и кодовое слово (С), конечно, может аппроксимироваться кодами Сπ и Cµ);
определяются положения ненулевых импульсов p1, p2, …, pv; если 2·v≤n, тогда генерировать код Сπ для положения, используя уравнение 25, в противном случае генерировать код Сπ для положения, используя уравнение 25z;
определяются величины m1, m2, …, mv ненулевых импульсов; если 2·(v-1)≤m-1, тогда генерировать код Cµ для величины, используя уравнение 26, в противном случае генерировать код Cµ для величины, используя уравнение 26z;
объединить коды Cv, Сπ и Cµ и образовать кодовое слово (С).
Может быть рассмотрена упрощенная последовательность операций для декодирования в соответствии с некоторыми вариантами осуществления:
принять кодовое слово (С), представляющее сигнал, кодированный с использованием последовательности импульсов;
определить количество положений (v) ненулевых импульсов, в которых v равно наибольшему значению, так что Cv в уравнении 21 не больше С. (Отметим снова, что декодирование может происходить без явного определения Cv в уравнении 21.);
извлечь кодовое слово Сπ и Cµ, основываясь на кодовом слове С и количестве ненулевых положений (v);
если 2·v≤n, тогда декодировать занятые положения p1, p2, …, pv, основываясь на Сπ; в противном случае, декодировать незанятые положения u1, u2,…, uv и вычислить занятые положения из незанятых положений;
если 2·(v-1)≤m-1, тогда декодировать p'1, p'2, …, p'v-1, основываясь на Cµ; в противном случае декодировать u'1, u'2, …, u'v-1. Получить m1, m2, …, mv величины ненулевых положений, основываясь на p'1, p'2, …, p'v-1 или u'1, u'2, …, u'v-1; и
декодировать кодированный сигнал, используя уравнение 31, основываясь на декодированном ненулевом положении и декодированных величинах ненулевых положений.
Ниже дополнительно рассматриваются эти упрощенные последовательности операций.
Ссылаясь теперь на фиг.8, последовательность 800 операций иллюстрирует процесс кодирования работы кодера согласно некоторым вариантам осуществления настоящего изобретения и может рассматриваться с точки зрения адаптивного переключения между кодированием занятых и незанятых положений вектора как функция оценки плотности. В блоке 810 принимается вектор (x), имеющий n положений, подлежащих кодированию. В блоке 820 определяется оценка плотности множества занятых положений из n положений вектора (х). В блоке 830 происходит адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений из n положений в соответствии с оценкой плотности множества занятых положений для генерирования кодированного значения. Оценка плотности положения определяется количеством множества незанятых положений относительно количества множества занятых положений, и поэтому адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений дополнительно содержит кодирование множества незанятых положений, когда количество множества незанятых положений меньше порогового значения; и кодирование множества занятых положений, когда количество множества незанятых положений не меньше порога. Пороговое значение может рассматриваться равным количеству множества занятых положений, такому как n/2. Кодовое слово (С) генерируется из множества кодовых значений, причем каждое значение определяется на множестве положений из n положений вектора (х).
Ссылаясь теперь на фиг.9, последовательность 900 операций иллюстрирует процесс декодирования работы декодера согласно некоторым вариантам осуществления настоящего изобретения. В блоке 910 принимается кодовое слово (С), представляющее сигнал, кодированный с использованием последовательности импульсов. В блоке 920 определяется оценка плотности множества занятых положений из n положений вектора (х), основываясь на кодовом слове С. В блоке 930 выполняется адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений вектора х в соответствии с оценкой плотности множества занятых положений для генерирования декодированного значения. Оценка плотности положения может определяться количеством множества незанятых положений относительно количества множества занятых положений, и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений может дополнительно содержать: декодирование множества незанятых положений для генерирования множества декодированных незанятых положений и генерирование множества декодированных занятых положений из множества декодированных незанятых положений, когда количество множества незанятых положений меньше порогового значения; и декодирование множества занятых положений, когда количество множества незанятых положений не больше порога. Пороговое значение может представлять собой количество множества занятых положений. Вектор (х) генерируется соответствующим образом из декодированного значения в данном случае. Оно может дополнительно осуществляться посредством извлечения кода Cµ и кода Сπ из кодового слова (С), основываясь на количестве множества занятых положений v вектора х.
Сформулировав несколько по-другому, последовательности 1000 и 1100 операций на фиг.10 и 11 соответственно иллюстрируют использование оценки плотности, но с точки зрения рассмотрения непосредственно количества незанятых положений относительно порога, такого как количество занятых положений. Последовательность 1000 операций на фиг.10 иллюстрирует способ работы кодера, который действует для кодирования кодового слова (С) из вектора (х). В блоке 1010 принимается вектор (х), имеющий n положений, подлежащих кодированию. Блок 1020 принятия решения запрашивает, меньше ли порога количество множества незанятых положений из n положений вектора (х). Если ДА, тогда в блоке 1030 определяются значения множества незанятых положений из n положений вектора (х) и генерируется кодовое слово (С) из значений множества незанятых положений. Если НЕТ, тогда в блоке 1040 определяются значения множества занятых положений, и генерируется кодовое слово (С) из значений множества занятых положений.
Для кодирования величин импульса в примерном варианте осуществления, в котором количество множества незанятых положений из n положений вектора (х) меньше порога, равного (m-1)/2, определение значений множества незанятых положений может дополнительно содержать: определение множества величин m1, m2, …, mv импульса из множества занятых положений; генерирование множества незанятых положений
Figure 00000066
импульса, основываясь на множестве величин импульса; и кодирование множества величин, когда 2·(v-1)>m-1, посредством кодирования положения m-v незанятых положений импульса, расположенных в m-1 расположениях, для генерирования кода Cµ для множества величин импульса. Кодирование множества величин импульса множества незанятых положений тогда может дополнительно содержать: генерирование кода Cµ для множества величин в соответствии с
Figure 00000067
Figure 00000068
, где
Figure 00000069
принадлежит множеству U', определенному как U'={0,1,…,m-2}-{p'1, p'2, …, p'v-1} и
Figure 00000070
.
Кодовое слово (С) в данном случае может, по меньшей мере частично, определяться кодом Cµ множества величин импульса.
Продолжая с примерным вариантом осуществления, в котором количество множества незанятых положений из n положений вектора (х) меньше порога, также может необязательно выполняться кодирование множества положений импульса из множества незанятых положений для генерирования кода Сπ для множества незанятых положений. Код Сπ для множества незанятых положений генерируется в соответствии с
Figure 00000071
0≤uk<n.
Кроме того, кодирование множества положений импульса множества занятых положений для генерирования кода Сπ для множества занятых положений может выполняться в соответствии с
Figure 00000072
0≤pk<n. Само собой разумеется, что в таких случаях кодовое слово (С), по меньшей мере частично, определяется кодами Сπ и Cµ.
Хотя было описано, что может выполняться кодирование как величины, так и положения, и кодирование положения может выполняться в комбинации с кодированием величины, эти два типа кодирования могут выполняться отдельно или в комбинации. Например, в случае, в котором желательно выполнить только кодирование положения, рассмотрим следующее. Определение множества положений p1, p2, …, pv ненулевого импульса в векторе х может содержать: селективное кодирование множества незанятых положений для генерирования кода Сπ для множества незанятых положений в соответствии с
Figure 00000071
0≤uk<n. И наоборот, если выполняется только кодирование величины, и где количество множества незанятых положений из n положений вектора (х) не меньше порога, равного (m-1)/2, определение значений множества занятых положений и генерирование кодового слова (С) из значений множества занятых положений может дополнительно содержать: определение множества величин m1, m2, …, mv импульса множества занятых положений, когда 2·(v-1)≤m-1 для генерирования кода Cµ для величин импульса в соответствии с
Figure 00000073
Figure 00000074
Figure 00000075
; и генерирование кодового слова С из по меньшей мере кода Cµ.
В этих случаях, однако, если количество множества незанятых положений из n положений вектора (х) не меньше порога, способ включает в себя определение значений множества занятых положений и генерирование кодового слова (С) из значений множества занятых положений и в случае кодирования положения дополнительно содержит: кодирование множества положений p1, p2, …, pv импульса множества занятых положений для генерирования кода Сπ в соответствии с
Figure 00000076
0≤pk<n.
Ссылаясь обратно на фиг.4, работа кодера 400 содержит следующее схемы 106 комбинаторного кодирования: прием вектора (х), имеющего n положений, подлежащих кодированию; определение оценки плотности множества занятых положений из n положений вектора (х); и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений из n положений в соответствии с оценкой плотности множества занятых положений для генерирования кодированного значения. Как ранее предложено, оценка плотности положения может определяться количеством множества незанятых положений относительно количества множества занятых положений и адаптивным переключением между кодированием множества занятых положений и кодированием множества незанятых положений, выполняемым схемой комбинаторного кодирования. Это кодирование дополнительно содержит: кодирование множества незанятых положений, когда количество множества незанятых положений меньше порогового значения; и кодирование множества занятых положений, когда количество множества незанятых положений не меньше порога. Как дополнительно описано, определение оценки плотности и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений, основываясь на оценке плотности, может выполняться динамически на множестве положений из n положений вектора (х).
Последовательность 1100 операций на фиг.11 иллюстрирует способ работы декодера, который действует для генерирования вектора (х) из принятого кодового слова (С). В блоке 1110 принимается кодовое слово (С), представляющее сигнал, кодированный с использованием последовательности импульсов. В блоке 1120 принятия решения выполняется запрос, является ли количество множества незанятых положений из n положений вектора (х) меньше порога. Если ДА, тогда в блоке 1130 декодируется множество незанятых положений из n положений вектора (х) и множество занятых положений, основываясь на декодированном множестве незанятых положений. В блоке 1140 генерируется множество декодированных значений занятых положений из множества незанятых положений, и вектор (х) генерируется из множества декодированных значений незанятых и занятых положений. Если НЕТ, тогда последовательность операций переходит на блок 1150, где декодируется множество занятых положений.
Можно понять, что код Cµ и код Сπ могут извлекаться из кодового слова (С), основываясь на количестве множества занятых положений v вектора х.
При условии, при котором количество множества незанятых положений из n положений вектора (х) меньше порога, декодирование величины может дополнительно содержать: декодирование множества незанятых положений
Figure 00000069
импульса; декодирование множества величин m1, m2, …, mv импульса множества занятых положений из извлеченного кода Cµ и множества декодированных незанятых положений
Figure 00000069
импульса; и декодирование кодового слова (С), используя декодированное множество величин m1, m2, …, mv импульса множества занятых положений для генерирования вектора (х) в соответствии с
Figure 00000077
=mksk.
Аналогично, если количество множества незанятых положений из n положений вектора (х) меньше порога, декодирование положения может содержать: декодирование множества незанятых положений uk импульса; генерирование множества декодированных занятых положений импульса из множества декодированных незанятых положений uk импульса; и декодирование кодового слова (С), используя декодированные незанятые положения импульса и декодированные занятые положения импульса для генерирования вектора (х).
Ссылаясь снова на фиг.6, работа декодера 600 содержит следующее схемы 206 комбинаторного декодирования: прием кодового слова (С), представляющего сигнал, кодированный с использованием последовательности импульсов; определение оценки плотности множества занятых положений из n положений вектора (х), основываясь на кодовом слове С; и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений вектора х в соответствии с оценкой плотности множества занятых положений для генерирования декодированного значения. Снова, как описано выше, оценка плотности положения может определяться количеством множества незанятых положений относительно количества множества занятых положений, и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений, выполняемым схемой комбинаторного декодирования, дополнительно содержит: декодирование множества незанятых положений для генерирования множества декодированных незанятых положений и генерирование множества декодированных занятых положений из множества декодированных незанятых положений, когда количество множества незанятых положений меньше порогового значения; и декодирование множества занятых положений, когда количество множества незанятых положений не меньше порога. Как описано ниже, определение оценки плотности и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений, основываясь на оценке плотности, могут выполняться динамически на множестве положений из n положений вектора (х).
Как ранее упомянуто, переключение между режимами кодирования или декодирования может происходить динамически на более чем одном расположении как функция оценки плотности в различных расположениях.
Согласно различным вариантам осуществления настоящего изобретения кодировать ли занятые положения или кодировать ли незанятое положение основывается на средней плотности, которая определяется как отношение занятых положений к количеству расположений. В предыдущем разделе изобретатели показали способ, в котором решение принимается только один раз, и один и тот же подход, т.е. или кодирование занятых положений, или кодирование незанятого положения принимается для всех положений. Так как распределение занятых положений может быть неравномерным по всем расположениям, плотность также является неравномерной. Следовательно, может быть целесообразным выполнять переключение принятия решения на кодирование занятых или незанятых положений, основываясь на плотности в различных случаях. Изобретатели иллюстрируют это на примере. Они рассматривают случай, когда из n=27 расположений 16 положений являются занятыми. Занятыми положениями являются 0, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24 и 25. В способе известного уровня техники эти занятые положения непосредственно кодируются с использованием уравнения 26, и, как описано выше, количество занятых положений больше n/2, незанятые положения 1, 2, 3, 4, 5, 6, 8, 11, 14, 23 и 26 кодируются с использованием уравнения 26z. Отметьте, что кодер известного уровня техники требовал 16 вычислений комбинаторной функции, тогда как кодер в настоящем изобретении требует 11 вычислений комбинаторной функции F или F' в данном примере. Рассматривая занятые и незанятые положения, можно видеть, что кодирование с использованием занятого положения до первых 5 положений импульса, т.е. положения 0, 7, 9, 10 и 12, и затем кодирование незанятых положений, т.е. положений 14, 23 и 26, уменьшает до 8 вычислений комбинаторных функций в кодере. Однако декодеру необходимо знать, какой способ используется для кодирования и где происходит переключение с одного способа на другой способ. Так как декодер начинает декодирование с самого старшего положения до самого младшего положения, самое старшее положение кодируется на основе количества занятых положений. Затем оценивается плотность занятых положений, и, если плотность меньше 0,5, тогда кодируется следующее занятое положение, в противном случае кодируется следующее незанятое положение.
Для иллюстрации этого изобретатели снова рассматривают вышеприведенный пример. Так как начальная плотность занятых положений больше 0,5, самое старшее незанятое положение 26 кодируется как F'(26,11). Теперь оценка плотности занятых положений составляет 16 положений в 26 расположениях, которая также больше 0,5, и, следовательно, следующее незанятое положение 23 кодируется как F'(23,10). Теперь можно сделать вывод (даже на декодере), что положения 24 и 25 были заняты. Плотность занятых положений теперь становится 14 занятых положений в 23 расположениях, которая все еще больше 0,5, и, следовательно, следующее незанятое положение 14 кодируется как F'(14,9). Легко можно оценить, что плотность остального занятого положения составляет 6 импульсов в 14 расположениях, которая меньше 0,5. Теперь следующее занятое положение 13 кодируется как F'(13,6). Теперь плотность занятых положений оценивается как 5 импульсов в 13 расположениях, которая меньше 0,5, и, следовательно, кодируется следующее во времени занятое положение, т.е. положение 12 кодируется как F'(12,5). Теперь имеется 4 занятых положения в 12 расположениях, и, следовательно, снова занятое положение кодируется как F'(10,4). Используя эти же аргументы, следующие три занятых положения кодируются как F'(9,3), F'(7,2) и F'(0,1). Таким образом, кодовое слово
Figure 00000078
требует девять вычислений комбинаторных функций в данном примере.
ДИНАМИЧЕСКОЕ ПЕРЕКЛЮЧЕНИЕ - КОДЕР
В отношении динамического переключения между методологиями кодирования в одном или нескольких позиционных расположениях такое переключение может представлять собой функцию оценки плотности, определенной на одном или нескольких расположениях. Таким образом, определение оценки плотности и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений, основываясь на оценке плотности, выполняется динамически на множестве положений из n положений вектора (х). Определяются занятые положения p1, p2, …, pv и незанятые положения u1, u2, …, uv из n положений вектора (х). Для положений pk из n положений:
а. если 2·v>n, кодирование самых старших незанятых положений как F'(un-v,v), но, если 2·v≤n, тогда кодирование самого старшего незанятого положения как F'(pv,v), причем последнее кодированное положение (ρ) устанавливается на pv или un-v;
b. вычисление количества занятых положений (η) и количества незанятых положений (ε), которое меньше последнего кодированного положения (ρ);
с. если 2·η≤ρ, тогда получение максимального занятого положения pk менее ρ и кодирование положения как F'(pk,η), причем последним кодированным положением является ρ=pk;
d. если 2·η>ρ, тогда получение максимального незанятого положения uk менее ρ и кодирование положения как F'(uk,ε), причем последним кодированным положением является ρ=uk;
e. повторение b, c и d до тех пор, пока η или ε не будет равно 0.
Коды положения, сгенерированные в d и e, могут суммироваться для генерирования кода Сπ положения.
В случае кодирования величины, определяется множество величин m1, m2, …, mv импульса множества занятых положений. Затем также определяются занятые положения p'1, p'2, …, p'v-1, и незанятые положения u'1, u'2, …, u'm-v из n положений вектора (х), основываясь на множестве величин m1, m2, …, mv импульса. Для положений p'k из n положений:
а. если 2·(v-1)>m-1, кодирование самых старших незанятых положений как F'(u'm-v,v-1), но если 2·(v-1)≤m-1, тогда кодирование самого старшего незанятого положения как F'(p'v,v-1), причем последнее кодированное положение (ρ') устанавливается на p'v или u'm-v;
b. вычисление количества занятых положений (η') и количества незанятых положений (ε'), которые меньше последнего кодированного положения (ρ');
с. если 2·η'≤ρ', тогда получение максимального занятого положения p'k меньшего ρ' и кодирование положения как F'(p'k,η'), причем последним кодированным положением является ρ'=p'k;
d. если 2·η'>ρ', тогда получение максимального незанятого положения u'k меньшего ρ' и кодирование положения как F'(u'k,ε'), причем последним кодированным положением является ρ'=u'k;
e. повторение b, c и d до тех пор, пока η' или ε' не будет равно 0.
Коды положения, сгенерированные в d и e, суммируются для генерирования кода Cµ положения.
ДИНАМИЧЕСКОЕ ПЕРЕКЛЮЧЕНИЕ - ДЕКОДЕР
В отношении динамического переключения во время декодирования определяется оценка плотности, и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений, основываясь на оценке плотности, динамически выполняется на множестве положений из n положений вектора (х). Для декодирования положения переключение содержит для положений pk из n положений:
а. если 2·v>n, декодирование самых старших незанятых положений как F'(un-v,v) из кода Сπ, но если 2·v≤n, тогда декодирование самого старшего занятого положения как F'(pv,v), причем последнее декодированное положение (ρ) устанавливается на pv или un-v;
b. вычисление количества занятых положений (η) и количества незанятых положений (ε), которые меньше последнего декодированного положения (ρ);
с. если 2·η≤ρ, тогда получение максимального занятого положения pk меньшего ρ и декодирование положения как F'(pk,η), причем последним декодированным положением является ρ=pk;
d. если 2·η>ρ, тогда получение максимального незанятого положения uk меньшего ρ и декодирование положения как F'(uk,ε), причем последним декодированным положением является ρ=uk;
e. повторение b, c и d до тех пор, пока η или ε не будет равно 0.
Декодируется множество занятых положений из максимальных занятых положений pk и максимальных незанятых положений uk, сгенерированных в a, b, c, d и e.
В отношении декодирования величины определяется множество величин m1, m2, …, mv импульса множества занятых положений. Также определяются занятые положения p'1, p'2, …, p'v-1, и незанятые положения u'1, u'2, …, u'm-v из n положений вектора (х), основываясь на множестве величин m1, m2, …, mv импульса. И для положений p'k из n положений:
а. если 2·(v-1)>m-1, декодирование самых старших незанятых положений как F'(u'm-v,v-1) из кода Cµ, но если 2·(v-1)≤m-1, тогда декодирование самого старшего незанятого положения как F'(p'v,v-1), причем последнее декодированное положение (ρ') устанавливается на p'v или u'm-v;
b. вычисление количества занятых положений (η') и количества незанятых положений (ε'), которые меньше последнего декодированного положения (ρ');
с. если 2·η'≤ρ', тогда получение максимального занятого положения p'k меньшего ρ' и декодирование положения как F'(p'k,η'), причем последним декодированным положением является ρ'=p'k;
d. если 2·η'>ρ', тогда получение максимального незанятого положения u'k меньшего ρ' и декодирование положения как F'(u'k,ε'), причем последним декодированным положением является ρ'=u'k;
e. повторение b, c и d до тех пор, пока η' или ε' не будет равно 0.
Декодируется множество занятых положений из максимальных занятых положений pk и максимальных незанятых положений uk, сгенерированных в a, b, c, d и e.
В вышеприведенном описании изобретения были описаны конкретные варианты осуществления настоящего изобретения. Однако специалист в данной области техники оценит, что могут быть сделаны различные модификации и изменения без отступления от объема настоящего изобретения, изложенного в формуле изобретения ниже. Следовательно, описание изобретения и фигуры должны рассматриваться в иллюстративном, а не ограничительном смысле, и все такие модификации, как предполагается, включены в объем настоящего изобретения. Достоинства, преимущества, решения проблем и любой элемент(ы), которые могут вызвать то, что любое достоинство, преимущество или решение происходит или становится более отчетливым, не должны толковаться в качестве критических, необходимых или существенных признаков или элементов любого или всех пунктов формулы изобретения. Изобретение определяется исключительно прилагаемой формулой изобретения, включающей в себя любые исправления, сделанные во время рассмотрения данной заявки и всех эквивалентов заявленных пунктов формулы изобретения.

Claims (10)

1. Способ работы кодера, который кодирует кодовое слово (С) из вектора (х), содержащий:
прием вектора (х), имеющего n положений, подлежащих кодированию;
определение оценки плотности множества занятых положений из n положений вектора (х); и
адаптивное переключение между кодированием этого множества занятых положений и кодированием множества незанятых положений из n положений в соответствии с оценкой плотности упомянутого множества занятых положений для генерирования кодированного значения для кодового слова, причем это кодированное значение содержит упомянутую оценку плотности для использования соответствующим декодером.
2. Способ по п.1, в котором определение оценки плотности и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений на основе оценки плотности динамически выполняется на множестве положений из n положений вектора (х).
3. Способ по п.1, в котором оценка плотности положения определяется количеством множества незанятых положений относительно количества множества занятых положений, и при адаптивном переключении между кодированием множества занятых положений и кодированием множества незанятых положений:
если количество множества незанятых положений из n положений вектора (х) меньше порога, определяют значения множества незанятых положений из n положений вектора (х) и генерируют кодовое слово (С) из значений множества незанятых положений, и
в противном случае, если количество множества незанятых положений вектора (х) не меньше порога, определяют значения множества занятых положений и генерируют кодовое слово (С) из значений множества занятых положений.
4. Кодер, содержащий:
схему комбинаторного кодирования, выполненную с возможностью:
приема вектора (х), имеющего n положений, подлежащих кодированию;
определения оценки плотности множества занятых положений из n положений вектора (х);
адаптивного переключения между кодированием этого множества занятых положений и кодированием множества незанятых положений из n положений в соответствии с оценкой плотности упомянутого множества занятых положений для генерирования кодированного значения для кодового слова, причем это кодированное значение содержит упомянутую оценку плотности для использования соответствующим декодером.
5. Кодер по п.4, в котором оценка плотности положения определяется количеством множества незанятых положений относительно количества множества занятых положений, и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений, выполняемое схемой комбинаторного кодирования, дополнительно содержит:
кодирование множества незанятых положений, когда количество множества незанятых положений меньше порогового значения; и
кодирование множества занятых положений, когда количество множества незанятых положений не меньше порога.
6. Кодер по п.4, в котором определение оценки плотности и адаптивное переключение между кодированием множества занятых положений и кодированием множества незанятых положений на основе оценки плотности динамически выполняется на множестве положений из n положений вектора (х).
7. Способ работы декодера, который генерирует вектор (х) из кодового слова (С), содержащий:
прием кодового слова (С), представляющего сигнал, кодированный с использованием последовательности импульсов;
определение оценки плотности множества занятых положений из n положений вектора (х) на основе кодового слова С; и
адаптивное переключение между декодированием этого множества занятых положений и декодированием множества незанятых положений вектора (х) в соответствии с оценкой плотности упомянутого множества занятых положений для генерирования декодированного значения.
8. Способ по п.7, в котором определение оценки плотности и адаптивное переключение между декодированием множества занятых положений и декодированием множества незанятых положений на основе оценки плотности динамически выполняется на множестве положений из n положений вектора (х).
9. Способ по п.8, в котором оценка плотности положения определяется количеством множества незанятых положений относительно количества множества занятых положений и при адаптивном переключении между декодированием множества занятых положений и декодированием множества незанятых положений:
если количество множества незанятых положений из n положений вектора (х) меньше порога, декодируют множество незанятых положений из n положений вектора (х) и декодируют множество занятых положений на основе декодированного множества незанятых положений;
генерируют множество декодированных значений занятых положений из множества незанятых положений и генерируют вектор (х) из множества декодированных значений незанятых и занятых положений, и
в противном случае, если количество множества незанятых положений вектора (х) не меньше порога, декодируют множество занятых положений.
10. Декодер, содержащий: схему комбинаторного декодирования, выполненную с возможностью:
приема кодового слова (С), представляющего сигнал, кодированный с использованием последовательности импульсов;
определение оценки плотности множества занятых положений из n положений вектора (х) на основе кодового слова (С); и
адаптивного переключения между декодированием множества занятых положений и декодированием множества незанятых положений вектора (х) в соответствии с оценкой плотности множества занятых положений для генерирования декодированного значения.
RU2010141852/08A 2008-03-13 2009-03-09 Устройство и способ комбинаторного кодирования малой сложности сигналов RU2471288C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/047,586 US7889103B2 (en) 2008-03-13 2008-03-13 Method and apparatus for low complexity combinatorial coding of signals
US12/047,586 2008-03-13
PCT/US2009/036479 WO2009114453A1 (en) 2008-03-13 2009-03-09 Apparatus and method for low complexity combinatorial coding of signals

Publications (2)

Publication Number Publication Date
RU2010141852A RU2010141852A (ru) 2012-04-20
RU2471288C2 true RU2471288C2 (ru) 2012-12-27

Family

ID=40811155

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2010141852/08A RU2471288C2 (ru) 2008-03-13 2009-03-09 Устройство и способ комбинаторного кодирования малой сложности сигналов

Country Status (9)

Country Link
US (1) US7889103B2 (ru)
EP (1) EP2277268A1 (ru)
KR (1) KR101233057B1 (ru)
CN (1) CN102037650B (ru)
BR (1) BRPI0909699B1 (ru)
MX (1) MX2010010044A (ru)
MY (1) MY151357A (ru)
RU (1) RU2471288C2 (ru)
WO (1) WO2009114453A1 (ru)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461106B2 (en) * 2006-09-12 2008-12-02 Motorola, Inc. Apparatus and method for low complexity combinatorial coding of signals
US8576096B2 (en) * 2007-10-11 2013-11-05 Motorola Mobility Llc Apparatus and method for low complexity combinatorial coding of signals
US8209190B2 (en) * 2007-10-25 2012-06-26 Motorola Mobility, Inc. Method and apparatus for generating an enhancement layer within an audio coding system
US20090234642A1 (en) * 2008-03-13 2009-09-17 Motorola, Inc. Method and Apparatus for Low Complexity Combinatorial Coding of Signals
US8639519B2 (en) 2008-04-09 2014-01-28 Motorola Mobility Llc Method and apparatus for selective signal coding based on core encoder performance
US8200496B2 (en) * 2008-12-29 2012-06-12 Motorola Mobility, Inc. Audio signal decoder and method for producing a scaled reconstructed audio signal
US8140342B2 (en) * 2008-12-29 2012-03-20 Motorola Mobility, Inc. Selective scaling mask computation based on peak detection
US8219408B2 (en) * 2008-12-29 2012-07-10 Motorola Mobility, Inc. Audio signal decoder and method for producing a scaled reconstructed audio signal
US8175888B2 (en) * 2008-12-29 2012-05-08 Motorola Mobility, Inc. Enhanced layered gain factor balancing within a multiple-channel audio coding system
US9185423B2 (en) * 2009-02-12 2015-11-10 Zoran (France) S.A. Frame buffer compression for video processing devices
JP5525540B2 (ja) 2009-10-30 2014-06-18 パナソニック株式会社 符号化装置および符号化方法
US8149144B2 (en) * 2009-12-31 2012-04-03 Motorola Mobility, Inc. Hybrid arithmetic-combinatorial encoder
US8428936B2 (en) * 2010-03-05 2013-04-23 Motorola Mobility Llc Decoder for audio signal including generic audio and speech frames
US8423355B2 (en) * 2010-03-05 2013-04-16 Motorola Mobility Llc Encoder for audio signal including generic audio and speech frames
US8751244B2 (en) * 2011-05-02 2014-06-10 Motorola Mobility Llc Apparatus and method for low complexity combinatorial coding and decoding of signals
US8731081B2 (en) * 2011-12-07 2014-05-20 Motorola Mobility Llc Apparatus and method for combinatorial coding of signals
US9129600B2 (en) 2012-09-26 2015-09-08 Google Technology Holdings LLC Method and apparatus for encoding an audio signal
US9620136B2 (en) 2014-08-15 2017-04-11 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9990931B2 (en) 2014-08-15 2018-06-05 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9672838B2 (en) 2014-08-15 2017-06-06 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
US9336788B2 (en) 2014-08-15 2016-05-10 Google Technology Holdings LLC Method for coding pulse vectors using statistical properties
JP6267250B2 (ja) * 2016-02-25 2018-01-24 株式会社Subaru 油圧回路の異常検知装置、及び、油圧回路の異常検知方法
US10395542B2 (en) * 2016-03-28 2019-08-27 Cisco Technology, Inc. Drone traffic engineering
US10366698B2 (en) * 2016-08-30 2019-07-30 Dts, Inc. Variable length coding of indices and bit scheduling in a pyramid vector quantizer
CN113642276B (zh) * 2021-08-18 2023-05-05 电子科技大学 一种基于数据预编码的sram架构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464714A (en) * 1980-11-12 1984-08-07 U.S. Philips Corporation System for transmitting digital information, coding arrangement for use in that system, decoding arrangement for use in that system and record carrier for use in that system
JPH10282997A (ja) * 1997-04-04 1998-10-23 Nec Corp 音声符号化装置及び復号装置
RU2142166C1 (ru) * 1995-02-06 1999-11-27 Юниверситэ де Шербрук Способ и устройство осуществления поиска в справочнике кодов для кодирования звукового сигнала и система сотовой связи
WO2000016501A1 (en) * 1998-09-11 2000-03-23 Motorola Inc. Method and apparatus for coding an information signal

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4560977A (en) * 1982-06-11 1985-12-24 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
US4670851A (en) * 1984-01-09 1987-06-02 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
US4727354A (en) * 1987-01-07 1988-02-23 Unisys Corporation System for selecting best fit vector code in vector quantization encoding
JP2527351B2 (ja) * 1987-02-25 1996-08-21 富士写真フイルム株式会社 画像デ―タの圧縮方法
US5067152A (en) * 1989-01-30 1991-11-19 Information Technologies Research, Inc. Method and apparatus for vector quantization
DE68922610T2 (de) * 1989-09-25 1996-02-22 Rai Radiotelevisione Italiana Umfassendes System zur Codierung und Übertragung von Videosignalen mit Bewegungsvektoren.
CN1062963C (zh) * 1990-04-12 2001-03-07 多尔拜实验特许公司 用于产生高质量声音信号的解码器和编码器
IT1281001B1 (it) 1995-10-27 1998-02-11 Cselt Centro Studi Lab Telecom Procedimento e apparecchiatura per codificare, manipolare e decodificare segnali audio.
DE69926821T2 (de) * 1998-01-22 2007-12-06 Deutsche Telekom Ag Verfahren zur signalgesteuerten Schaltung zwischen verschiedenen Audiokodierungssystemen
US6904174B1 (en) * 1998-12-11 2005-06-07 Intel Corporation Simplified predictive video encoder
KR100354531B1 (ko) * 1998-05-06 2005-12-21 삼성전자 주식회사 실시간 복호화를 위한 무손실 부호화 및 복호화 시스템
US6236960B1 (en) * 1999-08-06 2001-05-22 Motorola, Inc. Factorial packing method and apparatus for information coding
US6504877B1 (en) * 1999-12-14 2003-01-07 Agere Systems Inc. Successively refinable Trellis-Based Scalar Vector quantizers
US6445313B2 (en) * 2000-02-07 2002-09-03 Lg Electronics Inc. Data modulating/demodulating method and apparatus for optical recording medium
JP4149637B2 (ja) * 2000-05-25 2008-09-10 株式会社東芝 半導体装置
US6304196B1 (en) * 2000-10-19 2001-10-16 Integrated Device Technology, Inc. Disparity and transition density control system and method
AUPR105000A0 (en) * 2000-10-27 2000-11-23 Canon Kabushiki Kaisha Method for generating and detecting marks
US7068946B2 (en) * 2001-01-23 2006-06-27 At&T Corp. Modulation scheme for tedons
JP3404024B2 (ja) * 2001-02-27 2003-05-06 三菱電機株式会社 音声符号化方法および音声符号化装置
US6658383B2 (en) * 2001-06-26 2003-12-02 Microsoft Corporation Method for coding speech and music signals
US20030108108A1 (en) * 2001-11-15 2003-06-12 Takashi Katayama Decoder, decoding method, and program distribution medium therefor
US6662154B2 (en) * 2001-12-12 2003-12-09 Motorola, Inc. Method and system for information signal coding using combinatorial and huffman codes
AU2003213149A1 (en) 2002-02-21 2003-09-09 The Regents Of The University Of California Scalable compression of audio and other signals
DE60214599T2 (de) 2002-03-12 2007-09-13 Nokia Corp. Skalierbare audiokodierung
JP3881943B2 (ja) 2002-09-06 2007-02-14 松下電器産業株式会社 音響符号化装置及び音響符号化方法
AU2003208517A1 (en) * 2003-03-11 2004-09-30 Nokia Corporation Switching between coding schemes
CA2524243C (en) 2003-04-30 2013-02-19 Matsushita Electric Industrial Co. Ltd. Speech coding apparatus including enhancement layer performing long term prediction
JP2005005844A (ja) * 2003-06-10 2005-01-06 Hitachi Ltd 計算装置及び符号化処理プログラム
JP4123109B2 (ja) * 2003-08-29 2008-07-23 日本ビクター株式会社 変調装置及び変調方法並びに復調装置及び復調方法
AU2003279612A1 (en) * 2003-11-04 2005-05-19 Sunsail Development Avv Method and system for loss-less data compression
SE527670C2 (sv) 2003-12-19 2006-05-09 Ericsson Telefon Ab L M Naturtrogenhetsoptimerad kodning med variabel ramlängd
US7161507B2 (en) * 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
KR20070092240A (ko) 2004-12-27 2007-09-12 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치 및 음성 부호화 방법
CN101253557B (zh) 2005-08-31 2012-06-20 松下电器产业株式会社 立体声编码装置及立体声编码方法
JP4969454B2 (ja) 2005-11-30 2012-07-04 パナソニック株式会社 スケーラブル符号化装置およびスケーラブル符号化方法
US7230550B1 (en) * 2006-05-16 2007-06-12 Motorola, Inc. Low-complexity bit-robust method and system for combining codewords to form a single codeword
US7414549B1 (en) * 2006-08-04 2008-08-19 The Texas A&M University System Wyner-Ziv coding based on TCQ and LDPC codes
US7461106B2 (en) * 2006-09-12 2008-12-02 Motorola, Inc. Apparatus and method for low complexity combinatorial coding of signals
US8576096B2 (en) * 2007-10-11 2013-11-05 Motorola Mobility Llc Apparatus and method for low complexity combinatorial coding of signals
US8209190B2 (en) * 2007-10-25 2012-06-26 Motorola Mobility, Inc. Method and apparatus for generating an enhancement layer within an audio coding system
US20090234642A1 (en) * 2008-03-13 2009-09-17 Motorola, Inc. Method and Apparatus for Low Complexity Combinatorial Coding of Signals
US8639519B2 (en) * 2008-04-09 2014-01-28 Motorola Mobility Llc Method and apparatus for selective signal coding based on core encoder performance
US8219408B2 (en) * 2008-12-29 2012-07-10 Motorola Mobility, Inc. Audio signal decoder and method for producing a scaled reconstructed audio signal
US8175888B2 (en) 2008-12-29 2012-05-08 Motorola Mobility, Inc. Enhanced layered gain factor balancing within a multiple-channel audio coding system
US8200496B2 (en) * 2008-12-29 2012-06-12 Motorola Mobility, Inc. Audio signal decoder and method for producing a scaled reconstructed audio signal
US8140342B2 (en) * 2008-12-29 2012-03-20 Motorola Mobility, Inc. Selective scaling mask computation based on peak detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464714A (en) * 1980-11-12 1984-08-07 U.S. Philips Corporation System for transmitting digital information, coding arrangement for use in that system, decoding arrangement for use in that system and record carrier for use in that system
RU2142166C1 (ru) * 1995-02-06 1999-11-27 Юниверситэ де Шербрук Способ и устройство осуществления поиска в справочнике кодов для кодирования звукового сигнала и система сотовой связи
JPH10282997A (ja) * 1997-04-04 1998-10-23 Nec Corp 音声符号化装置及び復号装置
WO2000016501A1 (en) * 1998-09-11 2000-03-23 Motorola Inc. Method and apparatus for coding an information signal

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MARKAS Т. и др. Multispectral image compression algorithms, Data Compression Conference, 30.03.1993 - 02.04.1993, c.391-400. *

Also Published As

Publication number Publication date
EP2277268A1 (en) 2011-01-26
MY151357A (en) 2014-05-15
MX2010010044A (es) 2011-03-28
KR101233057B1 (ko) 2013-02-13
RU2010141852A (ru) 2012-04-20
US20090231169A1 (en) 2009-09-17
CN102037650A (zh) 2011-04-27
BRPI0909699A8 (pt) 2018-01-02
BRPI0909699A2 (pt) 2017-10-31
BRPI0909699B1 (pt) 2019-10-08
KR20100135801A (ko) 2010-12-27
US7889103B2 (en) 2011-02-15
CN102037650B (zh) 2014-02-19
WO2009114453A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
RU2471288C2 (ru) Устройство и способ комбинаторного кодирования малой сложности сигналов
JP5013627B2 (ja) 信号の低複雑度組み合わせコーディングのための装置および方法
KR101067212B1 (ko) 신호의 저 복잡도 조합 코딩 장치 및 방법
US20090234642A1 (en) Method and Apparatus for Low Complexity Combinatorial Coding of Signals
US7808406B2 (en) Method and apparatus for realizing arithmetic coding/decoding
Mittal et al. Coding pulse sequences using a combination of factorial pulse coding and arithmetic coding
EP2705517B1 (en) Methods for combinatorial coding and decoding of speech/audio/image/video signals and corresponding electronic encoder/decoder
CN110771045A (zh) 编码装置、解码装置、编码方法、解码方法、以及程序

Legal Events

Date Code Title Description
PC43 Official registration of the transfer of the exclusive right without contract for inventions

Effective date: 20141125

PC41 Official registration of the transfer of exclusive right

Effective date: 20180111