Часть описания этого патентного документа содержит материал, который защищен авторским правом. Владелец авторского права не возражает против факсимильного воспроизведения любым человеком патентного документа или раскрытия патента, в том виде, как он был представлен в патентном файле или в регистрации Ведомства по патентам и товарным знакам, но в остальных отношениях сохраняет за собой все авторские права в любом отношении.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение, в общем, относится к декодированию префиксных кодов переменной длины, например кодов Хаффмана, и более конкретно к новой комбинированной схеме декодирования с использованием декодирования с помощью таблицы преобразования и декодирования, ориентированного по префиксу.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Энтропийное кодирование представляет собой широко используемую методику сжатия данных, на основе которой построено множество стандартов кодирования изображения и звука. Теоретическая основа энтропийного кодирования определяет, что эффект сжатия может быть получен, когда наиболее часто используемые данные кодируют с меньшим количеством битов, чем количество битов, обозначающее менее часто появляющиеся данные. Этот подход позволяет получить потоки кодированных данных, состоящих из кодов, имеющих разную длину.
Существует ряд способов, предназначенных для формирования таких кодов с переменной длиной (КПД, VLC). В одном из популярных способов используют префиксное кодирование, в котором код состоит из префикса, который позволяет системе декодирования распознавать различные коды, и нескольких значащих битов, представляющих конкретное значение (например, при кодировании Хаффмана).
Хотя в большинстве стандартов кодирования используются коды Хаффмана с префиксами, состоящими из последовательности битов "1" или "0", в их схемах кодирования некоторые стандарты (например, ISO/IEC 14496-2, группа экспертов подвижного изображения (MPEG)-4 стандарта кодирования, Visual) позволяют использовать различные схемы кодирования с префиксом, которые состоят из последовательности более длинных комбинаций битов.
Как правило, количество битов, которые составляют код переменной длины, зависит от количества битов, которые составляют префикс кода. Одновременно, экспериментально определенный поднабор наиболее часто появляющихся кодов может иметь относительно короткие префиксы (включая нулевой префикс) и, таким образом, может быть декодирован с использованием таблицы преобразования как единственный код, что может представлять собой более быстрый способ декодирования для конкретной системы.
Поэтому существует потребность обеспечения возможности высокоскоростного декодирования кодов переменной длины, с префиксом из обычных комбинаций битов, в соответствии с действительным распределением частота - длина кода.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Свойства и преимущества настоящего изобретения будут очевидны из следующего подробного описания настоящего изобретения, в котором:
на фиг.1 показана схема примера кодирования с переменной длиной кода;
на фиг.2 показана схема, иллюстрирующая взаимоотношения между битами, первоначально считываемыми из потока битов, выделенными битами и таблицей, содержащей декодированные величины, индикатор достоверности и вспомогательную информацию;
на фиг.3 показана блок-схема алгоритма, иллюстрирующая процесс декодирования с переменной длиной, в соответствии с вариантом выполнения настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Вариант выполнения настоящего изобретения представляет собой способ выполнения декодера для кодов переменной длины, которые имеют префиксы, состоящие из правильных последовательностей битов. Для применения раскрытого способа к конкретной схеме кодирования, такая схема должна содержать поднабор наиболее часто используемых кодов с относительно короткими префиксами (включая нулевой префикс), так что операция сканирования префикса становится неэффективной. В соответствии с раскрытым способом количество битов, не меньшее чем максимальная возможная длина КПД, считывают из потока битов. Затем заданное количество битов выбирают и используют как индекс для структуры данных, которая содержит, по меньшей мере, декодированную величину и индикатор достоверности, вместе с другими предварительно кодированными данными, включая без ограничений: тип и длину префикса, максимальную длину кода для группы кодов, действительную длину кода и количество битов для возврата в поток битов. Индикатор достоверности используют для определения, следует ли продолжать операцию декодирования или получить достоверное декодированное значение из структуры данных и возвратить избыточные биты в поток битов. Если декодированное значение обозначено как недостоверное, операцию декодирования продолжают и применяют способ декодирования, который выполняет оценку длины префикса кода и количества значимых битов, соответствующих полученной оценке длины к битам, первоначально считанным из потока битов. Раскрытый способ требует меньше памяти, чем способы декодирования с непосредственным использованием таблицы преобразования, и эффективность этого способа обеспечивает меньшие затраты для доступа к памяти по сравнению со способами предшествующего уровня техники, в которых используют множество таблиц преобразования. Кроме того, данный способ, вероятно, является более эффективным для декодирования кодов с "коротким префиксом" по сравнению с другими способами, ориентированными на префикс, поскольку он исключает операции определения типа и длины префикса для наиболее часто используемых кодов.
Ссылка в описании на "один вариант выполнения" или "вариант выполнения" настоящего изобретения означает, что конкретное свойство, структура или характеристика, описанная в связи с вариантом выполнения, включена, по меньшей мере, в один вариант выполнения настоящего изобретения. Таким образом, появление фразы "в одном варианте выполнения" в различных местах описания не обязательно относится к этому же варианту выполнения.
На фиг.1 показана схема, иллюстрирующая пример кодирования переменной длины. Как представлено на фиг.1, каждый код переменной длины имеет группу битов, используемых как префикс 10, и группу значимых битов 12. Префиксы могут быть состоять из группы битов (последовательности битов), которые (в общем случае) дублируют друг друга и связаны друг с другом. Биты, которые следуют после префикса кода, можно называть значимыми битами.
Коды переменной длины (КПД) могут иметь идентичные префиксы. В этом случае, коды составляют группу кода префикса, но одновременно количество значимых битов, которые следуют после префикса, может быть различным. Максимальное количество значимых битов, которое возможно для кодов в такой группе, может быть обозначено как максимальное количество битов. Количество битов, которое следует после префикса для каждого КПД, можно назвать действительным количеством битов.
На фиг.2 показана схема, иллюстрирующая взаимозависимость между битами, первоначально считанными из потока битов, выбранными битами и таблицей, содержащей декодированную величину, индикатор достоверности и вспомогательную информацию, в соответствии с вариантом выполнения настоящего изобретения. Как представлено в примере 2, количество битов 20, не меньшее чем любая возможная длина КПД, то есть количество битов, достаточное для содержания самого длинного КПД в конкретной схеме кодирования, может быть считано из потока битов. Из считанных битов можно выбрать любое количество ведущих битов 22. Структура 24 данных позволяет содержать, по меньшей мере, декодированные данные и индикатор достоверности для каждой комбинации битов, которые могут быть сформированы из выбранных битов. Структура 24 данных может также содержать вспомогательную информацию по типу префикса, длине кода и количество битов для возврата в поток битов для упрощения будущего декодирования.
На фиг.3 показана блок-схема алгоритма, иллюстрирующая процесс декодирования с переменной длиной, в соответствии с вариантом выполнения настоящего изобретения. В блоке 100 количество битов, не меньшее чем любая возможная длина кода с переменной длиной, считывают из потока битов. Количество считанных битов должно быть достаточным для содержания самого длинного кода с переменной длиной, но не ограничивается сохранением дополнительных битов, поскольку это может упростить процесс декодирования (например, считанные биты соответствуют размеру слова машины). Затем в блоке 102 из ранее считанных битов можно выбрать заданное количество битов. Количество выбираемых битов зависит от конкретной используемой схемы кодирования и поэтому определяется внешним средством. Определение следует выполнять с помощью такого способа, который позволяет охватывать выбранными битами наиболее часто используемые (наиболее вероятные) КПД и одновременно минимизировать размер таблицы преобразования кода. В блоке 104 таблицу преобразования кода индексируют значением, сформированным из выбранных битов, и получают, по меньшей мере, декодированные значения и индикатор достоверности, а также вспомогательную информацию. В одном варианте выполнения, получение вспомогательной информации является не обязательным. Индикатор достоверности затем проверяют в блоке 106 и, если получают достоверный результат, декодированное значение, полученное в блоке 104, возвращают как результат процесса декодирования в блок 108. В случае необходимости, действительную длину кода или разность между действительной длиной и количеством выбранных битов (полученным в блоке 104 как вспомогательная информация) можно проверять для регулирования потока битов после декодирования.
Если декодированные данные окажутся недостоверными, способ декодирования, ориентированный на префикс (то есть способ, который выполняет оценку длины префикса кода и количества значимых битов, соответствующих полученной оценке длины), применяют в блоке 110 к битам, первоначально считанным из потока битов. Вспомогательная информация, полученная в блоке 104, может описывать тип и длину префикса кода и, таким образом, повышать эффективность способа, применяемого далее.
Пример варианта выполнения настоящего изобретения, представленный на языках программирования С и Ассемблер, приведен в Приложении А. Этот пример является неограничивающим, и специалист в данной области техники может выполнить настоящее изобретение с использованием других языков программирования без отхода от объема заявленного изобретения.
Описанная здесь методика не ограничивается какими-либо конкретными аппаратными средствами или программными конфигурациями; ее можно использовать в любой вычислительной или обрабатывающей данные среде. Эта технология может быть выполнена в виде логических средств, воплощенных в аппаратных средствах, программных средствах или встроенных средства или с использованием их комбинаций. Методика может быть выполнена в виде программ, выполняемых на программируемых устройствах, таких как мобильные или стационарные компьютеры, карманные персональные компьютеры, телевизионные приставки, сотовые телефоны и пейджеры, и других электронных устройствах, каждое из которых включает процессор, носитель информации, считываемый процессором (включая энергозависимую и энергонезависимую память и/или элементы накопителя информации), по меньшей мере, одно входное устройство и одно или больше выходных устройств. Программный код применяют к вводимым данным с использованием входного устройства для выполнения описанных функций и для генерирования выходной информации. Выходная информация может поступать в одно или больше выходные устройства. Для специалистов в данной области техники будет понятно, что изобретение может быть выполнено на практике с использованием различных конфигураций компьютерной системы, включая микропроцессорную систему, миникомпьютеры, универсальные вычислительные машины и т.п. Изобретение также может быть выполнено в распределенных вычислительных средах, задачи которых могут выполняться с использованием дистанционных устройств обработки, которые соединены через систему передачи данных.
Каждая программа может быть выполнена в виде процедур высокого уровня или языка объектно-ориентированного программирования для обеспечения передачи данных в систему обработки данных. Однако программа может быть выполнена на языке Ассемблер или на языке программирования, если это требуется. В любом случае, язык может быть компилирован или интерпретирован.
Программные инструкции можно использовать для обеспечения выполнения системой обработки общего назначения или специального назначения, которая запрограммирована с использованием инструкций для выполнения операций, описанных в них. В качестве альтернативы, операции могут быть выполнены с использованием конкретных аппаратных компонентов, которые содержат аппаратные логические средства для выполнения операций, или с использованием комбинаций запрограммированных компьютерных компонентов и специализированных аппаратных компонентов. Способы, описанные здесь, могут быть выполнены как компьютерный программный продукт, который может включать считываемый машиной носитель информации, на котором записаны инструкции, которые можно использовать для программирования системы обработки или другого электронного устройства для выполнения этих способов. Термин "считываемый машиной носитель информации", используемый здесь, должен включать любой носитель информации, который позволяет сохранять или кодировать последовательность инструкций для выполнения в устройстве и который обеспечивает выполнение машиной любого из способов, описанных здесь. Термин "считываемый машиной носитель информации", соответственно, должен включать, без ограничений, твердотельное запоминающее устройство, оптические и магнитные диски, а также несущую волну, в которой закодирован сигнал данных. Кроме того, в данной области техники можно говорить о программных средствах в одной или другой форме (например, о программной процедуре, процессе, прикладной программе, модуле, логической программе и так далее), как выполняющих действия или позволяющих получать результат. Такие выражения представляют собой просто сокращенный способ описания выполнения программного средства в системе обработки данных для выполнения процессором действия или получения результата.
Хотя данное изобретение было описано со ссылкой на иллюстративные варианты выполнения, его описание не предназначено для использования в ограничивающем смысле. Различные модификации представленных в качестве иллюстраций вариантов выполнения, а также другие варианты выполнения изобретения, которые будут очевидны для специалистов в данной области техники, к которой относится изобретение, рассматриваются как находящиеся в пределах сущности и объема изобретения.
Изобретение относится к декодированию префиксных кодов переменной длины, например кодов Хаффмана, и более конкретно к комбинированной схеме декодирования с использованием декодирования с помощью таблицы преобразования и декодирования, ориентированного по префиксу. Сущность изобретения состоит в том, что из потока битов считывают количество битов, не меньшее чем максимально возможная длина кода переменной длины (КПД), выбирают заданное количество битов, которое используют в качестве индекса для структуры данных, которая содержит, по меньшей мере, декодированное значение и индикатор достоверности. Индикатор достоверности используют для определения, следует ли продолжить декодирование или получить достоверное декодированное значение из структуры данных и возвратить избыточные биты в поток битов. Если декодированное значение определено как недостоверное, декодирование продолжается и способ декодирования, который выполняет оценку длины префикса кода и количества значимых битов, соответствующих полученной оценке длины, применяют к битам, первоначально считанным из потока битов. Технический результат - обеспечить быстрое декодирование кодов переменной длины, когда может быть определен поднабор наиболее часто используемых кодов с относительно короткими префиксами. 3 н. и 21 з.п. ф-лы, 3 ил., 1 прилож.
считывание из потока битов количества битов, не меньшее, чем максимальная длина кода переменной длины (КПД),
выбор заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и
формирование в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатор достоверности для каждой кодовой комбинации КПД.
считывания из потока битов количества битов, не меньшее, чем максимальная длина кода переменной длины (КПД),
выбора заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и
формирования в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатора достоверности для каждой комбинации КПД.
устройство для считывания из потока битов количество битов, не меньшее, чем максимальная длина кода переменной длины (КПД)
устройство для выбора заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и
устройство для формирования в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД.
Устройство эффективного кодирования | 1987 |
|
SU1494223A1 |
Приемник дискретной информации | 1982 |
|
SU1019657A1 |
Аппарат для очищения воды при помощи химических реактивов | 1917 |
|
SU2A1 |
US 6008745 А, 28.12.1999 | |||
US 2003085822 А1, 08.05.2003. |
Авторы
Даты
2008-03-27—Публикация
2003-07-15—Подача