Сигнализация данных для долгосрочных эталонных изображений для кодирования видео

Иллюстрации

Показать все

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

Реферат

[0001] Данная заявка испрашивает преимущество Предварительной патентной заявки США № 61/656,877, поданной 7 июня 2012 г., все содержимое которой настоящим включается в этот документ путем отсылки.

ОБЛАСТЬ ТЕХНИКИ

[0002] Данное раскрытие изобретения относится к кодированию видео.

УРОВЕНЬ ТЕХНИКИ

[0003] Возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, игровые приставки, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства для видеоконференцсвязи, устройства для потокового видео и т.п. Цифровые видеоустройства реализуют методики кодирования видео, например описанные в стандартах, заданных MPEG-2, MPEG-4, H.263 ITU-T, H.264/MPEG-4 ITU-T, часть 10, Улучшенное кодирование видео (AVC) ITU-T, стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и расширениях таких стандартов, например расширениях по масштабируемому кодированию видео (SVC) и многовидовому кодированию видео (MVC). Видеоустройства могут эффективнее передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию с помощью реализации таких методик кодирования видео.

[0004] Последний вариант предстоящего стандарта HEVC, называемый "HEVC Working Draft 6" или "WD6", описывается в документе JCTVC-H1003 под авторством Бросс (Bross) и др., "High efficiency video coding (HEVC) text specification draft 6", Объединенная команда по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC, 8-е заседание в Сан-Хосе, Калифорния, США, февраль 2012 г., который по состоянию на 7 июня 2012 г. доступен для загрузки по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San Jose/wg11/JCTVC-H1003-v22.zip. Другой вариант предстоящего стандарта HEVC, называемый "HEVC Working Draft 7" или "WD7", описывается в документе JCTVC-I1003 под авторством Бросс (Bross) и др., "High Efficiency Video Coding (HEVC) Text Specification Draft 7", Объединенная команда по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC, 9-е заседание в Женеве, Швейцария с 27 апреля 2012 г. по 7 мая 2012 г., который по состоянию на 7 июня 2012 г. доступен для загрузки по адресу http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v3.zip.

[0005] Методики кодирования видео включают в себя пространственное (внутреннее) предсказание и/или временное (внешнее) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео видеослайс (например, видеокадр или часть видеокадра) может разбиваться на видеоблоки, которые также могут называться блоками дерева, единицами дерева кодирования, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в интракодированном (I) слайсе изображения кодируются с использованием пространственного предсказания относительно эталонных выборок в соседних блоках в том же изображении. Видеоблоки в интеркодированном (P или B) слайсе изображения могут использовать пространственное предсказание относительно эталонных выборок в соседних блоках в том же изображении или временное предсказание относительно эталонных выборок в других эталонных изображениях. Изображения могут называться кадрами, а эталонные изображения могут называться эталонными кадрами.

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

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

[0007] Вообще, данное раскрытие изобретения описывает методики, связанные с выведением набора эталонных изображений (RPS) и сигнализацией долгосрочных эталонных изображений (LTRP), которые будут включены в RPS, например, в наборе параметров последовательности (SPS), наборе параметров изображения (PPS) или заголовке слайса. Эти методики могут включать в себя обеспечение того, что значения самых младших разрядов (LSB) у значений счетчика последовательности изображений (POC) для LTRP являются неубывающими или невозрастающими. Дополнительно или в качестве альтернативы эти методики могут включать в себя сигнализацию данных для значения POC у LTRP либо в SPS, либо в заголовке слайса и предоставление информации, указывающей, сигнализируются ли данные для значения POC в SPS или в заголовке слайса.

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0013] Фиг. 1 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видео, которая может использовать методики для сигнализации данных для долгосрочных эталонных изображений (LTRP) в наборе параметров последовательности (SPS) или в заголовке слайса.

[0014] Фиг. 2 - блок-схема, иллюстрирующая пример видеокодера, который может реализовать методики для сигнализации данных для LTRP в SPS или в заголовке слайса.

