УПРАВЛЕНИЕ БУФЕРОМ ДЕКОДИРОВАННЫХ ИЗОБРАЖЕНИЙ Российский патент 2016 года по МПК H04N19/105 H04N19/463 

Описание патента на изобретение RU2587420C2

По данной заявке испрашивается приоритет:

предварительной заявки США № 61/538,787, которая подана 23 сентября 2011 года;

предварительной патентной заявки США № 61/539,433, которая подана 26 сентября 2011 года; и

предварительной патентной заявки США № 61/542,034, которая подана 30 сентября 2011 года, полное содержание каждой из которых включено в данный документ по ссылке в полном объеме.

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

Это раскрытие относится к кодированию видео и, более конкретно, к способам кодирования видеоданных.

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

Поддержку цифрового видео можно встраивать в широкий диапазон устройств, включая цифровое телевидение, цифровые системы прямого вещания, беспроводные широковещательные системы, персональные цифровые помощники (PDA), портативные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые медиапроигрыватели, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства видеотелеконференций, устройства потоковой передачи видео и т.п. В цифровых видеоустройствах реализуют способы сжатия видео, такие как те, что описаны в стандартах, определяемых MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Advanced Video Coding (AVC), разрабатываемом в настоящее время стандарте High Efficiency Video Coding (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию о цифровом видео более эффективно посредством реализации таких способов сжатия видео.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На фиг. 9 представлена блок-схема, которая иллюстрирует примерную операцию удаления декодированного изображения.

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

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

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

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

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

Для присвоения метки опорному изображению, максимальное число, обозначаемое как M (num_ref_frames), опорных изображений, используемых для интер-предсказания указывают в наборе параметров активной последовательности. Когда опорное изображение декодируют, ему присваивают метку «используемое в качестве опорного». Если декодирование опорного изображения привело к больше чем M изображений, которым присвоена метка «используемое в качестве опорного», по меньшей мере одному изображению необходимо присваивать метку «неиспользуемое в качестве опорного». Тогда процесс удаления DPB удаляет изображения, которым присвоена метка «неиспользуемые в качестве опорных» из DPB, если они также не требуются для вывода.

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

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

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

Кодер видео также может иметь задание на создание списков опорных изображений, которые указывают, какие опорные изображения можно использовать для целей интер-предсказания. Два из этих списков опорных изображений обозначают как Список 0 (List 0) и Список 1 (List 1), соответственно. Кодер видео сначала использует способы создания по умолчанию для того, чтобы создавать Список 0 и Список 1 (например, предварительно сконфигурированные схемы создания для создания Списка 0 и Списка 1). Необязательно, после того, как создают начальный Список 0 и Список 1, декодер видео может декодировать синтаксические элементы, когда присутствуют, которые сообщают декодеру видео модифицировать начальные Список 0 и Список 1.

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

Например, создание списка опорных изображений для первого или второго списка опорных изображений из изображения с двойным предсказанием включает две стадии: инициализация списка опорных изображений и модификация списка опорных изображений (также обозначаемая как переупорядочивание списка опорных изображений). Инициализация списка опорных изображений может представлять собой неявный механизм, который помещает опорные изображения в памяти опорных изображений (также известную как буфер декодированных изображений) в список, основываясь на порядке значений POC (порядковый номер изображения, совпадает с порядком отображения изображения). Механизм переупорядочивания списка опорных изображений может модифицировать положение изображения, которое поместили в список во время инициализации списка опорных изображений, на какое-либо новое положение, или поместить какое-либо опорное изображение в памяти опорных изображений в каком-либо положении, хоть изображение и не относится к инициализированному списку. Некоторые изображения после переупорядочивания (модификации) списка опорных изображений, можно помещать в самое дальнее положение в списке. Однако если положение изображения превышает число активных опорных изображений в списке, изображение не считают в качестве записи конечного списка опорных изображений. Число активных опорных изображений можно передавать в заголовок слайса для каждого списка.

Способы, описанные в этом раскрытии, можно применять к различным стандартам кодирования видео. Примеры стандартов кодирования видео включают ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известен как ISO/IEC MPEG-4 AVC), включая их расширения Scalable Video Coding (SVC) и Multiview Video Coding (MVC). Кроме того, имеет место новый стандарт кодирования видео, а именно High Efficiency Video Coding (HEVC), который разрабатывает Joint Collaboration Team on Video Coding (JCT-VC) из ITU-T Video Coding Experts Group (VCEG) и ISO/ IEC Motion Picture Experts Group (MPEG).

Только в иллюстративных целях способы описаны в контексте стандарта HEVC. Актуальный Working Draft (WD) для HEVC, далее в настоящем документе обозначаемый как HEVC WD8, с 20 июля 2012 года доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.

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

В соответствии со способами, описанными в этом раскрытии, списки опорных изображений создают из набора опорных изображений. Набор опорных изображений определяют в качестве набора опорных изображений, связанных с изображением, состоящим из всех опорных изображений, которые предшествуют связанному изображению в порядке декодирования, которые можно использовать для интер-предсказания блоков в связанном изображении или каком-либо изображении после связанного изображения в порядке декодирования, например, до следующего изображения моментального обновления декодирования (IDR) или изображения с доступом по битой ссылке (BLA). Другими словами, опорным изображениям в наборе опорных изображений могут требоваться следующие характеристики: (1) все они предшествуют текущему изображению в порядке декодирования, и (2) их можно использовать для интер-предсказания текущего изображения и/или интер-предсказания какого-либо изображения, следующего за текущим изображением в порядке декодирования, и в некоторых примерах, до следующего IDR изображения или BLA изображения. Могут иметь место другие альтернативные определения набора опорных изображений, которые представлены ниже.

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

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

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

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

После определения идентификаторов (например, значений POC) опорных изображений в наборе опорных изображений или его поднаборах, декодер видео может создавать поднаборы опорных изображений. Как описано более подробно ниже, декодер видео может создавать шесть поднаборов опорных изображений, несмотря на то, что для декодера видео может быть возможно создавать больше или меньше поднаборов опорных изображений.

Эти шесть поднаборов опорных изображений носят названия: RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Поднабор опорных изображений RefPicSetStCurr0 можно обозначать как поднабор опорных изображений RefPicSetStCurrBefore, а поднабор опорных изображений RefPicSetStCurr1 можно обозначать как поднабор опорных изображений RefPicSetStCurrAfter.

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

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

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

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

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

После создания поднаборов опорных изображений, декодер видео может упорядочивать поднаборы опорных изображений в другом порядке для того, чтобы получать набор опорных изображений. В качестве одного из примеров, порядок набора опорных изображений может представлять собой RefPicSetStCurr0, RefPicSetSetCurr1, RefPicSetFoll0, RefPicSetFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Однако, другой порядок в поднаборах может быть возможен для того, чтобы получать набор опорных изображений. Например, в качестве другого примера, порядок набора опорных изображений может представлять собой поднабор опорных изображений RefPicSetStCurr0, за которым следует набор опорных изображений RefPicSetStCurr1, за которым следует поднабор опорных изображений RefPicSetLtCurr, за которым следует поднабор опорных изображений RefPicSetStFoll0, за которым следует поднабор опорных изображений RefPicSetFoll1, и за которым следует поднабор опорных изображений RefPicSetLtFoll.

В соответствии со способами, описанными в этом раскрытии, поднаборы RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr включают все опорные изображения, которые можно использовать в интер-предсказании блока на текущем изображении и которые можно использовать в интер-предсказании одного или более изображений, следующих за текущим изображением в порядке декодирования. Поднаборы efPicSetStFoll0, RefPicSetStFoll1 и RefPicSetLtFoll включают все опорные изображения, которые не используют в интер-предсказании блока на текущем изображении, но которые можно использовать в интер-предсказании одного или более изображений, следующих за текущим изображением в порядке декодирования.

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

В определенных способах, описанных в этом раскрытии, декодеру видео может не требоваться присваивать метки декодированным изображениям «используемые в качестве опорных», «неиспользуемые в качестве опорных», «используемые в качестве краткосрочных опорных» или «используемые в качестве долгосрочных опорных». Скорее, требуется ли интер-предсказание для декодированного изображения, которое хранят в DPB, указывают с помощью того, включено ли оно в набор опорных изображений текущего изображения. В альтернативных примерах, может быть возможно, что декодер видео присваивает метки декодированным изображениям «используемые в качестве опорных», «неиспользуемые в качестве опорных», «используемые в качестве краткосрочных опорных» или «используемые в качестве долгосрочных опорных». В этих примерах, после того, как декодер видео декодирует изображение, оно представляет собой опорное изображение и ему присвоена метка «используемое в качестве опорного». Затем, после вызова процесса для получения набора опорных изображений, всем опорным изображениям, хранимым в DPB, но не включенным в набор опорных изображений текущего изображения, присваивают метки «неиспользуемые в качестве опорных», перед возможным удалением декодированных изображений из DPB. Таким образом, нужно ли декодированное изображение, хранимое в DPB, для интер-предсказания, можно указывать посредством того, присваивают ли ему метку «используемое в качестве опорного».

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

Могут иметь место различные пути, по которым декодер видео может создавать списки опорных изображений. Способы, описанные в этом раскрытии, предоставляют механизм, посредством которого декодер видео может создавать списки опорных изображений без необходимости переупорядочивать опорные изображения, подлежащие включению в (начальный) список опорных изображений. Например, декодер видео можно выполнять с возможностью реализации способа создания опорного списка по умолчанию, в котором декодер видео использует поднаборы опорных изображений для создания начальных списков опорных изображений. Затем, если модификация списка опорных изображений не требуется, конечные списки опорных изображений могут представлять собой то же, что и начальные списки опорных изображений, без необходимости какого-либо дополнительного переупорядочивания списков опорных изображений.

В некоторых примерах способы, описанные в этом раскрытии, могут быть связаны с созданием списков опорных изображений таким образом, чтобы не было незавершенных записей. Например, способы могут повторно добавлять опорные изображения в список опорных изображений из одного или более поднаборов опорных изображений. Например, после того, как декодер видео добавляет опорные изображения из одного или более поднаборов опорных изображений для создания начального списка опорных изображений, декодер видео может определять, что число записей в списке опорных изображений меньше максимального допустимого числа записей. Если число записей в списке опорных изображений меньше максимального числа допустимого числа записей, декодер видео может повторно добавлять по меньшей мере одно из опорных изображений из одного из поднаборов опорных изображений, используемых для того, чтобы создавать список опорных изображений, в список опорных изображений. Это повторное добавление (также обозначаемое как повторное составление списка) опорного изображения может происходить в различных местоположениях в списках опорных изображений, по сравнению с местоположением, где декодер видео впервые добавлял опорное изображение.

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

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

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

На фиг. 1 представлена блочная диаграмма, которая иллюстрирует примерную систему 10 кодирования и декодирования видео, в которой можно использовать способы, описанные в этом раскрытии. В целом, набор опорных изображений определяют в качестве набора опорных изображений, связанных с изображением, состоящим из всех опорных изображений, которые предшествуют связанному изображению в порядке декодирования, которые можно использовать для интер-предсказания связанного изображения или какого-либо изображения после связанного изображения в порядке декодирования. В некоторых примерах опорные изображения, которые предшествуют связанному изображению, могут представлять собой опорные изображения, до следующего изображения моментального обновления декодирования (IDR) или изображения с доступом по битой ссылке (BLA). Другими словами, все опорные изображения в наборе опорных изображений могут предшествовать текущему изображению в порядке декодирования. Также опорные изображения в наборе опорных изображений можно использовать для интер-предсказания текущего изображения и/или интер-предсказания какого-либо изображения после текущего изображения в порядке декодирования, до следующего изображения IDR или изображения BLA.

Могут иметь место другие альтернативные определения набора опорных изображений. Например, набор опорных изображений может представлять собой набор опорных изображений, связанных с изображением, состоящим из всех опорных изображений, за исключением самого связанного изображения, которые можно использовать для интер-предсказания связанного изображения или какого-либо изображения после связанного изображения в порядке декодирования и которые имеют temporal_id меньше чем или равный таковому у связанного изображения. Temporal_id может представлять собой значение временной идентификации. Значение временной идентификации может представлять собой иерархическое значение, которое показывает, какие изображения можно использовать для кодирования текущего изображения. В целом, изображение с конкретным значением temporal_id возможно представляет собой опорное изображение для изображений с равными или большими значениями temporal_id, но не наоборот. Например, изображение со значением temporal_id, равным 1, возможно представляет собой опорное изображение для изображений со значениями temporal_id, равными 1, 2, 3, …, но не для изображения со значением temporal_id, равным 0.

Наименьшее значение temporal_id также может указывать наименьшую скорость отображения. Например, если декодер видео только декодировал изображения со значениями temporal_id, равными 0, скорость отображения может составлять 7,5 изображения в секунду. Если декодер видео только декодировал изображения со значениями temporal_id, равными 0 и 1, скорость отображения может составлять 15 изображений в секунду, и так далее.

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

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

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

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

Как показано на фиг. 1, система 10 содержит устройство 12 источника, которое генерирует кодированное видео для декодирования посредством устройство 14 назначения. Каждое из устройства 12 источника и устройства 14 назначения может представлять пример устройства кодирования видео. Устройство 12 источника может передавать кодированное видео устройству 14 назначения через канал 16 связи или может хранить кодированное видео в запоминающем носителе 17 или на файловом сервере 19 так, что устройство 14 назначения может по желанию осуществлять доступ к кодированному видео.

Устройство 12 источника и устройство 14 назначения могут содержать какие-либо из широкого диапазона устройств, включая беспроводную телефонную трубку, такую как так называемые смартфоны, так называемые умные планшеты или другие такие беспроводные устройства, оборудованные для беспроводной связи. Дополнительные примеры устройства 12 источника и устройства 14 назначения включают, но не ограничиваясь этим, цифровое телевидение, устройство в системе цифрового прямого вещания, устройство в беспроводной широковещательной системе, персональные цифровые помощники (PDA), портативный компьютер, настольный компьютер, планшетный компьютер, устройство для чтения электронных книг, цифровую камеру, цифровое записывающее устройство, цифровой медиапроигрыватель, видеоигровое устройство, видеоигровую консоль, сотовый радиотелефон, спутниковый радиотелефон, устройство видеотелеконференций и устройство потоковой передачи видео, устройство беспроводной связи или тому подобное.

Как указано выше, во многих случаях, устройство 12 источника и/или устройство 14 назначения можно оборудовать для беспроводной связи. Таким образом, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводного и проводного каналов, подходящую для передачи кодированных видеоданных. Аналогичным образом, устройство 14 назначения может осуществлять доступ к файловому серверу 19 через какое-либо стандартное соединение для передачи данных, включая соединение с интернетом. Это может включать беспроводной канал (например, соединение по Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или комбинацию этих двух, которая подходит для осуществления доступа к кодированным видеоданным, хранимым на файловом сервере.

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

В примере на фиг. 1, устройство 12 источника содержит источник 18 видео, кодер 20 видео, модулятор/демодулятор (MODEM) 22 и интерфейс 24 вывода. В устройстве 12 источника, источник 18 видео может содержать источник, такой как устройство захвата видео, такое как видеокамера, видеоархив, содержащий предварительно захваченное видео, интерфейс подачи видео для того, чтобы принимать видео от поставщика видеоконтента и/или компьютерную графическую систему для генерации компьютерных графических данных в качестве источника видео или комбинацию таких источников. В качестве одного из примеров, если источник 18 видео представляет собой видеокамеру, устройство 12 источника и устройство 14 назначения могут формировать так называемый камерофон или видеофон. Однако, способы, описанные в этом раскрытии, можно применять к кодированию видео в целом, и можно применять к беспроводным и/или проводным применениям.

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

Захваченное, предварительно захваченное или сгенерированное компьютером видео, которое кодируют посредством кодера видео 20, также можно хранить в запоминающем носителе 17 или на файловом сервере 19 для дальнейшего использования. Запоминающий носитель 17 может включать диски Blu-ray, DVD, CD-ROM, флэш-память или какую-либо другую подходящий цифровой запоминающий носитель для хранения кодированного видео. Затем устройство 14 назначения может осуществлять доступ к кодированному видео, хранимому в запоминающем носителе 17, для декодирования и воспроизведения.

Файловый сервер 19 может относиться к какому-либо типу сервера, способному хранить кодированное видео и передавать это кодированное видео на устройство 14 назначения. Пример файловых серверов включает веб-сервер (например, для веб-сайта), сервер FTP, подключаемые к сети устройства для хранения (NAS), привод локального диска или устройства какого-либо другого типа, способные хранить кодированные видеоданные и передавать их на устройство назначения. Передача кодированных видеоданных с файлового сервера 19 может представлять собой потоковую передачу, передачу загрузки или комбинацию этих двух. Устройство 14 назначения может осуществлять доступ к файловому серверу 19 через какие-либо стандартные соединения для передачи данных, включая соединение с интернетом. Оно может включать беспроводной канал (например, соединение по Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.д.) или комбинацию этих двух, которая подходит для осуществления доступа к кодированным видеоданным, хранимым на файловом сервере.

Устройство 14 назначения, в примере на фиг. 1, содержит интерфейс 26 ввода, модем 28, декодер 30 видео и устройство 32 отображения. Интерфейс 26 ввода устройства 14 назначения принимает информацию через канал 16, в качестве одного из примеров, или из запоминающего носителя 17 или файлового сервера 17, в качестве альтернативных примеров, и модем 28 демодулирует информацию для того, чтобы получать демодулированный битовый поток для декодера 30 видео. Демодулированный битовый поток может содержать различную синтаксическую информацию, которую генерирует кодер видео 20 для использования декодером 30 видео при декодировании видеоданных. Такой синтаксис также можно включать в кодированные видеоданные, хранимые в запоминающем носителе 17 или на файловом сервере 19. В качестве одного из примеров, синтаксис можно встраивать в кодированные видеоданные, несмотря на то, что аспекты по этому раскрытию не следует рассматривать как ограниченные таким требованием. Синтаксическая информация, которую определяет кодер видео 20, которую также использует декодер 30 видео, может содержать синтаксические элементы, которые описывают характеристики и/или обработку видеоблоков, таких как древовидные единицы кодирования (CTU), древовидные блоки кодирования (CTB), единицы предсказания (PU), единицы кодирования (CU) или другие единицы кодированного видео, например, видеослайсы, видеоизображения и видеопоследовательности или группы изображений (GOP). Каждый из кодера 20 видео и декодера 30 видео может формировать часть соответствующего кодера-декодера (КОДЕР-ДЕКОДЕР), который способен кодировать или декодировать видеоданные.

Устройство 32 отображения может быть интегрировано в устройство 14 назначения или может быть внешним по отношению к нему. В некоторых примерах, устройство 14 назначения может содержать интегрированное устройство отображения и также быть выполненным с возможностью сопряжения с внешним устройством отображения. В других примерах устройство 14 назначения может представлять собой устройство отображения. В целом, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать какое-либо из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройства отображения других типов.

В примере на фиг. 1, канал 16 связи может содержать какую-либо беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, или какую-либо комбинацию беспроводных и проводных сред. Канал 16 связи может формировать часть пакетной сети, такой как локальная сеть, крупномасштабная сеть или глобальная сеть, такая как интернет. Канал 16 связи в целом представляет любую подходящую среду связи или совокупность различных сред связи для передачи видеоданных от устройства 12 источника к устройству 14 назначения, включая любую подходящую комбинацию проводных или беспроводных сред. Канал 16 связи может содержать маршрутизаторы, коммутаторы, базовые станции или какое-либо другое оборудование, которое можно использовать для того, чтобы содействовать связи между устройством 12 источника и устройством 14 назначения.

Кодер 20 видео и декодер 30 видео могут работать в соответствии со стандартом сжатия видео, таким как ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая их расширения Scalable Video Coding (SVC) и Multiview Video Coding (MVC). Кроме того, имеет место новый стандарт кодирования видео, а именно стандарт High Efficiency Video Coding (HEVC), в настоящее время разрабатываемый в Joint Collaboration Team on Video Coding (JCT-VC) из ITU-T Video Coding Experts Group (VCEG) и ISO/IEC Motion Picture Experts Group (MPEG). Актуальный Working Draft (WD) для HEVC, далее в настоящем документе обозначаемый как HEVC WD8, с 20 июля 2012 года доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.

Однако способы по этому раскрытию не ограничены каким-либо конкретным стандартом кодирования. Только в иллюстративных целях, способы описаны в соответствии со стандартом HEVC.

Несмотря на то, что не показано на фиг. 1, в некоторых аспектах каждый из кодера 20 видео и декодера 30 можно интегрировать с кодером и декодером аудио, и они могут включать подходящие блоки MUX-DEMUX или другое аппаратное обеспечение и программное обеспечение, чтобы иметь дело с кодированием как аудио, так и видео в обыкновенный поток данных или разделять потоки данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол пользовательских датаграмм (UDP).

Каждый из кодера 20 видео и декодера 30 видео можно реализовать в виде какого-либо из множества подходящих схем кодера, таких как один или более процессоров, включая микропроцессоры, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретную логику, программное обеспечение, аппаратное обеспечение, встроенное программное обеспечение или какие-либо их сочетания. Когда способы реализуют частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем некратковременном компьютерно-читаемом носителе и исполнять инструкции на аппаратном обеспечении с использованием одного или более процессоров для того, чтобы осуществлять способы по этому раскрытию.

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

Кроме того, способы, описанные в этом раскрытии, могут относиться к кодеру 20 видео, который передает информацию. Когда кодер 20 видео передает информацию, способы по этому раскрытию в целом относятся к какому-либо образу действия, в котором кодер 20 видео предоставляет информацию. Например, когда кодер 20 видео передает синтаксические элементы декодеру 30 видео, это может обозначать, что кодер 20 видео передавал синтаксические элементы декодеру 30 видео через интерфейс 24 вывода и канал 16 связи, или что кодер 20 видео сохранял синтаксические элементы через интерфейс 24 вывода в запоминающем носителе 17 и/или на файловом сервере 19 для возможного считывания декодером 30 видео. Таким образом, передачу от кодера 20 видео к декодеру 30 видео не следует интерпретировать как требующую передачу от кодера 20 видео, которую незамедлительно принимает декодер 30 видео, несмотря на то, что это может быть возможным. Скорее, передачу от кодера 20 видео к декодеру 30 видео следует интерпретировать как какой-либо способ, используя который кодер 20 видео предоставляет информацию для возможного считывания декодером 30 видео, или непосредственно или через промежуточный накопитель (например, в запоминающем носителе 17 и/или на файловом сервере 19).

Кодер 20 видео и декодер 30 видео можно выполнять с возможностью реализации примерных способов, описанных в этом раскрытии, для получения набора опорных изображений. Например, декодер 30 видео может вызывать процесс для того, чтобы получать набор опорных изображений по одному разу на изображение. Декодер 30 видео может вызывать процесс для того, чтобы получать набор опорных изображений после декодирования заголовка слайса, но перед декодированием какой-либо единицы кодирования и перед процессом декодирования для создания списка опорных изображений слайса.

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

Существует множество различных путей, по которым кодер 20 видео может передавать синтаксические элементы в кодированном битовом потоке, который декодер 30 видео может использовать для получения набора опорных изображений. Например, кодер 20 видео может передавать синтаксические элементы в наборе параметров изображения (PPS), наборе параметров последовательности (SPS), заголовке изображения (если он имеет место), заголовке слайса или каком-либо их сочетании. Только в иллюстративных целях, кодер 20 видео может передавать синтаксические элементы с использованием SPS, PPS и заголовка слайса, как описано более подробно.

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

Могут иметь место различные пути, по которым декодер 30 видео может определять идентификаторы для изображений, которые относятся к набору опорных изображений. В целом, кодер 20 видео может передавать значения, по которым декодер 30 видео может определять идентификаторы для изображений, включая изображения, которые относятся к набору опорных изображений. Идентификаторы изображений могут представлять собой PicOrderCnt (т.е., значения порядкового номера изображения (POC)). Как описано выше, значение POC может указывать порядок отображения или вывода изображения, причем изображения с меньшими значениями POC отображают раньше, чем изображения с большими значениями POC. Значение POC данного изображения можно приводить по отношению к предыдущему изображению моментального обновления декодирования (IDR). Например, PicOrderCnt (т.е., значение POC) для IDR изображения может составлять 0, значение POC для изображения после IDR изображения в порядке отображения или вывода может составлять 1, значение POC после изображения со значением POC 1 в порядке отображения или вывода может составлять 2, и так далее.

В соответствии со способами, описанными в этом раскрытии, когда текущее изображение представляет собой не IDR изображение, следующее можно применять для того, чтобы получать значение POC текущего изображения. Следующее предназначено, чтобы способствовать пониманию, и его не следует толковать в качестве ограничения.

Например, учитывают переменную списка listD, которая содержит в качестве элементов значения PicOrderCnt (значения POC), связанные со списком изображений, включающим все из следующего: (1) первое изображение в списке представляет собой предыдущее IDR изображение в порядке декодирования, и (2) все другие изображения следуют в порядке декодирования после первого изображения в списке и или предшествуют текущему изображению в порядке декодирования или представляют собой текущее изображение. В этом примере, текущее изображение включают в listD перед тем, как вызывать процесс получения для набора опорных изображений. Также учитывают переменную списка listO, которая содержит элементы из listD, сортированные по значениям POC в восходящем порядке. В этом примере, listO может не содержать значение POC, которое имеет значение, равное значению POC другого изображения.

В некоторых примерах, значения POC могут быть ограничены диапазоном от -2pocLen-1 до 2pocLen-1 - 1 включительно. В этом примере, pocLen может быть равно long_term_ref_pic_id_len_delta +long_term_ref_pic_id_delta_len_minus4+4. long_term_ref_pic_id_len_delta и long_term_ref_pic_id_delta_len_minus4 могут представлять собой синтаксические элементы, которые декодер 30 видео принимает в кодированном битовом потоке в качестве части синтаксиса набора параметров изображения, как описано более подробно ниже. В качестве другого примера, значения POC могут быть ограничены диапазоном от -231 до 231 - 1 включительно.

В качестве одного из примеров, декодер 30 видео может принимать в кодированном битовом потоке (т.е., битовом потоке, передаваемом посредством кодера видео 20), синтаксический элемент pic_order_cnt_lsb. Синтаксический элемент pic_order_cnt_lsb может точно определять порядковый номер изображения по модулю MaxPicOrderCntLsb для кодированного изображения. Длина синтаксического элемента pic_order_cnt_lsb может составлять log2_max_pic_order_cnt_lsb_minus4 + 4 бита. Значения pic_order_cnt_lsb могут находиться в диапазоне от 0 до MaxPicOrderCntLsb - 1 включительно. Декодер 30 видео может принимать синтаксический элемент pic_order_cnt_lsb в синтаксисе заголовка слайса для текущего изображения, подлежащего декодированию.

Декодер 30 видео также может принимать синтаксический элемент log2_max_pic_order_cnt_lsb_minus4 в кодированном битовом потоке, передаваемом посредством кодера видео 20. Декодер 30 видео может принимать синтаксический элемент log2_max_pic_order_cnt_lsb_minus4 в наборе параметров последовательности. Значение log2_max_pic_order_cnt_lsb_minu4 может находиться в диапазоне от 0 до 12 включительно. Синтаксический элемент log2_max_pic_order_cnt_lsb_minus4 может точно определять значение переменной MaxPicOrderCntLsb, которую декодер 30 видео использует в процессе декодирования для определения значений POC. Например:

MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+4).

