Способ для кодирования последовательности целых чисел, устройство хранения и сигнал, переносящий кодированную последовательность целых чисел, а также способ декодирования последовательности целых чисел
Иллюстрации
Показать всеИзобретение относится к способу кодирования последовательности целых чисел, к устройству хранения и к сигналу, переносящему такую кодированную последовательность, а также к способу декодирования этой кодированной последовательности. Упомянутый способ содержит этапы идентификации смежной подпоследовательности в последовательности целых чисел, при этом упомянутая подпоследовательность содержит взаимосвязанные целые числа, имеющие одинаковый префикс, будучи кодированной с переменной длиной, и независимое последнее целое число, и формирования кода для смежной подпоследовательности с помощью кода для индикации относительно числа взаимосвязанных целых чисел в упомянутой смежной подпоследовательности, кода индикатора префикса и суффиксов кодов переменной длины целых чисел в смежной подпоследовательности. Таким образом, если есть n целых чисел, каждое из которых закодировано с помощью одного префикса, то вместо n отдельных префиксов для целых чисел одного префикса для смежной подпоследовательности достаточно. Технический результат - повышение эффективности кодирования, связанное с произвольными вычислительными последовательностями. 5 н. и 10 з.п. ф-лы, 4 ил., 5 табл.
Реферат
Уровень техники
Данное изобретение относится к способу кодирования последовательности целых чисел, а также к сигналу или носителю хранения данных, переносящему кодированную последовательность целых чисел. Изобретение дополнительно относится к способу декодирования кодированной последовательности целых чисел.
В кодировании переменной длины (VLC) целые числа кодируются посредством префикса и суффикса. Например, суффикс содержит варьирующееся число битов, переносящих двоичные кодированные рабочие данные. Далее, префикс содержит унарный код, представляющий число битов, которые содержатся в соответствующем суффиксе. Унарный код представляет число посредством соответствующего числа битов с одинаковым значением. Таким образом, половина битов, используемых для кодирования целого числа, используется для префикса.
В последовательностях целых чисел, содержащих много смежных подпоследовательностей целых чисел значения по умолчанию, за которыми следуют отдельные вхождения целых чисел с другим значением, упомянутая последовательность может быть представлена посредством кода переменной длины каждого из упомянутых других значений, которым предшествует представление кода переменной длины серии, т.е. число раз, когда упомянутое значение по умолчанию встречается в смежной подпоследовательности, предшествующей кодированному другому значению. Необязательно, коду может предшествовать представление кода переменной длины упомянутого значения по умолчанию. Это называется кодированием уровней серий.
Если целые числа в смежных подпоследовательностях не имеют общего значения по умолчанию, а только одно и то же или постоянное значение в рамках каждой из подпоследовательностей, каждая из подпоследовательностей может быть представлена кодом переменной длины соответствующего постоянного значения, которому предшествует представление кода переменной длины серии упомянутого соответствующего постоянного значения. Это называется кодированием длин серий.
Предпринимаются усилия для того, чтобы повысить эффективность кодирования, связанную с произвольными целочисленными последовательностями.
Сущность изобретения
Эффективное кодирование целочисленных последовательностей достигается посредством способа кодирования последовательности целых чисел, при этом способ содержит признаки по п.1.
Упомянутый способ содержит этапы идентификации смежной подпоследовательности в последовательности целых чисел, при этом упомянутая подпоследовательность содержит взаимосвязанные целые числа, имеющие одинаковый префикс, будучи кодированной с переменной длиной, и независимое последнее целое число, и формирования кода для смежной подпоследовательности с помощью кода для индикации относительно числа взаимосвязанных целых чисел в упомянутой смежной подпоследовательности, кода индикатора префикса и суффиксов кодов переменной длины целых чисел в смежной подпоследовательности.
Таким образом, если имеется n целых чисел в смежной подпоследовательности, каждое из которых закодировано с помощью одного префикса, то вместо n отдельных префиксов для целых чисел достаточно одного префикса для смежной подпоследовательности. Таким образом, подпоследовательность может быть кодирована с меньшим количеством битов.
В варианте осуществления упомянутый индикатор префикса указывает упомянутый одинаковый префикс, который также является префиксом кода переменной длины независимого последнего целого числа.
В другом варианте осуществления упомянутый одинаковый префикс - это префикс по умолчанию, а упомянутый индикатор префикса указывает другой префикс, который является префиксом кода переменной длины независимого последнего целого числа.
В еще одном варианте осуществления способ дополнительно содержит включение двоичного представления упомянутого префикса по умолчанию в упомянутую модифицированную двоичную последовательность.
В еще одном варианте осуществления упомянутая последовательность целых чисел связана с последовательностью кодированных значений рабочих данных, причем упомянутые целые числа указывают длину полей данных, переносящих упомянутые кодированные значения рабочих данных.
Изобретение дополнительно относится к способу кодирования целочисленных синтаксических элементов различных типов, ассоциативно связанных с макроблоками, содержащимися в серии последовательных макроблоков кадра, упомянутый способ содержит сортировку синтаксических элементов согласно их типу, формирование последовательности из синтаксических элементов одного типа и кодирование последовательности синтаксических элементов одного типа согласно одному из пп.1-4 формулы изобретения.
В другом варианте осуществления упомянутого способа кодирования целочисленных синтаксических элементов упомянутый способ содержит сортировку синтаксических элементов согласно их типу, формирование последовательности из синтаксических элементов одного типа и кодирование последовательности синтаксических элементов одного типа как упомянутой последовательности кодированных значений рабочих данных по п.5.
Изобретение дополнительно относится к сигналу или носителю хранения данных, переносящему пару кодированных целых чисел, одно из которых указывает число вхождений, тогда как другое указывает префикс, при этом упомянутая пара кодированных целых чисел предшествует числу суффиксов кодированных целых чисел рабочих данных, дополнительно переносимых посредством упомянутого сигнала или упомянутого носителя хранения данных, число упомянутых суффиксов пропорционально упомянутому числу вхождений и, по меньшей мере, последнее из кодированных значений может быть декодировано, по меньшей мере, из последнего из упомянутых суффиксов с помощью упомянутого указанного префикса.
В варианте осуществления упомянутого сигнала или носителя хранения данных другие кодированные целые числа рабочих данных могут быть декодированы из других суффиксов с помощью префикса по умолчанию.
В дополнительном варианте осуществления упомянутого сигнала или носителя хранения данных кодированные целые числа рабочих данных - это синтаксические элементы, ассоциативно связанные с макроблоками, содержащимися в серии последовательных макроблоков кадра.
Изобретение также относится к способу декодирования последовательности целых чисел из кодовой последовательности, содержащей кодированный префикс, кодированное число вхождений и число кодированных суффиксов, причем упомянутое число кодированных суффиксов пропорционально упомянутому числу вхождений, упомянутый способ содержит этапы декодирования упомянутого префикса, декодирования упомянутого количества, декодирования целых чисел из суффиксов, при этом последние из упомянутых целых чисел декодируются из последних из упомянутых суффиксов с помощью упомянутого префикса, а другие целые числа декодируются из других суффиксов с помощью префикса остатка.
В варианте осуществления упомянутого способа декодирования упомянутый префикс остатка равняется упомянутому префиксу.
В другом варианте осуществления упомянутого способа декодирования префикс остатка - это префикс по умолчанию.
В дополнительном варианте осуществления упомянутого способа декодирования кодированные целые числа в последовательности указывают размеры поля рабочих данных последовательности полей рабочих данных.
В еще одном дополнительном варианте осуществления упомянутого способа декодирования упомянутые поля рабочих данных переносят закодированные синтаксические элементы различных типов, ассоциативно связанных с макроблоками, содержащимися в серии последовательных макроблоков кадра.
В еще дополнительном варианте осуществления упомянутого способа декодирования упомянутые закодированные целые числа - это закодированные синтаксические элементы одного типа, и они ассоциативно связаны с макроблоками серии последовательных макроблоков кадра для последовательности кодированных видеокадров.
Дополнительные изобретаемые аспекты очевидны из чертежей, описания и формулы изобретения.
Краткое описание чертежей
Примерные варианты осуществления изобретения проиллюстрированы на чертежах и подробнее поясняются в нижеследующем описании.
На чертежах:
фиг.1 иллюстрирует примерную последовательность целых чисел, суффиксы экспоненциальных кодов Голомба упомянутых целых чисел, число битов каждого из упомянутых двоичных кодов, равняющееся длине префикса соответствующих экспоненциальных кодов Голомба, представления длины серии и уровня серии упомянутого числа битов в экспоненциальном коде Голомба и конечных кодах примерной последовательности, вытекающей из применения примерных вариантов осуществления способа по изобретению,
фиг.2 иллюстрирует примерную последовательность по фиг.1, суффиксы гибридных кодов Голомба упомянутых целых чисел, длину префикса соответствующих гибридных кодов Голомба, представления длины серии и уровня серии упомянутой длины префикса и конечных кодов примерной последовательности, вытекающей из применения примерных вариантов осуществления по изобретению,
фиг.3 иллюстрирует блок-схему последовательности операций примерного варианта осуществления изобретаемого способа, использующего кодирование длин серий для префиксов, и
фиг.4 иллюстрирует блок-схему последовательности операций примерного варианта осуществления изобретаемого способа, использующего кодирование уровней серий для префиксов.
Примерные варианты осуществления
Ниже таблица 1 представляет параметризуемые VLC-коды согласно Голомбу, как опубликовано в Golomb, S.W. "Run-length encodings", IEEE Trans. Inf. Theory, 1966, 7 (12): 399-401. Параметр указывает, с какой начальной длины суффикса начинается код. Эта начальная длина суффикса продлевается на число нулей в унарном префиксе. Первый столбец таблицы показывает различные параметры a, второй столбец представляет различные диапазоны кодовых слов в зависимости от упомянутого параметра, а последний столбец показывает диапазон значений, кодированных с упомянутыми диапазонами кодовых слов.
Таблица 1Экспоненциальные коды Голомб | ||
Порядок | Экспоненциальный код Голомба | Кодовый номер |
1 | 0 | |
0 1 x0 | 1-2 | |
a=0 | 0 0 1 x1 x0 | 3-6 |
0 0 0 1 x2 x1 x0............ | 7-14............ | |
1 x0 | 0-1 | |
0 1 x1 x0 | 2-5 | |
a=1 | 0 0 1 x2 x1 x0 | 6-13 |
0 0 0 1 x3 x2 x1 x0............ | 14-29............ | |
1 x1 x0 | 0-3 | |
0 1 x2 x1 x0 | 4-11 | |
a=2 | 0 0 1 x3 x2 x1 x0 | 12-27 |
0 0 0 1 x4 x3 x2 x1 x0............ | 28-59............ |
На фиг.1 примерная последовательность целых чисел проиллюстрирована в первой строке таблицы. Нет двух одинаковых целых чисел последовательно, тем самым применение кодирования длин серий или уровней серий предшествующего уровня техники не дает преимущества в эффективности кодирования.
Вторая строка таблицы на фиг.1 содержит целые числа первой строки, записанные в двоичной форме, в которых старший бит (MSB) опущен. MSB может быть опущен, поскольку он может быть выведен из префикса, дополнительно содержащегося в конечном коде. Таким образом, нет кода во второй строке для значения 1, содержащегося в первой строке. Это указывается посредством [] во второй строке.
Как очевидно из третьей строки, хотя нет двух целых чисел с одинаковым значением, следующих друг за другом, есть смежные серии целых чисел, требующих одинакового числа битов для двоичного представления без MSB.
Четвертая строка таблицы иллюстрирует код длин серий различных чисел битов, требуемых для двоичного представления без MSB примерных целых чисел. Упомянутый код длин серий иллюстрируется как запись в скобках. В скобках содержится пара десятичных значений, при этом первое значение представляет число вхождений, уменьшенное на 1, поскольку число вхождений равно, по меньшей мере, одному. А второе значение представляет число битов, используемое для двоичного представления без MSB. Например, первые две скобки слева, (0, 2) (0, 1), представляют, что за одним полем данных из 2 битов следует одно поле данных из 1 бита.
Пятая строка таблицы иллюстрирует код уровней серий различных чисел битов, требуемых для двоичного представления без MSB примерных целых чисел. Также используется запись в скобках. В скобках содержится пара десятичных значений, при этом первое значение представляет неуменьшенное число смежных вхождений числа битов по умолчанию, составляющее 2 бита в этом примере, а второе значение представляет другое число битов, завершающее упомянутые смежные вхождения числа битов по умолчанию. Число смежных вхождений числа битов по умолчанию может быть 0, и таким образом оно не уменьшается. В рамках примера значение по умолчанию равно 2. Таким образом, первые две скобки, (1, 1) и (6, 3), представляют, что за одним полем данных с 2 битами, числом битов по умолчанию, следует одно поле данных с 1 битом, и поле данных с 3 битами следует за последовательностями из 6 полей данных, каждое из которых кодировано с помощью 2 битов.
Две строки ниже таблицы на фиг.1 представляют примерный вариант осуществления изобретаемого кода по длине серий примерной целочисленной последовательности на основе кодирования экспоненциальным кодом Голомба. Код последовательности начинается с VLC-представления экспоненциального кода Голомба (0, 2). Оно формирует префикс последовательности одного поля рабочих данных с длиной 2. Префикс подчеркнут на фиг.1 для иллюстрации. Одно поле рабочих данных переносит двоичное представление самого первого целого числа, т.е. значения 4 как двоичное число, представленное как 100, при этом MSB опущен, поскольку он может быть выведен из префикса, имеющего результатам представление значения 4 как 00. Далее идет следующий префикс, снова подчеркнутый для иллюстрации. Этот следующий префикс является префиксом последовательности одного поля рабочих данных с длиной 1, следовательно, он формируется из VLC-представлений с помощью экспоненциального кода Голомба (0, 1). За ним следует упомянутое одно поле рабочих данных из 1 бита, переносящее значение 3 в двоичном представлении, в котором снова опущен MSB. После этого смежным со следующим префиксом является двоичное представление шести целых чисел, представленных как 2 бита, и одного целого числа, представленного как 3 бита. И так далее.
Две самые последние строки на фиг.1 представляют другой примерный вариант осуществления изобретаемого кода примерной целочисленной последовательности на основе кодирования экспоненциальным кодом Голомба. Код последовательности начинается слева с префикса последовательности 011, являющегося VLC-представлением с помощью экспоненциального кода Голомба значения по умолчанию, которое равно 2 в этом другом примере. Затем следуют VLC-представления с помощью экспоненциального кода Голомба в 1 и 1, представляющие (1, 1). Это формирует префикс последовательности двух полей рабочих данных, первого поля рабочих данных с длиной по умолчанию в 2 и второго поля рабочих данных с длиной в 1. Префикс подчеркнут на фиг.1 для иллюстрации. Эти два поля рабочих данных переносят двоичные представления первых двух целых чисел, т.е. значения 4 и 3 представляются как 0 0 и 1. Далее идет следующий префикс, снова подчеркнутый для иллюстрации. Этот следующий префикс является префиксом последовательности из 6 полей рабочих данных с длиной по умолчанию в 2, за которым следует одно поле рабочих данных с длиной в 3. После этого смежным со следующим префиксом является двоичное представление шести целых чисел, представленных как 2 бита, и одного целого числа, представленного как 3 бита.
Если последовательность завершается смежной подпоследовательностью целых чисел, каждое из которых закодировано с числом битов по умолчанию, последний префикс (серия, уровень) может представлять в качестве уровня значение по умолчанию. Уровень, равняющийся значению по умолчанию, указывает завершение в декодере целочисленной последовательности после следующей серии целых чисел, закодированных с числом битов по умолчанию.
Ниже таблица 2 представляет так называемые гибридные VLC-коды согласно Голомбу, как опубликовано в Golomb, S.W. "Run-length encodings", IEEE Trans. Inf. Theory, 1966, 7 (12): 399-401.
Таблица 2Гибридный код Голомба | |
n | Гибридный код Голомба |
0 | 1 |
1 | 01 |
2 | 0010 |
3 | 00110 |
4 | 00111 |
5 | 000100 |
6 | 000101 |
7 | 000110 |
8 | 0001110 |
9 | 0001111 |
10 | 00001000 |
… | … |
Кодирование примерной целочисленной последовательности по фиг.1 на основе гибридного кодирования кодом Голомба поясняется с помощью фиг.2.
Вторая строка таблицы на фиг.2 содержит суффиксы гибридного кода Голомба целых чисел первой строки, в которых старший бит (MSB) опущен. MSB может быть опущен, поскольку он может быть выведен из префикса, дополнительно содержащегося в конечном коде. Таким образом, нет кода во второй строке для значения 1, содержащегося в первой строке. Это указывается посредством [] во второй строке.
Поскольку очевидно из третьей строки таблицы на фиг.2 то, что хотя нет двух целых чисел с одинаковым значением, следующих друг за другом, есть смежные серии целых чисел, требующих одинаковой длины префикса, и, таким образом, одинакового префикса, в гибридном кодировании кодом Голомба.
Четвертая строка таблицы на фиг.2 иллюстрирует код длин серий различных префиксов, требуемых для представления гибридным кодом Голомба без MSB примерных целых чисел. Упомянутый код длин серий иллюстрируется как запись в скобках. В скобках содержится пара десятичных значений, при этом первое значение представляет число вхождений, уменьшенное на 1, поскольку число вхождений равно, по меньшей мере, одному. А последнее значение представляет длину префикса гибридного кода Голомба, уменьшенную на один, поскольку длина префикса составляет, по меньшей мере, один. Например, первые две скобки слева, (1, 1) и (1, 2), представляют, что за двумя суффиксами гибридных кодов Голомба с 2-битовым префиксом следуют два суффикса гибридных кодов Голомба с 3-битовым префиксом.
Пятая строка таблицы на фиг.2 иллюстрирует код уровней серий различных префиксов, требуемых для представления гибридным кодом Голомба без MSB примерных целых чисел. Также используется запись в скобках. В скобках содержится пара десятичных значений, при этом первое значение представляет неприведенное число смежных вхождений префикса по умолчанию, являющегося 3-битовым префиксом в этом другом примере, а второе значение представляет другую длину префикса, завершающую упомянутые смежные вхождения числа битов по умолчанию. Поскольку упомянутая другая длина префикса равна, по меньшей мере, 1, последнее значение на 1 меньше, чем упомянутая другая длина префикса. Число смежных вхождений числа битов по умолчанию может быть 0, и таким образом оно не уменьшается. В рамках примера длина префикса по умолчанию равна 3. Таким образом, первые две скобки, (1, 1) и (6, 3), представляют, что за одним полем данных с 2 битами, числом битов по умолчанию, следует одно поле данных с 1 битом, и поле данных с 3 битами следует за последовательностями из 6 полей данных, каждая из которых кодирована с 2 битами.
Две строки внизу таблицы на фиг.2 представляют примерный вариант осуществления изобретаемого кода по длине серий примерной целочисленной последовательности. Код последовательности начинается с VLC-представления с помощью гибридного кода Голомба (1, 1). Оно формирует префикс последовательности двух суффиксов гибридных кодов Голомба без MSB. Префикс подчеркнут на фиг.2 для иллюстрации. Два суффикса переносят двоичное представление первого и второго целого числа, т.е. значение 4 представляется в гибридном кодировании кодом Голомба посредством суффикса 111, в котором MSB опущен, поскольку он может быть выведен из префикса, имеющего результатом представление значения 4 как 11. Следующее значение 3 представляется в гибридном кодировании кодом Голомба посредством суффикса 110, в котором MSB опущен, поскольку он может быть выведен из префикса, имея результатом представление значения 3 как 10. Далее идет следующий префикс, снова подчеркнутый для иллюстрации. Этот следующий префикс является префиксом последовательности из двух суффиксов с соответствующим префиксом длиной в 2, следовательно, он формируется из VLC-представлений с помощью экспоненциального кода Голомба (1, 2). За ним следуют упомянутые два одиночных суффикса 00 и 01, являющиеся суффиксами представлений с помощью гибридного кода Голомба целых чисел 5 и 6, в которых MSB снова опущен. И так далее.
Две самые последние строки на фиг.2 представляют другой примерный вариант осуществления изобретаемого кода примерной целочисленной последовательности на основе кодирования гибридным кодом Голомба. Код последовательности начинается слева с префикса последовательности 00110, являющегося VLC-представлением с помощью гибридного кода Голомба значения по умолчанию, которое равно 3 в этом другом примере. Затем следуют VLC-представления с помощью гибридного кода Голомба в 0 и 1, представляющие (0, 1). Они формируют префикс последовательности одного суффикса, представляющего первое целочисленное значение в последовательности, т.е. 11, представляющее 4, в котором MSB опущен. Кроме того, (0, 1) - это VLC-представление с помощью гибридного кода Голомба, за которым следует 10, являющееся суффиксом гибридного кода Голомба для целого числа 3, в котором MSB опущен. Далее идет следующий префикс, снова подчеркнутый для иллюстрации. Этот следующий префикс является префиксом последовательности из 2 суффиксов с соответствующей длиной префикса по умолчанию в 3, за которым следует один суффикс, соответствующий длине префикса в 2. После этого смежными с упомянутым следующим префиксом являются 2 суффикса гибридных кодов Голомба, представляющие 2 целых числа, имеющих 3-битовый префикс, и суффикс, представляющий одно целое число, имеющее 2-битовый префикс. И так далее.
Из примерных вариантов осуществления, поясненных совместно с фиг.1 и 2, можно выяснить, что кодирование длин серий может использоваться не только для последовательности символов перед VLC-кодированием, но также может использоваться для префиксов группы VLC-кода, независимо от схемы кодирования, на которой основано кодирование. И в соответствии с этим изобретением удаляется избыточность среди префиксов группы последовательных VLC-кодов.
В H.264/AVC изображения обычно кодируются по сериям последовательных макроблоков. Каждая серия последовательных макроблоков является независимой и содержит большое число макроблоков (MB). Подробно, предусмотрено много синтаксических элементов, которые должны быть закодированы в каждом макроблоке. Например, таблица 3 показывает основные синтаксические элементы, которые должны быть кодированы в базовой конфигурации H.264/AVC.
Таблица 3Базовые синтаксические элементы H.264/AVC | |
Синтаксический элемент | Способ кодирования |
mb_type | ue (v) |
coded_block_pattern | me (v) |
mb_qp_delta | se (v) |
intra4x4_pred_mode (prev_intra4x4_pred_mode_flag, rem_intra4x4_pred_mode) | u(1)u(3) |
Intra_chroma_pred_mode | ue (v) |
coeff_token | ce (v) |
trailing_ones_sign_flag | u(1) |
level_prefix | ce (v) |
level_suffix | u (v) |
total_zeros | ce (v) |
run_before | ce (v) |
mvd | se (v) |
ref | te (v) |
Когда entropy_coding_mode равняется 0, кодирование переменной длины используется согласно таблице 1 или таблице 2. Тем не менее, основной недостаток VLC-кодирования по H.264/AVC заключается в том, что каждый синтаксический элемент кодируется отдельно, и он не изучает избыточность между различными VLC-кодами.
Этот примерный вариант осуществления этого изобретения содержит то, что в одной серии последовательных макроблоков префиксы одних синтаксических элементов различных макроблоков кодируются совместно, например, с помощью кодирования длин серий или уровней серий, как примерно пояснено в связи с фиг.1.
Этот примерный вариант осуществления изобретения содержит следующие этапы.
Этап 1. Кодирование изображения/видео с помощью метода H.264/AVC.
Этап 2. Реорганизация потока битов в рамках одной серии последовательных макроблоков в следующий формат:
mb_type (MB 1), mb_type (MB 2),..., mb_type (MB n)
coded_block_pattern (MB 1), coded_block_pattern (MB 2),..., coded_block_pattern (MB n)
............
run_before (MB 1), run_before (MB 2),...,
run_before (MB n).
Этап 3. Кодирование всех префиксов одного синтаксического элемента всех макроблоков в рамках одной серии последовательных макроблоков посредством способа кодирования длин серий или способа кодирования уровней серий.
Этап 2 может быть выполнен до этапа 1.
Пример способа кодирования для mb_type с помощью длины серии показан в таблице 4:
Таблица 4Примерный вариант осуществления изобретаемого кодирования длин серий | ||
for(i=0; i<total_mb_in_slice; i=i+run mb_type_minus1+1) { | ||
run_mb_type_minus1 | ue (v) | |
length_mb_type_minus1 | ue (v) | |
for(j=0;j<run_mb_type_minus1+1; j++) { | ||
suffix_mb_type | ||
} | ||
} |
Блок-схема последовательности операций упомянутого примера способа кодирования для mb_type с помощью уровней серий проиллюстрирована на фиг.3.
На этапе инициализации INITi параметр счетчика i инициализируется как 0. Кроме того, инициализируется пустая строка битов. Затем на этапе INITj дополнительный параметр счетчика j инициализируется как 0. После этого на этапе принятия решения TEST1 определяется то, удовлетворяет ли или превышает i общее количество макроблоков в серии последовательных макроблоков. Если да, способ переходит к этапу END. В противном случае способ продолжается с этапом INCi, увеличивая параметр счетчика i на 1. Затем этап принятия решения TEST2 выполняется, определяя то, содержит ли двоичное представление определенного синтаксического параметра, связанного с макроблоком (i), то же самое число битов, как двоичное представление определенного синтаксического параметра, связанного с макроблоком (i-1). Если да, параметр счетчика j увеличивается на 1 на этапе INCj до того, как способ возвращается к этапу принятия решения TEST1. В противном случае способ продолжается с кодированием переменной длины текущего значения параметра счетчика j на этапе VLC (j) и с добавлением упомянутого кода к упомянутой строке битов. Далее, представление кода переменной длины для числа битов, требуемых для двоичного представления значения упомянутого определенного синтаксического параметра для макроблока (i-1), уменьшенное на 1, добавляется на этапе VLC(L(i-1)-1). На следующем этапе INITk еще один дополнительный параметр счетчика k инициализируется как i-j-1. Затем двоичное представление значения упомянутого определенного синтаксического параметра для макроблока (k) добавляется к упомянутой строке битов на этапе BIN(SP(k)). За этим этапом следует этап INCk увеличения k. После увеличения k на 1 проверяется на этапе принятия решения TEST3 то, является ли k по-прежнему меньше, чем i. Если да, способ возвращается к этапу BIN(SP(k)). Если нет, способ возвращается к этапу INITj.
Пример способа кодирования для mb_type с помощью уровней серий показан в таблице 5:
Таблица 5Примерный вариант осуществления изобретаемого кодирования уровней серий | ||
for(i=0; i<total_mb_in_slice;i=i+run_mb_type_default) { | ||
run_mb_type_default_length | ue (v) | |
length_mb_type_other_length | ue (v) | |
for(j=0; j<run_mb_type_default; j++) { | ||
suffix_mb_type_default length | ||
} | ||
Suffix_mb_type_other_length | ||
} |
Блок-схема последовательности операций упомянутого примера способа кодирования для mb_type с помощью уровней серий проиллюстрирована на фиг.4.
На этапе инициализации INITi параметр счетчика i инициализируется как 0. Кроме того, инициализируется пустая строка битов. Затем на этапе INITj дополнительный параметр счетчика j инициализируется как 0. После этого, на этапе принятия решения TEST1 определяется то, удовлетворяет ли или превышает i общее количество макроблоков в серии последовательных макроблоков. Если да, способ переходит к этапу END. В противном случае способ продолжается с этапом INCi, увеличивая параметр счетчика i на 1. После этого выполняется этап принятия решения TEST2, определяющий то, равняется ли число битов, используемых для двоичного представления определенного синтаксического параметра, связанного с макроблоком (i), числу битов по умолчанию. Если да, параметр счетчика j увеличивается на 1 на этапе INCj до того, как способ возвращается к этапу принятия решения TEST1. В противном случае способ продолжается с кодированием переменной длины параметра счетчика j на этапе VLC (j) и с добавлением упомянутого кода к упомянутой строке битов. Далее, представление кода переменной длины для числа битов, требуемых для двоичного представления значения упомянутого определенного синтаксического параметра для макроблока (i), добавляется на этапе VLC(L(i)). На следующем этапе INITk другой параметр счетчика k инициализируется как i-j-1. Затем двоичное представление значения упомянутого определенного синтаксического параметра для макроблока (k) добавляется на этапе BIN(SP(k)). За этим этапом следует этап INCk увеличения k. После увеличения k на 1 проверяется на этапе принятия решения TEST3 то, является ли k по-прежнему меньше, чем i. Если да, способ возвращается к этапу BIN(SP(k)). Если нет, способ возвращается к этапу INITj.
Некоторые виды или все виды других синтаксических элементов также могут быть кодированы аналогичным способом.
Из статистического эксперимента этот вид схемы кодирования может дополнительно повысить производительность существующих способов энтропийного кодирования, поскольку одинаковые синтаксические элементы многих последовательных макроблоков часто имеют одинаковую длину префикса, и кодирование длин серий может значительно уменьшать этот вид статистической избыточности.
Исходные VLC-коды синтаксического элемента intra4x4_pred_mode последовательных блоков после кодирования H.264/AVC требуют того, чтобы длина VLC-кодов для этого синтаксического элемента была 1 или 4. Таким образом, кодирование уровней серий упомянутых длин считается выгодным.
Таблица 2D-VLC может использоваться для того, чтобы дополнительно кодировать пары (серия, уровень). Подробный способ кодирования может быть таким же, как способ кодирования (серия, уровень) для коэффициентов DCT в MPEG-2.
В декодере сначала декодируются префиксы синтаксического элемента. Если длина префикса равна 1, то нет суффикса. В противном случае при условии, что длина префикса равна x (1<x<=4), то длина его суффикса равна 4-x. Длина VLC-кодов для этого синтаксического элемента должна быть равна 1 или 4. Если 0000 появляется в VLC-коде, то префикс может рассматриваться как 5, и декодер может распознавать его без суффикса.
В целом, дополнительный способ кодирования для префиксов последовательности VLC-кодов может быть любым другим способом, к примеру, CAVLC в H.264/AVC, чтобы уменьшать избыточность в рамках группы VLC-кодов.
Изобретение вводит некоторое время задержки, а также требования по памяти и обработке, которые, как считается, компенсируются усовершенствованиями, достигнутыми в отношении степени сжатия без потерь.
Пример изобретения относится к кодированию группы сигналов в последовательность VLC-кодов и дополнительно к кодированию префиксов группы VLC-кодов, чтобы удалить статистическую избыточность среди префиксов этих VLC-кодов. В примерном варианте осуществления изобретаемый способ кодирует префиксы числа VLC-кодов согласно кодированию длин серий, при этом серия упоминается как число вхождений VLC-кодов, которые имеют одинаковую длину префикса. Длина упоминается как число битов, из которых состоит префикс. Префикс состоит из нескольких последовательных битов со значением нуль, за которым следует бит в единицу, который может быть старшим битом суффикса. Либо префикс формируется посредством нескольких последовательных 1 плюс 0.
Вместо кодирования длин серий может быть выполнено кодирование (серия-1)-(длина-1), поскольку серия составляет, по меньшей мере, 1, и длина также составляет, по меньшей мере, 1. Кодирование пары (серия-1, длина-1) может быть достигнуто посредством поиска в таблице поиска 2D VLC.
Префиксы числа VLC-кодов могут быть кодированы с помощью типа кодирования (серия, уровень). При этом серия подсчитывает число последовательных VLC-кодов, длина префикса которых принимает значение по умолчанию, например 1. Также уровень представляет длину префикса последующего VLC-кода, длина префикса которого отличается от упомянутого значения по умолчанию. Пара (серия, уровень) может быть кодирована посредством поиска в таблице 2D-VLC как кодирование DCT-коэффициентов в MPEG-2. Кодирование (серия, уровень) может также использовать другие способы, такие как CAVLC в H.264/AVC.
Кодовые слова одного типа синтаксического элемента различных макроблоков в рамках одной серии последовательных макроблоков/изображения/кадра при кодировании изображений/видео могут быть кодированы любым изобретаемым способом.
Кодируют группы сигналов в последовательность VLC-кодов и дополнительно кодируют префиксы нескольких VLC-кодов посредством кодирования длин серий, чтобы формировать новые VLC-коды, а затем дополнительно кодируют префиксы этих новых VLC-кодов посредством кодирования длин серий. Таким образом, используют кодирование длин серий для того, чтобы кодировать префиксы несколько кодовых слов итерационно.
1. Способ кодирования последовательности целых чисел, при этом упомянутый способ содержит этапы, на которых:идентифицируют смежную подпоследовательность в последовательности целых чисел, при этом упомянутая подпоследовательность содержит взаимосвязанные целые числа, имеющие одинаковый префикс в коде переменной длины и независимое последнее целое число, иформируют код для смежной подпоследовательности с помощью кода для индикации числа взаимосвязанных целых чисел в упомянутой смежной подпоследовательности, кода для индикатора префикса и суффиксов кодов переменной длины целых чисел в смежной подпоследовательности.
2. Способ по п.1, в котором упомянутый индикатор префикса указывает упомянутый одинаковый префикс, который также является префиксом кода переменной длины независимого последнего целого числа.
3. Способ по п.1, в котором упомянутый одинаковый префикс является префиксом по умолчанию, а упомянутый индикатор префикса указывает другой префикс, который является префиксом кода переменной длины независимого последнего целого числа.
4. Способ по п.3, дополнительно содержащий этап, на котором включают двоичное представление упомянутого префикса по умолчанию в упомянутую модифицированную двоичную последовательность.
5. Способ по одному из предшествующих пунктов, в котором упомянутая последовательность целых чисел связана с последовательностью кодированных значений рабочих данных, причем упомянутые целые числа указывают длину полей данных, переносящих упомянутые кодированные значения рабочих данных.
6. Способ кодирования целочисленных синтаксических элементов различных типов, ассоциативно связанных с макроблоками, содержащимися в серии последовательных макроблоков кадра, при этом упомянутый способ содержит этапы, на которых:сортируют синтаксические элементы согласно их типу,формируют последовательность из синтаксических элементов одного и того же типа икодируют последовательность синтаксических элементов одного и того же типа согласно способу по одному из пп.1-4.
7. Способ кодирования целочисленных синтаксических элементов различных типов, ассоциативно связанных с макроблоками, содержащимися в серии последовательных макроблоков кадра, при этом упомянутый способ содержит этапы, на которых:сортируют синта