[0015] Фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера, который может реализовать методики для сигнализации данных для LTRP в SPS или в заголовке слайса.

[0016] Фиг. 4 - блок-схема алгоритма, иллюстрирующая процесс для кодирования данных для эталонных изображений в соответствии с одним или несколькими примерами, описанными в данном раскрытии изобретения.

[0017] Фиг. 5 - блок-схема алгоритма, иллюстрирующая процесс для сигнализации данных для LTRP в SPS или в заголовке слайса в соответствии с одним или несколькими примерами, описанными в данном раскрытии изобретения.

ПОДРОБНОЕ ОПИСАНИЕ

[0018] Видеопоследовательность в целом представлена в виде последовательности изображений. Как правило, методики блочного кодирования используются для кодирования каждого из отдельных изображений. То есть каждое изображение разделяется на блоки, и каждый из блоков кодируется отдельно. Кодирование блока видеоданных в целом включает в себя образование предсказанного значения для блока и кодирование остаточного значения, то есть разности между исходным блоком и предсказанным значением. В частности, исходный блок видеоданных включает в себя матрицу значений пикселей, а предсказанное значение включает в себя матрицу предсказанных значений пикселей. Остаточное значение соответствует попиксельным разностям между значениями пикселей исходного блока и предсказанными значениями пикселей.

[0019] Методики предсказания для блока видеоданных в целом категоризируются на интрапредсказание и интерпредсказание. Интрапредсказание, или пространственное предсказание, в целом включает в себя предсказание блока из значений пикселей в соседних, ранее кодированных блоках. Интерпредсказание, или временное предсказание, в целом включает в себя предсказание блока из значений пикселей ранее кодированных изображений.

[0020] Ранее кодированные изображения могут представлять собой изображения, которые отображаются раньше или позже, чем кодируемое изображение. Другими словами, порядок отображения для изображений не обязательно такой же, как порядок декодирования изображений, и соответственно изображения, отображенные раньше или позже, чем текущее кодируемое изображение, могут использоваться в качестве эталона для кодирования блоков текущего изображения.

[0021] Например, кодировщик видео (который является термином, который может относиться к одному или обоим из видеокодера и видеодекодера) включает в себя буфер декодированных изображений (DPB). DPB хранит эталонные изображения, которые являются изображениями, которые могут использоваться для интерпредсказания изображения. Другими словами, кодировщик видео может предсказывать изображение на основе одного или нескольких эталонных изображений, сохраненных в DPB. Вообще, описываются методики, которые предоставляют различные способы для выведения набора эталонных изображений (RPS) и сигнализации долгосрочных эталонных изображений (LTRP), которые будут включены в RPS кодированного изображения для использования при выполнении особенностей интерпредсказания в кодировании видео.

[0022] В задачу видеодекодера также может входить построение списков эталонных изображений, которые указывают, какие эталонные изображения используются для целей интерпредсказания. Два из этих списков эталонных изображений называются соответственно Списком 0 и Списком 1. Видеодекодер сначала применяет методики построения по умолчанию для построения Списка 0 и Списка 1 (например, предварительно сконфигурированные схемы построения для построения Списка 0 и Списка 1). При желании после того, как строятся начальные Список 0 и Список 1, декодер может декодировать синтаксические элементы, когда они присутствуют, которые дают видеодекодеру указание изменить начальные Список 0 и Список 1.

[0023] Видеокодер может сигнализировать синтаксические элементы, которые указывают идентификатор (идентификаторы) эталонных изображений в DPB, и видеокодер также может сигнализировать синтаксические элементы, которые включают в себя индексы в Списке 0, Списке 1 или одновременно в Списке 0 и Списке 1, которые указывают, какое эталонное изображение или изображения использовать для декодирования кодированного блока в текущем изображении. В свою очередь, видеодекодер использует принятый идентификатор, чтобы идентифицировать значение или значения индекса для эталонного изображения или эталонных изображений, перечисленных в Списке 0, Списке 1 или одновременно в Списке 0 и Списке 1. Из значения (значений) индекса, а также из идентификатора (идентификаторов) эталонного изображения или эталонных изображений кодировщик видео извлекает эталонное изображение или эталонные изображения из DPB и декодирует кодированный блок в текущем изображении.