По этим принятым синтаксическим элементам, декодер 30 видео может определять значение POC текущего изображения следующим образом. Например, декодер 30 видео может определять PicOrderCntMsb для текущего изображения. Значение POC для текущего изображения может представлять собой определяемое PicOrderCntMsb для текущего изображения плюс принятое pic_order_cnt_lsb для текущего изображения.

В дальнейшем функция PicOrderCnt(picX) равна значению POC для изображения X. Функция DiffPicOrderCnt(picA, picB) равна PicOrderCnt(picA) минус PicOrderCnt(picB). В некоторых примерах, кодированный битовый поток может не содержать данные, что ведет к значения DiffPicOrderCnt(picA, picB), используемым в процессе декодирования, которые выходят за границы диапазона от -215 до 215 - 1 включительно. Кроме того, пусть X представляет собой текущее изображение и Y и Z представляют собой два других изображения в той же последовательности, где считают, Y и Z имеют одинаковое направление порядка вывода от X, когда как DiffPicOrderCnt(X, Y), так и DiffPicOrderCnt(X, Z) являются положительными или оба являются отрицательными. Также, в некоторых примерах, кодер 20 видео может присваивать PicOrderCnt пропорционально времени выборки соответствующего изображения относительно времени выборки предыдущего IDR изображения.

В качестве части процесса определения значения POC для текущего изображения, декодер 30 видео может определять переменные prevPicOrderCntMsb и prevPicOrderCntLsb. Например, если текущее изображение представляет собой IDR изображение, декодер 30 видео может задавать prevPicOrderCntMsb равной 0 и задавать prevPicOrderCntLsb равной 0. Иначе (т.е., где текущее изображение не представляет собой IDR изображение), декодер 30 видео может задавать prevPicOrderCntMsb равной PicOrderCntMsb предыдущего опорного изображения в порядке декодирования с меньшим temporal_id, чем у текущего изображения, или равным ему, и задавать prevPicOrderCntLsb равной значению pic_order_cnt_lsb предыдущего опорного изображения в порядке декодирования с меньшим temporal_id, чем у текущего изображения, или равным ему.

Используя эти переменные значения и значения синтаксических элементов (например, значения prevPicOrderCntMsb, prevPicOrderCntLsb, pic_order_cnt_lsb и MaxPicOrderCntLsb), декодер 30 видео может определять значение PicOrderCntMsb, основываясь на стадиях, изложенном в следующем псевдокоде. Следует понимать, что декодер 30 видео может реализовать стадии, изложенные в следующем псевдокоде, чтобы определять PicOrderCntMsb для каждого текущего изображения, которое используют для того, чтобы получать значение POC текущего изображения.

if((pic_order_cnt_lsb<prevPicOrderCntLsb) && ((prevPicOrderCntLsb-pic_order_cnt_lsb)>=(MaxPicOrderCntLsb/2)))

PicOrderCntMsb=prevPicOrderCntMsb+MaxPicOrderCntLsb

else if((pic_order_cnt_lsb>prevPicOrderCntLsb) && ((pic_order_cnt_lsb−prevPicOrderCntLsb)>(MaxPicOrderCntLsb/2)))PicOrderCntMsb=prevPicOrderCntMsb-MaxPicOrderCntLsb

else=prevPicOrderCntMsb

После определения PicOrderCntMsb для текущего изображения, декодер 30 видео может определять значение POC для текущего изображения, основываясь на PicOrderCntMsb для текущего изображения и pic_order_cnt_lsb для текущего изображения. Декодер 30 видео может определять значение POC для текущего изображения следующим образом:

PicOrderCnt=PicOrderCntMsb+pic_order_cnt_lsb.

После декодирования изображения, декодер 30 видео может хранить значение PicOrderCntMsb, значение pic_order_cnt_lsb и значение POC для этого изображения, включая каждое из опорных изображений, которые относятся к набору опорных изображений, в буфере декодированных изображений (DPB) декодера 30 видео. Таким образом, каждое изображение в DPB связано со значением POC, значением PicOrderCntMsb и значением pic_order_cnt_lsb.

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

Например, в способах, описанных в этом раскрытии, следующие синтаксические структуры модифицированы относительно предыдущих стандартов кодирования видео: синтаксис полезной нагрузки последовательности необработанных байтов (RBSP) набора параметров последовательности (SPS), seq_paramater_set_rbsq(), синтаксис RBSP набора параметров изображения (PPS), pic_parameter_set_rbsp(), синтаксис заголовка слайса, slice_header(), и синтаксис модификации списка опорных изображений, ref_pic_list_modification(). Модификация списка опорных изображений описана более подробно после описания получения набора опорных изображений, и инициализация одного или более списков опорных изображений.

Также, в соответствии со способами, описанными в этом раскрытии, следующие синтаксические структуры добавляют в кодированный битовый поток: синтаксис набора краткосрочных опорных изображений, short_term_ref_pic_set(), и синтаксис набора долгосрочных опорных изображений, long_term_ref_pic_set(). Декодер 30 видео может использовать синтаксис набора краткосрочных опорных изображений и синтаксис набора долгосрочных опорных изображений для целей создания поднаборов опорных изображений, из которых декодер 30 видео получает набор опорных изображений.

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

В одном альтернативном примере кодер 20 видео может передавать информацию об опорном изображении в наборе параметров последовательности и индекс для списка, к которому можно обращаться в заголовке слайса, что может снижать издержки передачи. В другом альтернативном примере кодер видео может передавать информацию об опорном изображении в набор параметров нового типа (например, набор параметров набора опорных изображений (RPSPS)), и к RPSPS id, а также индексу для списка идентификационной информации опорного изображения можно обращаться в заголовке слайса. Это может снижать издержки передачи, а также не увеличивать необходимое число наборов параметров изображений или наборов параметров последовательностей. В других примерах, кодер 20 видео может использовать какую-либо комбинацию этих примерных способов для того, чтобы передавать идентификационную информацию опорного изображения.

Таблица 1 Синтаксис RBSP набора параметров последовательности seq_parameter_set_rbsp(){ Дескриптор profile_idc u(8) reserved_zero_8bits/*равен 0*/ u(8) level_idc u(8) seq_parameter_set_id ue(v) max_temporal_layers_minus1 u(3) pic_width_in_luma_samples u(16) pic_height_in_luma_samples u(16) bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) pcm_bit_depth_luma_minus1 u(4) pcm_bit_depth_chroma_minus1 u(4)

log2_max_pic_order_cnt_lsb_minus4 ue(v) max_num_ref_frames ue(v) log2_min_coding_block_size_minus3 ue(v) log2_diff_max_min_coding_block_size ue(v) log2_min_transform_block_size_minus2 ue(v) log2_diff_max_min_transform_block_size ue(v) log2_min_pcm_coding_block_size_minus3 ue(v) max_transform_hierarchy_depth_inter ue(v) max_transform_hierarchy_depth_intra ue(v) chroma_pred_from_luma_enabled_flag u(1) loop_filter_across_slice_flag u(1) sample_adaptive_offset_enabled_flag u(1) adaptive_loop_filter_enabled_flag u(1) pcm_loop_filter_disable_flag u(1) cu_qp_delta_enabled_flag u(1) temporal_id_nesting_flag u(1) inter_4×4_enabled_flag u(1) rbsp_trailing_bits() }

pic_width_in_luma_samples может точно определять ширину каждого декодированного изображения в выборках яркости. Значение pic_width_in_luma_samples может находиться в диапазоне от 0 до 216-1 включительно.

pic_height_in_luma_samples может точно определять высоту каждого декодированного изображения в выборках яркости. Значение pic_height_in_luma_samples может находиться в диапазоне от 0 до 216-1 включительно.

Как указано в таблице 1, декодер 30 видео может принимать в наборе параметров последовательности (SPS) синтаксический элемент log2_max_pic_order_cnt_lsb_minus4. Как описано выше, значение log2_max_pic_order_cnt_lsb_minu4 может точно определять значение переменной MaxPicOrderCntLsb, которую декодер 30 видео использует в процессе декодирования для определения значений POC, где MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+4).

Таблица 2 Синтаксис RBSP набора параметров изображения pic_parameter_set_rbsp(){ Дескриптор pic_parameter_set_id ue(v) seq_parameter_set_id ue(v) entropy_coding_mode_flag u(1) num_short_term_ref_pic_sets_pps ue(v) for(i=0; i<num_short_term_ref_pic_sets_pps; i++) short_term_ref_pic_set() long_term_ref_pics_present_flag u(1) if(long_term_ref_pics_present_flag){ long_term_ref_pic_id_delta_len_minus4 ue(v) long_term_ref_pic_id_len_delta ue(v) num_long_term_ref_pics_pps ue(v) for(i=0; i<num_long_term_ref_pics_pps; i++) long_term_ref_pic_id_pps[i] i(v) } num_temporal_layer_switching_point_flags ue(v) for(i=0; i<num_temporal_layer_switching_point_flags; i++) temporal_layer_switching_point_flag[i] u(1) num_ref_idx_l0_default_active_minus1 ue(v) num_ref_idx_l1_default_active_minus1 ue(v) pic_init_qp_minus26 /* относительно 26 */ se(v) constrained_intra_pred_flag u(1) slice_granularity u(2) shared_pps_info_enabled_flag u(1) if(shared_pps_info_enabled_flag) if(adaptive_loop_filter_enabled_flag) alf_param() if(cu_qp_delta_enabled_flag) max_cu_qp_delta_depth u(4) rbsp_trailing_bits() }

num_short_term_ref_pic_sets_pps точно определяет число синтаксических структур short_term_ref_pic_set( ), включенных в набор параметров изображения. Значение num_short_term_ref_pic_sets_pps должно находиться в диапазоне от 0 до 32 включительно.

long_term_ref_pics_present_flag, равный 0, точно определяет, что долгосрочное опорное изображение не используют для интер-предсказания какого-либо кодированного изображения, относящегося к набору параметров изображения, а синтаксические элементы long_term_ref_pic_id_delta_len_minus4, long_term_ref_pic_id_len_delta и num_long_term_ref_pics_pps не присутствуют. long_term_ref_pics_present_flag, равный 1, точно определяет, что долгосрочные опорные изображения можно использовать для интер-предсказания одного или более кодированных изображений, относящихся к набору параметров изображения, а синтаксические элементы long_term_ref_pic_id_delta_len_minus4, long_term_ref_pic_id_len_delta и num_long_term_ref_pics_pps присутствуют.

long_term_ref_pic_id_delta_len_minus4 плюс 4 точно определяет длину в битах синтаксических элементов long_term_ref_pic_id_delta_add_foll[ i ]. Значение long_term_ref_pic_id_delta_len_minus4 должно находиться в диапазоне от 0 до 12 включительно.

long_term_ref_pic_id_len_delta плюс long_term_ref_pic_id_delta_len_minus4 плюс 4 точно определяет длину в битах синтаксического элемента long_term_ref_pic_id_pps[ i ]. Значение long_term_ref_pic_id_len_delta может находиться в диапазоне от 0 до 28 - long_term_ref_pic_id_delta_len_minus4 включительно. Значение long_term_ref_pic_id_len_delta + long_term_ref_pic_id_delta_len_minus4+4 во всех наборах параметров изображения, относящихся к одному конкретному набору параметров последовательности, может быть идентичным.

num_long_term_ref_pics_pps точно определяет число идентификаций долгосрочных опорных изображений, включенных в набор параметров изображения. Значение num_long_term_ref_pics_pps может находиться в диапазоне от 0 до 32 включительно.

long_term_ref_pic_id_pps[i] точно определяет i-й элемент идентификационной информации долгосрочного опорного изображения, включенный в набор параметров изображения. Число битов, используемых для того, чтобы представлять long_term_ref_pic_id_pps[i], может быть равно long_term_ref_pic_id_len_delta + long_term_pic_id_len_minus4+4.

Таблица 3 Синтаксис набора краткосрочных опорных изображений short_term_ref_pic_set(){ Дескриптор num_short_term_curr0 ue(v) num_short_term_curr1 ue(v) num_short_term_foll0 ue(v) num_short_term_foll1 ue(v) NumShortTerm=num_short_term_curr0+num_short_term_curr1+num_short_term_foll0+num_short_term_foll1 for(i=0; i<NumShortTerm; i++) short_term_ref_pic_id_delta_minus1[i] ue(v) }

Синтаксис набора краткосрочных опорных изображений может быть предназначен для краткосрочных изображений. Краткосрочное изображение может быть определено как опорное изображение, для которого идентификационная информация включена в синтаксическую структуру short_term_ref_pic_set() для кодированного изображения, или включена в заголовок(ки) слайса или включенного в набор параметров опорного изображения и на которое ссылается синтаксический элемент short_term_ref_pic_set_idx в заголовке(ах) слайса. Синтаксические элементы заголовка слайса приведены ниже в таблице 4.

num_short_term_curr0 точно определяет число краткосрочных опорных изображений в RefPicSetStCurr0, когда синтаксическую структуру short_term_ref_pic_set( ) используют для получения набора опорных изображений кодированного изображения, как описано ниже. Значение num_short_term_curr0 может находиться в диапазоне от 0 до max_num_ref_frames включительно.

num_short_term_curr1 точно определяет число краткосрочных опорных изображений в RefPicSetStCurr1, когда синтаксическую структуру short_term_ref_pic_set( ) используют для получения набора опорных изображений кодированного изображения, как описано ниже. Значение num_short_term_curr1 может находиться в диапазоне от 0 до max_num_ref_frames - num_short_term_curr0 включительно.

num_short_term_foll0 точно определяет число краткосрочных опорных изображений в RefPicSetStFoll0, когда синтаксическую структуру short_term_ref_pic_set( ) используют для получения набора опорных изображений кодированного изображения, как описано ниже. Значение num_short_term_foll0 может находиться в диапазоне от 0 до max_num_ref_frames - num_short_term_curr0 - num_short_term_curr1 включительно.

num_short_term_foll1 точно определяет число краткосрочных опорных изображений в RefPicSetStFoll1, когда синтаксическую структуру short_term_ref_pic_set( ) используют для получения набора опорных изображений кодированного изображения, как описано ниже. Значение num_short_term_foll1 должно находиться в диапазоне от 0 до max_num_ref_frames - num_short_term_curr0 - num_short_term_curr1 - num_short_term_foll0 включительно.

short_term_ref_pic_id_delta_minus1[ i ] точно определяет идентификационную информацию i-го краткосрочного опорного изображения, включенного в синтаксическую структуру short_term_ref_pic_set( ).

Таблица 4 Синтаксис заголовка слайса slice_header(){ Дескриптор lightweight_slice_flag u(1) if(!lightweight_slice_flag){ slice_type ue(v) pic_parameter_set_id ue(v) if(IdrPicFlag){ idr_pic_id ue(v) no_output_of_prior_pics_flag u(1) } pic_order_cnt_lsb u(v) if(!IdrPicFlag){ short_term_ref_pic_set_pps_flag u(1) if(short_term_ref_pic_set_pps_flag) short_term_ref_pic_set_idx ue(v) Else short_term_ref_pic_set() if(long_term_ref_pics_present_flag) long_term_ref_pic_set() } if(slice_type = = P | | slice_type = = B){ num_ref_idx_active_override_flag u(1) if(num_ref_idx_active_override_flag){ num_ref_idx_l0_active_minus1 ue(v) if(slice_type= =B) num_ref_idx_l1_active_minus1 ue(v) } }

ref_pic_list_modification() ref_pic_list_combination() } if(entropy_coding_mode_flag && slice_type !=I) cabac_init_idc ue(v) first_slice_in_pic_flag u(1) if(first_slice_in_pic_flag ==0) slice_address u(v) if(!lightweight_slice_flag){ slice_qp_delta se(v) if(sample_adaptive_offset_enabled_flag) sao_param() if(deblocking_filter_control_present_flag){ disable_deblocking_filter_idc if(disable_deblocking_filter_idc != 1){ slice_alpha_c0_offset_div2 slice_beta_offset_div2 } } if(slice_type = = B) collocated_from_l0_flag u(1) if(adaptive_loop_filter_enabled_flag){ if(!shared_pps_info_enabled_flag) alf_param() alf_cu_control_param() } } }

no_output_of_prior_pics_flag точно определяет, как предварительно-декодированные изображения в буфере декодированных изображений обрабатывают после декодирования IDR изображения. Когда IDR изображение представляет собой первое IDR изображение в битовом потоке, значение no_output_of_prior_pics_flag может не оказывать эффекта на процесс декодирования. Когда IDR изображение не является первым IDR изображением в битовом потоке и значение pic_width_in_luma_samples или pic_height_in_luma_samples или max_dec_frame_buffering, получаемое из набора параметров активной последовательности, может отличаться от значения pic_width_in_luma_samples или pic_height_in_luma_samples или max_dec_frame_buffering, получаемого из набора параметров последовательности, активного для предшествующего изображения, декодер может, но не обязательно, сделать предположение о том, что no_output_of_prior_pics_flag равен 1, независимо от фактического значения no_output_of_prior_pics_flag.

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

short_term_ref_pic_set_idx точно определяет индекс синтаксической структуры short_term_ref_pic_set( ), включенной набор параметров опорного изображения, который содержит идентификационную информацию набора краткосрочных опорных изображений в наборе опорных изображений для текущего изображения.

Переменную NumShortTermCurr0 и NumShortTermCurr1 точно определяют как:

NumShortTermCurr0=num_short_term_curr0

NumShortTermCurr1=num_short_term_curr1 Где num_short_term_curr0 и num_short_term_curr0 представляют собой синтаксические элементы с одинаковыми названиями, соответственно, в синтаксической структуре short_term_ref_pic_set(), или которая присутствует в наборе параметров опорного изображения и к которой обращается short_term_ref_pic_set_idx, или непосредственно присутствует в заголовке слайса.

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

Когда текущий слайс представляет собой слайс P или B и num_ref_idx_l0_active_minus1 не присутствует, можно предположить, что num_ref_idx_l0_active_minus1 равно num_ref_idx_l0_default_active_minus1.

Значение num_ref_idx_l0_active_minus1 может находиться в диапазоне от 0 до 15 включительно.

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

Когда текущий слайс представляет собой слайс P или B и num_ref_idx_l1_active_minus1 не присутствует, можно предположить, что num_ref_idx_l1_active_minus1 равно num_ref_idx_l1_default_active_minus1.

Значение num_ref_idx_l1_active_minus1 может находиться в диапазоне от 0 до 15 включительно.

Таблица 5 Синтаксис набора долгосрочных опорных изображений long_term_ref_pic_set(){ Дескриптор num_long_term_pps_curr ue(v) num_long_term_add_curr ue(v) num_long_term_pps_foll ue(v) num_long_term_add_foll ue(v) for(i=0; i<num_long_term_ pps_curr+num_long_term_ pps_foll; i++) long_term_ref_pic_set_idx_pps[i] ue(v) for(i=0; i<num_long_term_add_curr+num_long_term_add_foll; i++) long_term_ref_pic_id_delta_add[i] i(v) }

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

num_long_term_pps_curr точно определяет число всех долгосрочных опорных изображений, идентификационная информация которых включена в набор параметров опорного изображения и которые можно использовать для интер-предсказания текущего изображения. Если num_long_term_pps_curr не присутствует, значение можно определять как равное 0. Значение num_long_term_pps_curr может находиться в диапазоне от 0 до max_num_ref_frames включительно.

num_long_term_add_curr точно определяет число всех долгосрочных опорных изображений, идентификационная информация которых не включена в набор параметров опорного изображения и которые можно использовать для интер-предсказания текущего изображения. Если num_long_term_add_curr не присутствует, значение можно определять как равное 0. Значение num_long_term_add_curr может находиться в диапазоне от 0 до max_num_ref_frames - num_long_term_pps_curr включительно.

Переменную NumLongTermCurr точно определяют как:

NumLongTermCurr=num_long_term_pps_curr + num_long_term_add_curr

num_long_term_pps_foll точно определяет число всех долгосрочных опорных изображений, идентификационная информация которых включена в набор параметров опорного изображения, которые не используют для интер-предсказания текущего изображения и которые можно использовать для интер-предсказания какого-либо из изображений, следующих за текущим изображением в порядке декодирования. Если num_long_term_pps_foll не присутствует, значение можно определять как равное 0. Значение num_long_term_pps_foll может находиться в диапазоне от 0 до max_num_ref_frames включительно.

num_long_term_add_foll точно определяет число всех долгосрочных опорных изображений, идентификационная информация которых не включена в набор параметров опорного изображения, которые не используют для интер-предсказания текущего изображения и которые можно использовать для интер-предсказания какого-либо из следующих изображений в порядке декодирования. Если num_long_term_add_foll не присутствует, значение можно определять как равное 0. Значение num_long_term_add_foll может находиться в диапазоне от 0 до max_num_ref_frames - num_long_term_pps_foll включительно.

long_term_ref_pic_set_idx_pps[ i ] точно определяет индекс, в список идентификационной информации долгосрочного опорного изображения, включенной в набор параметров опорного изображения, i-го долгосрочного опорного изображения, унаследованного из набора параметров опорного изображения в набор опорных изображений текущего изображения. Значение long_term_ref_pic_set_idx_pps[i] может находиться в диапазоне от 0 до 31 включительно.

long_term_ref_pic_id_delta_add[i] точно определяет идентификационную информацию долгосрочного опорного изображения i-го долгосрочного опорного изображения, которая не унаследована из набора параметров опорного изображения, но включена в набор опорных изображений текущего изображения. Число битов, используемых для того, чтобы представлять long_term_ref_pic_id_add_curr[i], может быть равно long_term_pic_id_len_minus4+4.

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

