Способ декодирования префиксных кодов переменной длины

Изобретение относится к декодированию префиксных кодов переменной длины, например кодов Хаффмана, и более конкретно к комбинированной схеме декодирования с использованием декодирования с помощью таблицы преобразования и декодирования, ориентированного по префиксу. Сущность изобретения состоит в том, что из потока битов считывают количество битов, не меньшее чем максимально возможная длина кода переменной длины (КПД), выбирают заданное количество битов, которое используют в качестве индекса для структуры данных, которая содержит, по меньшей мере, декодированное значение и индикатор достоверности. Индикатор достоверности используют для определения, следует ли продолжить декодирование или получить достоверное декодированное значение из структуры данных и возвратить избыточные биты в поток битов. Если декодированное значение определено как недостоверное, декодирование продолжается и способ декодирования, который выполняет оценку длины префикса кода и количества значимых битов, соответствующих полученной оценке длины, применяют к битам, первоначально считанным из потока битов. Технический результат - обеспечить быстрое декодирование кодов переменной длины, когда может быть определен поднабор наиболее часто используемых кодов с относительно короткими префиксами. 3 н. и 21 з.п. ф-лы, 3 ил., 1 прилож.

 

Часть описания этого патентного документа содержит материал, который защищен авторским правом. Владелец авторского права не возражает против факсимильного воспроизведения любым человеком патентного документа или раскрытия патента, в том виде, как он был представлен в патентном файле или в регистрации Ведомства по патентам и товарным знакам, но в остальных отношениях сохраняет за собой все авторские права в любом отношении.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение, в общем, относится к декодированию префиксных кодов переменной длины, например кодов Хаффмана, и более конкретно к новой комбинированной схеме декодирования с использованием декодирования с помощью таблицы преобразования и декодирования, ориентированного по префиксу.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Энтропийное кодирование представляет собой широко используемую методику сжатия данных, на основе которой построено множество стандартов кодирования изображения и звука. Теоретическая основа энтропийного кодирования определяет, что эффект сжатия может быть получен, когда наиболее часто используемые данные кодируют с меньшим количеством битов, чем количество битов, обозначающее менее часто появляющиеся данные. Этот подход позволяет получить потоки кодированных данных, состоящих из кодов, имеющих разную длину.