[0024] Видеокодер может сигнализировать RPS в наборе параметров изображения (PPS) или наборе параметров последовательности (SPS), ассоциированном с заголовком слайса в текущем изображении. RPS текущего изображения включает в себя идентификационную информацию для эталонных изображений, которые могут использоваться для предсказания текущего изображения, и изображений, которые могут использоваться для предсказания изображений после текущего изображения в порядке декодирования. Только эталонные изображения в RPS могут включаться в Список 0 или Список 1.

[0025] В потоке двоичных сигналов кодированного видео кодировщик видео (то есть видеокодер или видеодекодер) может использовать два типа значений для обращения к изображениям: значения счетчика последовательности изображений (POC), которые обычно соответствуют порядку вывода изображений, и значения номера кадра (frame_num), которые обычно соответствуют порядку декодирования изображений. Вообще, термины "кадр" и "изображение" могут использоваться взаимозаменяемо. Поэтому значения номера кадра соответствуют порядку декодирования изображений.

[0026] Идентификационная информация для эталонных изображений может включать в себя одно или несколько значений счетчика последовательности изображений (POC). Значения POC указывают порядок, в котором выводятся или отображаются изображения в кодированной видеопоследовательности (то есть порядок отображения изображений). Например, изображение с меньшим значением POC отображается раньше, чем изображение с большим значением POC в одной и той же кодированной видеопоследовательности.

[0027] При кодировании видео данные для изображений, или слайсы изображений, обычно заключаются в единицы на уровне абстракции сети (NAL). Единицы NAL могут включать в себя данные уровня видеокодирования (VCL), например кодированные данные для изображений или слайсов, также называемые единицами NAL VCL, или не относящиеся к VCL данные, например наборы параметров и сообщения с дополнительной информацией расширения (SEI), также называемые не относящимися к VCL единицами NAL. Единицы NAL также включают в себя данные заголовка, которые описывают тип данных, включенных в соответствующие единицы NAL. Например, единицы NAL могут включать в себя nal_ref_flag, указывающий, включает ли в себя единица NAL данные для эталонного изображения. Таким образом, эталонное изображение может быть задано как изображение с nal_ref_flag, равным "1". Эталонное изображение может содержать выборки (то есть значения пикселей), которые могут использоваться для интерпредсказания в процессе декодирования последующих изображений в порядке декодирования.

[0028] В HEVC может существовать больше одного типа эталонного изображения. В качестве одного примера HEVC задает долгосрочное эталонное изображение, которое может быть задано в качестве эталонного изображения, которое помечается как "используемое для долгосрочного эталона". Более того, HEVC также может включать в себя краткосрочные эталонные изображения, хотя методики из данного раскрытия изобретения ориентированы на сигнализацию долгосрочных эталонных изображений. Краткосрочные эталонные изображения выходят за пределы объема данного раскрытия изобретения.

[0029] HEVC описывает методики для сигнализации и использования долгосрочных эталонных изображений (LTRP). Пример традиционной сигнализации LTRP описывается в HEVC WD6. WD6 также описывает принятые методики, связанные с сигнализацией LTRP, включая изменения в сигнализации самых младших разрядов (LSB) у LTRP, семантику синтаксических элементов, связанных с LTRP, и выведение наборов эталонных изображений. Недавние введения в рабочий вариант HEVC также включают в себя методики, которые описывают сигнализацию LTRP в наборах параметров последовательностей (SPS). Введения, связанные с сигнализацией LTRP в SPS, описываются в JCTVC-I0340r2, который введен в HEVC WD7 и описывается под авторством Рамасубраманиан (Ramasubramonian) и др. в документе JCTVC-I0340r2 "Signaling of Long term Reference Pictures in the SPS", 9ое заседание JCT-VC из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC в Женеве, Швейцария, с 27 апреля 2012 г. по 7 мая 2012 г., который доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I0340-v3.zip. Подробности сигнализации LTRP в SPS обобщаются ниже.