Процесс получения может включать создание набора опорных изображений из множества поднаборов опорных изображений. Этот процесс можно вызывать по одному разу для каждого изображения, после декодирования заголовка слайса, но перед декодированием какой-либо единицы кодирования и перед процессом декодирования для создания списка опорных изображений слайса. Например, по полученным значениям и передаваемым синтаксическим элементам декодер 30 видео может определять значения POC для опорных изображений, которые относятся к набору опорных изображений. По определяемым значениям POC декодер 30 видео может создавать поднаборы опорных изображений, которые вместе образуют набор опорных изображений. Таким образом, посредством создания поднаборов опорных изображений, декодер 30 видео может создавать набор опорных изображений. Например, декодер 30 видео может упорядочивать поднаборы опорных изображений конкретным образом для того, чтобы получать набор опорных изображений. Упорядочивание может относиться к образу действий, в которых декодер 30 видео составляет списки поднаборов опорных изображений для того, чтобы получать набор опорных изображений.

Как описано выше, для того, чтобы получать набор опорных изображений, декодер 30 видео может создавать множество поднаборов опорных изображений. В некоторых примерах, декодер 30 видео может создавать шесть поднаборов опорных изображений. Шесть поднаборов опорных изображений можно называть: RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. RefPicSetStCurr0 можно обозначать как RefPicSetStCurrBefore, а RefPicSetStCurr1 можно обозначать как RefPicSetStCurrAfter.

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

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

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

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

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

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

Если текущее изображение, подлежащее декодированию, представляет собой IDR изображение, декодер 30 видео может задавать поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr, и RefPicSetLtFoll как пустые. Это может происходить из-за того, что для IDR изображения нельзя выполнять интер-предсказание и что ни одно изображение после IDR изображения в порядке декодирования не может использовать какое-либо изображение перед IDR изображением при декодировании в качестве опорного. Иначе (например, когда текущее изображение представляет собой не IDR изображение), декодер 30 видео может создавать краткосрочные поднаборы опорных изображений и долгосрочные поднаборы опорных изображений посредством реализации следующего псевдокод.

Например, когда декодер 30 видео декодирует экземпляр синтаксической структуры short_term_ref_pic_set(), или в заголовке слайса или посредством обращения к набору параметров опорного изображения, декодер 30 видео может реализовать следующий псевдокод для того, чтобы создавать поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1.

cIdx=0 for(i=0, pocPred=PicOrderCnt(CurrPic); i<num_short_term_curr0; pocPred=RefPicSetStCurr0[i], i++, cIdx++)

RefPicSetStCurr0[i]=pocPred-short_term_ref_pic_id_delta_minus1[cIdx]-1

for(i=0, pocPred=PicOrderCnt(CurrPic); i<num_short_term_curr1; pocPred=RefPicSetStCurr1[i], i++, cIdx++)

RefPicSetStCurr1[i]=short_term_ref_pic_id_delta_minus1[ cIdx ]+1-pocPred

for(i=0, pocPred=PicOrderCnt(CurrPic); i<num_short_term_foll0; pocPred=RefPicSetStFoll[i], i++, cIdx++)

RefPicSetStFoll0[i]=pocPred-short_term_ref_pic_id_delta_minus1[cIdx]-1

for(i=0, pocPred=PicOrderCnt(CurrPic); i<num_short_term_foll1; pocPred=RefPicSetStFoll[i], i++, cIdx++)

RefPicSetStFoll1[i]=short_term_ref_pic_id_delta_minus1[cIdx]+1-pocPred

Если декодер 30 видео определяет, что long_term_ref_pics_present_flag равно 0, декодер 30 видео может задавать RefPicSetLtCurr и RefPicSetLtFoll как пустые, поскольку для этого случая долгосрочные опорные изображения отсутствуют. Иным образом, если декодер 30 видео декодирует экземпляр синтаксической структуры long_term_ref_pic_set() в заголовке слайса, декодер 30 видео может реализовать следующий псевдокод для того, чтобы создавать поднаборы опорных изображений RefPicSetLtCurr и RefPicSetLtFoll.

cIdx=0for( i=0; i<num_long_term_pps_curr; i++, cIdx++) {pIdx=long_term_ref_pic_idx_pps[i]RefPicSetLtCurr[cIdx]=long_term_ref_pic_id_pps[pIdx]}for(i=0; i<num_long_term_add_curr; i++, cIdx++){picIdDelta=long_term_ref_pic_id_delta_add[i]RefPicSetLtCurr[cIdx]=PicOrderCnt(CurrPic)-picIdDelta}

cIdx=0for(i=0; i<num_long_term_pps_foll; i++, cIdx++){pIdx=long_term_ref_pic_idx_pps[i+num_long_term_pps_curr]RefPicSetLtFoll[cIdx]=long_term_ref_pic_id_pps[pIdx]}for(i=0;i<num_long_term_add_foll; i++, cIdx++){picIdDelta=long_term_ref_pic_id_delta_add[i+num_long_term_add_curr] RefPicSetLtFoll[cIdx]=PicOrderCnt(CurrPic)-picIdDelta}

В соответствии со способами, описанными в этом раскрытии, опорное изображение с конкретным значением PicOrderCnt (значением POC) можно обозначать как включенное в набор опорных изображений кодированного изображения, если опорное изображение включают в какой-либо из шести поднаборов набора опорных изображений этого кодированного изображения. Опорное изображение с конкретным значением PicOrderCnt обозначают как включенное в конкретный поднабор набора опорных изображений, если конкретное значение PicOrderCnt (значение POC) равно одному из значений PicOrderCnt, включенных в этот поднабор.

После создания поднаборов опорных изображений декодер 30 видео может получать набор опорных изображений. Например, декодер 30 видео может упорядочивать поднаборы опорных изображений для того, чтобы получать набор опорных изображений. В качестве одного из примеров, декодер 30 видео может составлять список поднабора опорных изображений RefPicSetStCurr0, за которым следует поднабор опорных изображений RefPicSetStCurr1, за которым следует поднабор опорных изображений RefPicSetStFoll0, за которым следует поднабор опорных изображений RefPicSetStFoll1, за которым следует поднабор опорных изображений RefPicSetLtCurr и поднабор опорных изображений RefPicSetLtFoll. В качестве другого примера, декодер 30 видео может составлять список поднабора опорных изображений RefPicSetStCurr0, за которым следует поднабор опорных изображений RefPicSetStCurr1, за которым следует поднабор опорных изображений RefPicSetLtCurr, за которым следует поднабор опорных изображений RefPicSetStFoll0, за которым следует RefPicSetStFoll1 и затем поднабор опорных изображений RefPicSetLtFoll.

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

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

Как описано выше, значение временной идентификации (temporal_id) может представлять собой иерархическое значение, которое указывает, какие изображения можно использовать для кодирования/предсказания текущего изображения. В целом, изображение с конкретным значением temporal_id возможно представляет собой опорное изображение для изображений с равными или большими значениями temporal_id, но не наоборот. Например, изображение со значением temporal_id 1 возможно представляет собой опорное изображение для изображений со значениями temporal_id, равными 1, 2, 3, …, но не для изображения со значением temporal_id, равным 0.

Наименьшее значение temporal_id также может указывать наименьшую скорость отображения. Например, если декодер 30 видео только декодировал изображения со значениями temporal_id, равными 0, скорость отображения может составлять 7,5 изображений в секунду. Если декодер 30 видео только декодировал изображения со значениями temporal_id, равными 0 и 1, скорость отображения может составлять 15 изображений в секунду, и так далее.

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

При использовании этих способов передача temporal_id в дополнение к идентификации изображения для получения набора опорных изображений не требуется; таким образом, передача набора опорных изображений становится более эффективной. Например, кодер 20 видео может не передавать значения temporal_id опорных изображений, которые относятся к набору опорных изображений, и может не требоваться, чтобы декодер 30 видео принимал значения temporal_id опорных изображений, которые относятся к набору опорных изображений для целей получения набора опорных изображений.

Кроме того, таким образом, созданные поднаборы опорных изображений могут не идентифицировать опорные изображения со значениями temporal_id больше такового у текущего изображения. Например, декодер 30 видео может быть способен создавать поднаборы опорных изображений и гарантировать, что ни одно опорное изображение, идентифицированное в каком-либо из поднаборов опорных изображений, имеет значение temporal_id больше, чем таковое у текущего изображения, поскольку требования соответствия битового потока могут требовать не включать значения temporal_id в битовый поток, передаваемый посредством кодера видео 20 и принимаемый посредством декодера 30 видео. Таким образом, декодер 30 видео может получать набор опорных изображений без приема значений временной идентификации для опорных изображений которые относятся к набору опорных изображений.

В приведенных выше примерах, декодер 30 видео может создавать шесть поднаборов опорных изображений, четыре для краткосрочных опорных изображений (т.е., RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1) и два для долгосрочных опорных изображений (т.е., RefPicSetLtCurr и RefPicSetLtFoll). Однако, аспекты по этому раскрытию не ограничены этим. В других примерах, два или более из этих поднаборов опорных изображений можно комбинировать в один поднабор опорных изображений, что ведет к меньшему числу поднаборов опорных изображений, чем создает декодер 30 видео. Далее описаны некоторые неограничивающие примеры, в которых декодер 30 видео может создавать меньше поднаборов опорных изображений. Могут существовать другие пути, посредством которых декодер 30 видео может создавать меньше поднаборов опорных изображений.

Например, в некоторых примерах, может не существовать разделения поднабора для текущего изображения и поднабора для следующих изображений в порядке декодирования. Таким образом, могут иметь место два поднабора для краткосрочных опорных изображений, обозначаемые как RefPicSetSt0 и RefPicSetSt1, и может иметь место только один поднабор для долгосрочных опорных изображений, обозначаемых как RefPicSetLt. В этом примере, поднабор опорных изображений RefPicSetSt0 может представлять собой конкатенацию RefPicSetStCurr0 и RefPicSetStFoll0, причем RefPicSetStCurr0 в начале результата конкатенации. В этом примере, поднабор опорных изображений RefPicSetSt1 может представлять собой конкатенацию RefPicSetStCurr1 и RefPicSetStFoll1, причем RefPicSetStCurr1 в начале результата конкатенации. Поднабор опорных изображений RefPicSetLt может представлять собой конкатенацию RefPicSetLtCurr и RefPicSetLtFoll, причем RefPicSetLtCurr в начале результата конкатенации.

В качестве другого примера, может отсутствовать разделение поднабора на более ранний или более поздний порядок вывода, чем текущее изображение. Это может применяться только к краткосрочным опорным изображениям. Таким образом, могут иметь место два поднабора для краткосрочных опорных изображений, обозначаемые как RefPicSetStCurr и RefPicSetStFoll. Поднабор опорных изображений RefPicSetStCurr может представлять собой конкатенацию RefPicSetStCurr0 и RefPicSetStCurr1, причем RefPicSetStCurr0 в начале результата конкатенации. Поднабор опорных изображений RefPicSetStFoll может представлять собой конкатенацию RefPicSetStFoll0 и RefPicSetStFoll1, причем RefPicSetStFoll0 в начале результата конкатенации.

В качестве другого примера, можно не применять оба указанных выше типа разделений. Таким образом, может иметь место только один поднабор для краткосрочных опорных изображений, обозначаемых как RefPicSetSt, и только один поднабор для долгосрочных опорных изображений, обозначаемый как RefPicSetLt. Поднабор опорных изображений RefPicSetSt может представлять собой конкатенацию RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1, в перечисленном порядке (или каком-либо другом порядке), а RefPicSetLt может представлять собой то же, что и выше.

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

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

Кодер видео может создавать множество поднаборов опорных изображений, каждый из которых идентифицирует ноль или больше опорных изображений. Например, кодер видео может создавать шесть поднаборов опорных изображений (т.е., поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll), где каждый из поднаборов идентифицирует ноль или больше опорных изображений. В некоторых примерах, кодер видео может кодировать текущее изображение, основываясь на множестве поднаборов опорных изображений.

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

В некоторых примерах, для того, чтобы упорядочивать поднаборы опорных изображений, кодер видео может создавать поднаборы опорных изображений в том порядке, в котором поднабор опорных изображений подлежит перечислению в наборе опорных изображений. Например, кодер видео может сначала создавать поднабор опорных изображений RefPicSetLtCurr, затем создавать поднабор опорных изображений RefPicSetLtFoll, затем создавать поднабор опорных изображений RefPicSetStCurr0, затем создавать поднабор опорных изображений RefPicSetStCurr1, затем создавать поднабор опорных изображений RefPicSetStFoll0 и затем создавать поднабор опорных изображений RefPicSetStFoll1. В этом иллюстративном примере порядок поднаборов опорных изображений в наборе опорных изображений может представлять собой RefPicSetLtCurr, RefPicSetLtFoll, RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1, в этом порядке, несмотря на то, что возможны другие порядки.

В соответствии с примерными способами, описанными в этом раскрытии, после получения набора опорных изображений, декодер 30 видео может декодировать слайсы в текущем изображении. Часть процесса декодирования включает создание одного или двух списков опорных изображений. список опорных изображений представляет собой список опорных изображений, который используют для предсказания слайса P или B. Для процесса декодирования слайса P, имеет место один список опорных изображений (Список 0). Для процесса декодирования слайса B существуют два списка опорных изображений (Список 0 и Список 1). Список 0, иногда обозначаемый как список опорных изображений 0 или RefPicList0, представляет собой список опорных изображений, используемых для интер-предсказания слайса P или B. Все интер-предсказания, используемые для слайсов P, используют Список 0. Список опорных изображений 0 представляет собой один из двух списков опорных изображений, используемых для двойного предсказания для слайса B, при этом другой представляет собой список опорных изображений 1. Список 1, иногда обозначаемый как список опорных изображений 1 или RefPicList1, представляет собой список опорных изображений, используемых для предсказания слайса B. Список опорных изображений 1 представляет собой один из двух списков опорных изображений, используемых для предсказания для слайса B, при этом другой представляет собой список опорных изображений 0. Для некоторых блоков в слайсе B можно выполнять двойное предсказание с использованием как Списка 0, так и Списка 1, а для некоторых блоков в слайсе B можно выполнять одинарное предсказание с использованием или Списка 0 или Списка 1.

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

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

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

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

В соответствии с примерными способами, описанными в этом раскрытии, декодер 30 видео может использовать поднаборы опорных изображений для создания начального Списка 0 и начального Списка 1. Например, начальный Список 0 и начальный Список 1 может составлять список из ноля или больше опорных изображений, идентифицированных в RefPicSetStCurr0, RefPicSetStCurr1 или RefPicSetLtCurr. В этом примере, когда процесс создания списка опорных изображений вызывают, может иметь место по меньшей мере одно опорное изображение в RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Несмотря на то, что начальный Список 0 и начальный Список 1 может идентифицировать одно или более опорных изображений из одних и тех же поднаборов опорных изображений, порядок, в котором декодер 30 видео добавляет опорные изображения в начальный Список 0, может быть другим, чем порядок, в котором декодер 30 видео добавляет опорные изображения в начальный Список 1.

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

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

Например, для того, чтобы создавать начальный Список 0, декодер 30 видео может сначала вносить в список (например, добавлять) опорные изображения, идентифицированные в RefPicSetStCurr0, в начальный Список 0, за которыми следуют опорные изображения, идентифицированные в RefPicSetStCurr1, в начальный Список 0, и затем опорные изображения, идентифицированные в RefPicSetLtCurr, в начальный Список 0. Для того чтобы создавать начальный Список 1, декодер 30 видео может сначала вносить в список (например, добавлять) опорные изображения, идентифицированные в RefPicSetStCurr1, в начальный Список 1, за которыми следуют опорные изображения, идентифицированные в RefPicSetStCurr0, в начальный Список 1, и затем опорные изображения, идентифицированные в RefPicSetLtCurr, в начальный Список 1.

Кроме того, в дополнение к добавлению опорных изображений в поднаборы опорных изображений в другом порядке, декодер 30 видео может использовать отличающееся число опорных изображений из каждого из поднаборов опорных изображений, когда создают Список 0 и Список 1. Например, Список 0 и Список 1 не должны содержать все из опорных изображений из RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Скорее, число опорных изображений, которые перечисляют, из этих примерных поднаборов опорных изображений для того, чтобы создавать начальный Список 0 и начальный Список 1, может быть основано на синтаксических элементах, которые указывают максимальное число опорных изображений в каждом из начального Списка 0 и начального Списка 1.

Например, для начального Списка 0, кодер 20 видео может передавать синтаксический элемент num_ref_idx_l0_active_minus1 для слайсов P и B в заголовке слайса, и синтаксический элемент num_ref_idx_l1_active_minus1 для слайсов B, для которых выполняют двойное предсказание. Как описано выше, num_ref_idx_l0_active_minus1 может определять максимальное число опорных изображений, которые могут быть в начальном Списке 0, и num_ref_idx_l1_active_minus1 может определять максимальное число опорных изображений, которые могут быть в начальном Списке 1. В некоторых примерах, может быть возможно, что значение num_ref_idx_l0_active_minus1 отличается от значения num_ref_idx_l1_active_minus1 несмотря на то, что это может не быть необходимо в каждом примере. В некоторых примерах значение num_ref_idx_l0_active_minus1 может представлять собой то же, что и значение num_ref_idx_l1_active_minus1.

Как описано выше, декодер 30 видео может принимать в кодированном битовом потоке значения для num_short_term_curr0 и num_short_term_curr1. Декодер 30 видео может определять переменную NumShortTermCurr0, равную num_short_term_curr0, и определять переменную NumShortTermCurr1, равную num_short_term_curr1. NumShortTermCurr0 может указывать число опорных изображений в поднаборе опорных изображений RefPicSetStCurr0, и NumShortTermCurr1 может указывать число опорных изображений в поднаборе опорных изображений RefPicSetStCurr1.

Декодер 30 видео также может принимать в кодированном битовом потоке значения для num_long_term_pps_curr и num_long_term_add_curr. Декодер 30 видео может определять переменную NumLongTermCurr как равную num_long_term_pps_curr плюс num_long_term_add_curr. NumLongTermCurr может указывать число опорных изображений в RefPicSetLtCurr.

Для того чтобы создавать начальный Список 0, декодер 30 видео может сначала добавлять опорные изображения в RefPicSetStCurr0 в начальный Список 0, пока декодер 30 видео не добавит все опорные изображения в RefPicSetStCurr0 в начальный Список 0, и до тех пор, пока число записей в начальном Списке 0 (например, число опорных изображений, идентифицированных в Списке 0) меньше num_ref_idx_l0_active_minus1 или равно ему. Например, NumShortTermCurr0 может указывать число опорных изображений в поднаборе опорных изображений RefPicSetStCurr0. В этом примере декодер 30 видео может вносить в список (например, добавлять) опорные изображения из поднабора опорных изображений RefPicSetStCurr0, пока число внесенных в список опорных изображений из RefPicSetStCurr0 не станет равно NumShortTermCurr0. Однако, несмотря на то, что опорные изображения из RefPicSetStCurr0 вносят в начальный Список 0, если общее число записей в начальном Списке 0 равно num_ref_idx_l0_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений в поднабор опорных изображений RefPicSetStCurr0, даже если имеют место дополнительные изображения в RefPicSetStCurr0, которые не перечислены в начальном Списке 0. В этом случае, декодер 30 видео может быть должен завершить создание начального Списка 0.

После того, как декодер 30 видео перечислил все опорные изображения в поднаборе опорных изображений RefPicSetStCurr0 и общее число записей в начальном Списке 0 меньше num_ref_idx_l0_active_minus1, затем декодер 30 видео может добавлять опорные изображения в RefPicSetStCurr1 до тех пор, пока декодер 30 видео не идентифицирует все опорные изображения в RefPicSetStCurr1, и до тех пор, пока число записей в начальном Списке 0 (например, число опорных изображений, идентифицированных в Списке 0) меньше num_ref_idx_l0_active_minus1 или равно ему. Например, подобно приведенному выше, NumShortTermCurr1 может указывать число опорных изображений в поднаборе опорных изображений RefPicSetStCurr1. В этом примере, декодер 30 видео может составлять список опорных изображений из поднабора опорных изображений RefPicSetStCurr1 до тех пор, пока число опорных изображений, внесенных в список из RefPicSetStCurr1, не станет равно NumShortTermCurr1. Однако, в то время как опорные изображения вносят в список из RefPicSetStCurr1, если общее число записей в начальном Списке 0 равно num_ref_idx_l0_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений из поднабора опорных изображений RefPicSetStCurr1, даже если имеют место дополнительные изображения в RefPicSetStCurr1, которые не внесены в начальный Списке 0. В этом случае, декодер 30 видео может быть должен завершить создание начального Списка 0.

После того, как декодер 30 видео вносит все опорные изображения в поднабор опорных изображений RefPicSetStCurr1 и общее число записей в начальном Списке 0 меньше num_ref_idx_l0_active_minus1, декодер 30 видео затем может составлять список опорных изображений в RefPicSetLtCurr, пока декодер 30 видео не внесет в список все опорные изображения в RefPicSetLtCurr и пока число записей в начальном Списке 0 (например, число опорных изображений, идентифицированных в Списке 0) меньше чем или равно num_ref_idx_l0_active_minus1. Например, подобно приведенному выше, NumLongTermCurr может указывать число опорных изображений в поднаборе опорных изображений RefPicSetLtCurr. В этом примере, декодер 30 видео может составлять список опорных изображений из поднабора опорных изображений RefPicSetLtCurr до тех пор, пока число опорных изображений, внесенных в список из RefPicSetLtCurr, не будет равно NumLongTermCurr. Однако в то время как опорные изображения из RefPicSetLtCurr вносят в начальный Список 0, если общее число записей в начальном Списке 0 равно num_ref_idx_l0_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений в поднаборе опорных изображений RefPicSetLtCurr, даже если имеют место дополнительные изображения в RefPicSetLtCurr, которые не внесены в начальный Список 0. В этом случае декодер 30 видео может быть должен завершить создание начального Списка 0.

Следующий псевдокод иллюстрирует образ действий, которым декодер 30 видео может создавать начальный Список 0.

cIdx=0 while(cIdx<=num_ref_idx_l0_active_minus1){for(i=0; I<NumShortTermCurr0 && cIdx<=num_ref_idx_l0_active_minus1; cIdx++, i++) RefPicList0[cIdx]=RefPicSetStCurr0[I] for(i=0; I <NumShortTermCurr1 && cIdx<=num_ref_idx_l0_active_minus1; cIdx++, i++) RefPicList0[cIdx]=RefPicSetStCurr1[I] for(i=0; I NumLongTermCurr && cIdx<=num_ref_idx_l0_active_minus1; cIdx++, i++) RefPicList0[cIdx]=RefPicSetLtCurr[I]}

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

Декодер 30 видео может аналогичным образом создавать начальный Список 1. Однако для того, чтобы создавать начальный Список 1, декодер 30 видео может сначала добавлять опорные изображения из поднабора опорных изображений RefPicSetStCurr1 в начальный Список 1, за чем следует поднабор опорных изображений RefPicSetStCurr0 в начальный Список 1 и за чем следует поднабор опорных изображений RefPicSetLtCurr в начальный Список 1. Также, подобно приведенному выше, если, в то время как опорные изображения вносят в список из какого-либо одного из поднаборов опорных изображений RefPicSetStCurr1, RefPicSetStCurr0 и RefPicSetLtCurr, общее число записей в начальном Списке 1 равняется num_ref_idx_l1_active_minus1, декодер 30 видео может останавливать добавление опорных изображений, даже если имеют место дополнительные опорные изображения в этих поднаборах опорных изображений.

Например, для того, чтобы создавать начальный Список 1, декодер 30 видео может сначала вносить в список опорные изображения из RefPicSetStCurr1, пока декодер 30 видео не идентифицирует все опорные изображения в RefPicSetStCurr1 и пока число записей в начальном Списке 1 (например, число опорных изображений, идентифицированных в Списке 1) меньше num_ref_idx_l1_active_minus1 или равно ему. Например, значение NumShortTermCurr1 может указывать, когда декодер 30 видео завершил внесение в список всех опорных изображений в поднаборе опорных изображений RefPicSetStCurr1. Однако, в то время как вносят в список опорные изображения из RefPicSetStCurr1, если общее число записей в начальном Списке 1 равно num_ref_idx_l1_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений в поднаборе опорных изображений RefPicSetStCurr1, даже если имеют место дополнительные изображения в RefPicSetStCurr1, которые не внесены в начальный Список 1. В этом случае, декодер 30 видео может быть должен завершить создание начального Списка 1.

