Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации
DEVICE, METHOD AND COMPUTER PROGRAM FOR CODING AND DECODING VIDEOINFORMATION

Область техники
Настоящее изобретение относится к устройству, способу и компьютерной программе для кодирования и декодирования видеоинформации.
Предпосылки создания изобретения
Видеокодек состоит из кодера, при помощи которого изображения входных видеоданных преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодера, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра. Сжатие последовательностей изображений может выполняться либо в виде последовательностей неподвижных изображений, кодируемых с использованием средств пространственного предсказания, либо в виде кодирования внешне предсказываемых изображений, с использованием средств пространственного и временного предсказания. Последовательности изображений с произвольным доступом и поддержкой редактирования отдельных изображений, на существующем уровне техники обеспечиваются при помощи представления последовательности в виде серии независимо кодируемых изображений с внутренним предсказанием. Такие форматы, включают, например, движущийся JPEG, анимированный GIF и профили внутреннего предсказания стандарта Н.264.
Если последовательность изображений представлена в виде серии статичных кадров, то эффективность кодирования, как правило, невысока, а требования к размерам файла для последовательностей с высоким разрешением могут становиться непомерно большими. В случае кодирования последовательности как видеоданных с временным предсказанием, накладываются строгие ограничения на способ кодирования последовательности, на способ воспроизведения последовательности, и при этом редактирование пользователем отдельных изображений в последовательности является проблематичным.
Следовательно, необходимы более эффективные способы кодирования и декодирования последовательностей изображений, которые в то же время могли бы обеспечивать функциональность произвольного доступа и редактирования.
Сущность изобретения
Идея, лежащая в основе настоящего изобретения, заключается в том, что более эффективное кодирование и декодирование последовательности изображений с функциональностью произвольного доступа и редактирования может быть достигнуто при помощи сигнализации, с помощью которой указывают, может ли набор опорных изображений быть сохранен в буфере опорных изображений однократно, и могут ли все выходные изображения в последовательности быть декодированы с использованием упомянутого набора опорных изображений, который не меняется в ходе декодирования последовательности.
Способ в соответствии с первым вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, могут ли все выходные изображения быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и декодирование по меньшей мере одного выходного изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование, из одного или более синтаксических элементов и/или значений синтаксических элементов, указания, является ли изображение опорным изображением или неопорным изображением.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что битовый поток включает только один временной подуровень, при этом неопорные изображения временного подуровня считают неопорными изображениями, и при этом все остальные изображения считают опорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что битовый поток включает два или более временных подуровней, при этом все изображения со значением параметра TemporalId равным 0, считают опорными изображениями, а все изображения со значением параметра TemporalId большим 0 считают неопорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование метаданных из формата контейнерного файла для битового потока, которые указывают на опорные и на неопорные изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, которое указывает на выходные изображения и/или на изображения, которые не являются выходными, при этом указание является одним из следующего:
- параметр pic_output_flag (флаг вывода изображения) стандарта HEVC,
- сообщение SEI для указания на отображаемые изображения,
- указание в метаданных формата контейнерного файла для указания на отображаемые изображения. В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISO Base Media File Format, ISOBMFF) и при этом на выходные изображения указывают с использованием механизма группирования сэмплов, таким образом, что последовательность или набор изображений сохраняют с использованием структуры трека формата ISOMBFF.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений в наборе изображений, кодируемых с внешним предсказанием, в качестве опорных изображений используются только внутренне предсказываемые изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение. В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, относящегося к нулю или более порядкам декодирования, которые не идентичны порядку битового потока, из формата контейнерного файла или из одного или более сообщений SEI.
В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISOBMFF), и при этом структуру данных бокса Chunk Offset (смещения чанка) и структуру данных бокса Sample to Chunk (соответствия сэмпл-чанк) используют для связывания сэмплов, расположенных в любом порядке в структуре данных бокса Media Data (мультимедийных данных), или во внешнем файле (или файлах), с порядком декодирования.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, относящегося к нулю или более порядкам отображения, которые не идентичны порядку вывода в соответствии с определением в битовом потоке или согласно указанию на то, что должно быть использовано значение по умолчанию из формата контейнерного файла или из одного или более сообщений SEI.
Способ в соответствии со вторым вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, являются ли все внешне предсказываемые изображения в последовательности неопорными изображениями;
декодирование по меньшей мере одного внутренне предсказываемого изображения; и
декодирование по меньшей мере одного внешне предсказываемого изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение.
Способ в соответствии с третьим вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, используются ли для всех изображений уточняющего уровня только изображения из изображений базового уровня;
декодирование по меньшей мере одного изображения базового уровня; и
декодирование по меньшей мере одного изображения уточняющего уровня.
В соответствии с четвертым вариантом осуществления настоящего изобретения устройство включает:
по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
декодирование идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
декодирование по меньшей мере одного выходного изображения.
В соответствии с пятым вариантом осуществления настоящего изобретения предложен машиночитаемый носитель для хранения данных, на котором хранят код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
декодирование идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
декодирование по меньшей мере одного выходного изображения.
В соответствии с шестым вариантом осуществления настоящего изобретения предложено устройство, включающее видеодекодер, сконфигурированный для декодирования битового потока, включающего последовательность изображений, при этом видеодекодер включает
средства декодирования идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
средства декодирования указания на требуемые опорные изображения для заданного выходного изображения;
средства декодирования по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
средства декодирования по меньшей мере одного выходного изображения.
В соответствии с седьмым вариантом осуществления настоящего изобретения предложен видеодекодер, сконфигурированный для декодирования битового потока, включающего последовательность изображений, при этом упомянутый видеодекодер сконфигурирован также:
для декодирования идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
для декодирования указания на требуемые опорные изображения для заданного выходного изображения;
для декодирования по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
для декодирования по меньшей мере одного выходного изображения.
Способ в соответствии с восьмым вариантом осуществления настоящего изобретения, представляет собой способ кодирования последовательности изображений в битовый поток, включающий
кодирование набора опорных изображений;
сохранение упомянутого набора опорных изображений в исходном буфере опорных изображений;
кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование в один или более синтаксических элементов и/или значений синтаксических элементов указания, является ли изображение опорным изображением или неопорным изображением.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что битовый поток включает только один временной подуровень, при этом неопорные изображения временного подуровня считают неопорными изображениями, и при этом все остальные изображения считают опорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ включает также кодирование указания на то, что битовый поток включает два или более временных подуровней, при этом все изображения со значением параметра TemporalId равным 0, считают опорными изображениями, а все изображения со значением параметра TemporalId большим 0 считают неопорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование метаданных в формате контейнерного файла для битового потока, которые указывают на опорные и на неопорные изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания, которое указывает на выходные изображения и/или на изображения, которые не являются выходными, при этом указание является одним из следующего:
- параметр pic_output_flag (флаг вывода изображения) стандарта HEVC,
- сообщение SEI для указания на отображаемые изображения,
- указание в метаданных формата контейнерного файла для указания на отображаемые изображения. В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISOBMFF) и при этом на выходные изображения указывают с использованием механизма группирования сэмплов, таким образом, что последовательность или набор изображений сохраняют с использованием структуры трека формата ISOMBFF.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что для всех изображений в наборе изображений, кодируемых с внешним предсказанием, в качестве опорных изображений используются только внутренне предсказываемые изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение. В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания, относящегося к нулю или более порядкам декодирования, которые не идентичны порядку битового потока, в формате контейнерного файла или в одном или более сообщений SEI.
В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISOBMFF), и при этом структуру данных бокса Chunk Offset (смещения чанка) и структуру данных бокса Sample to Chunk (соответствия сэмпл-чанк) используют для связывания сэмплов, расположенных в любом порядке в структуре данных бокса Media Data (мультимедийных данных), или во внешнем файле (или файлах), с порядком декодирования.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания, относящегося к нулю или более порядкам отображения, которые не идентичны порядку вывода в соответствии с определением в битовом потоке или согласно указанию на то, что должно быть использовано значение по умолчанию в формате контейнерного файла или в одном или более сообщений SEI.
В соответствии с девятым вариантом осуществления настоящего изобретения устройство включает:
по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
кодирование набора опорных изображений в битовый поток. сохранение упомянутого набора опорных изображений в исходный буфер опорных изображений;
кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с десятым вариантом осуществления настоящего изобретения предложен машиночитаемый носитель для хранения данных, на котором хранят код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
кодирование набора опорных изображений в битовый поток;
сохранение упомянутого набора опорных изображений в исходный буфер опорных изображений;
кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с одиннадцатым вариантом осуществления настоящего изобретения устройство включает:
видеокодер, сконфигурированный для кодирования последовательности изображений в битовый поток, при этом упомянутый видеокодер включает
средства кодирования набора опорных изображений;
средства сохранения упомянутого набора опорных изображений в исходном буфере опорных изображений;
средства кодирования набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
средства кодирования в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с двенадцатым вариантом осуществления настоящего изобретения предложен видеокодер, сконфигурированный для кодирования последовательности изображений в битовый поток, при этом упомянутый видеокодер сконфигурирован также
для кодирования набора опорных изображений;
для сохранения упомянутого набора опорных изображений в исходный буфер опорных изображений;
для кодирования набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
для кодирования в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
Краткое описание чертежей
Для более детального понимания настоящего изобретения оно будет описано далее с помощью примеров, показанных на приложенных чертежах, где:
На фиг. 1 эскизно проиллюстрировано электронное устройство, в котором применяются некоторые из вариантов осуществления настоящего изобретения;
На фиг. 2 эскизно проиллюстрировано абонентское оборудование, подходящее для применения некоторых из вариантов настоящего изобретения;
На фиг. 3 также эскизно проиллюстрированы электронные устройства, в которых применяются некоторые из вариантов осуществления настоящего изобретения и которые соединены при помощи проводных и беспроводных сетевых соединений;
На фиг. 4 эскизно проиллюстрирован кодер, подходящий для реализации некоторых из вариантов осуществления настоящего изобретения;
На фиг. 5 показан пример изображения, состоящего из двух ячеек;
На фиг. 6 показан пример текущего блока пикселей и пяти пространственно смежных с ним блоков пикселей, которые могут быть использованы в качестве кандидатных предсказаний движения;
На фиг. 7 показана блок-схема алгоритма процедуры кодирования в соответствии с одним из вариантов осуществления настоящего изобретения;
На фиг. 8a-8d показаны некоторые из примеров схем кодирования в соответствии с некоторыми из вариантов осуществления настоящего изобретения;
На фиг. 9 показана эскизная блок-схема декодера, подходящего для реализации некоторых из вариантов осуществления настоящего изобретения;
На фиг. 10 показана блок-схема алгоритма процедуры декодирования в соответствии с одним из вариантов осуществления настоящего изобретения; и
На фиг. 11 показана блок-схема алгоритма процедуры декодирования в соответствии с еще одним из вариантов осуществления настоящего изобретения.
Подробное описание некоторых примеров осуществления изобретения
Ниже более подробны описаны аппаратура и возможные механизмы, подходящие для кодирования подизображений уточняющего уровня без значительного понижения эффективности кодирования. С этой целью для начала рассмотрим фиг. 1, на которой показана эскизная блок-схема примера аппаратуры или электронного устройства 50, которое может иметь в своем составе кодек, соответствующий одному из вариантов осуществления настоящего изобретения.
Электронное устройство 50 может, например, быть мобильным терминалом или абонентским оборудованием системы беспроводной связи. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы в любом электронном устройстве или аппаратуре, где требуется кодирование и декодирование, или только кодирование, или же только декодирование видеоизображений.
Устройство 50 может иметь в своем составе корпус 30 для размещения и защиты устройства. Устройство 50 может также включать дисплей 32 в форме дисплея на жидких кристаллах. В других вариантах осуществления настоящего изобретения упомянутый дисплей может быть выполнен по любой технологии, подходящей для отображения изображений или видеоинформации. Устройство 50 может также включать клавиатуру 34. В других вариантах осуществления настоящего изобретения может применяться любой подходящий интерфейс обмена данными или пользовательский интерфейс. К примеру, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного дисплея. Устройство может включать микрофон 36 или любое другое подходящее устройство ввода аудиоинформации, которое может быть устройством ввода цифрового или аналогового сигнала. Устройство 50 может также включать устройство вывода аудиоинформации, которое в вариантах осуществления настоящего изобретения может представлять собой любое из следующего: головной телефон 38, громкоговоритель или же аналоговое или цифровое соединение для вывода аудиоинформации. Устройство 50 может также включать аккумулятор 40 (или в других вариантах осуществления настоящего изобретения устройство может снабжаться электроэнергией от любого подходящего мобильного энергетического устройства, например, солнечной батареи, топливной батареи или заводного генератора). Устройство может также включать инфракрасный порт 42 для связи с другими устройствами в ближней зоне прямой видимости. В других вариантах осуществления настоящего изобретения устройство 50 может включать любые подходящие решения связи малой дальности, например, беспроводное соединение Bluetooth или проводное соединение USB/Firewire.
Устройство 50 может включать контроллер 56 или процессор для управления устройством 50. Контроллер 56 может быть соединен с памятью 58, которая в различных вариантах осуществления настоящего изобретения может хранить данные, одновременно в форме видеоинформации и аудиоинформации, и/или может также хранить инструкции для исполнения в контроллере 56. Контроллер 56 может быть также соединен со схемами 54 кодека, способными осуществлять кодирование и декодирование аудио- и/или видеоданных или являться вспомогательным средством при кодировании и декодировании, выполняемом контроллером 56.
Устройство 50 может также включать устройство 48 чтения карт и смарт-карту 46, например, карту UICC и устройство чтения UICC-карт для предоставления информации об абоненте, и для обеспечения возможности предоставления аутентификационной информации с целью аутентификации и авторизации абонента в сети.
Устройство 50 может включать схемы 52 радиоинтерфейса, связанные с контроллером, которые могут использоваться для формирования сигналов беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или беспроводной локальной вычислительной сетью. Устройство 50 может также включать антенну 44, связанную со схемами 52 радиоинтерфейса, для передачи радиочастотных сигналов, формируемых в схемах 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств).
В некоторых вариантах осуществления настоящего изобретения устройство 50 включает камеру, способную записывать или регистрировать отдельные кадры, которые затем передают в кодек 54 или контроллер для обработки. В других вариантах осуществления настоящего изобретения устройство может принимать от другого устройства данные видеоизображений для обработки перед их передачей и/или хранением. В других вариантах осуществления настоящего изобретения устройство 50 может принимать изображение для кодирования/декодирования либо беспроводным способом, либо по проводному соединению.
С помощью фиг. 3 проиллюстрирован один из примеров системы, в которой могут использоваться различные варианты осуществления настоящего изобретения. Система 10 включает несколько устройств связи, способных осуществлять связь при помощи одной или нескольких сетей. В состав системы 10 может входить любая комбинация проводных и беспроводных сетей, включая, без ограничения перечисленным, беспроводную сотовую телефонную сеть (например, сеть GSM, UMTS, CDMA и т.п.), беспроводную локальную вычислительную сеть (wireless local area network, WLAN), например, в соответствии с определением в любом из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную вычислительную сеть Ethernet, локальную вычислительную сеть типа «маркерное кольцо» глобальную сеть и Интернет.
Система 10 может включать как проводные, так и беспроводные устройства связи, а также устройство 50, подходящее для реализации вариантов осуществления настоящего изобретения.
В качестве примера на фиг. 3 показана мобильная телефонная сеть 11 и изображение сети Интернет 28. Соединение с Интернетом 28 может включать, без ограничения перечисленным, беспроводные соединения с большим радиусом действия, беспроводные соединения с малым радиусом действия, а также различные проводные соединения, включая, без ограничения перечисленным, телефонные линии, кабельные линии, линии электропередач и аналогичные каналы связи.
Примерами устройств связи в системе 10 могут служить, без ограничения перечисленным, электронная аппаратура или устройство 50, комбинация карманного персонального компьютера (personal digital assistant, PDA) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (integrated messaging device, IMD), настольный компьютер 20, ноутбук 22. Устройства 50 связи могут быть как стационарными, так и мобильными, например, они могут переноситься лицами, находящимися в движении. Устройство 50 может также размещаться на транспортном средстве, включая, без ограничения перечисленным, автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.
Варианты осуществления настоящего изобретения могут также быть реализованы в абонентской телеприставке, т.е. в приемнике цифрового телевидения, который, опционально, может обладать функциональностью отображения видеоинформации и беспроводной связи, в планшетных или (портативных) персональных компьютерах (ПК), которые включают аппаратную или программную (или комбинированную) реализацию кодера и/или декодера, в различных операционных системах, в чипсетах (микросхемных наборах), процессорах, DSP-процессорах и/или во встраиваемых системах, обеспечивающих аппаратное и/или программное кодирование.
Некоторые из подобных или других устройств могут как посылать, так и принимать вызовы и сообщения, а также осуществлять связь с операторами связи при помощи беспроводного соединения 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между средствами 11 связи и Интернетом 28. Система может включать дополнительные устройства связи, а также устройства связи других типов.
Устройства связи могут осуществлять связь с использованием различных технологий передачи данных, включая, без ограничения перечисленным, множественный доступ с кодовым разделением (Code Division Multiple Access, CDMA), глобальную систему мобильной связи (Global System for Mobile Communications, GSM), универсальную систему мобильной связи (Universal Mobile Telecommunication System, UMTS), множественный доступ с разделением по времени (Time Division Multiple Access, TDMA), множественный доступ с разделением по частоте (Frequency Division Multiple Access, FDMA), протокол управления передачей/протокол Интернета (Transmission Control Protocol/Internet Protocol, TCP-IP), службу коротких сообщений (Short Messaging Service, SMS), службу мультимедийных сообщений (Multimedia Messaging Service, MMS), электронную почту, сервис мгновенной передачи сообщений (Instant Messaging Service, IMS), Bluetooth, IEEE 802.11, и любые аналогичные технологии беспроводной связи. Устройство связи, используемое при реализации различных вариантов осуществления настоящего изобретения, может осуществлять связь с использованием различных сред передачи данных, включая, без ограничения, радиосоединения, инфракрасные, лазерные, кабельные соединения или любые другие подходящие соединения.
Видеокодек состоит из кодера, при помощи которого входные видеоданные преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодера, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра пользователем. Как правило, в кодере часть информации исходной видеопоследовательности отбрасывается с целью представления видеоинформации в более компактной форме (т.е. с меньшим битрейтом).
Типовые гибридные видеокодеки, например, многие из реализаций кодеров, соответствующие стандартам ITU-T Н.263 и Н.264, кодируют видеоинформацию в два этапа. Сначала предсказывают значения пикселей в определенной области изображения (или «блоке» пикселей), например, с использованием механизмов компенсации движения (нахождение области в одном из предварительно закодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку пикселей, и указание на эту область) или с использованием средств пространственного предсказания (использование, заданным образом, значений пикселей вокруг кодируемого блока пикселей). Затем кодируют ошибку предсказания, т.е. разность между предсказанным блоком пикселей и исходным блоком пикселей. Как правило, это выполняется при помощи преобразования разности пиксельных значений с использованием заданного преобразования (например, дискретного косинусного преобразования (Discrete Cosine Transform, DCT), или его варианта), квантования его коэффициентов и энтропийного кодирования квантованных коэффициентов. За счет регулировки степени детализации процесса квантования кодер может управлять балансом между точностью представления пикселей (качеством изображения) и размером результирующего кодированного представления видеоинформации (размером файла или битрейтом).
Внешнее предсказание, которое может также называться временным предсказанием, компенсацией движения или предсказанием с компенсацией движения, позволяет понизить временную избыточность. Источником информации для внешнего предсказания являются ранее декодированные изображения. Для внешнего предсказания используют тот факт, что смежные пиксели в одном изображении с большой вероятностью являются коррелированными. Внутреннее предсказание может выполняться в пространственном или во временном домене, т.е. могут предсказываться либо значения элементов изображения, либо коэффициенты преобразования. Внутреннее предсказание обычно применяют при внутреннем кодировании, когда внешнее предсказание не применяется.
Одним из результатов процедуры кодирования является набор параметров кодирования, таких как векторы движения и коэффициенты преобразования. Энтропийное кодирование многих параметров может быть более эффективным, если сначала выполняется их предсказание на основе пространственно-смежных или соседних по времени параметров Например, вектор движения может предсказываться на основе пространственно смежных векторов движения, при этом кодироваться может только разность относительно предсказания вектора движения. Предсказание параметров кодирования и внутреннее предсказание совместно могут называться внутрикадровым предсказанием.
На фиг. 4 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 4 проиллюстрирован кодер для двух уровней, однако нужно понимать, что проиллюстрированный кодер может быть расширен и выполнять кодирование более чем двух уровней. На фиг. 4 проиллюстрирован один вариантов осуществления видеокодера, включающий первый сегмент 500 кодера для базового уровня и второй сегмент 502 кодера для уточняющего уровня. Каждый из сегментов, первый сегмент 500 кодера и второй сегмент 502 кодера, могут включать аналогичные элементы для кодирования поступающих изображений. Сегменты 500, 502 кодера могут включать устройство 302, 402 предсказания пикселей, кодер 303, 403 ошибки предсказания и декодер 304, 404 ошибки предсказания. Также, на фиг. 4 показан один из вариантов осуществления устройства 302, 402 предсказания пикселей, включающего устройство 306, 406 внешнего предсказания, устройство 308, 408 внутреннего предсказания, селектор 310, 410 режима, фильтр 316, 416 и память 318, 418 опорных кадров. Устройство 302 предсказания пикселей в первом сегменте 500 кодера принимает изображения 300 базового уровня кодируемого видеопотока одновременно в устройстве 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 компенсации движения) и в устройстве 308 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 310 режима. Устройство 308 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 310 режима. В селектор 310 режима передается также копия изображения 300 базового уровня. Соответственно, устройство 402 предсказания пикселей во втором сегменте 502 кодера принимает изображения 400 уточняющего уровня кодируемого видеопотока одновременно в устройстве 406 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 418 компенсации движения) и в устройстве 408 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 410 режима. Устройство 408 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 410 режима. В селектор 410 режима передается также копия изображения 400 уточняющего уровня.
В зависимости от режима кодирования выбранного для кодирования текущего блока пикселей, на выход селектора 310, 410 режима передают выходные данные устройства 306, 406 внешнего предсказания, выходные данные одного из опциональных режимов внутреннего предсказания или выходные данные поверхностного кодера из состава селектора режима. Выходные данные селектора режима передают в первое суммирующее устройство 321, 421. Первое суммирующее устройство может вычитать выходные данные устройства 302, 402 предсказания пикселей из изображения 300 базового уровня, или изображения 400 уточняющего уровня, соответственно, с формированием первого сигнала 320, 420 ошибки предсказания, который подают на вход кодера 303, 403 ошибки предсказания.
Также, устройство 302, 402 предсказания пикселей принимает от устройства 339, 439 предварительного восстановления комбинацию предсказанного представления блока 312, 418 изображения и выходные данные 338, 438 кодера 304, 404 ошибки предсказания. Предварительно восстановленное изображение 314, 414 может быть передано в устройство 308, 408 внутреннего предсказания и фильтр 316, 416. В фильтре 316, 416 где принимается это предварительное представление, может выполняться его фильтрация и вывод окончательного восстановленного изображения 340, 440, которое может быть сохранено в память 318, 418 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 300 базового уровня при выполнении операций внешнего предсказания. При условии, что базовый уровень выбран в качестве источника для межуровневого предсказания элементов изображения и/или для межуровневого предсказания информации о движении уточняющего уровня, и если на это также выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, память 318 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и может использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания. При этом память 418 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания.
При условии, что базовый уровень выбран в качестве источника для предсказания параметров фильтрации уточняющего уровня, и на это выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, параметры фильтрации из фильтра 316 первого сегмента 500 кодера могут передаваться во второй сегмент 502 кодера.
Кодер 303, 403 ошибки предсказания включает блок 342, 442 преобразования и квантователь 344, 444. Блок 342 преобразования преобразует первый сигнал 320, 420 ошибки предсказания в домен преобразования. Таким преобразованием является, к примеру, преобразование DCT. Квантователь 344, 444 квантует сигнал, например, коэффициенты DCT, в домене преобразования и формирует квантованные коэффициенты.
Декодер 304, 404 ошибки предсказания принимает выходные данные из кодера 303, 403 ошибки предсказания и выполняет процедуры, обратные процедурам кодера 303, 403 ошибки предсказания, в результате чего получают декодированный сигнал 338, 438 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312, 412 изображения во втором суммирующем устройстве 339, 439 дает предварительное восстановленное изображение 314, 414. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 361, 461 который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 363, 463 обратного преобразования, который выполняет обратное преобразование над восстановленным сигналом преобразования, при этом выходные данные блока 363, 463 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр блоков, который может выполнять фильтрацию восстановленного блока (или блоков) в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
Энтропийный кодер 330, 430 принимает выходные данные из кодера 303, 403 ошибки предсказания и может выполнять соответствующее кодирование переменной длины и/или энтропийное кодирование сигнала для обеспечения возможности обнаружения и исправления ошибок. Выходные данные энтропийных кодеров 330, 430 могут быть введены в битовый поток, например, при помощи мультиплексора 508.
Стандарт H.264/AVC был разработан объединенной командой по видео (Joint Video Team, JVT) из состава группы экспертов по видеокодированию (Video Coding Experts Group (VCEG) сектора стандартизации телекоммуникаций Международного союза электросвязи (International Telecommunication Union, ITU-T) и группой экспертов по движущемуся изображению (Moving Picture Experts Group, MPEG) Международной организации по стандартизации (International Organization for Standardization, ISO) / Международной электротехнической комиссии (International Electrotechnical Commission, IEC). Стандарт H.264/AVC был опубликован обеими родительскими организациями по стандартизации и получил наименование Рекомендации Н.264 ITU-T и Международного стандарта ISO/IEC 14496-10, известного также как улучшенное видеокодирование (Advanced Video Coding, AVC), 10-ая часть MPEG-4. Были выпущены несколько версий стандарта H.264/AVC, в спецификацию каждой из которых добавлялись новые расширения или элементы. В число этих расширений вошли масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видекодирование (Multiview Video Coding, MVC).
Объединенной командой по видеокодированию (Joint Collaborative Team - Video Coding, JCT-VC) группы VCEG и MPEG был создан разработан высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC), H.265. В текущее время в ISO/IЕС и ITU-T проходят последние голосования по одобрению стандарта H.265/HEVC. Стандарт будет опубликован обеими родительскими организациями по стандартизации и в текущий момент имеет наименование Рекомендации H.265 ITU-T и Международного стандарта ISO/IEC 23008-2, известного также как высокоэффективное видеокодирование (HEVC), 2-ая часть MPEG-H. В настоящее время продолжаются работы по стандартизации, имеющие целью определить расширения стандарта H.265/HEVC, включая расширения масштабируемого, многоракурсного, трехмерного кодирования и расширение диапазона точности.
В настоящем разделе приведены ключевые определения, описана структура битового потока и кодирования, а также основные понятия стандартов H.264/AVC и HEVC, - в качестве примера видеокодера, декодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Часть ключевых определений, структур битового потока и кодирования, а также основных понятий стандарта H.264/AVC совпадают с проектом стандарта HEVC, в этом случае они описаны ниже совместно. Аспекты настоящего изобретения не ограничены стандартами H.264/AVC или HEVC, напротив, данное описание приведено в качестве одного из примеров базы для частичной или полной реализации настоящего изобретения.
Аналогично многим предшествующим стандартам видеокодирования, в стандартах H.264/AVC и HEVC определены синтаксис и семантика битового потока, а также процесс декодирования безошибочных битовых потоков. Процесс кодирования не определен, однако кодеры должны формировать битовые потоки, соответствующие стандарту.
Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического опорного декодера (Hypothetical Reference Decoder (HRD). Стандарт включает в себя инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании не является обязательным, а процесс декодирования для битовых потоков с ошибками не определен.
В описании существующих стандартов, а также в описании примеров осуществления настоящего изобретения, синтаксическим элементом называется элемент данных, представленных в битовом потоке. Синтаксической структурой может быть назван ноль или более синтаксических элементов, совместно находящихся в битовом потоке в заданном порядке.
Профилем может быть названо подмножество всего синтаксиса битового потока, определенного стандартом или спецификацией декодирования/кодирования. В рамках ограничений, налагаемых синтаксисом заданного профиля, может сохраняться очень большой разброс требований к производительности кодеров и декодеров, в зависимости от значений, принимаемых синтаксическими элементами в битовом потоке, например, заданного размера декодируемых изображений. Во многих применениях реализация декодера, способного обрабатывать все гипотетически возможные синтаксические конструкции определенного профиля, не представляется ни практичной, ни экономичной. Для решения данной проблемы могут применяться уровни. Уровнем может быть назван заданный набор ограничений, налагаемых на значения синтаксических элементов в битовом потоке и переменных, определенных в стандарте или спецификации декодирования/кодирования. Такие ограничениями могут быть простыми ограничениями, накладываемыми на значения. Альтернативно или в дополнение они могут принимать форму ограничений на арифметические комбинации значений (например, ширина изображения, умноженная на высоту изображения, умноженные на количество декодируемых в секунду изображений). Для уровней стандарта могут также использоваться другие средства определения ограничений. Некоторые из ограничений, заданных для уровня стандарта, могут, например, относиться к максимальному размеру изображения, максимальному битрейту и максимальной скорости передачи данных в блоках кодирования, например, макроблоках, за единицу времени, например, секунду. Для всех профилей могут быть определены одинаковые наборы уровней стандарта. Например, в целях повышения совместимости терминалов, в которых реализованы различные профили, может быть предпочтительным, чтобы большинство или все параметры, определяющие каждый из уровней, были общими для всех профилей.
Элементарным блоком для ввода в декодер H.264/AVC или HEVC и вывода из декодера H.264/AVC или HEVC, соответственно, является изображение. Изображение, поданное в качестве входных данных в кодер может называться исходным изображением, а изображение, декодированное декодером, может называться декодированным изображением.
Исходное и декодированное изображения, каждое, состоят из одного или более массивов отсчетов, например, одного или более наборов массивов отсчетов:
- только составляющая яркости (Y) (монохромное изображение);
- составляющая яркости и две составляющие цветности (YCbCr или YCgCo);
- составляющие зеленого, синего и красного (GBR или RGB);
- массивы, представляющие другие неопределенные монохромные или трехкомпонентные цветовые отсчеты (например, YZX, которые также называют XYZ).
Далее в настоящем описании такие массивы называются компонентами яркости (или L, или Y) и компонентами цветности, при этом два массива цветности могут обозначаться как Cb и Cr; независимо от реально используемого метода представления информации о цвете. Реально используемый способ представления цветовой информации может, например, указываться в битовом потоке, например, с использованием синтаксиса информации об используемости видео (Video Usability Information, VUI) в стандарте H.264/AVC и/или HEVC. Составляющая может быть определена как массив отсчетов или одиночный отсчет из одного из трех массивов отчетов (одного яркости и двух цветности), или как массив отсчетов или одиночный отсчет из массива, составляющего изображение в монохромном формате.
В случае стандартов H.264/AVC и HEVC изображение может представлять собой кадр или поле. Кадр включает в себя матрицу отсчетов яркости, и возможно также, соответствующих значений цветности. Поле представляет собой множество чередующихся строк элементов изображения в кадре и может использоваться в качестве входных данных для кодера в случае, когда исходный сигнал является чересстрочным. Массивы отсчетов цветности могут отсутствовать (и следовательно, могут применяться монохромные значения) или массивы отсчетов цветности могут иметь пониженное разрешение по сравнению с массивами отсчетов яркости. Форматы цветности могут быть, в общем, описаны следующим образом:
При дискретизации в монохромном виде имеется только один массив отсчетов, который, по определению, считают массивом яркости.
При дискретизации с форматом 4:2:0 каждый из двух массивов цветности имеет половину высоты массива яркости и половину его ширины.
При дискретизации с форматом 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту с массивом яркости, но половину ширины.
- При дискретизации с форматом 4:4:4, если не используют отдельных цветовых плоскостей, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости.
В стандартах H.264/AVC и HEVC массивы отсчетов могут кодироваться в виде отдельных цветовых плоскостей в битовом потоке, и соответственно, может выполняться декодирование отдельно кодированных цветовых плоскостей из битового потока. Если применяются отдельные цветовые плоскости, каждую из них обрабатывают отдельно (в кодере и/или декодере), как изображение с монохромным представлением.
Если для составляющих цветности применяют меньшую частоту дискретизации (например, формат 4:2:0 или 4:2:2 представления цветовой информации), то местоположение отсчетов цветности относительно отсчетов яркости может определяться на стороне кодера (например, в качестве шага предварительной обработки или в качестве части процедуры кодирования). Положения значений яркости относительно отсчетов цветности могут быть заранее заданы, например, в стандарте кодирования, в случае H.264/AVC или HEVC, или могут быть указаны в битовом потоке, например, как часть информации VUI в стандартах H.264/AVC или HEVC.
Разбиением называют такое разделение множества на подмножества, при котором каждый из элементов множества находится только в одном из подмножеств.
В стандарте H.264/AVC макроблок представляет собой блок отсчетов яркости размером 16×16 и соответствующие блоки отсчетов цветности. Например, при схеме дискретизации 4:2:0 макроблок будет содержать один блок отсчетов размером 8×8 для каждого компонента цветности. В стандарте H.264/AVC изображение разбивается на одну или более групп слайсов, при этом каждая группа слайсов содержит один или более слайсов. В стандарте H.264/AVC слайс состоит из целого числа макроблоков, упорядоченных в порядке сканирования растра в данной группе слайсов.
При описании операций кодирования и/или декодирования в стандарте HEVC могут использоваться следующие термины. Блок отсчетов для кодирования (coding block) может быть определен как блок отсчетов размером N×N, для некоторого значения N, такого, что разделение блока отсчетов с древообразной структурой кодирования на блоки отсчетов для кодирования является разбиением. Блок отсчетов с древообразной структурой кодирования (coding tree block, СТВ) может быть определен как блок отсчетов размером N×N, для некоторого значения N, такого, что разделение составляющей изображения на блоки отсчетов с древообразной структурой кодирования представляет собой разбиение. Блок с древообразной структурой кодирования (coding tree unit, CTU) может быть определен как блок отсчетов яркости с древообразной структурой кодирования, два соответствующих блока отсчетов цветности с древообразной структурой кодирования изображения, имеющего три массива отсчетов, или блок отсчетов с древообразной структурой кодирования монохромного изображений, или изображения, которое кодируют с использованием трех отдельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов. Блок кодирования (coding unit, CU) может быть определен как блок отсчетов яркости, два соответствующих блока отсчетов цветности для кодирования изображения, имеющего три массива значений, или блок отсчетов для кодирования монохромного изображения, или изображения, которое кодируют с использованием трех отдельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов.
В некоторых видеокодеках, например, соответствующих стандарту высокоэффективного видеокодирования (HEVC), видеоизображения разделяют на блоки кодирования (CU), покрывающие область изображения. Каждый из блоков кодирования состоит из одного или более блоков предсказания (prediction unit, PU), определяющих процедуру предсказания элементов изображения в блоке кодирования, а также одного или более блоков преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для элементов изображения в блоке кодирования. Как правило, блок кодирования состоит из квадратного массива элементов изображения, размер которого выбирается из заранее заданного множества допустимых размеров блока кодирования. Блок кодирования максимально допустимого размера, как правило, называется LCU (largest coding unit, наибольший блок кодирования) или блоком с древовидной структурой кодирования (coding tree unit, (CTU), при этом изображение в видео разбивается на неперекрывающиеся блоки LCU. Блок LCU может быть разбит на комбинацию менее крупных блоков кодирования, например, при помощи рекурсивного разбиения LCU и результирующих блоков кодирования. Каждый из результирующих блоков кодирования, как правило, имеет связанными с ним по меньшей мере один блок предсказания и один блок преобразования. Каждый блок предсказания и блок преобразования могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения точности процедур предсказания и кодирования ошибки предсказания соответственно. Каждый блок предсказания имеет связанную с ним информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного блока предсказания (например, информацию вектора движения в случае блока предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого блока предсказания).
Например, направленность режима предсказания в случае внутреннего предсказания, т.е. направление предсказания, применяемого в конкретном режиме предсказания, может быть вертикальной, горизонтальной, диагональной. Например, в кодеке, соответствующем текущему проекту стандарта HEVC, унифицированное внутреннее предсказание может обеспечиваться во вплоть до 34 режимах направленного предсказания, в зависимости от размера блоков предсказания, при этом каждый из режимов предсказания имеет присвоенное ему направление предсказания.
Аналогично, каждый блок преобразования связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном блоке преобразования (включая, например, информацию о коэффициентах DCT-преобразования). Информация о необходимости применения кодирования ошибки предсказания для каждого блока кодирования, как правило, сигнализируется на уровне блока кодирования. Если остатка или ошибки предсказания, связанного с блоком кодирования нет, то можно считать, что для данного блока кодирования блоки преобразования отсутствуют. Разделение изображения на блоки кодирования, и разделение блоков кодирования на блоки предсказания и блоки преобразования, сигнализируемые, как правило, в битовом потоке, позволяет декодеру воспроизводить заданную структуру этих блоков.
В проекте стандарта HEVC изображение может быть разбито на ячейки, которые имеют прямоугольную форму и содержат целое число блоков LCU. В проекте стандарта HEVC разбиение на ячейки дает регулярную сетку, в которой максимальная разность между высотой и шириной ячеек равна одному LCU. В проекте стандарта HEVC слайс определен как целое количество блоков с древообразной структурой кодирования, содержащихся в одном независимом сегмента слайса и во всех последующих зависимых сегментах слайса (если они присутствуют), которые предшествуют следующему независимому следующему независимому сегменту слайса (если он существует) внутри одного блока доступа. В проекте стандарта HEVC сегмента слайса определен как целое количество блоков с древообразной структурой кодирования, последовательно упорядоченных в порядке сканирования ячейки и содержащихся в одном блоке NAL. Разделение каждого из изображений на сегменты слайса является разбиением. В проекте стандарта HEVC независимый сегмент слайса определен как сегмент слайса, для которого значения синтаксических элементов в заголовке сегмента слайса не получают на основе значений предыдущего сегмента слайса, и при этом зависимый сегмент слайса определен как сегмент слайса, для которого значения некоторых из синтаксических элементов в заголовке сегмента слайса получают на основе значений для предыдущего независимого сегмента слайса в порядке декодирования. В проекте стандарта HEVC заголовок слайса определен как заголовок независимого сегмента слайса, который является текущим, или как заголовок независимого сегмента слайса, который предшествует текущему зависимому сегменту слайса, и при этом заголовок сегмента слайса определен как часть кодированного сегмента слайса, включающая элементы данных, которые относятся к первому блоку (или ко всем блокам) с древообразной структурой кодирования, представленному (или представленным) в сегменте слайса. Блоки кодирования сканируются в порядке сканирования растра LCU в ячейках или в изображении в целом, если ячейки не используются. В LCU блоки кодирования могут иметь заданный порядок сканирования. На фиг. 5 показан пример изображения, состоящего из двух ячеек и разделенных на квадратные блоки кодирования (показаны сплошными линиями), которые также были дополнительно разделены на прямоугольные блоки предсказания (показаны штриховыми линиями).
Декодер восстанавливает выходную видеоинформацию, применяя средства предсказания, аналогично кодеру, для формирования предсказанного представления блоков пикселей (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении) и декодирования ошибки предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания в пространственном домене пикселей). После применения средств декодирования предсказания и ошибки предсказания пикселей в декодере выполняется суммирование сигналов (пиксельных значений) предсказания и ошибки предсказания с формированием выходного видеокадра. В декодере (и кодере) могут также применяться дополнительные средства фильтрации, имеющие целью повышение качества выходного видеоизображения перед передачей его на отображение и/или хранение в качестве опорного для предсказания последующих кадров видеопоследовательности.
Фильтрация может включать, например, одно или более из следующего: деблокирующую фильтрацию, адаптивное смещение элементов изображения (sample adaptive offset, SAO), и/или адаптивную петлевую фильтрацию (adaptive loop filtering, ALF).
При выполнении SAO-фильтрации изображения разделяют на области, в которых, независимо для каждой области, принимают решение о необходимости выполнения SAO-фильтрации. Информацию о SAO-фильтрации в области инкапсулируют в блок адаптации параметров SAO (блок SAO), при этом в стандарте HEVC базовым блоком для размещения параметров SAO является блок CTU (соответственно, областью SAO является блок пикселей, охватываемый соответствующим CTU-блоком).
В алгоритме SAO-фильтрации элементы изображения в CTU-блоках классифицируют согласно определенному набору правил, при этом каждый набор элементов изображения, отнесенный к своему классу, улучшают при помощи добавления значений смещения. Значения смещения сигнализируют в битовом потоке. Существуют два типа смещений: 1) Полосовое смещение; 2) Краевое смещение. Для CTU-блоков либо не применяют SAO-фильтрацию, либо применяют или полосовое смещение, или краевое смещение. Выбор: не применять SAO-фильтрацию, применять полосовое смещение или применять краевое смещение, может осуществляться декодером, например, с сигнализацией в декодер информации об оптимизации «битовая скорость - искажения» (rate distortion optimization, RDO).
При полосовом смещении весь диапазон значений элементов изображения, в некоторых вариантах осуществления настоящего изобретения, разделяют на 32 полосы равной ширины. Например, в случае 8-битных элементов изображения, ширина полосы будет равна 8 (=256/32). Из этих 32 полос выбирают 4 и для каждой из выбранных полос сигнализируют различные смещения. Решение по выбору принимается кодером и может быть сигнализировано следующим образом: сигнализируют порядковый номер первой полосы, и затем делают вывод, что выбранными являются четыре полосы, следующие за ней. Полосовое смещение может быть полезным для исправления ошибок в однородных областях.
При краевом смещении тип краевого смещения (edge offset (ЕО) может быть выбран из четырех возможных типов (или категорий края), каждый из которых связан с определенным направлением: 1) вертикальный; 2) горизонтальный; 3) диагональный с углом 135 градусов; и 4) диагональный с углом 45 градусов. Выбор направления осуществляется кодером и сигнализируется в декодер. Каждый из типов определяет местоположение двух смежных элементов изображения для заданного элемента изображения в зависимости от угла. Затем каждый элемент изображения в блоке CTU относят к одной из пяти категорий, на основе сравнения значения элемента изображения со значениями двух смежных с ним элементов изображения. Эти пять категорий заданы следующим образом:
1. Значение текущего элемента изображения меньше, чем значение двух смежных с ним элементов изображения.
2. Значение текущего элемента изображения меньше, чем значение одного из смежных с ним, и равно второму смежному с ним элементу изображения.
3. Значение текущего элемента изображения больше, чем значение одного из смежных с ним, и равно второму смежному с ним элементу изображения.
4. Значение текущего элемента изображения больше, чем значение двух смежных с ним элементов изображения.
5. Ничто из перечисленного выше.
Сигнализация этих пяти категорий в декодер не является обязательной, поскольку классификация основана только на восстановленных элементах изображения, и может выполняться, идентичным образом, как в кодере, так и в декодере. После того, как каждый из элементов изображения в CTU-блоке, имеющем краевой тип смещения, будет отнесен к одной из пяти категорий, определяют значение смещения для каждой из первых четырех категорий и передают их в декодер. Смещение для каждой категории складывают со значениями элементов изображения, относящихся к соответствующей категории. Краевые смещения могут быть эффективными для исправления ложного оконтуривания в изображениях.
Параметры SAO-фильтрации в данных CTU-блоков могут сигнализироваться с интерливингом (т.е. с чередованием). На более высоком уровне, над CTU-блоком, заголовок слайса содержит синтаксический элемент, который определяет, применяется ли в данном слайсе SAO-фильтрация. Если SAO-фильтрация используется, то два дополнительных синтаксических элемента определяют, применяется ли SAO-фильтрация к составляющим Сb и Сr. Для каждого CTU-блока возможны три варианта: 1) копирование параметров SAO-фильтрации из CTU-блока, расположенного слева, 2) копирование параметров SAO-фильтрации из CTU-блока, расположенного сверху; или 3) сигнализация новых параметров SAO-фильтрации.
Адаптивный петлевой фильтр (adaptive loop filter, ALF) - это еще один способ повышения качества восстановленных элементов изображения. Оно может достигаться при помощи циклической фильтрации элементов изображения. В некоторых из вариантов осуществления настоящего изобретения кодер определяет, например, исходя из информации RDO, какие из областей изображения подлежат фильтрации, а также коэффициенты фильтрации, и эту информацию передают в декодер.
В типовых видеокодеках на информацию о движении указывают при помощи векторов движения, связанных с каждой из групп пикселей изображения, для которых используется компенсация движения. Каждый из таких векторов движения является представлением смещения блока пикселей в кодируемом изображении (в кодере) или декодируемом изображении (в декодере) и блока пикселей, являющегося исходным для предсказания, в одном из ранее кодированных иди декодированных изображениях. С целью эффективного представления векторов движения, как правило, применяют их разностное кодирование относительно вектора движения, предсказанного для конкретного блока пикселей. В типовых видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков пикселей. Другим способом создания предсказаний векторов движения является формирование списка кандидатных предсказаний на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображения временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание, какое опорное изображение (или изображения) будут применяться для предсказания с компенсацией движения, и такая информация предсказания может быть представлена, например, указателем на опорное изображение, которое указывает на ранее кодированное или декодированное изображение. Указатель на опорное изображение, как правило, предсказывается на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорном изображении временного предсказания. При этом, обычно, в кодеках стандарта высокоэффективного видеокодирования применяют дополнительный механизм кодирования/декодирования информации о движении, часто называемый режимом слияния, в котором вся информация поля движения, включающая вектор движения и указатель на соответствующее опорное изображение для каждого имеющегося списка опорных изображений, является предсказываемой и применяется без какого-либо изменения или коррекции. Аналогично, предсказание информации поля движения выполняют с использованием информации поля движения соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображениях временного предсказания, а использованную информацию поля движения сигнализируют в списке кандидатных полей движения вместе с информацией поля движения имеющихся смежных и/или сорасположенных блоков пикселей.
В типовых видеокодеках имеется возможность применения однонаправленного предсказания, при котором для кодируемого (или декодируемого) блока пикселей используют один блок пикселей предсказания, а также двунаправленного предсказания, при котором для формирования предсказания для кодируемого (или декодируемого) блока пикселей комбинируют два блока пикселей предсказания. В некоторых из видеокодеков обеспечивается возможность взвешенного предсказания, при котором значения элементов изображения из блоков пикселей предсказания взвешивают перед сложением с информацией ошибки. Например, могут применяться весовой коэффициент-множитель и добавочное смещение. При явном взвешенном предсказании, обеспечиваемом некоторыми из видеокодеков, весовой коэффициент и смещение могут быть закодированы, например, в заголовке слайса для каждого возможного указателя на опорное изображение. При неявном взвешенном предсказании, обеспечиваемом некоторыми из видеокодеков, весовые коэффициенты и/или смещения не кодируют, а вычисляют, например, на основе взаимного расстояния между порядковыми номерами изображений (picture order count, РОС) для опорных изображений.
В типовых видеокодеках остаток предсказания после компенсации движения сначала преобразуют с помощью ядра преобразования (например, DCT), и только затем кодируют. Причиной тому является частое наличие остаточной корреляции в остатке предсказания, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование.
В типовых видекодерах для поиска режимов кодирования с оптимальным соотношением битовой скорости/потери качества, например, необходимого режима макроблоков и связанных с ними векторов движения, используется целевая функция Лагранжа. В целевой функции такого типа используется весовой коэффициент, или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей или элементов изображения в некоторой области изображения:
где С - оптимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество бит, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
Стандарт и спецификации видеокодирования могут разрешать разделение в кодере кодированного изображения на кодированные слайсы или аналогичные элементы. Предсказание внутри изображения с пересечением границ слайсов, как правило, не допускается. Следовательно, слайсы можно считать способом разделения кодированного изображения на независимо декодируемые части. В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, слайсы можно считать способом деления кодированного изображения на независимо декодируемые части, и следовательно, слайсы часто считаются элементарными единицами передачи. Во многих случаях кодеры могут указывать в битовом потоке, какие типы внутреннего предсказания с переходом между границами слайсов запрещены, при этом декодер учитывает данную информацию при своей работе, например, делая вывод о доступных источниках предсказания. Например, элементы изображения из соседних макроблоков, или блоков кодирования, могут считаться недоступными для внутреннего предсказания, если эти соседние макроблоки, или блоки кодирования, расположены в различных слайсах.
Кодированные слайсы могут быть разбиты на три категории: слайсы в порядке сканирования растра, прямоугольные слайсы и гибкие слайсы.
Слайс в порядке сканирования растра представляет собой кодированный сегмент, состоящий из последовательных макроблоков, или аналогичных элементов, расположенных в порядке сканирования растра. Примерами слайсов в порядке сканирования растра являются видеопакеты 2-ой части стандарта MPEG-4 и группы макроблоков (macroblocks, GOB) с непустым заголовком MPEG-4 GOB в стандарте Н.263.
Прямоугольный слайс представляет собой кодированный сегмент, который состоит из прямоугольной области макроблоков или аналогичных элементов. Прямоугольный слайс может иметь в высоту более одной строки макроблоков, или аналогичных элементов, при этом ширина его может быть меньшей, чем ширина полного изображения. Стандарт Н.263 включает в себя опциональный подрежим прямоугольных слайсов, при этом GOB-группы в стандарте Н.261 также можно считать прямоугольными слайсами. Гибкий слайс может содержать макроблоки (или аналогичные элементы) из любых заранее заданных местоположений. Кодеки H.264/AVC допускают группирование макроблоков в более чем одну группу слайсов. Группа слайсов может содержать макроблоки из любых местоположений, включая несмежно расположенные макроблоки. Слайс в некоторых из профилей стандарта H.264/AVC состоит по меньшей мере из одного макроблока в соответствующей группе слайсов, упорядоченных в порядке сканирования растра в данной группе слайсов.
Элементарной единицей для вывода из декодера H.264/AVC или HEVC и ввода в декодер H.264/AVC или HEVC, соответственно, является блок уровня сетевой абстракции (Network Abstraction Layer, NAL). С целью передачи по сетям пакетной передачи данных или хранения в структурированных файлах NAL-блоки могут инкапсулироваться в пакеты или в аналогичные структуры. Формат битового потока определен в стандартах H.264/AVC и HEVC для сред передачи или хранения, не обеспечивающих структуру кадров. В формате битового потока NAL-блоки отделяются друг от друга при помощи прикрепления стартового кода перед каждым NAL-блоком. Чтобы исключить ложное обнаружение границ NAL-блоков в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке NAL-блока, если в противном случае в ней будет присутствовать стартовый код. Для обеспечения прозрачного шлюзового взаимодействия между системами пакетной и потоковой передачи данных, предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат битового потока или нет. Блок NAL может быть определен как синтаксическая структура, содержащая указание на тип данных, следующих за ней, и байты, содержащие эти данные в форме RBSP, чередующиеся, при необходимости, с байтами предотвращения эмуляции. Последовательность исходных байтов полезной нагрузки (raw byte sequence payload, RBSP) может быть определена как синтаксическая структура, включающая целое число байт и инкапсулированная в NAL-блоке. Последовательность RBSP может быть либо пустой, либо иметь форму строки информационных бит, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и ноль или более последующих бит, равных 0.
NAL-блоки состоят из заголовка и полезной нагрузки. В стандартах H.264/AVC и HEVC в заголовке NAL-блока имеется указание на тип NAL-блока. В стандарте H.264/AVC заголовок NAL-блока указывает также, является ли кодированный слайс, содержащийся в данном NAL-блоке, частью опорного изображения или неопорного изображения.
NAL-блок в стандарте H264/AVC включает 2-битный синтаксический элемент nal_ref_idc, который, если он равен 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью неопорного изображения, и если он больше 0, указывает на то, что кодированный слайс, содержащийся в данном NAL-блоке, является частью опорного изображения. Заголовок NAL-блоков расширений SVC и MVC может дополнительно содержать различные указания, связанные с масштабированием и многоракурсной иерархией.
В проекте стандарта HEVC для всех определенных типов NAL-блоков используется двухбайтный заголовок NAL-блока. Заголовок NAL-блока содержит один зарезервированный бит, шестибитный индикатор типа NAL-блока, трехбитный индикатор nal_temporal_id_plus1 временного уровня (может предъявляться требования, чтобы он был большим либо равным 1) и шестибитное зарезервированное поле (имеющее наименование reserved_zero_6bits), которые может также иметь обозначение nal_layer_id. Синтаксический элемент temporal_id можно считать временным идентификатором NAL-блока, при этом отсчитываемая от нуля переменная Temporalid может быть вычислена следующим образом: Temporalid=temporal_id_plus1 - 1. Случай, в котором TemporalId равна нулю, соответствует наименьшему временному уровню. Значение temporal_id_plus1 должно быть ненулевым, чтобы не возникала эмуляция стартового кода, в который входит два байта заголовка NAL-блока.
Это шестибитное зарезервированное поле предназначено для использования расширениями, например, будущими расширениями масштабирования или трехмерного видеокодирования. Подразумевается, что эти шесть бит могут нести информацию об иерархии масштабирования, например, параметр quality_id или аналогичную информацию, параметр dependency_id или аналогичную информацию, идентификатор уровня любого друга типа, порядковой номер в порядке ракурсов или аналогичную информацию, идентификатор ракурса, идентификатор, аналогичный priority_id в стандарте SVC, указывающий на корректность выделения битового подпотока, если из битового потока удалены все NAL-блоки со значениями идентификаторов, превышающими заданное значение идентификатора. Без потери общности в некоторых примерах осуществления настоящего изобретения вычисляют переменную Layerld получают на основе значения reserved_one_6bits, например, следующим образом. Layerld=reserved_zero_6bits.
NAL-блоки могут быть разделены на две категории: NAL-блоки уровня видеокодирования (Video Coning Layer, VCL) и NAL-блоки, не являющиеся блоками VCL. NAL-блоки категории VCL представляют собой NAL-блоки со стандартным кодированием слайсов. В стандарте H.264/AVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более кодированных макроблоков, каждый из которых соответствует блоку значений несжатого изображения. В стандарте HEVC кодированные NAL-блоки слайса содержат синтаксические элементы, представляющие собой один или более блоков кодирования.
В стандарте H.264/AVC может осуществляться указание на то, что кодированный NAL-блок слайса является кодированным слайсом изображения мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR) или кодированным слайсом изображения, не являющегося IDR-изображением.
В стандарте HEVC может выполняться указание на то, что NAL-блок кодированного слайса имеет один из следующих типов:
В проекте стандарта HEVC аббревиатуры типов изображений могут быть определены следующим образом: последующее изображение (trailing picture, TRAIL), изображение доступа к временному подуровню (Temporal Sub-layer Access, TSA), изображение пошагового доступа к временному подуровню (Step-wise Temporal Sub-layer Access, STSA), опережающее декодируемое изображение с произвольным доступом (Random Access Decodable Leading, RADL), опережающее пропускаемое изображение с произвольным доступом (Random Access Skipped Leading, RASL), изображение разорванной цепи доступа (Broken Link Access, BLA), изображение мгновенного обновления декодирования (Instantaneous Decoding Refresh, IDR), изображение с чистым произвольным доступом (Clean Random Access, CRA).
Изображение точки произвольного доступа (Random Access Point, RAP) - это изображение, в котором каждый слайс или сегмент слайса имеет параметр nal_unit_type в диапазоне от 16 до 23 включительно. RAP-изображение содержит слайсы только с внутренним кодированием, и может являться BLA-изображением, CRA-изображением или IDR-изображением. Первое изображение в битовом потоке является RAP-изображением. При условии, что нужные наборы параметров доступны в момент необходимости их активации, изображение RAP и следующие за ним в порядке декодирования изображения, не являющиеся RASL-изображениями, могут быть корректно декодированы без выполнения процедуры декодирования каких-либо изображений, предшествующих этому RAP-изображению в порядке декодирования. В битовом потоке могут присутствовать изображения, которые содержать только внутренне кодируемые слайсы, однако не являются RAP-изображениями.
В стандарте HEVC CRA-изображение может быть первым изображением в битовом потоке в порядке декодирования, или может появляться в битовом потоке позднее. CRA-изображения в стандарте HEVC позволяют иметь так называемые опережающие изображения, которые следуют за CRA-изображением в порядке декодирования, однако предшествуют ему в порядке вывода. Для некоторых из опережающих изображений, так называемых RASL-изображений, в качестве опорных могут использоваться изображения, декодированные перед CRA-изображением. Изображения, которые следуют за CRA-изображением и в порядке декодирования, и в порядке вывода, являются декодируемыми при осуществлении произвольного доступа к точке CRA-изображения, и следовательно, может осуществляться чистый произвольный доступ, аналогично функциональности чистого произвольного доступа IDR-изображения.
CRA-изображения может иметь связанные с ним RADL- или RASL-изображения. Когда CRA-изображение является первым изображением в битовом потоке в порядке декодирования, это CRA-изображение является первым изображением кодированной видеопоследовательности в порядке декодирования, и все связанные с ним RASL-изображения не выводятся декодером и могут не быть декодируемыми, поскольку могут содержать отсылки к изображениям, которых нет в битовом потоке.
Опережающее изображение, это изображение, которое предшествует связанному с ним RAP-изображению в порядке вывода. Связанное с ним RAP-изображение - это предыдущее RAP-изображение в порядке декодирования (если оно имеется). Опережающее изображение представляет собой либо RADL-изображение, либо RASL-изображение.
Все RASL-изображения являются опережающими изображениями для связанных с ними BLA-изображений или CRA-изображений. Когда RAP-изображение, связанное с RASL-изображением, является BLA-изображением или является первым кодированным изображением в битовом потоке, это RASL-изображение не выводят и оно при этом может не быть корректно декодируемым, поскольку RASL-изображение может содержать ссылки на изображения, которых нет в битовом потоке. Однако RASL-изображение может быть корректно декодируемым, если декодирование начато с RAP-изображения, которое предшествует RAP-изображению, связанному с данным RASL-изображением. RASL-изображения не используются в качестве опорных в процессе декодирования изображений других типов (не являющихся RASL-изображениями). Если они присутствуют, все RASL-изображения предшествуют, в порядке декодирования, всем последующим изображениям для одного связанного с ним RAP-изображения. В более ранних вариантах проекта стандарта HEVC RASL-изображения назывались изображениями, помеченными для отбрасывания (Tagged for Discard, TFD).
Все RADL-изображения являются опережающими изображениями. RADL-изображения не используются в качестве опорных в процессе декодирования последующих изображений для связанного с ними RAP-изображения. Если они присутствуют, все RADL-изображения предшествуют, в порядке декодирования, всем последующим изображениям для одного связанного с ним RAP-изображения. RADL-изображение не ссылается ни на какое изображение, предшествующее связанному с ним RAP-изображению в порядке декодирования, и следовательно, может быть корректно декодировано, если декодирование начинается со связанного с ним RAP-изображения. В более ранних вариантах проекта стандарта HEVC RADL-изображения назывались декодируемыми опережающими изображениями (Decodable Leading Picture, DLP).
Если часть битового потока, начинающуюся с CRA-изображения, включают в другой битовый поток, то RASL-изображения, связанные с этим CRA-изображением, могут не быть корректно декодируемыми, поскольку некоторые из их опорных изображений могут отсутствовать в комбинированном битовом потоке. Чтобы сделать операцию «склеивания» более простой, тип NAL-блока в случае CRA-изображения может быт изменен и указывать на то, что оно является BLA-изображением. RASL-изображения, связанные с BLA-изображением, могут не быть корректно декодируемыми, их не выводят и/или не отображают. При этом RASL-изображения, связанные с BLA-изображением, могут быть пропущены при декодировании.
BLA-изображение может быть первым изображением в битовом потоке, в порядке декодирования, или может появляться в битовом потоке позднее. Каждое BLA-изображение начинает новую кодированную видеопоследовательность, и оказывает влияние на процесс декодирования, аналогичное IDR-изображению. Однако BLA-изображение содержит синтаксические элементы, определяющие непустой набор опорных изображений. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, оно может иметь связанные с ним RASL-изображения, которые не выводятся декодером и могут не быть декодируемыми, поскольку могут содержать ссылки на изображения, отсутствующие в битовом потоке. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, оно может иметь связанные с ним RADL-изображения, которые определены как декодируемые. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_DLP, оно не имеет связанных с ним RASL-изображений, однако может иметь связанные с ним RADL-изображения, которые определены как декодируемые. Если BLA изображение имеет тип (nal_unit_type), равный BLA_W_LP, то оно не имеет никаких связанных с ним упреждающих сообщений.
IDR-изображение, имеющее значение параметра nal_unit_type, равное IDR_N_LP не имеет связанных с ним опережающих сообщений в битовом потоке. IDR-изображение, имеющее значение параметра nal_unit_type, равное IDR_W_LP, не имеет связанных с ним RASL-сообщений в битовом потоке, Однако может иметь связанные с ним RADL-изображения в битовом потоке.
Когда значение параметра nal_unit_type равно TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14, декодированное изображение не используют в качестве опорного ни для какого другого изображения в том же временном подуровне. То есть, в проекте стандарта HEVC, если значение параметра nal_unit_type равно TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14, декодированное изображение не включают в значения RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr никакого изображения с тем же значением TemporalId. Кодированное изображение со значением параметра, равным TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 или RSV_VCL_N14 может быть отброшено без влияния на декодируемость остальных изображений с тем же значением TemporalId.
Последующее изображение может быть определено как изображение, следующее за связанным с ним RAP-изображением в порядке вывода. Никакое изображение, являющееся последующим, не может иметь параметр nal_unit_type равным RADL_N, RADL_R, RASL_N или RASL_R. Любое изображение, являющееся опережающим, в порядке декодирования должно предшествовать всем последующим изображением, связанным с тем же RAP-изображением. В битовом потоке не могут присутствовать RASL-изображения, которые связаны с BLA-изображением, параметр nal_unit_type которого равен BLA_W_DLP или BLA_N_LP. В битовом потоке не могут присутствовать RADL-изображения, связанные с BLA-изображением, параметр nal_unit_type которого равен BLA_N_LP, или связанные с IDR-изображением, параметр nal_unit_type которого равен IDR_N_LP. Любое RASL-изображение, связанное с CRA-изображением или BLA-изображением, должно предшествовать в порядке вывода всем RADL-изображением, связанным с данными CRA-изображением или BLA-изображением. Любое RASL-изображение, связанное с CRA-изображением, должно следовать в порядке вывода за всем другими RAP-изображениями, которые предшествуют данному CRA-изображению в порядке декодирования.
В стандарте HEVC имеются два типа изображений, TSA-изображения и STSA-изображения, которые могут использоваться для указания на точки переключения временных подуровней. Если временные подуровни со значениями TemporalId вплоть до N были декодированы до появления TSA-изображения или STSA-изображения (исключительно), и данное TSA-изображение или STSA-изображение имеет значение TemporalId, равное N+1, то данное TSA-изображение или STSA-изображение обеспечивает возможность декодирования всех последующих (в порядке декодирования) изображений, имеющих значение TemporalId равным N+1. Тип TSA-изображения может налагать ограничения на само TSA-изображения, а также на все изображения в том же подуровне, которые следуют за этим TSA-изображением в порядке декодирования. Ни для одного из этих изображений не допускается применение внешнего предсказания на основе изображений в том же подуровне, предшествующих данному TSA-изображению в порядке декодирования. Определение TSA-изображения может также налагать ограничения на изображения в верхних подуровнях, которые следуют за данным TSA-изображением в порядке декодирования. Ни одно из этих изображений, если оно принадлежит тому же подуровню, что и TSA-изображение, или более высокому подуровню, не должно ссылаться на изображения, предшествующие данному TSA-изображению в порядке декодирования. TSA-изображения имеют значение TemporalId больше 0. STSA-изображение аналогично TSA-изображению, однако не налагает ограничений на изображения в более высоких подуровнях, следующие за STSA-изображением в порядке декодирования, и следовательно, позволяет выполнять переключение только на тот подуровень, где находится STSA-изображение.
NAL-блок, не являющийся блоком VCL, может, например, относиться к одному из следующих типов: набор параметров последовательности, набор параметров изображения, NAL-блок дополнительной уточняющей информации (supplemental enhancement information, SEI), разделитель блока доступа, NAL-блок конца последовательности, NAL-блок конца потока или NAL-блок с данными фильтрации. Набор параметров может быть необходим для восстановления декодированных изображений, при этом многие из остальных типов NAL-блоков, не являющихся блоками VCL, не являются необходимыми для восстановления декодированных изображений.
В набор параметров последовательности могут включаться параметры, которые остаются неизменными на протяжении всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы в процессе декодирования, набор параметров последовательности опционально может включать информацию по используемости видео (video usability information, VUI), включающую параметры, важные для буферизации, синхронизации вывода изображения, отрисовки и резервирования ресурсов. Существуют три типа NAL-блоков, которые в стандарте H.264/AVC определены как несущие наборы параметры последовательности: NAL-блоки с параметрами последовательности, содержащие все данные для NAL-блоков VCL стандарта H.264/AVC в последовательности, расширенные NAL-блоки набора параметров последовательности, содержащие данные внешне кодируемых изображений и блоки, содержащие подмножество набора параметров для NAL-блоков MVC и SVC VCL. В проекте стандарта HEVC RBSP набора параметров последовательности включает в себя параметры, на которые могут выполняться ссылки в RBSP одного или более наборов параметров последовательности или в одном или более NAL-блоков SEI, содержащих сообщение SEI с периодом буферизации. Набор параметров изображения содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений. RBSP набора параметров изображения может включать в себя параметры, на которые могут выполняться ссылки из NAL-блоков кодированного слайса или из одного или более кодированных изображений.
В проекте стандарта HEVC имеется также третий тип набора параметров, который в настоящим документе называется набором параметров адаптации (Adaptation Parameter Set, APS) и включает параметры, с большой вероятностью остающиеся неизменными для нескольких кодированных слайсов, но которые могут при этом изменяться, например, в каждом изображении или в каждых нескольких изображениях. В проекте стандарта HEVC синтаксическая структура набора APS содержит параметры или синтаксические элементы, относящиеся к матрицам квантования (quantization matrices, QM), смещению значений адаптации (adaptive sample offset, SAO), адаптивной петлевой фильтрации (adaptive loop filtering, ALF) и деблокирующей фильтрации. В проекте стандарта HEVC APS-набор представляет собой NAL-блок и кодируется без ссылок на другие NAL-блоки и без предсказания на основе других NAL-блоков. В каждый NAL-блок набора APS включают идентификатор, имеющий наименование синтаксического элемента aps_id, который также включается в состав заголовка слайса для указания на конкретный набор APS. В другом варианте проекта стандарта HEVC синтаксическая структура набора APS содержит только параметры ALF. В проекте стандарта HEVC RBSP набора параметров адаптации включает в себя параметры, которые могут быть названы NAL-блоками кодированного слайса одного или более изображений, если флаг sample_adaptive_offset_enabled_flag и/или флаг adaptive_loop_filter enabled_flag равен 1. В некоторых из более поздних вариантов проекта стандарта HEVC синтаксическая структура набора APS была удалена из текста спецификации.
В стандарте HEVC набор видеопараметров (video parameter set, VPS) может быть определен как синтаксическая структура, содержащая синтаксические элементы, применимые к нулю или более полных кодированных видеопоследовательностей, в зависимости от содержимого синтаксического элемента, находящегося в наборе SPS, на который ссылается синтаксический элемент в наборе PPS, на который, в свою очередь, ссылается синтаксический элемент в заголовке сегмента слайса.
RBSP набора видеопараметров может включать в себя параметры, ссылки на которые могут осуществляться в RBSP одной или более наборов параметров последовательности. Ниже описаны взаимоотношения и иерархия набора видеопараметров (VPS), набора параметров последовательности (SPS) и набора параметров изображения (SPS). Набор VPS располагается на один уровень выше набора SPS в иерархии наборов параметров и в контексте масштабируемости и/или 3D-видеокодирования. Набор VPS может включать в себя параметры, являющиеся общими для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом. Набор SPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне (масштабируемости или ракурсов) кодированной видеопоследовательности в целом, которые при этом могут быть также общими для нескольких уровней (масштабируемости или ракурсов). Набор PPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне представления (представления уровня масштабируемости или ракурса в одном блоке доступа) и которые с большой вероятностью являются общими для всех слайсов в нескольких представлениях уровня кодирования.
Набор VPS может предоставлять информацию о отношениях зависимости уровней кодирования в битовом потоке, а также множество другой информации, применимой для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом. В расширении масштабируемого видеокодирования стандарта HEVC набор VPS может включать, например, указание на соответствие значения Layerld, полученного из заголовка NAL-блока, одному или более значениям размерности масштабирования, например, соответствующим параметрам dependency_id, quality_id, view_id и depth_flag для уровня, определенным аналогично расширениям SVC и MVC. Набор VPS может включать информацию о применяемых профиле и уровне стандарта для одного или более уровней видеокодирования, а также о профиле и/или уровне стандарта для одного или более временных подуровней (состоящих из NAL-блоков VCL со значениями, меньшими или равными заданному значению temporal_id) представления уровня.
Синтаксис стандартов H.264/AVC и HEVC допускает наличие множественных экземпляров наборов параметров, при этом каждый экземпляр имеет уникальный идентификатор. Чтобы ограничить использование памяти, необходимой для наборов параметров, был ограничен диапазон значений для идентификаторов наборов параметров. В стандарте H.264/AVC и в проекте стандарта HEVC каждый заголовок слайса включает идентификатор набора параметров изображения, который является активным для декодирования изображения, содержащего этот слайс, при этом каждый набор параметров изображения содержит идентификатор активного набора параметра последовательности. В проекте стандарта HEVC заголовок слайса дополнительно включает идентификатор набора APS, однако в более поздних вариантах проекта стандарта HEVC идентификатор набора APS был удален из заголовка слайса. Следовательно, передача наборов параметров изображения и последовательности не обязательно должна быть точно синхронизирована с передачей слайсов. Напротив, достаточно, чтобы активные наборы параметров последовательности и изображения были приняты до момента осуществления ссылки на них, что позволяет передавать наборы параметров с использованием более надежных механизмов передачи, по сравнению с протоколами, применяемыми для передачи данных слайсов. Например, наборы параметров могут включаться в качестве параметров в описание сеанса для сеансов транспортного протокола реального времени (Real-time Transport Protocol, RTP). Если наборы параметров передаются в основной полосе, то в целях повышения устойчивости к ошибкам они могут повторяться.
Наборы параметров могут активироваться при помощи ссылки из слайса или из другого активного набора параметров, или, в некоторых случаях, из других синтаксических структур, например, из сообщения SEI с периодом буферизации. NAL-блоки SEI могут содержать одно или более сообщений SEI, которые не требуются для декодирования выходных изображений, но могут быть полезными в связанных с этим процедурах, например, синхронизации вывода изображения, отрисовки, обнаружения ошибок, сокрытия ошибок и резервирования ресурсов. В стандартах H.264/AVC и HEVC определены несколько типов сообщений SEI, при этом сообщения SEI с пользовательскими данными позволяют организациям и компаниям определять сообщения SEI для личного использования. В стандартах H.264/AVC и HEVC описаны синтаксис и семантика сообщений SEI, однако процедура обработки сообщений на стороне приемника не определена. Следовательно, кодер должен следовать стандарту H.264/AVC или HEVC при формирований сообщений, SEI при этом декодер, отвечающий стандарту H.264/AVC или HEVC соответственно, не обязательно должен обрабатывать сообщения SEI, соответствие выходной последовательности стандарту от этого не зависит. Одной из причин включения синтаксиса и семантики сообщений SEI в стандарты H.264/AVC и HEVC является возможность идентичной интерпретации дополнительной информации различными системами, и следовательно, их взаимодействия. Предполагается, что системные спецификации могут требовать применения конкретных сообщений SEI как на стороне кодера, так и на стороне декодера, при этом процедура обработки конкретных сообщений SEI на стороне приемника может быть определена дополнительно.
Кодированное изображение - это кодовое представление изображения. Кодированное изображение в стандарте H.264/AVC включает NAL-блоки VCL, которые необходимы для декодирования изображения. В стандарте H.264/AVC кодированное изображение может быть либо первично кодированным изображением, либо избыточно кодированным изображением. Первично кодированное изображение используется в процедуре декодирования безошибочных битовых потоков, тогда как избыточно кодированное изображение является представлением с избыточностью и декодируется, только если первично кодированное изображение не может быть успешно декодировано. В проекте стандарта HEVC избыточное кодированное изображение не определено.
В стандартах H.264/AVC и HEVC блок доступа включает первично кодированное изображение и связанные с ним NAL-блоки. В стандарте H.264/AVC порядок появления NAL-блоков внутри блока доступа задан следующим образом. На начало блока доступа может указывать опциональный NAL-блок, являющийся разделителем блоков доступа. За ним следует ноль или более NAL-блоков SEI. Далее идут кодированные слайсы первично кодированного изображения. В стандарте H.264/AVC после кодированных слайсов первично кодированного изображения могут следовать кодированные слайсы нуля или более избыточно кодированных изображений. Избыточно кодированное изображение - это кодовое представление изображения или части изображения. Избыточно кодированное изображение может декодироваться, если первично кодированное изображение не принято в декодере, например, в результате потерь при передаче или в результате ошибки в физическом носителе.
В стандарте H.264/AVC блок доступа может также включать внешне кодированное изображение, которое дополняет первично кодированное изображение и может использоваться, например, в процедуре отображения. Внешне кодированное изображение может, например, использоваться в качестве альфа-канала или альфа-слоя, задающего уровень прозрачности пикселей декодированных изображений. Альфа-канал, или альфа-слой, может использоваться в многоуровневой системе формирования или отрисовки изображений, где выходное изображение образуется накладывающимися друг поверх друга частично прозрачными изображениями. Внешне кодированное изображение имеет те же синтаксические и семантические ограничения, что и монохромное избыточно кодированное изображение. В стандарте H.264/AVC внешне кодированное изображение содержит то же количество макроблоков, что и первично кодированное изображение.
В стандарте HEVC блок доступа может быть определен как набор NAL-блоков, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат в точности одно кодированное изображение. Помимо NAL-блоков VCL кодированного изображения, блок доступа может содержать также NAL-блоки, не являющиеся блоками VCL. Декодирование блока доступа всегда дает декодированное изображение.
В стандарте H.264/AVC кодированная видеопоследовательность определена как ряд последовательных блоков доступа в порядке декодирования от блока доступа IDR включительно до следующего блока доступа IDR исключительно или до конца битового потока, - в зависимости от того, что появляется раньше. В проекте стандарта HEVC кодированная видеопоследовательность определена как последовательность блоков доступа, которая состоит, в порядке декодирования, из блока доступа CRA, который является первым блоком доступа в битовом потоке, блока доступа IDR или блока доступа BLA, за которым следуют ноль или более блоков доступа, не являющихся блоками IDR или BLA и включающих все последующие блок доступа вплоть до, но не включая, следующий блок доступа IDR или BLA.
Далее приведено определение и характеристики группы изображений (group of pictures, GOP). Группа GOP может быть декодирована независимо от того, были ли декодированы какие-либо предшествующие изображения или нет. Открытая группа изображений - это группа изображений, в которой изображения, предшествующие исходному внутренне предсказываемому изображению в порядке вывода, могут не быть декодированы корректно, если декодирование начинается с исходного внутренне предсказываемого изображения открытой группы изображений. Другими словами, изображения в открытой GOP могут ссылаться (для внутреннего предсказания) на изображения из предшествующей GOP. Декодер, соответствующий стандарту H.264/AVC, способен распознавать внутренне предсказываемое изображение в начале открытой GOP на основе сообщения SEI, указывающего на точку восстановления в битовом потоке стандарта H.264/AVC. Декодер, соответствующий стандарту HEVC, способен распознавать внутренне предсказываемое изображение в начале открытой GOP благодаря специальному типу NAL-блоков, CRA, который используется для кодируемых слайсов этого изображения. Закрытая группа изображений - это группа изображений, в которой все изображения могут быть декодированы корректно, если декодирование начинается с первого внутренне предсказываемого изображения закрытой группы изображений. Другими словами, ни одно из изображений в закрытой GOP не ссылается ни на одно изображение из предшествующих GOP. В стандартах H.264/AVC и HEVC принято, что закрытая группа GOP начинается с блока доступа IDR. В результате структура закрытой GOP имеет более высокий потенциал устойчивости к ошибкам, по сравнению со структурой открытой GOP, однако за счет возможного понижения эффективности сжатия. Структура кодирования с открытыми GOP дает потенциально более эффективное сжатие благодаря большей гибкости при выборе опорных изображений.
В синтаксисе битового потока стандартов H.264/AVC и HEVC присутствуют указания, является ли изображение опорным для внутреннего предсказания какого-либо иного изображения. Изображения с любым типом кодирования (I, Р, В) в стандартах H.264/AVC и HEVC могут быть как опорными изображениями, так и неопорными изображениями.
В стандарте H.264/AVC определена процедура маркировки декодированного опорного изображения с целью управления потреблением памяти в декодере. Максимальное количество опорных изображений для внешнего предсказания обозначается за М и определяется в наборе параметров последовательности. При декодировании опорного изображения оно маркируется как «используемое в качестве опорного». Если в результате декодирования опорного изображения более М изображений были помечены как «используемые в качестве опорного», то по меньшей мере одно из этих изображений помечают как «не используемое в качестве опорного». Имеются два типа операций маркировки декодированного опорного изображения: адаптивное управление памятью и скользящее окно. Режим маркировки декодированного опорного изображения может выбираться для каждого изображения в отдельности. Адаптивное управление памятью обеспечивает явную сигнализацию, при которой изображения помечаются как «не используемые в качестве памяти», причем также возможно назначение долгосрочных указателей на краткосрочные опорные изображения. Адаптивное управление памятью может требовать наличия в битовом потоке параметров операций управления памятью (memory management control operation, MMCO).
Параметры MMCO могут быть включены в синтаксическую структуру, маркирующую декодированное опорное изображение. Если применяется режим работы со скользящим окном, и М изображений помечены как «используемые в качестве опорных», то краткосрочное опорное изображение, являвшееся первым декодированным изображением среди краткосрочных опорных изображений, помеченных «используемыми в качестве опорных», помечается как «не используемое в качестве опорного». Другими словами, режим работы со скользящим окном обеспечивает работу с краткосрочными опорными изображениями по типу буфера «первый вошел, первый вышел».
Одна из операций управления памятью в стандарте H.264/AVC обеспечивает маркировку всех опорных изображений, кроме текущего изображения, как «не используемых в качестве опорных». Изображение мгновенного обновления декодирования (IDR) содержит только слайсы с внутренним предсказанием и вызывает аналогичный «сброс» опорных изображений.
В проекте стандарта HEVC синтаксические структуры для маркировки опорных изображений и соответствующие процедуры декодирования не применяются. Вместо этого, с аналогичными целями, используется синтаксическая структура и процедура декодирования набора опорных изображений (reference picture set, RPS). Набор опорных изображений, являющийся действительным или активным для изображения, включает все опорные изображения для данного изображения и все опорные изображения, которые остаются помеченными как «используемые в качестве опорных» для последующих изображений в порядке декодирования. В наборе опорных изображений существует шесть подмножеств, которые обозначаются RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll. Нотация обозначений этих шести подмножеств имеет следующее значение. "Curr" обозначает опорное изображение, которое включено в список опорных изображения для текущего изображения, и следовательно, может быть использовано как опорное изображение при внешнем предсказании текущего изображения. "Foll" обозначает опорное изображение, которое не включено в список опорных изображений для текущего изображения, но может быть использовано как опорное изображение для последующих изображений в порядке декодирования. "St" обозначает краткосрочные опорные изображения, которые в общем случае могут идентифицироваться при помощи определенного количества младших бит в их значении РОС (порядкового номера). "Lt" обозначает долгосрочные опорные изображения, которые идентифицируются специальным образом и, как правило, имеют большее отличие в значениях РОС от текущего изображения, чем это может быть отражено с помощью упомянутого определенного количества младших бит. "0" обозначает те опорные изображения, которые имеют меньшее значение РОС, тем текущее изображение. "1" обозначает те опорные изображения, которые имеют большее значение РОС, чем текущее изображение. RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0 и RefPicSetStFoll1 совместно называют краткосрочным подмножеством набора опорных изображений. RefPicSetLtCurr и RefPicSetLtFoll совместно называют долгосрочным подмножеством набора опорных изображений.
В проекте стандарта HEVC набор опорных изображений может быть задан в наборе параметров последовательности и использоваться в заголовке слайса при помощи указателя на конкретный набор опорных изображений. Набор опорных изображений может также задаваться в заголовке слайса. Долгосрочное подмножество набора опорных изображений, как правило, задается только в заголовке слайса, тогда как краткосрочные подмножества того же самого набора опорных изображений могут задаваться в наборе параметров изображения или в заголовке слайса. Набор опорных изображений может кодироваться независимо или может быть предсказываемым на основе другого набора опорных изображений (это называется внешним предсказанием RPS). При независимом кодировании набора опорных изображений синтаксическая структура включает вплоть до трех циклически определяемых элементов с итерацией по различным типам опорных изображений: краткосрочные опорные изображения со значениями РОС, меньшими текущего изображения, краткосрочные опорные изображения со значениями РОС, большими текущего изображения, и долгосрочные опорные изображения. Каждая такая циклическая запись определяет, что изображение должно быть помечено как «используемое в качестве опорного». В большинстве случаев изображение задается с использованием дифференциального значения РОС. При внешнем предсказании набора RPS используется тот факт, что набор опорных изображений для текущего изображения может быть предсказан на основе набора опорных изображений ранее декодированного изображения. Это возможно, поскольку все опорные изображения для текущего изображения являются либо опорными изображениями для предыдущего изображения, либо непосредственно декодированным изображением. Необходимо только указать, какие из этих изображений должны быть опорными и использоваться для предсказания текущего изображения. В обоих типах кодирования опорных изображений для каждого опорного изображения дополнительно устанавливают флаг (used_by_curr_pic_X_flag), который указывает, используется ли данное изображение в качестве опорного для текущего изображения (т.е. входит в список *Curr) или нет (т.е. входит в список *Foll). Изображения из набора опорных изображений, используемых для текущего слайса, помечают как «используемые в качестве опорных», а изображения, не входящие в набор опорных изображений, используемых для текущего слайса, помечают как «не используемые в качестве опорных». Если текущее изображение является IDR-изображением, то RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr и RefPicSetLtFoll назначаются равным пустому множеству.
В кодере и/или декодере может применяться буфер декодированных изображений (Decoded Picture Buffer, DPB). Имеются две причины для буферизации декодированных изображений - для использования в качестве опорных при внешнем предсказании и для изменения порядка декодированных изображений в выходной последовательности. Стандарты H.264/AVC и HEVC дают значительную гибкость как для маркировки опорных изображений, так и для переупорядочивания выходной последовательности, однако отдельные буферы для опорных изображений и изображений выходной последовательности могут приводить к нерациональному расходованию ресурсов памяти. Следовательно, буфер DPB может включать унифицированную процедуру буферизации опорных изображений и переупорядочивания выходной последовательности. Декодированное изображение может удаляться из буфера DPB, когда оно больше не используется в качестве опорного и не требуется для вывода.
Во многих режимах кодирования стандартов H.264/AVC и HEVC, на опорное изображение внешнего предсказания указывают с помощью указателя на список опорных изображений. Указатель может кодироваться с использованием кодирования переменной длины (неравномерного кодирования), что обычно дает более короткие значения указателей с меньшим числовым значением для соответствующих синтаксических элементов. В стандартах H.264/AVC и HEVC формируются два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) для каждого двунаправленно предсказываемого слайса (В-слайса), и один список опорных изображений (список 0 опорных изображений) для каждого слайса, кодируемого с внешним предсказанием (Р-слайса). В дополнение, для В-слайсов в проекте стандарта HEVC строится комбинированный список (список С) после завершения построения финальных списков опорных изображений (списка 0 и списка 1). Комбинированные списки могут использоваться для однонаправленного предсказания (также известного как «уни-предсказание») в В-слайсах. В некоторых из более поздних вариантов проекта стандарта HEVC комбинированный список отсутствует.
Список опорных изображений, например список 0 или список 1, как правило, формируется в два шага: Сначала формируют первичный список опорных изображений. Первичный список опорных изображений может формироваться, например, на основе параметров frame_num, РОС, temporal_id или информации из иерархической структуры, используемой для предсказания, например, из структуры GOP, или на основе какой-либо комбинации перечисленного. На втором шаге первичный список опорных изображений может быть переупорядочен с помощью команд переупорядочения списка опорных изображений (reference picture list reordering, RPLR), также называемых синтаксической структурой модификации списка опорных изображений, которая может содержаться в заголовках слайсов. В стандарте H.264/AVC команды RPLR указывают на изображения, которые упорядочены в направлении к началу соответствующего списка опорных изображений. Этот второй шаг может также быть назван процедурой модификации списка опорных изображений, а команды RPLR могут включаться в синтаксическую структуру модификации списка опорных изображений. Если используются наборы опорных изображений, то список 0 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr0, за которым следует RefPicSetStCurr1 и затем RefPicSetLtCurr. Список 1 опорных изображений может инициализироваться включением в него сначала RefPicSetStCurr1 и затем RefPicSetStCulr0. В стандарте HEVC первичные списки опорных изображений могут модифицироваться при помощи синтаксической структуры модификации списка опорных изображений, в которой изображения в первичных списках опорных изображений могут идентифицироваться при помощи записи-указателя на список. Другими словами, в стандарте HEVC модификацию списка опорных изображений кодируют в синтаксической структуре, которая содержит циклическое определение по всем записям в окончательном списке опорных изображений, при этом каждая запись циклической структуры представляет собой кодированный указатель фиксированный длины на исходный список опорных изображений, который указывает, с возрастающим порядком расположения, на изображение в окончательном списке опорных изображений.
Во многих стандартах кодирования, включая H.264/AVC и HEVC, процедура декодирования может давать на выходе указатель на опорное изображение в списке опорных изображений, который может применяться для указания, какое из нескольких опорных изображений необходимо использовать для внешнего предсказания определенного блока пикселей. Указатель на опорное изображение в некоторых режимах кодирования с внешним предсказанием может кодироваться кодером в битовый поток, или, в других режимах кодирования с внешним предсказанием, может вычисляться (например, кодером и декодером), например, с использованием соседних блоков.
С целью эффективного представления векторов движения в битовом потоке может выполняться их разностное кодирование относительно вектора движения, предсказанного для конкретного блока. Во многих видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых блоков. Другим способом создания предсказаний векторов движения, который иногда называют улучшенным предсказанием векторов движение (advanced motion vector prediction, AMVP) является формирование списка кандидатных предсказаний на основе соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображения временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание указателя на опорное изображение ранее кодированного или декодированного изображения. Указатель на опорное изображение, как правило, предсказывается на основе соседних блоков и/или сорасположенных блоков в опорном изображении временного предсказания. Разностное кодирование векторов движения с переходом границы слайса, как правило, не разрешено.
Улучшенное предсказание векторов движения (AMVP) или сходная с ним процедура может выполняться, например, описанным ниже образом, в то время как возможны и другие аналогичные реализации улучшенного предсказания векторов движения, например, с использованием различных наборов кандидатных позиций и кандидатных местоположений в наборах кандидатных позиций. Могут вычисляться два пространственных предсказания вектора движения (spatial motion vector predictors, MVP) и одно временное предсказание вектора движения (temporal motion vector predictor, TMVP). Они могут быть выбраны из позиций, проиллюстрированных на фиг. 6: три позиции 603, 604, 605 кандидатных пространственных предсказаний вектора движения, расположенные над текущим блоком 600 предсказания (В0, В1, В2) и две позиции 601, 602 - слева (АО, А1). В качестве представления направления предсказания (вверх или влево) для отбора кандидатных векторов движения может быть выбрано первое предсказание вектора движения, которое доступно (например, располагается в том же слайсе, кодировано с внешним предсказанием и т.п.) в заранее заданном порядке для каждого набора позиций кандидатов (В0, В1, В2) или (АО, А1). Указатель на опорное изображение для временного предсказания вектора движения может быть указан кодером в заголовке слайса (например, как сорасположенный с ним синтаксический элемента ref_idx). Вектор движения, полученный на основе сорасположенного изображения, может масштабироваться пропорционально разности порядковых номеров изображений между опорным изображением для временного предсказания вектора движения, сорасположенного изображения и текущего изображения. При этом может также выполняться контроль по избыточности для всех кандидатов, что позволяет устранить дублирование кандидатов, в результате которого в списке кандидатов может оказаться нулевой вектор движения. Предсказание вектора движения может быть указано в битовом потоке, например, при помощи указания направления на пространственное предсказание вектора движения (вверх или влево) или при помощи указания на выбор кандидатного временного предсказания вектора движения.
Во многих кодеках эффективного видеокодирования, например, в кодеках, соответствующих проекту стандарта HEVC, применяется дополнительный механизм кодирования и декодирования информации, часто называемый режимом (или процессом, или механизмом) слияния, в котором информация о движении блока пикселей или блока предсказания предсказывается и используется без какой-либо модификации или коррекции. Упомянутая выше информация о движении блока предсказания может включать одно или более из следующего: 1) информация о том, является ли «данный блок предсказания однонаправленно предсказываемым с использованием только списка 0 опорных изображений», или «данный блок предсказания является однонаправленно предсказываемым с использованием только списка 1 опорных изображений», или «данный блок предсказания является двунаправленно предсказываемым с использованием обоих списков опорных изображений, списка 0 и списка 1»; 2) значение вектора движения, соответствующее списку 0 опорных изображений, которое может включать горизонтальную и вертикальную составляющую вектора движения; 3) указатель на опорное изображение в списке 0 опорных изображений и/или идентификатор опорного изображения, на которое указывает вектор движения, соответствующий списку 0 опорных изображений, при этом идентификатор опорного изображения может представлять собой, например, значение порядкового номера изображения, значение идентификатора уровня кодирования (для межуровневого предсказания), или пару из значения порядкового номера изображения и значения идентификатора уровня кодирования; 4) информация маркировки опорного изображения, например, информация о том, было ли опорное изображение помечено как «используемое в качестве краткосрочного опорного изображения» или как «используемое в качестве долгосрочного опорного изображения»; 5)-7) аналогично 2)-4), соответственно, но для списка 1 опорных изображений. Аналогично, предсказание информации о движении выполняют с использованием информации о движении соседних блоков пикселей и/или сорасположенных блоков пикселей в опорных изображениях временного предсказания. Список, часто называемый списком слияния, формируют при помощи включения кандидатных предсказаний движения, связанных с доступными смежными/сорасположенными группами пикселей, при этом сигнализируется указатель на выбранное кандидатное предсказание движения в списке, а информация о движении выбранного кандидата копируется в информацию о движении текущего блока предсказания. Если применяется механизм слияния для всего блока кодирования, и при этом сигнал предсказания для блока кодирования используется в качестве сигнала восстановления, т.е. остаток предсказания не обрабатывается, то такой тип кодирования и декодирования блока кодирования называется, как правило, режимом пропуска или режимом пропуска, основанным на слиянии. В дополнение к режиму пропуска для отдельных блоков предсказания применятся также механизм слияния (не обязательно для всего блока кодирования, как в режиме пропуска) и в этом случае остаток предсказания может использоваться для повышения качества предсказания. Такой тип режима предсказания, называют, как правило, режимом внешнего слияния.
Одним из кандидатов в списке слияния может быть TMVP-кандидат, который может быть получен на основе сорасположенного блока пикселей внутри опорного изображения, на которое было указано, или которое было вычислено, например, внутри опорного изображения, на которое было выполнено указание, например, в заголовке слайса, к примеру, с использованием синтаксического элемента ref_idx сорасположенного изображения или аналогичного ему элемента.
В стандарте HEVC, когда режимом кодирования является режим слияния, указатель на так называемое целевое опорное изображение для временного предсказания вектора движения в списке слияния назначают равным 0. Когда режимом кодирования движения в стандарте HEVC, при использовании временного предсказания векторов движения, является режим улучшенного предсказания векторов движения, значение указателя на целевое опорное изображение указывают явно (например, для каждого блока кодирования).
После определения значения указателя на целевое опорное изображение значение вектора движения, основанное на временном предсказании вектора движения, может быть получено следующим образом: вычисляют вектор движения в группе пикселей, которая сорасположена с соседним, справа снизу, блоком кодирования для текущего блока кодирования. Изображение, в котором находится этот сорасположенный блок, может быть определено, например, согласно указателю на опорное изображение, сигнализированному в заголовке слайса в соответствии с предшествующим описанием. Найденный вектор движения для сорасположенного блока пикселей масштабируют пропорционально первой разности порядковых номеров изображений и второй разности порядковых номеров изображений. Первую разность порядковых номеров изображений вычисляют между изображением, содержащим данный сорасположенный блок, и опорным изображением вектора движения этого сорасположенного блока пикселей. Вторую разность порядковых номеров изображений вычисляют между текущим изображением и целевым опорным изображением. Если одно (но не оба) из изображений, целевого опорного изображения и опорного изображение вектора движения сорасположенного блока пикселей, является долгосрочным опорным изображением (то есть, второе является краткосрочным опорным изображением), то кандидатное TMVP-предсказание может считаться недоступным. Если оба изображения, целевое опорное изображение и опорное изображение вектора движения сорасположенного блока пикселей, являются долгосрочными опорными изображениями, то масштабирование вектора движения на основе РОС неприменимо.
Масштабируемым видеокодированием называться такая структура кодирования, в которой один битовый поток может содержать несколько представлений контента с различным битрейтом, разрешением или частотой смены кадров. В этих случаях приемник может извлекать требуемое представление в зависимости от его характеристик (например, разрешение, наиболее подходящее для дисплейного устройства). Альтернативно, сервер или сетевой элемент может извлекать части битового потока для передачи в приемник в зависимости, например, от характеристик сети или вычислительных возможностей приемника. Масштабируемый битовый поток состоит, как правило, из «базового уровня», обеспечивающего наименьшее из доступных качество видеоинформации, а также из одного или более уточняющих уровней, которые повышают качество видеоинформации при их приеме и декодировании вместе с нижними уровнями. С целью повышения эффективности кодирования уточняющих уровней их кодированные представления, как правило, кодируются в зависимости от нижних уровней. Например, информация о движении и режиме уточняющего уровня может предсказываться на основе нижележащих уровней. Аналогично, данные пикселей нижних уровней могут применяться для формирования предсказания уточняющего уровня.
В некоторых из схем масштабируемого видеокодирования видеосигнал может кодироваться в базовый уровень и в один или более уточняющих уровней. Уточняющий уровень может повышать временное разрешение (т.е. частоту кадров), пространственное разрешение или просто качество видеоконтента, представленного в другом уровне, или его части. Каждый уровень вместе со всеми зависимыми уровнями является одним из представлений видеосигнала с определенным пространственным разрешением, временным разрешением и уровнем качества. В данном документе масштабируемый уровень вместе со всеми зависимыми уровнями называется «представлением масштабируемого уровня». Часть масштабируемого битового потока, соответствующая представлению масштабируемого уровня, может быть извлечена и декодирована, в результате чего получают представление исходного сигнала с определенной точностью.
Некоторые из стандартов кодирования допускают также создание масштабируемых битовых потоков. Эффективное декодированное представление может быть получено, даже если декодируются только определенные части масштабируемого битового потока. Масштабируемые битовые потоки могут применяться, например, для адаптации битовых скоростей заранее кодированных потоков одноадресного вещания в сервере потоковой передачи или для передачи одного битового потока в оконечные устройства, имеющие различные возможности и/или находящиеся в различных сетевых условиях. Список других случаев применения масштабируемого видеокодирования приведен в выходном документе N5540 ISO/IEC JTC1 SC29 WG11 (MPEG), озаглавленном «Приложения и требования масштабируемого видеокодирования» ("Applications and Requirements for Scalable Video Coding"), 64-ая встреча группы MPEG, 10-14 марта 2003 года, Паттайя, Таиланд. В некоторых случаях данные в уточняющем уровне могут отсекаться после определенного местоположения, или даже после произвольной позиции, при этом каждая позиция отсечения может включать дополнительные данные, представляющие все более высокое визуальное качество. Такая масштабируемость называется мелкозернистой (или мелкогранулярной) масштабируемостью (fine grained (granularity) scalability, FGS).
В стандарте SVC используется механизм межуровневого предсказания, в котором часть информации может предсказываться на основе других уровней кодирования, не являющихся текущим восстанавливаемым уровнем, или следующим за ним нижним уровнем.
Информация, предсказываемая с помощью механизма межуровневого предсказания включает внутреннюю текстуру, информацию о движении и данные остатка. Межуровневое предсказание движения включает предсказание режима кодирования блока, информации заголовка и т.п., при этом движение нижних уровней кодирования может использоваться для предсказания движения верхних уровней. В случае внутреннего кодирования возможно предсказание на основе соседних или сорасположенных макроблоков нижних уровней. В таких методах предсказания не применяется информация из ранее закодированных блоков доступа и следовательно, они называются методами внутреннего предсказания. Кроме того, данные остатка предсказания нижних уровней кодирования также могут применяться для предсказания текущего уровня.
В стандарте SVC введено понятие, известное под названием однопроходное декодирование. Возможность его обеспечивается с помощью режима внутреннего предсказания текстуры, за счет чего межуровневое предсказание внутренней текстуры может применяться к макроблокам, для которых соответствующая группа пикселей базового уровня расположена внутри макроблоков, предсказываемых внутренне. В то же время для этих внутренне предсказываемых макроблоков в базовом уровне кодирования используется ограниченное внутреннее предсказание (например, они имеют синтаксический элемент '"constrained_intra_pred_flag" равным 1). При однопроходном декодировании декодер выполняет компенсацию движения и восстановление изображения полностью только для масштабируемого уровня, необходимого для воспроизведения (который называют «требуемым уровнем» или «целевым уровнем»), за счет чего значительно снижается сложность декодирования. Все уровни кодирования, помимо требуемого, не обязательно должны быть декодированы полностью, поскольку часть данных, или все данные их макроблоков не используются для межуровневого предсказания (будь это межуровневое предсказание внутренней текстуры, межуровневое предсказание движения или межуровневое предсказание остатка) и не являются необходимыми для восстановления требуемого уровня.
Одна петля декодирования необходима для декодирования большинства изображений, тогда как вторая петля декодирования выборочно применяется для восстановления базовых представлений, необходимых как опорных для предсказания, но не для вывода или отображения, при этом они восстанавливаются только для так называемых ключевых изображений (для которых флаг "store_ref_base_pic_flag" установлен в значение 1).
Масштабирование FGS входило в некоторые из проектов стандарта SVC, но в конечном итоге не было включено в принятый стандарт. Затем масштабируемость FGS обсуждалась далее в контексте некоторых версий проекта стандарта SVC. Масштабируемость, обеспечиваемая уточняющими уровнями, которые не могут быть отсечены, называется грубозернистой (или грубогранулярной) масштабируемостью (coarse-grained (granularity) scalability, CGS). Оно включает в себя одновременно традиционное масштабирование качества (SNR) и пространственное масштабирование. Стандарт SVC поддерживает также так называемое среднезернистое масштабирование (medium-grained scalability, MGS), при котором изображения, повышающие качество, кодируются аналогично масштабируемым изображениям уровней SNR, но указания на них осуществляются с помощью высокоуровневых синтаксических элементов, аналогичных изображениям уровней FGS, при помощи назначения синтаксическому элементу quality_id значения, большего 0.
Структура масштабирования в проекте стандарта SVC может быть охарактеризована тремя синтаксическими элементами: "temporal_id," "dependency_id" и "quality_id." Синтаксический элемент "temporal_id" используется для указания иерархии временной масштабируемости, или, косвенно, частоты смены кадров. Представление масштабируемого уровня, включающее изображения с меньшим максимальным значением "temporal_id" будет иметь меньшую частоту смену кадров, чем представление масштабируемого уровня, включающее изображение с большим максимальным значением "temporal_id". Каждый временной уровень зависит, как правило, от нижних временных уровней (т.е. временных уровней с меньшими значениями "temporal_id"), но не зависит от вышележащих временных уровней. Синтаксический элемент "dependency_id" используется для указания иерархии зависимости межуровневого кодирования CGS (которая, как отмечалось ранее, включает и SNR, и пространственную масштабируемость). В любом местоположении временного слоя изображение с меньшим значением "dependency_id" может использоваться для межуровневого предсказания при кодировании изображения с большим значением "dependency_id". Синтаксический элемент "quality_id" используется для указания позиции уровня FGS или MGS в иерархии качества. В любой момент времени видеопоследовательности, при идентичном значением "dependency_id", для межуровневого предсказания изображения с "quality_id", равным QL, может быть использовано изображение с "quality_id", равным QL-1. Кодированный слайс с "quality_id", большим 0, может кодироваться либо как отсекаемый FGS-слайс, либо как неотсекаемый MGS-слайс.
Для простоты все блоки данных (например, в контексте SVC - блоки сетевой абстракции, NAL-блоки) в одном блоке доступа, имеющие одинаковое значение "dependency_id", называются блоком зависимости или представлением зависимости. В одном блоке зависимости все блоки данных с одинаковыми значениями "quality_id" называются блоком качества или представлением уровня кодирования.
Базовое представление, также называемое декодированным базовым изображением, представляет собой декодированное изображение, полученное в результате декодирования NAL-блоков уровня видеокодирования (Video Coding Layer, VCL) блока зависимости, чей "quality_id" равен 0 и для которого флаг "store_ref_basepic_flag" установлен равным 1. Уточняющее представление, также называемое декодированным изображением, получают в результате обычного процесса декодирования, при котором декодируются все представления уровней, присутствующие для самого верхнего представления зависимости. Как отмечалось выше, масштабируемость CGS включает и пространственную масштабируемость, и SNR-масштабируемость. Пространственная масштабируемость исходно предназначена для поддержки представлений видеоинформации с различным разрешением. NAL-блоки VCL для каждого момента времени кодируются в одном блоке доступа, причем эти NAL-блоки VCL могут соответствовать различным разрешениям. В процессе декодирования NAL-блоки VCL низкого разрешения дают поле движения и остаток, который опционально может наследоваться при окончательном декодировании и восстановлении изображения высокого разрешения. По сравнению с предшествующими стандартами сжатия видеоинформации пространственная масштабируемость в стандарте SVC была обобщена и позволяет базовому уроню быть кадрированной, или зуммированной, версией уточняющего уровня. Уровни качества MGS указываются с помощью "quality_id", аналогично уровням качества FGS. Для каждого блока зависимости (с одинаковыми "dependency_id") имеется уровень с "quality_id", равным 0, и также могут присутствовать другие уровни, с "quality_id", большим 0. Эти уровни, имеющие "quality_id", больший 0, являются либом уровнями MGS, либо уровнями FGS, в зависимости от того, являются ли слайсы кодируемыми как отсекаемые слайсы. В базовой форме уточняющих уровней FGS используется только межуровневое предсказание. Следовательно, уточняющие уровни FGS могут свободно отсекаться, без риска распространения ошибок в декодированной последовательности. Однако такая базовая форма FGS страдает низкой эффективностью сжатия. Это проблема возникает по причине использования изображений с низким качеством как опорных при внешнем предсказании. Соответственно, было предложено, чтобы в качестве опорных изображений внешнего предсказания использовались уточняемые с помощью FGS изображения. Однако при отбросе части данных FGS, это может приводить к несовпадению кодирования-декодирования, которое называется дрейфом. Одна из особенностей проекта стандарта SVC заключается в том, что NAL-блоки FGS могут свободно отсекаться или отбрасываться, а особенность стандарта SVCV - NAL-блоки могут свободно отбрасываться MGS (но не могут отсекаться), без нарушения соответствия битового потока стандарту. Как обсуждалось выше, если эти данные FGS или MGS использовались как опорные для внешнего предсказания при кодировании, то отбрасывание или отсечение этих данных приведет к несовпадению декодированных изображений на стороне кодера и декодера. Такое несовпадение также называют дрейфом. Для контроля дрейфа, возникающего вследствие отбрасывания или отсечения данных FGS или MGS, в стандарте SVC применяется следующее решение: в каждом блоке зависимости базовое представление (при помощи декодирования только изображения CGS с "quality_id", равным 0, и всех данных, зависящих от нижних уровней) восстанавливается в буфере декодированных изображений. При декодировании последующего блока зависимости с таким же значением "dependency_id" для внешнего предсказания всех NAL-блоков, включающих NAL-блоки FGS или NAL, в качестве опорного используется базовое представление. Следовательно, любой дрейф, возникающий в результате отбрасывания или отсечения NAL-блоков FGS или MGS, прекращается на данном блоке доступа. В целях обеспечения высокой эффективности кодирования в других блоках зависимости с тем же значением "dependency_id" для всех NAL-блоков в качестве опорных изображений внешнего предсказания используются декодированные изображения.
Каждый NAL-блок включает в своем заголовке синтаксический элемент "use_ref_basepic_flag". Когда значение этого элемента равно 1, при декодировании NAL-блока в процессе внешнего предсказания используются базовые представления опорных изображений. Синтаксический элемент "store_ref_basepic_flag" определяет, следует ли (если он равен 1) сохранять базовое представление текущего изображения для будущих изображений с целью использования при внешнем предсказании или нет (если он равен 0).
NAL-блоки с "quality_id", большим 0, не содержат синтаксических элементов, связанных с построением списков опорных изображений и взвешенным предсказанием, т.е. отсутствуют синтаксические элементы "num_ref_active_x_minus1" (х=0 или 1), синтаксическая таблица переупорядочивания списка опорных изображений и синтаксическая таблица взвешенного предсказания. Следовательно, при необходимости, уровни MGS или FGS должны наследовать эти синтаксические элементы от NAL-блоков с "quality_id", равным 0, в том же блоке зависимости.
В стандарте SVC список опорных изображений состоит либо только из базовых представлений (когда флаг "use_ref_base_pic_flag" равен 1) или только из декодированных изображений, не помеченных как «базовое представление» (когда флаг "use_ref_base_pic_flag" равен 0), но никогда из обоих одновременно.
Видеокодек с масштабируемостью качества (также называемой масштабируемостью отношения сигнал/шум, или SNR (Signal-to-Noise) и/или пространственной масштабируемостью может быть реализован описанным ниже способом. Для базового уровня кодирования применяют традиционные видеокодер и видеодекодер без масштабируемости. Восстановленные или декодированные изображения базового уровня кодирования вносят в буфер опорных изображений для уточняющего уровня. В кодеках, соответствующих стандартам H.264/AVC, HEVC, и аналогичных кодеках, где применяется список (или списки) опорных изображений для внешнего предсказания, декодированные изображения базового уровня кодирования могут вноситься в список (или списки) опорных изображений для кодирования/декодирования изображения уточняющего уровня, аналогично декодированным опорным изображениям уточняющего уровня. Следовательно, в кодере опорное изображение базового уровня кодирования может выбираться в качестве опорного для внешнего предсказания, при этом указание на его использование, как правило, осуществляется с помощью указателя на опорное изображение в кодированном битовом потоке. В декодере из битового потока, например, на основе указателя на опорное изображение декодируется информация о том, что в качестве опорного изображения внешнего предсказания для уточняющего уровня было использовано изображение базового уровня. При использовании декодированного изображения базового уровня в качестве опорного для предсказания уточняющего уровня, оно называется межуровневым опорным изображением.
В дополнение к масштабированию качества, существуют следующие режимы масштабируемости:
- Пространственная масштабируемость: изображения базового уровня кодирования кодируют с меньшим разрешением, чем изображения уточняющих уровней.
- Масштабируемость битовой глубины: изображения базового уровня кодирования кодируют с меньшей битовой глубиной (например, 8 бит), чем изображения уточняющих уровней (например, 10 или 12 бит).
- Масштабируемость формата цветности: изображения базового уровня кодирования обеспечивают меньшую детализацию в составляющей цветности (например, кодированы в формате цветности 4:2:0), чем изображения уточняющих уровней (например, формат 4:4:4).
- Масштабируемость цветового охвата, при которой изображения уточняющего уровня имеют более емкий, или широкий, диапазон представления цвета, чем изображения базового уровня, например, уточняющий уровень может иметь цветовой охват по стандарту UHDTV (ITU-R ВТ.2020), а базовый уровень может иметь цветовой охват по стандарту ITU-R ВТ.709.
Во всех описанных выше случаях масштабируемости информация базового уровня может использоваться для кодирования уточняющего уровня в целях минимизации битрейта служебных данных.
Масштабируемость может обеспечиваться двумя основными способами: либо при помощи введения новых режимов кодирования для выполнения предсказания значения пикселей или синтаксических элементов на основе нижних уровней кодирования масштабируемого представления, либо при помощи помещения изображений нижнего уровня в буфер опорных изображений (буфер декодированных изображений (decoded picture buffer, DPB)) вышележащего уровня. Первый подход более гибок, и следовательно, в большинстве случаев позволяет получить более эффективное кодирование. Однако второй подход, т.е. масштабируемость, основанная на опорных кадрах, может быть очень эффективно реализована, лишь с минимальными изменениями в одноуровневых кодеках и с сохранением большинства преимуществ в эффективности кодирования. По существу, кодек с масштабируемостью на основе опорных кадров может быть реализован с применением одинаковых аппаратных или программных реализаций для всех уровней, необходимо лишь решить вопрос управления буфером DPB с помощью внешних средств.
Схема масштабируемого кодирования и/или декодирования может включать многопроходное кодирование и/или декодирование, которые описаны ниже. При кодировании и декодировании изображение базового уровня может восстанавливаться, или декодироваться, с целью его использования в качестве опорного изображения компенсации движения для последующих изображений в порядке кодирования, или декодирования, в том уровне кодирования, или в качестве опорного для межуровневого (или межракурсного, или межкомпонентного) предсказания. Восстановленное, или декодированное, изображение базового уровня может сохраняться в буфер DPB. Изображение уточняющего уровня, аналогично, может восстанавливаться, или декодироваться, с целью его использования в качестве опорного изображения компенсации движения для последующих изображений в порядке кодирования, или декодирования, в том же уровне кодирования, или в качестве опорного для межуровневого (или межракурсного или межкомпонентного) предсказания более высоких уточняющих уровней, если они присутствуют. В дополнение к восстановленным, или декодированным, значениям элементов изображения, для межуровневого (или межкомпонентного, или межракурсного) предсказания могут также использоваться значения синтаксических элементов базового, или опорного, уровня или переменные, полученные на основе значений синтаксических элементов базового, или опорного, уровня.
Кодер масштабируемого видеокодирования, например, с масштабируемостью качества (также называемой масштабируемостью соотношения сигнал/шум, или SNR (Signal-to-Noise) и/или пространственной масштабируемостью, может быть реализован описанным ниже способом. Для базового уровня кодирования могут применяться традиционные видеокодер и видеодекодер без масштабируемости. Восстановленные или декодированные изображения базового уровня вносят в буфер опорных изображений и/или в список опорных изображений для уточняющего уровня. В случае пространственной масштабируемости может выполняться передискретизация (увеличение разрешения) восстановленного, или декодированного, изображения базового уровня перед его добавлением в список опорных изображений для изображения уточняющего уровня. Декодированные изображения базового уровня могут вноситься в список (или списки) опорных изображений для кодирования/декодирования изображения уточняющего уровня, аналогично декодированным опорным изображениям уточняющего уровня. Следовательно, в кодере опорное изображение базового уровня может выбираться в качестве опорного для внешнего предсказания, при этом указание на его использование, как правило, выполняют с помощью указателя на опорное изображение в кодированном битовом потоке. В декодере из битового потока, например, на основе указателя на опорное изображение декодируется информация о том, что в качестве опорного изображения внешнего предсказания для уточняющего уровня было использовано изображение базового уровня. При использовании декодированного изображения базового уровня в качестве опорного для предсказания уточняющего уровня, оно называется опорным изображением межуровневого предсказания.
В предыдущем параграфе было описан видеокодек с масштабируемостью, в котором применялись два уровня масштабируемости: уточняющий уровень и базовой уровень. Нужно понимать, что это описание может быть обобщено для любых двух уровней в иерархии масштабируемости с более чем двумя уровнями. В таком случае второй уточняющий уровень может зависеть от первого уточняющего уровня в процессе кодирования и/или декодирования, и соответственно, первый уточняющий уровень может считаться базовым уровнем для кодирования и/или декодирования второго уточняющего уровня. Также, нужно понимать, что в буфере опорных изображений или списках опорных изображений уточняющего уровня могут присутствовать опорные изображения межуровневого предсказания более чем из одного уровня кодирования, и при этом каждое из этих опорных изображений межуровневого предсказания может рассматриваться как располагающееся в базовом, или опорном, уровне для кодируемого и/или декодируемого уточняющего уровня.
В настоящее время ведутся работы по спецификации расширения масштабируемости и многоракурсного расширения стандарта HEVC. Многоракурсное расширение стандарта HEVC, которое обозначается MV-HEVC, аналогично расширению MVC стандарта H.264/AVC. Аналогично стандарту MVC, в MV-HEVC опорные изображения межракурсного предсказания могут включаться в список (или списки) опорных изображений для текущего кодируемого или декодируемого изображения. Расширение масштабирования стандарта HEVC, обозначаемое SHVC, планируют определить таким образом, чтобы в нем применялась операция многопроходного декодирования (в отличие от расширения SVC стандарта H.264/AVC). В текущее время анализируются две схемы реализации масштабируемости. Одна из них основана на указателях на опорные изображения, при этом в ней опорное изображение межуровневого предсказания может включаться в одни или более списков опорных изображений для текущего кодируемого или декодируемого изображения (в соответствии с предшествующим описанием). Вторая может быть обозначена как IntraBL (предсказание внутри базового уровня) или TextureR1 (опорный уровень текстуры), и при этом в ней применяют определенный режим кодирования, например, на уровне блоков кодирования, для использования декодированных, или восстановленных, значений элементов изображения опорного уровня в целях предсказания изображений уточняющего уровня. При разработке стандарта SHVC усилия были сосредоточены на достижении пространственной масштабируемости и грубозернистой масштабируемости.
Для MV-HEVC и SHVC, реализованного на базе указателей на опорные изображения, могут использоваться множество одинаковых синтаксических структур, семантики и процедур декодирования. Также, допускается использование одинаковых синтаксических структур, семантики и процедур декодирования, и для кодирования глубины. Далее в настоящем документе под термином «многоракурсное расширение HEVC с масштабируемостью (SMV-HEVC)» понимается процедура кодирования, процедура декодирования, синтаксис и семантика, для которых применяют в основном одинаковые инструменты кодирования (или декодирования) независимо от типа масштабирования, и для которых применяют подход на базе указателей на опорные изображения, без изменений в синтаксисе, семантике или процедуре кодирования на уровне ниже заголовка слайса. Стандарт SMV-HEVC не обязательно ограничен многоракурсной, пространственной и грубозернистой масштабируемостью качества, но может также поддерживать другие типы масштабируемости, например, видео с уточнением глубины.
Для кодирования уточняющего уровня в расширениях SHVC, MV-HEVC и/или SMV-HEVC могут применяться те же самые принципы и инструменты кодирования, что и в HEVC. Однако в кодеки SHVC, MV-HEVC и/или SMV-HEVC могут быть встроены дополнительные инструменты межуровневого предсказания, в которых применяются уже кодированные данные (включая восстановленные элементы изображений и параметры движения, которые также называют информацией о движении) из опорного уровня для эффективного кодирования уточняющего уровня.
В расширениях MV-HEVC, SMV-HEVC и в решениях SHVC на базе указателей на опорные изображения для поддержки межуровневого предсказания текстуры, не требуется изменений синтаксиса и процедур декодирования на уровне блоков. Необходима модификация только более высокоуровневого синтаксиса (по сравнению со стандартом HEVC), чтобы восстановленные изображения (при необходимости, с повышением разрешения) из опорного уровня в одном блоке доступа могли использоваться в качестве опорных изображений для кодирования текущего изображения уточняющего уровня. Опорные изображения межуровневого предсказания, также как и опорные изображения временного предсказания, включают в списки опорных изображений. Сигнализируемый указатель на опорное изображение применяют для указания на то, что текущий блок предсказания (PU) является предсказываемым на основе опорного изображения временного предсказания или опорного изображения межуровневого предсказания. Применение такой функциональности может осуществляться под управлением декодера, а указания могут выполняться, например, в наборе видеопараметров, в наборе параметров последовательности, в одном из параметров изображения и/или в заголовке слайса. Указание (или указания) могут относиться, например, к конкретному уточняющему уровню, опорному уровню, к паре из уточняющего уровня и опорного уровня, к конкретным значениям TemporalId, к конкретным типам изображений (например, RAP-изображениям), к конкретным типам слайсов (например, Р-слайсы или В-слайсы, но не I-слайсы), изображения с конкретными значениями РОС и/или к конкретным блокам доступа. Область действия и/или длительность действия указания (или указаний), могут быть указаны вместе с самими указаниями и/или могут быть вычислены.
В расширениях MV-HEVC, SMV-HEVC и SHVC на базе указателей на опорные изображения список (или списки) опорных изображений могут инициализироваться с использованием специальной процедуры, в которой опорное изображение (или изображения) межуровневого предсказания, если таковое имеется, может быть включено в исходный список (или списки) опорных изображений, которые формируют описанным ниже образом. Например, опорные изображения временного предсказания могут сначала добавляться в списки (список 0, список 1) опорных изображений тем же образом, что и при построении списка опорных изображений в стандарте HEVC. После того, как добавлены опорные изображения временного предсказания, могут быть добавлены опорные изображения межуровневого предсказания. Опорные изображения межуровневого предсказания могут быть найдены, например, на основе информации о зависимостях уровней, например, переменной RefLayerld[i], которую получают из расширения VPS в соответствии с предшествующим описанием. Опорные изображения межуровневого предсказания могут быть добавлены в исходный список О опорных изображений, если текущий слайс уточняющего уровня является Р-слайсом, и могут быть добавлены в оба исходных списка 0 и 1 опорных изображений, если слайс текущего уточняющего уровня является В-слайсом. Опорные изображения межуровневого предсказания могут добавляться с списки опорных изображений в определенном порядке, который не обязательно должен быть одинаковым в обоих списках опорных изображений. Например, в исходном списке 1 опорных изображений, в отличие от исходного списка 0 опорных изображений, может применяться обратный порядок добавления опорных изображений межуровневого предсказания. К примеру, опорные изображения межуровневого предсказания могут вноситься в исходный список 0 опорных изображений в порядке возрастания идентификатора nal_layer_id, тогда как для инициализации исходного списка 1 опорных изображений может использоваться обратный порядок.
В процессе кодирования и/или декодирования опорные изображения межуровневого предсказания могут рассматриваться как долгосрочные опорные изображения.
В расширении SMV-HEVC и в решении SHVC на базе указателей на опорные изображения межуровневое предсказание параметров движения может выполняться при помощи назначения опорного изображения межуровневого предсказания в качестве сорасположенного опорного изображения для вычисления TMVP-предсказания. Может выполняться процедура согласования полей движения между двумя уровнями, например, чтобы исключить необходимость модификации процедуры декодирования на уровне блока пикселей при вычислении TMVP. Согласование полей движения может также выполняться для многоракурсного кодирования, но в текущий проект стандарта MV-HEVC подобная процедура не входит. Применение функции согласования полей движения может осуществляться под управлением декодера, а указания в битовом потоке могут размещаться, например, в наборе видеопараметров, в наборе параметров последовательности, в одном из параметров изображения и/или в заголовке слайса. Указание (или указания) могут относиться, например, к конкретному уточняющему уровню, опорному уровню, к паре из уточняющего уровня и опорного уровня, к конкретным значениям TemporalId, к конкретным типам изображений (например, RAP-изображениям), к конкретным типам слайсов (например, Р-слайсы или В-слайсы, но не I-слайсы), изображения с конкретными значениями РОС и/или к конкретным блокам доступа. Область действия и/или длительность действия указания (или указаний), могут быть указаны вместе с самими указаниями и/или могут быть вычислены.
В процедуре согласования полей движения для пространственной масштабируемости на основе поля движения соответствующего изображения опорного уровня получают поле движения передискретизированного опорного изображения межуровневого предсказания. Параметры движения (которые могут включать, например, значение горизонтальной и/или вертикальной составляющей вектора движения и указатель на опорное изображение) и/или режим предсказания для каждого блока пикселей в передискретизированном опорном изображении межуровневого предсказания могут быть получены на основе соответствующих параметров движения и/или режима предсказания сорасположенного блока пикселей в изображении опорного уровня. Размер блока пикселей, применяемого для вычисления параметров движения и/или режима предсказания в передискретизированном опорном изображении межуровневого предсказания, может составлять, например, 16×16. Тот же размер блока пикселей, 16×16, применяется в процедуре вычисления TMVP-предсказания в стандарте HEVC, где используется сжатое поле движение опорного изображения.
Поле движения может рассматриваться как включающее параметры движения. Параметр движения может включать, без ограничения перечисленным, один или более из следующих типов:
- указание на тип предсказания (например, внутреннее предсказание, однонаправленное предсказание, двунаправленное предсказание) и/или на количество опорных изображений;
- указание на направление предсказания, например, внешнее (также называемое временным) предсказание, межуровневое предсказание, предсказание на основе синтеза ракурсов (view synthesis prediction, VSP), межкомпонентное предсказание (например, предсказание изображение глубины на основе изображения текстуры). Направление предсказания может указываться для каждого опорного изображения и/или для каждого типа предсказания, и при этом в некоторых из вариантов осуществления настоящего изобретения межракурсное предсказание и предсказание на основе синтеза ракурсов могут совместно рассматриваться как одно направление предсказания;
- указание на тип опорных изображений, например, краткосрочное опорное изображение и/или долгосрочное опорное изображение, и/или опорное изображение межуровневого предсказания (при этом указание может выполняться, например, для каждого опорного изображения);
- указатель на список опорных изображений и/или любой другой идентификатор, указывающий на опорные изображения (при этом указание может выполняться, например, для каждого типа опорного изображения, тип которого может зависеть от направления предсказания и/или от типа опорного изображения, и которое при этом может сопровождаться другими соответствующими фрагментами информации, например, информацией о списке опорных изображений или аналогичной структуре, к которой относится указатель на опорные изображения);
- горизонтальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.);
- вертикальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.);
- один или более параметров, таких как разность порядковых номеров изображений и/или относительное расстояние между камерами, для изображений, содержащих эти параметры движения и соответствующее опорное изображение, или связанных с ними, которые могут применяться для масштабирования горизонтальной составляющей вектора движения и/или вертикальной составляющей вектора движения в процессе предсказания одного или более векторов движения (при этом упомянутые один или более параметров могут указываться, например, для каждого опорного изображения, для каждого указателя на опорные изображения и т.п.)
Выражение «момент времени» или «временной момент» может быть определено как отражающее одновременность захвата данных или вывода, или совпадение порядка вывода данных. Например, если первый компонент первого ракурса захватывают одновременно со вторым компонентом второго ракурса, то считается, что эти два компонента ракурса принадлежат одному моменту времени. Блок доступа может быть определен как содержащий изображения (или компоненты ракурсов) для одного момента времени, и следовательно, в данном случае изображения, находящиеся в одном блоке доступа, могут считаться принадлежащими одному и тому же моменту времени. На изображения, относящиеся к одному моменту времени, могут выполняться указания (например, кодером) с использованием множества различных средств, и при этом они могут распознаваться (например, декодером) также с использованием множества различных средств, например, значения порядкового номера изображения (РОС) или временной метки (например, временной метки вывода).
В масштабируемом видеокодировании с многопроходной операцией кодирования (и декодирования) было предложено, чтобы изображения, помеченные как «используемые в качестве опорных» не обязательно должны были браться из одного и того же блока доступа или из одного и того же момента времени на всех уровнях кодирования. Например, для уточняющего уровня, в отличие от базового уровня, может присутствовать меньшее количество опорных изображений. В некоторых системах и/или схемах кодирования для повышения эффективности сжатия информация в подобных сценариях применения кодирования может применяться временное межуровневое предсказание, которое также называют диагональным межуровневым предсказанием или просто диагональным предсказанием. Ниже описаны способы реализации маркировки опорных изображений, наборов опорных изображений, а также построения списка опорных изображений для диагонального межуровневого предсказания.
В одном из примеров диагонального предсказания может применяться сигнализация на уровне последовательности, например, помещенная в набор видеопараметров. В наборе VPS, или в аналогичной синтаксической структуре на уровне последовательности, могут быть указаны зависимости между уровнями кодирования или ракурсами. Для некоторых зависимостей, на которые выполняют указание, или для всех этих зависимостей, может быть добавлен синтаксический элемент, указывающий, применяется ли диагональное предсказание или обычное, «вертикальное» предсказание на основе изображения из того же блока доступа или того же момента времени. Изображение, выбранное в качестве опорного для диагонального предсказания может иметь, например, заранее заданное свойство, к примеру, являться первым опорным изображением межуровневого предсказания или межракурсного предсказания (для уровня кодирования или ракурса, для которых указано, что они являются опорными для диагонального предсказания) в списке опорных изображений. Альтернативно, кодер может указывать на опорное изображение для диагонального предсказания в битовом потоке, например, в виде указателя на список опорных изображений, при этом декодер может декодировать указание на опорные изображения диагонального предсказания из битового потока. В одном из примеров диагонального предсказания кодер может назначать изображение в качестве долгосрочного опорного изображения (например, помеченного как «используемое в качестве долгосрочного опорного изображения») и выполнять указание на это назначение в битовом потоке. Соответственно, декодер может декодировать это указание из битового потока и, согласно ему, назначать изображение в качестве долгосрочного опорного изображения. Долгосрочному опорному изображению может быть присвоен идентификатор, который не зависит от его уровня кодирования или ракурса, или этот идентификатор может включать в себя идентификатор уровня кодирования или ракурса данного долгосрочного опорного изображения, или может сопровождаться подобным идентификатором. Кодер может указывать на то, что данное долгосрочное опорное изображение используется или может быть использовано в качестве опорного, при помощи включения его идентификатора в набор опорных изображений (который кодируют в битовый поток). Соответственно, декодер может декодировать из битового потока указания на то, что данное долгосрочное опорное изображение используется или может быть использовано в качестве опорного. Следовательно, кодер и/или декодер могут включать это опорное изображение в один или более исходных списков опорных изображений. Кодер может включать в битовый поток синтаксические элементы для модификации списков опорных изображений, а декодер может декодировать эти синтаксические элементы (модификации списков) опорных изображений из битового потока, в результате чего долгосрочное опорное изображение может оказываться в одном или более окончательных списков опорных изображений. Если не закодировано и/или не декодировано ни одного синтаксического элемента модификации списков опорных изображений, то окончательный список (или списки) опорных изображений могут быть основаны непосредственно на исходном списке (или списках) опорных изображений, потенциально, с коррекцией, при помощи указания в битовом потоке количества опорных изображений в списке (или списках) кодером и декодирования из битового потока количества опорных изображений в списке (или списках) декодером.
В одном из примеров, связанных с диагональным предсказанием, кодер может определять набор опорных изображений межуровневого предсказания (inter - layer reference picture set, ILRPS) и указывать его в битовом потоке, при этом декодер может принимать элементы, связанные с набором ILRPS, из битового потока и восстанавливать на их основе набор ILRPS. Набор ILRPS в кодере и в декодере может использоваться, например, при инициализации списка опорных изображений.
В одном из примеров кодер может определять и указывать несколько наборов ILRPS, например, в наборе видеопараметров. Каждый из множества наборов ILRPS может иметь идентификатор или указатель, который может быть включен в битовый поток в качестве значения синтаксического элемента вместе с остальными синтаксическими элементами, относящимися к набору ILRPS, или может быть найден, например, исходя из порядка наборов ILRPS в битовом потоке. Указание на набор ILRPS, применяемый в конкретном изображении (или компоненте изображения), может выполняться, например, с помощью синтаксического элемента в заголовке слайса, в который включают указатель на набор ILRPS.
В одном из примеров синтаксические элементы, связанные с идентификацией изображения в наборе ILRPS могут кодироваться относительно другого изображения, например, относительно текущего изображения, ссылающегося на данный набор ILRPS. К примеру, каждое изображение в наборе ILRPS может быть связано с относительным идентификатором уровня и относительным порядковым номером изображения, причем оба этих параметра отсчитываются относительно соответствующих значений для текущего изображения.
К примеру, кодер может формировать синтаксическую структуру специального набора опорных изображений (specific reference picture set, RPS) для осуществления ссылок при межуровневом предсказании или ссылок на часть другой синтаксической структуры RPS, предназначенной для опорных изображений межуровневого предсказания. Например, может применяться следующая синтаксическая структура:
Семантика проиллюстрированной синтаксической структуры может быть определена следующим образом:
параметр num_inter_layer_ref_pics определяет количество компонентных изображений, которые могут использоваться для межуровневого и диагонального межуровневого предсказания компонентных изображений, ссылающихся в качестве опорного на данный набор RPS межуровневого предсказания. В одном из примеров параметр expLayerld может быть исходно назначен равным layer_id текущего компонентного изображения, тогда как в некоторых других вариантах осуществления настоящего изобретения параметр expLayerld может быть исходно назначен равным следующему выражению: (значение layer_id текущего компонентного изображения) - 1. Параметр delta_poc[i] определяет разность значений РОС относительно прогнозируемого значения РОС, ехрРОС, которое может быть назначено равным значению РОС текущего компонентного изображения.
В одном из примеров, в отношении синтаксиса и семантики описанного выше элемента inter_layer_ref_pic_set(idx), кодер и/или декодер, и/или HRD-декодер, могут выполнять маркировку компонентных изображений следующим образом. Для всех значений i может выполняться следующее:
Компонентное изображение, чей layer_id равен expLayerld - delta_layer_id[i], а РОС равен ехрРОС + delta_poc[i], помечают как «используемое в качестве опорного изображения межуровневого предсказания».
Значение параметра expLayerld может быть изменено следующим образом: expLayerld - delta_layer_id[i] - 1.
В одном из примеров при инициализации списка опорных изображений в него могут включаться изображения из набора ILRPS, используемого для текущего компонентного изображения. Изображения из набора ILRPS могут включаться в список в заранее заданном порядке относительно других изображений, используемых в процессе инициализации списка опорных изображений, таких, например, как изображений в RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr. К примеру, изображения из набора ILRPS могут включать в исходный список опорных изображений после изображений из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr. В другом примере изображения из набора ILRPS включают в исходный список опорных изображений после изображений из RefPicSetStCurrBefore и RefPicSetStCurrAfter, но перед изображениями из RefPicSetLtCurr.
В одном из примеров опорное изображение, идентифицированное синтаксическими элементами, которые связаны с набором ILRPS (например, проиллюстрированной выше синтаксической структурой inter_layer_ref_pic_set), может также входить в другой набор опорных изображений, к примеру, RefPicSetLtCurr, который также может быть действительным для текущего изображения. В этом случае, в одном из примеров, в исходный список опорных изображений включают только один экземпляр опорного изображения, встречающегося сразу в нескольких наборах опорных изображений, действительных для текущего изображения. Если одинаковые опорные изображения присутствуют в нескольких поднаборах RPS, то может быть заранее задано, изображение из какого поднабора опорных изображение должно быть включено в исходный список опорных изображений. Например, может быть заранее задано, что в случае наличия одинаковых опорных изображений в нескольких подмножествах RPS, экземпляр этого опорного изображения в набор RPS межуровневого предсказания опускают (т.е. не используют) при инициализации списка опорных изображений. Альтернативно, кодер может определять: какой поднабор RPS, или какой из конкретных экземпляров опорных изображений будет использован при инициализации списка опорных изображений, и указывать на принятое решение в битовом потоке. Например, в случае наличия нескольких копий одного и того же опорного изображения более чем в одном поднаборе RPS, кодер может указывать на порядок предпочтения поднаборов RPS. Декодер может декодировать соответствующие указания из битового потока и выполнять, согласно им, инициализацию списка опорных изображений, включая в исходный список опорных изображений только опорное изображение (или изображения), которые декодер определил для использования и на которые он выполнил указание в битовом потоке.
В одном из примеров ноль или более наборов ILRPS могут быть получены на основе других синтаксических элементов, например, информации о зависимостях уровней кодирования или информации об опорных изображениях, входящей в набор видеопараметров. В одном из примеров в качестве основы для построения набора RPS может использоваться информация о зависимостях уровней кодирования или информация предсказания, предоставленная в синтаксической структуре уровня последовательности. К примеру, для построения исходного набора RPS межуровневого предсказания может использоваться проиллюстрированная выше синтаксическая структура vps_extension. На примере проиллюстрированного выше синтаксиса, набор ILRPS с индексом 0 может быть определен как содержащий изображения i со значениями РОС, равными PoclLRPS[0][i] и nal_layer_id, равным NalLayerldlLRPS[0][i], для всех i iв диапазоне от 0 до num_direct_ref_layers[LayerldlnVps[nal_layer_ld]] - 1, включительно, где PoclLRPS[0][i] и NalLayerldlLRPS[0][i] определены следующим образом:
После этого синтаксическая структура набора RPS межуровневого предсказания будет включать информацию, указывающую на отличия по сравнению с исходным набором RPS межуровневого предсказания, например, список значений layer_id, которые не были использованы для отсылки к опорным изображениям межуровневого предсказания, несмотря на то, что информация уровня последовательности разрешает их использование в данных целях (для отсылки к опорным изображениям межуровневого предсказания).
При кодировании и декодировании наборов ILRPS и связанных с ними синтаксических элементов может использоваться меж-ILRPS предсказание (т.е. предсказание одних наборов ILRPS на основе других наборов ILRPS). Например, может указываться, какие из опорных изображений, входящих в первый набор ILRPS, который является предшествующим в порядке битового потока, должны быть включены также во второй ILRPS, являющийся последующим в порядке битового потока, и/или какие из опорных изображений не должны быть включены в упомянутый второй набор ILRPS.
В одном из примеров в кодере и/или в декодере, и/или в HRD-декодере могут совместно использоваться одно или более указаний на то, используется ли компонентное изображение опорного уровня в качестве опорного изображения межуровневого предсказания для одного или более компонентных изображений уточняющего уровня и управляющей информации, например, набора RPS межуровневого предсказания, для инициализации списка опорных изображений, и/или на состояние маркировки (т.е. имеющуюся «пометку» изображения), связанной с межуровневым предсказанием. В одном из примеров кодер может кодировать указание, которое указывает, может ли быть первое компонентное изображение использовано в качестве опорного изображения межуровневого предсказания для другого компонентного изображения, принадлежащего тому же моменту времени (или тому же блоку доступа), или упомянутое первое компонентное изображение не используется в качестве опорного изображения межуровневого предсказания ни для какого другого компонентного изображения, принадлежащего тому же моменту времени. К примеру, при инициализации списка опорных изображений упомянутое первое компонентное изображение может не включаться в список, если указано на то, что оно не должно быть использовано в качестве опорного изображения межуровневого предсказания ни для какого другого компонентного изображения, принадлежащего тому же моменту времени, даже если оно входит в действительный набор ILRPS.
В одном из примеров набор ILRPS не используют для маркировки опорных изображений, но используют только для инициализации списка опорных изображений или в других процедурах, связанных со списками опорных изображений.
В одном из примеров вывод о необходимости использования диагонального предсказания может быть сделан на основе одного или более списков опорных изображений (или поднаборов наборов опорных изображений), например RefPicSetStCurrBefore and RefPicSetStCurrAfter. Рассмотрим маркировку списка опорных изображений, например, RefPicSetStCurrBefore и RefPicSetStCurrAfter, SubsetRefPicSet. i-oe изображение в SubsetRefPicSet помечают как SubsetRefPicSet[i], при этом оно связано со значением РОС PocSubsetRPS[i]. Если в действительном наборе RPS для текущего изображения есть изображение SubsetRefPicSet[missldx], то чтобы буфер DPB не содержал изображения со значением РОС, равным PocSubsetRPS[missldx] и nal_layer_id, равным nal_layer_id текущего изображения, декодер и/или HRD-декодер, может выполнять следующие операции: если в буфере DPB присутствует изображение со значением РОС, равным PocSubsetRPS[missldx] и с nal_layer_id, равным nal_layer_id опорного уровня для текущего изображения, то декодер и/или HRD-декодер могут использовать это изображение в последующих операциях декодирования текущего изображения, например, в процедурах инициализации списка опорных изображений и внешнего предсказания. Упомянутое изображение может быть названо вычисляемым опорным изображением диагонального предсказания.
В одном из примеров кодер может указывать, в качестве части синтаксиса, связанного с набором RPS, или в других синтаксических структурах, таких как заголовок слайса, например, какие из опорных изображений в поднаборе RPS (например, RefPicSetStCurrBefore или RefPicSetStCurrAfter) располагаются в отличающемся от текущего изображения уровне кодирования, и соответственно, диагональное предсказание может применяться только при использовании одного из подобных опорных изображений. В одном из примеров кодер может, дополнительно или альтернативно, указывать, в качестве части синтаксиса, связанного с набором RPS, или в других синтаксических структурах, таких как заголовок слайса, например, какой из уровней кодирования является опорным для одного или более опорных изображений в поднаборе RPS (например, RefPicSetStCurrBefore или RefPicSetStCurrAfter). Опорные изображения, на которые выполнено указание и которые находятся в другом уровне кодирования относительно текущего изображения, могут называться указываемыми опорными изображениями диагонального предсказания.
Декодер может декодировать такие указания из битового потока и применять опорные изображения из другого, вычисленного или указанного, уровня кодирования в процедурах декодирования, например, при инициализации списка опорных изображений и внешнем предсказании.
Если вычисляемое или указываемое опорное изображение диагонального предсказания имеет пространственное разрешение и/или дискретизацию цветности, отличающиеся от текущего изображения, то может выполняться повторная дискретизация (изменение разрешения) опорного изображения межуровневого предсказания (кодером и/или декодером, и/или HRD-декодером) и/или повторная дискретизация поля движения опорного изображения диагонального предсказания.
В одном из примеров может выполняться меж-RPS предсказание указания на другой уровень и/или указания на другой уровень кодирования для изображения в наборе RPS, то есть, свойство или свойства, связанные с уровнем кодирования, для одного набора RPS могут предсказываться на основе другого набора RPS. В других вариантах осуществления настоящего изобретения свойство или свойства, связанные с уровнем кодирования, одного RPS не предсказывают на основе других RPS, т.е. они не участвуют в меж-RPS предсказании.
Ниже проиллюстрирован пример синтаксиса для синтаксической структуры short_term_ref_pic_set с указанием на опорный уровень для изображения, входящего в набор RPS. В данном примере в наборе RPS не выполняют предсказания свойств, связанных с уровнем кодирования, на основе других наборов RPS.
Семантика проиллюстрированной синтаксической структуры может быть определена следующим образом:
Значение параметра diag_ref_layer_X_idx_plus1[i] (где X равно inter_rps, s0 или si), равное 0, указывает на то, что соответствующее опорное изображение имеет такое же значение nal_layer_id, что и у текущего изображения (которое ссылается на данный набор опорных изображений). Значение параметра diag_ref_layer_X_idx_plus1[i], большее нуля, определяет, что diag_ref_layer_X_idx_plus1 (которое обозначено за refNalLayerld[i]) соответствующего опорного изображения имеет описанное ниже значение. Пусть переменная diagRefLayerldx[i] равна diag_ref_layer_X_idx_plus1[i] - 1.
refNalLayerld[i] назначается равным ref_layer_id[LayerldlnVps[nal_layer_id текущего изображения ]][diagRefLayerldx[i]].
В одном из примеров маркировка указываемых и вычисляемых опорных изображений диагонального предсказания не меняется при декодировании соответствующего набора опорных изображений.
Существующие стандарты для форматов медиафайлов включают базовый формат медиафайла стандарта ISO (ISO/IEC 14496-12, который имеет аббревиатуру ISOBMFF), формат файлов MPEG-4 (ISO/IEC 14496-14, также называемый форматом МР4), формат AVC (ISO/IEC 14496-15) и формат файлов 3 GPP (3 GPP TS 26.244, также известный под называнием формата 3GP). Файлы форматов SVC и MVC определены как дополнения к формату файлов AVC. Формат файлов ISO является базовым для получения всех упомянутых выше форматов файла (за исключением собственно формата файлов ISO). Эти форматы файлов (включая собственно формат файлов ISO) называют семейством форматов файлов ISO.
Элементарная единица построения базового формата медиафайлов ISO называется «боксом» (box). Каждый бокс имеет заголовок и полезную нагрузку. В заголовке бокса указывают тип бокса и размер бокса, выраженный в байтах. Бокс может включать внутри себя другие боксы, при этом в формате файлов ISO определены типы боксов, которые могут находиться внутри бокса каждого типа. При этом, также, некоторые боксы должны присутствовать в каждом файле обязательно, тогда как другие боксы могут быть опциональными. В дополнение, для боксов некоторого типа, допустимо наличие нескольких экземпляров бокса в одном файле. Таким образом, в базовом формате медиафайлов ISO по существу определена иерархическая структура боксов.
В соответствии с форматом файлов семейства ISO файл включает мультимедийные данные и метаданные, размещенные в различных боксах. В одном из примеров реализации мультимедийные данные могут размещаться в боксе метаданных (mdat), а для размещения метаданных может использоваться бокс фильма (moov). В некоторых случаях для того, чтобы файл мог быть обработан, обязательно должны присутствовать оба указанных бокса, бокс mdat и бокс moov. Бокс фильма (moov) может содержать один или несколько треков («дорожек»), при этом каждый трек занимает один соответствующий бокс трека. Трек может иметь один из следующих типов: мультимедийный трек, трек указаний или трек синхронизированных метаданных. Мультимедийный трек представляет собой сэмплы (фрагменты видеоинформации), отформатированные согласно формату сжатия мультимедийных данных (и правилам его инкапсуляции в базовый формат медиафайлов ISO). Мультимедийный трек представляет собой сэмплы указаний, содержащие инструкции по формированию пакетов для передачи по указанному протоколу связи. Такие инструкции могут содержать указания по формированию заголовка пакета и указания по формированию полезной нагрузки пакета. При формировании полезной нагрузки пакета могут осуществляться ссылки на данные, расположенные в других треках или в других элементах. То есть, например, могут выполняться указания на данные, размещенные в других треках или элементах, при помощи ссылки, указывающей, какой фрагмент данных в конкретном треке или в конкретном элементе должен, согласно инструкциям, быть скопирован в пакет в ходе процедуры формирования пакета. Трек синхронизированных метаданных может ссылаться на сэмплы, описывающие мультимедийные сэмплы или сэмплы указаний, на которые осуществлена ссылка. Для представления одного типа мультимедийных данных выбирают, как правило, один мультимедийный трек. Сэмплы в треке быть явным образом связаны с номерами сэмплов, которые увеличиваются с единичным шагом в указанном порядке декодирования сэмплов. Первый сэмпл трека может быть связан номером сэмпла, равным 1.
Один из примеров упрощенной структуры файла, соответствующей базовому формату мультимедийных файлов ISO, может быть описан следующим образом: Файл может включать бокс moov и бокс mdat, и при этом бокс moov может, соответственно, включать один или более треков, соответствующих видеоинформации или аудиоинформации.
Базовый формат медиафайлов ISO не ограничивает презентацию одним файлом. Фактически, презентация может храниться в нескольких файлах. В качестве примера, один из файлов может включать метаданные всей презентации, и соответственно, содержать также и все мультимедийные данные, в результате чего презентация становится автономной (самодостаточной). При использовании (если требуется) других файлов им не обязательно иметь базовый формат медиафайлов ISO. Другие файлы используются для хранения мультимедийных данных, при этом они могут также содержать неиспользуемые мультимедийные данные или другую информацию. Базовый формат медиафайлов ISO определяет только структуру файла презентации. Базовый формат медиафайлов ISO и его производные ограничивают формат файлов с мультимедийными данными только в том отношении, что форматирование мультимедийных данных в этих файлах должно соответствовать спецификации базового формата медиафайлов ISO или производных от него форматов.
Возможность ссылки на внешние файлы может быть реализована при помощи ссылок на данные. В некоторых из примеров в состав каждого трека включают бокс с описанием сэмпла, в котором может присутствовать список записей с информацией о сэмплах, каждая из которых предоставляет информацию об используемом типе кодирования, а также всю информацию об инициализации, необходимой для такого кодирования. Для всех сэмплов так называемого «чанка» и для всех сэмплов фрагмента трека может использоваться одна запись с информацией о сэмплах. Чанк может быть определен как непрерывный набор смежных сэмплов в одном треке. Бокс ссылок на данные (Data Reference, dref), который также входит в каждый трек, может определять пронумерованный список унифицированных локаторов ресурсов (uniform resource locators, URL), унифицированных имен ресурсов (uniform resource names, URN) и/или рекурсивные ссылки на файл, содержащий метаданные. Запись с информацией о сэмплах может указывать на один из порядковых номеров в боксе ссылок на данные, благодаря чему осуществляется указание на файл, содержащий сэмплы соответствующего чанка, или фрагмента трека.
Фрагменты фильма могут использоваться при записи содержимого в файлы ISO как средство, позволяющее исключить потери данных в случае сбоя в приложении записи, нехватки объема памяти или возникновения других аварийных ситуаций. Без фрагментов фильма могут происходить потери данных, поскольку форматы файлов, как правило, требуют, чтобы все метаданные, например, бокс фильма, были записаны в одной непрерывной области файла.
Также, при записи файла, может возникать нехватка объема памяти (например, (e.g., RAM) для буферизации бокса фильма под доступный размер хранилища, а повторное вычисление содержимого бокса фильма при закрытии фильма может быть слишком медленным. Также, при этом, фрагменты фильма позволяют обеспечить одновременную запись и воспроизведение файла с использованием обычного анализатора файлов ISO. Наконец, при применении фрагментов фильма может требоваться меньшая длительность начальной буферизации при постепенной подгрузке файла, например, при одновременном приеме и воспроизведении файла, и при этом первый бокс фильма может быть меньше, по сравнению с файлом с тем же мультимедийным контентом, но структурированным без использования фрагментов фильма.
Функциональность фрагментов фильма может обеспечивать возможность удобного разбиения метаданных, при которых они размещаются в боксе фильма с разбиением на несколько частей. Каждая часть может соответствовать определенному периоду времени для трека. Другими словами, функциональность фрагментов фильма может давать возможность чередования метаданных и мультимедийных данных в файле. Следовательно, размер бокса фильма может быть ограничен и могут быть реализованы описанные выше сценарии применения.
В некоторых из примеров мультимедийные сэмплы для фрагментов фильма могут располагаться в боксе mdat, как обычно, если они находятся в том же файле, что и бокс moov. Однако для метаданных фрагментов фильма может присутствовать бокс moof. Бокс moof может включать информацию для определенного интервала времени воспроизведения, который ранее был в боксе moov. Бокс moov может при этом сам являться полноценным «фильмом», однако при этом он может включать в дополнение бокс mvex, который указывает на то, какие фрагменты фильма следуют за ним в этом файле. Фрагменты фильма позволяют увеличить временную длительность презентации, связанной с боксом moov.
Внутри фрагмента фильма может присутствовать набор сегментов трека, включающий в себя любое количество (ноль и более) треков. Фрагменты трека, в свою очередь, могут включать в себя любое количество (ноль и более) отрезков (run) трека, каждый из которых (document) представляет собой непрерывную последовательность смежных сэмплов в этом треке. Внутри эти структур присутствует множество опциональных полей, которые могут иметь заданные по умолчанию значения. Метаданные, которые могут входить в бокс moof, могут быть ограничены подмножеством метаданных, допускающих включение в бокс moov, и в некоторых случаях могут кодироваться отличающимся образом. Подробная информация о боксах, которые могут входить в состав бокса moof приведена в спецификации базового формата медиафайлов ISO.
Группирование сэмплов в базовом формате медиафайлов ISO и в производных от него форматах, таких как формат файлов AVC или формат файлов SVC, может быть определено как назначение каждого сэмпла в треке в качестве члена одной из групп сэмплов на основе критерия группирования. Группа сэмплов при группировании сэмплов не ограничена непрерывной последовательностью смежных сэмплов и может включать содержать сэмплы, не являющиеся соседними друг с другом. Поскольку сэмплы в треке могут группироваться более чем одним способом, каждая группа сэмплов может иметь поле типа, в котором указывают тип группирования. Группы сэмплов представлены двумя взаимосвязанными структурами данных: (1) бокс SampleToGroup (соответствия сэмпл-группа) (sgpd), который отражает назначения сэмплов в группы сэмплов; и (2) бокс SampleGroupDescription (описание группы сэмплов) (sgpd), который содержит запись группы сэмплов, описывающую свойства группы, для каждой группы сэмплов. Могут присутствовать несколько экземпляров боксов SampleToGroup и SampleGroupDescription для различных критериев группирования. Они могут отличаться полем типа, которое используют для указания на тип группирования.
Боксы групп сэмплов (бокс SampleGroupDescription и бокс SampleToGroup) размещаются внутри бокса таблицы сэмплов (stbl), которую включают в состав боксов мультимедийной информации (mini), мультимедийных данных (mdia) и трека (trak), входящих, в свою очередь, в бокс фильма (moov). Разрешается помещение бокса SampleToGroup внутри фрагмента фильма. Следовательно, группирование сэмплов может осуществляться независимо для различных фрагментов.
Сжатие последовательностей изображений может выполняться либо в виде последовательностей неподвижных изображений, кодируемых с использованием средств пространственного предсказания, либо в виде кодирования внешне предсказываемых изображений, с использованием средств пространственного и временного предсказания. Последовательности изображений с произвольным доступом и поддержкой редактирования отдельных изображений, на существующем уровне техники обеспечиваются при помощи представления последовательности в виде серии независимо кодируемых изображений с внутренним предсказанием. Такие форматы, включают, например, движущийся JPEG, анимированный GIF и профили внутреннего предсказания стандарта Н.264.
Если последовательность изображений представлена в виде серии статичных кадров, то эффективность кодирования, как правило, невысока, а требования к размерам файла для последовательностей с высоким разрешением могут становиться непомерно большими. В случае кодирования последовательности как видеоданных с временным предсказанием, накладываются строгие ограничения на способ кодирования последовательности, на способ воспроизведения последовательности, и при этом редактирование пользователем отдельных изображений в последовательности является проблематичным.
Соответственно, требуются более эффективные способы кодирования и декодирования последовательностей изображений, которые в то же время могли бы обеспечивать функциональность произвольного доступа и редактирования.
Ниже описан улучшенный способ кодирования последовательностей изображений, предназначенный для повышения эффективности кодирования.
В способе, проиллюстрированном на фиг. 7, кодируют (шаг 700) набор опорных изображений и затем упомянутый набор опорных изображений сохраняют (шаг 702) в исходном буфере опорных изображений. После этого набор опорных изображений кодируют (шаг 704), не меняя содержимого исходного буфера опорных изображений, и кодируют (шаг 706) в битовый поток указание, которое указывает на то, что все выходные изображения в последовательности могут быть декодированы с использованием исходного набора опорных изображений.
Другими словами, способ дает возможность ограничить задержку декодирования и указывать на параметры задержки декодирования для структуры предсказания, связанной с последовательностью изображений. В соответствии с одним из вариантов осуществления настоящего изобретения это достигается при помощи однократной сигнализации о том, может ли быть опорное изображение сохранено в исходном буфере опорных изображений, и о том, что все выходные изображения в последовательности могут быть декодированы с использованием это фиксированного набора опорных изображений, который не меняется в ходе декодирования последовательности.
Фактическая реализация способа может выполняться множеством различных образов, однако один из основных принципов этих различных реализаций - указание на задержку и возможности редактирования последовательности изображений. Несколько примеров различных структур кодирования проиллюстрированы на фиг. 8a-8d.
На фиг. 8а показано одно из опорных, или выходных, изображений R01, которое является опорным изображением (R), используемыми всеми остальными выходными изображениями 02-08 в качестве опорного в процедуре внешнего предсказания, и в то же время выходным изображением (01), которые выводит декодер. В схеме, показанной на фиг. 8а, максимальная задержка декодирования для доступа к любому из изображений 02-08 в потока равна двум единицам декодирования изображения (интервалам времени для декодирования одного изображения); т.е. задержка в одну единицу для декодирования опорного изображения R01 и задержка в одну единицу для декодирования выбранного выходного изображения 02-08. На фиг. 8b для всех выходных изображений, в качестве опорного изображения процедуры внешнего предсказания, применяется одно и то же опорное изображение R1, однако в данном случае опорное изображение R1 не является выходным изображением. То есть, схема кодирования на фиг. 8b обладает теми же параметрами задержки, что и схема кодирования на фиг. 8а (максимальная задержка декодирования любого из выходных изображений 01-08 составляет две единицы декодирования изображения), однако схема кодирования фиг. 8b дополнительно позволяет сигнализировать информацию о возможности редактирования любого из выходных изображений без изменения сжатого представления остальных выходных изображений, поскольку единственное действительное опорное изображение в последовательности, R1, не является выходным изображением.
На фиг. 8с в качестве опорных изображений процедуры внешнего предсказания для выходных изображений 01-08 используются два не являющихся выходными изображения R1 и R2. Опорное изображение R1, не являющееся выходным, используют как опорное в процедуре внешнего предсказания выходных изображений 01-04, а опорное изображение R2, также не являющееся выходным, используют в качестве опорного в процедуре внешнего предсказания выходных изображений 05-08. Снова, максимальная задержка декодирования для доступа к любому из выходных изображений составляет две единицы декодирования изображения (соответствует декодированию указанного опорного изображения и собственно выходного изображения).
На фиг. 8d показана структура кодирования, в которых для некоторых из выходных изображений применяют несколько опорных изображений. Опорное изображение R1, не являющееся выходным, используют как опорное в процедуре внешнего предсказания выходных изображений 01-04, а опорное изображение R2, также не являющееся выходным, используют в качестве опорного в процедуре внешнего предсказания выходных изображений 02-08. В результате исходная задержка декодирования для выходных изображений 02, 03 и 04 равна трем единицам декодирования изображения, поскольку перед декодированием любого из этих выходных изображений необходимо декодирование двух опорных изображений R1 и R2.
Однако может сигнализироваться информация о том, что задержка декодирования для любого из выходных изображений составляет только одну единицу декодирования изображения, поскольку опорные изображения уже были декодированы. Такая сигнализация может быть предпочтительной, т.к. позволяет указать декодеру на необходимость сначала заполнить свой буфер опорных изображений и затем, когда все опорные изображения будут декодированы, обеспечить возможность доступа к выходным изображениям с минимальной задержкой декодирования.
Способ может быть реализован во множестве различных вариантов. К примеру, очевидно, что описанные шаги обработки данных могут выполняться в различном порядке. При этом возможны один или более различных путей для указания на опорные изображения и/или на неопорные изображения. Также, могут быть возможными один или более путей обеспечения того, чтобы в процедуре декодирования изображение рассматривалось как опорное изображение и/или как неопорное изображение.
В качестве альтернативы, аналогичный механизм может быть реализован для масштабируемого кодека, например, масштабируемое расширение стандарта HEVC. Такой механизм может быть реализован при помощи кодирования каждого отдельного изображения в последовательности изображений как независимого уровня кодирования. Альтернативно, изображения, используемые в качестве опорных, но не для вывода (например, изображения R1 и R2 на фиг. 8b, 8с и 8d) могут располагаться в первом уровне кодирования, например, базовом уровне, а изображения, предназначены для вывода, но не для использования в качестве опорных, (например, изображения 01-08 на фиг. 8b, 8с и 8d) могут располагаться во втором уровне кодирования (например, уточняющем уровне). Изображения, которые используют и в качестве опорных, и для вывода (например, изображение R01 на фиг. 8а) может, в некоторых из вариантов осуществления настоящего изобретения, располагаться в первом уровне кодирования, тогда как в других вариантах осуществления настоящего изобретения оно может располагаться во втором уровне кодирования. Предсказание изображений уточняющего уровня может быть ограничено таким образом, чтобы для предсказания изображений уточняющего уровня в ходе процедуры межуровневого предсказания использовались изображения только из базового уровня, и не из какого другого уровня кодирования. Для предсказания изображений уточняющего уровня может применяться диагональное предсказание, например, в соответствии с любым из примеров диагонального предсказания, приведенных выше. Такой механизм может включать дополнительную сигнализацию для указания на время вывод каждого из изображений уточняющего уровня, поскольку эти изображения могут соответствовать изображениям, полученным в различные моменты времени.
В соответствии с одним из вариантов осуществления настоящего изобретения в некоторых системах, например, в стандарте H.264/AVC, может выполняться указание, с использованием одного или более синтаксических элементов и/или значений синтаксических элементов, является ли изображение опорным изображением или неопорным изображением.
В соответствии с одним из вариантов осуществления настоящего изобретения в некоторых системах, например, в некоторых вариантах осуществления настоящего изобретения, основанных на HEVC, может выполняться указание на то, что присутствует только один временной подуровень (т.е. все изображения имеют параметр TemporalId равным 0), и изображения этого временного подуровня, не являющиеся опорными (что указано типом NAL-блока) могут считаться неопорными изображениями, тогда как все остальные изображения могут считаться опорными. Количестве временных подуровней может быть указано, например, в наборе параметров последовательности (например, с использованием синтаксического элемента sps_max_sub_layers_minus1 стандарта HEVC).
В соответствии с одним из вариантов осуществления настоящего изобретения в некоторых из систем, например, в некоторых из вариантов осуществления настоящего изобретения, основанных на HEVC, может выполняться указание на то, что имеются два (или более) временных подуровней. К примеру, все изображения со значением параметра TemporalId равным 0, могут считаться опорными изображениями, а все изображения со значением параметра TemporalId большим 0 могут считаться неопорными изображениями. В соответствии с одним из вариантов осуществления настоящего изобретения для всех изображений со значением параметра TemporalId большим 0 может выполняться указание на то, что они являются неопорными изображениями временного подуровня. В соответствии с одним из вариантов осуществления настоящего изобретения для всех изображений со значением параметра TemporalId большим 0 может выполняться указание на то, что они имеют другой тип, т.е. не являются неопорными изображениями временного подуровня.
В соответствии с одним из вариантов осуществления настоящего изобретения в некоторых системах, например, в некоторых из вариантов осуществления настоящего изобретения, основанных на стандарте HEVC, изображения, которые включают в набор опорных изображений, могут считаться опорными изображениями, и/или изображения, которые не включают в набор опорных изображений, могут считаться неопорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения, в некоторых системах могут присутствовать метаданные, которые в контейнером файле битового видеопотока указывают на опорные и неопорные изображения. Например, в стандарте ISOBMFF (базовом формате медиафайлов ISO) и производных от него стандартах (например, в стандарте ISO/IEC 14496-15, который определяет инкапсуляцию файлов для AVC и HEVC) может использоваться бокс Independent and Disposable Samples (независимых и отбрасываемых сэмплов). Поле, от которого зависит сэмпл, может использоваться для указания, является ли изображение опорным (поле равно 1) или неопорным (поле равно 2).
В соответствии с одним из вариантов осуществления настоящего изобретения в одной из синтаксических структур, например, в наборе параметров последовательности, может присутствовать указание, которые указывает на то, какой из методов указания на опорные изображения и/или неопорные изображения применяется в битовом потоке. Возможны один или более путей указания на выходные изображения и/или на изображения, которые не являются выходными, включая, без ограничения перечисленным, следующие методы:
- флаг pic_output_flag в стандарте HEVC или аналогичное указание передаваемо внутри кодируемых изображений или вместе с ними,
- сообщение SEI или аналогичное сообщение для указания на отображаемые изображения,
- указание в метаданных формата контейнерного файла, которое указывает на отображаемые изображения.
В частности, если в ISOBMFF применяют метаданные формата файла, то указание может выполняться в соответствии с приведенном ниже описанием.
В соответствии с одним из вариантов осуществления настоящего изобретения на выходные изображение могут указывать с помощью механизма группирования сэмплов, таким образом, что последовательность или набор изображений, возможно, без информации синхронизации, может быть сохранена с использованием структуры треков формата ISOMBFF. Для анализатора ISOMBFF-файлов может быть полезным наличие информации о том, какие из изображений (сэмплов) в заданной последовательности или заданном наборе должны быть отображены. Презентацией может являться либо одно изображение из последовательности или набора изображений, или подпоследовательность, или поднабор, изображений из последовательности или набора изображений.
В стандарте ISOMBFF имеется механизм группирования сэмплов, который может применяться в данном варианте осуществления настоящего изобретения. В нем механизм группирования сэмплов может применяться в форме двух взаимосвязанных структур данных (боксов): (а) бокс SampleToGroupBox, и (b) бокс SampleGroupDescriptionBox. Бокс SampleToGroup отражает назначения сэмплов в группы сэмплов, а бокс SampleGroupDescription содержит записи групп сэмплов, описывающие свойства групп, для каждой группы сэмплов.
В соответствии с одним из вариантов осуществления настоящего изобретения, если необходим анализ, декодирование и отображение некоторого набора изображений, то для этого набора сэмплов определяют новую группу сэмплов, при помощи расширения абстрактного класса VisualSampleGroupEntry (запись группы визуального сэмпла) стандарта ISOMBFF. Синтаксис этого выражения проиллюстрирован ниже:
Порядковый номер в описании группы для тех сэмплов, которые должны рассматриваться как отображаемые сэмплы, в этом случае указывает на бокс DefaultPictureSamplesGroup. Для сэмплов, которые не отображают, выполняют указание на то, что они не являются членами группы сэмплов.
В соответствии с одним из альтернативных вариантов осуществления настоящего изобретения указание на выходные изображения может выполняться с использованием информации о времени образования, то есть с использованием структуры треков формата ISOMBFF может сохраняться последовательность или набор изображений, вместе с информацией синхронизации, в боксе DecodingTimeToSample (соответствия «время декодирования - сэмпл»), который также называют боксом TimeToSample (соответствия «момент времени - сэмпл»), а также с опциональным боксом CompositionTimeToSample (соответствия «время образования - сэмпл»), который также называют CompositionOffsetBox (бокс смещения образования).
В некоторых сценариях применения, в случае синхронизированных последовательностей изображений, в наборе изображений в подобных последовательностях могут присутствовать изображения, которые должны быть декодированы, но которые при этом не выводят на отображение. На сегодняшний день в формате ISOMBF не существует описания метода, который бы позволил разрешить подобную ситуацию.
В соответствии с одним из вариантов осуществления настоящего изобретения некоторые из синтаксических и семантических элементов формата ISOMBFF переопределяют для поддержки таких сценариев. В формате ISOMBFF уже имеется бокс CompositionOffsetBox, позволяющий сигнализировать время образования каждого сэмпла трека. Если принудительно присвоить сэмплам изображений, не предназначенным для отображения, недопустимые значения смещения образования, то анализатор может сделать корректное заключение о том, что такие сэмплы не подлежат отображению.
Каждый синхронизированный сэмпл изображения, являющийся частью трека, имеет в качестве типа обработчика значение 'vide'. Этот тип обработчика по умолчанию обеспечивает необходимые механизмы декодирования и синхронизации отображения. В боксе TimeToSampleBox для каждого сэмпла трека задано время декодирования. Корректное присвоение значений в боксе TimeToSampleBox дает необходимые корректные времена декодирования сэмплов изображения.
31
31
В дополнение, в формате ISOMBFF имеется также бокс CompositionOffsetBox, необходимый для корректного отображения всех сэмплов трека. Бокс CompositionOffsetBox введен в состав трека для поддержки сценариев применения, в которых сэмпл изображения может быть декодирован, но не отображен. Для этого бокса CompositionOffsetBox используют версию 1 (бокса). В соответствии с одним из вариантов осуществления настоящего изобретения значение смещения сэмпла (32-битное целое со знаком) назначают равным наименьшему целому значению (-2). Это значение, которые в реальности не может возникнуть ни в каких мыслимых сценариях применения при отображении изображений и видео. Соответственно, когда анализатор файлов ISOMBFF встречает сэмпл, содержащий реалистичное время декодирования, но имеет время образования, равное (-2), он должен считать, что это сэмпл предназначен для декодирования, но не для отображения.
31
В формате ISOBMFF имеется также бокс CompositionToDecodeBox (соответствия «образование-декодирование»), часть синтаксических элементов которого документирует отношения между временами декодирования и временами образования. Среди этих синтаксических элементов присутствуют элемент LeastDecodeToDisplayDelta (наименьшая разность между декодированием и отображением), который определен как наименьшее смещение образования в боксе CompositionTimeToSample данного трека. В соответствии с одним из вариантов осуществления настоящего изобретения значение элемента LeastDecodeToDisplayDelta может быть назначено равным значению, большему, чем наименьшее целое число (-2), для указания на то, что значение смещения, равное наименьшему целому числу, действительно указывает на изображение, которое не предназначено для вывода.
В соответствии с одним из вариантов осуществления настоящего изобретения вместо указания, могут ли все выходные изображения быть декодированы с использованием заранее заданного набора опорных изображений, или в дополнение к нему, может выполняться указание на количество опорных изображений, которые должны быть декодированы перед тем, как будет возможным декодирование одного или более выходных изображений. Это может выполняться с использованием одного идентификатора, как для отдельного изображения, так и для нескольких изображений сразу.
В соответствии с одним из вариантов осуществления настоящего изобретения, вместо этого или в дополнение к этому, может выполняться указание на количество опорных изображений в кодированной видеопоследовательности или в битовом потоке.
В соответствии с одним из вариантов осуществления настоящего изобретения, вместо этого или в дополнение к этому, для кодированной видеопоследовательности или битового потока может выполняться указание на количество буферов для хранения изображений, которые рассматриваются как занятые при работе буфера DPB. Это количество может быть равным количеству опорных изображений. Степень заполнения буфера DPB исходно (в начале операции декодирования) может считаться равной количеству занятых буферов для хранения изображений. Занятые буферы для хранения изображений не могут становиться пустыми или могут быть пустыми только в начале кодированной видеопоследовательности и/или битового потока.
При декодировании опорного изображения, когда оно еще не присутствует ни в одном из занятых буферов для хранения изображений, его могут включать в один из занятых буферов для хранения изображений, которые еще не был использован ни для какого другого декодированного изображения. В соответствии с одним из вариантов осуществления настоящего изобретения, даже если опорное изображение было выведено и больше не требуется в качестве опорного, буфер для хранения изображения, который включает это декодированное опорное изображение могут не очищать. Может существовать требование, или передаваться указание на то, что кодированная видеопоследовательность должна соответствовать набору конкретных, или указанных, параметров буферизации профиля стандарта и/или уровня стандарта, и/или уровня кодирования (например, максимальному количеству буферов для хранения изображений, к примеру, в синтаксическом элементе sps_max_dec_pic_buffering_minus1 [i] стандарта HEVC). В некоторых из вариантов осуществления настоящего изобретения может присутствовать второй набор конкретных, или указанных, параметров буферизации профиля стандарта и/или уровня стандарта, и/или уровня кодирования для работы буфера DPB, с использованием занятых буферов для хранения изображений, например, в соответствии с предшествующим описанием, тогда как в других вариантах осуществления настоящего изобретения тот же набор конкретных, или указанных, параметров буферизации профиля стандарта и/или уровня стандарта, и/или уровня кодирования может быть действительным одновременно и для обычной работы буфера DPB (без необходимости использования занятых буферов для хранения изображений или аналогичных структур), так и для работы буфера DPB с использованием занятых буферов для хранения изображений, например, в соответствии с предшествующим описанием.
В соответствии с одним из вариантов осуществления настоящего изобретения вместо указания, могут ли все выходные изображения быть декодированы с использованием заранее заданного набора опорных изображений, или в дополнение к нему, может выполняться указание на то, что для всех внешне кодируемых изображений в наборе изображений могут использоваться, в качестве опорных изображений, только изображения с внутренним предсказанием.
В соответствии с одним из вариантов осуществления настоящего изобретения вместо указания, могут ли все выходные изображения быть декодированы с использованием заранее заданного набора опорных изображений, или в дополнение к нему, может выполняться указание на то, что для всех внешне кодируемых изображений в наборе изображений могут использоваться, в качестве опорных изображений, только изображения с внутренним предсказанием и что при этом для всех внешне кодируемых изображений используется одно опорное изображение.
В настоящем документе под упомянутыми выше изображениями с внутренним предсказанием могут пониматься различные элементы, например, IDR-изображение или IRAP-изображение.
В соответствии с одним из вариантов осуществления настоящего изобретения может выполняться указание на то, что ни одно из опорных изображений, используемых в процедуре декодирования, не является выходным изображением, или на то, что все выходные изображения не являются опорными изображениями. Таким образом, любое из выходных изображений может быть модифицировано без влияния на предсказание других выходных изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения любое из описанных выше указаний может выполняться для отдельных изображений независимо, совместно для группы изображений или совместно для всех изображений в последовательности изображений. Также, при этом, форма описанной сигнализации может быть различной. К примеру, сигнализация может осуществляться в виде указания на профиль стандарта и/или на уровень стандарта, и/или на уровень кодирования, в виде других синтаксических элементов, сообщений SEI или другой сигнализации, передаваемой в основной полосе частот или вне ее. В соответствии с одним из вариантов осуществления настоящего изобретения построение набора опорных изображений может выполняться в ходе кодирования или декодирования последовательности. Например, каждое N-oe кодированное изображение может использоваться в качестве опорного и помещаться в буфер опорных изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения может присутствовать дополнительное указание на изображения, связанные друг с другом, и на их отношения (например, некоторые изображения могут формировать «фокусный стек», позволяющий восстанавливать фокусировку на различных расстояниях, тогда как другие изображения могут формировать «стек экспозиции», который позволяет получить в восстановленном изображении расширенный, по сравнению с исходными изображениями, динамический диапазон, также, при отображении некоторых из изображений может изменяться масштаб отображения (т.е. выполнено «зуммирование») в соответствии в некоторой областью других изображений, и т.п.)
В соответствии с одним из вариантов осуществления настоящего изобретения может сигнализироваться информация о положении опорных изображений и/или выходных изображений в битовом потоке, что позволяет декодеру заполнять буфер опорных изображений перед декодированием запрошенного выходного изображения. Такая сигнализация может осуществляться множеством различных путей. К примеру, информация о положении может быть сигнализирована в виде указателей на местоположение в битовом потоке, как порядковых номеров NAL-блоков, при помощи одного или более механизмов метаданных файлового формата, например, группирования треков и/или трека синхронизированных метаданных в базовом формате медиафайлов ISO или производных от него форматах, или может быть указано, явно или неявно, на то, что все требуемые опорные изображения сосредоточены в начале контейнерного формата.
В соответствии с одним из вариантов осуществления настоящего изобретения в битовом потоке может сигнализироваться размер опорных изображений и/или выходных изображений, выраженный в битах (или байтах), что позволяет декодеру осуществлять произвольный доступ внутри файла.
В соответствии с одним из вариантов осуществления настоящего изобретения для всех выходных изображений, или для их части, может сигнализироваться информация о том, что они являются точками произвольного доступа, вместе с дополнительной сигнализацией (или без нее), указывающей на набор опорных изображений, необходимый для декодирования одного или более из этих выходных изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения может присутствовать указание или ограничение, заключающееся в том, что для всех выходных изображений должно использоваться одинаковое количество бит, чтобы в случае, когда изображение будет отредактировано, измененные изображения могли быть помещены в буфер битового потока без изменения положения остальных изображений в файле.
В соответствии с одним из вариантов осуществления настоящего изобретения может присутствовать указание или ограничение, заключающееся в том, что все выходные изображения должны помещаться в битовый поток на равных расстояниях друг от друга. Это может достигаться за счет помещения заполняющих данных между изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения может выполняться указание на ноль или более порядков декодирования, которые не совпадают с битовым потоком, при этом указание может выполняться, например, в формате контейнерного файла или сообщении (или сообщениях) SEI. Из порядка декодирования могут быть исключены некоторые из изображений кодированной видеопоследовательности или битового потока (это определяется с использованием порядка битового потока или порядка декодирования согласно стандарту кодирования, например, HEVC). В порядке декодирования одно и то же кодированное изображение может встречаться более одного раза. Два изображения в порядке декодирования могут иметь обратный порядок в другом месте внутри этого же порядка декодирования и/или могут иметь взаимный порядок следования, отличающийся от имевшегося в порядке битового потока или в порядке декодирования согласно стандарту кодирования.
В частности, если указание на порядок декодирования выполняется в формате ISOBMFF, оно может осуществляться в соответствии с приведенным ниже описанием.
Формат ISOBMFF обеспечивает возможность хранения мультимедийных данных (например, битового видеопотока) в файле, который также включает метаданные файла (боксы в случае ISOBMFF), или в одном или более отдельных файлах. На расположение мультимедийных данных указывают с использованием бокса Data Reference (ссылок на данные). Если мультимедийные данные хранят в том же файле, что и метаданные файла, то их включают в один или более боксов мультимедийных данных (mdat). Каждый трек содержит информацию о местоположении сэмплов (т.е. изображений, или блоков доступа в случае битового видеопотока) в мультимедийных данных бокса Chunk Offset (смещения чанка), бокса Sample to Chunk (соответствия «сэмпл-чанк») и бокса Sample Size (размера сэмпла). Сэмплы описаны в боксе Sample Table (таблицы сэмплов) в порядке их декодирования (например, на основе времен декодирования). В соответствии с одним из вариантов осуществления настоящего изобретения бокс Chunk Offset (смещения чанков) и бокс Sample to Chunk (соответствия «сэмпл-чанк») могут применяться для связывания сэмплов, располагающихся в любом порядке в боксе Media Data (мультимедийных данных) или во внешних данных, с порядком декодирования. Аналогично, одно и то же кодированное изображение (сэмпл) может быть поставлено в соответствие треку несколько раз, с использованием бокса Chunk Offset (смещение чанка) и бокса Sample to Chunk (соответствия «сэмпл-чанк»).
Одно и то же кодированное опорное изображение может в порядке декодирования может встречаться несколько раз. В результате декодирования кодированного опорного изображения, выполняемого в первый раз, это декодированное опорное изображение может быть включено в буфер для хранения изображений в буфере DPB. После этого декодированное опорное изображение может храниться в буфере для хранения изображений. Для вторых и последующих экземпляров того же самого кодированного опорного изображения в порядке декодирования, в ходе дальнейших операций декодирования, декодер может пропускать шаг декодирования и использовать декодированное опорное изображение, которое уже сохранено в буфере для хранения изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения могут быть указаны, например, в формате контейнерного файла или в сообщении (или сообщениях) SEI, ноль или более порядков отображения, которые не идентичны порядку вывода в соответствии с определением в битовом потоке, или согласно указанию на то, что должно быть использовано значение по умолчанию в формате контейнерного файла. Из порядка отображения могут быть исключены некоторые из изображений кодированной видеопоследовательности или битового потока. В порядке отображения одно и то же кодированное изображение может встречаться более одного раза. Два изображения в порядке отображения могут иметь обратный порядок в другом месте внутри этого же порядка отображения и/или могут иметь взаимный порядок следования, отличающийся от имевшегося в порядке вывода.
В частности, если указание на порядок отображения выполняется в формате ISOBMFF, оно может осуществляться в соответствии с приведенным ниже описанием.
В некоторых сценариях применения может требоваться отображение одного набора изображений во множестве различных порядков. В подобных случаях должен создаваться новый трек, для каждого уникального порядка отображения последовательности изображений. Каждый такой трек должен содержать бокс CompositionOffsetBox (смещения образования), в котором соответствующим образом записаны времена для отображения каждого сэмпла трека. В некоторых сценариях применения может быть необходимым, чтобы некоторые изображения из набора изображений отображались более одного раза при воспроизведении последовательности изображений. В настоящее время в формате ISOMBFF это возможно только в случае тиражирования данных сэмплов. Тиражирование данных сэмплов приводит к избыточному увеличению размера файла.
Когда необходимо, чтобы при воспроизведении один сэмпл отображался несколько раз, в боксе CompositionOffsetBox должны быть записаны все значения смещения для воспроизведения этого сэмпла. В существующем формате ISOMBFF в боксе CompositionOffsetBox определен счетчик сэмплов, который является целым числом, отражающим количество последовательных сэмплов, имеющих заданное смещение. Другими словами в формате ISOBMFF одно изображение может иметь только одно время образования (т.е. может отображаться только один раз).
В соответствии с одним из вариантов осуществления настоящего изобретения для преодоления описанных выше ограничений не требуется модификация синтаксиса бокса CompositionOffset, однако его семантика дополняется в соответствии с приведенным ниже описанием.
Когда необходимо записать несколько смещений воспроизведения для какого-либо сэмпла, этот сэмпл обрабатывают иначе, чем другие сэмплы. Для такого сэмпла количество записей в боксе CompositionOffse равно количеству раз, которые он должен быть отображен в ходе воспроизведения. Первая из этих записей устанавливает счетчик сэмплов равным единице, а в соответствующем смещении сэмпла будет записано наименьшее смещение воспроизведения этого сэмпла на шкале времени воспроизведения.
Остальные, дополнительные смещения, записывают при помощи назначения счетчика сэмплов равным нулю и затем - записи подходящих смещений образования в соответствующее поле смещения сэмпла.
Анализатор, обнаруживающий запись в боксе CompositionOffsetBox, счетчик сэмплов которой равен единице, и за которой следуют записи со счетчиками сэмплов, равными нулю, должен интерпретировать значения смещения сэмплов как дополнительные смещения для предшествующего сэмпла.
Другими словами, синтаксический элемент счетчика сэмплов, когда он равен 0, в текущей записи, в циклической структуре бокса CompositionOffset, должен быть определен как указывающий на другое смещение образование для предшествующего сэмпла, смещение образования которого, в свою очередь, было предоставлено в предыдущей записи циклической структуры.
В соответствии с другим вариантом осуществления настоящего изобретения бокс списка Edit List (список редактирования) может использоваться для определения того, что один сэмпл появляется во множестве записей (так называемых «сегментах редактирования») внутри бокса Edit List.
Нужно отметить, что любые из описанных выше указаний могут зависеть от конкретного порядка декодирования, от конкретного порядка отображения, или от комбинации порядка декодирования и порядка отображения. Может выполняться указание на связь описанных выше указаний с конкретным порядком декодирования, конкретным порядком отображения и/или конкретной комбинацией порядка декодирования и порядка отображения.
Еще одним аспектом настоящего изобретения является функционирование декодера при приеме им кодированного битового потока. На фиг. 9 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 9 показана структура двухуровневого декодера, однако нужно понимать, что те же операции декодирования могут аналогичным образом применяться в одноуровневом декодере.
Видеодекодер 550 включает первый сегмент 552 декодера для компонентов базового ракурса и второй сегмент 554 декодера для компонентов небазового ракурса. Блок 556 иллюстрирует демультиплексор, предназначенный для предоставления информации о компонентах базового ракурса в первый сегмент 552 декодера, а также для предоставления информации о компонентах небазового ракурса во второй сегмент 554 декодера. За Р'n обозначены предсказанные представления блока пикселей изображения. За D'n обозначены восстановленные сигналы ошибки предсказания. Блоки 704, 804 иллюстрируют предварительно восстановленные изображения (I'n). За R'n обозначено окончательное восстановленное изображение. Блоками 703, 803 проиллюстрированное обратное преобразование (1). Блоками 702, 802 проиллюстрированное обратное преобразование (Q1). Блоками 701, 801 проиллюстрировано энтропийное декодирование (Е1). Блоками 705, 805 проиллюстрирована память опорных кадров (reference frame memory, RFM). Блоками 706, 806 проиллюстрировано предсказание (Р) (либо внутреннее, либо внешнее предсказание). Блоками 707, 807 проиллюстрирована фильтрация (F). Блоки 708, 808 могут использоваться для комбинирования декодированной информации ошибки предсказания с предсказанными компонентами базового или небазового ракурса, в результате чего получают предварительно восстановленные изображения (I'n). Предварительно восстановленные и прошедшие фильтрацию изображения базового ракурса могут выводиться (709) из первого сегмента 552 декодера, а предварительно восстановленные и прошедшие фильтрацию изображения базового ракурса могут выводиться (809) из первого сегмента 554 декодера.
Операции декодирования для вариантов осуществления настоящего изобретения, проиллюстрированных на фиг. 10, являются обратными операциям кодирования. То есть, в процессе декодирования декодер может декодировать (1000) идентификатор, указывающий, могут ли все выходные изображения быть декодированными с использованием заранее заданного набора опорных изображений. Декодер декодирует (1002) указание на требуемые опорные изображения для заданного выходного изображения. Затем, с целью декодирования заданного выходного изображения, декодер (1004) по меньшей мере одно опорное изображение, на которое было выполнено указание, и затем декодирует (1006) по меньшей мере одно выходное изображение.
Как отмечалось выше, возможна также структура кодирования, в которой указывают, что для всех внешне кодируемых изображений в наборе изображений в качестве опорных изображений могут использоваться только изображения с внутренним предсказанием.
В этом случае процедура декодирования включает, в соответствии с иллюстрацией фиг. 11, декодирование (1100) идентификатора, указывающего, являются ли все изображения с внешним предсказанием в последовательности неопорными изображениями. Эта процедура, опционально, может включать декодирование (1102) идентификатора, который указывает на то, выводятся или нет все внутренне предсказываемые изображения в последовательности. Затем, с целью декодирования заданного выходного изображения, декодер декодирует (1104) по меньшей мере одно внутренне предсказываемое изображение, на которое было выполнено указание, и затем декодирует (1106) по меньшей мере одно внешне предсказываемое изображение с использованием упомянутого по меньшей мере одного внутренне предсказываемого изображения в качестве опорного изображения.
Декодер также выполнен с возможностью декодирования указаний, относящихся в порядку декодирования, к порядку отображения, или к комбинации порядка декодирования и порядка отображения, в соответствии с предшествующим описанием, а также выполнен с возможностью управления работой декодера и устройства, включающего декодер, с целью соответствующего построения декодированной последовательности изображений. Таким образом, описанные выше способы кодирования и декодирования представляют собой средства сигнализации структур данных кодирования с предсказанием, которые обеспечивают функциональность произвольного доступа и возможность редактирования отдельных изображений в сжатой последовательности изображений, с сохранением большинства преимуществ в эффективности от применения внешнего кодирования изображений.
В рассмотренных выше вариантах осуществления настоящего изобретения кодек описан на примере отдельных устройств кодирования и декодирования - для упрощения понимания применяемых процедур. Однако нужно понимать, что аппаратура, структуры и операции могут быть реализованы в виде единого устройства/структуры/операции кодирования-декодирования. Также, в некоторых из вариантов осуществления настоящего изобретения кодер и декодер могут совместно использовать часть общих элементов или общими могут быть все элементы.
Рассмотренные выше примеры описывают работу вариантов осуществления настоящего изобретения в кодеке из состава электронного устройства, однако нужно понимать, что настоящее изобретение, определенное приложенной формулой изобретения, может быть реализовано как часть любого видеокодека. Так, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, в котором видеокодирование может быть реализовано по фиксированным, или проводным, каналам связи.
Соответственно, абонентское оборудование может включать в свой состав видеокодек, например, аналогичный рассмотренным в приведенном выше описании настоящего изобретения. Нужно понимать, что выражение «абонентское оборудование» используется как охватывающие любые подходящие типы беспроводного абонентского оборудования, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.
При этом элементы наземной сети мобильной связи общего пользования (public land mobile network, PLMN) также могут включать видеокодеки в соответствии с предшествующим описанием.
В общем случае различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или схем специального назначения, программного обеспечения, логики или какой-либо их комбинации. К примеру, некоторые из аспектов могут быть реализованы в виде аппаратного обеспечения, тогда как другие аспекты могут быть реализованы в виде микропрограммного или программного обеспечения, которое может исполняться контроллером, микропроцессором или иным вычислительным устройством, без ограничения настоящего изобретения перечисленным. Различные аспекты настоящего изобретения допускают иллюстрацию и описание в виде блок-схем, блок-схем алгоритмов или с помощью некоторых других наглядных представлений, но при этом нужно понимать, что блоки, устройства, системы, методы или способы, описанные в настоящем документе, могут быть реализованы, в качестве неограничивающих примеров, в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, схем или логики специального назначения, аппаратного обеспечения или контроллера общего назначения, или же иных вычислительных устройств, или некоторой их комбинации.
Варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения, исполняемого процессором данных мобильного устройства, например, процессорным элементом, или с помощью аппаратного обеспечения, или с помощью комбинации программного и аппаратного обеспечения. Также в этом отношении следует отметить, что любые блоки последовательностей логических операций, проиллюстрированные на чертежах, могут представлять собой шаги программы или взаимосвязанные логические схемы, блоки и функции, или комбинацию программных шагов и логических схем, блоков и функций. Программное обеспечение может храниться на таких физических носителях, как микросхемы памяти или блоки памяти, реализованные внутри процессора, магнитные носители, например, жесткий диск или гибкий диск, и оптические носители, например, DVD и их варианты для хранения данных, CD.
Память может относиться к любому типу, соответствующему локальному техническому окружению, при этом она может быть реализована с использованием любой подходящей технологии хранения данных, например, запоминающие устройства на полупроводниках, магнитные запоминающие устройства и системы, оптические запоминающие устройства и системы, несъемная или съемная память. Процессоры данных могут относиться к любому типу, соответствующему локальному техническому окружению и могут включать одно или более из следующего: компьютеры общего назначения, компьютеры специального назначения, микропроцессоры, цифровые сигнальные процессоры (digital signal processors, DSP), процессоры на основе многоядерной архитектуры - в качестве неограничивающих примеров.
Варианты осуществления настоящего изобретения могут применяться на практике в различных компонентах, например, в модулях интегральных схем. Процесс разработки интегральных схем, в целом, в высокой степени автоматизирован. Существуют сложные и мощные программные инструменты для преобразования проектов логического уровня в конструкции полупроводниковых схем, готовые для вытравливания и формовки на полупроводниковой подложке.
Программы, подобные поставляемой фирмой Synopsys, Inc (Маунтин-Вью, Калифорния) или фирмой Cadence Design (Сан-Хосе, Калифорния), осуществляют автоматическую разводку проводников и позиционирование компонентов на полупроводниковом кристалле с использованием общепринятых правил разработки, а также с использованием библиотек заранее сохраненных модулей проектов. По завершении разработки полупроводниковой схемы результирующая конструкция, в стандартизированном электронном формате (например, Opus, GDSII и т.п.) может быть передана на полупроводниковое производство для изготовления микросхемы.
В предшествующем изложении с помощью иллюстративных и неограничивающих примеров было обеспечено полное и информативное описание одного из примеров осуществления настоящего изобретения. Однако в свете предшествующего описания, рассматриваемого в сочетании с приложенными чертежами, специалистам в соответствующих областях техники могут быть очевидны различные модификации и доработки. Тем не менее, любые такие или аналогичные им модификации концепции настоящего изобретения все равно попадают в его рамки.
Способ в соответствии с первым вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, могут ли все выходные изображения быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и декодирование по меньшей мере одного выходного изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование, из одного или более синтаксических элементов и/или значений синтаксических элементов, указания, является ли изображение опорным изображением или неопорным изображением.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает декодирование указания на то, что битовый поток включает только один временной подуровень, при этом неопорные изображения временного подуровня считают неопорными изображениями, и при этом все остальные изображения считают опорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что битовый поток включает два или более временных подуровней, при этом все изображения со значением параметра TemporalId равным 0, считают опорными изображениями, а все изображения со значением параметра TemporalId большим 0 считают неопорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование метаданных из формата контейнерного файла для битового потока, которые указывают на опорные и на неопорные изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, которое указывает на выходные изображения и/или на изображения, которые не являются выходными, при этом указание является одним из следующего:
- параметр pic_output_flag (флаг вывода изображения) стандарта HEVC,
- сообщение SEI для указания на отображаемые изображения,
- указание в метаданных формата контейнерного файла для указания на отображаемые изображения. В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISO Base Media File Format, ISOBMFF) и при этом на выходные изображения указывают с использованием механизма группирования сэмплов, таким образом, что последовательность или набор изображений сохраняют с использованием структуры трека формата ISOMBFF.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений в наборе изображений, кодируемых с внешним предсказанием, в качестве опорных изображений используются только внутренне предсказываемые изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение. В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, относящегося к нулю или более порядкам декодирования, которые не идентичны порядку битового потока, из формата контейнерного файла или из одного или более сообщений SEI.
В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISOBMFF), и при этом структуру данных бокса Chunk Offset (смещения чанка) и структуру данных бокса Sample to Chunk (соответствие «сэмпл-чанк») используют для связывания сэмплов, расположенных, в любом порядке, в структуре данных бокса Media Data (бокс мультимедийных данных), или во внешнем файле (или файлах), с порядком декодирования.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания, относящегося к нулю или более порядкам отображения, которые не идентичны порядку вывода в соответствии с определением в битовом потоке, или согласно указанию на то, что должно быть использовано значение по умолчанию из формата контейнерного файла или из одного или более сообщений SEI. Способ в соответствии со вторым вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, являются ли все внешне предсказываемые изображения в последовательности неопорными изображениями;
декодирование по меньшей мере одного внутренне предсказываемого изображения; и
декодирование по меньшей мере одного внешне предсказываемого изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
декодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение.
Способ в соответствии с третьим вариантом осуществления настоящего изобретения, представляет собой способ декодирования последовательности изображений из битового потока, включающий
декодирование идентификатора, указывающего, используются ли для всех изображений уточняющего уровня только изображения из (изображений) базового уровня;
декодирование по меньшей мере одного изображения базового уровня;и
декодирование по меньшей мере одного изображения уточняющего уровня.
В соответствии с четвертым вариантом осуществления настоящего изобретения устройство включает:
по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
декодирование идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
декодирование по меньшей мере одного выходного изображения.
В соответствии с пятым вариантом осуществления настоящего изобретения предложен машиночитаемый носитель для хранения данных, на котором хранят код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
декодирование идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
декодирование указания на требуемые опорные изображения для заданного выходного изображения;
декодирование по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
декодирование по меньшей мере одного выходного изображения.
В соответствии с шестым вариантом осуществления настоящего изобретения предложено устройство, включающее видеодекодер, сконфигурированный для декодирования битового потока, включающего последовательность изображений, при этом видеодекодер включает
средства декодирования идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
средства декодирования по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
средства декодирования по меньшей мере одного выходного изображения.
В соответствии с седьмым вариантом осуществления настоящего изобретения предложен видеодекодер, сконфигурированный для декодирования битового потока, включающего последовательность изображений, при этом упомянутый видеодекодер сконфигурирован также:
для декодирования идентификатора из битового потока, при этом идентификатор указывает, могут ли все выходные изображения последовательности изображений быть декодированы с использованием заранее заданного набора опорных изображений;
для декодирования указания на требуемые опорные изображения для заданного выходного изображения;
для декодирования по меньшей мере одного опорного изображения, на которое выполнено указание, для заданного выходного изображения; и
для декодирования по меньшей мере одного выходного изображения.
Способ в соответствии с восьмым вариантом осуществления настоящего изобретения, представляет собой способ кодирования последовательности изображений в битовый поток, включающий
кодирование набора опорных изображений;
сохранение упомянутого набора опорных изображений в исходный буфер опорных изображений;
кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование, в один или более синтаксических элементов и/или значений синтаксических элементов, указания, является ли изображение опорным изображением или неопорным изображением.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что битовый поток включает только один временной подуровень, при этом неопорные изображения временного подуровня считают неопорными изображениями, и при этом все остальные изображения считают опорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что битовый поток включает два или более временных подуровней, при этом все изображения со значением параметра TemporalId равным 0, считают опорными изображениями, а все изображения со значением параметра TemporalId большим 0 считают неопорными изображениями.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование метаданных в формате контейнерного файла для битового потока, которые указывают на опорные и на неопорные изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает кодирование указания, которое указывает на выходные изображения и/или на изображения, которые не являются выходными, при этом указание является одним из следующего:
- параметр pic_output_flag (флаг вывода изображения) стандарта HEVC,
- сообщение SEI для указания на отображаемые изображения,
- указание в метаданных формата контейнерного файла для указания на отображаемые изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISO Base Media File Format, ISOBMFF) и при этом на выходные изображения указывают с использованием механизма группирования сэмплов, таким образом, что последовательность или набор изображений сохраняют с использованием структуры трека формата ISOMBFF.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что для всех изображений в наборе изображений, кодируемых с внешним предсказанием, в качестве опорных изображений используются только внутренне предсказываемые изображения.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания на то, что для всех изображений, кодируемых с внешним предсказанием, используется только одно опорное изображение.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания, относящегося к нулю или более порядкам декодирования, которые не идентичны порядку битового потока, в формате контейнерного файла или в одном или более сообщений SEI.
В соответствии с одним из вариантов осуществления настоящего изобретения форматом контейнерного файла является базовый формат медиафайлов стандарта ISO (ISOBMFF), и при этом структуру данных бокса Chunk Offset (смещение чанка) и структуру данных бокса Sample to Chunk (соответствия «сэмп-чанк») используют для связывания сэмплов, расположенных, в любом порядке, в структуре данных бокса Media Data (мультимедийных данных), или во внешнем файле (или файлах), с порядком декодирования.
В соответствии с одним из вариантов осуществления настоящего изобретения способ также включает
кодирование указания, относящегося к нулю или более порядкам отображения, которые не идентичны порядку вывода в соответствии с определением в битовом потоке, или согласно указанию на то, что должно быть использовано значение по умолчанию, в формате контейнерного файла или в одном или более сообщений SEI.
В соответствии с девятым вариантом осуществления настоящего изобретения устройство включает:
по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
кодирование набора опорных изображений в битовый поток;
сохранение упомянутого набора опорных изображений в исходный буфер опорных изображений;
кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с десятым вариантом осуществления настоящего изобретения предложен машиночитаемый носитель для хранения данных, на котором хранят код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
кодирование набора опорных изображений в битовый поток;
сохранение упомянутого набора опорных изображений в исходном буфере опорных изображений; кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирование в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с одиннадцатым вариантом осуществления настоящего изобретения устройство включает:
видеокодер, сконфигурированный для кодирования
последовательности изображений в битовый поток, при этом упомянутый видеокодер включает
средства кодирования набора опорных изображений;
средства сохранения упомянутого набора опорных изображений в исходном буфере опорных изображений; кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
средства кодирования в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.
В соответствии с двенадцатым вариантом осуществления настоящего изобретения предложен видеокодер, сконфигурированный для кодирования последовательности изображений в битовый поток, при этом упомянутый видеокодер сконфигурирован также для
кодирования набора опорных изображений;
сохранения упомянутого набора опорных изображений в исходном буфере опорных изображений; кодирование набора выходных изображений без изменения содержимого исходного буфера опорных изображений; и
кодирования в битовый поток указания, которое указывает на то, что все выходные изображения в последовательности изображений могут быть декодированы с использованием упомянутого набора опорных изображений.