[0030] В методиках, описанных в JCTVC-I0340r2, SPS может включать в себя синтаксический элемент типа признака, который указывает, сигнализируются ли LTRP (то есть, использует ли кодировщик видео LTRP для интерпредсказания) для кодированной видеопоследовательности. Если LTRP сигнализируются для кодированной видеопоследовательности, то синтаксические элементы активного SPS или заголовка слайса для кодированной видеопоследовательности могут ссылаться на LTRP, используя некоторое количество LSB в POC для LTRP. Использование только LSB в POC для ссылки на LTRP может повысить эффективность кодирования и уменьшить сложность потока двоичных сигналов кодированного видео. Кодировщик видео сигнализирует количество LSB в LTRP, используемое для ссылки на каждое LTRP, в SPS в первом синтаксическом элементе с последующим списком LSB значений POC у LTRP.

[0031] В кодированной видеопоследовательности заголовок слайса может наследовать или ссылаться на одно или несколько LTRP в SPS. В заголовке слайса кодировщик видео сигнализирует синтаксический элемент типа списка, который включает в себя значения LSB у значений POC для LTRP, которые будут унаследованы от SPS. В дополнение к LTRP, унаследованным от SPS, заголовок слайса также может явно сигнализировать LSB у дополнительных LTRP, которые не наследуются от SPS. Заголовок слайса включает в себя синтаксический элемент, который включает в себя список значений LSB у значений POC для LTRP, явно сигнализированных в заголовке слайса.

[0032] В некоторых случаях два LTRP могут иметь одинаковую последовательность LSB POC, создавая неопределенность касательно того, на какое LTRP ссылается конкретный синтаксический элемент LSB POC. Чтобы выяснить, на какое LTRP ссылается синтаксический элемент, заголовок слайса или SPS может сигнализировать некоторые из самых старших разрядов (MSB) для LTRP, если больше одного эталонного изображения в буфере декодированных изображений (DPB) имеет одинаковые LSB. Синтаксический элемент типа признака используется для указания, сигнализируются ли MSB для LTRP, и сигнализация информации MSB для LTRP, если есть, идет непосредственно за этим признаком. В конечном счете кодировщик видео может кодировать некий признак для указания, может ли текущее изображение использовать сигнализированное LTRP в качестве эталонного изображения. Синтаксис и семантика связанных синтаксических элементов в SPS и заголовке слайса описываются ниже. Для тех синтаксических элементов, которые включаются в синтаксическую таблицу, но никакой семантики для них не предоставляется, семантика является такой же, как в HEVC WD6.

[0033] JCTVC-I0340r2 предоставляет синтаксис и семантику SPS, описанные ниже в Таблице 1:

ТАБЛИЦА 1
seq_parameter_set_rbsp( ) { Дескриптор
num_short_term_ref_pic_sets ue(v)
for( i=0; i<num_short_term_ref_pic_sets; i++)
short_term_ref_pic_set( i )
long_term_ref_pics_present_flag u(1)
if( long_term_ref_pics_present_flag ) {
num_long_term_ref_pics_sps ue(v)
for( i=0; i<num_long_term_ref_pics_sps; i++ )
lt_ref_pic_poc_lsb_sps[ i ] u(v)
}
}

[0034] Семантика синтаксических элементов в SPS, измененная документом JCTVC-I0340r2, описывается ниже:

[0035] num_long_term_ref_pics_sps задает количество долгосрочных эталонных изображений, которые задаются в наборе параметров последовательности. Значение num_long_term_ref_pics_sps находится в диапазоне от 0 до 32 включительно.