После того как декодер 30 видео вносит в список все опорные изображения в поднаборе опорных изображений RefPicSetStCurr1 и общее число записей в начальном Списке 1 меньше num_ref_idx_l1_active_minus1, затем декодер 30 видео может составлять список опорных изображений из RefPicSetStCurr0, пока декодер 30 видео не внесет в список все опорные изображения в RefPicSetStCurr0 и пока число записей в начальном Списке 1 (например, число опорных изображений, идентифицированных в Списке 1) меньше num_ref_idx_l1_active_minus1 или равно ему. Например, подобно приведенному выше, значение NumShortTermCurr0 может указывать, когда декодер 30 видео завершил внесение в список всех опорных изображений в поднаборе опорных изображений RefPicSetStCurr0. Однако, в то время как вносят опорные изображения из RefPicSetStCurr0 в начальный Список 1, если общее число записей в начальном Списке 1 равно num_ref_idx_l1_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений в поднаборе опорных изображений RefPicSetStCurr0 даже если имеют место дополнительные изображения в RefPicSetStCurr0, которые не внесены в начальный Список 1. В этом случае, декодер 30 видео может быть должен завершать создание начального Списка 1.

После того как декодер 30 видео вносит в список все опорные изображения в поднаборе опорных изображений RefPicSetStCurr0 и общее число записей в начальном Списке 1 меньше num_ref_idx_l1_active_minus1, декодер 30 видео тогда может составлять список опорных изображений в RefPicSetLtCurr, пока декодер 30 видео не внесет в список все опорные изображения в RefPicSetLtCurr и пока число записей в начальном Списке 1 (например, число опорных изображений, идентифицированных в Списке 1) меньше num_ref_idx_l1_active_minus1 или равно ему. Например, подобно приведенному выше, значение NumLongTermCurr может указывать когда декодер 30 видео завершил внесение в список опорных изображений в поднаборе опорных изображений RefPicSetLtCurr. Однако, в то время как вносят опорные изображения из RefPicSetLtCurr, если общее число записей в начальном Списке 1 равно num_ref_idx_l1_active_minus1, то декодер 30 видео может останавливать добавление опорных изображений в поднаборе опорных изображений RefPicSetLtCurr, даже если имеют место дополнительные изображения в RefPicSetLtCurr, которые не внесены в начальный Список 1. В этом случае, декодер 30 видео быть должен завершать создание начального Списка 1.

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

cIdx=0 while(cIdx<=num_ref_idx_l1_active_minus1){for(i=0; i<NumShortTermCurr1 && cIdx<=num_ref_idx_l1_active_minus1; cIdx++, i++) RefPicList1[cIdx]=RefPicSetStCurr1[i] for(i=0; i<NumShortTermCurr0 && cIdx<=num_ref_idx_l1_active_minus1; cIdx++, i++) RefPicList1[cIdx]=RefPicSetStCurr0[i] for(i=0; i<NumLongTermCurr && cIdx<=num_ref_idx_l1_active_minus1; cIdx++, i++)RefPicList1[cIdx]=RefPicSetLtCurr[i]}

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

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

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

Соответственно, кодер видео (например, кодер 20 видео или декодер 30 видео) можно выполнять с возможностью кодировать (например, кодировать или декодировать) информацию, указывающую опорные изображения, которые относятся к набору опорных изображений. Как описано выше, набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования.

Кодер видео также можно выполнять с возможностью создавать множество поднаборов опорных изображений, каждый из которых идентифицирует ноль или больше опорных изображений. Например, кодер видео может создавать по меньшей мере поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Кодер видео может создавать дополнительные поднаборы опорных изображений, таких как те, что описаны выше.

Тогда кодер видео может добавлять опорные изображения из первого поднабора опорных изображений, за которыми следуют опорные изображения из второго поднабора опорных изображений, за которыми следуют опорные изображения из третьего поднабора опорных изображений, в начальный список опорных изображений до тех пор, пока число записей начального списка опорных изображений не больше, чем максимальное число допустимых записей списка опорных изображений. Например, кодер видео может составлять список опорных изображений из поднабора опорных изображений RefPicSetStCurr0, за которым следует поднабор опорных изображений RefPicSetStCurr1 и за которым следует поднабор RefPicSetLtCurr, в начальный Список 0 до тех пор, пока число записей в начальном Списке 0 не больше num_ref_idx_l0_active_minus1. Опять, значение num_ref_idx_l0_active_minus1 может указывать максимальное число допустимых записей списка опорных изображений для Списка 0.

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

Кодер видео может аналогичным образом создавать начальный Список 1. Например, кодер видео может добавлять опорные изображения из второго поднабора опорных изображений, за которыми следуют опорные изображения из первого поднабора опорных изображений и за которым следуют опорные изображения из третьего поднабора опорных изображений, в начальный Список 1 до тех пор, пока число записей начального списка опорных изображений в начальном Списке 1 не больше num_ref_idx_l1_active_minus1. Синтаксический элемент num_ref_idx_l1_active_minus1 может определять максимальное число допустимых записей в Списке 1.

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

Как показано в приведенном выше псевдокоде, декодер 30 видео может создавать начальный Список 0, пока cIdx меньше или равен num_ref_idx_l0_active_minus1, и может создавать начальный Список 1, пока cIdx меньше или равен num_ref_idx_l1_active_minus1. Это может вести к тому, что декодер 30 видео создает начальный Список 0 и начальный Список 1 без какой-либо незавершенной записи в списках опорных изображений. Например, в некоторых других способах кодирования видео, декодер видео для этих других способов видео будет создавать начальные Список 0 и Список 1, используя способы отличные от тех, что описаны в этом раскрытии. Для этих других способов кодирования видео, если число записей в начальном Списке 0 и начальном Списке 1 меньше максимального допустимого числа записей, декодер видео для этих других способов кодирования видео будет вносить остающиеся записи в Список 0 и Список 1 с «нет опорного изображения» для незавершенных записей. Незавершенные записи относятся к записям в Списке 0 и Списке 1 после последней записи, которая идентифицирует опорное изображение и вплоть до последней возможной записи.

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

В соответствии со способами по этому раскрытию, декодер 30 видео может создавать начальный Список 0 и начальный Список 1 так, что незавершенные записи отсутствуют. Также, в примерах, где модификация списка опорных изображений не требуется, конечный Список 0 и конечный Список 1 могут равняться начальному Списку 0 и начальному Списку 1. Следовательно, в примерах, где модификация списка опорных изображений не требуется, декодер 30 видео может создавать конечный Список 0 и конечный Список 1 так, что в них нет незавершенных записей. Даже когда требуется модификация списка опорных изображений, модификация может не вести к каким-либо незавершенным записям. Следовательно, даже в примерах, где требуется модификация списка опорных изображений, декодер 30 видео может создавать конечный Список 0 и конечный Список 1 так, что в них нет незавершенных записей.

Например, Список 0 и Список 1 можно рассматривать в качестве списков с записями, и каждая запись может идентифицировать опорное изображение (например, посредством его значения POC). Другими словами, декодер 30 видео может идентифицировать опорное изображение посредством его значения POC в каждой записи Списка 0 и Списка 1. Число записей в Списке 0 и Списке 1 можно определять посредством синтаксических элементов num_ref_idx_l0_active_minus1 и num_ref_idx_l1_active_minus1, соответственно.

Чтобы гарантировать, что незавершенные записи отсутствуют, декодер 30 видео может повторно вносить (например, добавлять или идентифицировать) опорные изображения из поднаборов опорных изображений в начальный Список 0 и начальный Список 1, пока декодер 30 видео не определит, какое опорное изображение следует идентифицировать в каждой возможной записи начального Списка 0 и начального Списка 1. Например, как описано выше, для создания начального Списка 0, после добавления опорных изображений из поднаборов опорных изображений RefPicSetStCurr0 и RefPicSetStCurr1 в начальный Список 0, декодер 30 видео может добавлять опорные изображения из поднабора опорных изображений RefPicSetLtCurr в начальный Список 0.

В некоторых примерах может быть возможно, что общее число записей в начальном Списке 0 меньше максимального числа допустимых записей в Списке 0 после того как декодер 30 видео добавляет опорные изображения из поднабора опорных изображений RefPicSetLtCurr в начальный Список 0. Например, в псевдокоде для создания начального Списка 0, cIdx может указывать число записей в Списке 0. В некоторых примерах, после того как декодер 30 видео идентифицирует опорные изображения в RefPicSetLtCurr в начальном Списке 0, значение cIdx может быть меньше num_ref_idx_l0_active_minus1, где num_ref_idx_l0_active_minus1 точно определяет максимальное число допустимых записей в Списке 0.

В соответствии со способами, описанными в этом раскрытии, после внесения опорных изображений из трех из множества поднаборов опорных изображений, если число записей в начальном Списке 0 меньше максимального числа допустимых записей, декодер 30 видео может повторно добавлять опорные изображения из трех поднаборов опорных изображений, пока все записи в Списке 0 не будут заполнены. Например, после того как декодер 30 видео добавляет опорные изображения из набора опорных изображений RefPicSetLtCurr и число записей в начальном Списке 0 меньше максимального числа допустимых записей, тогда декодер 30 видео может повторно вносить (например, повторно добавлять или повторно идентифицировать) опорные изображения из поднабора опорных изображений RefPicSetStCurr0.

В аспектах, описанных в этом раскрытии, когда декодер 30 видео вносит в список опорные изображения из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr, декодер 30 видео можно рассматривать как добавляющий опорные изображения из этого множества поднаборов опорных изображений в первый набор записей в списке опорных изображений (например, Список 0). Например, первый набор записей может представлять собой записи в списке опорных изображений, в котором декодер 30 видео идентифицировал опорные изображения из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Затем, если число записей в списке опорных изображений меньше максимального допустимого числа записей, декодер 30 видео может повторно вносить в список (например, повторно добавлять или повторно идентифицировать) одно или более опорных изображений из по меньшей мере одного из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr в записи в списке опорных изображений, которые следуют за первым набором записей. Записи, следующие за первым набором записей, могут представлять собой записи после первого набора записей, в которые декодер 30 видео добавляет уже внесенные в списки опорные изображения из одного или более поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr, как описано ниже.

Если, пока повторно добавляют опорные изображения из поднабора опорных изображений RefPicSetStCurr0, общее число записей в начальном Списке 0 равняется num_ref_idx_l0_active_minus1, декодер 30 видео может останавливать повторное добавление опорных изображений в начальном Списке 0. В этом случае, декодер 30 видео быть должен завершать создание начального Списка 0, а незавершенные записи могут отсутствовать. Иным образом, декодер 30 видео может повторно добавлять опорные изображения из поднабора опорных изображений RefPicSetStCurr0, пока все опорные изображения из поднабора опорных изображений RefPicSetStCurr0 не будут повторно внесены.

Если после повторного добавления всех опорных изображений в поднаборе опорных изображений RefPicSetStCurr0, число записей в начальном Списке 0 меньше num_ref_idx_l0_active_minus1, то декодер 30 видео может повторно добавлять опорные изображения из поднабора опорных изображений RefPicSetStCurr1, действуя образом, схожим с образом действий, которыми декодер 30 видео повторно вносил опорные изображения из поднабора опорных изображений RefPicSetStCurr0. Если после повторного добавления всех опорных изображений в поднаборе опорных изображений RefPicSetStCurr1 число записей в начальном Списке 0 меньше num_ref_idx_l0_active_minus1, то декодер 30 видео может повторно добавлять опорные изображения из поднабора опорных изображений RefPicSetLtCurr, действуя образом, схожим с образом действий, которыми декодер 30 видео повторно вносил опорные изображения из поднаборов опорных изображений RefPicSetStCurr0 и RefPicSetStCurr1. Декодер 30 видео повторно добавляет опорные изображения из поднаборов опорных изображений, пока число записей в начальном Списке 0 не будет равно максимальному числу допустимых записей для Списка 0 (т.е., равно num_ref_idx_l0_active_minus1).

Например, допустим, что одно опорное изображение имеет место в RefPicSetStCurr0, одно опорное изображение в RefPicSetCurr1 и одно опорное изображение в RefPicSetLtCurr. Также, допустим, что num_ref_idx_l0_active_minus1 равно пяти. В этом примере, декодер 30 видео может идентифицировать опорное изображение в RefPicSetStCurr0 в двух записях в начальном Списке 0. Например, декодер 30 видео может идентифицировать опорное изображение в RefPicSetStCurr0 в первой записи начального Списка 0 и повторно идентифицировать опорное изображение в RefPicSetStCurr0 в четвертой записи начального Списка 0. В этом примере, значение индекса для опорного изображения в RefPicSetStCurr0 может быть индекс[0] для первой записи в начальном Списке 0 и индекс[3] для четвертой записи в начальном Списке 0. Соответственно, в некоторых примерах одно опорное изображение из одного из поднаборов опорных изображений можно вносить в списки (например, идентифицировать) больше чем один раз в начальных списках опорных изображений.

Декодер 30 видео может аналогичным образом создавать начальный Список 1 так, что незавершенные записи отсутствуют в начальном Списке 1. Например, декодер 30 видео может повторно добавлять опорные изображения из поднаборов опорных изображений RefPicSetStCurr1, RefPicSetStCurr0 и RefPicSetLtCurr, в этом порядке, пока число записей в начальном Списке 1 не будет равно максимальному числу допустимых записей в Списке 1 (т.е., равно num_ref_idx_l1_active_minus1).

Таким образом, поскольку циклы «for» вложены в цикл «while», в приведенном выше псевдокоде для создания начального Списка 0 и начального Списка 1, декодер 30 видео может создавать начальный Список 0 и начальный Список 1 так, что незавершенные записи отсутствуют в начальном Списке 0 и начальном Списке 1 (т.е., нет незавершенных записей после процесса инициализации). В некоторых примерах, каждая из записей в начальном Списке 0 и начальном Списке 1 может идентифицировать опорное изображение из одного из поднаборов опорных изображений. В некоторых примерах может быть возможно, что одно или более опорных изображений из одного из поднаборов опорных изображений идентифицируют больше чем один раз в конечных списках опорных изображений, но в различных записях с различными значениями индекса.

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

Соответственно, кодер видео (например, кодер 20 видео или декодер 30 видео) можно выполнять с возможностью кодировать (например, кодировать или декодировать) информацию, указывающую опорные изображения, которые относятся к набору опорных изображений. Как описано выше, набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования.

Кодер видео может создавать множество поднаборов опорных изображений, каждый из которых идентифицирует ноль или больше опорных изображений (например, поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr). Кодер видео может составлять список (например, идентифицировать или добавлять) опорные изображения из множества поднаборов опорных изображений в первый набор записей в списке опорных изображений. Кодер видео может определять, равно ли число записей в списке опорных изображений максимальному числу допустимых записей в списке опорных изображений.

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

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

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

Используемая в этом раскрытии фраза «модифицированный список опорных изображений» относится к списку опорных изображений после модификации начального списка опорных изображений. Модифицированный список опорных изображений может представлять собой конечный список опорных изображений. Число записей в модифицированном списке опорных изображений представляет собой num_ref_idx_l0_active_minus1 + 1 для Списка 0 и num_ref_idx_l1_active_minus1 + 1 для Списка 1. Опорное изображение может встречаться с больше чем одним индексом (например, записью) в модифицированных опорных списках для Списка 0 и Списка 1.

Для модификации списка опорных изображений, кодер 20 видео может передавать синтаксические элементы из таблицы 6.

Таблица 6 Синтаксис модификации списка опорных изображений ref_pic_list_modification(){ Дескриптор if(slice_type !=2){ ref_pic_list_modification_flag_l0 u(1) if(ref_pic_list_modification_flag_l0) do { modification_of_ref_pic_idc ue(v)

if(modification_of_ref_pic_idc !=3) ref_pic_set_idx }while(modification_of_ref_pic_idc !=3) } if(slice_type = =1){ ref_pic_list_modification_flag_l1 u(1) if(ref_pic_list_modification_flag_l1) do{ modification_of_ref_pic_idc ue(v) if(modification_of_ref_pic_idc !=3) ref_pic_set_idx }while(modification_of_ref_pic_idc !=3) } }

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

ref_pic_list_modification_flag_l0, равное 1, может точно определять, что синтаксический элемент modification_of_ref_pic_idc присутствует для того, чтобы точно определять список опорных изображений 0. ref_pic_list_modification_flag_l0, равное 0, точно определяет, что этот синтаксический элемент не присутствует.

Когда ref_pic_list_modification_flag_l0 равно 1, число раз, когда modification_of_ref_pic_idc не равно 3 после ref_pic_list_modification_flag_l0, может не превышать num_ref_idx_l0_active_minus1 + 1.

ref_pic_list_modification_flag_l1, равное 1, может точно определять, что синтаксис modification_of_ref_pic_idc присутствует для того, чтобы точно определять список опорных изображений 1. ref_pic_list_modification_flag_l1, равное 0, может точно определять, что этот синтаксический элемент не присутствует.

Когда ref_pic_list_modification_flag_l1 равно 1, число раз, когда modification_of_ref_pic_idc не равно 3 после ref_pic_list_modification_flag_l1, может не превышать num_ref_idx_l1_active_minus1+1.

modification_of_ref_pic_idc вместе с short_term_ref_pic_set_idx или long_term_ref_pic_set_idx могут точно определять, какие из опорных изображений повторно преобразуют. Значения modification_of_ref_pic_idc точно определяют в таблице 7. Значение первого modification_of_ref_pic_idc, которое следует сразу после ref_pic_list_modification_flag_l0 или ref_pic_list_modification_flag_l1, может не быть равно 3.

ref_pic_set_idx точно определяет индекс, для RefPicSetStCurr0, RefPicSetStCurr1 или RefPicSetLtCurr, опорного изображения, которое перемещают в текущий индекс в списке опорных изображений. Значение ref_pic_set_idx может находиться в диапазоне от 0 до max_num_ref_frames включительно.

Таблица 7 Операции modification_of_ref_pic_idc для модификации списков опорных изображений modification_of_ref_pic_idc Предусмотренная модификация 0 Для списка 0: ref_pic_set_idx присутствует и соответствует индексу для RefPicSetStCurr0; для списка 1: ref_pic_set_idx присутствует и соответствует индексу для RefPicSetStCurr1 1 Для списка 0: ref_pic_set_idx присутствует и соответствует индексу для RefPicSetStCurr1; Для списка 1: ref_pic_set_idx присутствует и соответствует индексу для RefPicSetStCurr0

2 ref_pic_set_idx присутствует и соответствует индексу для RefPicSetLtCurr 3 ref_pic_idx не присутствует и заканчивает цикл для модификации начального списка опорных изображений

Для модификации списка опорных изображений, когда ref_pic_list_modification_flag_l0 равно 1, декодер 30 видео может модифицировать начальный список опорных изображений 0 (т.е., начальный Список 0), и когда ref_pic_list_modification_flag_l1 равно 1, декодер 30 видео может модифицировать начальный список опорных изображений 1 (т.е., начальный Список 1). Чтобы способствовать пониманию модификации списка опорных изображений, предположим, что переменная refIdxL0 представляет собой индекс для начального Списка 0, и переменная refIdxL1 представляет собой индекс для начального Списка 1. Другими словами, refIdxL0 может идентифицировать запись начального Списка 0 (т.е., индекс для начального Списка 0 идентифицирует запись начального Списка 0), и refIdxL1 может идентифицировать запись начального Списка 1. Переменные refIdxL0 и refIdxL1 изначально можно задавать равными 0.

Декодер 30 видео может обрабатывать синтаксические элементы для modification_of_ref_pic_idc при обработке синтаксических элементов, встречающихся в битовом потоке. Например, если кодер 20 видео передает, что требуется модификация списка опорных изображений для начального Списка 0, то декодер 30 видео может обрабатывать порядок, в котором кодер 20 видео передавал синтаксические элементы modification_of_ref_pic_idc для модификации начального Списка 0. Аналогичным образом, если кодер 20 видео передает, что требуется модификация списка опорных изображений для начального Списка 1, то декодер 30 видео может обрабатывать порядок, в котором кодер 20 видео передает синтаксические элементы modification_of_ref_pic_idc для модификации начального Списка 1.

Значение синтаксического элемента modification_of_ref_pic_idc может составлять 0, 1, 2 или 3, как указано в таблице 7. Если значение синтаксического элемента modification_of_ref_pic_idc составляет 3, то декодер 30 видео может останавливать модификацию начального списка опорных изображений. Иным образом, декодер 30 видео может продолжать модифицировать начальный список опорных изображений, пока значение синтаксического элемента modification_of_ref_pic_idc составляет 3. Например, кодер 20 видео может передавать множество значений для синтаксического элемента modification_of_ref_pic_idc, и декодер 30 видео может обрабатывать каждое из значений в порядке, в котором значения присутствуют в кодированном битовом потоке. Когда декодер 30 видео обрабатывает значение синтаксического элемента modification_of_ref_pic_idc, чтобы оно было 3, декодер 30 видео может определять, что дополнительная модификация не требуется.

Значение синтаксического элемента modification_of_ref_pic_idc, отличное от 3 (т.е., 0, 1 или 2), может указывать, из какого поднабора опорных изображений декодеру 30 видео идентифицировать опорное изображение, которое подлежит внесению (например, добавлению) в текущую запись списка опорных изображений. Как описано выше, текущую запись списка опорных изображений можно идентифицировать посредством значения refIdxLX, где LX представляет собой или Список 0 или Список 1. Например, если декодер 30 видео модифицирует начальный Список 0, и modification_of_ref_pic_idc равно 0, то согласно таблице 7, декодер 30 видео может определять, какое опорное изображение из RefPicSetStCurr0 подлежит идентификации в текущей записи списка опорных изображений, основываясь на значении Ref_pic_set_idx. Если декодер 30 видео модифицирует начальный Список 1, и modification_of_ref_pic_idc равно 0, то согласно таблице 7, декодер 30 видео может определять, какое опорное изображение из RefPicSetStCurr1 подлежит идентификации в текущей записи списка опорных изображений, основываясь на значении Ref_pic_set_idx. Например, переменная curRefPicSet может определять, какой поднабор опорных изображений декодер 30 видео должен использовать для модификации начального Списка 0 или начального Списка 1.

Например, если modification_of_ref_pic_idc равно 0, а декодер 30 видео модифицирует начальный Список 0, то curRefPicSet равно поднабору опорных изображений RefPicSetStCurr0. Если modification_of_ref_pic_idx равно 0, а декодер 30 видео модифицирует начальный Список 1, то curRefPicSet равно поднабору опорных изображений RefPicSetStCurr1.

Если декодер 30 видео модифицирует начальный Список 0, а modification_of_ref_pic_idc равно 1, то согласно таблице 7 декодер 30 видео может определять, какое опорное изображение из RefPicSetStCurr1 подлежит идентификации в текущей записи списка опорных изображений, основываясь на значении Ref_pic_set_idx. Если декодер 30 видео модифицирует начальный Список 1, а modification_of_ref_pic_idc равно 1, то согласно таблице 7 декодер 30 видео может определять, какое опорное изображение из RefPicSetStCurr0 подлежит идентификации в текущей записи списка опорных изображений, основываясь на значении ref_pic_set_idx.

В этом случае, если modification_of_ref_pic_idc равно 1, а декодер 30 видео модифицирует начальный Список 0, то curRefPicSet равно поднабору опорных изображений RefPicSetStCurr1. Если modification_of_ref_pic_idx равно 1, а декодер 30 видео модифицирует начальный Список 1, то curRefPicSet равно поднабору опорных изображений RefPicSetStCurr0.

Если декодер 30 видео модифицирует начальный Список 0 или начальный Список 1, и modification_of_ref_pic_idc равно 2, то согласно таблице 7 декодер 30 видео может определять, какое опорное изображение из RefPicSetLtCurr подлежит идентификации в текущей записи списка опорных изображений, основываясь на значении Ref_pic_set_idx. В этом примере, если modification_of_ref_pic_idc равно 2, а декодер 30 видео модифицирует начальный Список 0 или начальный Список 1, то curRefPicSet равно поднабору опорных изображений RefPicSetLtCurr.

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

Переменная curRefPicPoc может равняться PicOrderCnt(curRefPicSet[ref_pic_set_idx]). Таким образом, значение curRefPicPoc может представлять собой значение POC опорного изображения, идентифицированного в записи ref_pic_set_idx в curRefPicSet. Как описано выше, curRefPicSet может равняться RefPicSetStCurr0, RefPicSetStCurr1 или RefPicSetLtCurr на основе значения синтаксического элемента modification_of_ref_pic_idc и на основе того, модифицирует ли декодер 30 видео начальный Список 0 или начальный Список 1.

