ИНИЦИАЛИЗАЦИЯ КОНТЕКСТА НА ОСНОВЕ БУФЕРА КАРТИНОК ДЕКОДЕРА
CONTEXT INITIALISATION BASED ON DECODER PICTURE BUFFER

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Варианты осуществления настоящего изобретения относятся в основном к кодированию видео и, в частности, некоторые варианты осуществления настоящего изобретения относятся к методам для инициализации контекста.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Способы и методы кодирования видео существующего уровня техники, например, H.264/MPEG-4 AVC (H.264/AVC) и опытная модель на рассмотрении (TMuC) JCT-VC, могут предоставить более высокую эффективность кодирования, чем более старые способы и стандарты, за счет более высокой сложности. Увеличение требований качества и требований разрешения к способам и стандартам кодирования видео может также увеличить их сложность. Декодеры, которые поддерживают параллельное декодирование, могут улучшить скорости декодирования и уменьшить требования к памяти. Дополнительно, усовершенствования в многоядерных процессорах могут сделать желательными кодеры и декодеры, которые поддерживают параллельное декодирование.
H.264/MPEG-4 AVC [Joint Video Team ITU-T VCEG и ISO/IEC MPEG, "H.264: Advanced video coding for generic audiovisual services", ITU-T Rec. H.264 и ISO/IEC 14496-10 (MPEG4 - часть 10), ноябрь 2007], которая настоящим включена в настоящий документ посредством ссылки в полном объеме, является спецификацией видеокодека (кодера/декодера), которая использует предсказание макроблоков, за которым следует кодирование остатка, чтобы уменьшить временную и пространственную избыточность в видеопоследовательности для эффективного сжатия.
Опытная модель на рассмотрении (TMuC) [JCT-VC A205, "Test Model under Consideration," июнь 16, 2010], которая настоящим включена посредством ссылки в полном объеме, является первоначальной опытной моделью JCT-VC. TMuC, использующая базовую единицу кодирования, называемую блоком дерева кодирования (CTB), которая может иметь переменные размеры, может предоставить больше гибкости, чем H.264/AVC.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Некоторые варианты осуществления настоящего изобретения содержат способы и системы для параллельного энтропийного кодирования. Некоторые варианты осуществления настоящего изобретения могут содержать способы и системы для параллельного энтропийного декодирования.
Один вариант осуществления настоящего изобретения раскрывает способ декодирования видеокадра видеопоследовательности, содержащий этапы, на которых:
(a) принимают слайс в видеодекодере;
(b) идентифицируют тип вышеуказанного слайса, включающий в себя по меньшей мере первый предсказанный слайс и второй предсказанный слайс; и
(c) инициализируют контекст, ассоциированный с вышеуказанного слайса, с использованием способа инициализации контекста, соответствующего вышеуказанному типу слайса;
при этом вышеуказанный способ инициализации контекста заменяют другим способом инициализации контекста, соответствующим вышеуказанного первого предсказанного слайса, если вышеуказанным типом идентифицированного слайса является второй предсказанный слайс.
Один вариант осуществления настоящего изобретения раскрывает способ для декодирования видеокадра в видеопоследовательности, содержащий этапы, на которых:
(a) принимают слайс в видеодекодере;
(b) идентифицируют, является ли вышеуказанный слайс предсказанным B-слайсом;
(c) инициализируют, с использованием метода, отличного от используемого для B-слайса, контекст, ассоциированный с вышеуказанным слайсом.
Вышеприведенные и другие цели, признаки и преимущества данного изобретения будут более легко поняты после рассмотрения следующего подробного описания данного изобретения, взятого совместно с приложенными чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 является картинкой, показывающей H.264/AVC-видеокодер (известный уровень техники);
Фиг.2 является картинкой, показывающей H.264/AVC-видеодекодер (известный уровень техники);
Фиг.3 является картинкой, показывающей примерную структуру слайса (известный уровень техники);
Фиг.4 является картинкой, показывающей примерную структуру группы слайсов (известный уровень техники);
Фиг.5 является картинкой, показывающей примерное разделение слайса, согласно вариантам осуществления настоящего изобретения, при этом картинка может быть разделена на по меньшей мере один слайс для реконструкции, и слайс для реконструкции может быть разделен на более, чем один энтропийный слайс;
Фиг.6 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие энтропийный слайс;
Фиг.7 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие параллельное энтропийное декодирование множественных энтропийных слайсов, за которым следует реконструкция слайса;
Фиг.8 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие мультиплексирование данных предсказания/остаточных данных на уровне картинки для конструкции энтропийного слайса;
Фиг.9 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие мультиплексирование цветовой плоскости на уровне картинки для конструкции энтропийного слайса;
Фиг.10 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие транскодирование битового потока посредством энтропийного декодирования, образующего энтропийные слайсы, и энтропийное кодирование;
Фиг.11 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом число двоичных элементов, ассоциированных с каждым энтропийным слайсом во множестве энтропийных слайсов, не превышает предварительно заданного числа двоичных элементов;
Фиг.12 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом двоичные элементы могут быть ассоциированы с энтропийным слайсом, пока число двоичных элементов в энтропийном слайсе не превысит порог, основанный на предварительно заданном максимальном числе двоичных элементов;
Фиг.13 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом число двоичных элементов, ассоциированных с каждым энтропийным слайсом во множестве энтропийных слайсов, не превышает предварительно заданного числа двоичных элементов, и каждый слайс для реконструкции содержит не больше, чем предварительно заданное число макроблоков;
Фиг.14 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом двоичные элементы могут быть ассоциированы с энтропийным слайсом, пока число двоичных элементов в энтропийном слайсе не превысит порог, основанный на предварительно заданном максимальном числе двоичных элементов, и каждый слайс для реконструкции содержит не больше, чем предварительно заданное число макроблоков;
Фиг.15 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом число битов, ассоциированных с каждым энтропийным слайсом во множестве энтропийных слайсов, не превышает предварительно заданного числа битов;
Фиг.16 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом биты могут быть ассоциированы с энтропийным слайсом, пока число битов в энтропийных слайсах не превысит порог, основанный на предварительно заданном максимальном числе битов;
Фиг.17 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие многочисленные кодеры двоичных элементов;
Фиг.18 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие многочисленные блоки адаптации контекста;
Фиг.19 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие многочисленные кодеры двоичных элементов и многочисленные блоки адаптации контекста;
Фиг.20 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом размер энтропийного слайса ограничен для ограничения числа двоичных элементов, над которыми выполняется работа, в энтропийном слайсе, посредством каждого блока энтропийного кодера с ограничениями;
Фиг.21 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие разделение слайса для реконструкции на множество энтропийных слайсов, при этом размер энтропийного слайса ограничен для ограничения числа двоичных элементов, над которыми выполняется работа, в энтропийном слайсе, посредством каждого блока энтропийного кодера с ограничениями;
Фиг.22 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие множество декодеров двоичных элементов;
Фиг.23 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие множество блоков адаптации контекста;
Фиг.24 является картинкой, изображающей примерные варианты осуществления настоящего изобретения, содержащие множественные декодеры двоичных элементов и множественные блоки адаптации контекста;
Фиг.25 является картинкой, показывающей примерное разделение реконструированного блока на множество энтропийных слайсов, в которых макроблоки внутри энтропийного слайса являются смежными;
Фиг.26 является картинкой, показывающей примерное разделение реконструированного блока на множество энтропийных слайсов, в которых макроблоки внутри энтропийного слайса не являются смежными;
Фиг.27 является картинкой, иллюстрирующей несмежные соседние блоки, используемые при энтропийном декодировании, для примерного разделения реконструированного блока на множество энтропийных слайсов, в которых макроблоки внутри энтропийного слайса не являются смежными;
Фиг.28 является картинкой, иллюстрирующей соседние блоки, используемые при энтропийном декодировании и реконструкции блока внутри энтропийного слайса для примерного разделения реконструированного блока на множество энтропийных слайсов, в которых макроблоки внутри энтропийного слайса не являются смежными;
Фиг.29 является графическим представлением примерного участка примерного битового потока, изображающим ограничения размещения заголовка энтропийного слайса;
Фиг.30 является графическим представлением примерного участка примерного битового потока, изображающим ограничения размещения заголовка энтропийного слайса;
Фиг.31 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие обработку энтропийным декодером ограниченного участка битового потока для идентификации заголовка энтропийного слайса;
Фиг.32 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие обработку энтропийным декодером ограниченного участка битового потока для идентификации заголовка энтропийного слайса;
Фиг.33 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие обработку энтропийным декодером ограниченного участка битового потока для идентификации заголовка энтропийного слайса;
Фиг.34 является картинкой, иллюстрирующей примерную схему инициализации таблицы контекста внутри энтропийных слайсов, согласно вариантам осуществления настоящего изобретения;
Фиг.35 является картинкой иллюстрирующей адаптацию сканирования в примерных вариантах осуществления настоящего изобретения;
Фиг.36 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие энтропийный кодер с извлечением контекста, отделенным от порядка сканирования коэффициентов;
Фиг.37 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие энтропийный декодер с извлечением контекста, отделенным от порядка сканирования коэффициентов;
Фиг.38 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие адаптацию контекста на основе количества двоичных элементов;
Фиг.39 является картинкой, иллюстрирующей примерное разделение без пересечения некоторого числа обработанных двоичных элементов;
Фиг.40 является схемой, показывающей примерные варианты осуществления настоящего изобретения, содержащие адаптацию контекста на основе параметра квантования;
Фиг.41 иллюстрирует метод инициализации контекста;
Фиг.42 иллюстрирует другой метод инициализации контекста; и
Фиг.43 иллюстрирует метод инициализации контекста.
ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Варианты осуществления настоящего изобретения будут наилучшим образом поняты посредством ссылки на чертежи, на которых везде одинаковые части обозначены одинаковыми номерами. Фигуры, приведенные выше, в явной форме включены как часть этого подробного описания.
Будет легко понять, что компоненты настоящего изобретения, как в основном описано и проиллюстрировано на Фиг.в настоящем документе, могли бы быть скомпонованы и спроектированы в широком спектре разных конфигураций. Таким образом, следующее более подробное описание вариантов осуществления способов и систем настоящего изобретения не предназначено для ограничения объема данного изобретения, но является лишь представляющим предпочтительные в настоящий момент варианты осуществления данного изобретения.
Элементы вариантов осуществления настоящего изобретения могут быть осуществлены в виде аппаратных средств, программно-аппаратных средств (firmware) и/или программного обеспечения. Тогда как примерные варианты осуществления, показанные в настоящем документе, могут только описывать одну из этих форм, следует понимать, что специалист в данной области техники будет способен привести в исполнение эти элементы в любой из этих форм, пока держатся в пределах объема настоящего изобретения.
Тогда как любой видеокодер/декодер (кодек), который использует энтропийное кодирование/декодирование, может быть приспособлен посредством вариантов осуществления настоящего изобретения, многие примерные варианты осуществления настоящего изобретения будут проиллюстрированы относительно H.264/AVC-кодера и H.264/AVC-декодера. Это предназначено для иллюстрации вариантов осуществления настоящего изобретения, а не в качестве ограничения.
Многие примерные варианты осуществления настоящего изобретения могут быть описаны относительно макроблока, как элементарной единицы. Это предназначено для иллюстрации, а не в качестве ограничения.
Патентная заявка США № 12/058301, озаглавленная "Methods and Systems for Parallel Video Encoding and Decoding", поданная 28 марта 2008 года, настоящим включена в настоящий документ посредством ссылки в полном объеме. Патентная заявка США № 12/579236, озаглавленная "Methods and Systems for Parallel Video Encoding and Decoding", поданная 14 октября 2009 года, настоящим включена в настоящий документ посредством ссылки в полном объеме.
Способы и стандарты кодирования видео существующего уровня техники, например, H.264/AVC и TMuC, могут обеспечить более высокую эффективность кодирования, чем другие способы и стандарты за счет более высокой сложности. Увеличение требований по качеству и требований по разрешению к способам и стандартам кодирования видео может также увеличить их сложность. Декодеры, которые поддерживают параллельное декодирование, могут улучшить скорости декодирования и уменьшить требования к памяти. Дополнительно, усовершенствования в многоядерных процессорах могут сделать желательными кодеры и декодеры, которые поддерживают параллельное декодирование.
H.264/AVC и многие другие стандарты и способы кодирования видео основаны на подходе гибридного кодирования видео на основе блоков, в котором алгоритмом кодирования источника является гибрид предсказания между картинками, также считающегося межкадровым, предсказания внутри картинки, также считающегося внутрикадровым, и кодирования с преобразованием остатка предсказания. Межкадровое предсказание может использовать временную избыточность, и внутрикадровое кодирование и кодирование с преобразованием остатка предсказания могут использовать пространственную избыточность.
Фиг.1 показывает блок-схему примерного H.264/AVC-видеокодера 2. Входная картинка 4, также считающаяся кадром, может быть представлена для кодирования. Могут быть произведены предсказанный сигнал 6 и остаточный сигнал 8, при этом предсказанный сигнал 6 может быть основан либо на межкадровом предсказании 10, либо на внутрикадровом предсказании 12.
Межкадровое предсказание 10 может быть определено посредством секции 14 компенсации движения с использованием хранящейся опорной картинки 16, также считающейся опорным кадром, и информации 19 движения, определенной посредством процесса секции 18 оценки движения между входным кадром 4 и опорным кадром 16. Внутрикадровое предсказание 12 может быть определено посредством секции 20 внутрикадрового предсказания с использованием декодированного сигнала 22. Остаточный сигнал 8 может быть определен посредством вычитания входа 4 из предсказания 6. Остаточный сигнал 8 преобразуется, масштабируется и квантуется посредством секции 24 преобразования/масштабирования/квантования, тем самым производя квантованные коэффициенты 26 преобразования. Декодированный сигнал 22 может быть сгенерирован посредством прибавления сигнала 6 к сигналу 28, сгенерированному секцией 30 обратного (преобразования/масштабирования/квантования) с использованием квантованных коэффициентов 26 преобразования. Информация 19 движения и квантованные коэффициенты 26 преобразования могут быть энтропийно кодированы посредством секции 32 энтропийного кодирования и записаны в битовый поток 34 сжатого видео. Зона 38 выходного изображения, например, участок опорного кадра, может быть сгенерирована в кодере 2 посредством фильтра 36 удаления блочности с использованием реконструированного предварительно фильтрованного сигнала 22.
Фиг.2 показывает блок-схему примерного H.264/AVC-видеодекодера 50. Входной сигнал 52, также считающийся битовым потоком, может быть представлен для декодирования. Принятые символы могут быть энтропийно декодированы посредством секции 54 энтропийного декодирования, тем самым производя информацию 56 движения и квантованные, масштабированные коэффициенты 58 преобразования. Информация 56 движения может быть объединена посредством секции 60 компенсации движения с участком опорного кадра 84, который может находиться в памяти 64 кадров, и может быть сгенерировано межкадровое предсказание 68. Квантованные, масштабированные коэффициенты 58 преобразования могут быть подвергнуты обратному квантованию, масштабированию и обратному преобразованию посредством секции 62 обратного (преобразования/масштабирования/квантования), тем самым производя декодированный остаточный сигнал 70. Остаточный сигнал 70 может быть прибавлен к сигналу 78 предсказания: либо сигналу 68 межкадрового предсказания либо сигналу 76 внутрикадрового предсказания. Сигнал 76 внутрикадрового предсказания может быть предсказан посредством секции 74 внутрикадрового предсказания исходя из ранее предсказанной информации в текущем кадре 72. Объединенный сигнал может быть фильтрован фильтром 80 удаления блочности, и затем фильтрованный сигнал 82 может быть записан в память 64 кадров.
В H.264/AVC, входная картинка разделяется на макроблоки фиксированного размера, при этом каждый макроблок покрывает прямоугольную область картинки из 16x16 выборок составляющей яркости и 8x8 выборок каждой из двух составляющих цветности. В других кодеках и стандартах может быть использована элементарная единица, или базовая единица кодирования, отличная от макроблока, например, блок дерева кодирования. Процесс декодирования по стандарту H.264/AVC точно определен для единиц обработки, которыми являются макроблоки. Энтропийный декодер 54 посредством анализа выявляет синтаксические элементы битового потока 52 сжатого видео и демультиплексирует их. H.264/AVC точно определяет два альтернативных способа энтропийного декодирования: метод с низкой сложностью, который основан на использовании контексто-адаптировано переключаемых наборов кодов переменной длины, называемых как CAVLC, и вычислительно более требовательный алгоритм контекстно-зависимого адаптивного двоичного арифметического кодирования, называемого как CABAC. В обоих способах энтропийного декодирования, декодирование текущего символа может полагаться на ранее корректно декодированные символы и адаптивно обновляемые модели контекста. В дополнение, информация разных данных, например, информация данных предсказания, информация остаточных данных и разных цветовых плоскостей, могут быть мультиплексированы вместе. Демультиплексирование может быть не сделано, пока элементы не будут энтропийно декодированы.
После энтропийного декодирования, макроблок может быть реконструирован посредством получения: остаточного сигнала посредством обратного квантования и обратного преобразования, и сигнала предсказания, либо сигнала внутрикадрового предсказания, либо сигнала межкадрового предсказания. Искажение из-за блочности может быть уменьшено посредством применения фильтра удаления блочности к каждому декодируемому макроблоку. Обработка может не начаться, пока входной сигнал не будет энтропийно декодирован, тем самым делая энтропийное декодирование потенциальным узким местом при декодировании.
Аналогично, в кодеках, в которых может быть обеспечена возможность альтернативных механизмом предсказания, например, межуровневое предсказание в H.264/AVC или межуровневое предсказание в других масштабируемых кодеках, энтропийное декодирование может быть необходимым перед всей обработкой в декодере, тем самым делая энтропийное декодирование потенциальным узким местом.
В H.264/AVC, входная картинка, содержащая множество макроблоков, может быть разделен на один или несколько слайсов. Значения выборок в области картинки, которую представляет слайс, могут быть корректно декодированы без использования данных из других слайсов, при условии, что опорные картинки, используемые в кодере и декодере являются идентичными. Вследствие этого, энтропийное декодирование и реконструкция макроблока для слайса не зависят от других слайсов. В частности, состояние энтропийного кодирования сбрасывается в начале каждого слайса. Данные в других сайсах помечаются как недоступные при задании доступности окрестности, как для энтропийного декодирования, так и реконструкции. В H.264/AVC, слайсы могут быть энтропийно декодированы и реконструированы параллельно. На границе слайса не обеспечивается возможность внутреннего предсказания и предсказания вектора движения. Фильтрация для удаления блочности может использовать информацию на границах слайса.
Фиг.3 показывает примерную видеокартинку 90, содержащую одиннадцать макроблоков в горизонтальном направлении и девять макроблоков в вертикальном направлении (девять примерных макроблоков, с отметками 91-99). Фиг.3 показывает три примерных слайса: первый слайс 100, обозначенный как "СЛАЙС № 0", второй слайс 101, обозначенный как "СЛАЙС № 1", и третий слайс 102, обозначенный как "СЛАЙС № 2". H.264/AVC-декодер может декодировать и реконструировать три слайса 100, 101, 102 параллельно. В начале процесса декодирования/реконструкции для каждого слайса, модели контекста инициализируются или сбрасываются в исходное состояние, и макроблоки в других слайсах помечаются как недоступные и для энтропийного декодирования, и реконструкции макроблока. Таким образом, для макроблока, например, макроблока с отметкой 93, в "СЛАЙСЕ № 1", макроблоки (например, макроблоки с отметками 91 и 92) в "СЛАЙСЕ № 0" могут быть не использованы для выбора модели контекста или реконструкции. Тогда как, для макроблока, например, макроблока с отметкой 95, в "СЛАЙСЕ № 1", другие макроблоки (например, макроблоки с отметками 93 и 94) в "СЛАЙСЕ № 1" могут быть использованы для выбора модели контекста или реконструкции. Вследствие этого, энтропийное декодирование и реконструкция макроблока должны происходить последовательно внутри слайса. Пока слайсы не будут заданы с использованием гибкого упорядочивания макроблоков, макроблоки внутри слайса обрабатываются в порядке растрового сканирования.
Гибкое упорядочивание макроблоков задает группу слайсов для модификации того, как картинка разделяется на слайсы. Макроблоки в группе слайсов заданы картой макроблок-группа слайсов, которая сигнализируется посредством содержимого набора параметров картинки и дополнительной информации в заголовках слайсов. Карта макроблок-группа слайсов состоит из идентификационного номера группы слайсов для каждого макроблока в картинке. Идентификационный номер группы слайсов точно определяет, к какой группе слайсов принадлежит ассоциированный макроблок. Каждая группа слайсов может быть разделена на одну или более слайсов, при этом слайс является последовательностью макроблоков внутри той же группы слайсов, которая обрабатывается в порядке растрового сканирования внутри набора макроблоков конкретной группы слайсов. Энтропийное декодирование и реконструкция макроблока должны происходить последовательно внутри слайса.
Фиг.4 изображает примерное выделение макроблока в три группы: первую группу 103 слайсов, обозначенную как "ГРУППА СЛАЙСОВ № 0", вторую группу 104 слайсов, обозначенную как "ГРУППА СЛАЙСОВ № 1", и третью группу 105 слайсов, обозначенную как "ГРУППА СЛАЙСОВ № 2". Эти группы 103, 104, 105 слайсов могут быть ассоциированы с двумя зонами переднего плана и зоной заднего плана, соответственно, на картинке 90.
Некоторые варианты осуществления настоящего изобретения могут содержать разделение картинки на один или более слайсов для реконструкции, при этом слайс для реконструкции может быть самостоятельной, учитывая, что значения выборок в области картинки, которую представляет слайс для реконструкции, могут быть корректно реконструированы без использования данных из других слайсов для реконструкции, при условии, что используемые опорные картинки являются идентичными в кодере и декодере. Все реконструированные макроблоки внутри слайса для реконструкции могут быть доступны при задании окрестности для реконструкции.
Некоторые варианты осуществления настоящего изобретения могут содержать разделение слайса для реконструкции на более, чем один энтропийный слайс, при этом энтропийный слайс может быть самостоятельным, учитывая, что значения символов в области картинки, которую представляет энтропийный слайс, могут быть корректно энтропийно декодированы без использования данных из других энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, состояние энтропийного кодирования может быть сброшено в начале декодирования каждого энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, данные в других энтропийных слайсах могут быть помечены как недоступные при задании доступности окрестности для энтропийного декодирования. В некоторых вариантах осуществления настоящего изобретения, макроблоки в других энтропийных слайсах могут быть не использованы в выборе модели контекста текущего блока. В некоторых вариантах осуществления настоящего изобретения, модели контекста могут быть обновлены только внутри энтропийного слайса. В этих вариантах осуществления настоящего изобретения, каждый энтропийный декодер, ассоциированный с энтропийным слайсом, может удерживать свой собственный набор моделей контекста.
Сектор стандартизации электросвязи ITU, рабочая группа 16 - доклад 405, озаглавленный "Entropy slices for parallel entropy decoding", апрель 2008 года, настоящим включен в настоящий документ посредством ссылки в полном объеме.
Некоторые варианты осуществления настоящего изобретения могут содержать CABAC-кодирование/декодирование. Процесс CABAC-кодирования включает в себя следующие четыре элементарных шага: бинаризацию; выбор модели контекста; двоичное арифметическое кодирование; и обновление вероятности.
Бинаризация: Символ с недвоичным значением (например, коэффициент преобразования, вектор движения или другие данные кодирования) преобразуется в двоичный код, также называемый строкой двоичных элементов или бинаризованным символом. Когда дан синтаксический элемент с двоичным значением, первоначальный этап бинаризации может быть пропущен. Синтаксический элемент с двоичным значением или элемент бинаризованного символа может быть назван двоичным элементом.
Для каждого двоичного элемента может быть выполнено следующее:
Выбор модели контекста: Модель контекста является вероятностной моделью для одного или более двоичных элементов. Модель контекста содержит, для каждого двоичного элемента, вероятность того, что двоичный элемент является "1" или "0". Модель может быть избрана для выбора доступных моделей в зависимости от статистики недавно кодированных символов данных, обычно на основе левого и находящегося выше соседних символов, если доступны.
Двоичное арифметическое кодирование: Арифметический кодер кодирует каждый двоичный элемент согласно выбраной вероятностной модели и основывается на рекурсивном подразбиении интервала.
Обновление вероятности: Выбранная модель контекста обновляется на основе фактического кодированного значения.
Адаптация контекста может относиться к процессу выбора, на основе значений соседних символов, состояния модели контекста, также называемого состоянием, ассоциированного с двоичным элементом, и обновления распределения вероятностей модели, назначенного данным символам. Размещение соседних символов может быть задано согласно шаблону контекста.
В некоторых вариантах осуществления настоящего изобретения, содержащих CABAC-кодирование/декодирование, в начале декодирования энтропийного слайса, все модели контекста могут быть инициализированы или сброшены к предварительно заданным моделям.
Некоторые варианты осуществления настоящего изобретения могут быть поняты относительно Фиг.5. Фиг.5 показывает примерный видеокадр 110, содержащий одиннадцать макроблоков в горизонтальном направлении и девять макроблоков в вертикальном направлении (девять примерных макроблоков, с отметками 115-123). Фиг.5 показывает три примерные слайсы для реконструкции: первый слайс 111 для реконструкции, обозначенный как "R_SLICE № 0", второй слайс 112 для реконструкции, обозначенный как "R_SLICE № 1", и третий слайс 113 для реконструкции, обозначенный как "R_SLICE № 2". Фиг.5 дополнительно показывает разделение второго слайса 112 для реконструкции "R_SLICE №1" на три энтропийных слайса: первый энтропийный слайс 114, обозначенный как "E_SLICE № 0", показанный перекрестной штриховкой, второй энтропийный слайс 115, обозначенный как "E_SLICE №1", показанный вертикальной штриховкой, и третий энтропийный слайс 116, обозначенный как "E_SLICE № 2", показанный наклонной штриховкой. Каждый энтропийный слайс 114, 115, 116 может энтропийно декодирован параллельно.
В некоторых вариантах осуществления настоящего изобретения, только данные из макроблоков внутри энтропийного слайса могут быть доступны для выбора модели контекста, во время энтропийного декодирования энтропийного слайса. Все другие макроблоки могут быть помечены как недоступные. Для этого примерного разделения, макроблоки с отметками 117 и 118 являются недоступными для выбора модели контекста при декодировании символов, соответствующих области макроблока с отметкой 119, так как макроблоки с отметками 117 и 118 находятся снаружи энтропийного слайса, содержащей макроблок 119. Однако, эти макроблоки 117, 118 доступны когда макроблок 119 реконструирован.
В некоторых вариантах осуществления настоящего изобретения, кодер может определить, разделять ли слайс для реконструкции на энтропийные слайсы или нет, и кодер может сигнализировать решение в битовом потоке. В некоторых вариантах осуществления настоящего изобретения, сигнал может содержать флаг энтропийного слайса, который может быть обозначен как "entropy_slice_flag" в некоторых вариантах осуществления настоящего изобретения.
Некоторые варианты осуществления декодера по настоящему изобретению могут быть описаны относительно Фиг.6. В этих вариантах осуществления, флаг энтропийного слайса может быть проверен 130, и если флаг энтропийного слайса указывает, что нет 132 энтропийных слайсов, ассоциированных с картинкой, или слайсом для реконструкции, то заголовок может быть выявлен, посредством синтаксического анализа 134, как заготовок обычного слайса. Состояние энтропийного декодера может быть сброшено 136, и может быть задана 138 информация соседних элементов для энтропийного декодирования и реконструкции. Данные слайса могут затем быть энтропийно декодированы 140, и слайс может быть реконструирован 142. Если флаг энтропийного слайса указывает, что есть 146 энтропийные слайсы, ассоциированные с картинкой, или слайсом для реконструкции, то заголовок может быть выявлен, посредством синтаксического анализа 148, как заголовок энтропийного слайса. Состояние энтропийного декодера может быть сброшено 150, и может быть задана 152 информация соседних элементов для энтропийного декодирования, и данные энтропийного слайса могут быть энтропийно декодированы 154. Затем может быть задана 156 информация соседних элементов для реконструкции, и слайс может быть реконструирован 142. После реконструкции 142 слайса, может быть проверен 158 следующий слайс, или картинка.
Некоторые варианты осуществления декодера по настоящему изобретению могут быть описаны относительно Фиг.7. В этих вариантах осуществления, декодер может быть способен параллельно декодировать и может задавать свою собственную степень параллельности, например, рассмотрим декодер, содержащий способность декодировать N энтропийных слайсов параллельно. Декодер может идентифицировать 170 N энтропийных слайсов. В некоторых вариантах осуществления настоящее изобретение, если меньше, чем N энтропийных слайсов доступны в текущей картинке, или слайсе для реконструкции, декодер может декодировать энтропийные слайсы из последовательных картинок, или слайсов для реконструкции, если они доступны. В альтернативных вариантах осуществления, декодер может ждать, пока текущая картинка, или слайс для реконструкции, не будет полностью обработан, прежде чем декодировать участки последовательной картинки, или слайсы для реконструкции. После идентификации 170 до N энтропийных слайсов, каждая из идентифицированных энтропийных слайсов может быть независимо энтропийно декодирована. Первый энтропийный слайс может быть декодирован 172-176. Декодирование 172-176 первого энтропийного слайса может содержать сброс 172 состояния декодера. В некоторых вариантах осуществления, содержащих энтропийное CABAC-декодирование, состояние CABAC может быть сброшено. Может быть задана 174 информация соседних элементов для энтропийного декодирования первого энтропийного слайса, и данные первого энтропийного слайса могут быть декодированы 176. Для каждой из до N энтропийных слайсов могут быть выполнены эти этапы (178-182 для N-ого энтропийного слайса). В некоторых вариантах осуществления настоящего изобретения, декодер может реконструировать 184 энтропийные слайсы, когда все энтропийные слайсы энтропийно декодированы. В альтернативных вариантах осуществления настоящего изобретения, декодер может начать реконструкцию 184 после того, как декодированы одна или более энтропийных слайсов.
В некоторых вариантах осуществления настоящего изобретения, когда есть более чем N энтропийных слайсов, поток декодирования может начать энтропийное декодирование следующего энтропийного слайса после окончания энтропийного декодирования энтропийного слайса. Таким образом, когда поток заканчивает энтропийное декодирование энтропийного слайса низкой сложности, поток может приступить к декодированию дополнительных энтропийных слайсов без ожидания того, когда другие потоки закончат их декодирование.
В некоторых вариантах осуществления настоящего изобретения, которые могут согласовываться с существующим стандартом или способом, энтропийный слайс может совместно использовать большинство атрибутов слайсов из обычного слайса, согласно стандарту или способу. Вследствие этого, энтропийному слайсу может требоваться небольшой заголовок. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса может обеспечить декодеру возможность идентификации начала энтропийного слайса и начало энтропийного декодирования. В некоторых вариантах осуществления, в начале картинки, или слайса для реконструкции, заголовок энтропийного слайса может быть обычным заголовком, или заголовком слайса для реконструкции.
В некоторых вариантах осуществления настоящего изобретения, содержащих H.264/AVC-кодек, энтропийный слайс может быть сигнализирована посредством добавления нового бита, "entropy_slice_flag", к существующему заголовку слайса. Таблица 1 приводит синтаксис для заголовка энтропийного слайса согласно вариантам осуществления настоящего изобретения, в которой C указывает категорию, и Дескриптор u(1), ue(v) указывает некоторые способы кодирования с фиксированной длиной и переменной длиной кодового слова Варианты осуществления настоящего изобретения, содержащие "entropy_slice_flag" могут реализовать улучшенную эффективность кодирования.
"first_mb_in_slice" точно определяет адрес первого макроблока в энтропийном слайсе, ассоциированной с заголовком энтропийного слайса. В некоторых вариантах осуществления, энтропийный слайс может содержать последовательность макроблоков.
"cabac_init_idc" точно определяет индекс для определения таблицы инициализации, используемой в процессе инициализации, для режима контекста.
Таблица 1
Таблица примерного синтаксиса для заголовка энтропийного слайса
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
if (entropy_slice_flag) {
first_mb_in_slice
2
ue(v)
if (entropy_coding_mode_flag & & slice_type != I && slice_type != SI)
cabac_init_idc
2
ue(v)
}
}
else {
a regular slice header...
}
}
В некоторых вариантах осуществления настоящего изобретения, энтропийному слайсу может быть назначен тип блока уровня сетевой абстракции (NAL), отличный от обычных слайсов. В этих вариантах осуществления, декодер может делать различие между обычными слайсами и энтропийными слайсами на основе типа блока NAL. В этих вариантах осуществления, поле бита "entropy_slice_flag" не требуется.
В некоторых вариантах осуществления настоящего изобретения, поле бита "entropy_slice_flag" может не передаваться во всех профилях. В некоторых вариантах осуществления настоящего изобретения, поле бита "entropy_slice_flag" может не передаваться в базовом профиле, но поле бита "entropy_slice_flag" может быть передано в более высоких профилях, таких как основной, расширенный или профессиональный профиль. В некоторых вариантах осуществления настоящего изобретения, поле бита "entropy_slice_flag" может быть только передано в битовых потоках, ассоциированных с характеристиками, большими, чем фиксированное значение характеристики. Примерные характеристики могут включать в себя пространственное разрешение, скорость смены кадров, глубину в битах, скорость передачи в битах и другие характеристики битового потока. В некоторых вариантах осуществления настоящего изобретения, поле бита "entropy_slice_flag" может быть только передано в битовых потоках, ассоциированных с пространственными разрешениями, большими, чем 1920×1080 с чересстрочной разверткой. В некоторых вариантах осуществления настоящего изобретения, поле бита "entropy_slice_flag" может быть только передано в битовых потоках, ассоциированных с пространственными разрешениями, большими, чем 1920×1080 с прогрессивной разверткой. В некоторых вариантах осуществления настоящего изобретения, если поле бита "entropy_slice_flag" не передается, может быть использовано значение по умолчанию.
В некоторых вариантах осуществления настоящего изобретения, энтропийный слайс может быть сконструирован посредством изменения мультиплексирования данных. В некоторых вариантах осуществления настоящего изобретения, группа символов, содержащихся в энтропийном слайсе, может быть мультиплексирована на уровне макроблока. В альтернативных вариантах осуществления настоящего изобретения, группа символов, содержащихся в энтропийном слайсе, может быть мультиплексирована на уровне картинки. В других альтернативных вариантах осуществления настоящего изобретения, группа символов, содержащихся в энтропийном слайсе, может быть мультиплексирована по типу данных. В еще одних альтернативных вариантах осуществления настоящего изобретения, группа символов, содержащихся в энтропийном слайсе, может быть мультиплексирована в комбинации из вышеприведенного.
Некоторые варианты осуществления настоящего изобретения, содержащие конструкцию энтропийного слайса на основе мультиплексирования на уровне картинки, могут быть поняты относительно Фиг.8 и 9. В некоторых вариантах осуществления настоящего изобретения, показанных на Фиг.8, данные 190 предсказания и остаточные данные 192 могут быть энтропийно кодированы кодером 194 предсказания и кодером 196 остатка по отдельности, и кодированные данные предсказания и кодированные остаточные данные могут быть мультиплексированы посредством мультиплексора 198 уровня картинки на уровне картинки. В некоторых вариантах осуществления настоящего изобретения, данные 190 предсказания для картинки могут быть ассоциированы с первым энтропийным слайсом, и остаточные данные 192 для картинки могут быть ассоциированы со вторым энтропийным слайсом. Кодированные данные предсказания и кодированные энтропийные данные могут быть декодированы параллельно. В некоторых вариантах осуществления настоящего изобретения, каждый раздел, содержащий данные предсказания или остаточные данные, может быть разделен на энтропийные слайсы, которые могут быть декодированы параллельно.
В некоторых вариантах осуществления настоящего изобретения, показанных на Фиг.9, остаток каждой цветовой плоскости, например, остаток 200 яркости и два остатка 202, 204 цветности, может быть энтропийно кодирован Y-кодером 206, U-кодером 208 и V-кодером 210 по отдельности, и энтропийно кодированные остатки могут быть мультиплексированы мультиплексором 212 уровня картинки на уровне картинки. В некоторых вариантах осуществления настоящего изобретения, остаток 200 яркости для картинки может быть ассоциирован с первым энтропийным слайсом, первый остаток 202 цветности для картинки может быть ассоциирован со вторым энтропийным слайсом, и второй остаток 204 для картинки может быть ассоциирован с третьим энтропийным слайсом. Кодированные остаточные данные для трех цветовых плоскостей могут быть декодированы параллельно. В некоторых вариантах осуществления настоящего изобретения, каждый раздел, содержащий остаточные данные цветовых плоскостей, может быть разделен на энтропийные слайсы, которые могут быть декодированы параллельно. В некоторых вариантах осуществления настоящего изобретения, остаток 200 яркости может иметь относительно больше энтропийных слайсов по сравнению с остатками 202, 204 цветности.
В некоторых вариантах осуществления настоящего изобретения, битовый поток сжатого видео может быть транскодирован, чтобы содержать энтропийные слайсы, тем самым обеспечивая возможность параллельного энтропийного кодирования, как приспособлено посредством вариантов осуществления настоящего изобретения, описанных выше. Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.10. Входной битовый поток без энтропийных слайсов может быть обработан картинка за картинкой, согласно Фиг.10. В этих вариантах осуществления настоящего изобретения, картинка из входного битового потока может быть энтропийно декодирована 220. Могут быть получены данные, которые были кодированы, например, данные режима, информация движения, остаточная информация и другие данные. Энтропийные слайсы могут быть сконструированы 222 одна за раз из данных. Заголовок энтропийного слайса, соответствующий энтропийному слайсу, может быть вставлен 224 в новый битовый поток. Может быть сброшено состояние кодера, и задана 226 информация соседних элементов. Энтропийный слайс может быть энтропийно кодирован 228 и записан в новый битовый поток. Если есть данные картинки, которые не были использованы 232 сконструированными энтропийными слайсами, то может быть сконструирована 222 еще один энтропийный слайс, и процесс 224-230 может продолжаться пока все данные картинки не будут использованы 234 сконструированными энтропийными слайсами, и затем может быть обработана следующая картинка.
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть меньше, чем фиксированное число двоичных элементов или может не превышать его. В некоторых вариантах осуществления, в которых кодер может ограничивать размер каждого энтропийного слайса, максимальное число двоичных элементов может быть сигнализировано в битовом потоке. В альтернативных вариантах осуществления, в которых кодер может ограничивать размер каждого энтропийного слайса, максимальное число двоичных элементов может быть задано посредством профиля и точки соответствия уровня кодера. Например, приложение A спецификации H.264/AVC-кодирования видео может быть расширено, чтобы содержать задание максимального числа двоичных элементов, допустимого в энтропийном слайсе.
m.n
В некоторых вариантах осуществления настоящего изобретения, максимальное число двоичных элементов, допустимое в энтропийном слайсе, может быть указано для каждой точки соответствия уровня кодера, согласно таблице, например, как показано в таблице 2, где M обозначает максимальное число двоичных элементов, допустимое в энтропийном слайсе для точки соответствия уровня m.n.
Таблица 2
Максимальное число двоичных элементов в каждом энтропийном слайсе для каждого уровня
Уровень
Максимальное число двоичных элементов в каждом энтропийном слайсе
1.1
M<sub>1.1</sub>
1.2
M<sub>1.2</sub>
:
:
m.n
M<sub>m.n</sub>
:
:
5.1
M<sub>5.1</sub>
1.1
1.2
5.1
1.1
1.2
5.1
Примерным максимальным числом двоичных элементов, допустимым в энтропийном слайсе, является M = 1000 двоичных элементов, M = 2000 двоичных элементов,..., и M = 40000 двоичных элементов. Другим примерным максимальным числом двоичных элементов, допустимым в энтропийном слайсе, является M = 2500 двоичных элементов, M = 4200 двоичных элементов,..., и M = 150000 двоичных элементов.
В некоторых вариантах осуществления, набор максимального числа двоичных элементов, допустимого в энтропийном слайсе, может быть определен для всех уровней на основе скорости передачи в битах, размера изображения, числа макроблоков и других параметров кодирования. В некоторых вариантах осуществления настоящего изобретения, максимальное число двоичных элементов, допустимое в энтропийном слайсе, может быть установлено в одинаковое число для всех уровней. Примерными значениями являются 38000 двоичных элементов и 120000 двоичных элементов.
В некоторых вариантах осуществления настоящего изобретения, кодер может определить число двоичных элементов в наихудшем случае, ассоциированных с макроблоком, и кодер может записать двоичные элементы, ассоциированные с:
ESLICE_MaxNumberBins
BinsPerMB
макроблоками для каждого энтропийного слайса, где ESLICE_MaxNumberBins может обозначать максимальное число двоичных элементов, допустимое в энтропийном слайсе, и BinsPerMB может обозначать число двоичных элементов в наихудшем случае, ассоциированных с макроблоком. В некоторых вариантах осуществления, макроблоки могут быть выбраны в порядке растрового сканирования. В альтернативных вариантах осуществления, макроблоки могут быть выбраны в другом предварительно заданном порядке. В некоторых вариантах осуществления, число двоичных элементов в наихудшем случае, ассоциированных с макроблоком, может быть фиксированным числом. В альтернативных вариантах осуществления, кодер может обновлять число в наихудшем случае на основе измерений размеров ранее обработанных макроблоков.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.11. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом ни один энтропийный слайс не может быть больше в размере, чем предварительно определенное число двоичных элементов. Кодер может инициализировать 240 в ноль счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как A для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.11. Могут быть получены 242 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 244 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Может быть определено 246 число двоичных элементов, ассоциированных с макроблоком. Число двоичных элементов, ассоциированных с макроблоком, может включать в себя двоичные элементы в строках двоичных элементов, ассоциированных с недвоичными синтаксическими элементами, в дополнение к двоичным синтаксическим элементам, и число двоичных элементов, ассоциированных с макроблоком, может быть обозначено как num для иллюстративных целей в остаточной части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.11.
Если число двоичных элементов, ассоциированных с макроблоком, может быть добавлено 248 к числу уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, без 249 превышения максимального числа двоичных элементов, допустимого для энтропийного слайса, то число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 250, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, и двоичные элементы, ассоциированные с макроблоком, могут быть записаны 252, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 242 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Если 248 сумма числа двоичных элементов, ассоциированных с макроблоком, и числа уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, превышает 253 максимальное число двоичных элементов, допустимое для энтропийного слайса, то кодер может начать 254 новый энтропийный слайс, ассоциированный с текущим слайсом для реконструкции, и может завершить текущий энтропийный слайс. Затем счетчик, ассоциированный с числом двоичных элементов, в новой, теперь текущей, энтропийному слайсу может быть инициализирован 256 в ноль. Число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 250, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, и двоичные элементы, ассоциированные с макроблоком, могут быть записаны 252, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 242 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.12. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом ни один энтропийный слайс не может быть больше в размере, чем предварительно определенное максимальное число двоичных элементов. В этих вариантах осуществления, кодер может ассоциировать синтаксические элементы макроблока с энтропийным слайсом, пока размер энтропийного слайса не достигнет порога, ассоциированного с предварительно определенным максимальным числом двоичных элементов, допустимым в энтропийном слайсе. В некоторых вариантах осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого в энтропийном слайсе. В одном варианте осуществления, порог может быть 90% от максимального числа двоичных элементов, допустимого в энтропийном слайсе, поддерживая, чтобы наибольшее число двоичных элементов, ожидаемых в макроблоке, было меньше, чем 10% от максимального числа двоичных элементов. В другом варианте осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого в энтропийном слайсе, при этом данный процент может быть основан на наибольшем числе двоичных элементов, ожидаемых в макроблоке. В этих вариантах осуществления, если размер энтропийного слайса превышает пороговый размер, то может быть создан другой энтропийный слайс. Пороговый размер может быть выбран для гарантии того, что энтропийный слайс не превышает максимальное число двоичных элементов, допустимое в энтропийном слайсе. В некоторых вариантах осуществления, пороговый размер может быть функцией максимального числа двоичных элементов, допустимого в энтропийном слайсе, и оценки максимального числа двоичных элементов, ожидаемых в макроблоке.
Кодер может инициализировать 270 в ноль счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как A для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.12. Могут быть получены 272 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 274 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Двоичные элементы, ассоциированные с макроблоком, могут быть записаны 276, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Число двоичных элементов, ассоциированных с макроблоками, может быть определено 278, и число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 280, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком. Если 282 число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, больше 284, чем порог, который может быть обозначен как TH(MaxNumBins), основанный на максимальном числе двоичных элементов, допустимом в энтропийном слайсе, то кодер может начать 286 новый энтропийный слайс и может завершить текущий энтропийный слайс. Затем, кодер может инициализировать 288 в ноль счетчик, ассоциированный с числом двоичных элементов в новом, теперь текущем, энтропийном слайсе. Могут быть получены 272 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться. Если число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, не больше 283, чем порог, основанный на максимальном числе двоичных элементов, допустимом в энтропийном слайсе, то могут быть получены 272 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
В некоторых вариантах осуществления настоящего изобретения, кодер может завершить текущий слайс для реконструкции и начать новый слайс для реконструкции, когда предварительно определенное число макроблоков было назначено текущему слайсу для реконструкции.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.13. В этих вариантах осуществления, кодер может завершить текущий слайс для реконструкции и начать новый слайс для реконструкции, когда предварительно определенное число макроблоков было назначено текущему слайсу для реконструкции. Кодер может инициализировать 300 в ноль счетчик, ассоциированный с числом макроблоков в текущем слайсе для реконструкции. Значение счетчика может быть обозначено как AMB для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.13. Кодер может инициализировать 310 в ноль счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как ABin для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.13. Если 312 значение счетчика для счетчика, ассоциированного с числом макроблоков в текущем слайсе для реконструкции, не меньше 331, чем предварительно определенное максимальное число макроблоков, допустимое в слайсе для реконструкции, то может быть начат 332 новый энтропийный слайс, и может быть начат 334 новый слайс для реконструкции, завершая текущий слайс для реконструкции и текущий энтропийный слайс. Максимальное число макроблоков, допустимое в слайсе для реконструкции, может быть обозначено как MaxMBperRSlice для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.13.
Если значение счетчика для счетчика, ассоциированного с числом макроблоков в текущем слайсе для реконструкции, меньше 313, чем предварительно определенное максимальное число макроблоков, допустимое в слайсе для реконструкции, то могут быть получены 314 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 316 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Может быть определено 318 число двоичных элементов, ассоциированных с макроблоком. Число двоичных элементов, ассоциированных с макроблоком, может включать в себя двоичные элементы в строках двоичных элементов, ассоциированных с недвоичными синтаксическими элементами, в дополнение к двоичным синтаксическим элементам, и число двоичных элементов, ассоциированных с макроблоком, может быть обозначено как num для иллюстративных целей в остаточной части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.13.
Если число двоичных элементов, ассоциированных с макроблоком, может быть добавлено 320 к числу уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, без 321 превышения максимального числа двоичных элементов, допустимого для энтропийного слайса, то число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 322, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, двоичные элементы, ассоциированные с макроблоком, могут быть записаны 324, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом, и число макроблоков, ассоциированных с текущим слайсом для реконструкции, может быть увеличено 326. Число макроблоков, ассоциированных с текущим слайсом для реконструкции, может сравниваться 312 с предварительно определенным максимальным числом макроблоков, допустимым в слайсе для реконструкции, и процесс разделения может продолжиться.
Если 320 сумма числа двоичных элементов, ассоциированных с макроблоком, и числа уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, превышает 327 максимальное число двоичных элементов, допустимое для энтропийного слайса, то кодер может начать 328 новую, теперь текущий, энтропийный слайс, ассоциированный с текущим слайсом для реконструкции, и счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе, может быть инициализирован 330 в ноль. Число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 322, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, двоичные элементы, ассоциированные с макроблоком, могут быть записаны 324, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом, и число макроблоков, ассоциированных с текущим слайсом для реконструкции, может быть увеличено 326. Число макроблоков, ассоциированных с текущим слайсом для реконструкции, может сравниваться 312 с предварительно определенным максимальным числом макроблоков, допустимым в слайсе для реконструкции, и процесс разделения может продолжиться.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.14. В этих вариантах осуществления, кодер может начать новый слайс для реконструкции, когда предварительно определенное число макроблоков было назначено текущим слайсом для реконструкции. В этих вариантах осуществления, кодер может ассоциировать синтаксические элементы макроблока с энтропийным слайсом, пока размер энтропийного слайса не достигнет порога, ассоциированного с предварительно определенным максимальным числом двоичных элементов, допустимым в энтропийном слайсе. В некоторых вариантах осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого в энтропийном слайсе. В одном варианте осуществления, порог может быть 90% от максимального числа двоичных элементов, допустимого в энтропийном слайсе, поддерживая, чтобы наибольшее число двоичных элементов, ожидаемых в макроблоке, было меньше, чем 10% от максимального числа двоичных элементов. В другом варианте осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого в энтропийном слайсе, при этом данный процент может быть основан на наибольшем числе двоичных элементов, ожидаемых в макроблоке. В этих вариантах осуществления, если размер энтропийного слайса превышает пороговый размер, то может быть создан другой энтропийный слайс. Пороговый размер может быть выбран для гарантии того, что энтропийный слайс не превышает максимальное число двоичных элементов, допустимое в энтропийном слайсе. В некоторых вариантах осуществления, пороговый размер может быть функцией максимального числа двоичных элементов, допустимого в энтропийном слайсе, и оценки максимального числа двоичных элементов, ожидаемых в макроблоке.
Кодер может инициализировать 350 в ноль счетчик, ассоциированный с числом макроблоков в текущем слайсе для реконструкции. Значение счетчика может быть обозначено как AMB для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.14. Кодер может инициализировать 352 в ноль счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как ABin для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.14. Если 354 значение счетчика для счетчика, ассоциированного с числом макроблоков в текущем слайсе для реконструкции, не меньше 373, чем предварительно определенное максимальное число макроблоков, допустимое в слайсе для реконструкции, то может быть начат 374 новый энтропийный слайс, и может быть начат 376 новый слайс для реконструкции. Максимальное число макроблоков, допустимое в слайсе для реконструкции, может быть обозначено как MaxMBperRSlice для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.14.
Если значение счетчика для счетчика, ассоциированного с числом макроблоков в текущем слайсе для реконструкции, меньше 355, чем предварительно определенное максимальное число макроблоков, допустимое в слайсе для реконструкции, то могут быть получены 356 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 358 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Двоичные элементы, ассоциированные с макроблоком, могут быть записаны 360, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Число двоичных элементов, ассоциированных с макроблоками, может быть определено 362, и число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 364, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком. Если 366 число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, больше 369, чем порог, который может быть обозначен как TH(MaxNumBins), основанный на максимальном числе двоичных элементов, допустимом в энтропийном слайсе, то кодер может начать 370 новый энтропийный слайс и инициализировать 372 в ноль счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе. Число макроблоков, ассоциированных с текущим слайсом для реконструкции, может быть увеличено 368. Число макроблоков, ассоциированных с текущим слайсом для реконструкции, может сравниваться 354 с предварительно определенным максимальным числом макроблоков, допустимым в слайсе для реконструкции, и процесс разделения может продолжиться. Если число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, не больше 367, чем порог, основанный на максимальном числе двоичных элементов, допустимом в энтропийном слайсе, то число макроблоков, ассоциированных с текущим слайсом для реконструкции, может быть увеличено 368, и число макроблоков, ассоциированных с текущим слайсом для реконструкции, может сравниваться 354 с предварительно определенным максимальным числом макроблоков, допустимым в слайсе для реконструкции, и процесс разделения может продолжиться.
В альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом каждый энтропийный слайс может быть ассоциирован с не более, чем предварительно заданным числом битов.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.15. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом ни один энтропийный слайс не может быть больше в размере, чем предварительно определенное число битов. Кодер может инициализировать 400 в ноль счетчик, ассоциированный с числом битов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как A для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.15. Могут быть получены 402 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 404 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Двоичные элементы, преобразованные недвоичные элементы и бинарные элементы, ассоциированные с макроблоком, могут быть представлены энтропийному кодеру, и двоичные элементы могут быть энтропийно кодированы 406.
Может быть определено 408 число битов, ассоциированных с макроблоком. Число битов, ассоциированных с макроблоком, может быть обозначено как num для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.15.
Если число битов, ассоциированных с макроблоком, может быть добавлено 410 к числу уже накопленных битов, ассоциированных с текущим энтропийным слайсом, без 411 превышения максимального числа битов, допустимого для энтропийного слайса, то число накопленных битов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 412, чтобы включать в себя биты, ассоциированные с макроблоком, и биты, ассоциированные с макроблоком, могут быть записаны 414 в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 402 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Если 410 сумма числа битов, ассоциированных с макроблоком, и числа уже накопленных битов, ассоциированных с текущим энтропийным слайсом, превышает 415 максимальное число битов, допустимое для энтропийного слайса, то кодер может начать 416 новый энтропийный слайс, ассоциированный с текущим слайсом для реконструкции, и счетчик, ассоциированный с числом битов в текущем энтропийном слайсе, может быть инициализирован 418 в ноль. Число накопленных битов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 412, чтобы включать в себя биты, ассоциированные с макроблоком, и биты, ассоциированные с макроблоком, могут быть записаны 414 в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 402 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.16. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом ни один энтропийный слайс не может быть больше в размере, чем предварительно определенное максимальное число битов. В этих вариантах осуществления, кодер может ассоциировать синтаксические элементы макроблока с энтропийным слайсом, пока размер энтропийного слайса не достигнет порога, ассоциированного с предварительно определенным максимальным числом битов, допустимым в энтропийном слайсе. В некоторых вариантах осуществления, порог может быть некоторым процентом от максимального числа битов, допустимого в энтропийном слайсе. В одном варианте осуществления, порог может быть 90% от максимального числа битов, допустимого в энтропийном слайсе, поддерживая, чтобы наибольшее число битов, ожидаемых в макроблоке, было меньше, чем 10% от максимального числа битов. В другом варианте осуществления, порог может быть некоторым процентом от максимального числа битов, допустимого в энтропийном слайсе, при этом данный процент может быть основан на наибольшем числе битов в макроблоке. В этих вариантах осуществления, если размер энтропийного слайса превышает пороговый размер, то может быть создан другой энтропийный слайс. Пороговый размер может быть выбран для гарантии того, что энтропийный слайс не превышает максимальное число битов, допустимое в энтропийном слайсе. В некоторых вариантах осуществления, пороговый размер может быть функцией максимального числа битов, допустимого в энтропийном слайсе, и оценки максимального числа битов, ожидаемых в макроблоке.
Кодер может инициализировать 440 в ноль счетчик, ассоциированный с числом битов в текущем энтропийном слайсе. Значение счетчика может быть обозначено как A для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.16. Могут быть получены 442 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 444 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Двоичные элементы, ассоциированные с макроблоком могут быть энтропийно кодированы 446, и может быть определено 448 число двоичных элементов, ассоциированных с макроблоком. Число накопленных битов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 450, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, и энтропийно кодированные двоичные элементы, ассоциированные с макроблоком, могут быть записаны 414 в битовый поток. Если 454 число накопленных битов, ассоциированных с текущим энтропийным слайсом, больше 456, чем порог, основанный на максимальном числе битов, допустимом в энтропийном слайсе, то кодер может начать 458 новый энтропийный слайс и инициализировать 460 в ноль счетчик, ассоциированный с числом битов в текущем энтропийном слайсе. Могут быть получены 442 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться. Если число накопленных битов, ассоциированных с текущим энтропийным слайсом, не больше 455, чем порог, основанный на максимальном числе битов, допустимом в энтропийном слайсе, то могут быть получены 442 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
В альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом каждый энтропийный слайс может быть ассоциирован с не более, чем предварительно заданным числом макроблоков.
В некоторых вариантах осуществления настоящего изобретения, в дополнение к ограничению на размер энтропийного слайса может быть наложено ограничение на максимальное число макроблоков в слайсе для реконструкции.
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен до менее, чем предварительно заданного числа макроблоков и до менее, чем предварительно заданного числа двоичных элементов.
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен до менее, чем предварительно заданного числа макроблоков и до менее, чем предварительно заданного числа битов.
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен до менее, чем предварительно заданного числа макроблоков, до менее, чем предварительно заданного числа двоичных элементов, и до менее, чем предварительно заданного числа битов.
В некоторых вариантах осуществления настоящего изобретения, кодирование двоичных элементов внутри энтропийного кодера может распараллеливаться, обеспечивая возможность параллельного кодирования более, чем одного двоичного элемента, что может уменьшить время кодирования. Эти варианты осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного кодера, изображенного на Фиг.17. В этих вариантах осуществления, энтропийный кодер может содержать блок 482 адаптации контекста, блок 484 выбора кодера двоичных элементов на основе состояния и множество (показано три) кодеров 486, 488, 500 двоичных элементов, также считающиеся блоками кодеров двоичных элементов, которые могут работать параллельно. Двоичные элементы 502 могут быть сделаны доступными для энтропийного кодера 480 из блока 504 бинаризации, который может генерировать двоичные элементы 502 из входных символов 506. Двоичные элементы 502 могут быть сделаны доступными для блока 482 адаптации контекста и блока 484 выбора кодера двоичных элементов на основе состояния. Блок 482 адаптации контекста может выполнять адаптацию контекста и генерировать состояние модели, также называемое состоянием, 508, которое может быть использовано для выбора кодера двоичных элементов, в который может быть направлен двоичный элемент 502, из числа кодеров 486, 488, 500 двоичных элементов. Блок 484 выбора кодера двоичных элементов на основе состояния может выбирать кодер двоичных элементов, ассоциированный с сгенерированным состоянием 508 модели, из числа кодеров 486, 488, 500 двоичных элементов для кодирования двоичного элемента 502. В некоторых вариантах осуществления (не показано), сгенерированное состояние 508 может быть сделано доступным для выбранного кодера двоичных элементов. Выходные биты 510, 512, 514 могут быть сгенерированы кодерами 486, 488, 500 двоичных элементов, и выходные биты 510, 512, 514 могут быть включены в битовый поток. В некоторых вариантах осуществления настоящего изобретения, выходные биты 510, 512, 514 могут быть помещены в буфер и включены в битовый поток посредством конкатенации. В альтернативных вариантах осуществления, выходные биты 510, 512, 514 могут быть помещены в буфер и включены с битовый поток согласно схеме чередования.
Согласно вариантам осуществления настоящего изобретения, описанным относительно Фиг.17, первый двоичный элемент может быть отправлен первому кодеру двоичных элементов в ответ на первое состояние модели, сгенерированное относительно первого двоичного элемента. Блок 482 адаптации контекста, после окончания обработки первого двоичного элемента, может начать обработку второго двоичного элемента, отправляя второй двоичный элемент второму кодеру двоичных элементов в ответ на второе состояние модели, сгенерированное относительно второго двоичного элемента, тем самым обеспечивая возможность по существу параллельной обработки более, чем одного двоичного элемента.
В альтернативных вариантах осуществления настоящего изобретения, энтропийный кодер может содержать множество блоков адаптации контекста, которые могут работать параллельно, и одиночный кодер двоичных элементов. В системах, в которых блоки адаптации контекста требуют более длительного времени обработки, чем кодер двоичных элементов, множество блоков адаптации контекста, работающих параллельно, может уменьшить время кодирования. Некоторые из этих вариантов осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного кодера, изображенного на Фиг.18. В этих вариантах осуществления, энтропийный кодер 530 может содержать множество (показано три) блоков 532, 534, 536 адаптации контекста, блок 538 выбора блока адаптации контекста, блок 540 выбора состояния и кодер 542 двоичных элементов. Двоичные элементы 544 могут быть сделаны доступными для энтропийного кодера 530 из блока 546 бинаризации, который может генерировать двоичные элементы 544 из входных символов 548. Двоичные элементы 544 могут быть сделаны доступными для блока 538 выбора блока адаптации контекста, блока 540 выбора состояния и блока 542 двоичных элементов. Блок 538 выбора блока адаптации контекста может быть использован для выбора, или для планирования, блока 532, 534, 536 адаптации контекста, в который может быть направлен двоичный элемент 544, и из которого может быть сгенерировано значение 550, 552, 554 состояния. В некоторых примерных вариантах осуществления, блок 538 выбора блока адаптации контекста может выбирать блок адаптации контекста из числа блоков 532, 534, 536 адаптации контекста на основе синтаксиса, ассоциированного с двоичным элементом, например, идентификатор блока адаптации контекста может быть ассоциирован с двоичным элементом, идентифицирующим блок адаптации контекста, в который двоичный элемент может быть направлен для обработки. В альтернативных примерных вариантах осуществления, блок 538 выбора блока адаптации контекста может выбирать блок адаптации контекста из числа блоков 532, 534, 536 адаптации контекста на основе протокола планирования или ограничения распределения нагрузки, ассоциированного с блоками 532, 534, 536 адаптации контекста. В некоторых вариантах осуществления, значение сгенерированного состояния может быть выбрано блоком 540 выбора состояния, согласно критерию, используемому в блоке 538 выбора блока адаптации контекста, с соответствующей привязкой по времени для пропуска в кодер 542 двоичных элементов. Кодер 542 двоичных элементов может использовать значение 556 состояния, пропущенное блоком 540 выбора состояния, при кодировании двоичного элемента 544. В альтернативных вариантах осуществления настоящего изобретения (не показано), значение состояния может не требоваться кодером двоичных элементов и, вследствие этого, может быть не сделано доступным для кодера двоичных элементов. Выходные биты 558 могут быть сгенерированы кодером 542 двоичных элементов, и выходные биты 558 могут быть включены в битовый поток. В некоторых вариантах осуществления настоящего изобретения, выходные биты 558 могут быть помещены в буфер и включены в битовый поток посредством конкатенации. В альтернативных вариантах осуществления, выходные биты 558 могут быть помещены в буфер и включены с битовый поток согласно схеме чередования.
В альтернативных вариантах осуществления настоящего изобретения, энтропийный кодер может содержать множество блоков адаптации контекста, которые могут работать параллельно, и множество кодеров двоичных элементов, которые могут работать параллельно. Эти варианты осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного кодера, изображенного на Фиг.19. В этих вариантах осуществления, энтропийный кодер 570 может содержать множество (показано три) блоков 572, 574, 576 адаптации контекста, блок 578 выбора блока адаптации контекста, блок 580 выбора состояния, блок 582 выбора кодера двоичных элементов на основе состояния, и множество (показаны три) кодеров 584, 586, 588 двоичных элементов. Двоичные элементы 590 могут быть сделаны доступными для энтропийного кодера 570 из блока 592 бинаризации, который может генерировать двоичные элементы 590 из входных символов 594. Двоичные элементы 590 могут быть сделаны доступными для блока 578 выбора блока адаптации контекста, блока 580 выбора состояния и блока 582 выбора кодера двоичных элементов. Блок 578 выбора блока адаптации контекста может быть использован для выбора, или для планирования, блока 572, 574, 576 адаптации контекста, в который может быть направлен двоичный элемент 590, и из которого может быть сгенерировано значение 596, 598, 600 состояния. Значение сгенерированного состояния может быть выбрано блоком 580 выбора состояния с соответствующей привязкой по времени для пропуска на блок 582 выбора кодера двоичных элементов на основе состояния. Блок 582 выбора кодера двоичных элементов на основе состояния может использовать значение 602 состояния, пропущенное блоком 580 выбора состояния, для выбора кодера двоичного элемента из числа кодеров 584, 586, 588 двоичных элементов, в который может быть направлен двоичный элемент 590. В альтернативных вариантах осуществления (не показано), значение 602 состояния может быть сделано доступным для выбранного кодера двоичных элементов. Выбранный кодер двоичных элементов может использовать значение 602 состояния при кодировании двоичного элемента 590. В альтернативных вариантах осуществления настоящего изобретения (не показано), значение состояния может не требоваться кодером двоичных элементов и, вследствие этого, может быть не сделано доступным для кодера двоичных элементов. Выходные биты 604, 606, 608 могут быть сгенерированы кодерами 584, 586, 588 двоичных элементов, и выходные биты 604, 606, 608 могут быть включены в битовый поток. В некоторых вариантах осуществления настоящего изобретения, выходные биты 604, 606, 608 могут быть помещены в буфер и включены в битовый поток посредством конкатенации. В альтернативных вариантах осуществления, выходные биты 604, 606, 608 могут быть помещены в буфер и включены в битовый поток согласно схеме чередования.
Примерный вариант осуществления настоящего изобретения может содержать множество кодеков, осуществляющих кодирование с переменной длиной кодового слова, которые могут работать параллельно.
В одном примерном варианте осуществления настоящего изобретения, кодер двоичных элементов может содержать двоичное арифметическое кодирование. В другом примерном варианте осуществления настоящего изобретения, кодер двоичных элементов может содержать кодирование с переменной длиной кодового слова. В еще одном примерном варианте осуществления настоящего изобретения, кодер двоичных элементов может содержать кодирование с фиксированной длиной кодового слова.
ca
bc
ca
bc
В основном, энтропийный кодер может содержать N блоков адаптации контекста и N блоков кодеров двоичных элементов, где N является целым числом, большим, или равным, чем один, и N является целым числом, большим, или равным, чем один.
ca
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, что один, или более, из N блоков адаптации контекста и Nbc блоков кодеров двоичных элементов может, каждый, работать над не более, чем ограниченным числом двоичных элементов во время обработки энтропийного слайса. Блоки адаптации контекста и блоки кодеров двоичных данных с такими ограничениями могут быть названы блоками энтропийных кодеров с ограничениями.
ca
ca
ca
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, что ни один из N блоков адаптации контекста не может работать над более, чем B двоичными элементами во время обработки энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, значение B может быть сигнализировано, например, в битовом потоке, ограничении профиля, ограничении уровня или другом нормативном механизме.
bc
В альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, что ни один из N блоков кодеров двоичных элементов не может работать над более, чем Bbc двоичными элементами во время обработки энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, значение Bbc может быть сигнализировано, например, в битовом потоке, ограничении профиля, ограничении уровня или другом нормативном механизме.
ca
bc
bc
bc
В еще одних альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, что ни один из N блоков адаптации контекста не может работать над более, чем Bca двоичными элементами, и ни один из N блоков кодеров двоичных элементов не может работать над более, чем B двоичными элементами во время обработки энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, значение B и значение Bca могут быть сигнализированы, например, в битовом потоке, ограничении профиля, ограничении уровня или другом нормативном механизме.
ca
ca
ca
ca
bc
bc
bc
bc
bc
ca
В еще одних альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, что i-й N блок адаптации контекста, обозначенный как N(i), для i = 1,..., N, может работать над не более, чем B(i) двоичными элементами, и i-й N блок кодера двоичных элементов, N(i), для i = 1,..., N, может работать над не более, чем B(i) двоичными элементами во время обработки энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, значения B(i) и значения B(i) могут быть сигнализированы, например, в битовом потоке, ограничении профиля, ограничении уровня или другом нормативном механизме.
ca
bc
Некоторые примерные варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.20. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, один, или более, из N блоков адаптации контекста и N блоков кодеров двоичных элементов может работать над не более, чем ограниченным числом двоичных элементов. Кодер может инициализировать 650 в ноль счетчик, для каждого блока энтропийного кодера с ограничениями, ассоциированный с числом двоичных элементов, обработанных в текущем энтропийном слайсе. Для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.20, значение счетчика, обозначенное как A, где A представляет вектор, где каждый вход в векторе соответствует накопленному числу обработанных двоичных элементов, для текущего энтропийного слайса, посредством блока энтропийного кодера с ограничениями. Могут быть получены 652 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 654 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Может быть определено 656 число двоичных элементов, ассоциированных с макроблоком, обработанных каждым блоком энтропийного кодера с ограничениями. Число двоичных элементов, ассоциированных с макроблоками, может включать в себя двоичные элементы в строках двоичных элементов, ассоциированные с недвоичными синтаксическими элементами, в дополнение к двоичным синтаксическим элементам. Для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.20, число двоичных элементов, ассоциированных с макроблоком, обработанных каждым блоком энтропийного кодера с ограничениями, может быть обозначено как num, где num представляет вектор, где каждый вход в векторе соответствует числу обработанных двоичных элементов, для текущего макроблока, посредством блока энтропийного кодера с ограничениями.
Если число двоичных элементов, ассоциированных с макроблоком, для каждого блока энтропийного кодера с ограничениями может быть добавлено 658 к числу уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, для каждого блока энтропийного кодера с ограничениями, без 659 превышения максимального числа двоичных элементов, допустимого для любого блока энтропийного кодера с ограничениями, то число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 660, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, и двоичные элементы, ассоциированные с макроблоком, могут быть записаны 662, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 652 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Если 658 сумма числа двоичных элементов, ассоциированных с макроблоком, и числа уже накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, превышает 663 максимальное число двоичных элементов, допустимое для любого блока энтропийного кодера с ограничениями, то кодер может начать 664 новый энтропийный слайс, ассоциированный с текущим слайсом для реконструкции, и счетчик, ассоциированный с числом двоичных элементов в текущем энтропийном слайсе, может быть инициализирован 666 в ноль. Число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, может быть обновлено 660, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком, и двоичные элементы, ассоциированные с макроблоком, могут быть записаны 662, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Могут быть получены 652 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
ca
bc
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.21. В этих вариантах осуществления, кодер может, для слайса для реконструкции, разделить слайс для реконструкции на множество энтропийных слайсов, при этом размер каждого энтропийного слайса может быть ограничен так, один, или более, из N блоков адаптации контекста и N блоков кодеров двоичных элементов может работать над не более, чем ограниченным числом двоичных элементов. Кодер может инициализировать 700 в ноль счетчик, для каждого блока энтропийного кодера с ограничениями, ассоциированный с числом двоичных элементов, обработанных в текущем энтропийном слайсе посредством блока энтропийного кодера с ограничениями. Для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.21, значение счетчика, обозначенное как A, где A представляет вектор, где каждый вход в векторе соответствует накопленному числу обработанных двоичных элементов, для текущего энтропийного слайса, посредством блока энтропийного кодера с ограничениями. В этих вариантах осуществления, кодер может ассоциировать синтаксические элементы макроблока с энтропийным слайсом, пока число двоичных элементов, обработанных блоком энтропийного кодера с ограничениями, не достигнет порога, ассоциированного с предварительно определенным максимальным числом двоичных элементов, допустимым для обработки, в энтропийном слайсе, посредством блока энтропийного кодера с ограничениями. В некоторых вариантах осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого для обработки, в энтропийном слайсе, посредством блока энтропийного кодера с ограничениями. В одном варианте осуществления, порог может быть 90% от максимального числа двоичных элементов, допустимого для обработки, в энтропийном слайсе, посредством блока энтропийного кодера с ограничениями, поддерживая, чтобы наибольшее число двоичных элементов, ожидаемых в макроблоке, для обработки посредством блока энтропийного кодера с ограничениями было меньше, чем 10% от максимального числа двоичных элементов, допустимого для обработки, в энтропийном слайсе, посредством блока энтропийного кодера с ограничениями. В другом варианте осуществления, порог может быть некоторым процентом от максимального числа двоичных элементов, допустимого для обработки, в энтропийном слайсе, посредством блока энтропийного кодера с ограничениями, при этом данный процент может быть основан на наибольшем числе двоичных элементов, ожидаемых в макроблоке, для обработки посредством блока энтропийного кодера с ограничениями. В этих вариантах осуществления, если размер энтропийного слайса превышает пороговый размер, то может быть создан другой энтропийный слайс. Пороговый размер может быть выбран для гарантии того, что энтропийный слайс не превышает максимальное число двоичных элементов, допустимое для обработки посредством любого блока энтропийного кодера с ограничениями, в энтропийном слайсе. В некоторых вариантах осуществления, пороговый размер может быть функцией максимального числа двоичных элементов, допустимого в энтропийном слайсе, и оценки максимального числа двоичных элементов, ожидаемых в макроблоке.
Могут быть получены 702 синтаксические элементы для следующего макроблока. Следующий макроблок может быть определен согласно предварительно заданному порядку обработки макроблоков. В некоторых вариантах осуществления, порядок обработки макроблоков может соответствовать порядку растрового сканирования. Недвоичные синтаксические элементы в макроблоке могут быть преобразованы 704 в строку двоичных элементов. Двоичные синтаксические элементы могут не требовать преобразования. Двоичные элементы, ассоциированные с макроблоком, могут быть записаны 706, посредством энтропийного кодера, в битовый поток и ассоциированы с текущим энтропийным слайсом. Может быть определено 708 число двоичных элементов, ассоциированных с макроблоком, обработанных каждым блоком энтропийного кодера с ограничениями. Число двоичных элементов, ассоциированных с макроблоками, может включать в себя двоичные элементы в строках двоичных элементов, ассоциированные с недвоичными синтаксическими элементами, в дополнение к двоичным синтаксическим элементам. Для иллюстративных целей в оставшейся части описания вариантов осуществления настоящего изобретения, описанных относительно Фиг.21, число двоичных элементов, ассоциированных с макроблоком, обработанных каждым блоком энтропийного кодера с ограничениями, может быть обозначено как num, где num представляет вектор, где каждый вход в векторе соответствует числу обработанных двоичных элементов, для текущего макроблока, посредством соответствующего блока энтропийного кодера с ограничениями. Может быть обновлено 710 число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, обработанных каждым блоком энтропийного кодера с ограничениями, чтобы включать в себя двоичные элементы, ассоциированные с макроблоком. Если 712 число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, обработанных посредством блока энтропийного кодера с ограничениями, больше 714, чем порог, который может быть обозначен как TH(MaxNumBins)(i) для блока i энтропийного кодера с ограничениями, то кодер может начать 716 новый энтропийный слайс и инициализировать 718 в ноль счетчик, ассоциированный с числом двоичных элементов, обработанных каждым блоком энтропийного кодера с ограничениями, в текущем энтропийном слайсе. Могут быть получены 702 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться. Если число накопленных двоичных элементов, ассоциированных с текущим энтропийным слайсом, обработанных блоком энтропийного кодера с ограничениями, не больше 713, чем порог, то могут быть получены 702 синтаксические элементы для следующего макроблока, и процесс разделения может продолжиться.
Некоторые варианты осуществления настоящего изобретения могут содержать комбинацию вышеописанных критериев для разделения энтропийного слайса.
Следует понимать, что пока некоторые варианты осуществления настоящего изобретения могут ограничивать размер энтропийного слайса, чтобы был меньше, чем первый предварительно заданный размер, этот размер энтропийного слайса может быть эквивалентно ограничен, чтобы не превышать второй предварительно заданный размер. Варианты осуществления, описанные в настоящем документе, являются примерными вариантами осуществления настоящего изобретения, и средний специалист в данной области техники оценит, что есть эквивалентные варианты осуществления настоящего изобретения для ограничения размера энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, начинание нового энтропийного слайса может содержать завершение текущего энтропийного слайса и рассматривание нового энтропийного слайса в качестве текущего энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, декодирование множества битов внутри энтропийного слайса может распараллеливаться внутри энтропийного декодера, содержащего множество декодеров двоичных элементов, что может уменьшить время декодирования. Варианты осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного декодера 750, изображенного на Фиг.22, содержащего множество (показаны три) декодеров 762, 764, 766 двоичных элементов. Биты 752 внутри энтропийного слайса и ранее декодированные символы 754 могут быть сделаны доступными для энтропийного декодера 750. Биты 752 могут быть сделаны доступными для блока 756 выбора декодера двоичных элементов, который может выбрать декодер двоичных элементов, на основе состояния 758 контекста, сгенерированого в блоке 760 адаптации контекста, из числа декодеров 762, 764, 766 двоичных элементов. Блок 760 адаптации контекста может генерировать состояние 758 контекста на основе ранее декодированных символов 754, сделанных доступными для блока 760 адаптации контекста. Блок 756 выбора декодера двоичных элементов моет назначить декодеры 762, 764, 766 двоичных элементов на основе состояния 758 контекста. Бит, который должен быть декодирован 752, может быть пропущен блоком 756 выбора декодера двоичных элементов в выбранный декодер двоичных элементов. Декодеры 762, 764, 766 двоичных элементов могут генерировать декодированные двоичные элементы 768, 770, 772, которые могут быть мультиплексированы посредством мультиплексора 774, и мультиплексированные двоичные элементы 776 могут быть отправлены в блок 778 преобразования в символьную форму, который может сгенерировать символы 754, ассоциированные с двоичными элементами 776.
В некоторых вариантах осуществления настоящего изобретения, декодирование множества битов внутри энтропийного слайса может распараллеливаться внутри энтропийного декодера, содержащего множество блоков адаптации контекста, что может уменьшить время декодирования. Варианты осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного декодера 800, изображенного на Фиг.23, содержащего множество (показаны три) блоков 814, 816, 818 адаптации контекста. Биты 802 внутри энтропийного слайса и ранее декодированные символы 810 могут быть сделаны доступными для энтропийного декодера 800. Биты 802 могут быть сделаны доступными для блока 812 адаптации контекста, который может выбрать из множества блоков 814, 816, 818 адаптации контекста блок адаптации контекста для процесса декодирования входного бита. В некоторых вариантах осуществления настоящего изобретения, блок 812 выбора блока адаптации контекста может выбирать N-й блок адаптации контекста при приеме каждого N-ого бита. Выбранный блок адаптации контекста может генерировать состояние 820, 822, 824 контекста на основе ранее декодированных символов 810, сделанных доступными для выбранного блока адаптации контекста. Блок 826 выбора состояния, с соответствующей привязкой по времени, может выбирать сгенерированное состояние контекста, в связи с входным битом. В некоторых вариантах осуществления настоящего изобретения, блок 826 выбора состояния может выбирать N-й блок адаптации контекста при приеме каждого N-ого бита, согласно той же процедуре, как у блок 812 выбора блока адаптации контекста. Выбранное состояние 828 может быть сделано доступным для декодера 804 двоичных элементов. Декодер 804 двоичных элементов может декодировать бит 802 и отправить декодированный двоичный элемент 806 в блок 808 преобразования в символьную форму, который может сгенерировать символ 810, ассоциированный с декодированным двоичным элементом 806.
В некоторых вариантах осуществления настоящего изобретения, декодирование множества битов внутри энтропийного слайса может распараллеливаться внутри энтропийного декодера, содержащего множество блоков адаптации контекста и множество декодеров двоичных элементов, что может уменьшить время декодирования. Варианты осуществления настоящего изобретения могут быть поняты относительно примерного энтропийного декодера 850, изображенного на Фиг.24, содержащего множество (показаны три) блоков 852, 854, 856 адаптации контекста и множество (показаны три) декодеров 858, 860, 862 двоичных элементов. Биты 864 внутри энтропийного слайса и ранее декодированные символы 866 могут быть сделаны доступными для энтропийного декодера 850. Биты 864 могут быть сделаны доступными для блока 868 адаптации контекста, который может выбрать из множества блоков 852, 854, 856 адаптации контекста блок адаптации контекста для процесса декодирования входного бита. В некоторых вариантах осуществления настоящего изобретения, блок 868 выбора блока адаптации контекста может выбирать N-й блок адаптации контекста при приеме каждого N-ого бита. Выбранный блок адаптации контекста может генерировать состояние 870, 872, 874 контекста на основе ранее декодированных символов 866, сделанных доступными для выбранного блока адаптации контекста. Блок 876 выбора состояния, с соответствующей привязкой по времени, может выбирать сгенерированное состояние контекста, в связи с входным битом. В некоторых вариантах осуществления настоящего изобретения, блок 876 выбора состояния может выбирать N-й блок адаптации контекста при приеме каждого N-ого бита, согласно той же процедуре, как у блок 868 выбора блока адаптации контекста. Выбранное состояние 878 может быть сделано доступным для блока 880 выбора декодера двоичных элементов, который может выбрать, на основе состояния 878 контекста, декодер 858, 860, 862 двоичных элементов. Блок 880 выбора декодера двоичных элементов моет назначить декодеры 858, 860, 862 двоичных элементов на основе состояния 878 контекста. Бит, который должен быть декодирован 864, может быть пропущен блоком 880 выбора декодера двоичных элементов в выбранный декодер двоичных элементов. Декодеры 858, 860, 862 двоичных элементов могут генерировать декодированные двоичные элементы 882, 884, 886, которые могут быть мультиплексированы посредством мультиплексора 888, и мультиплексированные двоичные элементы 890 могут быть отправлены в блок 892 преобразования в символьную форму, который может сгенерировать символы 866, ассоциированные с двоичными элементами 890.
В некоторых вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом макроблоки внутри энтропийного слайса являются смежными. Фиг.25 изображает примерный слайс 950 для реконструкции, разделенный на три энтропийных слайса: энтропийный слайс 0, показанный перекрестной штриховкой 952, энтропийный слайс 1, показанный белым 954, и энтропийный слайс 2, показанный штриховкой точками 956. Макроблоки внутри каждого энтропийного слайса 952, 954, 956, в этом примерном слайсе 950 для реконструкции, являются смежными.
В альтернативных вариантах осуществления настоящего изобретения, кодер может разделить слайс для реконструкции на множество энтропийных слайсов, при этом макроблоки внутри энтропийного слайса могут не быть смежными. Фиг.26 изображает примерный слайс 960 для реконструкции, разделенный на три энтропийных слайса: энтропийный слайс 0, показанный перекрестной штриховкой 962, энтропийный слайс 1, показанный белым 964, и энтропийный слайс 2, показанный штриховкой точками 966. Макроблоки внутри каждого энтропийного слайса 962, 964, 966, в этом примерном слайсе 960 для реконструкции, не являются смежными. Раздел слайса для реконструкции, в котором макроблоки внутри энтропийного слайса не являются смежными, может быть назван разделом с чередованием.
В некоторых вариантах осуществления настоящего изобретения, во время энтропийного декодирования текущего блока внутри энтропийного слайса, декодер может использовать другие блоки из того же энтропийного слайса, чтобы предсказать информацию, относящуюся к энтропийному декодированию текущего блока. В некоторых вариантах осуществления настоящего изобретения, во время реконструкции текущего блока внутри слайса для реконструкции, для предсказания информации, относящейся к реконструкции текущего блока, могут быть использованы другие блоки из того же слайса для реконструкции.
В некоторых вариантах осуществления настоящего изобретения, в которых слайс для реконструкции содержит раздел с чередованием, соседние блоки внутри энтропийного слайса, используемые при декодировании текущего блока внутри данного энтропийного слайса, могут не быть непосредственно соседними, или смежными. Фиг.27 иллюстрирует эту ситуацию для примерного раздела с чередованием, изображенного на Фиг.26.
На Фиг.27, для текущего блока 970 внутри энтропийного слайса 964, левый соседний блок, используемый для энтропийного декодирования текущего блока 970, является смежным, левый соседний блок 972 внутри энтропийного слайса 964. Верхний соседний блок, используемый для энтропийного декодирования текущего блока 970, является несмежным, верхний соседний блок 974 внутри того же энтропийного слайса 964. Для реконструкции текущего блока 970, левый соседний блок является смежным, левый соседний блок 972 внутри слайса 960 для реконструкции, и верхний соседний блок является смежным, верхний соседний блок 974 внутри слайса 960 для реконструкции.
В некоторых вариантах осуществления настоящего изобретения, в которых слайс для реконструкции содержит раздел с чередованием, внутри энтропийного слайса может не быть соответствующего соседнего блока, который должен быть использован при декодировании текущего блока внутри энтропийного слайса. Фиг.28 иллюстрирует эту ситуацию для примерного раздела с чередованием, изображенного на Фиг.26.
На Фиг.28, для текущего блока 980 внутри энтропийного слайса 964, внутри энтропийного слайса 964 нет левого соседнего блока, который должен быть использован для энтропийного декодирования текущего блока 980. Верхний соседний блок, используемый для энтропийного декодирования текущего блока 980, является несмежным, верхний соседний блок 982 внутри того же энтропийного слайса 964. Для реконструкции текущего блока 980, левый соседний блок является смежным, левый соседний блок 984 внутри слайса 960 для реконструкции, и верхний соседний блок является смежным, верхний соседний блок 986 внутри слайса 960 для реконструкции.
В некоторых вариантах осуществления настоящего изобретения, декодер может предварительно обработать весь входящий битовый поток, чтобы идентифицировать размещения энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, декодер может предварительно обработать все слайсы для реконструкции, чтобы идентифицировать размещения энтропийных слайсов внутри слайса для реконструкции. В некоторых вариантах осуществления, размещения энтропийных слайсов могут быть определены посредством идентификации размещений заголовков энтропийных слайсов. В этих вариантах осуществления, декодер может считывать биты в битовом потоке, и могут быть идентифицированы предварительно заданные значения начального кода.
В альтернативных вариантах осуществления, заголовки энтропийных слайсов могут быть ограничены диапазоном битов, размещенных в предварительно заданных положениях внутри входящего битового потока. В альтернативных вариантах осуществления, заголовки энтропийных слайсов могут быть ограничены диапазоном байтов, размещенных в предварительно заданных положениях внутри входящего битового потока. В этих вариантах осуществления, либо с выравниванием по границе бита, либо с выравниванием по границе байта, декодер не должен предварительно обрабатывать значительно большие участки входящих битовые потоки, чтобы определить размещение энтропийных слайсов.
В некоторых вариантах осуществления настоящего изобретения, кодер может сигнализировать, в битовом потоке, информацию размещения энтропийных слайсов, также называемую параметрами размещения энтропийных слайсов, например, информацию сдвига и диапазона, которая может ограничить размещения заголовков энтропийных слайсов. В альтернативных вариантах осуществления, информация размещения энтропийных слайсов может быть сигнализирована в битовом потоке, но может быть определена из параметров энтропийных слайсов, например, фиксированного числа двоичных элементов, допустимого в том или ином энтропийном слайсе, фиксированного числа битов, допустимого в том или ином энтропийном слайсе, или других параметров энтропийных слайсов. В еще одних вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов может быть задана посредством других нормативных средств, например, информация может быть точно определена в ограничении профиля, ограничении уровня, ограничении приложения или другом ограничении, или информация может быть сигнализирована в качестве дополнительной информации или сигнализирована посредством других выходящих за пределы средств.
В некоторых вариантах осуществления настоящего изобретения, один набор значений параметров размещения энтропийных слайсов может быть использован для всех энтропийных слайсов внутри битового потока. В альтернативных вариантах осуществления, значения параметров размещения энтропийных слайсов могут быть заданы для группы пикселей, представленных участком последовательности. В альтернативных вариантах осуществления, значения параметров размещения энтропийных слайсов могут быть заданы для каждой картинки внутри битового потока и могут быть использованы для всех энтропийных слайсов внутри ассоциированной картинки. В альтернативных вариантах осуществления, значения параметров размещения энтропийных слайсов могут быть заданы для каждого слайса для реконструкции внутри битового потока и могут быть использованы для всех энтропийных слайсов внутри ассоциированного слайса для реконструкции. В еще одних альтернативных вариантах осуществления, многочисленные наборы значений параметров размещения энтропийных слайсов могут быть использованы декодером. В еще одних альтернативных вариантах осуществления, значения параметров размещения энтропийных слайсов могут быть назначены идентификаторам энтропийных слайсов, например, заголовок первого энтропийного слайса может использовать первый набор значений параметров размещения энтропийных слайсов, заголовок второго энтропийного слайса может использовать второй набор значений параметров размещения энтропийных слайсов, и в общем, заголовок N-го энтропийного слайса может использовать N-й набор значений параметров размещения энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, значения параметров энтропийных слайсов могут быть назначены идентификаторам кадров. В одном примерном варианте осуществления, первая картинка может использовать первый набор значений параметров размещения энтропийных слайсов, вторая картинка может использовать второй набор значений параметров размещения энтропийных слайсов, и в общем, N-я картинка может использовать N-й набор значений параметров размещения энтропийных слайсов. В другом примерном варианте осуществления, картинка первого типа может использовать первый набор значений параметров размещения энтропийных слайсов и картинка второго типа может использовать второй набор значений параметров размещения энтропийных слайсов. Примерными типами картинок являются внутренние картинки, предсказанные картинки и другие типы картинок.
В некоторых вариантах осуществления настоящего изобретения, содержащих H.264/AVC-кодек, сдвиг энтропийного слайса и диапазон энтропийного слайса могут быть сигнализированы в полезных данных необработанной байтовой последовательности (RBSP) набора параметров последовательности посредством добавления параметра "entropy_slice_offset" и "entropy_slice_range" к набору параметров последовательности. Таблица 3 приводит примерный синтаксис RBSP набора параметров последовательности согласно вариантам осуществления настоящего изобретения.
В некоторых вариантах осуществления настоящего изобретения, содержащих H.264/AVC-кодек, сдвиг энтропийного слайса и диапазон энтропийного слайса могут быть сигнализированы в полезных данных необработанной байтовой последовательности (RBSP) набора параметров картинки посредством добавления параметра "entropy_slice_offset" и "entropy_slice_range" к набору параметров картинки. Таблица 4 приводит примерный синтаксис RBSP набора параметров картинки согласно вариантам осуществления настоящего изобретения.
В некоторых вариантах осуществления настоящего изобретения, содержащих H.264/AVC-кодек, сдвиг энтропийного слайса и диапазон энтропийного слайса могут быть сигнализированы в заголовке слайса посредством добавления параметра "entropy_slice_offset" и "entropy_slice_range" к заголовку слайса. Таблица 5 приводит примерный синтаксис заголовка слайса согласно вариантам осуществления настоящего изобретения.
m.n
m.n
В некоторых вариантах осуществления настоящего изобретения, сдвиг энтропийного слайса и диапазон энтропийного слайса могут быть указаны для каждой точки соответствия уровня кодера согласно таблице, например, как показано в Таблице 6, где O обозначает сдвиг энтропийного слайса для точки соответствия уровня m.n, и R обозначает диапазон энтропийного слайса для точки соответствия m.n.
Таблица 3
Таблица примерного синтаксиса RBSP набора параметров последовательности
seq_parameter_set_rbsp() {
С
Дескриптор
profile_idc
0
u(8)
reserved_zero_8bits /* equal to 0 */
0
u(8)
level_idc
0
u(8)
seq_parameter_set_id
0
ue(v)
bit_depth_luma_minus8
0
ue(v)
bit_depth_chroma_minus8
0
ue(v)
increased_bit_depth_luma
0
ue(v)
increased_bit_depth_chroma
0
ue(v)
log2_max_frame_num_minus4
0
ue(v)
log2_max_pic_order_cnt_lsb_minus4
0
ue(v)
max_num_ref_frames
0
ue(v)
gaps_in_frame_num_value_allowed_flag
0
u(1)
log2_min_coding_unit_size_minus3
0
ue(v)
max_coding_unit_hierarchy_depth
0
ue(v)
log2_min_transform_unit_size_minus2
0
ue(v)
max_transform_unit_hierarchy_depth
0
ue(v)
pic_width_in_luma_samples
0
u(16)
pic_height_in_luma_samples
0
u(16)
entropy_slice_offset
0
ue(v)
entropy_slice_range
0
ue(v)
rbsp_trailing_bits( )
0
}
Таблица 4
Таблица примерного синтаксиса RBSP набора параметров картинки
pic_parameter_set_rbsp( ) {
С
Дескриптор
pic_parameter_set_id
1
ue(v)
seq_parameter_set_id
1
ue(v)
entropy_coding_mode_flag
1
u(1)
num_ref_idx_10_default_active_minus1
1
ue(v)
num_ref_idx_11_default_active_minus1
1
ue(v)
pic_init_qp_minus26 /* relative to 26 */
1
se(v)
constrained_intra_pred_flag
1
u(1)
entropy_slice_offset
0
ue(v)
entropy_slice_range
0
ue(v)
rbsp_trailing_bits( )
1
}
Таблица 5
Таблица примерного синтаксиса для заголовка слайса
slice_header() {
С
Дескриптор
first_lctb_in_slice
2
ue(v)
entropy_slice_flag
u(1)
if(!entropy_slice_flag){
slice_type
2
ue(v)
pic_parameter_set_id
2
ue(v)
frame_num
2
u(v)
if( IdrPicFlag )
idr_pic_id
2
ue(v)
pic_order_cnt_lsb
2
u(v)
if( slice_type = = P || slice_type = = В ) {
num_ref_idx_active_override_flag
2
u(1)
if( num_ref_idx_active_override_flag ) {
num_ref_idx_10_active_minus1
2
ue(v)
if( slice_type = = В )
num_ref_idx_11_active_minus1
2
ue(v)
}
}
if( nal_ref_idc ! = 0 )
dec_ref_pic_marking( )
2
if( entropy_coding_mode_flag && slice_type != I )
cabac_init_idc
2
ue(v)
slice_qp_delta
2
se(v)
alf_param()
if( slice type = = P || slice_type = = В ) {
mc_interpolation_idc
2
ue(v)
mv_competition flag
2
u(1)
if ( mv_competition_flag ) {
mv_competition_temporal_flag
2
u(1)
}
}
if ( slice_type = = В && mv competition flag)
collocated_from_10_flag
2
u(1)
} else
if (entropy_coding_mode_flag && slice type != I)
cabac_init_idc
ue(v)
entropy_slice_offset
0
ue(v)
entropy_slice_range
0
ue(v)
Таблица 6
Примерные сдвиг энтропийного слайса и диапазон энтропийного слайса для каждого уровня
Уровень
Сдвиг энтропийного слайса
Диапазон энтропийного слайса
1.1
O<sub>1.1</sub>
R<sub>1.1</sub>
1.2
O<sub>1.2</sub>
R<sub>1.2</sub>
:
:
:
m.n
O<sub>m.n</sub>
R<sub>m.n</sub>
:
:
:
5.1
O<sub>5.1</sub>
R<sub>5.1</sub>
В некоторых вариантах осуществления, информация размещения энтропийных слайсов может содержать информацию, которая может ограничивать размещения заголовков энтропийных слайсов. В одном примере, информация размещения энтропийных слайсов может содержать значение сдвига, также называемого периодом или базовым сдвигом, и значение диапазона, также называемое отклонением или сдвигом для периода. Размещение заголовков энтропийных слайсов может быть ограничено на основе значения сдвига и значения диапазона.
В некоторых вариантах осуществления настоящего изобретения, значение сдвига и значение диапазона могут быть заданы в явной форме. В альтернативных вариантах осуществления настоящего изобретения, значение сдвига и значение диапазона могут быть заданы в неявной форме как минимальное значение сдвига и максимальное значение сдвига. В альтернативных вариантах осуществления настоящего изобретения, значение сдвига и значение диапазона могут быть заданы в неявной форме как максимальное значение сдвига и разность между максимальным значением сдвига и минимальным значением сдвига. В еще одном альтернативных вариантах осуществления настоящего изобретения, значение сдвига и значение диапазона могут быть заданы в неявной форме как минимальное значение сдвига и разность между минимальным значением сдвига и максимальным значением сдвига. В альтернативных вариантах осуществления, значение сдвига и значение диапазона могут быть заданы в неявной форме как третье значение и разница между третьим значением и максимальным значением сдвига и минимальным значением сдвига. В еще одних вариантах осуществления, значение сдвига и значение диапазона могут быть заданы посредством индекса в таблице соответствия, которая содержит соответствующие минимальные и максимальные значения битов. В альтернативных вариантах осуществления, значение сдвига и значение диапазона могут быть заданы с использованием дерева поиска соответствия на основе сдвига. В альтернативных вариантах осуществления, значение сдвига и значение диапазона могут быть заданы с использованием минимизирующего затраты индексирования. Средний специалист в данной области техники поймет, что есть много способов, известных в данной области техники, для задания в неявной форме значения диапазона и значения сдвига, и для гарантии того, что кодер и декодер работают с одинаковым значением для предварительно заданных значений сдвига и диапазона.
В некоторых вариантах осуществления настоящего изобретения, сигнализирование значения диапазона может быть опциональным. В некоторых вариантах осуществления, когда значение диапазона не сигнализируют, то значение диапазона может быть установлено в предварительно заданное значение. В примерном варианте осуществления, предварительно заданным значением может быть ноль. В другом примерном варианте осуществления, предварительно заданным значением может быть ненулевое целое значение.
В примерном варианте осуществления, описанном относительно Фиг.29, заголовок энтропийного слайса, ассоциированный с энтропийным слайсом, номер N слайса внутри слайса для реконструкции, может быть ограничен так, чтобы начинаться после Nk-p битов от начала, или другого фиксированного размещения внутри, заголовка слайса для реконструкции, где k обозначает значение сдвига, и p обозначает диапазон. Размещение, от которого могут быть измерены Nk-p битов, может быть названо опорным размещением. В альтернативных вариантах осуществления, опорное размещение может не быть ассоциировано с конкретным слайсом для реконструкции и может быть одним и тем же фиксированным размещением внутри битового потока для всех энтропийных слайсов. В альтернативных вариантах осуществления, заголовок энтропийного слайса может быть выравнен по границе байта, и ограничение может быть ассоциировано с числом байтов. Тогда как пример, проиллюстрированный относительно Фиг.29, описан в том, что касается битов, средний специалист в данной области техники может оценить альтернативные варианты осуществления с выравниванием по границе байта.
Фиг.29 является графическим представлением примерного участка 1000 примерного битового потока. Участок 1000 битового потока содержит заголовок 1002 слайса для реконструкции, представленный цельным черным прямоугольником, четыре заголовка энтропийных слайсов (заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу 1003, называемый заголовком нулевого энтропийного слайса, заголовок энтропийного слайса, соответствующий первому энтропийному слайсу 1004, называемый заголовком первого энтропийного слайса, заголовок энтропийного слайса, соответствующий второму энтропийному слайсу 1005, называемый заголовком второго энтропийного слайса, заголовок энтропийного слайса, соответствующий третьему энтропийному слайсу 1006, называемый заголовком третьего энтропийного слайса), представленных цельными серыми прямоугольниками, и оставшиеся участки энтропийных слайсов, представленные тонкими черно-белыми полосками. В этом примере, опорное размещение может быть началом 1001 заголовка 1002 слайса для реконструкции. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу 1003, может быть ограничен так, чтобы размещаться сразу после заголовка 1002 слайса для реконструкции. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу, может быть частью заголовка слайса для реконструкции. Другими словами, заголовок слайса для реконструкции может также служить как заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу. В этих вариантах осуществления, заголовок слайса для реконструкции может содержать участок для реконструкции и энтропийный участок. В некоторых вариантах осуществления настоящего изобретения, изображенных на Фиг.29, заголовок 1004 первого энтропийного слайса может быть ограничен так, чтобы размещаться после k-p битов 1007 от опорного размещения 1001, заголовок 1005 второго энтропийного слайса может быть ограничен так, чтобы размещаться после 2k-p битов 1008 от опорного размещения 1001, заголовок 1006 второго энтропийного слайса может быть ограничен так, чтобы размещаться после 3k-p битов 1009 от опорного размещения 1001. В этих вариантах осуществления, энтропийный декодер, назначенный декодировать энтропийный слайс N, может начать поиск соответствующего заголовка энтропийного слайса после Nk-p битов от опорного размещения 1001.
В альтернативных вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов может не содержать параметр диапазона. В этих вариантах осуществления, энтропийный декодер может начать поиск заголовка N-го энтропийного слайса после Nk битов от опорного размещения.
В другом примерном варианте осуществления, описанном относительно Фиг.30, заголовок энтропийного слайса, ассоциированный с энтропийным слайсом, номер N слайса и внутри слайса для реконструкции, может быть ограничен так, чтобы начинаться после Nk-p битов от начала, или другого фиксированного размещения внутри, заголовка слайса для реконструкции, где k обозначает значение сдвига, и p обозначает диапазон, и заголовок энтропийного слайса может дополнительно быть ограничен так, чтобы быть внутри диапазона 2p битов от ограниченной начальной позиции. Размещение, от которого могут быть измерены Nk-p битов, может быть названо опорным размещением. В альтернативных вариантах осуществления, опорное размещение может не быть ассоциировано с конкретным слайсом для реконструкции и может быть одним и тем же фиксированным размещением внутри битового потока для всех энтропийных слайсов. В альтернативных вариантах осуществления, заголовок энтропийного слайса может быть выравнен по границе байта, и ограничение может быть ассоциировано с числом байтов. Тогда как пример, проиллюстрированный относительно Фиг.30, описан в том, что касается битов, средний специалист в данной области техники может оценить альтернативные варианты осуществления с выравниванием по границе байта.
Фиг.30 является графическим представлением примерного участка 1020 примерного битового потока. Участок 1020 битового потока содержит заголовок 1022 слайса для реконструкции, представленный цельным черным прямоугольником, четыре заголовка энтропийных слайсов (заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу 1023, называемый заголовком нулевого энтропийного слайса, заголовок энтропийного слайса, соответствующий первому энтропийному слайсу 1024, называемый заголовком первого энтропийного слайса, заголовок энтропийного слайса, соответствующий второму энтропийному слайсу 1025, называемый заголовком второго энтропийного слайса, заголовок энтропийного слайса, соответствующий третьему энтропийному слайсу 1026, называемый заголовком третьего энтропийного слайса), представленных цельными серыми прямоугольниками, и оставшиеся участки энтропийных слайсов, представленные тонкими черно-белыми полосками. В этом примере, опорное размещение может быть началом 1021 заголовка 1022 слайса для реконструкции. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу 1023, может быть ограничен так, чтобы размещаться сразу после заголовка 1022 слайса для реконструкции. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса, соответствующий нулевому энтропийному слайсу, может быть частью заголовка слайса для реконструкции. В этих вариантах осуществления, заголовок слайса для реконструкции может содержать участок для реконструкции и энтропийный участок. В некоторых вариантах осуществления настоящего изобретения, изображенных на Фиг.30, заголовок 1024 первого энтропийного слайса может быть ограничен так, чтобы размещаться в пределах 2p битов 1031 после k-p битов 1027 от опорного размещения 1021, заголовок 1025 второго энтропийного слайса может быть ограничен так, чтобы размещаться в пределах 2p битов 1032 после 2k-p битов 1028 от опорного размещения 1021, заголовок 1026 второго энтропийного слайса может быть ограничен так, чтобы размещаться в пределах 2p битов 1033 после 3k-p битов 1029 от опорного размещения 1021. В этих вариантах осуществления, энтропийный декодер, назначенный декодировать энтропийный слайс N, может начать поиск соответствующего заголовка энтропийного слайса после Nk-p битов от опорного размещения и может завершить поиск после идентификации заголовка энтропийного слайса или после осуществления поиска 2p битов.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.31. В этих вариантах осуществления, энтропийный декодер может принимать 1050 номер энтропийного слайса, указывающий номер энтропийного слайса в текущем блоке для реконструкции для энтропийного декодирования. Энтропийный декодер может определить 1052 информацию размещения энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов, также называемая параметрами размещения энтропийных слайсов, может быть сигнализирована в битовом потоке, и декодер может определить 1052 информацию энтропийного слайса посредством проверки битового потока. В альтернативных вариантах осуществления, информация размещения энтропийных слайсов может быть сигнализирована в битовом потоке, но может быть определена 1052, декодером, из параметров энтропийных слайсов, например, фиксированного числа двоичных элементов, допустимого в том или ином энтропийном слайсе, фиксированного числа битов, допустимого в том или ином энтропийном слайсе, или других параметров энтропийных слайсов. В еще одних альтернативных вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов может быть задана и определена 1052 посредством других нормативных средств, например, информация может быть точно определена в ограничении профиля, ограничении уровня, ограничении приложения или другом ограничении, или информация может быть сигнализирована как дополнительная информация или сигнализирована посредством других выходящих за пределы средств.
Энтропийный декодер может вычислять 1054 начальное размещение для поиска энтропийного слайса, перед которым, в битовом потоке, заголовок энтропийного слайса ограничен от необходимости быть записанным посредством кодера. В некоторых вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1054 с использованием значения сдвига и значения диапазона, определенных из информации размещения энтропийных слайсов. В альтернативных вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1054 с использованием значения сдвига, определенного из информации размещения энтропийных слайсов. Энтропийный декодер может продвинуться 1056, в битовом потоке, к начальному размещению для поиска энтропийного слайса и может проверить 1058 битовый поток на предмет заголовка энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса может быть указан начальным кодом.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.32. В этих вариантах осуществления, энтропийный декодер может принимать 1070 номер энтропийного слайса, указывающий номер энтропийного слайса в текущем блоке для реконструкции для энтропийного декодирования. Энтропийный декодер может определить 1072 информацию размещения энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов, также называемая параметрами размещения энтропийных слайсов, может быть сигнализирована в битовом потоке, и декодер может определить 1072 информацию энтропийного слайса посредством проверки битового потока. В альтернативных вариантах осуществления, информация размещения энтропийных слайсов может быть сигнализирована в битовом потоке, но может быть определена 1072, декодером, из параметров энтропийных слайсов, например, фиксированного числа двоичных элементов, допустимого в том или ином энтропийном слайсе, фиксированного числа битов, допустимого в том или ином энтропийном слайсе, или других параметров энтропийных слайсов. В еще одних альтернативных вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов может быть задана и определена 1072 посредством других нормативных средств, например, информация может быть точно определена в ограничении профиля, ограничении уровня, ограничении приложения или другом ограничении, или информация может быть сигнализирована как дополнительная информация или сигнализирована посредством других выходящих за пределы средств.
Энтропийный декодер может вычислять 1074 начальное размещение для поиска энтропийного слайса, перед которым, в битовом потоке, заголовок энтропийного слайса ограничен от необходимости быть записанным посредством кодера. В некоторых вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1074 с использованием значения сдвига и значения диапазона, определенных из информации размещения энтропийных слайсов. В альтернативных вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1074 с использованием значения сдвига, определенного из информации размещения энтропийных слайсов. Энтропийный декодер может продвинуться 1076, в битовом потоке, к начальному размещению для поиска энтропийного слайса и может проверить 1078 битовый поток на предмет заголовка энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса может быть указан начальным кодом.
Биты, в битовом потоке, могут быть проверены 1078 последовательно, начиная в начальном размещении для поиска энтропийного слайса. Если 1080 заголовок энтропийного слайса идентифицирован 1081, то энтропийный декодер может энтропийно декодировать 1082 энтропийный слайс, ассоциированный с заголовком энтропийного слайса. Если 1080 заголовок энтропийного слайса не идентифицирован 1083, то энтропийный декодер может завершить 1084 поиск. В некоторых вариантах осуществления, энтропийный декодер может указать ошибку, когда заголовок энтропийного слайса не идентифицирован 1083.
Некоторые варианты осуществления настоящего изобретения могут быть описаны относительно Фиг.33. В этих вариантах осуществления, энтропийный декодер может принимать 1100 номер энтропийного слайса, указывающий номер энтропийного слайса, в текущем блоке для реконструкции, для энтропийного декодирования. Энтропийный декодер может определить 1102 информацию размещения энтропийных слайсов. В некоторых вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов, также называемая параметрами размещения энтропийных слайсов, может быть сигнализирована в битовом потоке, и декодер может определить 1102 информацию энтропийного слайса посредством проверки битового потока. В альтернативных вариантах осуществления, информация размещения энтропийных слайсов может быть сигнализирована в битовом потоке, но может быть определена 1102, декодером, из параметров энтропийных слайсов, например, фиксированного числа двоичных элементов, допустимого в том или ином энтропийном слайсе, фиксированного числа битов, допустимого в том или ином энтропийном слайсе, или других параметров энтропийных слайсов. В еще одних альтернативных вариантах осуществления настоящего изобретения, информация размещения энтропийных слайсов может быть задана и определена 1102 посредством других нормативных средств, например, информация может быть точно определена в ограничении профиля, ограничении уровня, ограничении приложения или другом ограничении, или информация может быть сигнализирована как дополнительная информация или сигнализирована посредством других выходящих за пределы средств.
Энтропийный декодер может вычислять 1104 начальное размещение для поиска энтропийного слайса, перед которым, в битовом потоке, заголовок энтропийного слайса ограничен от необходимости быть записанным посредством кодера. В некоторых вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1104 с использованием значения сдвига и значения диапазона, определенных из информации размещения энтропийных слайсов. В альтернативных вариантах осуществления настоящего изобретения, начальное размещение для поиска энтропийного слайса может быть вычислено 1104 с использованием значения сдвига, определенного из информации размещения энтропийных слайсов. Энтропийный декодер может продвинуться 1106, в битовом потоке, к начальному размещению для поиска энтропийного слайса и может проверить 1108 битовый поток на предмет заголовка энтропийного слайса. В некоторых вариантах осуществления настоящего изобретения, заголовок энтропийного слайса может быть указан начальным кодом.
Биты, в битовом потоке, могут быть проверены 1108 последовательно, начиная в начальном размещении для поиска энтропийного слайса. Если 1110 заголовок энтропийного слайса идентифицирован 1111, то энтропийный декодер может энтропийно декодировать 1112 энтропийный слайс, ассоциированный с заголовком энтропийного слайса. Если 1110 заголовок энтропийного слайса не идентифицирован 1113, то если 1114 удовлетворен 1115 критерий поиска, энтропийный декодер может перейти к завершению 1116. Критерий поиска может предоставить стандарт, посредством которого может быть сделано определение относительно того, остаются ли для поиска допустимые размещения для начала заголовка энтропийного слайса или нет. В некоторых вариантах осуществления (не показаны), критерий поиска может быть удовлетворен, если остаются допустимые размещения, которые должны быть проверены. В альтернативных вариантах осуществления, критерий поиска может быть удовлетворен, если для проверки 1115 не осталось допустимых размещений, и поиск может завершиться 1116. В некоторых вариантах осуществления, энтропийный декодер может указать ошибку, когда заголовок энтропийного слайса не идентифицирован 1115. Если 1114 критерий поиска не удовлетворен 1117, проверка 1108 битового потока может продолжится после продвижения 1118, в битовом потоке, к следующему размещению для поиска.
В некоторых вариантах осуществления настоящего изобретения, критерий поиска может относится к значению диапазона, например, размещение начала заголовка энтропийного слайса может быть ограничено диапазоном из 2p битов, расположенных по центру Nk, где k обозначает значение сдвига, p обозначает значение диапазона, и N является номером энтропийного слайса внутри слайса для реконструкции. В этих вариантах осуществления, размещение начала заголовка энтропийного слайса, ассоциированного с энтропийным слайсом N, может быть ограничено диапазоном от Nk-p до Nk+p. В некоторых вариантах осуществления, критерий поиска может относиться к ограничению, или ограничениям, на размер энтропийного слайса. В некоторых вариантах осуществления, критерий поиска может относиться к комбинации ограничений.
В некоторых вариантах осуществления настоящего изобретения, кодер может дополнить энтропийный слайс незначащей информацией для того, чтобы отвечать ограничению на размещение заголовка следующего энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, кодер может завершить энтропийный слайс до того, как ограничения на размер других энтропийных слайсов будут отвечать требованиям, для того, чтобы отвечать ограничению на размещение заголовка следующего энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, когда последний энтропийный слайс внутри слайса для реконструкции не содержит число битов (или байтов, в варианте осуществления с выравниванием по границе байта), необходимое для удовлетворения ограничения на размещение заголовка следующего энтропийного слайса, кодер может раздуть последний энтропийный слайс внутри слайса для реконструкции, чтобы удовлетворить ограничению на размещение заголовка следующего энтропийного слайса.
В альтернативных вариантах осуществления, заголовок энтропийного слайса может содержать флаг последнего энтропийного слайса, при этом значение флага последнего энтропийного слайса может указывать, является ли энтропийный слайс, ассоциированный с заголовком энтропийного слайса, последним энтропийным слайсом в слайсе для реконструкции. В некоторых вариантах осуществления, значение ноль флага последнего энтропийного слайса может быть ассоциировано с последним энтропийным слайсом. В альтернативных вариантах осуществления, значение один флага последнего энтропийного слайса может быть ассоциировано с последним энтропийным слайсом. В некоторых вариантах осуществления, если значение флага последнего энтропийного слайса указывает, что энтропийный слайс является последним энтропийным слайсом в слайсе для реконструкции, то заголовок последующего энтропийного слайса может быть размещен сразу следующим за текущим энтропийным слайсом без дополнения незначащей информацией.
Таблица 7 показывает примерный синтаксис и семантику для сигнализирования флага последнего энтропийного слайса, называемого как "next_entropy_slice_flag". В примерном варианте осуществления, содержащем примерный синтаксис и семантику, показанные в Таблице 7, флаг "next_entropy_slice_flag" сигнализирует, есть ли дополнительные энтропийные слайсы для текущего слайса для реконструкции. Если флаг "next_entropy_slice_flag" указывает, что нет дополнительных энтропийных слайсов для текущего слайса для реконструкции, то размещение заголовка следующего энтропийного слайса в битовом потоке может быть ограничено параметрами размещения энтропийных слайсов.
В некоторых вариантах осуществления настоящего изобретения, размещение заголовков энтропийных слайсов может быть организовано в древовидном формате с корневым узлом, указывающим на размещение заголовка энтропийного слайса. В некоторых вариантах осуществления, размещение заголовка энтропийного слайса, указываемое корневым узлом, может быть относительным. В альтернативных вариантах осуществления, размещение заголовка энтропийного слайса, указываемое корневым узлом, может быть абсолютным. Остающиеся узлы дерева могут содержать расстояния сдвигов относительно их родительского узла. Дерево может быть спроектировано согласно проектному ограничению, например, уменьшить среднее время для определения размещения заголовка энтропийного слайса, ограничить время в наихудшем случае, требуемое для определения размещения заголовка энтропийного слайса, сигнализировать предпочтительный порядок декодирования энтропийного слайса, минимизировать издержки хранения для дерева и других проектных ограничений. В некоторых вариантах осуществления, числом потомков каждого узла в дереве можно управлять на основе желаемого уровня параллельности при определении размещения заголовка энтропийного слайса.
Таблица 7
Таблица примерного синтаксиса для флага последнего энтропийного слайса
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
next_entropy _slice_flag
2
ue(v)
if (entropy_slice_flag) {
first_mb_in_slice
2
ue(v)
if( entropy_coding_mode_flag && slice_type != I && slice_type != SI )
cabac_init_idc
2
ue(v)
}
}
else {
a regular slice header
}
}
В некоторых вариантах осуществления настоящего изобретения, модели контекста могут быть сброшены в исходное состояние внутри энтропийного слайса всегда, когда встречается условие сброса модели контекста. В некоторых из трех вариантов осуществления, значения, к которым могут быть сброшены модели контекста, могут быть основаны на модели контекста соседней элементарной единицы внутри энтропийного слайса, и если соседняя элементарная единица не находится внутри энтропийного слайса, то могут быть использованы значения по умолчанию. В альтернативных вариантах осуществления, модели контекста могут быть сброшены к значениям по умолчанию. В еще одних альтернативных вариантах осуществления, модели контекста могут быть сброшены в исходное состояние на основе модели контекста, чей идентификатор может быть сигнализирован внутри битового потока, причем идентификатор указывает одну из множества предварительно заданных моделей контекста. Предварительно заданная модель контекста может зависеть от одного, или более, параметров в битовом потоке. В примерных вариантах осуществления, модели контекста могут быть сброшены в исходное состояние на основе сигнализированного значения "cabac_init_idc", внутри битового потока, указывающего одну из множества предварительно заданных моделей контекста.
В некоторых вариантах осуществления, таблица контекста может быть использована для инициализации множества моделей контекста, при этом таблица контекста относится к набору моделей контекста. В некоторых вариантах осуществления, набор моделей контекста в таблице контекста может подвергаться адаптации на основе одного, или более, параметров в битовом потоке, например, параметра квантования, параметра типа слайса или другого параметра.
В одном примерном варианте осуществления, проиллюстрированном на Фиг.34, модели контекста могут быть сброшены в исходное состояние, внутри энтропийного слайса, когда текущий блок является первым макроблоком в ряду, в дополнение к сбрасыванию в исходное состояние в начальном макроблоке в энтропийном слайсе. Фиг.34 изображает примерный слайс 1200 для реконструкции, содержащую 48 макроблоков 1208-1255, разделенную на три энтропийных слайса: энтропийный слайс "0" (показанный перекрестной штриховкой) 1202, энтропийный слайс "1" (показанный белым) 1204, и энтропийный слайс "2" (показанный штриховкой точками) 1206. Энтропийный слайс "0" 1202 содержит 15 макроблоков 1208-1222. Энтропийный слайс "1" содержит 17 макроблоков 1223-1239, и энтропийный слайс "2" содержит 16 макроблоков 1240-1255. Макроблоки, в которых модели контекста могут быть сброшены в исходное состояние, указаны толстым черным краем 1260-1266 и являются теми макроблоками 1208, 1223, 1240 в начале каждого энтропийного слайса и первым макроблоком в каждом ряду 1216, 1224, 1232, 1240, 1248.
Элементарная единица, например, макроблок, в начале энтропийного слайса может быть названа элементарной единицей начала слайс. Например, для энтропийных слайсов 1202, 1204, 1206 в примерном слайсе 1200 для реконструкции на Фиг.34, соответствующими элементарными единицами начала слайса являются 1208, 1223 и 1240. Элементарная единица, которая является первой элементарной единицей в ряду в энтропийном слайсе, может быть названа элементарной единицей начала ряда, например, макроблоки 1208, 1216, 1224, 1232, 1240 и 1248 на Фиг.34.
В некоторых вариантах осуществления, модели контекста могут быть сброшены в исходное состояние на основе на моделей контекста соседнего макроблока, если соседний макроблок находится внутри энтропийного слайса, и значений по умолчанию, если соседний макроблок не находится внутри энтропийного слайса. Например, модели контекста могут быть сброшены в исходное состояние на основе моделей контекста макроблока выше текущего макроблока, если макроблок выше текущего макроблока находится в том же энтропийном слайсе, но установлены в значения по умолчанию, если макроблок выше текущего макроблока не находится в том же энтропийном слайсе.
В другом примерном варианте осуществления, модели контекста могут быть сброшены в исходное состояние, внутри энтропийного слайса, когда текущая элементарная единица является первой элементарной единицей в ряду. В альтернативных вариантах осуществления, условие сброса модели контекста может быть основано на других критериях, например, числе двоичных элементов, обработанных внутри энтропийного слайса, числе битов, обработанных внутри слайса, пространственном размещении текущей элементарной единицы и другом критерии.
В некоторых вариантах осуществления настоящего изобретения, флаг сброса модели контекста может быть использован для указания, могут быть сброшены в исходное состояние модели контекста внутри энтропийного слайса всегда, когда встречается условие сброса модели контекста. В некоторых вариантах осуществления, флаг сброса модели контекста может быть в заголовке энтропийного слайса. В некоторых вариантах осуществления, флаг сброса модели контекста может быть в заголовке энтропийного слайса. В некоторых вариантах осуществления, флаг сброса модели контекста может быть двоичным флагом, и условие сброса модели контекста может быть условием по умолчанию. В альтернативных вариантах осуществления, флаг сброса модели контекста может быть флагом с многочисленными значениями, дополнительно указывающим условие сброса модели контекста.
В одном примерном варианте осуществления, содержащем контекстно-адаптивное кодирование, например, CABAC-кодирование, CAV2V-кодирование и другое контекстно-адаптивное кодирование, флаг "lcu_row_cabac_init_flag" может сигнализировать, может ли энтропийное декодирование быть инициализировано в начале ряда наибольшей единицы кодирования (LCU). В некоторых вариантах осуществления, LCU является обобщением идеи маркоблоков, используемой в H.264 для высокоэффективного кодирования видео (HEVC), и картинка разбивается на два слайса, при этом слайссостоит из последовательности LCU. В альтернативных вариантах осуществления, LCU является наибольшим блоком размещений значений пикселей, которая может быть представлена одиночным, переданным значением режима. В альтернативных вариантах осуществления, LCU является наибольшим блоком размещений значений пикселей, которая может быть представлена одиночным, переданным значением режима предсказания. В некоторых вариантах осуществления настоящего изобретения, значение "1" флага "lcu_row_cabac_init_flag" может сигнализировать, что контекст энтропийного кодирования сброшен в исходное состояние. Контекст энтропийного кодирования может представлять собой набор всех моделей контекста, ассоциированных с энтропийным кодером. В некоторых вариантах осуществления настоящего изобретения, значение "1" флага "lcu_row_cabac_init_flag" может сигнализировать, что контекст энтропийного кодирования сброшен в исходное состояние, и адаптивное сканирование сброшено в исходное состояние. Адаптивное сканирование может относится к процессу, в котором кодек адаптирует порядок сканирования коэффициентов преобразования на основе ранее переданных значений коэффициентов преобразования. Раздел 7.6.1 в документе JCTVC, JCTVC-B205_draft005, который настоящим включен в настоящий документ посредством ссылки в полном объеме, излагает пример, где адаптивное сканирование выбирает между двумя отличающимися порядками сканирования на основе значимых коэффициентов в соседнем элементе. В одном варианте осуществления, адаптивное сканирование может быть сброшено в исходное состояние в начале каждого ряда LCU посредством выбора предварительно заданного порядка сканирования. В одном варианте осуществления, порядок сканирования определяется посредством генерирования карты значимости коэффициентов, и значения коэффициентов преобразования, соответствующие значениям значимости коэффициентов, больших, чем предварительно определенное значение, могут быть переданы до значений коэффициентов преобразования, соответствующих значениям значимости коэффициентов, меньшим, чем предварительно определенное значение, или равным ему. В одном варианте осуществления, значения значимости коэффициентов, которые соответствуют значениям коэффициентов преобразования, которые больше, чем предварительно определенное значение, могут быть впоследствии увеличены. В альтернативном варианте осуществления, значения значимости коэффициентов, которые соответствуют значениям коэффициентов преобразования, которые меньше, чем предварительно определенное значение, или равны ему, могут быть впоследствии уменьшены. Процесс адаптивного сканирования может быть сброшен в исходное состояние посредством установки карты значимости коэффициентов в предварительно заданное значение. В некоторых вариантах осуществления, значением по умолчанию, предполагаемым, когда флаг не отправлен, для флага "lcu_row_cabac_init_flag", может быть "0".
Флаг "lcu_row_cabac_init_idc_flag" может сигнализировать, будут ли переданы значения cabac_init_idc в начале каждого ряда LCU. В некоторых вариантах осуществления, когда значением флага "lcu_row_cabac_init_idc_flag" является "1", значения будут переданы в начале каждого ряда LCU. В некоторых вариантах осуществления, значением по умолчанию, предполагаемым, когда флаг не отправлен, для флага "lcu_row_cabac_init_flag", может быть "0". В некоторых вариантах осуществления, флаг "cabac_init_idc_present_flag" может сигнализировать, передано ли значение cabac_init_idc для LCU. В некоторых вариантах осуществления, когда значение cabac_init_idc не передается для LCU, то контекст энтропийного кодирования сбрасывается в исходное состояние с использованием предшествующего значения для cabac_init_idc в битовом потоке. В некоторых вариантах осуществления настоящего изобретения, "lcu_row_cabac_init_flag" и "lcu_row_cabac_init_idc_flag" могут быть сигнализированы в заголовке обычного слайса, например, когда значением "entropy_slice_flag" является "0". Таблица 8 и Таблица 9 показывают примерный синтаксис для этих вариантов осуществления. В некоторых вариантах осуществления настоящего изобретения, "lcu_row_cabac_init_flag" и "lcu_row_cabac_init_idc_flag" могут быть сигнализированы в заголовке энтропийного слайса, например, когда значением "entropy_slice_flag" является "1". Таблица 8 показывает примерный синтаксис заголовка слайса, и Таблица 9 показывает примерный синтаксис данных слайса (coding_unit).
Таблица 8
Таблица примерного синтаксиса для сигнализирования инициализации энтропийного кодирования в начале ряда LCU
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
if (entropy_slice_flag) {
first_lcu_in_slice
2
ue(v)
if (entropy_coding_mode_flag) {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag ){
lcu_row_cabac_init_idc_flag
1
u(1)
I
}
if( entropy_coding_mode_flag && slice_type != I) {
cabac_init_idc
2
ue(v)
}
I
else {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag ){
lcu_row_cabac_init_idc_flag
1
u(1)
}
a regular slice header \tab
}
}
Таблица 9
Таблица примерного синтаксиса для сигнализирования первоначального контекста для LCU
coding_unit( x0, y0, currCodingUnitSize ) {
С
Дескриптор
if (x0 = = 0 &&currCodingUnit Size = = MaxCodingUnitSize &&lcu_row_cabac_init_idc_flag= = true 8 lcu_id! = first_lcu_in_slice) {
cabac_init_idc_present_flag
1
u(1)
if( cabac_init_idc_present_flag )
cabac_init_idc
2
ue(v)
I
A regular coding unit...
}
В другом примерном варианте осуществления, содержащем контекстно-адаптивное кодирование, например, CABAC-кодирование, CAV2V-кодирование и другое контекстно-адаптивное кодирование, флаг "mb_row_cabac_init_flag" может сигнализировать, может ли энтропийное декодирование быть инициализировано в первом макроблоке в ряду. В некоторых вариантах осуществления настоящего изобретения, значение "1" флага "mb_row_cabac_init_flag" может сигнализировать, что контекст энтропийного кодирования сброшен в исходное состояние в начале каждого ряда макроблоков. В альтернативных вариантах осуществления настоящего изобретения, значение "1" флага "mb_row_cabac_init_flag" может сигнализировать, что контекст энтропийного кодирования сброшен в исходное состояние, и адаптивное сканирование сброшено в исходное состояние в начале каждого ряда макроблоков. В некоторых вариантах осуществления, значением по умолчанию, предполагаемым, когда флаг не отправлен, для флага "mb_row_cabac_init_flag", может быть "0". Флаг "mb_row_cabac_init_idc_flag" может сигнализировать, будут ли переданы значения cabac_init_idc в начале каждого ряда макроблоков. В некоторых вариантах осуществления, когда значением флага "mb_row_cabac_init_idc_flag" является "1", значения будут переданы в начале каждого ряда макроблоков. В некоторых вариантах осуществления, значением по умолчанию, предполагаемым, когда флаг не отправлен, для флага "mb_row_cabac_init_flag", может быть "0". В некоторых вариантах осуществления, флаг "cabac_init_idc_present_flag" может сигнализировать, передано ли значение cabac_init_idc для макроблока. В некоторых вариантах осуществления, когда значение cabac_init_idc не передается для макроблока, то контекст энтропийного кодирования сбрасывается в исходное состояние с использованием предшествующего значения для cabac_init_idc в битовом потоке. В некоторых вариантах осуществления настоящего изобретения, флаг "mb_row_cabac_init_flag" и флаг "mb_row_cabac_init_idc_flag" могут быть сигнализированы в заголовке обычного слайса, например, когда значением "entropy_slice_flag" является "0". В некоторых вариантах осуществления настоящего изобретения, флаг "mb_row_cabac_init_flag" и флаг "mb_row_cabac_init_idc_flag" могут быть сигнализированы в заголовке энтропийного слайса, например, когда значением "entropy_slice_flag" является "1". Таблица 10 и Таблица 11 показывают примерный синтаксис для этих вариантов осуществления. Таблица 10 показывает примерный синтаксис заголовка слайса, и Таблица 11 показывает примерный синтаксис данных слайса (coding_unit).
Таблица 10
Таблица примерного синтаксиса для сигнализирования инициализации энтропийного кодирования в начале ряда макроблоков
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
if (entropy_slice_flag) {
first_mb_in_slice
2
ue(v)
if (entropy_coding_mode_flag) {
mb_row_cabac_init_flag
1
u(1)
if( mb_row_cabac_init_flag ){
mb_row_cabac_init_idc_flag
1
U(1)
}
}
if( entropy_coding_mode_flag &8& slice_type != I) {
cabac_init_idc
2
ue(v)
}
}
else {
mb_row_cabac_init_flag
1
u(1)
if( mb_row_cabac_init_flag ){
mb_row_cabac_init_idc_flag
1
U(1)
}
a regular slice header
}
}
Таблица 11
Таблица примерного синтаксиса для сигнализирования первоначального контекста для макроблоков
coding_unit( x0, y0, currCodingUnitSize ) {
С
Дескриптор
if (x0 = = 0 &&currCodingUnitSize = = MaxCodingUnitSize &&mb_row_cabac_init_idc_flag= = true && mb_id! = first_mb_in_slice) {
cabac_init_idc_present_flag
1
u(1)
if( cabac_init_idc_present_flag )
cabac_init_idc
2
ue(v)
}
A regular coding unit...
}
В некоторых вариантах осуществления настоящего изобретения, размещения, в битовом потоке, энтропийных слайсов могут быть сигнализированы в битовом потоке. В некоторых вариантах осуществления, флаг может быть использован для сигнализации, что размещения, в битовом потоке, энтропийных слайсов собираются сигнализировать в битовом потоке. Некоторые примерные варианты осуществления могут содержать "entropy_slice_locations_flag", который, если имеет значение "Истина", может указывать, что размещения, в битовом потоке, энтропийных слайсов собираются сигнализировать в битовом потоке. В некоторых вариантах осуществления, данные размещений могут быть кодированы дифференциально. В некоторых вариантах осуществления, данные размещений могут быть отправлены в каждом слайсе для реконструкции. В альтернативных вариантах осуществления, данные размещений могут быть отправлены один раз по каждой картинке.
В некоторых вариантах осуществления настоящего изобретения, размещения, в битовом потоке, рядов LCU могут быть сигнализированы в битовом потоке. В некоторых вариантах осуществления, флаг может быть использован для сигнализации, что размещение, в битовом потоке, первого LCU в каждом ряду собираются сигнализировать в битовом потоке. Некоторые примерные варианты осуществления могут содержать "lcu_row_location_flag", который, если имеет значение "Истина", может указывать, что размещение, в битовом потоке, первого LCU в каждом ряду собираются сигнализировать в битовом потоке. В некоторых вариантах осуществления, данные размещений могут быть кодированы дифференциально. В некоторых вариантах осуществления, данные размещений могут быть отправлены в каждом энтропийном слайсе. В некоторых вариантах осуществления, данные размещений могут быть отправлены один раз по каждому слайсу для реконструкции.
Таблица 12 показывает примерный синтаксис для сигнализирования размещений, в битовом потоке, рядов LCU и энтропийных слайсов. Для этого примерного синтаксиса, семантикой являются:
• "entropy_slice_locations_flag" сигнализирует, передано ли размещение заголовка энтропийного слайса. Если значение "entropy_slice_locations_flag" установлено в "1", то размещение заголовка энтропийного слайса передано, иначе оно не передано. Значением по умолчанию для "entropy_slice_locations_flag" является "0".
• "num_of_entropy_slice_minus1" сигнализирует число энтропийных слайсов в слайсе для реконструкции минус 1.
• "entropy_slice_offset [i]" указывает сдвиг i-й энтропийного слайса от предыдущего энтропийного слайса.
• "lcu_row_locations_flag" сигнализирует, передается ли информация размещения ряда LCU или нет. Если значением "lcu_row_locations_flag" является "1", то информация размещения ряда LCU передано, иначе оно не передано. Значением по умолчанию для "lcu_row_locations_flag" является "0".
• "num_of_lcu_rows_minus1" сигнализирует число рядов LCU в энтропийного слайса минус 1.
• "lcu_row_offset [i]" указывает сдвиг i-го ряда LCU от предыдущего ряда LCU.
В некоторых вариантах осуществления настоящего изобретения, "lcu" в Таблице 12 может быть заменена "макроблоком". Например, "first_lcu_in_slice", "lcu_row_cabac_init_flag", "lcu_row_cabac_init_idc_flag", "lcu_row_locations_flag", "lcu_row_locations ()", "num_of_lcu_rows_minus1", и "lcu_row_offset[i]" в Таблице 12 могут быть заменены "first_mb_in_slice", "mb_row_cabac_init_flag", "mb_row_cabac_init_idc_flag", "mb_row_locations_flag", "mb_row_locations ()", "num_of_mb_rows_minusl", и "mb_row_offset[i]", соответственно.
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
if (entropy slice flag) {
first_lcu_in_slice
2
ue(v)
if (entropy_coding_mode_flag) {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag ){
lcu_row_cabac_init_idc_flag
1
u(1)
lcu_row_locations_flag
1
u(1)
if (lcu_row_locations_flag) {
lcu_row_locations ()
}
}
}
if( entropy_coding_mode_flag && slice_type != I) {
cabac_init_idc
2
ue(v)
}
}
else {
entropy_slice_locations_flag
1
u(1)
if (entropy_slice_locations_flag) {
entropy_slice_locations()
}
if (entropy_coding_mode_flag) {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag ){
lcu_row_cabac_init_idc_flag
1
u(1)
lcu_row_locations_flag
1
u(1)
if (lcu_row_locations_flag) {
lcu_row_locations ()
}
}
}
a regular slice header
}
}
entropy_slice_ locations()
С
Дескриптор
{
num_entropy_slices_minusl
2
ue(v)
for (i=0; i<num_of_entropy_slices_minusl; i++)
entropy_slice_offset[i]
2
ue(v)
}
Эффективная передача остаточных данных из кодера в декодер может быть совершена посредством сигнализирования размещения коэффициентов преобразования с нулевыми значениями и значений уровней ненулевых коэффициентов преобразования для элементарной единицы, например, макроблока. Многие системы кодирования могут пытаться определить размещение коэффициентов преобразования с ненулевыми значениями в конце остаточных данных для элементарной единицы, тем самым обеспечивая возможность использования кода "конец блока" после последнего значимого коэффициента преобразования, чтобы эффективно сигнализировать, что значения оставшихся коэффициентов преобразования равны нулю.
Некоторые системы кодирования могут отслеживать размещения коэффициентов преобразования с нулевыми значениями в остаточных данных, ранее переданных для ранее обработанной элементарной единицы, что может обеспечивать возможность передачи размещений с предыдущими коэффициентами преобразования с нулевыми значениями последними в последующих остаточных данных. В качестве альтернативы, некоторые системы кодирования могут отслеживать размещения коэффициентов преобразования с ненулевыми значениями в ранее переданных остаточных данных. Тогда как это может улучшить эффективность кодирования, это делает необходимым полностью декодировать предыдущие остаточные данные для того, чтобы декодировать текущие остаточные данные из-за того факта, что кодирование остаточных данных использует модели контекста, также называемыми вероятностными моделями, которые определяются посредством идентификатора коэффициента преобразования, который может только быть определен со знанием размещений, которые идентифицированы для передачи в конце остаточных данных.
0
10
1
i
0
0
0
10
10
10
0
10
1
Например, как показано на Фиг.35, если адаптация сканирования сгенерировала порядок сканирования: S = {coeff, coeff, coeff,...} для процесса энтропийного кодирования, ассоциированного с текущей элементарной единицей, где coeff обозначает i-й коэффициент преобразования, то контекст, который может быть обозначен как ctxt, соответствующий coeff, должен быть извлечен для кодирования коэффициента преобразования coeff. Далее контекст ctxt, соответствующий coeff, должен быть извлечен для кодирования коэффициента преобразования coeff и так далее. Таким образом, временное упорядочивание при кодировании элементарных единиц может быть введено в действие из-за необходимости знать порядок сканирования S = {coeff,coeff,coeff,...}, который не может быть получен пока не будут кодированы предыдущие элементарные единицы.
В некоторых вариантах осуществления настоящего изобретения, для того, чтобы обеспечить возможность параллельного кодирования энтропийных слайсов, адаптивное кодирование может быть сброшено к заданному по умолчанию порядку сканирования энтропийных слайсов в элементарной единице начала слайсы каждого энтропийного слайса, тем самым обеспечивая возможность параллельного кодирования отдельных энтропийных слайсов.
В некоторых вариантах осуществления настоящего изобретения, порядок сканирования вычисления адаптивного сканирования может быть установлен в известный, также называемый заданным по умолчанию для ряда, порядок сканирования в элементарной единице начала ряда каждого ряда LCU внутри энтропийного слайса.
0
10
1
0
A
10
B
1
C
В альтернативных вариантах осуществления настоящего изобретения, порядок сканирования коэффициентов преобразования блока и соответствующая модель контекста, также называемая контекстом, которая может быть извлечена для кодирования коэффициента преобразования, могут быть разъединены, тем самым обеспечивая возможность параллельного сканирования. В этих вариантах осуществления, коэффициент преобразования, размещенный в первом размещении в битовом потоке, может быть ассоциирован, на основе своего размещения относительно других коэффициентов преобразования в битовом потоке, с соответственно размещенным контекстом в порядке извлечения контекста. В этих вариантах осуществления, может быть предварительно задан порядок извлечения контекста, который может быть обозначен как F = {ctxtA,ctxtB,ctxtC,...}, где ctxt обозначает контекст, который не ассоциирован с размещением коэффициента преобразования в области преобразования, а скорее ассоциирован с относительным размещением коэффициента преобразования в битовом потоке. Таким образом, для примерного порядка сканирования коэффициентов преобразования S = {coeff, coeff, coeff,...}, процесс кодирования может кодировать coeff с помощью ctxt, coeff с помощью ctxt, coeff с помощью ctxt и так далее. В этих вариантах осуществления, процесс энтропийного кодирования может работать независимо от порядка сканирования. Некоторые варианты осуществления кодера могут быть описаны относительно Фиг.36. Кодер может извлечь 1280 следующий коэффициент преобразования, который должен быть кодирован, и может извлечь 1282 следующий контекст из предварительно заданного списка извлечения контекста. Извлеченный коэффициент преобразования может быть энтропийно кодирован 1284 с использованием извлеченного контекста, и может быть сделано определение 1286 относительно того, есть ли коэффициенты преобразования, оставшиеся для кодирования, или нет. Если есть 1287 значимые коэффициенты преобразования, оставшиеся для кодирования, следующий значимый коэффициент преобразования может быть извлечен 1280, и процесс может продолжиться. Если нет 1289, то процесс может завершиться 1290. Некоторые варианты осуществления декодера могут быть описаны относительно Фиг.37. Декодер может извлечь 1300 следующий контекст и энтропийно декодировать 1302 следующий значимый коэффициент преобразования из битового потока с использованием извлеченного контекста. Декодированный коэффициент преобразования может быть сохранен 1304, и может быть сделано определение 1306, есть ли оставшиеся значимые коэффициенты преобразования, которые должны быть кодированы, или нет. Если есть 1307, то следующий контекст может быть извлечен 1300, и процесс может продолжиться. Если нет 1309, то процесс может завершиться 1310.
В альтернативных вариантах осуществления настоящего изобретения, порядок сканирования коэффициентов может быть ограничен поднабором из всех возможных комбинаций сканирования и может быть сигнализирован в явной форме. В начале энтропийного слайса, порядок сканирования может быть установлен в сигнализированный порядок сканирования. В некоторых вариантах осуществления, порядок сканирования может быть сигнализирован как нормативный синтаксис. В альтернативных вариантах осуществления, порядок сканирования может быть сигнализирован с помощью ненормативного сообщения, например, сообщения SEI или другого ненормативного сообщения.
В альтернативных вариантах осуществления настоящего изобретения, порядок сканирования коэффициентов может быть ограничен поднабором из всех возможных комбинаций сканирования и может быть сигнализирован в явной форме. В начале ряда LCU в энтропийном слайсе, порядок сканирования может быть установлен в сигнализированный порядок сканирования. В некоторых вариантах осуществления, порядок сканирования может быть сигнализирован как нормативный синтаксис. В альтернативных вариантах осуществления, порядок сканирования может быть сигнализирован с помощью ненормативного сообщения, например, сообщения SEI или другого ненормативного сообщения.
В еще одних альтернативных вариантах осуществления настоящего изобретения, в начале энтропийного слайса, порядок сканирования коэффициентов может быть установлен в порядок сканирования ранее декодированной элементарной единицы. В некоторых вариантах осуществления, порядок сканирования может быть установлен в порядок сканирования, используемый в элементарной единице выше. В альтернативных вариантах осуществления, порядок сканирования может быть установлен в порядок сканирования, используемый в элементарной единице выше и справа.
В еще одних альтернативных вариантах осуществления настоящего изобретения, в начале ряда LCU в энтропийном слайсе, порядок сканирования коэффициентов может быть установлен в порядок сканирования ранее декодированной элементарной единицы. В некоторых вариантах осуществления, порядок сканирования может быть установлен в порядок сканирования, используемый в элементарной единице выше. В альтернативных вариантах осуществления, порядок сканирования может быть установлен в порядок сканирования, используемый в элементарной единице выше и справа.
Ссылаясь на Фиг.43, в некоторых вариантах осуществления настоящего изобретения, способ инициализации контекста для P-слайсов может быть применен к B-слайсам, предсказанным посредством прямого предсказания, что может привести к более высокой эффективности сжатия из-за больших степеней свободы, предоставленных B-слайсам, и имеющей множество гипотез природы B-предсказаний. Опорные слайсы, используемые в B-слайсе, предсказанном посредством прямого предсказания, являются всегда из более ранних во времени кадров/картинок в отличие от обычного B-слайса, где опорный слайс может быть выбран из будущих во времени или прошлых кадров/картинок. Таким образом, B-слайс, предсказанный посредством прямого предсказания, может содержать остаточные данные с статистическими характеристиками, отличающимися от остаточных данных с статистическими характеристиками обычного B-слайса. Как проиллюстрировано на Фиг.43, метод может принимать B-слайсы, P-слайсы и I-слайсы, и на основе типа принятого слайса выбирается метод инициализации контекста. В дополнение, в случае B-слайса, предсказанной посредством прямого предсказания, используется метод инициализации контекста для P-слайса. Более конкретно, выполняются следующие этапы:
4301: тип слайса может быть декодирован из битового потока;
4302: Определяют, является ли типом слайса B-слайс или нет;
4303: Если типом слайса является B-слайс (Да на 4302), то определяют, является ли слайс предсказанным посредством прямого предсказания. Если слайс является предсказанным посредством прямого предсказания, то контекст инициализируется с помощью второго метода инициализации, иначе контекст инициализируется с помощью первого метода инициализации;
4304: Если типом слайса не является B-слайс (Нет на 4302), то определяют, является ли слайс P-слайсом. Если типом слайса является P-слайс, то контекст инициализируется с помощью второго метода инициализации; и
4305: Если типом слайса не является P-слайс (Нет на 4304), то определяют, является ли слайс I-слайсом. Если типом слайса является I-слайс, контекст инициализируется с помощью третьего метода инициализации.
Согласно одному аспекту настоящего изобретения, первоначальное распределение вероятностей, используемое для инициализации энтропийного кодера, может быть сгенерирована посредством обучения только для B-кадров, предсказанных посредством прямого предсказания. Согласно другому аспекту настоящего изобретения, инициализация контекста может быть адаптирована на основе параметра квантования, который может быть обозначен как QP, используемого для кодирования текущих видеоданных.
В некоторых вариантах осуществления настоящего изобретения, кодер может в качестве альтернативы применить способ инициализации контекста для P-слайсов к B-слайсам, предсказанным посредством прямого предсказания, и может сигнализировать возникновение данной замены. В некоторых вариантах осуществления настоящего изобретения, сигнализирование может быть в явной форме. В альтернативных вариантах осуществления настоящего изобретения, сигнализирование может быть в неявной форме. В некоторых вариантах осуществления настоящего изобретения, содержащих сигнализирование в явной форме, флаг может быть отправлен декодеру всегда, когда P-слайс заменяется B-слайсом, предсказанным посредством прямого предсказания. В некоторых из этих вариантов осуществления, флаг может быть сигнализирован как нормативный синтаксис. В альтернативных вариантах осуществления, флаг может быть сигнализирован внутри ненормативного сообщения, например, сообщения SEI или другого ненормативного сообщения.
Ссылаясь на Фиг.41, в некоторых вариантах осуществления настоящего изобретения, способ инициализации контекста для P-слайсов может быть применен к B-слайсам, предсказанным посредством однонаправленного предсказания, что может привести к более высокой эффективности сжатия из-за больших степеней свободы, предоставленных B-слайсам. Опорные слайсы, используемые в B-слайсе, предсказанном посредством однонаправленного предсказания, являются участком либо более ранних во времени кадров/картинок, либо более поздних во времени кадров/картинок. Таким образом, B-слайс, предсказанный посредством однонаправленного предсказания, может содержать остаточные данные со статистическими характеристиками, отличными от остаточных данных со статистическими характеристиками B-слайса, предсказанным посредством двунаправленного предсказания. "Во времени" может относиться к порядку отображения декодированных картинок/кадров. Как проиллюстрировано на Фиг.41, метод может принимать B-слайсы, P-слайсы и I-слайсы, и на основе типа принятого слайса выбирается метод инициализации контекста. В дополнение, в случае B-слайса, предсказанном посредством однонаправленного предсказания, используется метод инициализации контекста для P-слайса. Более конкретно, выполняются следующие этапы:
4101: тип слайса может быть декодирован из битового потока;
4102: Определяют, является ли типом слайса B-слайс или нет;
4103: Если типом слайса является B-слайс (Да на 4102), то определяют, является ли слайс предсказанным посредством прямого или обратного предсказания, но не тем и другим. Если слайс является предсказанным посредством прямого или обратного предсказания, но не тем и другим, то контекст инициализируется с помощью второго метода инициализации, иначе контекст инициализируется с помощью первого метода инициализации;
4104: Если типом слайса не является B-слайс (Нет на 4102), то определяют, является ли слайс P-слайсом. Если типом слайса является P-слайс, то контекст инициализируется с помощью второго метода инициализации; и
4105: Если типом слайса не является P-слайс (Нет на 4104), то определяют, является ли слайс I-слайсом. Если типом слайса является I-слайсом, контекст инициализируется с помощью третьего метода инициализации.
Ссылаясь на Фиг.42, в некоторых вариантах осуществления настоящего изобретения, B-слайс, предсказанный посредством прямого предсказания, может быть инициализирован отличным от B-слайса, предсказанный посредством обратного предсказания, и/или B-слайса, предсказанного посредством двунаправленного предсказания, образом, что может привести к более высокой эффективности сжатия из-за разных степеней свободы, предоставленных B-слайсам. Опорные слайсы, используемые в B-слайсе, предсказанном посредством прямого предсказания, являются участком более ранних во времени кадров/картинок. Таким образом, B-слайс, предсказанный посредством прямого предсказания, может содержать остаточные данные со статистическими характеристиками, отличными от остаточных данных со статистическими характеристиками B-слайса, предсказанный посредством обратного и/или двунаправленного предсказания. "Во времени" может относиться к порядку отображения декодированных картинок/кадров. Как проиллюстрировано на Фиг.42, метод может принимать B-слайсы, P-слайсы и I-слайсы, и на основе типа принятого слайса выбирается метод инициализации контекста. В дополнение, в случае B-слайса, предсказанному посредством прямого предсказания, может быть использован метод инициализации контекста, отличный от B-слайсов, P-слайсов и I-слайсов. Более конкретно, выполняются следующие этапы:
4201: тип слайса может быть декодирован из битового потока;
4202: Определяют, является ли типом слайса B-слайс или нет;
4203: Если типом слайса является B-слайс (Да на 4202), то определяют, является ли слайс предсказанным посредством прямого предсказания или нет. Если слайс является предсказанным посредством прямого предсказания, то контекст инициализируется с помощью четвертого метода инициализации, иначе контекст инициализируется с помощью первого метода инициализации;
4204: Если типом слайса не является B-слайс (Нет на 4202), то определяют, является ли слайс P-слайсом. Если типом слайса является P-слайс, то контекст инициализируется с помощью второго метода инициализации; и
4205: Если типом слайса не является P-слайс (Нет на 4204), то определяют, является ли слайс I-слайсом. Если типом слайса является I-слайс, контекст инициализируется с помощью третьего метода инициализации.
Способ инициализации контекста может состоять из установки значений энтропийного кодера, которые необходимы для работы энтропийного кодера. Например, первая оценка вероятности может быть установлена для энтропийного кодера, который использует оценки вероятности для кодирования данных, как например, в арифметическом кодере. Способ инициализации контекста может использовать метод инициализации для определения значений. В одном варианте осуществления первый способ инициализации соответствует использованию первой таблицы предварительно вычисленных значений для установки значений. Аналогично, второй способ инициализации соответствует использованию второй таблицы предварительно вычисленных значений для установки значений. В другом варианте осуществления, первый способ инициализации использует первую таблицу предварительно вычисленных значений, которые предназначены для кадров, которые используют более чем одно предсказание между кадрами для установки значений, где кадр(ы), используемый для предсказания, как предшествует во времени, так и идет далее во времени за текущим кадром, когда упорядочены в порядке отображения. Второй способ инициализации использует вторую таблицу предварительно вычисленных значений, которые предназначены для кадров, которые используют более чем одно предсказание между кадрами для установки значений, где кадры, используемые для предсказания, предшествуют во времени или идут далее во времени, но не вместе предшествуют во времени и идут далее во времени, за текущим кадром, когда упорядочены в порядке отображения. Третий способ инициализации использует третью таблицу предварительно вычисленных значений, которые предназначены для кадров, которые используют по большей мере одно предсказание между кадрами для установки значений. Четвертый способ инициализации использует четвертую таблицу предварительно вычисленных значений, которые предназначены для кадров, которые не используют предсказание между кадрами для установки значений.
В одном варианте осуществления данного изобретения, RefPicList0 содержит список ранее декодированных кадров, которые отображаются до отображения текущего кадра, за которым следует список ранее декодированных кадров, которые отображаются вслед за отображением текущего кадра, и RefPicList1 содержит список ранее декодированных кадров, которые отображаются вслед за отображением текущего кадра, за которым следует список ранее декодированных кадров, которые отображаются до отображения текущего кадра. В этом варианте осуществления, условие (2) выше является истиной для B-слайса, предсказанным посредством однонаправленного предсказания, так как число ранее декодированных кадров, которые отображаются вслед за отображением текущего кадра, равно нулю, или число декодированных кадров, которые отображаются до отображения текущего кадра, равно нулю. В другом варианте осуществления данного изобретения, PicOrderCnt обозначает порядок отображения декодированных кадров. В этом варианте осуществления, условие (3) выше является истиной для B-слайса, предсказанным посредством однонаправленного предсказания, так как декодированные кадры все отображаются до отображения текущего кадра или вслед за отображением текущего кадра.
В некоторых вариантах осуществления настоящего изобретения, содержащих сигнализирование в неявной форме, возникновение способа инициализации контекста для P-слайсов, применяемого к B-слайсм, предсказанным посредством прямого предсказания, может быть предположено в декодере, когда опорные слайсы (кадры/картинки), используемые в предсказании, все являются прошлыми слайсами (кадрами/картинками), на основе порядка, в котором должны быть отображены слайсы. В некоторых вариантах осуществления, возникновение P-слайса, замененным B-слайсом, предсказанной посредством однонаправленного предсказания, может быть предположено, когда действительны следующие условия: (1) список опорных картинок RefPicList1 имеет одну или более записей, (2) список опорных картинок RefPicList1 и RefPicList0 содержат одинаковый набор картинок, и (3) все кадры в списке опорных картинок RefPicList1 и RefPicList0 имеют PicOrderCnt меньше, чем PicOrderCnt текущего кадра, где PicOrderCnt указывает порядок отображения кадров в возрастающем порядке. В некоторых вариантах осуществления, возникновение P-слайса, замененным B-слайсом, предсказанной посредством однонаправленного предсказания, может быть предположено, когда действительны следующие условия: (1) список опорных картинок RefPicList1 имеет одну или более записей, (2) список опорных картинок RefPicList1 и RefPicList0 содержат одинаковый набор картинок, и (3) все кадры в списке опорных картинок RefPicList1 и RefPicList0 имеют PicOrderCnt больше, чем PicOrderCnt текущего кадра, где PicOrderCnt указывает порядок отображения кадров в возрастающем порядке. В некоторых вариантах осуществления, возникновение P-слайса, замененным B-слайсом, предсказанным посредством однонаправленного предсказания, может быть предположено, когда действительны следующие условия: (1) список опорных картинок RefPicList1 имеет одну или более записей, и (2) первый кадр в списке опорных картинок RefPicList1 и первый кадр в RefPicList0 имеют PicOrderCnt меньше (или больше), чем PicOrderCnt текущего кадра, где PicOrderCnt указывает порядок отображения кадров в возрастающем порядке. В некоторых вариантах осуществления, возникновение P-слайса, замененным B-слайсом, предсказанным посредством однонаправленного предсказания, может быть предположено, когда действительны следующие условия: (1) список опорных картинок RefPicList1 имеет более, чем одну запись, и (2) кадры [0,N] в списке опорных картинок RefPicList1 и кадры [0,N] в RefPicList0 имеют PicOrderCnt меньше (или больше), чем PicOrderCnt текущего кадра, где PicOrderCnt указывает порядок отображения кадров в возрастающем порядке. В некоторых вариантах осуществления, возникновение P-слайса, замененный B-слайсом, предсказанный посредством однонаправленного предсказания, может быть предположено, когда действительны следующие условия: (1) список опорных картинок RefPicList1 имеет одну или более записей, (2) первый кадр в списке опорных картинок RefPicList1 является таким же как второй кадр в списке опорных картинок RefPicList0, (3) второй кадр в списке опорных картинок RefPicList1 является таким же как первый кадр в списке опорных картинок RefPicList0, (4) кадры [0,N] в списке опорных картинок RefPicList1 и кадры [0,N] в RefPicList0 имеют PicOrderCnt меньше (или больше), чем PicOrderCnt текущего кадра, где PicOrderCnt указывает порядок отображения кадров в возрастающем порядке. В некоторых вариантах осуществления порядок RefPicList0 и RefPicList1 не должны быть идентичными, чтобы содержать одинаковый набор картинок. В примерном варианте осуществления, когда список опорных картинок RefPicList1 имеет более, чем одну запись, и RefPicList1 идентичен списку опорных картинок RefPicList10, то первые две записи RefPicList1[0] и RefPicList1[1] могут переключаться. N может относиться к меньшему, чем общее число кадров/картинок в списке опорных картинок. PicOrderCnt может также относиться к относительному порядку отображения в буфере картинок декодера.
Когда указано возникновение P-слайса, замененный B-слайсом, предсказанной посредством прямого предсказания, контекст для энтропийного слайса может быть инициализирован с использованием способа P-слайса. В другом варианте осуществления, контекст слайса может быть инициализирован с использованием способа P-слайса.
Таблица 13 показывает примерный синтаксис для сигнализирования в явной форме, что первоначальный контекст B-слайса должен быть использован с использованием способа P-слайса. В примерных вариантах осуществления, ассоциированных с Таблицей 13, "cabac_init_P_flag" является флагом, который указывает, для инициализации энтропийного кодера B-слайса, должен ли быть выбран способ B-слайса или способ P-слайса. В некоторых вариантах осуществления, если значением флага "cabac_init_P_flag" является "0", то для инициализации выбирается способ B-слайса, и если значением флага "cabac_init_P_flag" является "1", то для инициализации выбирается способ P-слайса.
Таблица 13
Таблица примерного синтаксиса, показывающая сигнализирование в явной форме инициализации B-слайса с использованием способаP-слайса
slice_header() {
С
Дескриптор
entropy_slice_flag
2
u(1)
if (entropy_slice_flag) {
first_lcu_in_slice
2
ue(v)
if (entropy_coding_mode_flag) {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag){
lcu_row_cabac_init_idc_flag
1
u(1)
}
}
if( entropy_coding_mode_flag && slice_type ! =I) f
cabac_init_idc
2
ue(v)
if (slice_type==B_SLICE && forward-predicted B-slice)
cabac_init_P_flag
1
u(1)
}
}
else {
if (entropy_coding_mode_flag) {
lcu_row_cabac_init_flag
1
u(1)
if( lcu_row_cabac_init_flag){
lcu_row_cabac_init_idc_flag
1
u(1)
}
}
first_lcu_in_slice
2
ue(v)
slice_type
2
ue(v)
Some elements of regular slice header.....
if( entropy_coding_mode_flag && slice_type !=I) {
cabac_init_idc
2
ue(v)
if (slice_type==B_SLICE && forward-predicted B-slice)
cabac_init_P_flag
1
u(1)
}
Remainder of regular slice header.....
}
}
В некоторых вариантах осуществления настоящего изобретения, состояния инициализации контекста для энтропийного слайса может быть основано на числе двоичных элементов, обработанных энтропийным кодером. Энтропийный кодер может наиболее быстро приблизиться к статистике источника, когда корректно инициализирован. Более быстрое приближение может повлечь за собой растрату меньшего количества битов и более высокую эффективность сжатия. В некоторых вариантах осуществления настоящего изобретения, число двоичных элементов, которые могут быть переданы, может быть оценено, и когда оцененное число двоичных элементов отвечает первому критерию, то может быть использован первый способ инициализации. Когда оцененное число двоичных элементов не отвечает первому критерию, то может быть использован второй способ инициализации.
Примерный вариант осуществления настоящего изобретения может быть понят относительно Фиг.38. В этих вариантах осуществления, может быть оценено 1320 число обработанных двоичных элементов. Оцененное число обработанных двоичных элементов, обозначенное как Nbins, может сравниваться 1322 с пороговым значением, обозначено как Tbins. По мере увеличения числа обработанных двоичных элементов, точность предсказания инициализации контекста на основе QP может уменьшиться. Более высокая точность предсказания для инициализации контекста может привести к лучшей эффективности сжатия. Если оцененное число обработанных двоичных элементов 1324 больше, чем пороговое значение, то может быть выбрано 1326 одиночное значение инициализации контекста. Если оцененное число обработанных двоичных элементов 1328 не больше, чем пороговое значение, то контекст может быть инициализирован адаптивно 1330 на основе QP. Одиночное значение инициализации контекста может быть выбрано на основе обучения и оптимизации выбранных метрик, например, квадратичной ошибки, относительной энтропии или других метрик расстояния. Адаптивная инициализация на основе QP может быть аффинной адаптацией вида CA*QP+CB, где CA и CB являются постоянными. В некоторых вариантах осуществления, число двоичных элементов может быть оценено на основе числа обработанных двоичных элементов в предыдущем слайсе. В альтернативных вариантах осуществления, число двоичных элементов может быть оценено на основе числа обработанных двоичных элементов в предыдущем кадре.
min
min
В некоторых вариантах осуществления настоящего изобретения, описанных относительно Фиг.39, которая графически представляет 1340 диапазон числа обработанных двоичных элементов, многочисленные непересекающиеся диапазоны (показаны три 1342, 1344, 1346) числа обработанных двоичных элементов могут быть определены и описаны относительно числа порогов (показаны два 1348, 1350), и значение инициализации контекста может быть выбрано на основе того, во внутрь какого из диапазонов 1342, 1344, 1346 попадает оцененное число обработанных двоичных элементов, например, для трех диапазонов 1342, 1344, 1346, когда Nbins≤T 1342, контекст может быть инициализирован адаптивно на основе QP, когда T<Nbins≤T1 1344, контекст может быть инициализирован в первое фиксированное значение контекста, и когда T1<Nbins 1346, контекст может быть инициализирован во второе, другое, фиксированное значение контекста.
Другой альтернативный примерный вариант осуществления настоящего изобретения может быть понят относительно Фиг.40. В этом примерном варианте осуществления, значение QP может быть определено 1400 и проверено 1402 относительно порогового значения, обозначенного как TQP. В общем, по мере уменьшения QP число обработанных двоичных элементов может увеличиваться. Если QP не 1404 меньше, чем пороговое значение, то контекст может быть инициализирован адаптивно 1406 на основе QP. Если значение QP 1408 меньше, чем пороговое значение, то может быть выбрано 1410 одиночное значение инициализации контекста. Одиночное значение инициализации контекста может быть выбрано на основе обучения и оптимизации выбранных метрик, например, квадратичной ошибки, относительной энтропии или других метрик расстояния.
В некоторых вариантах осуществления настоящего изобретения, могут быть определены многочисленные непересекающиеся диапазоны QP, и значение инициализации контекста может быть выбрано на основе того, во внутрь какого из диапазонов попадает значение QP.
Таблица 14 показывает сравнение показателей искажения в зависимости от скорости передачи для полностью внутреннего (all intra) кодирования. Первое сравнение, показанное в двух подстолбцах столбца три, является сравнением, с использованием программного обеспечения Объединенной модели (JM) H.264/AVC, версии 13.0, между кодированием с использованием многочисленных слайсов, при котором энтропийное декодирование и реконструкция макроблоков для слайса не зависят от других слайсов, и кодированием без использования слайсов. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,3380 дБ посредством кодирования с использованием многочисленных слайсов относительно неиспользования слайсов. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 7% посредством кодирования с использованием многочисленных слайсов относительно неиспользования слайсов.
Второе сравнение, показанное в двух подстолбцах столбца четыре, является сравнением между кодированием с использованием одного слайса для реконструкции, разделенный, согласно вариантам осуществления настоящего изобретения, на многочисленные энтропийные слайсы (два ряда макроблоков на энтропийный слайс), и кодированием с использованием JM 13.0 без слайсов. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,0860 дБ с использованием слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 1,83% посредством кодирования с использованием одного слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов.
Таблица 14
Сравнение показателей искажения в зависимости от скорости передачи - полностью внутреннее кодирование
Полностью внутреннее кодирование
Последовательность
Разрешение
JM 13.0 с слайсами по сравнению с JM 13.0 без слайсов
Один слайс для реконструкции с многочисленными энтропийными слайсами по сравнению с JM 13.0 без слайсов
BD SNR [дБ]
BD скорость передачи в битах [%]
BD SNR [дБ]
BD скорость передачи в битах [%]
BigShip
720p
-0,22
4,54
-0,08
1,61
City
720p
-0,28
4,03
-0,06
0,84
Crew
720p
-0,42
11,67
-0,11
2,98
Night
720p
-0,38
5,64
-0,06
0,91
ShuttleStart
720p
-0,39
9,12
-0,12
2,81
Среднее
-0,3380
7,00
-0,0860
1,83
Таблица 15 показывает сравнение показателей искажения в зависимости от скорости передачи для IBBP-кодирования. Первое сравнение, показанное в двух подстолбцах столбца три, является сравнением, с использованием программного обеспечения Объединенной модели (JM) H.264/AVC, версии 13.0, между кодированием с использованием многочисленных слайсов, при котором энтропийное декодирование и реконструкция макроблоков для слайса не зависят от других слайсов, и кодированием без использования слайсов. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,5460 дБ при кодировании с использованием многочисленных слайсов. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 21,41% посредством кодирования с использованием многочисленных слайсов относительно неиспользования слайсов.
Второе сравнение, показанное в двух подстолбцах столбца четыре, является сравнением между кодированием с использованием одного слайса для реконструкции, разделенный, согласно вариантам осуществления настоящего изобретения, на многочисленные энтропийные слайсы (два ряда макроблоков на энтропийный слайс), и кодированием с использованием JM 13.0 без слайсов. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,31 дБ с использованием слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 11,45% посредством кодирования с использованием одного слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов.
Таблица 15
Сравнение показателей искажения в зависимости от скорости передачи - IBBP-кодирование
IBBP-кодирование
Один слайс для реконструкции
Слайсы JM 13.0
с многочисленными
Последовательность
Разрешение
по сравнению с JM 13.0 без слайсов
энтропийными слайсами по сравнению с JM
13.0 без слайсов
BD SNR
BD скорость передачи в битах
BD SNR
BD скорость передачи в битах
[дБ]
[%]
[дБ]
[%]
BigShip
720p
-0,45
19,34
-0,26
10,68
City
720p
-0,48
17,83
-0,22
7,24
Crew
720p
-0,62
30,10
-0,33
14,93
Night
720p
-0,36
11,11
-0,19
5,5
ShuttleStart
720p
-0,82
28,69
-0,55
18,89
Среднее
-0,5460
21,41
-0,31
11,45
Сравнивая результаты, кодирование с использованием множественных энтропийных слайсов в одном слайсе для реконструкции предоставляет сбережение скорости передачи в битах 5,17% и 9,96% для полностью внутреннего и IBBP-кодирования, соответственно, относительно кодирования с использованием слайсов, при этом энтропийное декодирование и реконструкция макроблоков для слайса не зависит от других слайсов, хотя оба обеспечивают возможность параллельного декодирования.
Таблица 16 показывает сравнение показателей искажения в зависимости от скорости передачи для полностью внутреннего и IBBP-кодирования. В этой таблице, сравнение является сравнением между кодированием без использования слайсов и кодирования с использованием одного слайса для реконструкции, разделенный на энтропийные слайсы, согласно вариантам осуществления настоящего изобретения, с максимальным размером 26 тыс. двоичных элементов на энтропийный слайс. Первое сравнение, показанное в двух подстолбцах из столбца два, является сравнением с использованием полностью внутреннего кодирования. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,062 дБ посредством кодирования с использованием слайса для реконструкции с многочисленными энтропийными слайсами. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 1,86% посредством кодирования с использованием слайса для реконструкции с многочисленными энтропийными слайсами. Таким образом, для полностью внутреннего кодирования с использованием энтропийных слайсов с максимальным размером 26 тыс. двоичных элементов на энтропийный слайс, средние сбережения скорости передачи в битах составляют примерно 0,64% относительно использования энтропийных слайсов с фиксированными размерами энтропийных слайсов из двух рядов макроблоков.
Второе сравнение, показанное в двух подстолбцах из столбца три, является сравнением с использованием IBBP-кодирования. В среднем, для одинаковой скорости передачи в битах, качество ухудшается на -0,022 дБ с использованием слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов. В среднем, для одинакового уровня качества, скорости передачи в битах увеличивается на 0,787% посредством кодирования с использованием одного слайса для реконструкции с многочисленными энтропийными слайсами относительно кодирования без использования слайсов. Таким образом, для IBBP-кодирования с использованием энтропийных слайсов с максимальным размером 26 тыс. двоичных элементов на энтропийный слайс, средние сбережения скорости передачи в битах составляют примерно 10,66% относительно использования энтропийных слайсов с фиксированными размерами энтропийных слайсов из двух рядов макроблоков.
Таблица 16
Сравнение показателей искажения в зависимости от скорости передачи - полностью внутреннее и IBBP-кодирование с использованием энтропийных слайсов с менее, чем 26 тыс. двоичных элементов на энтропийный слайс
Энтропийный слайс по сравнению с JM 15.1 без слайсов. Эксперимент (1): 26 тыс двоичных элементов максимум на энтропийный слайс
Последовательность (720p)
Полностью внутреннее кодирование
IBBP-кодирование
BD SNR [дБ]
BD скорость передачи в битах [%]
BD SNR [дБ]
BD скорость передачи в битах [%]
BigShip
-0,07
1,40
-0,02
0,70
City
-0,07
1,02
-0,02
0,51
Crew
-0,05
1,31
-0,03
1,25
Night
-0,07
1,00
-0,02
0,66
ShuttleStart
-0,05
1,20
-0,03
-0,82
Среднее
-0,062
1,187
-0,022
0,787
Использование энтропийных слайсов обеспечивает возможность энтропийного декодирования, и кодер, разделяющий слайс для реконструкции на энтропийный слайс, при этом каждый энтропийный слайс меньше, чем максимальное число двоичных элементов, может предоставить значительные сбережения скорости передачи в битах относительно энтропийных слайсов с фиксированным числом макроблоков.
Хотя схемы и диаграммы на фигурах могут показывать конкретный порядок исполнения, понятно, что порядок исполнения может отличаться от порядка отображения, который изображен.
Например, порядок исполнения блоков может быть изменен относительно показанного порядка. Также, в качестве дополнительного примера, два или более блоков, показанных последовательно на фигурах, могут быть исполнены одновременно или с частичным совпадением. Средние специалисты в данной области техники поймут, что программное обеспечение, аппаратные средства и/или программно-аппаратные средства могут быть созданы средними специалистами в данной области техники для осуществления разных логических функций, описанных в настоящем документе.
Некоторые варианты осуществления настоящего изобретения могут содержать компьютерный программный продукт, содержащий считываемый компьютером носитель информации, имеющий инструкции, хранящиеся на нем/в котором могут быть использованы для программирования вычислительной системы для выполнения любого из признаков и способов, описанных в настоящем документе. Примерные считываемые компьютером носители информации могут включать в себя, но не ограничены этим, устройства флэш-памяти, дисковые носители информации, например, флоппи-диски, оптические диски, магнито-оптические диски, универсальные цифровые диски (DVD), компакт-диски (CD), микроприводы и другие дисковые носители информации, постоянную память (ROM), программируемую постоянную память (PROM), стираемую программируемую постоянную память (EPROM), электрически стираемую программируемую постоянную память (EEPROM), оперативную память (RAM), оперативную видеопамять (VRAM), динамическую оперативную память (DRAM) и любой тип носителей или устройства, пригодного для хранения инструкций и/или данных.
В некоторых вариантах осуществления настоящего изобретения, шаблон сканирования может быть инициализирован в начале энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, шаблон сканирования может быть инициализирован в начале элементарной единицы в ряду в энтропийном слайсе.
В некоторых вариантах осуществления настоящего изобретения, состояние, ассоциированное с вычислением адаптивного сканирования, может быть инициализировано в начале энтропийного слайса.
В некоторых вариантах осуществления настоящего изобретения, состояние, ассоциированное с вычислением адаптивного сканирования, может быть инициализировано в начале элементарной единицы в ряду в энтропийном слайсе.
В некоторых вариантах осуществления настоящего изобретения, порядок сканирования коэффициентов может быть отделен от порядка извлечения контекста.
В некоторых вариантах осуществления, может быть обнаружена B-слайс, предсказанная посредством прямого предсказания, и контекст, ассоциированный с энтропийным кодированием B-слайса, предсказанной посредством прямого предсказания, может быть инициализирован согласно способу P-слайса.
В некоторых вариантах осуществления настоящего изобретения, контекст может быть инициализирован на основе числа отсчетов двоичных элементов.
В некоторых вариантах осуществления настоящего изобретения, контекст может быть инициализирован на основе значения параметра квантования.
Один вариант осуществления настоящего изобретения раскрывает способ для декодирования видеокадра видеопоследовательности, содержащий этапы, на которых:
(a) принимают слайс в видеодекодере;
(b) идентифицируют, является ли слайс B-слайсом, предсказанной посредством прямого предсказания, или B-слайсом, предсказанной посредством обратного предсказания, и не B-слайсом, предсказанной посредством как прямого, так и обратного предсказания;
(c) инициализируют, с использованием метода P-слайса, контекст, ассоциированный с данным слайсом.
В некоторых вариантах осуществления настоящего изобретения, идентификация может содержать только B-слайс, предсказанный посредством обратного предсказания.
В некоторых вариантах осуществления настоящего изобретения, идентификация может быть основана на том, что: (1) первый список, идентифицирующий опорные картинки, имеет по меньшей мере одну запись, (2) первый список и второй список, идентифицирующие опорные картинки, содержат одинаковый набор картинок, (3) все картинки в первом списке и втором списке должны быть отображены до текущему слайсу.
В некоторых вариантах осуществления настоящего изобретения, идентификация может быть основана на том, что: (1) первый список, идентифицирующий опорные картинки, имеет по меньшей мере одну запись, (2) первый список и второй список, идентифицирующие опорные картинки, содержат одинаковый набор картинок, (3) все картинки в первом списке и втором списке должны быть отображены после текущего слайса.
В некоторых вариантах осуществления настоящего изобретения, идентификация может быть основана на том, что: (1) первый список, идентифицирующий опорные картинки, имеет по меньшей мере одну запись, (2) первый список и второй список, идентифицирующие опорные картинки, содержат неодинаковый по протяженности набор картинок, (3) неодинаковый по протяженности набор картинок, которые должны быть отображены до текущего слайса.
В некоторых вариантах осуществления настоящего изобретения, идентификация может быть основана на том, что: (1) первый список, идентифицирующий опорные картинки, имеет по меньшей мере одну запись, (2) первый список и второй список, идентифицирующие опорные картинки, содержат неодинаковый по протяженности набор картинок, (3) неодинаковый по протяженности набор картинок, которые должны быть отображены после текущего слайса.
В некоторых вариантах осуществления настоящего изобретения, идентификация может быть основана на том, что: (1) первый список, идентифицирующий опорные картинки, имеет по меньшей мере одну запись, (2) первая опорная картинка в первом списке является такой же как вторая опорная картинка во втором списке, (3) первая опорная картинка во втором списке является такой же как вторая опорная картинка в первом списке, (4) первый список и второй список, идентифицирующие опорные картинки, содержат неодинаковый по протяженности набор картинок, и неодинаковый по протяженности набор картинок, которые должны быть отображены до текущего слайса.
Один вариант осуществления настоящего изобретения раскрывает способ для декодирования видеокадра видеопоследовательности, содержащий этапы, на которых:
(a) принимают слайс в видеодекодере;
(b) идентифицируют, является ли слайсВ-слайсом, предсказанной посредством прямого предсказания;
(c) инициализируют, с использованием метода, отличного от используемого для любой из B-слайса, P-слайса и I-слайса, контекст, ассоциированный с данным слайсом.
Термины и выражения, которые были использованы в вышеприведенном описании, используются в нем в качестве терминов описания, а не ограничения, и нет намерения при использовании таких терминов и выражений исключать эквивалентность показанных и описанных признаков, или их частей, следует понимать, что объем данного изобретения задан и ограничен только пунктами формулы изобретения, которые следуют ниже.