[0036] lt_ref_pic_poc_lsb_sps[ i ] задает самые младшие разряды счетчика последовательности изображений у i-го долгосрочного эталонного изображения, заданного в наборе параметров последовательности. Количество разрядов, используемое для представления lt_ref_pic_poc_lsb_sps[ i ], равно log2_max_pic_order_cnt_lsb_minus4 + 4.

[0037] JCTVC-I0340r2 также изменил синтаксис и семантику заголовка слайса, как описано ниже в Таблице 2:

ТАБЛИЦА 2
slice_header( ) { Дескриптор
if( IdrPicFlag ) {
idr_pic_id ue(v)
no_output_of_prior_pics_flag u(1)
} else {
pic_order_cnt_lsb u(v)
short_term_ref_pic_set_sps_flag u(1)
if( !short_term_ref_pic_set_sps_flag )
short_term_ref_pic_set( num_short_term_ref_pic_sets )
else
short_term_ref_pic_set_idx u(v)
if( long_term_ref_pics_present_flag ) {
num_long_term_pics ue(v)
if( num_long_term_ref_pics_sps )
num_long_term_sps ue(v)
for( i=0; i<num_long_term_sps + num_long_term_pics; i++ ) {
if ( i<num_long_term_sps )
long_term_idx_sps[ i ] ue(v)
else
poc_lsb_lt[ i ] u(v)
delta_poc_msb_present_flag[ i ] u(1)
if( delta_poc_msb_present_flag[ i ] )
delta_poc_msb_cycle_lt[ i ] ue(v)
used_by_curr_pic_lt_flag[ i ] u(1)
}
}
}
}

[0038] Семантика синтаксических элементов в заголовке слайса, измененная документом JCTVC-I0340r2, описывается ниже:

[0039] num_long_term_pics задает количество долгосрочных эталонных изображений, которые нужно включить в набор долгосрочных эталонных изображений в текущем изображении и которые непосредственно сигнализируются в заголовке слайса. Значение num_long_term_pics находится в диапазоне от 0 до sps_max_dec_pic_buffering[ sps_max_temporal_layers_minus1 ] - NumNegativePics[ StRpsIdx ] - NumPositivePics[ StRpsIdx ] - num_long_term_sps включительно. Когда отсутствует, кодировщик видео предполагает значение num_long_term_pics равным 0.

[0040] num_long_term_sps задает количество долгосрочных эталонных изображений, которые задаются в активном наборе параметров последовательности и которые нужно включить в набор долгосрочных эталонных изображений в текущем изображении. Если num_long_term_sps отсутствует, то кодировщик видео предполагает его значение равным 0. Значение num_long_term_sps находится в диапазоне от 0 до Min( num_long_term_ref_pics_sps, max_dec_pic_buffering[ max_temporal_layers_minus1 ] - NumNegativePics[ StRpsIdx ] - NumPositivePics[ StRpsIdx ] - num_long_term_pics ) включительно.

[0041] long_term_idx_sps[ i ] задает индекс в списке долгосрочных эталонных изображений, заданных в активном наборе параметров последовательности, у i-го долгосрочного эталонного изображения, унаследованного от указанного набора параметров последовательности в набор долгосрочных эталонных изображений в текущем изображении. Значение long_term_idx_sps[ i ] находится в диапазоне от 0 до num_long_term_ref_pics_sps - 1 включительно.

[0042] poc_lsb_lt[ i ] задает значение самых младших разрядов значения счетчика последовательности изображений у i-го долгосрочного эталонного изображения, которое включается в набор долгосрочных эталонных изображений в текущем изображении. Длина синтаксического элемента poc_lsb_lt[ i ] равна log2_max_pic_order_cnt_lsb_minus4 + 4 разряда. Для любых значений j и k в диапазоне от num_long_term_sps до num_long_term_pics + num_long_term_sps - 1 включительно, если j меньше k, то poc_lsb_lt[ j ] не должен быть меньше poc_lsb_lt[ k ].

[0043] Переменная PocLsbLt[ i ] выводится следующим образом.