Декодер 30 видео может реализовать следующий псевдокод для модификации списка опорных изображений. Например, в следующем псевдокоде декодер 30 видео может идентифицировать изображение со значением POC, равным curRefPicPoc, в записи начального списка опорных изображений. Переменная refIdxLX указывает положение индекса для записи в начальном списке опорных изображений. Например, когда декодер 30 видео модифицирует начальный Список 0, refIdxLX может быть refIdxL0, а когда декодер 30 видео модифицирует начальный Список 1, refIdxLX может быть refIdxL1.

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

Тогда декодер 30 видео может приращивать значение переменной RefIdxLX. В этом псевдокоде длину RefPicListX (т.е., RefPicList0 или RefPicList1) временно делают на один элемент длиннее, чем длина, необходимая для конечного списка опорных изображений. Например, как описано выше, декодер 30 видео может начинать с последней записи в начальном списке опорных изображений, перемещать эту последнюю запись во временную запись, перемещать вторую с конца запись в последнюю запись, и так далее для того, чтобы модифицировать начальный список опорных изображений. После исполнения псевдокода, декодер 30 видео может сохранять только записи в индексе с 0 до num_ref_idx_lX_active_minus1, где num_ref_idx_lX_active_minus1 представляет собой num_ref_idx_l0_active_minus1 для Списка 0 и num_ref_idx_l1_active_minus1 для Списка 1.

for(cIdx=num_ref_idx_lX_active_minus1+1; cIdx>refIdxLX; cIdx− −) RefPicListX[cIdx]=RefPicListX[cIdx−1] RefPicListX[refIdxLX++]=опорное изображении с PicOrderCnt, равным currRefPicPoc nIdx=refIdxLX
for(cIdx=refIdxLX; cIdx<=num_ref_idx_lX_active_minus1+1; cIdx++) if(PicOrderCnt(RefPicListX[cIdx])!=currRefPicPoc) RefPicListX[ nIdx++]=RefPicListX[cIdx].

В приведенном выше псевдокоде RefPicListX относится или к RefPicList0 (т.е., конечный Список 0) или к RefPicList1 (т.е., конечный Список 1), основываясь на том, модифицирует ли декодер 30 видео начальный Список 0 или начальный Список 1. num_ref_idx_lX_active_minus1 относится или к num_ref_idx_l0_active_minus1 или к ref_idx_l1_active_minus1, основываясь на том, декодер 30 видео модифицирует ли начальный Список 0 или начальный Список 1.

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

Соответственно, в некоторых примерах, кодер видео (например, кодер 20 видео или декодер 30 видео) может создавать начальный список опорных изображений (например, начальный Список 0 или начальный Список 1) с использованием способов, описанных выше. Кодер видео может определять, требуется ли модификация списка опорных изображений, основываясь на кодированных синтаксических элементах в кодированном битовом потоке. Когда требуется модификация списка опорных изображений, кодер видео может модифицировать начальный список опорных изображений.

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

В качестве одного из примеров, кодер видео может создавать поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Для того чтобы идентифицировать опорное изображение по меньшей мере в одном из этих поднаборов опорных изображений, кодер видео может определять индекс по меньшей мере для одного из этих поднаборов опорных изображений. Кодер видео затем может определять опорное изображение, идентифицированное в записи по меньшей мере одного из этих поднаборов опорных изображений, основываясь на определяемом индексе.

Например, кодер видео может кодировать (например, кодировать или декодировать) первый синтаксический элемент, такой как синтаксический элемент modification_of_ref_pic_idc*, с использованием которого кодер видео идентифицирует один из поднаборов опорных изображений (например, один из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr). Кодер видео может кодировать второй синтаксический элемент, такой как синтаксический элемент ref_pic_set_idx, который указывает индекс для идентифицированного поднабора опорных изображений (например, один из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr).

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

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

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

В некоторых примерах DPB для кодера 20 видео или декодера 30 видео может хранить декодированные изображения для переупорядочивания вывода или задержки вывода. Например, декодер 30 видео может определять, что декодированные изображения следует переупорядочивать для вывода или что вывод декодированного изображения следует задерживать. В этих примерах DPB декодера 30 видео может хранить декодированные изображения для переупорядочивания вывода или задержки вывода.

Способы управления DPB, описанные в этом раскрытии, могут быть направлены на образ действий, в которых DPB выводит и удаляет декодированные изображения. Синтаксический элемент output_flag может влиять на процесс вывода и удаления декодированного изображения, и его можно определять в качестве части семантики единицы сетевого уровня абстракции (NAL). Единицу NAL можно определять как синтаксическую структуру, которая содержит указание типа данных, которого следует придерживаться, и байты, которые содержат эти данные в форме полезной нагрузки последовательности необработанных байтов (RBSP), смешанных по мере необходимости с байтами предотвращения эмуляции. RBSP может представлять собой синтаксическую структуру, которая содержит целое число байтов, которая инкапсулирована в единицу NAL. RBSP может быть или пустой или имеет форму строки битов данных, которая содержит синтаксические элементы, за которым исследует стоповый бит RBSP, и за которым следует ноль или больше последующих битов, равных 0. В таблице 8 определен синтаксис единицы NAL.

Таблица 8 Синтаксис единицы NAL nal_unit(NumBytesInNALunit){ Дескриптор forbidden_zero_bit f(1) nal_ref_idc u(2)

nal_unit_type u(5) NumBytesInRBSP=0 nalUnitHeaderкBytes =1 if(nal_unit_type= =1||nal_unit_type = =4||nal_unit_type==5 ){ temporal_id u(3) output_flag u(1) reserved_one_4bits u(4) nalUnitHeaderкBytes +=1 } for(i=nalUnitHeaderкBytes; i<NumBytesInNALunit; i++){ if(i+2<NumBytesInNALunit && next_bits( 24 )= =0×000003){ rbsp_byte[ NumBytesInRBSP++ ] b(8) rbsp_byte[ NumBytesInRBSP++ ] b(8) i+=2 emulation_prevention_three_byte /* равно 0×03*/ f(8) } else rbsp_byte[ NumBytesInRBSP++] b(8) } }

В таблице 8, output_flag может влиять на процесс вывода и удаления декодированного изображения, как описано более подробно ниже. Для любого изображения, если output_flag равен 1, изображение предназначено для вывода. Иначе изображение никогда не выводят. В способах, описанных в этом раскрытии, переменная OutputFlag равна синтаксическому элементу output_flag.

В некоторых примерах, любая кодированная единица NAL слайса единицы с текущим доступом может отличаться от любой кодированной единицы NAL слайса кодированного изображения единицы с предшествующим доступом одним или более из следующих путей. Например, могут различаться значения pic_parameter_set_id, могут различаться значения nal_ref_idc, причем одно из значений nal_ref_idc равно 0. Могут отличаться значения pic_order_cnt_lsb. Могут отличаться значения IdrPicFlag. IdrPicFlag может быть равно 1 для обоих, а значения idr_pic_id могут различаться.

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

Как показано в таблице 4, синтаксис заголовка слайса может содержать синтаксический элемент pic_parameter_set_id, синтаксический элемент pic_order_cnt_lsb, синтаксический элемент IdrPicFlag и синтаксический элемент idr_pic_id. Как показано в таблице 8, синтаксис единицы NAL может содержать синтаксический элемент nal_ref_idc.

В иллюстративных целях способы управления DPB описаны в отношении гипотетического эталонного декодера (HRD). HRD можно определять как гипотетическую модель декодера, которая точно определяет ограничения вариабельности соответствия потоков единиц NAL или соответствия потоков байтов, которые создает процесс кодирования. Однако в соответствии со способами, описанными в этом раскрытии, декодер 30 видео может реализовать способы управления DPB и, в некоторых примерах, может быть возможно, что кодер 20 видео также реализует способы управления DPB.

Модель HRD может определять буфер кодированных изображений (CPB), моментальный процесс декодирования и буфер декодированных изображений (DPB). CPB может быть схож с CPB моделей HDR, которые определены в других предшествующих стандартах (т.е., CPB может хранить кодированные изображения). Способы, описанные в этом раскрытии направлены на операции DPB, которые отличаются от операций в других стандартах. Снова следует понимать, что декодер 30 видео и возможно кодер 20 видео может реализовать операции DPB, как описано ниже.

В целом, способы, описанные в этом раскрытии, связаны с выводом и удалением декодированных изображений в DPB. Вывод декодированного изображения в этом контексте обозначает вывод декодированного изображения для отображения, хранения или других целей. Однако декодированное изображение, которое выводят, не обязательно нужно удалять из DPB. Например, декодер 30 видео может не удалять декодированное изображение, которое выводят из DPB, поскольку декодеру 30 видео может быть нужно использовать это декодированное изображение в качестве опорного изображения для интер-предсказания последующего изображения. Удаление декодированного изображения в этом контексте обозначает удаление декодированного изображения из DPB.

Например, декодер 30 видео может хранить декодированные изображения в DPB декодера 30 видео в порядке, в котором изображение декодируют. Однако, порядок декодирования изображений может не быть таким же как порядок вывода изображений. Например, они могут представлять собой изображения, следующие за текущим изображением в порядке декодирования, которые подлежат выводу раньше текущего изображения. Соответственно, в некоторых примерах декодер 30 видео может осуществлять переупорядочивание, посредством которого декодер 30 видео переупорядочивает изображения в DPB, которые упорядочены в порядке декодирования в порядок вывода. Декодер 30 видео затем может выводить декодированные изображения в их порядке вывода. Декодер 30 видео также может удалять изображения из декодированного изображения, если изображение не требуется для вывода (т.е., оно выведено или не предназначено для вывода) и не требуется для интер-предсказания (т.е., не должно быть использовано в качестве опорного изображения для интер-предсказания).

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

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

В некоторых примерах декодер 30 видео может удалять декодированное изображение перед декодированием текущего изображения. Однако, декодер 30 видео может удалять декодированное изображение после создания списка(ов) опорных изображений. Например, декодер 30 видео может получать набор опорных изображений и может создавать списки опорных изображений, основываясь на наборе опорных изображений. Затем, перед декодированием текущего изображения, декодер 30 видео может удалять декодированное изображение. В некоторых примерах, декодер 30 видео также может выводить декодированное изображение после создания списка(ов) опорных изображений.

В этом раскрытии описаны способы удаления декодированных изображений в DPB по меньшей мере с двух точек зрения. С первой точки зрения, декодер 30 видео может удалять декодированные изображения, основываясь на времени вывода, если изображения предназначены для вывода. Со второй точки зрения, декодер 30 видео может удалять декодированные изображения, основываясь на значениях POC, если изображения предназначено для вывода. С любой точки зрения, декодер 30 видео может удалять декодированные изображения, которые не требуются для вывода (т.е., уже выведены или не предназначены для вывода), когда декодированное изображение не присутствует в наборе опорных изображений и перед декодированием текущего изображения.

DPB может содержать множество буферов и каждый буфер может хранить декодированное изображение, которое подлежит использованию в качестве опорного изображения или которое удерживают для будущего вывода. Изначально DPB пуст (т.е., заполнение DPB устанавливают на ноль). В описанных примерных способах удаление декодированных изображений из DPB может происходить до декодирования текущего изображения, но после того, как декодер 30 видео разбирает заголовок слайса первого слайса текущего изображения.

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

Если текущее изображение представляет собой IDR изображение и когда IDR изображение представляет собой не первое IDR изображение и значение значения pic_width_in_luma_samples или pic_height_in_luma_samples или max_dec_frame_buffering, полученных из набора параметров активной последовательности, отличается от значения pic_width_in_luma_samples или pic_height_in_luma_samples или max_dec_frame_buffering, полученных из набора параметров последовательности, которая была активна для предшествующего изображения, соответствующим образом декодер 30 видео может заключать, что синтаксический элемент no_output_of_prior_pics_flag равен 1, независимо от фактического значения no_output_of_prior_pics_flag. Если текущее изображение представляет собой IDR изображение и когда no_output_of_prior_pics_flag равно 1 или предположительно равно 1, декодер 30 видео может опустошать все буферы DPB без вывода изображений в DPB, и может задавать заполнение DPB, равное 0.

Как указано выше в таблице 1, набор параметров последовательности может содержать синтаксические элементы pic_width_in_luma_samples и pic_height_in_luma_samples. Набор параметров последовательности также может содержать синтаксический элемент max_dec_frame_buffering. Как указано выше в таблице 4, синтаксис заголовка слайса может содержать синтаксический элемент no_output_of_prior_pics_flag.

Когда текущее изображение представляет собой не IDR изображение, декодер 30 видео может удалять все изображения (m) в DPB, для которых следующие условия являются истиной. Первое условие может состоять в том, что изображение не включено в набор опорных изображений текущего изображения. Второе условие может состоять в том, что изображение имеет OutputFlag, равное 0, или его время вывода из DPB меньше или равно времени удаления из CPB текущего изображения. В этом примере, время удаления из CPB представляет собой tr(n), которое представляет собой момент, в который происходит процесс удаления (например, время перед декодированием текущего изображения). Время вывода из DPB декодированного изображения m можно определять посредством переменной to,dpb(m). Следовательно, время вывода из DPB, которое меньше или равно времени удаления из CPB, может быть представлено как to,dpb(m)≤tr(n). Получение времени вывода из DPB (to,dpb) определяют более подробно ниже.

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

Далее описан образ действий, которыми декодер 30 видео может определять время, когда выводить декодированное изображение (например, время вывода из DPB декодированного изображения), и также описано, когда декодер 30 видео может хранить декодированное изображение в DPB. Как описано выше, время вывода из DPB изображения может быть фактором при определении того, удаляют ли это изображение из DPB или нет.

Когда декодер 30 видео декодирует изображение, декодер 30 видео хранит изображение в DPB, и увеличивает заполнение DPB на один. Когда изображение имеет OutputFlag, равное 1, декодер 30 видео может получать время вывода из DPB для изображения, основываясь на следующем уравнении.

to,dpb(n)=tr(n)+tc*dpb_output_delay(n)

В уравнении dpb_output_delay(n) можно точно определять в сообщении SEI синхронизации изображения, связанном с единицей доступа, которая содержит изображение. SEI сообщение может быть определено в некоторых стандартах, таких как стандарт H.264/AVC.

Значение to,dpb(n) может определять, когда изображение подлежит выводу. Например, если OutputFlag равно 1 и to,dpb(n) равно tr(n), декодер 30 видео может выводить изображение. Иначе, если OutputFlag равно 0, декодер 30 видео может не выводить изображение. В случаях, когда OutputFlag равно 1 и to,dpb(n) больше tr(n), декодер 30 видео может выводить изображение в более поздний момент времени (например, в момент времени to,dpb(n)).

В некоторых примерах, когда декодер 30 видео выводит изображение, декодер 30 видео может обрезать изображение. Например, декодер 30 видео может использовать обрезающий прямоугольник, точно определенный в наборе параметров активной последовательности для изображения. Способы обрезания изображения в целом точно установлен и описаны в стандартах, таких как стандарт H.264/AVC.

В некоторых примерах декодер 30 видео может определять разность между временем вывода из DPB для изображения и временем вывода из DPB для изображения после изображения в порядке вывода. Например, когда изображение (n) представляет собой изображение, которое декодер 30 видео выводит и которое не является последним изображением битового потока, которое выводят, декодер 30 видео может определять значение Δto,dpb(n), которое определяют как:

Δto,dpb(n)=to,dpb(nn)−to,dpb(n)

В приведенном выше уравнении nn обозначает изображение, которое следует после изображения (n) в порядке вывода и имеет OutputFlag, равный 1. Также в приведенном выше уравнении Δto,dpb(n) представляет разность во времени вывода из DPB между определенным изображением и следующим изображением в порядке вывода.

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

Как указано выше, со второй точки зрения для удаления декодированных изображений, декодер 30 видео может удалять изображения из DPB перед декодированием текущего изображения, но после разбора заголовка слайса первого слайса текущего изображения. Также, подобно первой точке зрения, для удаления декодированных изображений, со второй точки зрения, декодер 30 видео может осуществлять функции, схожие с таковыми, описанными выше относительно первой точки зрения, когда текущее изображение представляет собой IDR изображение.

Иначе, если текущее изображение не представляет собой IDR изображение, декодер 30 видео может опустошать, без вывода, буферы DPB, которые хранят изображение, которому присвоена метка «не нужно для вывода», и которые хранят изображения, не включенные в набор опорных изображений текущего изображения. Декодер 30 видео также может уменьшать заполнение DPB на число буферов, которые опустошил декодер 30 видео. Когда имеет место не пустой буфер (т.е., заполнение DPB равно размеру DBP), декодер 30 видео может реализовать процесс «выталкивания», описанный ниже. В некоторых примерах, когда имеет место не пустой буфер, декодер 30 видео может реализовать процесс выталкивания повторно, пока не появится пустой, в котором декодер 30 видео может хранить текущее декодированное изображение.

Когда текущее изображение представляет собой IDR изображение, для которого no_output_of_prior_pics_flag не равно 1 и не предполагают, что равно 1, декодер 30 видео может осуществлять следующее. Декодер 30 видео может опустошать, без вывода, буферы DPB, которые хранят изображение, которому присвоена метка «не нужно для вывода» и которое не включено в набор опорных изображений текущего изображения. Декодер 30 видео может опустошать все непустые буферы в DPB посредством повторного вызова процесса «выталкивания», и может устанавливать заполнение DPB на 0.

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

Например, после того как декодер 30 видео декодирует текущее изображение, декодер 30 видео может хранить текущее изображение в DPB, и увеличивать заполнение DPB на один. В некоторых примерах, если OutputFlag текущего изображения равно 1, декодер 30 видео может присваивать метку текущему изображению «нужно для вывода». Иначе, если OutputFlag текущего изображения равно 0, декодер 30 видео может присваивать метку текущему изображению «не нужно для вывода».

Как описано выше, в некоторых примерах, декодер 30 видео может реализовать процесс выталкивания. В целом, процесс выталкивания включает вывод декодированных изображений. Например, декодер 30 видео может реализовать процесс выталкивания для того, когда текущее изображение представляет собой IDR изображение и no_output_of_prior_pics_flag не равно 1 и не предполагают, что равно 1. Декодер 30 видео также может реализовать процесс выталкивания, если в DPB отсутствует пустой буфер (т.е., заполнение DPB равно размеру DPB), и пустой буфер необходим для хранения декодированного (не IDR) изображения.

В целом, декодер 30 видео может реализовать следующие стадии для того, чтобы реализовать процесс выталкивания. Декодер 30 видео может сначала определять изображение, подлежащее выводу. Например, декодер 30 видео может выбирать изображение, которое имеет меньшее значение PicOrderCnt (POC) из всех изображений в DPB, которым присваивают метки «нужно для вывода». Декодер 30 видео может обрезать выбранные изображения с использованием обрезающего прямоугольника, который точно определен в наборе параметров активной последовательности для изображения. Декодер 30 видео может выводить обрезанное изображение, и может присваивать метку изображения «не нужно для вывода». Декодер 30 видео может проверять буфер DPB, в котором хранят обрезанные и выведенные изображения. Если изображение не включено в набор опорных изображений, декодер 30 видео может опустошать этот буфер и может уменьшать заполнение DPB на один.

Несмотря на то, что приведенные выше способы управления DPB описаны в контексте декодера 30 видео, в некоторых примерах кодер 20 видео может реализовать схожие способы. Однако, кодер 20 видео, реализующий схожие способы, не требуется в каждом примере. В некоторых примерах декодер 30 видео может реализовать эти способы, и кодер 20 видео может не реализовывать эти способы.

Таким образом, кодер видео (например, кодер 20 видео или декодер 30 видео) может кодировать информацию, указывающую опорные изображения, которые относятся к набору опорных изображений. Снова, набор опорных изображений может идентифицировать опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования.

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

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

Например, таблица 2 содержит синтаксические элементы num_long_term_ref_pics_pps и long_term_ref_pic_id_pps[i] в качестве части набора параметров изображения. Однако аспекты по этому раскрытию не ограничены этим. В некоторых других примерах набор параметров последовательности (например, таблица 1) может содержать синтаксические элементы num_long_term_ref_pics_pps и long_term_ref_pic_id_pps[i]. В примерах, где набор параметров последовательности содержит эти синтаксические элементы, это раскрытие может относиться к синтаксическим элементам в виде num_long_term_ref_pics_sps и long_term_ref_pic_id_sps[i], чтобы избегать путаницы. В иллюстративных целях способы описаны с использованием примеров, где набор параметров последовательности содержит эти синтаксические элементы.

Подобно определению num_long_term_ref_pics_pps, синтаксический элемент num_long_term_ref_pics_sps может точно определять число возможных долгосрочных опорных изображений, которые включены в набор параметров последовательности. Значение num_long_term_ref_pics_sps может находиться в диапазоне от 0 до 32 включительно. Подобно определению синтаксического элемента long_term_ref_pic_id_pps[i], синтаксический элемент long_term_ref_pic_id_sps[i] может точно определять i-ую долгосрочную идентификационную информацию опорного изображения, включенного в набор параметров последовательности.

В некоторых примерах синтаксический элемент long_term_ref_pic_id_sps[i] может указывать возможные долгосрочные опорные изображения, которые относятся к набору опорных изображений текущего изображения. Возможные долгосрочные опорные изображения представляют собой одно или более возможных долгосрочных опорных изображений, которые могут представлять собой долгосрочные опорные изображения, которые декодер 30 видео может использовать для интер-предсказания текущего изображения или одного или более изображений, следующих за текущим изображением в порядке декодирования. Другими словами, возможные долгосрочные опорные изображения могут указывать изображения, которые представляют собой долгосрочные опорные изображения и которые возможно используют для интер-предсказания текущего изображения и используют для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования. В некоторых примерах, синтаксический элемент long_term_ref_pic_id_sps[i] может содержать значения POC для возможных долгосрочных опорных изображений.

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

В способах, описанных в этом раскрытии, кодер 20 видео может передавать синтаксический элемент long_term_ref_pic_id в наборе параметров (например, синтаксический элемент long_term_ref_pic_id_sps в наборе параметров последовательности или синтаксический элемент long_term_ref_pic_id_pps в наборе параметров изображения). Декодер 30 видео может принимать синтаксический элемент long_term_ref_pic_id и идентифицировать возможные долгосрочные опорные изображения. В соответствии со способами, описанными в этом раскрытии, декодер 30 видео дополнительно может определять, какие из возможных долгосрочных опорных изображений относятся к набору опорных изображений. Например, декодер 30 видео можно выполнять с возможностью осуществлять это определение, основываясь на дополнительных синтаксических элементах, передаваемых посредством кодера видео 20 в кодированном битовом потоке.

Как показано в таблице 4, кодер 20 видео может передавать синтаксическую структуру long_term_ref_pic_set()в заголовке слайса текущего изображения. В таблице 5 описана синтаксическая структура long_term_ref_pic_set(). Например, синтаксическая структура long_term_ref_pic_set() может содержать синтаксические элементы num_long_term_pps_curr и num_long_term_pps_foll. Снова следует отметить, что несмотря на то, что синтаксические элементы num_long_term_pps_curr и num_long_term_pps_foll определяют как число долгосрочных опорных изображений, включенных в набор параметров изображения, в примерах, где возможные долгосрочные опорные изображения включают в набор параметров последовательности, эти синтаксические элементы могут определять число возможных долгосрочных опорных изображений, включенных в набор параметров последовательности. Например, чтобы избегать путаницы, синтаксический элемент num_long_term_pps_curr можно обозначать как синтаксический элемент num_long_term_sps_curr и синтаксический элемент num_long_term_pps_foll можно обозначать как синтаксический элемент num_long_term_sps_curr.

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

Также синтаксическая структура long_term_ref_pic_set(), которую передают в заголовке слайса, может включать синтаксический элемент long_term_ref_pic_set_idx_pps[i]. Снова, в примерах, где возможные долгосрочные опорные изображения передают в наборе параметров последовательности, синтаксический элемент long_term_ref_pic_set_idx_pps[i] можно рассматривать в качестве синтаксического элемента long_term_ref_pic_set_idx_sps[i]. Подобно синтаксическому элементу long_term_ref_pic_set_idx_pps[i], синтаксический элемент long_term_ref_pic_set_idx_sps[i] может определять индекс, в список возможной идентификационной информации долгосрочного опорного изображения, включенной в упомянутый набор параметров последовательности, i-го долгосрочного опорного изображения, унаследованного из набора параметров опорного изображения в наборе опорных изображений текущего изображения. Другими словами, синтаксический элемент long_term_ref_pic_set_idx_sps[i] может идентифицировать индекс для списка возможных долгосрочных опорных изображений в наборе параметров последовательности. По индексу декодер 30 видео может идентифицировать долгосрочное опорное изображение в возможных долгосрочных опорных изображениях и может определять, что идентифицированное долгосрочное опорное изображение относится к набору опорных изображений текущего изображения.

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