Существует ряд способов, предназначенных для формирования таких кодов с переменной длиной (КПД, 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, может описывать тип и длину префикса кода и, таким образом, повышать эффективность способа, применяемого далее.

Пример варианта выполнения настоящего изобретения, представленный на языках программирования С и Ассемблер, приведен в Приложении А. Этот пример является неограничивающим, и специалист в данной области техники может выполнить настоящее изобретение с использованием других языков программирования без отхода от объема заявленного изобретения.

Описанная здесь методика не ограничивается какими-либо конкретными аппаратными средствами или программными конфигурациями; ее можно использовать в любой вычислительной или обрабатывающей данные среде. Эта технология может быть выполнена в виде логических средств, воплощенных в аппаратных средствах, программных средствах или встроенных средства или с использованием их комбинаций. Методика может быть выполнена в виде программ, выполняемых на программируемых устройствах, таких как мобильные или стационарные компьютеры, карманные персональные компьютеры, телевизионные приставки, сотовые телефоны и пейджеры, и других электронных устройствах, каждое из которых включает процессор, носитель информации, считываемый процессором (включая энергозависимую и энергонезависимую память и/или элементы накопителя информации), по меньшей мере, одно входное устройство и одно или больше выходных устройств. Программный код применяют к вводимым данным с использованием входного устройства для выполнения описанных функций и для генерирования выходной информации. Выходная информация может поступать в одно или больше выходные устройства. Для специалистов в данной области техники будет понятно, что изобретение может быть выполнено на практике с использованием различных конфигураций компьютерной системы, включая микропроцессорную систему, миникомпьютеры, универсальные вычислительные машины и т.п. Изобретение также может быть выполнено в распределенных вычислительных средах, задачи которых могут выполняться с использованием дистанционных устройств обработки, которые соединены через систему передачи данных.

Каждая программа может быть выполнена в виде процедур высокого уровня или языка объектно-ориентированного программирования для обеспечения передачи данных в систему обработки данных. Однако программа может быть выполнена на языке Ассемблер или на языке программирования, если это требуется. В любом случае, язык может быть компилирован или интерпретирован.

Программные инструкции можно использовать для обеспечения выполнения системой обработки общего назначения или специального назначения, которая запрограммирована с использованием инструкций для выполнения операций, описанных в них. В качестве альтернативы, операции могут быть выполнены с использованием конкретных аппаратных компонентов, которые содержат аппаратные логические средства для выполнения операций, или с использованием комбинаций запрограммированных компьютерных компонентов и специализированных аппаратных компонентов. Способы, описанные здесь, могут быть выполнены как компьютерный программный продукт, который может включать считываемый машиной носитель информации, на котором записаны инструкции, которые можно использовать для программирования системы обработки или другого электронного устройства для выполнения этих способов. Термин "считываемый машиной носитель информации", используемый здесь, должен включать любой носитель информации, который позволяет сохранять или кодировать последовательность инструкций для выполнения в устройстве и который обеспечивает выполнение машиной любого из способов, описанных здесь. Термин "считываемый машиной носитель информации", соответственно, должен включать, без ограничений, твердотельное запоминающее устройство, оптические и магнитные диски, а также несущую волну, в которой закодирован сигнал данных. Кроме того, в данной области техники можно говорить о программных средствах в одной или другой форме (например, о программной процедуре, процессе, прикладной программе, модуле, логической программе и так далее), как выполняющих действия или позволяющих получать результат. Такие выражения представляют собой просто сокращенный способ описания выполнения программного средства в системе обработки данных для выполнения процессором действия или получения результата.

Хотя данное изобретение было описано со ссылкой на иллюстративные варианты выполнения, его описание не предназначено для использования в ограничивающем смысле. Различные модификации представленных в качестве иллюстраций вариантов выполнения, а также другие варианты выполнения изобретения, которые будут очевидны для специалистов в данной области техники, к которой относится изобретение, рассматриваются как находящиеся в пределах сущности и объема изобретения.

1. Способ декодирования префиксных кодов переменной длины в потоке битов, содержащий:

считывание из потока битов количества битов, не меньшее, чем максимальная длина кода переменной длины (КПД),

выбор заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и

формирование в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатор достоверности для каждой кодовой комбинации КПД.

2. Способ по п.1, дополнительно содержащий применение декодирования, ориентированный на префикс, к количеству битов, первоначально считанному из потока битов, когда декодированная величина определена как недостоверная.

3. Способ по п.1, в котором считывание из потока количество битов содержит обеспечение возможности доступа к указанному количеству битов для будущих операций.

4. Способ по п.1, в котором выбор заданного количества битов содержит обеспечение возможности доступа к указанному количеству битов для будущих операций, выполняемое быстрее, чем считывание из потока битов того же количества битов.

5. Способ по п.1, в котором заданное количество битов содержит максимальное количество битов, предназначенных для использования в качестве индекса в структуре данных.

6. Способ по п.1, в котором индикатор достоверности предназначен для определения достоверности декодированной величины кода для каждой комбинации КПД.

7. Способ по п.1, в котором структуру данных, содержащую, по меньшей мере, декодированную величину кода и индикатора достоверности для каждой комбинации КПД и сформированную в зависимости от выбранного значения количества бит, хранят в таблице преобразования кода.

8. Способ по п.2, в котором способ декодирования, ориентированный на префикс, дополнительно включает декодирование кода переменной длины, при котором используют свойства префикса кода переменной длины.

9. Машиночитаемый носитель информации для декодирования префиксных кодов переменной длины в потоке битов, содержащий множество машиносчитываемых инструкций, выполняемых с помощью процессора, причем машиночитаемые инструкции обеспечивают декодирование префиксных кодов переменной длины в потоке битов путем

считывания из потока битов количества битов, не меньшее, чем максимальная длина кода переменной длины (КПД),

выбора заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и

формирования в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатора достоверности для каждой комбинации КПД.

10. Машиночитаемый носитель информации по п.9, дополнительно содержащий инструкции для применения способа декодирования, ориентированного на префикс, к количеству битов, первоначально считанному из потока битов, когда декодированная величина кода определена как недостоверная.

11. Машиночитаемый носитель информации по п.9, в котором инструкции для считывания из потока битов количества битов содержат инструкции, обеспечивающие возможность доступа к указанному количеству битов для будущих операций.

12. Машиночитаемый носитель информации по п.9, в котором инструкции для выбора заданного количества битов содержат инструкции, обеспечивающие возможность доступа к указанному заданному количеству битов для будущих операций быстрее, чем считывание из потока битов того же количества битов.

13. Машиночитаемый носитель информации по п.9, в котором заданное количество битов содержит максимальное количество битов, используемых как индекс для структуры данных.

14. Машиночитаемый носитель информации по п.9, в котором индикатор достоверности предназначен для определения достоверности декодированной величины кода для каждой комбинации КПД.

15. Машиночитаемый носитель информации по п.9, в котором структуру данных, содержащую, по меньшей мере, декодированную величину кода и индикатора достоверности для каждой комбинации КПД, и сформированную в зависимости от выбранного заданного количества бит, хранят в таблице преобразования кода.

16. Машиночитаемый носитель информации по п.10, в котором способ декодирования, ориентированный на префикс, дополнительно включает декодирование кода переменной длины, при котором используют свойства префикса кода переменной длины.

17. Система декодирования префиксных кодов переменной длины в потоке битов, содержащая

устройство для считывания из потока битов количество битов, не меньшее, чем максимальная длина кода переменной длины (КПД)

устройство для выбора заданного количества битов из считанных битов КПД, предназначенных в качестве индекса структуры данных, которая содержит, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД, и

устройство для формирования в соответствии с действительной величиной заданного количества битов, выбранных из первоначально считанных битов из потока битов, структуры данных, содержащей, по крайней мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД.

18. Система по п.17, дополнительно содержащая устройство, предназначенное для использования способа декодирования, ориентированного на префикс, к количеству битов, первоначально считанному из потока битов, когда декодированная величина определена как недостоверная.

19. Система по п.17, в которой устройство для считываемого количества битов содержит устройство, позволяющее обеспечить возможность доступа к указанному количеству битов для будущих операций.

20. Система по п.17, в которой устройство для выбора заданного количества битов содержит устройство, позволяющее обеспечить доступ к указанному количеству битов для будущих операций быстрее, чем устройство, предназначенное для считывания из потока битов того же количества битов.

21. Система по п.17, в которой заданное количество битов содержит максимальное количество битов, используемых в качестве индекса для структуры данных.

22. Система по п.17, в которой индикатор достоверности предназначен для определения достоверности декодированной величины кода для каждой комбинации КПД.

23. Система по п.17, в которой структура данных, содержащая, по меньшей мере, декодированную величину кода и индикатор достоверности для каждой комбинации КПД и сформированная в зависимости от выбранного заданного количества бит, хранится в таблице преобразования кода.

24. Система по п.18, в которой способ декодирования, ориентированный на префикс, дополнительно включает декодирование кода переменной длины, при котором используют свойства префикса кода переменной длины.



 

Похожие патенты:

Изобретение относится к устройствам и способам создания контекста, представляющего собой словарь и/или код, связанный со словарем, для сжатия сообщений. .

Изобретение относится к электронным кодовым замкам и может быть использовано в технике защиты объектов от доступа посторонних лиц. .

Изобретение относится к технике цифрового преобразования сигналов. .

Изобретение относится к технике связи и вычислительной технике. .

Изобретение относится к технике связи и вычислительной технике. .

Изобретение относится к технике связи и вычислительной технике и может быть использовано в системах пепедячи дискретной информации,, Цель изобретения - повышение информативности о Для этого кодируют элементарные дискретные сообщения неравномерными кодовыми комбинациями, формируют их в группу длиной К двоичных символов, формируют маркерный код незаполненных К-К позиций и размещают этот маркерный код на 1 позициях после группы из К символов о После этого группа К+1 символов кодируется помехоустойчивым блоковым кодом с г проверочными символами В декодере осуществляется исправление ошибок, выделение маркерного кода и разделение кодовых комбинаций.

Изобретение относится к вычислительной технике и предназначено для генерации сигналов произвольной формы.Изобретение позволяет расширить функциональные возможности за счет оперативного введения функции генерируемого сигнала в процессе .

Изобретение относится к автоматике и вычислительной технике и может быть использовано в устройствах, связанных с преобразованием информации . .

Изобретение относится к способу кодирования набора символов данных, содержащего нулевые символы данных и ненулевые символы данных, при котором назначают кодовое слово для представления ненулевого символа данных и связанного с ним числа предшествующих или последующих нулевых символов данных посредством операции отображения

Изобретение относится к кодированию/декодированию информационных величин и, в частности, к энтропийному кодированию с использованием компактных кодовых книг для генерации эффективного кода
Изобретение относится к области электросвязи, а именно к области, связанной с сокращением избыточности передаваемой информации, и может быть использовано для сжатия и восстановления без потерь цифровых данных в информационных системах и системах электросвязи

Изобретение относится к области обработки цифрового видео и, в частности, к сжатию цифрового видео с помощью кодов с переменной длиной (VLC)

Изобретение относится к цифровому кодированию видео и, более конкретно, кодированию с переменной длиной (VLC) коэффициентов преобразования в уровнях расширения схемы масштабируемого кодирования видео (SVC)

Изобретение относится к кодированию цифрового видео, а более конкретно к кодированию переменной длины (VLC) структур кодированных блоков (СВР), используемых для того, чтобы кодировать видео

Изобретение относится к обработке изображений и, в частности, к адаптивному основанному на контексте кодированию с переменной длиной (CAVLC) для кодирования уровня улучшения с крупной гранулярной масштабируемостью (CGS) при масштабируемом кодировании видеосигнала (SVC)

Изобретение относится к цифровому кодированию видео и, в частности, к кодированию с переменной длиной (VLC) коэффициентов преобразования в расширенных уровнях схемы масштабируемого кодирования видео (SVC)

Изобретение относится к кодированию цифрового видеосигнала и, в частности, к кодированию информации заголовков блоков видеопоследовательности

Изобретение относится к цифровому кодированию видео и, в частности, к масштабируемому кодированию видеоданных
Наверх