if( i<num_long_term_sps )

PocLsbLt[ i ]=lt_ref_pic_poc_lsb_sps[ long_term_idx_sps[ i ] ]

else

PocLsbLt[ i ]=poc_lsb_lt[ i ].

[0044] То есть для индексов от нуля до num_long_term_sps значение PocLsbLt[ i ] получается с использованием индекса в lt_ref_pic_poc_lsb_sps, который сигнализируется в заголовке слайса. Для индексов PocLsbLt больше num_long_term_sps значение PocLsbLt[ i ] равно LSB POC у LTRP, явно сигнализированных в заголовке слайса.

[0045] delta_poc_msb_present_flag[ i ], равный 1, задает, что присутствует синтаксический элемент delta_poc_msb_cycle_lt[ i ]. delta_poc_msb_present_flag[ i ], равный 0, задает, что delta_poc_msb_cycle_lt[ i ] отсутствует, и поэтому никакие MSB не сигнализируются для заголовка слайса, потому что имеется только одно эталонное изображение в DPB, имеющее LSB, равные PocLsbLt[ i ]. delta_poc_msb_present_flag[ i ] равен 1, когда имеется больше одного эталонного изображения в буфере декодированных изображений с самыми младшими разрядами значения счетчика последовательности изображений, равными PocLsbLt[ i ].

[0046] delta_poc_msb_cycle_lt[ i ] используется для определения значения самых старших разрядов значения счетчика последовательности изображений у i-го долгосрочного эталонного изображения, которое включается в набор долгосрочных эталонных изображений в текущем изображении. Кодировщик видео использует значение delta_poc_msb_cycle_lt[ i ] для определения MSB у i-го LTRP.

[0047] Переменная DeltaPocMSBCycleLt[ i ] выводится, как описано в следующем псевдокоде:

if(i= = 0 | | PocLsbLt[ i−1 ] != PocLsbLt[ i ] )

DeltaPocMSBCycleLt[ i ]=delta_poc_msb_cycle_lt[ i ]

else

DeltaPocMSBCycleLt[ i ] = delta_poc_msb_cycle_lt[ i ] +

DeltaPocMSBCycleLt[ i − 1 ]

[0048] Значение DeltaPocMSBCycleLt[ i ] * MaxPicOrderCntLsb + pic_order_cnt_lsb - PocLsbLt[ i ] находится в диапазоне от 1 до 224 - 1 включительно для методик, соответствующих JCTVC-I0340r2.

[0049] used_by_curr_pic_lt_flag[ i ], равный 0, задает, что i-е долгосрочное эталонное изображение, включенное в набор долгосрочных эталонных изображений в текущем изображении, не используется текущим изображением для эталона. Таким образом, на основе значений used_by_curr_pic_lt_flag[ i ] подмножество эталонных изображений, унаследованных от SPS или явно сигнализированных в заголовке слайса, может использоваться текущим изображением для эталона.

[0050] JCTVC-I0340r2 также изменил процесс декодирования для набора эталонных изображений. В соответствии с JCTVC-I0340r2 этот процесс вызывается один раз на изображение после декодирования заголовка слайса, но перед декодированием любой единицы кодирования и перед процессом декодирования для построения списка эталонных изображений слайса, как задано в подпункте 8.3.3 в HEVC WD6. Процесс может привести к пометке одного или нескольких эталонных изображений как "неиспользуемых для эталона". JCTVC-I0340r2 включает в себя следующие модификации в HEVC WD6:

for( i=0, j=0, k=0; i<NumNegativePics[ StRpsIdx ] ; i++ )

if( UsedByCurrPicS0[ StRpsIdx ][ i ] )

PocStCurrBefore[ j++ ] = PicOrderCntVal + DeltaPocS0[ StRpsIdx ][ i ]

else

PocStFoll[ k++ ] = PicOrderCntVal + DeltaPocS0[ StRpsIdx ][ i ]

NumPocStCurrBefore = j