for (i=0; i<num_long_term_sps_curr + num_long_term_sps_foll; i++)

long_term_ref_pic_set_idx_sps[i]

Таким образом, декодер 30 видео может декодировать синтаксические элементы, указывающие возможные долгосрочные опорные изображения, которые идентифицируют в наборе параметров. Например, если набор параметров представляет собой набор параметров последовательности, декодер 30 видео может декодировать синтаксические элементы long_term_ref_pic_id_sps[i], которые указывают возможные долгосрочные опорные изображения, которые идентифицируют в наборе параметров последовательности. Если набор параметров представляет собой набор параметров изображения, декодер 30 видео может декодировать синтаксические элементы long_term_ref_pic_id_pps[i], которые указывают возможные долгосрочные опорные изображения, которые идентифицируют в наборе параметров изображения.

Декодер 30 видео также может декодировать синтаксические элементы, которые указывают, какие возможные долгосрочные опорные изображения, идентифицированные в наборе параметров, принадлежат к набору опорных изображений текущего изображения. Например, если набор параметров представляет собой набор параметров последовательности, декодер 30 видео может декодировать синтаксические элементы num_long_term_sps_curr, num_long_term_sps_foll и long_term_ref_pic_set_idx_sps[i], и если набор параметров представляет собой набор параметров изображения, декодер 30 видео может декодировать синтаксические элементы num_long_term_pps_curr, num_long_term_pps_foll и long_term_ref_pic_set_idx_pps[i]. В любом примере декодер 30 видео может декодировать эти синтаксические элементы из заголовка слайса текущего изображения.

В соответствии со способами, описанными в этом раскрытии, синтаксические элементы long_term_ref_pic_id_sps[i] и long_term_ref_pic_id_pps[i] можно рассматривать в качестве списка значений порядкового номера изображения (POC) для возможных долгосрочных опорных изображений, которые принадлежат к набору опорных изображений, и их можно кодировать (т.е., кодировать или декодировать) в качестве части набора параметров (например, набора параметров изображения и набора параметров последовательности). Синтаксический элемент long_term_ref_pic_set_idx_sps[i] или long_term_ref_pic_set_idx_pps[i] можно рассматривать в качестве предоставляющего значение индекса в список значений POC для возможных долгосрочных опорных изображений (например, индекс для long_term_ref_pic_id_sps[i] или long_term_ref_pic_id_pps[i]). В некоторых примерах, синтаксический элемент long_term_ref_pic_set_idx_sps[i] или long_term_ref_pic_set_idx_pps[i] можно кодировать в качестве части заголовка слайса текущего изображения.

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

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

Например, как показано в таблице 5, синтаксическая структура long_term_ref_pic_set() заголовка слайса содержит синтаксический элемент long_term_ref_pic_id_delta_add[i]. Этот синтаксический элемент может точно определять долгосрочную идентификацию опорного изображения, такую как значения POC, i-го долгосрочного опорного изображения, которая не унаследована из опорного набора параметров изображения, но включена в набор опорных изображений текущего изображения. Снова, в примерах, где возможные долгосрочные опорные изображения идентифицируют в наборе параметров последовательности, синтаксический элемент long_term_ref_pic_id_delta_add[i] может точно определять долгосрочную идентификацию опорного изображения i-го долгосрочного опорного изображения, которая не унаследована из набора параметров последовательности, но включена в набор опорных изображений текущего изображения.

Другими словами, синтаксический элемент long_term_ref_pic_id_pps[i] или long_term_ref_pic_id_sps[i] может идентифицировать возможные долгосрочные опорные изображения, но не обязательно может идентифицировать все из долгосрочных опорных изображений в наборе опорных изображений текущего изображения. Например, могут иметь место долгосрочные опорные изображения, которые подлежат использованию для интер-предсказания текущего изображения, и одно или более изображений, следующих за текущим изображением в порядке декодирования, которые не включены в список возможных долгосрочных опорных изображений. Для таких долгосрочных опорных изображений кодер 20 видео и декодер 30 видео может кодировать или декодировать, соответствующим образом, идентификационную информацию, которая идентифицирует долгосрочные опорные изображения, которые относятся к набору опорных изображений текущего изображения.

Например, как показано в таблице 5, кодер 20 видео и декодер 30 видео могут кодировать или декодировать, соответствующим образом, синтаксические элементы num_long_term_add_curr и num_long_term_add_foll. Синтаксический элемент num_long_term_add_curr может определять число всех долгосрочных опорных изображений, идентификационная информация которых не включена в набор параметров опорного изображения или набор параметров последовательности (если применимо) и которые можно использовать для интер-предсказания текущего изображения и одного или более изображений, следующих за текущим изображением в порядке декодирования. Синтаксический элемент num_long_term_add_foll может определять число всех долгосрочных опорных изображений, идентификационная информация которых не включена в набор параметров опорного изображения или набор параметров последовательности (если применимо), которые могут не быть использованы для интер-предсказания текущего изображения и которые можно использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования.

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

for (i=0; i<num_long_term_add_curr + num_long_term_add_foll; i++)

long_term_ref_pic_id_delta_add[i]

Как описано выше, способы, описанные в этом раскрытии, можно осуществлять в соответствии со стандартом HEVC. Далее приведено краткое описание стандарта HEVC, чтобы способствовать пониманию. Кроме того, несмотря на то, что способы описаны в контексте стандарта HEVC, способы можно расширять на другие стандарты, включая проприетарные стандарты.

JCT-VC работает над разработкой стандарта HEVC. Деятельность по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, обозначаемой как HEVC Test Model (HM). HM предполагает несколько дополнительных возможностей устройства кодирования видео по отношению к существующим устройствам согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 предусматривает девять режимов кодирования с интра-предсказанием (внутренним предсказанием, внутрикадровым предсказанием), HM может обеспечивать целых тридцать три режима кодирования с интра-предсказанием.

В целом, рабочая модель HM описывает, что видеокадр или видеоизображение можно делить на последовательность древовидных блоков или наиболее крупных единиц кодирования (LCU), которые содержат выборки как яркости, так и цветности. Древовидный блок имеет цель, схожую с макроблоком стандарта H.264. Слайс содержит число последовательных древовидных блоков в порядке декодирования. Видеокадр или изображение можно разделять на один или более слайсов. Каждый древовидный блок можно разделять на единицы кодирования (CU) в соответствии с деревом квадрантов. Например, древовидный блок, в качестве корневого узла дерева квадрантов, можно разделять на четыре дочерних узла, и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен на другие четыре дочерних узла. Конечный неразделенный дочерний узел, в качестве листового узла дерева квадрантов, содержит узел кодирования, т.е., кодированный видеоблок. Синтаксические данные, связанные с кодированным битовым потоком, могут определять максимальное число раз возможного деления древовидного блока, а также могут определять минимальный размер узлов кодирования. Древовидные блоки можно обозначать как LCU в некоторых примерах.

CU содержит узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), связанные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен иметь квадратную форму. Размер CU может находиться в диапазоне от 8×8 пикселей вплоть до размера древовидного блока с максимумом 64×64 пикселей или более. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, связанные с CU, могут описывать, например, разделение CU на одну или более PU. Режимы разделения могут различаться между случаями, когда CU пропускают или кодируют в прямом режиме, кодируют в режиме интра-предсказания или кодируют в режиме интер-предсказания. PU можно разделять так, чтобы они имели не квадратную форму. Синтаксические данные, связанные с CU, также могут описывать, например, разделение CU на одну или более TU в соответствии с деревом квадрантов. TU может иметь квадратную или не квадратную форму.

Стандарт HEVC предусматривает преобразования в соответствии с TU, которые могут различаться для различных CU. TU типично имеют размеры, основанные на размере PU в пределах заданной CU, которую определяют для разделенной LCU, хотя это не всегда может быть верным. TU типично имеют такой же размер как PU или меньше. В некоторых примерах, остаточные выборки, соответствующие CU, можно подразделять на единицы меньшего размера с использованием структуры дерева квадрантов, известной как «дерево остаточных квадрантов» (RQT). Листовые узлы RQT можно обозначать как единицы преобразования (TU). Значения пиксельной разности, связанные с TU, можно преобразовывать для того, чтобы получать коэффициенты преобразования, которые можно квантовать.

В целом, PU содержит данные, связанные с процессом предсказания. Например, когда PU кодируют в режиме интра-кодирования, PU может содержать данные, описывающие режим интра-предсказания для PU. В качестве другого примера, когда PU кодируют в режиме интер-кодирования, PU может содержать данные, которые определяют вектор движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, с точностью до одной четверти пикселя или с точностью до одной восьмой пикселя), опорное изображение, на которое указывает вектор движения и/или список опорных изображений (например, Список 0, Список 1 или Список C) для вектора движения.

В целом, TU используют для процессов преобразования и квантования. Данная CU, имеющая одну или более PU, также может включать одну или более единиц преобразования (TU). После предсказания кодер 20 видео может вычислять остаточные значения, соответствующие PU. Остаточные значения содержат значения пиксельной разности, которые можно преобразовывать в коэффициенты преобразования, квантовать и сканировать с использованием TU для того, чтобы получать упорядоченные коэффициенты преобразования для энтропийного кодирования. В этом раскрытии типично используют термин «видеоблок», чтобы отослать к узлу кодирования в CU. В некоторых конкретных случаях в этом раскрытии также может быть использован термин «видеоблок», чтобы отослать к древовидному блоку, т.е. LCU или CU, которые содержат узел кодирования и PU и TU.

Видеопоследовательность типично содержит серию видеокадров или видеоизображений. Группа изображений (GOP) в целом содержит серию из одного или более видеоизображений. GOP может включать синтаксические данные в заголовке GOP, заголовке одного или более изображений или в другом месте, которое описывает число изображений, включенных в GOP. Каждый слайс изображения может содержать синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Кодер 20 видео типично работает с видеоблоками внутри отдельных видеослайсов для того, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования внутри CU. Видеоблоки могут иметь фиксированные или переменные размеры и могут различаться по размеру согласно точно определенному стандарту кодирования.

В качестве примера, HM поддерживает предсказание в PU различных размеров. Полагая, что размер конкретного CU составляет 2Nx2N, HM поддерживает интра-предсказание для размеров PU 2Nx2N или NxN, и интер-предсказание для размеров симметричных PU 2Nx2N, 2NxN, Nx2N, или NxN. HM также поддерживает асимметричное разделение для интер-предсказания на размеры PU 2NxnU, 2NxnD, nLx2N и nRx2N. При асимметричном разделении в одном направлении CU не разделяют, тогда как в другом направлении разделяют на 25% и 75%. Часть CU, соответствующая разделу 25%, обозначают как «n» с последующем указанием «Up», «Down», «Left» или «Right». Таким образом, например, «2NxnU» относится к 2Nx2N CU, который разделяют горизонтально на 2Nx0,5N PU в верхней части и 2Nx1,5N PU в нижней части.

В этом раскрытии «NxN» и «N на N» могут быть использованы взаимозаменяемо, чтобы отослать к пиксельным размерам видеоблока в отношении вертикальных и горизонтальных размеров, например, 16×16 пикселей или 16 на 16 пикселей. В целом, блок 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогичным образом, блок NxN в общем имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целое значение. Пиксели в блоке можно располагать рядами и столбцами. Кроме того, блоки не обязательно должны иметь то же число пикселей в горизонтальном направлении, что в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где M не обязательно равно N.

После кодирования с интер-предсказанием или интра-предсказанием, используя PU из CU, кодер 20 видео может вычислять остаточные данные для TU из CU. PU могут содержать пиксельные данные в пространственной области (также обозначаемой как пиксельная область) и TU может содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования элементарных волн или идейно схожего преобразования к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселями некодированного изображения и предсказанными значениями, соответствующими PU. Кодер 20 видео может формировать TU, содержащие остаточные данные для CU, и затем преобразовывать TU для того, чтобы получать коэффициенты преобразования для CU.

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

В некоторых примерах, кодер 20 видео может использовать предварительно определяемый порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования для того, чтобы получать упорядоченный вектор, к которому можно применять энтропийное кодирование. В других примерах кодер 20 видео может осуществлять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для того, чтобы формировать одномерный вектор, кодер 20 видео может осуществлять энтропийное кодирование одномерного вектора, например, в соответствии с кодированием с переменной длиной, адаптируемой к контексту (CAVLC), бинарным арифметическим кодированием, адаптируемым к контексту (CABAC), бинарным арифметическим кодированием, адаптируемым к контексту на основании синтаксиса (SBAC), энтропийным кодированием с вероятностным разделением на интервалы (PIPE) или другим способом энтропийного кодирования. Кодер 20 видео также может применять энтропийное кодирование с синтаксическим элементам, связанным с кодированными видеоданными, для использования посредством декодера 30 видео при декодировании видеоданных.

Для того чтобы осуществлять CABAC, кодер 20 видео может присваивать контекст в рамках контекстной модели символу, подлежащему передаче. Контекст может относится, например, к тому, являются ли соседние значения символа ненулевыми или нет. Для того чтобы осуществлять CAVLC, кодер 20 видео может выбирать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC можно создавать так, что относительно короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC позволяет достигать экономии битов, например, по сравнению с использованием кодовых слов равной длины для каждого символа, подлежащего передаче. Вероятность определения может быть основана на контексте, присвоенном символу.

На фиг. 2 представлена концептуальная диаграмма, которая иллюстрирует пример видеопоследовательности 33, которая содержит множество изображений, которые кодируют и передают. В некоторых случаях, видеопоследовательность 33 можно обозначать как группу изображений (GOP). Видеопоследовательность 33, как проиллюстрировано, содержит изображения 35A, 36A, 38A, 35B, 36B, 38B и 35C, и конечное изображение 39 в порядке отображения. Изображение 34 представляет собой конечное изображение в порядке отображения для последовательности, появляющейся до последовательности 33. На фиг. 2 в целом представлена примерная структура предсказания для видеопоследовательности, которая предназначена только для того, чтобы иллюстрировать связи изображений, используемые для предсказания видеоблоков других типов слайсов или изображений (например, изображение или слайс P или изображение или слайс B). Фактическая видеопоследовательность может содержать больше или меньше видеоизображений других типов изображений и в другом порядке отображения. Видеопоследовательность 33 может содержать больше или меньше изображений, чем проиллюстрировано на фиг. 2, и изображения, проиллюстрированные в видеопоследовательности 33, проиллюстрированы в целях понимания и в качестве примеров.

Для блочного кодирования видео каждое из видеоизображений, включенных в последовательность 33, можно разделять на видеоблоки, такие как единицы кодирования (CU) или единицы предсказания (PU). Например, каждая CU видеоизображения может содержать одну или более PU. Видеоблоки в изображении с интра-кодированием (I) предсказывают с использованием пространственного предсказания относительно соседних блоков на одном и том же изображении. Видеоблоки в изображении с интер-кодированием (P или B) могут использовать пространственное предсказание относительно соседних блоков на одном и том же изображении или временное предсказание относительно других опорных изображений.

Видеоблоки в B изображении можно предсказывать с использованием двунаправленного предсказания для того, чтобы вычислять два вектора движения по двум различным спискам опорных изображений (например, списки опорных изображений 0 и 1, обозначаемые как Список 0 и Список 1). В некоторых случаях видеоблоки в B изображении можно предсказывать с использованием однонаправленного предсказания из одного из двух различных списков опорных изображений (например, однонаправленное B-кодирование). Видеоблоки в P изображении можно предсказывать с использованием однонаправленного предсказания для того, чтобы вычислять один вектор движения по одному списку опорных изображений. В соответствии с перспективным стандартом HEVC, видеоблоки можно кодировать с использованием или однонаправленного предсказания для того, чтобы вычислять один вектор движения по одному из двух списков опорных изображений или двунаправленного предсказания для того, чтобы вычислять два вектора движения по двум спискам опорных изображений. Два списка опорных изображений могут содержать прошлые опорные изображения или будущие опорные изображения или как прошлые, так и будущие опорные изображения в порядке отображения или вывода, и, например, всегда прошлые опорные изображения в порядке декодирования.

В примере на фиг. 2, конечное изображение 39 предназначено для интра-кодирования в качестве I изображения. В других примерах, конечное изображение 39 можно кодировать с использованием интер-кодирования (например, в качестве P изображения) со ссылкой на конечное изображение 34 предшествующей последовательности, которое может представлять собой I изображение. Видеоизображения 35A-35C (все вместе «видеоизображения 35») предназначены для кодирования в качестве B изображений с использованием двунаправленного предсказания со ссылкой на прошлое изображение и будущее изображение. В проиллюстрированном примере изображение 35A кодируют в качестве B изображения со ссылкой на конечное изображение 34 и изображение 36A, как указано посредством стрелок от изображений 34 и 36A к видеоизображению 35A. Изображения 35B и 35C кодируют аналогичным образом.

Видеоизображения 36A-36B (все вместе «видеоизображения 36») могут быть предназначены для кодирования в качестве изображений с использованием однонаправленного предсказания со ссылкой на прошлое изображение. В проиллюстрированном примере изображение 36A кодируют в качестве P изображения со ссылкой на конечное изображение 34, как указано посредством стрелки от изображения 34 к видеоизображению 36A. Изображение 36B кодируют аналогичным образом.

Видеоизображения 38A-38B (все вместе «видеоизображения 38») могут быть предназначен для кодирования с использованием двунаправленного предсказания со ссылкой на то же прошлое изображение. В других примерах, видеоизображения 38 можно кодировать с использованием двунаправленного предсказания со ссылкой на по существу схожие прошлые изображения, включенные в списки опорных изображений. В проиллюстрированном примере изображение 38A кодируют с использованием двух связей с изображением 36A, как указано посредством двух стрелок от изображения 36A к видеоизображению 38A. Изображение 38B кодируют аналогичным образом.

В соответствии со способами, описанными в этом раскрытии, кодер 20 видео может передавать набор опорных изображений для каждого из изображений в последовательности 33. Например, для изображения 35A этот набор опорных изображений может идентифицировать все опорные изображения, которые можно использовать для интер-предсказания изображения 35A, а также все опорные изображения, которые можно потенциально использовать для интер-предсказания изображений после изображения 35A в порядке декодирования. Например, набор опорных изображений для изображения 35A может включать значение POC для изображения 34 и изображения 36A, а также значения POC для дополнительных опорных изображений, таких как те, которые можно потенциально использовать для интер-предсказания изображений после изображения 35A в порядке декодирования. В этом примере, изображения после изображения 35A могут представлять собой те изображения, которые следуют за изображением 35A в порядке декодирования и которые содержатся в видеопоследовательности 33.

Затем декодер 30 видео может получать набор опорных изображений для изображения 35A таким образом, который описан выше. Например, декодер 30 видео может определять значения POC для опорных изображений, которые относятся к набору опорных изображений, как описано выше. Декодер 30 видео дополнительно может создавать по меньшей мере четыре или по меньшей мере пять поднаборов опорных изображений и, в некоторых примерах, вплоть до шести поднаборов опорных изображений, описанных выше. Декодер 30 видео может располагать шесть наборов опорных изображений в конкретном порядке для того, чтобы получать набор опорных изображений для изображения 35A.

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

На фиг. 3 представлена блочная диаграмма, которая иллюстрирует примерный кодер 20 видео, который может реализовать способы, описанные в этом раскрытии. Кодер 20 видео может осуществлять интра- и интер-кодирование видеоблоков в видеослайсах. Интра-кодирование основано на пространственном предсказании для того, чтобы снижать или удалять пространственную избыточность в видео внутри заданного видеокадра или видеоизображения. Интер-кодирование основано на временном предсказании для того, чтобы снижать или удалять временную избыточность в видео внутри смежных кадров или изображений видеопоследовательности. Внутренний режим (I режим) может относиться к какому-либо из нескольких режимов сжатия на пространственной основе. Внешние режимы, такие как однонаправленное предсказание (P режим) или двойное предсказание (B режим), могут относиться к каким-либо из нескольких режимов сжатия на временной основе.

В примере на фиг. 3, кодер 20 видео содержит блок 35 разделения, модуль 41 предсказания, буфер 64 декодированных изображений (DPB), сумматор 50, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Модуль 41 предсказания содержит блок 42 оценки движения, блок 44 компенсации движения и модуль 46 интра-предсказания. Для восстановления видеоблока кодер 20 видео также содержит блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Удаляющий блоки фильтр (не представлен на фиг. 3) также может быть включен для того, чтобы фильтровать границы блоков для того, чтобы удалять артефакты блочности из восстановленного видео. При желании, удаляющий блоки фильтр типично будет фильтровать вывод из сумматора 62. Дополнительные контурные фильтры (в контуре или после контура) также можно использовать в дополнение к удаляющему блоки фильтру.

Как показано на фиг. 3, кодер 20 видео принимает видеоданные, а блок 35 разделения разделяет данные на видеоблоки. Это разделение также может включать разделение на слайсы, мозаичные элементы или другие более крупные единицы, а также разделение видеоблоков, например, в соответствии со структурой дерева квадрантов в LCU и CU. Кодер 20 видео в целом иллюстрирует компоненты, которые кодируют видеоблоки внутри видеослайса, подлежащего кодированию. Слайс можно разбивать на множество видеоблоков (и возможно на наборы видеоблоков, обозначаемых как мозаичные элементы). Модуль 41 предсказания может выбирать один из множества возможных режимов кодирования, таких как один из множества режимов интра-кодирования или один из множества режимов интер-кодирования, для текущего видеоблока, основываясь на ошибочных результатах (например, скорость кодирования и уровень искажения). Модуль 41 предсказания может предоставлять получаемый блок с интер- или интра-кодированием в сумматор 50 для того, чтобы генерировать остаточные данные блока, и в сумматор 62 для того, чтобы восстановить кодированный блок для применения в качестве опорного изображения.

Модуль 46 интра-предсказания в модуле 41 предсказания может осуществлять кодирование с интра-предсказанием для текущего видеоблока по отношению к одному или более соседним блокам на одном и том же изображении или слайсе как текущего блока, подлежащего кодированию для того, чтобы обеспечивать пространственное сжатие. Блок 42 оценки движения и блок 44 компенсации движения в модуле 41 предсказания осуществляют кодирование с интер-предсказанием для текущего видеоблока по отношению к одному или более блокам предсказания в одном или более опорных изображениях, чтобы обеспечивать временное сжатие.

Блок 42 оценки движения можно выполнять с возможностью определять режим интер-предсказания для видеослайса согласно предварительно определяемому паттерну для видеопоследовательности. Предварительно определяемый паттерн может обозначать видеослайсы в последовательности как слайсы P или слайсы B. Блок 42 оценки движения и блок 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в целях концепции. Оценка движения, осуществляемая посредством блока 42 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение PU из видеоблока в пределах текущего видеоизображения относительно блока предсказания в пределах опорного изображения.

Блок предсказания представляет собой блок, который находят близко совпадающим с PU из видеоблока, подлежащего кодированию, в отношении пиксельной разности, которую можно определять посредством суммы абсолютной разности (SAD), суммы разности квадратов (SSD) или других метрик разности. В некоторых примерах кодер 20 видео может вычислять значения для нецелых положений пикселей опорных изображений, хранимых в буфере 64 декодированных изображений. Например, кодер 20 видео может интерполировать значения положений с точностью до одной четвертой пикселя, положений с точностью до одной восьмой пикселя или других дробных положений пикселей опорного изображения. Следовательно, блок 42 оценки движения может осуществлять поиск движения относительно целопиксельных положений и дробных положений пикселей и выводить вектор движения с точностью до доли пикселя.

Блок 42 оценки движения вычисляет вектор движения для PU из видеоблока в слайсе с интер-кодированием посредством сравнения положения PU с положением блока предсказания опорного изображения. Опорное изображение можно отбирать из первого списка опорных изображений (Список 0) или второго списка опорных изображений (Список 1), каждый из которых идентифицирует одно или более опорных изображений, хранимых в буфере 64 декодированных изображений. Блок 42 оценки движения посылает вычисленный вектор движения в блок 56 энтропийного кодирования и блок 44 компенсации движения.