for( i=0, j=0; i<NumPositivePics[ StRpsIdx ]; i++ )

if( UsedByCurrPicS1[ StRpsIdx ][ i ] )

PocStCurrAfter[ j++ ] = PicOrderCntVal + DeltaPocS1[ StRpsIdx ][ i ]

else

PocStFoll[ k++ ] = PicOrderCntVal + DeltaPocS1[ StRpsIdx ][ i ]

NumPocStCurrAfter = j

NumPocStFoll=k (8-5)

for( i=0, j=0, k=0; i<num_long_term_sps + num_long_term_pics; i++ )

if( delta_poc_msb_present_flag[ i ] )

if( used_by_curr_pic_lt_flag[ i ] )

PocLtCurr[ j++ ] = PicOrderCntVal − DeltaPocMSBCycleLt[ i ] * MaxPicOrderCntLsb −

pic_order_cnt_lsb + PocLsbLt[ i ]

else

PocLtFoll[ k++ ] = PicOrderCntVal − DeltaPocMSBCycleLt[ i ] * MaxPicOrderCntLsb − pic_order_cnt_lsb + PocLsbLt[ i ]

else

if( used_by_curr_pic_lt_flag[ i ] )

PocLtCurr[ j++ ] = PocLsbLt[ i ]

else

PocLtFoll[ k++ ] = PocLsbLt[ i ]

NumPocLtCurr = j

NumPocLtFoll = k

[0051] Одна из возможных проблем, ассоциированных с существующим исполнением для сигнализации LTRP, относится к семантике признака delta_poc_msb_present_flag[ i ]. В последней семантике, которая описана выше, delta_poc_msb_present_flag[ i ] равен 1, когда имеется больше одного эталонного изображения в буфере декодированных изображений с самыми младшими разрядами значения счетчика последовательности изображений, равными PocLsbLt[ i ]. Значение delta_poc_msb_present_flag[ i ] зависит, таким образом, от эталонных изображений в буфере декодированных изображений (DPB). Даже если в DPB имеются эталонные изображения, которые помечаются как "неиспользуемые для эталона", то значение delta_poc_msb_present_flag[ i ] тоже будет зависеть от тех изображений. Это может быть нежелательным, так как изображения в DPB, которые помечаются "неиспользуемыми для эталона", присутствуют и лишь ожидают вывода, и больше не используются для эталона. Присутствуют ли такие изображения в DPB, обычно зависит от расписания вывода декодера.

[0052] Нужно читывать, что поток двоичных сигналов, системы и приложения могут применять разные расписания вывода на основе доступной памяти, которая может использоваться для хранения декодированных изображений. Таким образом, подсчет таких изображений может не только излишне повысить вероятность требования, что значение delta_poc_msb_present_flag[ i ] должно быть 1, соответственно требуя больше разрядов для сигнализации LTRP, но также может создать проблемы соответствия и функциональной совместимости потока двоичных сигналов. В качестве примера, когда декодер фактически использует больше памяти DPB, чем минимально необходимая, соответствующий поток двоичных сигналов может оказаться несоответствующим декодеру, так как в DPB может присутствовать больше изображений, ожидающих только вывода и больше не используемых для эталона (по сравнению с декодером, который использует точно минимально необходимую память DPB), и таким образом, декодер может быть даже не способен правильно декодировать поток двоичных сигналов.