Компенсация движения, осуществляемая посредством блока 44 компенсации движения, может включать вызов или генерацию блока предсказания, основываясь на векторе движения, определяемом посредством оценки движения, возможно осуществление интерполяций с субпиксельной точностью. При получении вектора движения для PU из текущего видеоблока, блок 44 компенсации движения может определять местоположение блока предсказания, на указывает который вектор движения, в одном из списков опорных изображений. Кодер 20 видео формирует остаточный видеоблок посредством вычитания значений пикселей блока предсказания из значений пикселей текущего видеоблока, который кодируют, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока и могут включать компоненты разности как яркости, так и цветности. Сумматор 50 представляет компонент или компоненты, которые осуществляют эту операцию вычитания. Блок 44 компенсации движения также может генерировать синтаксические элементы, связанные с видеоблоками и видеослайсом, для использования посредством декодера 30 видео при декодировании видеоблоков видеослайса.

Внутренний модуль предсказания 46 может осуществлять интра-предсказание текущего блока, в качестве альтернативы интер-предсказанию, осуществляемому посредством блока 42 оценки движения и блока 44 компенсации движения, как описано выше. В частности, внутренний модуль предсказания 46 может определять режим интра-предсказания для использования для кодирования текущего блока. В некоторых примерах модуль 46 интра-предсказания может кодировать текущий блок с использованием различных режимов интра-предсказания, например, во время отдельных проходов кодирования, и модуль 46 интра-предсказания (или блок 40 выбора режима, в некоторых примерах) может выбирать подходящий режим интра-предсказания для использования из протестированных режимов. Например, модуль 46 интра-предсказания может вычислять значения скорости-искажения с использованием анализа скорости-искажения для различных тестированных режимов интра-предсказания, и выбирать режим интра-предсказания, который имеет лучшие характеристики скорости-искажения среди протестированных режимов. Анализ скорости-искажения в целом определяет количество искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который кодировали для того, чтобы получать кодированный блок, а также скорость передачи информации (то есть, число битов), которую используют для того, чтобы получать кодированный блок. Модуль 46 интра-предсказания может вычислять отношения по искажениям и скорости для различных кодированных блоков для того, чтобы определять, какой режим интра-предсказания проявляет наилучшее значение скорости-искажения для блока.

После выбора режима интра-предсказания для блока модуль 46 интра-предсказания может предоставлять информацию, указывающую выбранный режим интра-предсказания для блока в блоке 56 энтропийного кодирования. Блок 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим интра-предсказания в соответствии со способами по этому раскрытию. Кодер 20 видео может включать в передаваемый битовый поток конфигурационные данные, которые могут содержать множество индексных таблиц режима интра-предсказания и множество модифицированных индексных таблиц режима интра-предсказания (также обозначаемых как таблицы преобразования кодовых слов), определения контекста кодирования для различных блоков и указания наиболее вероятного режима интра-предсказания, индексную таблицу режима интра-предсказания и модифицированную индексную таблицу режима интра-предсказания для использования для каждого из контекстов.

После того как модуль 41 предсказания генерирует блок предсказания для текущего видеоблока посредством или интер-предсказания, или интра-предсказания, кодер 20 видео формирует остаточный видеоблок посредством вычитания блока предсказания из текущего видеоблока. Остаточные видеоданные в остаточном блоке могут быть включены в одну или более TU и поданы в модуль 52 преобразования. Модуль 52 преобразования преобразует остаточные видеоданные в остаточные коэффициенты преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или идейно схожее преобразование. Модуль 52 преобразования может превращать остаточные видеоданные из пиксельной области в область преобразования, такую как частотная область.

Модуль 52 преобразования может посылать получаемые коэффициенты преобразования в блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования для того, чтобы дополнительно снизить скорость передачи данных. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми из коэффициентов. Степень квантования можно модифицировать посредством корректировки параметра квантования. В некоторых примерах блок 54 квантования после этого может осуществлять сканирование матрицы, содержащей квантованные коэффициенты преобразования. Альтернативно, сканирование может осуществлять блок 56 энтропийного кодирования.

После квантования блок 56 энтропийного кодирования осуществляет энтропийное кодирование квантованных коэффициентов преобразования. Например, блок 56 энтропийного кодирования может осуществлять кодирование с переменной длиной, адаптируемой к контексту (CAVLC), бинарное арифметическое кодирование, адаптируемое к контексту (CABAC), бинарное арифметическое кодирование, адаптируемое к контексту на основании синтаксиса (SBAC), энтропийное кодирование с вероятностным разделением на интервалы (PIPE) или другие способы энтропийного кодирования. После энтропийного кодирования посредством блока 56 энтропийного кодирования, кодированный битовый поток можно передавать на декодер 30 видео или архивировать для последующей передачи или выборки посредством декодера 30 видео. Блок 56 энтропийного кодирования также может осуществлять энтропийное кодирование векторов движения и других синтаксических элементов для текущего видеослайса, который кодируют.

Блок 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответствующим образом, чтобы восстановить остаточный блок в пиксельной области для последующего использования в качестве опорного блока опорного изображения. Блок 44 компенсации движения может вычислять опорный блок посредством добавления остаточного блока в блок предсказания одного из опорных изображений в одном из списков опорных изображений. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку для того, чтобы вычислять нецелые значения пикселей для использования в оценке движения. Сумматор 62 добавляет восстановленный остаточный блок в блок предсказания с компенсацией движения, получаемый посредством блока 44 компенсации движения, чтобы получать опорный блок для хранения в буфере 64 декодированных изображений. Опорный блок можно использовать посредством блока 42 оценки движения и блока 44 компенсации движения в качестве опорного блока для интер-предсказания блока в последующем видеокадре или видеоизображении.

В соответствии с этим раскрытием, модуль 41 предсказания представляет один примерный блок для осуществления примерных функций, описанных выше. Например, модуль 41 предсказания может определять, какие опорные изображения относятся к набору опорных изображений, и управлять кодером 20 видео для того, чтобы кодировать информацию, указывающую опорные изображения, которые относятся к набору опорных изображений. Также, во время процесса восстановления (например, процесса, используемого для того, чтобы восстановить изображение для применения в качестве опорного изображения и хранения в буфере 64 декодированных изображений), модуль 41 предсказания может создавать множество поднаборов опорных изображений, каждый из которых идентифицирует одно или более опорных изображений. Модуль 41 предсказания также может получать набор опорных изображений из созданного множества поднаборов опорных изображений. Также, модуль 41 предсказания может реализовать какой-либо один или более из наборов примерного псевдокода, описанного выше, чтобы реализовать один или более примерных способов, описанных в этом раскрытии.

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

В других примерах, блок, отличный от модуля 41 предсказания, может реализовать примеры, описанные выше. В некоторых других примерах модуль 41 предсказания в сочетании с одним или более другими блоками кодера 20 видео может реализовать примеры, описанные выше. В некоторых других примерах процессор или блок кодера 20 видео (не представлено на фиг. 3) может, отдельно или в сочетании с другими блоками кодера 20 видео, реализовать примеры, описанные выше.

На фиг. 4 представлена блочная диаграмма, которая иллюстрирует примерный декодер 30 видео, который может реализовать способы, описанные в этом раскрытии. В примере на фиг. 4 декодер 30 видео содержит блок 80 энтропийного декодирования, модуль 81 предсказания, блок 86 обратного квантования, блок 88 обратного преобразования, сумматор 90 и буфер 92 декодированных изображений (DPB). Модуль 81 предсказания содержит блок 82 компенсации движения и модуль 84 интра-предсказания. Декодер 30 видео может, в некоторых примерах, осуществлять проход декодирования в целом обратным образом по отношению к проходу кодирования, описанному в отношении кодера 20 видео на фиг. 3.

Во время процесса декодирования декодер 30 видео принимает битовый поток кодированного видео, который представляет видеоблоки кодированного видеослайса и связанные синтаксические элементы из кодера 20 видео. Блок 80 энтропийного декодирования декодера 30 видео осуществляет энтропийное декодирование битового потока для того, чтобы генерировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Блок 80 энтропийного декодирования направляет векторы движения и другие синтаксические элементы в модуль 81 предсказания. Декодер 30 видео может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока.

Когда видеослайс кодируют в виде слайса с интра-кодированием (I), модуль 84 интра-предсказания модуля 81 предсказания может генерировать данные предсказания для видеоблока текущего видеослайса, основываясь на передаваемом режиме интра-предсказания и данных из предварительно декодированных единиц текущего изображения. Когда видеоизображение кодируют в качестве слайса с интер-кодированием (т.е., B или P), блок 82 компенсации движения модуля 81 предсказания создает блоки предсказания для видеоблока текущего видеослайса, основываясь на векторах движения и других синтаксических элементах, принимаемых от блока 80 энтропийного декодирования. Блоки предсказания можно получать из одного из опорных изображений в одном из списков опорных изображений. Декодер 30 видео может создавать списки опорных кадров, Список 0 и Список 1, с использованием способов создания по умолчанию, основываясь на опорных изображениях, хранимых в буфере 92 декодированных изображений. В некоторых примерах, декодер 30 видео может создавать Список 0 и Список 1 из опорных изображений, идентифицированных в полученном наборе опорных изображений.

Блок 82 компенсации движения определяет информацию о предсказании для видеоблока текущего видеослайса посредством разбора векторов движения и других синтаксических элементов, и использует информацию о предсказании для того, чтобы получать блоки предсказания для текущего видеоблока, который декодируют. Например, блок 82 компенсации движения использует некоторые из принимаемых синтаксических элементов для того, чтобы определять режим предсказания (например, интра- или интер-предсказание), используемые для того, чтобы кодировать видеоблоки видеослайса, тип слайса с интер-предсказанием (например, слайс B или слайс P), информацию о создании для одного или более списков опорных изображений для слайса, векторы движения для каждого видеоблока слайса с интер-кодированием, состояние интер-предсказания для каждого видеоблока слайса с интер-кодированием и другую информацию для того, чтобы декодировать видеоблоки в текущем видеослайсе.

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

Блок 86 обратного квантования осуществляет обратное квантование, т.е., деквантует, квантованные коэффициенты преобразования, предусмотренные в битовом потоке, и декодированные посредством блока 80 энтропийного декодирования. Процесс обратного квантования может включать использование параметра квантования, вычисленного посредством кодера видео 20 для каждого видеоблока в видеослайсе для того, чтобы определять степень квантования и, аналогичным образом, степень обратного квантования, которую следует применять. Модуль обратного преобразования 88 применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или идейно схожий процесс обратного преобразования к коэффициентам преобразования для того, чтобы получать остаточные блоки в пиксельной области.

После того как модуль 81 предсказания генерирует блок предсказания для текущего видеоблока, основываясь на интер- или интра-предсказании, декодер 30 видео формирует декодированный видеоблок посредством суммирования остаточных блоков из модуля обратного преобразования 88 с соответствующими блоками предсказания, генерируемых посредством модуля 81 предсказания. Сумматор 90 представляет компонент или компоненты, которые осуществляют эту операцию суммирования. При желании, удаляющий блоки фильтр также можно применять к фильтрованию декодированных блоков для того, чтобы удалять артефакты блочности. Другие контурные фильтры (или в контуре кодирования или после контура кодирования) также можно использовать для того, чтобы сглаживать пиксельные переходы или иным образом повышать качество видео. Декодированные видеоблоки на данном изображении после этого хранят в буфере 92 декодированных изображений, в котором хранят опорные изображения, используемые для последующей компенсации движения. Буфер 92 декодированных изображений также хранит декодированное видео для последующего представления на устройстве отображения, таком как устройство 32 отображения га фиг. 1.

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

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

В других примерах блок, отличный от модуля 81 предсказания, может реализовать примеры, описанные выше. В некоторых других примерах модуль 81 предсказания в сочетании с одним или более другими блоками декодера 30 видео может реализовать примеры, описанные выше. В некоторых других примерах, процессор или блок декодера 30 видео (не представлено на фиг. 4) может, один или в сочетании с другими блоками декодера 30 видео, реализовать примеры, описанные выше.

На фиг. 5 представлена блок-схема, которая иллюстрирует примерную операцию получения набора опорных изображений. Только в иллюстративных целях способ на фиг. 5 можно осуществлять посредством кодера видео, соответствующего кодеру 20 видео или декодеру 30 видео. Например, кодер видео (например, кодер 20 видео или декодер 30 видео) может кодировать (например, кодировать или декодировать) информацию, указывающую опорные изображения, которые относятся к набору опорных изображений (94). Набор опорных изображений может идентифицировать опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения и для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования.

Например, когда кодер 20 видео осуществляет стадию 94, кодер 20 видео может кодировать значения, которые указывают идентификаторы для опорных изображений, которые относятся к набору опорных изображений. Например, кодер 20 видео может передавать в битовом потоке синтаксический элемент pic_order_cnt_lsb и синтаксический элемент log2_max_pic_order_cnt_lsb_minus4. Когда декодер 30 видео осуществляет стадию 94, по синтаксическому элементу log2_max_pic_order_cnt_lsb_minus4 декодер 30 видео может определять значение MaxPicOrderCntLsb. Декодер 30 видео затем может определять идентификаторы (например, значения POC) для опорных изображений, которые относятся к набору опорных изображений.

Кодер видео может создавать множество поднаборов опорных изображений, каждый из которых идентифицирует ноль или больше опорных изображений (96). Например, кодер видео может создавать поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Однако аспекты по этому раскрытию не ограничены этим. В некоторых примерах кодер видео может создавать пять поднаборов опорных изображений, четыре из которых могут представлять собой четыре из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll, а пятый может представлять собой комбинацию из двух из остающихся шести поднаборов опорных изображений (например, комбинация поднаборов опорных изображений RefPicSetFoll0 и RefPicSetFoll1).

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

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

Кодер видео может получать набор опорных изображений из множества поднаборов опорных изображений (98). Например, кодер видео может упорядочивать по меньшей мере два из поднаборов опорных изображений RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll в конкретном порядке для того, чтобы получать набор опорных изображений.

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

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

На фиг. 6 представлена блок-схема, которая иллюстрирует примерную операцию создания списка опорных изображений. Только в иллюстративных целях способ на фиг. 6 можно осуществлять посредством кодера видео, соответствующего кодеру 20 видео или декодеру 30 видео. Сходно с фиг. 5, кодер видео может кодировать информацию, указывающую опорные изображения (102), и создавать множество поднаборов опорных изображений (104).

Кодер видео после этого может добавлять опорные изображения из поднаборов опорных изображений в начальный список опорных изображений для того, чтобы создавать начальный список опорных изображений (106). В некоторых примерах как кодер 20 видео, так и декодер 30 видео может создавать начальный список опорных изображений. Например, кодер 20 видео может создавать начальный список опорных изображений для того, чтобы создавать восстановленные видеоблоки для хранения в DPB 64. Декодер 30 видео может создавать начальный список опорных изображений в качестве части его процесса декодирования и может реализовать способ создания по умолчанию, в котором декодер 30 видео не должен принимать информацию от кодер 20 видео, касающуюся образа действий для создания начального списка опорных изображений.

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

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

В некоторых примерах, для того, чтобы добавлять опорные изображения, идентифицированные в поднаборах опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr, кодер видео может кодировать (например, кодировать или декодировать) синтаксические элементы, по которым кодер видео может определять число опорных изображений в каждом из этих поднаборов опорных изображений. Например, кодер видео может кодировать синтаксический элемент num_short_term_curr0 и синтаксический элемент num_short_term_curr1. Синтаксический элемент num_short_term_curr0 и синтаксический элемент num_short_term_curr1 может указывать число опорных изображений, идентифицированных в поднаборе опорных изображений RefPicSetStCurr0 и поднаборе опорных изображений RefPicSetStCurr1, соответственно.

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

Кодер видео может определять число опорных изображений в поднаборе опорных изображений RefPicSetLtCurr, основываясь на синтаксическом элементе num_long_term_pps_curr и синтаксическом элементе num_long_term_add_curr. Например, кодер видео может суммировать значения синтаксического элемента num_long_term_pps_curr и синтаксического элемента num_long_term_add_curr для того, чтобы определять число опорных изображений в поднаборе опорных изображений RefPicSetLtCurr.

Кодер видео может кодировать текущее изображение, основываясь на списке или списках опорных изображений (108). Например, кодер видео может создавать по меньшей мере один из первого списка опорных изображений и второго списка опорных изображений, основываясь на получаемом наборе опорных изображений. Кодер видео после этого может кодировать текущее изображение, основываясь по меньшей мере на одном из первого списка опорных изображений и второго списка опорных изображений.

На фиг. 7 представлена блок-схема, которая иллюстрирует другую примерную операцию создания списка опорных изображений. Только в иллюстративных целях, способ на фиг. 7 можно осуществлять посредством кодера видео, соответствующего кодеру 20 видео или декодеру 30 видео. Сходно с фиг. 5, кодер видео может кодировать информацию, указывающую опорные изображения (110), и создавать множество поднаборов опорных изображений (112). Кодер видео может добавлять опорные изображения в первый набор записей списка опорных изображений (114). Например, число записей в списке опорных изображений может равняться максимальному числу допустимых записей, как определено посредством синтаксических элементов num_ref_idx_l0_active_minus1 или num_ref_idx_l1_active_minus1.

В этом примере, кодер видео может вносить (например, добавлять) в первый набор записей опорные изображения, идентифицированные в поднаборах опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Например, для Списка 0 кодер видео может добавлять в первый набор записей Списка 0, по порядку, опорные изображения, идентифицированные в поднаборах опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Для списка 1 кодер видео может добавлять в первый набор записей Списка 1, по порядку, опорные изображения, идентифицированные в поднаборах опорных изображений RefPicSetStCurr1, RefPicSetStCurr0 и RefPicSetLtCurr.

Кодер видео затем может определять, равно ли число записей в списке опорных изображений максимальному числу допустимых записей в списке опорных изображений (116). Если число записей в списке опорных изображений не меньше максимального числа допустимых записей («Нет» в 116), кодер видео может кодировать текущее изображение, основываясь на списке опорных изображений (118).

Иначе, если число записей в списке опорных изображений меньше максимального числа допустимых записей («Да» в 116), кодер видео может повторно вносить (например, повторно идентифицировать или повторно добавлять) одно или более опорных изображений по меньшей мере из одного из поднаборов опорных изображений в записи в списке опорных изображений, которые следуют за первым набором записей (120). Например, кодер видео может добавлять одно или более опорных изображений, идентифицированных в поднаборе опорных изображений RefPicSetStCurr0, в Список 0 в записи, следующие за первым набором записей в Списке 0, или одно или более опорных изображений, идентифицированных в поднаборе опорных изображений RefPicSetStCurr1, в Список 1 в записи, следующие за первым набором записей в Списке 1. Таким образом, кодер видео может идентифицировать по меньшей мере одно опорное изображение из первого поднабора опорных изображений больше чем в одной записи в списке опорных изображений.

Кодер видео после этого может определять, равно ли число записей в списке опорных изображений максимальному числу допустимых записей в списке опорных изображений (122). Если число записей в списке опорных изображений не меньше максимального числа допустимых записей («Нет» в 122), кодер видео может кодировать текущее изображение, основываясь на списке опорных изображений (124).

Иначе, если число записей в списке опорных изображений меньше максимального числа допустимых записей («Да» в 122), кодер видео может повторно вносить (например, повторно идентифицировать или повторно добавлять) одно или более опорных изображений по меньшей мере из одного из поднаборов опорных изображений в записи в списке опорных изображений, которые следуют за первым набором записей (120). Например, в этой ситуации, кодер видео может повторно добавлять дополнительные опорные изображения, идентифицированные в первом поднаборе опорных изображений. Если кодер видео уже повторно добавлял все из опорных изображений в первом поднаборе опорных изображений, кодер видео может повторно добавлять одно или более опорных изображений из второго поднабора опорных изображений (например, поднабора опорных изображений RefPicSetStCurr0 для Списка 0 или поднабора опорных изображений RefPicSetStCurr1 для Списка 1). Этот процесс можно повторять до тех пор, пока число записей в списке опорных изображений не будет не меньше максимального числа допустимых записей («Нет» в 122).

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

На фиг. 8 представлена блок-схема, которая иллюстрирует примерную операцию модификации начального списка опорных изображений. Только в иллюстративных целях способ на фиг. 8 можно осуществлять посредством кодера видео, соответствующего кодеру 20 видео или декодеру 30 видео. Сходно с фиг. 6, кодер видео может кодировать информацию, указывающую опорные изображения (126), и создавать множество поднаборов опорных изображений (128). Множество поднаборов опорных изображений может включать поднаборы опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Кодер видео может создавать начальный список опорных изображений таким образом, который описан выше, основываясь на поднаборах опорных изображений RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr (130).

Кодер видео может определять, требуется ли модификация списка опорных изображений (132). Например, кодер видео может кодировать синтаксические элементы, такие как Ref_pic_list_modification_flag_l0 и Ref_pic_list_modification_flag_l1, которые указывают, нужно ли модифицировать начальный Список 0 или начальный Список 1. Если модификация начального списка опорных изображений не требуется («Нет» в 132), кодер видео может кодировать текущее изображение, основываясь на начальном списке опорных изображений (134).

Если модификация требуется («Да» в 132), кодер видео может идентифицировать опорное изображение по меньшей мере в одном из созданных поднаборов опорных изображений (136). Например, кодер видео может кодировать синтаксический элемент modification_of_ref_pic_idc. Значение синтаксического элемента modification_of_ref_pic_idc может указывать, какой поднабор опорных изображений кодер видео следует использовать для того, чтобы идентифицировать опорное изображение. Кодер видео также может кодировать синтаксический элемент ref_pic_set_idx, который указывает индекс для поднабора опорных изображений, который кодер видео должен использовать для того, чтобы идентифицировать опорное изображение.

Кодер видео может вносить (например, добавлять или идентифицировать) идентифицированное опорное изображение в начальном списке опорных изображений в текущую запись для того, чтобы создавать модифицированный список опорных изображений (138). Текущая запись может изначально представлять собой запись в начальном списке опорных изображений, определяемом индексом 0. Для каждого экземпляра синтаксического элемента modification_of_ref_pic_idc в кодированном битовом потоке, где значение синтаксического элемента modification_of_ref_pic_idc не равно 3, кодер видео может увеличивать значение начальной записи на один (например, следующее значение записи будет определять индекс 1). Кодер видео может кодировать текущее изображение, основываясь на модифицированном списке опорных изображений (140).

На фиг. 9 представлена блок-схема, которая иллюстрирует примерную операцию удаления декодированного изображения. Только в иллюстративных целях, способ на фиг. 8 можно осуществлять посредством кодера видео, соответствующего кодеру 20 видео или декодеру 30 видео. Сходно с фиг. 5, кодер видео (например, кодер 20 видео или декодер 30 видео) может кодировать (например, кодировать или декодировать) информацию, указывающую опорные изображения набора опорных изображений (142), и может получать набор опорных изображений из кодированной (например, кодированной или декодированной) информации (144).

Кодер видео может определять, не требуется ли декодированное изображение, которое хранят в буфере декодированных изображений (DPB), для вывода (т.е., уже выведено или не предназначено для вывода) и не идентифицировано ли оно в наборе опорных изображений (146). Если декодированное изображение необходимо для вывода или идентифицировано в наборе опорных изображений («Нет» в 146), кодер видео может не удалять декодированное изображение из DPB, и может продолжать хранить декодированное изображение в DPB (148).

Когда декодированное изображение выведено и не идентифицировано в наборе опорных изображений («Да» в 146), кодер видео может удалять декодированные изображения из DPB (150). Кодер видео после этого может кодировать текущее изображение после удаления декодированного изображения (152).

Как описано выше, кодер видео может создавать список опорных изображений на основе набора опорных изображений для кодирования текущего изображения. В некоторых примерах, кодер видео может удалять декодированное изображение из DPB после создания списка опорных изображений. Кроме того, для выведенного декодированного изображения, кодер видео может определять время, когда выводить декодированное изображение, и может выводить декодированное изображение на основе определяемого времени и перед кодированием текущего изображения.

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

На фиг. 10 представлена блок-схема, которая иллюстрирует примерную операцию определения того, какие долгосрочные опорные изображения относятся к набору опорных изображений текущего изображения. Только в иллюстративных целях способ на фиг. 10 можно осуществлять посредством кодера видео, соответствующего или кодеру 20 видео или декодеру 30 видео.

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

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

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

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

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