[0053] Другая возможная проблема с описанной выше семантикой относится к сигнализации long_term_idx_sps[ i ]. Семантика, которая описана выше, не ограничивает порядок, в котором сигнализируются LTRP, унаследованные от SPS. Это отсутствие ограничения упорядочения также может быть неэффективным, потому что кодировщик видео может использовать больше разрядов, чем необходимо для сигнализации информации, например MSB и LSB у LTRP. В качестве примера предположим, что в SPS сигнализируются MaxPicOrderCntLsb, равный 256, и два LSB - 0 и 10. Для изображения с POC 2560 предположим, что кодировщик видео должен сигнализировать три LTRP, имеющие POC 0, 10 и 256 соответственно. Для изображения с POC 0 и 256 видеокодеру, соответствующему вышеописанным методикам сигнализации LTRP, пришлось бы сигнализировать циклы MSB для обоих LTRP. Однако методики из данного раскрытия изобретения могут повысить эффективность такой сигнализации. В частности, некоторые неэффективности демонстрируются с помощью Таблицы 3 ниже. А именно, Таблица 3 предоставляет пример неэффективной сигнализации LTRP, унаследованных от соответствующего SPS. В этом примере "i" описывает конкретное долгосрочное эталонное изображение, POC LTRP описывает значение POC у соответствующего долгосрочного эталонного изображения, PocLsbLt описывает самые младшие разряды (LSB) у значения POC для долгосрочного эталонного изображения, унаследованного от SPS, delta_poc_msb_present_flag указывает, сигнализируется ли delta_poc_msb_cycle_lt, и delta_poc_msb_cycle_lt используется для определения значения самых старших разрядов (MSB) у значения POC для долгосрочного эталонного изображения, когда сигнализируется.

ТАБЛИЦА 3
i 0 1 2
LTRP POC 0 10 256
PocLsbLt 0 10 0
delta_poc_msb_present_flag 1 0 1
delta_poc_msb_cycle_lt 10 - 9

[0054] Данное раскрытие изобретения описывает методики для сигнализации идентифицирующей информации для долгосрочных эталонных изображений, которые в некоторых случаях могут обеспечить преимущества по сравнению с описанными выше методиками сигнализации. В некоторых примерах методики из данного раскрытия изобретения могут уменьшить количество разрядов, используемых для сигнализации синтаксических элементов, включающих в себя MSB у LTRP. Одним более подходящим способом сигнализации изображений может быть задание порядка кодирования изображений в LTRP, то есть порядка, в котором LTRP кодируются в poc_lsb_lt [ i ], так что LSB у LTRP являются либо неубывающими (либо невозрастающими, практически с аналогичным влиянием на производительность), как описано в Таблице 4. Кодирование LSB у LTRP в неубывающем или невозрастающем порядке в некоторых примерах может привести к тому, что кодировщик видео сигнализирует меньше разрядов MSB. Упорядочивая LTRP в невозрастающем или неубывающем порядке LSB, кодировщик видео будет последовательно сигнализировать любые LTRP с равными LSB в порядке кодирования изображений у синтаксического элемента poc_lsb_lt.

[0055] Если два LTRP имеют равные значения LSB, то кодировщик видео может кодировать данные, представляющие MSB по меньшей мере у одного из двух LTRP (например, синтаксический элемент delta_poc_msb_cycle_lt). Кодировщик видео может кодировать данные, представляющие MSB, в виде разности значения MSB у второго LTRP и MSB у первого LTRP. Чтобы определить значение MSB у LTRP из сигнализированных значений delta_poc_msb_cycle_lt[ i ], кодировщик видео может вычислить переменную DeltaPocMSBCycleLt[ i ] как сумму delta_poc_msb_cycle_lt [ i ] и delta_poc_msb_cycle_lt [ i - 1]. В случае, где нет предыдущего LTRP в порядке кодирования изображений, кодировщик видео может сигнализировать разность MSB у LTRP и MSB у текущего изображения в значении синтаксического элемента delta_poc_msb_cycle_lt.

[0056] В качестве примера, используя предыдущие методики для сигнализации MSB LTRP, проиллюстрированные в Таблице 3, кодировщик видео может сигнализировать LTRP со значением POC, равным 0, в виде первого LTRP в порядке подсчета изображений (i = 0), и значение delta_poc_msb_cycle_lt в виде 10 для POC 0. Кодировщик видео может сигнализировать LTRP со значением POC 256 в виде третьего LTRP в порядке подсчета изображений (то есть i = 2), и значение delta_poc_msb_cycle_lt в виде 9 для LTRP.