Например, для заголовка единицы NAL, в приведенных выше примерах, синтаксис заголовка единицы NAL может включать синтаксические элементы nal_ref_idc, temporal_id и output_flag. В одном альтернативном примере nal_ref_idc (2 бита) заменяют на nal_ref_flag (1 бит). В этом примере, nal_ref_flag, равный 1, имеет семантику как nal_ref_idc больше 0, а nal_ref_flag, равный 0, имеет ту же семантику как nal_ref_idc, равный 0. В одном альтернативном примере, nal_ref_idc (2 бита) удаляют. Определение опорного изображения можно изменять на: изображение, которое содержит выборки, которые можно использовать для интер-предсказания в процессе декодирования последующих изображений в порядке декодирования. В одном альтернативном примере temporal_id не присутствует в синтаксисе заголовка единицы NAL, и значение получают одинаковым для всех изображений. В одном альтернативном примере, output_flag не присутствует в синтаксисе заголовка единицы NAL, и значение получают равным 1 для всех изображений.

Для передачи и вычисления порядкового номера изображения, в приведенных выше способах можно использовать один путь передачи и вычисления порядкового номера изображения, который может быть схож с порядковым номером изображения типа 0 в AVC. Можно применять два альтернативных пути для передачи и вычисления порядкового номера изображения, такие же порядкового номера изображения типов 1 и 2 в AVC, соответственно. Также можно применять любую комбинацию двух из трех путей или комбинацию всех трех путей.

Для идентификации изображения, в приведенных выше способах можно использовать значение порядкового номера изображения (POC) для идентификации изображения. В одном альтернативном примере привязку по времени (TR) используют в качестве идентификации изображения. Один путь определения TR состоит в том, что он является таким же, как POC, когда POC ограничен так, что разность POC между какими-либо двумя изображениями пропорциональна времени представления или разности времени выборки. В одном альтернативном примере, frame_num, который указывает порядок декодирования (тогда как POC указывает порядок вывода или отображения), или переменную (например, названную UnWrappedFrameNum), которая может представлять собой какое-либо значение 32-битного целочисленного значения без знака, которую получают из frame_num, можно использовать в качестве идентификации изображения. В основном, UnWrappedFrameNum может представлять собой несвернутую версию frame_num. Например, если frame_num представлен 8 битами, максимальное значение frame_num составляет 255. Следующее значение после 255 для frame_num составляет 0. Значение UnWrappedFrameNum продолжает увеличиваться в положениях, где frame_num сворачивается к 0.

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

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

Для инициализации списка опорных изображений в одном альтернативном примере в процессе инициализации списка опорных изображений сначала в список можно добавлять краткосрочные опорные изображения и затем необязательно в список можно добавлять долгосрочные опорные изображения. После этого, если число записей в списке опорных изображений (или RefPicList0 или RefPicList1) все еще меньше чем значения num_ref_idx_lx_active_minus1+1 (lx равно l0 или l1), остальным записям можно присваивать метки «нет опорного изображения». В одном альтернативном примере также может быть возможно, что если список опорных изображений все еще не заполнен после добавления записей в RefPicSetStCurr0 и RefPicSetStCurr1 и возможно долгосрочных опорных изображений, можно добавлять изображения в RefPicSetStFoll0 и/или RefPicSetStFoll1. В одном альтернативном примере, процесс инициализации списка опорных изображений может только добавлять краткосрочные опорные изображения в списке опорных изображений. В таком случае, долгосрочное опорное изображение только можно добавлять в список опорных изображений посредством использования команд модификации списка опорных изображений, как передают в таблице синтаксиса модификации списка опорных изображений (RPLM).

Для модификации списка опорных изображений в одном альтернативном примере модификация списка опорных изображений также может передавать Ref_pic_set_idx дифференциальным образом, где предыдущий индекс используют в качестве предиктора текущего индекса. В этом примере другие значения modification_of_ref_pic_idc могут соответствовать другим категориям индексирования (RefPicSetStCurrx для RefPicListx, RefPicSetStCurrx для RefPicList(1-x) или RefPicSetLtCurr), каждая из которых поддерживает другой предиктор. Предиктор можно обновлять, когда синтаксический элемент, принадлежащий к той же категории, только что разобрали. В одном альтернативном примере, модификация списка опорных изображений может быть основана на разности числа изображений. В одном альтернативном примере, модификация списка опорных изображений может быть основана на разности значений POC.

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

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

В приведенных выше примерах поднаборы RefPicSetStCurr0 и RefPicSetStCurr1 набора опорных изображений для текущего изображения получают для всех декодированных изображений. Однако это может не быть необходимо для изображения с интра-предсказанием. Для получения набора опорных изображений изображения с интра-предсказанием, в одном альтернативном примере, для не IDR изображения, которое имеет кодирование с интра-предсказанием (т.е., весь слайс кодированного изображения представляет собой I слайсы), RefPicSetStCurr0 и RefPicSetStCurr1 не получают, они не требуются при декодировании кодированного изображения, поскольку они даже не являются пустыми после получения. Допущение непустых RefPicSetStCurr0 или RefPicSetStCurr1 для не IDR изображения с интра-предсказанием может допускать совместное использование экземпляра синтаксической структуры short_term_ref_pic_set( ) одного или более изображений с интер-кодированием, для которых и RefPicSetStCurr0 и RefPicSetStCurr1 не могут быть пустыми.

Для обнаружения потерь могут быть возможны следующие различные способы обнаружения потерь опорного изображения или раннего обнаружения того, может ли текущее изображение быть корректно декодировано. В различных примерах, после получения набора опорных изображений, декодер 30 видео (например, сторона декодера) может проверять присутствие опорных изображений, включенных в RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr. Если какие-либо из опорных изображений, включенных в RefPicSetStCurr0, RefPicSetStCurr1 и RefPicSetLtCurr, не присутствует в DPB, сторона декодера может делать заключение о том, что это опорное изображение потеряно, и что текущее изображение вероятно не будет декодировано корректно, и может выполнять некоторое действие для того, чтобы улучшать ситуацию, например, посредством уведомления стороны кодера (например, кодер 20 видео) о потере(ях) изображения, и кодер может повторно передавать потерянное опорное изображение(я) или кодировать следующее изображение(я) с использованием только этих опорных изображений, о которых известно, что они корректны, на стороне декодера в качестве опорных для интер-предсказания.

В различных примерах, после получения набора опорных изображений, сторона декодера может проверять присутствие опорных изображений, включенных в RefPicSetStFoll0, RefPicSetStFoll1 и RefPicSetLtFoll. Если какие-либо из опорных изображений, включенных в RefPicSetStFoll0, RefPicSetStFoll1 и RefPicSetLtFoll, не присутствуют в DPB, сторона декодера может делать вывод о том, что это опорное изображение потеряно и что некоторые из следующих изображений в порядке декодирования вероятно не будут корректно декодированы, пока не будут предприняты определенные действия, и может предпринимать определенное действие для того, чтобы улучшать ситуацию, например, посредством уведомления стороны кодера о потере(ях) изображения, и кодер может повторно передавать потерянное опорное изображение(я) или кодировать следующее изображение(я) с использованием только этих опорных изображений, о которых известно, что они корректны, на стороне декодера в качестве опорных для интер-предсказания.

Для состава набора опорных изображений стороны кодера (например, кодер 20 видео), в приведенных выше примерах, могут быть возможны следующие различные способы для состава набора опорных изображений на стороне кодера. Например, в различных примерах кодер составляет связанные с набором опорных изображений синтаксические структуры так, что после получения набора опорных изображений на стороне декодера для текущего изображения: (1) RefPicSetStCurr0 содержит и только содержит идентификационную информацию всех краткосрочных опорных изображений, которые имеют более ранний порядок вывода, чем текущее изображение, и которые используют в качестве опорных в интер-предсказании текущего изображения, (2) RefPicSetStCurr1 содержит и только содержит идентификационную информацию всех краткосрочных опорных изображений, которые имеют более поздний порядок вывода, чем текущее изображение, и которые используют в качестве опорных в интер-предсказании текущего изображения, и (3) RefPicSetLtCurr содержит и только содержит идентификационную информацию всех долгосрочных опорных изображений, которые используют в качестве опорных в интер-предсказании текущего изображения.

В различных примерах кодер (например, кодер 20 видео) может составлять связанные с набором опорных изображений синтаксические структуры так, что после получения набора опорных изображений на стороне декодера для текущего изображения: (1) RefPicSetStCurr0 содержит и только содержит идентификационную информацию обо 1) всех краткосрочных опорных изображениях, которые имеют более ранний порядок вывода, чем текущее изображение, и которые используют в качестве опорных в интер-предсказании текущего изображения, а также 2) одном или более краткосрочных опорных изображениях, которые имеют более ранний порядок вывода, чем текущее изображение, и которые не используют в качестве опорных в интер-предсказании текущего изображения, (2) RefPicSetStCurr1 содержит и только содержит идентификационную информацию обо 1) всех краткосрочных опорных изображениях, которые имеют более поздний порядок вывода, чем текущее изображение, и которые используют в качестве опорных в интер-предсказании текущего изображения, а также 2) одном или более краткосрочных опорных изображениях, которые имеют поздний порядок вывода, чем текущее изображение, и которые не используют в качестве опорных в интер-предсказании текущего изображения, и RefPicSetLtCurr содержит и только содержит идентификационную информацию обо 1) всех долгосрочных опорных изображениях, которые используют в качестве опорных в интер-предсказании текущего изображения, а также 2) одном или более долгосрочных опорных изображениях, которые не используют в качестве опорных в интер-предсказании текущего изображения.

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

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

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

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

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

Упрощенные процессы для вывода декодированного изображения, внесения в и удаления из DPB. Порядковый номер изображения (POC) может быть отрицательным. Это может делать возможными некоторые важные варианты использования, которые могут не быть допустимы, если POC не может быть отрицательным. Передача того, является ли изображение опорным изображением, не требуется в процессе декодирования, может не требоваться, хотя передача этого все еще может быть возможна. Метки опорных изображений «неиспользуемое в качестве опорного» могут более не требоваться.

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

В качестве примера, а не ограничения, такие компьютерно-читаемые носители могут включать RAM, ROM, EEPROM, CD-ROM или другие оптические накопители, магнитные дисковые накопители или другие магнитные запоминающие устройства, флэш-память или какой-либо другой носитель, который можно использовать для хранения желаемого программного кода в форме инструкций или структур данных и доступ к которому может осуществлять компьютер. Также, какое-либо должным образом обозначенное соединение представляет собой компьютерно-читаемый носитель. Например, если инструкции передают с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как ИК, радио и микроволны, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как ИК, радио и микроволны включены в определение носителя. Однако следует понимать, что компьютерно-читаемый запоминающий носитель и запоминающий носитель данных не включают в себя соединения, несущие волны, сигналы или другие временные среды, а вместо этого направлены на постоянные, материальные носители. Термин «диск», используемый в настоящем документе, включает компактный диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитным образом, тогда как оптические диски воспроизводят данные оптически с использованием лазеров. Комбинации приведенного выше также следует включать в объем компьютерно-читаемых носителей.

Инструкции можно исполнять посредством одного или более процессоров, таких как один или более цифровых сигнальных процессоров (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или другая эквивалентная интегрированная или дискретная логическая схема. Соответственно, термин «процессор», используемый в настоящем документе, может относиться к какой-либо из приведенных выше структур или какой-либо другой структуре, подходящей для реализации способов, описанных в настоящем документе. Кроме того, в некоторых аспектах функциональность, описанная в настоящем документе, может быть предоставлена в модулях специализированного аппаратного обеспечения и/или программного обеспечения, выполненных с возможностью кодирования и декодирования, или встроенных в комбинированный кодер-декодер. Также способы можно полностью реализовать в одной или более схемах или логических элементах.

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

Описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.

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

название год авторы номер документа
ПОСТРОЕНИЕ СПИСКА ОПОРНЫХ ИЗОБРАЖЕНИЙ ДЛЯ ВИДЕОКОДИРОВАНИЯ 2012
  • Ван Е-Куй
  • Чэнь Ин
RU2571410C2
ПОСТРОЕНИЕ СПИСКА ОПОРНЫХ ИЗОБРАЖЕНИЙ ДЛЯ ВИДЕОКОДИРОВАНИЯ 2012
  • Чэнь Ин
  • Ван Е-Куй
RU2580098C2
КОДИРОВАНИЕ ОПОРНОЙ КАРТИНКИ ДЛЯ НАБОРА ОПОРНЫХ КАРТИНОК 2012
  • Ван Е-Куй
  • Чэнь Ин
RU2551815C1
ПОСТРОЕНИЕ СПИСКА ОПОРНЫХ КАРТИНОК ДЛЯ КОДИРОВАНИЯ ВИДЕО 2012
  • Ван Е-Куй
  • Чэнь Ин
RU2549162C1
КОДИРОВАНИЕ/ДЕКОДИРОВАНИЕ ВИДЕО С ПОМОЩЬЮ ПОДМНОЖЕСТВ НАБОРА ОПОРНЫХ КАРТИНОК 2012
  • Ван Е-Куй
  • Чэнь Ин
RU2584510C2
Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации 2014
  • Лайнема Яни
  • Ханнуксела Миска
  • Угур Кемал
  • Маламал Вадакитал Винод Кумар
RU2639958C2
СИГНАЛИЗАЦИЯ ДОЛГОСРОЧНЫХ ЭТАЛОННЫХ ИЗОБРАЖЕНИЙ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Рамасубрамониан Адарш Кришнан
  • Ван Е-Куй
RU2646327C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ВИДЕОКОДИРОВАНИЯ 2013
  • Ханнуксела Миска Матиас
  • Гопалакришна Шрикант Манхенахалли
RU2584501C1
СИГНАЛИЗАЦИЯ ДАННЫХ ДЛЯ ДОЛГОСРОЧНЫХ ЭТАЛОННЫХ ИЗОБРАЖЕНИЙ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2013
  • Рамасубрамониан Адарш Кришнан
  • Ван Е-Куй
  • Чэнь Ин
RU2635248C2
ОГРАНИЧЕНИЯ ИЗОБРАЖЕНИЙ СМЕШАННЫХ ЕДИНИЦ NAL ПРИ КОДИРОВАНИИ/ДЕКОДИРОВАНИИ ВИДЕО 2020
  • Ван, Е-Куй
  • Хендри, Фну
RU2822452C2

Иллюстрации к изобретению RU 2 587 420 C2

Реферат патента 2016 года УПРАВЛЕНИЕ БУФЕРОМ ДЕКОДИРОВАННЫХ ИЗОБРАЖЕНИЙ

Изобретение относится к технологиям кодирования/декодирования видеоданных. Техническим результатом является повышение эффективности кодирования/декодирования видеоданных за счет упрощения инициализации набора опорных изображений. Предложен способ кодирования видеоданных. Способ содержит этап, на котором осуществляют кодирование информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию. Причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования. Далее согласно способу получают набор опорных изображений для текущего изображения, подлежащего кодированию, на основании информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию. 4 н. и 25 з.п. ф-лы, 10 ил., 8 табл.

Формула изобретения RU 2 587 420 C2

1. Способ кодирования видеоданных, причем способ содержит:
кодирование информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
получение набора опорных изображений для текущего изображения, подлежащего кодированию, на основании информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию;
определение, до кодирования текущего изображения, того, что декодированное изображение, которое хранят в буфере декодированных изображений (DPB), не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию;
на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию, удаление декодированного изображения из DPB; и
после удаления декодированного изображения кодирование текущего изображения.

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

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

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

5. Способ по п. 1, который дополнительно содержит:
определение того, что DPB является полным; и
в ответ на то, что DBP полон:
выбор декодированного изображения в DPB, которое имеет метку «требуется для вывода» и имеет наименьшее значение порядкового номера изображения (РОС) из всех декодированных изображений, хранимых в DPB; и
вывод выбранного изображения.

6. Способ по п. 5, который дополнительно содержит:
определение того, что выведенное изображение не включено в набор опорных изображений;
опустошение буфера в DPB, который хранил выведенное изображение; и
сохранение текущего изображения в буфере внутри DPB после кодирования текущего изображения.

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

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

9. Устройство для кодирования видеоданных, причем устройство содержит:
буфер декодированных изображений (DPB), выполненный с возможностью хранить опорные изображения; и
кодер видео, выполненный с возможностью:
кодировать информацию, указывающую опорные изображения, сохраненные в DPB, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
получать набор опорных изображений для текущего изображения, подлежащего кодированию, на основании информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию;
определять, до кодирования текущего изображения, что декодированное изображение, сохраненное в DPB, не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию;
на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию, удалять декодированное изображение из DPB; и
после удаления декодированного изображения кодировать текущее изображение.

10. Устройство по п. 9, в котором кодер видео выполнен с возможностью:
создавать список опорных изображений, основываясь на наборе опорных изображений,
причем для того, чтобы удалять декодированное изображение из DPB, кодер видео выполнен с возможностью удалять декодированное изображение из DPB после создания списка опорных изображений.

11. Устройство по п. 9, в котором кодер видео выполнен с возможностью:
определять время, когда выводить декодированное изображение; и
выводить декодированное изображение, основываясь на определяемом времени и перед кодированием текущего изображения.

12. Устройство по п. 9, в котором кодер видео выполнен с возможностью:
сохранять текущее изображение в DPB после кодирования текущего изображения.

13. Устройство по п. 9, в котором кодер видео выполнен с возможностью:
определять, что DPB полон; и
в ответ на то, что DBP полон:
выбирать декодированное изображение в DPB, которое имеет метку «требуется для вывода» и имеет наименьшее значение порядкового номера изображения (РОС) среди всех декодированных изображений, которые хранятся в DPB; и
выводить выбранное изображение.

14. Устройство по п. 13, в котором кодер видео выполнен с возможностью:
определять, что выведенное изображение не включено в набор опорных изображений;
опустошать буфер внутри DPB, который хранил выведенное изображение; и
сохранять текущее изображение в буфере внутри DPB после кодирования текущего изображения.

15. Устройство по п. 9, в котором устройство содержит декодер видео и в котором декодер видео выполнен с возможностью:
декодировать информацию, указывающую опорные изображения, которые относятся к набору опорных изображений текущего изображения, подлежащего декодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего декодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
получать набор опорных изображений для текущего изображения, подлежащего декодированию, основываясь на декодированной информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего декодированию;
определять, до декодирования текущего изображения, что декодированное изображение, сохраненное в DPB, не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего декодированию;
на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего декодированию, удалять декодированное изображение из DPB; и
после удаления декодированного изображения декодировать текущее изображение.

16. Устройство по п. 9, в котором устройство содержит кодер видео и в котором кодер видео выполнен с возможностью:
кодировать информацию, указывающую опорные изображения, которые относятся к набору опорных изображений текущего изображения, подлежащего кодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
получать набор опорных изображений для текущего изображения, подлежащего кодированию, основываясь на информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию;
определять, до кодирования текущего изображения, что декодированное изображение, сохраненное в DPB, не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию;
на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию, удалять декодированное изображение из DPB; и
после удаления декодированного изображения кодировать текущее изображение.

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

18. Компьютерно-читаемый запоминающий носитель, содержащий сохраненные на нем инструкции, которые, при исполнении, предписывают процессору устройства для кодирования видеоданных:
кодировать информацию, указывающую опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
получать набор опорных изображений для текущего изображения, подлежащего кодированию, на основании информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию;
определять, до кодирования текущего изображения, что не требуется вывод декодированного изображения, сохраненного в буфере декодированных изображений (DPB), и оно не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию;
на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию, удалять декодированное изображение из DPB; и
после удаления декодированного изображения кодировать текущее изображение.

19. Компьютерно-читаемый запоминающий носитель по п. 18, который дополнительно содержит инструкции, которые предписывают процессору:
создавать список опорных изображений, основываясь на наборе опорных изображений,
причем инструкции, которые предписывают процессору удалять декодированное изображение из DPB, содержат инструкции, которые предписывают процессору удалять декодированное изображение из DPB после создания списка опорных изображений.

20. Компьютерно-читаемый запоминающий носитель по п. 18, который дополнительно содержит инструкции, которые предписывают процессору:
определять время, когда выводить декодированное изображение; и
выводить декодированное изображение, основываясь на определяемом времени и перед кодированием текущего изображения.

21. Компьютерно-читаемый запоминающий носитель по п. 18, который дополнительно содержит инструкции, которые предписывают процессору:
сохранять текущее изображение в DPB после кодирования текущего изображения.

22. Компьютерно-читаемый запоминающий носитель по п. 18, который дополнительно содержит инструкции, которые предписывают процессору:
определять, что DPB полон; и
в ответ на то, что DBP полон:
выбирать декодированное изображение в DPB, которое имеет метку «требуется для вывода» и имеет наименьшее значение порядкового номера изображения (РОС) среди всех декодированных изображений, сохраненных в DPB; и
выводить выбранное изображение.

23. Компьютерно-читаемый запоминающий носитель по п. 22, который дополнительно содержит инструкции, которые предписывают процессору:
определять, что выведенное изображение не включено в набор опорных изображений;
опустошать буфер внутри DPB, который хранил выведенное изображение; и
сохранять текущее изображение в буфере внутри DPB после кодирования текущего изображения.

24. Устройство для кодирования видеоданных, причем устройство содержит:
средство для кодирования информации, указывающей опорные изображения, которые относятся к набору опорных изображений для текущего изображения, подлежащего кодированию, причем набор опорных изображений идентифицирует опорные изображения, которые можно потенциально использовать для интер-предсказания текущего изображения, подлежащего кодированию, и можно потенциально использовать для интер-предсказания одного или более изображений, следующих за текущим изображением в порядке декодирования;
средство для получения набора опорных изображений для текущего изображения, подлежащего кодированию, на основании информации, указывающей опорные изображения, которые относятся к набору опорных изображений текущего изображения, подлежащего кодированию;
средство для определения, до кодирования текущего изображения, того, что не требуется вывод декодированного изображения, сохраненного в буфере декодированных изображений (DPB), и что оно не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию;
средство для удаления декодированного изображения из DPB на основании декодированного изображения, которое не требуется для вывода и не идентифицировано в наборе опорных изображений для текущего изображения, подлежащего кодированию; и
средство для кодирования текущего изображения после удаления декодированного изображения.

25. Устройство по п. 24, которое дополнительно содержит:
средство для создания списка опорных изображений на основании набора опорных изображений,
причем средство для удаления декодированного изображения из DPB содержит средство для удаления декодированного изображения из DPB после создания списка опорных изображений.

26. Устройство по п. 24, которое дополнительно содержит:
средство для определения времени, когда выводить декодированное изображение; и
средство для вывода декодированного изображения на основании определяемого времени и перед кодированием текущего изображения.

27. Устройство по п. 24, которое дополнительно содержит:
средство для сохранения текущего изображения в DPB после кодирования текущего изображения.

28. Устройство по п. 24, которое дополнительно содержит:
средство для определения того, что DPB полон; и
средство для выбора декодированного изображения в DPB, которое имеет метку «требуется для вывода» и имеет наименьшее значение порядкового номера изображения (РОС) среди всех декодированных изображений, хранимых в DPB на основании того, что DPB полон; и
средство для вывода выбранного изображения на основании того, что DPB полон.

29. Устройство по п. 28, которое дополнительно содержит:
средство для определения того, что выведенное изображение не включено в набор опорных изображений;
средство для опустошения буфера внутри DPB, который хранил выведенное изображение; и
средство для сохранения текущего изображения в буфере внутри DPB после кодирования текущего изображения.

Документы, цитированные в отчете о поиске Патент 2016 года RU2587420C2

US 20070086521 A1, 19.04.2007
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
Приспособление для суммирования отрезков прямых линий 1923
  • Иванцов Г.П.
SU2010A1
Колосоуборка 1923
  • Беляков И.Д.
SU2009A1
RU 2009119523 A, 27.11.2010
СПОСОБ И УСТРОЙСТВО ДЛЯ ОТДЕЛЕНИЯ НОМЕРА КАДРА И/ИЛИ СЧЕТЧИКА ОЧЕРЕДНОСТИ ИЗОБРАЖЕНИЯ (РОС) ДЛЯ МУЛЬТИВИДОВОГО ВИДЕОКОДИРОВАНИЯ И ВИДЕОДЕКОДИРОВАНИЯ 2007
  • Пандит Пурвин Бибхас
  • Су Епин
  • Инь Пэн
  • Гомила Кристина
RU2443074C2

RU 2 587 420 C2

Авторы

Ван Е-Куй

Чэнь Ин

Даты

2016-06-20Публикация

2012-09-20Подача