Управление буфером декодированных изображений для кодирования видеосигналов
MANAGING A BUFFER OF DECODED IMAGES FOR ENCODING VIDEO SIGNALS

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[1] По данной заявке испрашивается приоритет согласно предварительной заявке на патент США №62/819,460, поданной 15 марта 2019 года в Ведомство по патентам и товарным знакам США, и заявке на патент США №16/815,710, поданной 11 марта 2020 года в Ведомство по патентам и товарным знакам США, раскрытие которых включено в состав настоящего описания посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[2] Раскрытие настоящего изобретения относится к группе технологий усовершенствованного кодирования видеосигналов, более конкретно, к управлению буфером декодированных изображений.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[3] Системы для декодирования включают буфер декодированных изображений для хранения изображений, подлежащих использованию в качестве опорных при декодировании.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[4] Некоторые примеры раскрытия настоящего изобретения позволяют улучшить способ управления буфером декодированных изображений с помощью, например, настройки адаптации временного подуровня.
[5] В соответствии с некоторыми примерами осуществления предлагается способ. Способ включает сохранение предварительно декодированных изображений видеопотока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; определение, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR, Sublayer Non-Reference), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; удаление, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR из буфера изображений; и предсказание текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере изображений, после удаления изображения SLNR из буфера изображений.
[6] Согласно примеру осуществления, определение, является ли изображение первого множества изображений изображением SLNR, включает идентификацию типа блока уровня абстракции сети (NAL, Network Abstract Layer) изображения и определение, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL.
[7] Согласно примеру осуществления, способ также включает предоставление идентификатора для изображения, определенного в качестве изображения SLNR, на основе определения изображения в качестве изображения SLNR, при этом удаление включает удаление изображения из буфера изображений на основе идентификатора.
[8] Согласно примеру осуществления, способ также включает формирование списка опорных изображений, включающего элемент для каждого изображения из первого множества, при этом предоставление идентификатора включает предоставление идентификатора в элементе списка опорных изображений, который соответствует изображению, определенному как изображение SLNR.
[9] Согласно примеру осуществления, ранее декодированные изображения, хранящиеся в буфере изображений, содержат второе изображение, которое является опорным изображением, и способ также включает определение, является ли значение временного подуровня второго изображения больше заранее заданного значения; удаление второго изображения из буфера изображений на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения.
[10] Согласно примеру осуществления, способ также включает предоставление идентификатора для второго изображения на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения, при этом удаление второго изображения включает удаление второго изображения из буфера изображений на основе идентификатора.
[11] Согласно примеру осуществления, способ также включает сравнение заранее заданного значения со значением, соответствующим наибольшему номеру идентификации временного подуровня, при этом определение, является ли значение временного подуровня второго изображения больше заранее заданного значения, осуществляется на основе заранее заданного значения, которое определяется как отличающееся от значения, соответствующего наибольшему номеру идентификации временного подуровня.
[12] Согласно примеру осуществления, способ также включает определение, является ли текущее изображение изображением внутренней точки произвольного доступа (IRAP, Intra Random Access Point); определение, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL, Random Access Skipped Leading); и определение, следует ли устанавливать соответствующий идентификатор для каждого опорного изображения, хранимого в буфере изображений, при этом соответствующий идентификатор для каждого опорного изображения указывает, должно ли каждое опорное изображение удаляться из буфера изображений, на основе того, определяется ли текущее изображение как изображение IRAP и определяется ли флаг, указывающий на отсутствие вывода изображения RASL.
[13] Согласно примеру осуществления, значение временного подуровня второго изображения больше, чем значение временного подуровня первого множества изображений, хранящихся в буфере изображений.
[14] Согласно примеру осуществления, способ также включает удаление изображений из буфера изображений, на которые отсутствует ссылка в списке опорных изображений, на основе изображений, на которые отсутствует ссылка в списке опорных изображений.
[15] В соответствии с некоторыми примерами осуществления предлагается декодер для декодирования видеопотока. Декодер содержит память, сконфигурированную для хранения компьютерного программного кода, и по меньшей мере один процессор, сконфигурированный для доступа к компьютерному программному коду и работающий под управлением компьютерного программного кода, при этом компьютерный программный код включает: код сохранения, сконфигурированный для выполнения по меньшей мере одним процессором сохранения предварительно декодированных изображений видеопотока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; код определения, сконфигурированный для выполнения по меньшей мере одним процессором определения, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; код удаления, сконфигурированный для выполнения по меньшей мере одним процессором удаления, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR в буфере изображений; и код предсказания, сконфигурированный для выполнения по меньшей мере одним процессором предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере изображений, после удаления изображения SLNR из буфера изображений.
[16] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором идентификации типа блока уровня абстракции сети (NAL) изображения и определения, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL.
[17] Согласно примеру осуществления, по меньшей мере один процессор сконфигурирован для доступа к компьютерному программному коду и работы под управлением компьютерного программного кода, который также включает код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором предоставления идентификатора для изображения, определенного в качестве изображения SLNR, на основе определения изображения в качестве изображения SLNR, и код удаления, сконфигурированный для выполнения по меньшей мере одним процессором удаления изображения SLNR из буфера изображений на основе идентификатора.
[18] Согласно примеру осуществления, по меньшей мере один процессор сконфигурирован для доступа к компьютерному программному коду и работы под управлением компьютерного программного кода, который также включает код формирования, сконфигурированный для выполнения по меньшей мере одним процессором формирование списка опорных изображений, включающего элемент для каждого изображения из первого множества изображений, и код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором предоставления идентификатора в элементе списка опорных изображений, который соответствует изображению, определенному как изображение SLNR.
[19] Согласно примеру осуществления, ранее декодированные изображения, хранящиеся в буфере изображений, содержат второе изображение, которое является опорным изображением, код определения сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня второго изображения больше заранее заданного значения; и код удаления сконфигурирован для выполнения по меньшей мере одним процессором удаления второго изображения из буфера изображений на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения.
[20] Согласно примеру осуществления, код предоставления идентификатора сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора для второго изображения на основе определения того, что значение временного подуровня второго изображения больше заранее заданного значения, и код удаления сконфигурирован для выполнения по меньшей мере одним процессором удаления второго изображения из буфера изображений на основе идентификатора.
[21] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором сравнения заранее заданного значения со значением, соответствующим наибольшему номеру идентификации временного подуровня, при этом определение, является ли значение временного подуровня второго изображения больше заранее заданного значения, осуществляется на основе заранее заданного значения, которое определяется как отличающееся от значения, соответствующего наибольшему номеру идентификации временного подуровня.
[22] Согласно примеру осуществления, код определения сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли текущее изображение изображением внутренней точки произвольного доступа (IRAP); и определения, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL); и компьютерный программный код также содержит код предоставления идентификатора, сконфигурированный для выполнения по меньшей мере одним процессором установки соответствующего идентификатора для каждого опорного изображения, хранимого в буфере изображений, при этом соответствующий идентификатор для каждого опорного изображения указывает, должно ли каждое опорное изображение удаляться из буфера изображений, если определяется, что текущее изображение является изображением IRAP, и определяется, что флаг, указывает на отсутствие вывода изображения RASL.
[23] Согласно примеру осуществления, значение временного подуровня второго изображения больше, чем значение временного подуровня первого множества изображений, хранящихся в буфере изображений.
[24] Согласно некоторым примерам осуществления настоящего изобретения предлагается машиночитаемый носитель информации, на котором хранятся компьютерные инструкции. При выполнении компьютерных инструкций по меньшей мере один процессор инициируется для сохранения предварительно декодированных изображений видео потока в буфере изображений, включая первое множество изображений одинакового временного подуровня, при этом первое множество изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока; определения, является ли изображение из первого множества изображений не опорным изображением подуровня (SLNR), на основе индикатора, представленного в заголовке слайса и/или в заголовке изображения; удаления, на основе изображения, определенного в качестве изображения SLNR, изображения SLNR из буфера изображений; и предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, которое хранится в буфере изображений, после удаления изображения SLNR из буфера изображений.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[25] Дополнительные признаки, особенности и различные преимущества раскрываемого предмета изобретения становятся более очевидными из последующего подробного описания и прилагаемых чертежей, на которых:
[26] на фиг. 1 показано схематическое представление упрощенной блок-схемы системы связи в соответствии с примером осуществления настоящего изобретения.
[27] На фиг. 2 показано схематическое представление упрощенной блок-схемы системы потоковой передачи в соответствии с примером осуществления настоящего изобретения.
[28] На фиг. 3 показано схематическое представление упрощенной блок-схемы видеодекодера и дисплея в соответствии с примером осуществления настоящего изобретения.
[29] На фиг. 4 показано схематическое представление упрощенной блок-схемы видеокодера и источника видеосигнала в соответствии с примером осуществления настоящего изобретения.
[30] На фиг. 5 показан алгоритм выполнения процесса в соответствии с примером осуществления настоящего изобретения.
[31] На фиг. 6 показан алгоритм выполнения процесса в соответствии с примером осуществления настоящего изобретения.
[32] На фиг. 7 представлена схема, иллюстрирующая устройство в соответствии с примером осуществления настоящего изобретения.
[33] На фиг. 8 показана блок-схема компьютерной системы, подходящей для реализации примеров осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[34] На фиг. 1 показана упрощенная блок-схема системы 100 связи в соответствии с примером раскрытия настоящего изобретения. Система 100 может содержать по меньшей мере два терминала 110, 120, взаимосвязанных через сеть 150. Для однонаправленной передачи данных первый терминал 110 может кодировать видеоданные в локальном местоположении для передачи их в другой терминал 120 через сеть 150. Второй терминал 120 может принимать кодированные видеоданные из другого терминала по сети 150, декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может представлять собой общую функцию в медийных обслуживающих приложениях и т.п.
[35] На фиг. 1 показана вторая пара терминалов 130, 140, предназначенных для поддержки двусторонней передачи кодированных видеоданных, которая может осуществляться, например, в процессе видеоконференц-связи. Для двусторонней передачи данных каждый терминал 130, 140 может кодировать видеоданные, захваченные в локальном местоположении, для передачи в другой терминал по сети 150. Каждый терминал 130, 140 также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и отображать восстановленные видеоданные на локальном устройстве отображения.
[36] Показанные на фиг. 1 терминалы 110-140 могут представлять собой, например, серверы, персональные компьютеры и смартфоны, и/или терминал любого тип. Например, терминалы 110-140 могут представлять собой ноутбуки, планшеты, медиаплееры и/или специализированное оборудование для видеоконференций. Сеть 150 представляет любое количество сетей, которые передают кодированные видеоданные между терминалами 110-140, включая, например, проводные и/или беспроводные сети связи. Сеть 150 связи может осуществлять обмен данными по линиям связи с коммутацией каналов или с коммутацией пакетов. Типичные сети включают телекоммуникационные сети, локальные и глобальные сети и/или Интернет. С целью настоящего обсуждения можно предположить, что архитектура и топология сети 150 не существенна для принципов раскрытия изобретения, если ниже не указано иное.
[37] На фиг. 2 в качестве примера применения раскрываемого предмета изобретения показано расположение кодера и декодера видеосигнала в потоковой среде. Раскрываемый предмет настоящего изобретения может использоваться с другими допустимыми применениями видеосигнала, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатых видеоданных на цифровых носителях, включая CD, DVD, карту памяти и т.п.
[38] Как показано на фиг. 2, система 200 потоковой передачи может содержать подсистему 213 захвата, которая включает в свой состав источник 201 видеосигнала и кодер 203. Система 200 потоковой передачи может также содержать по меньшей мере один потоковый сервер 205 и/или по меньшей мере один потоковый клиент 206.
[39] Источник 201 видеосигнала может создавать, например, несжатый поток 202 отсчетов видеосигнала. Источник 201 видеосигнала может представлять собой, например, цифровую видеокамеру. Поток 202 отсчетов, изображенный в виде полужирной линии, чтобы обратить внимание на большой объем данных по сравнению с кодированными битовыми видеопотоками, может обрабатываться кодером 203, соединенным с камерой. Кодер 203 может содержать аппаратуру, программное обеспечение или комбинацию этих компонентов для активирования или реализации аспектов раскрываемого предмета изобретения, как более подробно описывается ниже. Кодер 203 может также генерировать кодированный битовый видеопоток 204. Кодированный битовый видеопоток 204, изображенный в виде тонкой линии, чтобы обратить внимание на небольшой объем данных по сравнению с несжатым видеопотоком 202 отсчетов, может для дальнейшего использования храниться на потоковом сервере. Один или более потоковых клиентов 206 могут осуществлять доступ к потоковому серверу 205 для извлечения битовых видеопотоков 209, которые могут представлять собой копии кодированного битового видеопотока 204.
[40] Потоковые клиенты 206 могут включать в свой состав видеодекодер 210 и дисплей 212. Видеодекодер 210 может, например, декодировать битовый видеопоток 209, представляющий собой входящую копию кодированного битового видеопотока 204, и создавать исходящий видеопоток 211 отсчетов, который может отображаться на дисплее 212 или на другом устройстве визуализации (не показанном на чертеже). В некоторых потоковых системах битовые видеопотоки 204, 209 могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видеоданных. Примером таких стандартов, без ограничения указанным примером, может являться рекомендация Н.265 ITU-T. В стадии разработки находится стандарт кодирования видеоданных, неформально известный как усовершенствованное видеокодирование (VVC, Versatile Video Coding). Примеры раскрытия настоящего изобретения могут использоваться в контексте VVC.
[41] На фиг. 3 показан пример функциональной блок-схемы видеодекодера 210, подключенного к дисплею 212, в соответствии с примером раскрытия настоящего изобретения.
[42] Видеодекодер 210 может содержать канал 312, приемник 310, буферную память 315, энтропийный декодер/анализатор 320, блок 351 масштабирования/обратного преобразования, блок 352 внутреннего предсказания, блок 353 предсказания компенсации движения, агрегатор 355, блок 356 контурного фильтра, память 357 опорных изображений и память 358 текущих изображений. Согласно по меньшей мере одному примеру осуществления видеодекодер 210 может содержать интегрированную схему, ряд интегрированных схем и/или другие электронные цепи. Видеодекодер 210 может быть также полностью или частично реализован в виде программного обеспечения, выполняющегося на одном или более CPU со связанной памятью.
[43] В этом и других примерах осуществления приемник 310 может принимать одну или более кодированных видеопоследовательностей, подлежащих декодированию декодером 210, по одной последовательности в конкретный момент времени, при этом декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься по каналу 312, который может представлять собой аппаратную/программную линию связи с запоминающим устройством, хранящим кодированные видеоданные. Приемник 310 может принимать кодированные видеоданные совместно с другими данными, например, с кодированными звуковыми данными и/или с потоками служебных данных, которые могут пересылаться в соответствующие им объекты применения (не показанные на чертеже). Приемник 310 может разделять кодированную видеопоследовательность от других данных. Для устранения флуктуации в сети между приемником 310 и энтропийным декодером/анализатором 320 (далее называемым "анализатор") может устанавливаться буферная память 315. Если приемник 310 принимает данные из запоминающего устройства/устройства пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память 315 может не использоваться или иметь небольшой размер. Для использования в пакетных сетях наилучшего качества обслуживания, таких как Интернет, может потребоваться буфер 315, который может быть достаточно большим и адаптируемым по размеру.
[44] Видеодекодер 210 может содержать анализатор 320 для восстановления символов 321 из энтропийно кодированной видеопоследовательности. Категории таких символов включают, например, информацию, используемую для управления функционированием декодера 210, а также потенциальную информацию для управлением устройством визуализации, таким как дисплей 212, который может быть связан с декодером, как показано на фиг. 2. Управляющая информация для устройства (устройств) визуализации может передаваться, например, в формате сообщений дополнительной усовершенствованной информации (SEI, Supplementary Enhancement Information) или фрагментов набора параметров применимости визуальной информации (VUI, Video Usability Information) (не показанной на чертеже). Анализатор 320 может анализировать/энтропийно декодировать принятую видеопоследовательность. Кодирование кодированной видеопоследовательности может выполняться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, хорошо известным специалисту в этой области техники, включая кодирование с переменной длиной, кодирование по методу Хаффмена, арифметическое кодирование с учетом или без учета контекстной зависимости и т.д. Анализатор 320 может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного из параметров, соответствующих группе. Подгруппы могут включать группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, блоки кодирования (CU, Coding Unit), блоки преобразования (TU, Transform Unit), блоки предсказания (PU, Prediction Unit) и т.д. Анализатор 320 также может извлекать из кодированной видеопоследовательности такую информацию как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[45] Анализатор 320 может выполнять операцию энтропийного декодирования/анализа видеопоследовательности, принятой из буферной памяти 315, для создания символов 321.
[46] При восстановлении символов 321 может быть задействовано множество различных блоков, в зависимости от типа кодированного видеоизображения или его части (например: от взаимосвязанных или внутренних изображений и блоков) и других факторов. Задействованными в этом процессе блоками и способом их взаимодействия может управлять информация управления подгруппами, которая анализируется на основе кодированной видеопоследовательности анализатором 320. Поток такой информации управления подгруппами между анализатором 320 и множеством блоков, описываемый ниже, не изображен на чертеже для простоты изложения.
[47] Помимо уже упомянутых функциональных блоков, декодер 210, как описано ниже, концептуально может подразделяться на ряд других функциональных блоков. В практических реализациях при работе в условиях коммерческих ограничений множество этих блоков тесно взаимодействуют друг с другом и могут, по меньшей мере частично, интегрироваться друг в друга. Однако с целью описания раскрываемого предмета изобретения применяется приведенное ниже концептуальное разделение на функциональные блоки.
[48] Один из блоков может представлять собой блок 351 преобразователя видеоформата/обратного преобразования. Блок 351 преобразователя видеоформата/обратного преобразования может принимать квантованный коэффициент преобразования, а также управляющую информацию, включая информацию об используемом способе преобразования, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д., в качестве символа(-ов) 321 из анализатора 320. Блок 351 преобразователя видеоформата/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут подаваться в агрегатор 355.
[49] В некоторых случаях выходные отсчеты блока 351 преобразователя видеоформата/обратного преобразования могут принадлежать внутренне кодированному блоку; то есть блоку, который не использует информацию предсказания из предварительно восстановленных изображений, но может использовать информацию предсказания из предварительно восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком 352 внутреннего предсказания. В некоторых случаях блок 352 внутреннего предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, с использованием окружающей уже восстановленной информации, извлеченной из текущего (частично восстановленного) изображения, хранимого в памяти 358 текущих изображений. Агрегатор 355 в некоторых случаях добавляет на основе отсчетов информацию предсказания, сгенерированную блоком 352 внутреннего предсказания, в выходную информацию отсчетов, представленную блоком 351 преобразователя видеоформата/обратного преобразования.
[50] В других случаях выходные отсчеты блока 351 преобразователя видеоформата/обратного преобразования могут принадлежать взаимно кодированному блоку с потенциальной компенсацией движения. В таком случае блок 353 предсказания компенсации движения может осуществлять доступ к памяти 357 опорных изображений для извлечения отсчетов, используемых для предсказания. После компенсации движения извлеченные образцы в соответствии с символами 321, принадлежащими блоку, могут добавляться агрегатором 355 к выходным данным блока 351 преобразователя видеоформата/обратного преобразования (в этом случае эти данные называются остаточными отсчетами или остаточным сигналом), для того чтобы сгенерировать выходную информацию отсчетов. Адреса в памяти 357 опорных изображений, по которым блок 353 предсказания компенсации движения извлекает отсчеты предсказания, могут управляться векторами движения. Векторы движения могут быть доступны блоку 353 предсказания компенсации движения в виде символов 321, которые могут, например, характеризоваться компонентами х, Y и опорными изображениями. Компенсация движения также может включать интерполяцию значений отсчетов при извлечении из памяти 357 опорных изображений, если используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.
[51] Выходные отсчеты агрегатора 355 могут обрабатываться с использованием различных технологий контурной фильтрации в блоке 356 контурного фильтра. Технологии сжатия видеоданных могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, включаемыми в кодированный битовый видеопоток, и становятся доступными блоку 356 контурной фильтрации в виде символов 321 из анализатора 320, но также могут реагировать на метаинформацию, получаемую в процессе декодирования предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные, подвергшиеся контурной фильтрации значения отсчетов.
[52] Выход блока 356 контурного фильтра может представлять собой поток отсчетов, который может подаваться на устройство визуализации, такое как дисплей 212, а также сохраняться в памяти 357 опорных изображений для последующего использования в межкадровом предсказании.
[53] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для последующего предсказания. После того как кодированное изображение полностью восстановлено и идентифицировано как опорное изображение (например, анализатором 320), текущее опорное изображение, сохраненное в памяти 358 текущих изображений, может стать частью памяти 357 опорных изображений, и обновленная память текущих изображений может перераспределяться перед началом восстановления следующего кодированного изображения.
[54] Видеодекодер 210 может выполнять операции декодирования в соответствии с заранее заданной технологией сжатия видеоданных, которая может документироваться в стандарте, таком как рекомендация Н.265 ITU-T. Кодированная видеопоследовательность может соответствовать синтаксису, указанному используемыми технологией или стандартом сжатия видеоданных, в том смысле, что она придерживается синтаксиса технологии или стандарта сжатия видеоданных, заданным в документе или стандарте по технологии сжатия видеоданных и, в особенности, в профильных документах этих стандартов. Кроме того, для соответствия некоторым технологиям или стандартам сжатия видеоданных сложность кодированных видеопоследовательностей может находиться в пределах, определенных уровнем технологии или стандарта сжатия видеоданных. В некоторых случаях уровни сложности ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и т.д. Уровни сложности могут также в некоторых случаях ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сообщаемыми в кодированной видеопоследовательности.
[55] Согласно примеру осуществления, приемник 310 может принимать дополнительные (избыточные) данные вместе с кодированными видеоданными. Дополнительные данные могут вставляться в кодированную видеопоследовательность(-и). Дополнительные данные могут использоваться видеодекодером 210 для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут предоставляться в виде, например, временных, пространственных или усовершенствованных уровней SNR, избыточных слайсов, избыточных изображений, кодов с прямым исправлением ошибок и т.д.
[56] На фиг. 4 показан пример функциональной блок-схемы видеокодера 203, связанного с источником 201 видеосигнала, в соответствии с примером раскрытия настоящего изобретения.
[57] Видеокодер 203 может содержать, например, кодер, который является кодером 430 источника, ядро 432 кодирования, (локальный) декодер 433, память 434 опорных изображений, предсказатель 435, передатчик 440, энтропийный кодер 445, контроллер 450 и канал 460.
[58] Кодер 203 может принимать отсчеты видеосигнала из источника 201 видеосигнала (не являющегося частью кодера), который может захватывать видеоизображение(-я), подлежащее кодированию кодером 203.
[59] Источник 201 видеосигнала может предоставлять исходные видеопоследовательности, подлежащие кодированию кодером 203, в виде цифрового видеопотока отсчетов, который может иметь любую подходящую битовую глубину (например: х бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В обслуживающей медийной системе источник 201 видеосигнала может представлять собой запоминающее устройство, на котором хранятся ранее подготовленные видеоданные. В системе видеоконференц-связи источник 203 видеосигнала может представлять собой камеру, которая захватывает локальную графическую информацию в форме видеопоследовательности. Видеоданные могут предоставляться в виде множества отдельных изображений, которые передают движение при последовательном просмотре. Непосредственно изображения могут быть организованы как пространственный массив пикселей, каждый из которых может содержать одну или более отсчетов, в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в этой области техники нетрудно понять взаимосвязь между пикселями и отсчетами. В последующем описании делается акцент на отсчеты.
[60] Согласно примеру осуществления, кодер 203 может кодировать и сжимать изображения исходной видеопоследовательности для преобразования ее в кодированную видеопоследовательность 443 в реальном времени или в соответствии с любыми другими ограничениями по времени, в зависимости от предъявляемых требований. Обеспечение подходящей скорости кодирования может являться одной из функций, выполняемых контроллером 450. Контроллер 450 может также управлять другими функциональными блоками, как описывается ниже, и может функционально соединяться с этими блоками. Для простоты эта связь не обозначена на чертеже. Параметры, устанавливаемые контроллером 450, могут включать в свой состав параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда для технологий оптимизации искажения от скорости передачи, …), размер изображения, уровень группы изображений (GOP), максимальный диапазон поиска вектора движения и т.д. Специалист в этой области техники может легко идентифицировать другие функции контроллера 450, в той мере, в какой они могут относиться к видеокодеру (203), оптимизированному для структуры определенной системы.
[61] Некоторые видеокодеры работают в режиме, который специалисту в этой области техники известен как "контур кодирования". В упрощенном описании контур кодирования может состоять из частей кодирования исходного кодера 430 (ответственного за создание символов на основе входного изображения, подлежащего кодированию, и опорного изображения(-ий)) и встроенного в кодер 203 (локального) декодера 433, который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также должен создавать, если сжатие между символами и кодированным битовым видеопотоком выполняется без потерь согласно определенным технологиям сжатия видеоданных. Этот восстановленный поток отсчетов может записываться в память 434 опорных изображений. Поскольку декодирование символьного потока приводит к точным битовым результатам независимо от местоположения декодера (локальное или удаленное), память опорных изображений также содержит точные биты между локальным кодером и удаленным кодером. Другими словами, подсистема предсказания кодера "видит" в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые должен "увидеть" декодер при использовании предсказания в процессе декодирования. Этот фундаментальный принцип синхронности опорных изображений (и результирующий сдвиг, если синхронность не может поддерживаться, например, из-за ошибок в канале) известен специалисту в этой области техники.
[62] Работа "локального" декодера 433, по существу, может быть аналогична функционированию "удаленного" декодера 210, который уже подробно описывался выше со ссылкой на фиг. 3. Однако, поскольку символы доступны и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером 445 и анализатором 320 может выполняться без потерь, часть энтропийного декодирования декодера 210, включая канал 312, приемник 310, буферную память 315 и анализатор 320, может быть не полностью реализована в локальном декодере 433.
[63] Здесь следует заметить, что любая технология декодирования, за исключением анализа/энтропийного декодирования, используемая в декодере, может по существу в идентичном функциональном виде потребоваться в соответствующем кодере. По этой причине при раскрытии предмета настоящего изобретения акцент делается на работе декодера. Описание технологий кодера может быть сокращено, поскольку они могут быть обратными по отношению к всесторонне описанным технологиям декодера. Более подробного описания, приводимого ниже, требуют только определенные области.
[64] Одной из функций кодера 430 источника может являться выполнение кодирования с предсказанием и компенсацией движения, при котором с предсказанием кодируются входные кадры со ссылкой на один или более ранее кодированных кадров видеопоследовательности, обозначаемых как "опорные кадры". Таким образом, ядро 432 кодирования кодирует разности между блоками пикселей входного кадра и блоками пикселей опорного кадра(-ов), которые могут выбираться в качестве ссылки (-ок) предсказания на входной кадр.
[65] Локальный видеодекодер 433 может декодировать кодированные видеоданные или кадры, которые могут обозначаться как опорные кадры, на основе символов, созданных исходным кодером 430. Операции ядра 432 кодирования могут преимущественно являться процессами с потерями. Если кодированные видеоданные декодируются в видеодекодере (не показанном на фиг. 4), то восстановленная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер 433 дублирует процессы декодирования, которые могут выполняться видеодекодером с опорными кадрами, которые могут сохраняться в памяти 434 опорных изображений. Таким образом, кодер 203 может локально сохранять копии восстановленных опорных кадров, имеющие то же содержимое, что и восстановленные опорные кадры, которые должны быть получены видеодекодером на дальнем конце (отсутствие ошибок при передаче).
[66] Предсказатель 435 может выполнять поиск с предсказанием для ядра 432 кодирования. То есть, для нового кадра, подлежащего кодированию, предсказатель 435 может осуществлять в памяти 434 опорных изображений поиск данных отсчетов (в качестве подходящих блоков опорных пикселей) или определенных метаданных, таких как векторы движения опорных изображений, формы блоков и т.д., которые могут служить в качестве подходящей ссылки предсказания для новых изображений. Предсказатель 435 может работать на основе блока отсчетов на блок пикселей для поиска подходящих ссылок предсказания. В некоторых случаях, определяемых результатами поиска, получаемыми предсказателем 435, входное изображение может характеризоваться ссылками предсказания, полученными на основе множества опорных изображений, хранимых в памяти 434 опорных изображений.
[67] Контроллер 450 может управлять операциями кодирования видеокодера 430, включая, например, установку параметров и параметров подгрупп, используемых для кодирования видеоданных.
[68] К выходным данным всех упомянутых выше функциональных блоков может применяться энтропийное кодирование в энтропийном кодере 445. Энтропийный кодер транслирует символы, сгенерированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия символов без потерь в соответствии с технологиями, известными специалисту в этой области техники, например, посредством кодирования по методу Хаффмена, кодирования с переменной длиной, арифметического кодирования.
[69] Передатчик 440 может буферизировать кодированную видеопоследовательность(-и), созданную энтропийным кодером 445, с целью подготовки ее для передачи по каналу 446 связи, который может представлять собой аппаратную/программную линию связи с запоминающим устройством, в котором должны храниться кодированные видеоданные. Передатчик 440 может объединять кодированные видеоданные из видеокодера 430 с другими данными, подлежащими передаче, например, с кодированными потоками звуковых и/или служебных данных (эти источники не показаны на чертеже).
[70] Контроллер 450 может управлять работой кодера 203. В процессе кодирования контроллер 450 может назначать каждому кодированному изображению определенный тип кодированного изображения, который может влиять на технологию кодирования, которая может применяться к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы: внутреннее изображение (Intra Picture, I-изображение), изображение с предсказанием (Predictive Picture, Р-изображение) или изображение с двунаправленным предсказанием (Bi-directionally Predictive Picture, В-изображение).
[71] Внутреннее изображение (I-изображение) может представлять собой изображение, которое может кодироваться и декодироваться без использования любого другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки предусматривают различные типы внутренних изображений, включая, например, изображения обновления независимого декодера (IDR, Independent Decoder Refresh). Специалист в этой области техники осведомлен об этих вариантах I-изображений, их применениях и признаках.
[72] Изображение с предсказанием (Р-изображение) может кодироваться и декодироваться с использованием внутреннего или взаимного предсказания с помощью не более чем одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[73] Двунаправленное изображение с предсказанием (В-изображение) может кодироваться и декодироваться с использованием внутреннего или взаимного предсказания с помощью не более чем двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Подобным образом, изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[74] Исходные изображения в общем случае могут пространственно разделяться на множество блоков отсчетов (например, блоков отсчетов 4×4, 8×8, 4×8 или 16×16) и кодироваться в режиме "блок за блоком". Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки как определяется назначением кодирования, применимого к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на уже кодированные блоки того же изображения (пространственное предсказание или внутреннее предсказание). Блоки пикселей Р-изображений могут кодироваться без предсказания, с использованием пространственного предсказания или временного предсказания со ссылкой на одно предварительно кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, с использованием пространственного предсказания или временного предсказания со ссылкой на одно или два предварительно кодированных опорных изображений.
[75] Видеокодер 430 может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом кодирования видеоданных, таким как рекомендация Н.265 ITU-T. В процессе функционирования видеокодер 430 может выполнять различные операции сжатия, включая операции кодирования с предсказанием, в которых используется временная или пространственная избыточность во входной видеопоследовательности. Кодированные видеоданные, таким образом, могут соответствовать синтаксису, указанному используемыми технологией или стандартом видеокодирования.
[76] Согласно примеру осуществления, передатчик 440 может передавать дополнительные данные вместе с кодированной видеоинформацией. Видеокодер 430 может включать такие данные в кодированную видеопоследовательность. Дополнительные данные могут включать в свой состав усовершенствованные временные/пространственные/SNPv уровни, другие виды избыточных данных, такие как избыточные изображения и слайсы, сообщения дополнительной усовершенствованной информации (SEI), фрагменты набора параметров применимости визуальной информации (VUI) и т.д.
[77] Кодеры и декодеры, согласно раскрытию настоящего изобретения, могут реализовывать управление буфером декодированных изображений с учетом такого буфера декодированных изображений (DPB, Decoded Picture Buffer), например, как память 357 опорных изображений и память 434 опорных изображений.
[78] В буфере декодированных изображений могут храниться декодированные изображения, которые должны быть доступны для ссылки с целью восстановления последующих изображений в процессе декодирования. Например, изображения, хранимые в буфере декодированных изображений, могут быть доступны для использования в качестве ссылок в процессе предсказания одного или более последующих изображений.
[79] Кодеры и декодеры согласно раскрытию настоящего изобретения могут создавать и/или использовать один или более списков опорных изображений (например, синтаксический элемент "RefPicList[i]"), в каждом из которых перечисляются изображения, хранящиеся в буфере декодированных изображений. Например, каждый индекс в списке опорных изображений может относиться к соответствующему изображению в буфере декодированных изображений. Список опорных изображений может, например, ссылаться на список опорных изображений, которые могут использоваться для взаимного предсказания.
[80] Ниже описываются некоторые аспекты управления буфером декодированных изображений в соответствии с раскрытием настоящего изобретения.
[81] Некоторые примеры раскрытия настоящего изобретения позволяют улучшить способ управления буфером декодированных изображений с помощью, например, настройки адаптации временного подуровня. Термин "подуровень" может ссылаться на временный масштабируемый уровень временного масштабируемого битового потока, который содержит блоки VCLNAL с конкретным значением переменной TemporalId и связанные блоки, не являющиеся блоками VCLNAL.
[82] Например, согласно примеру осуществления, блоки уровня абстракции сети (NAL), а именно: "TRAIL_NUT", "STSA_NUT", "RASL_NUT" и "RADL_NUT", переопределяются как ("TRAIL_N", "TRAIL_R"), ("STSA_N", "STSA_R"), ("RASL_N, RASL_R"), и ("RADL_N, RASL_R"), соответственно, для указания являются ли изображения в том же временном подуровне опорными изображениями. Изображения, отличные от опорных, с временным идентификатором, равным идентификатору текущего изображения, подлежащего декодированию, могут включаться в список RefPicList[i].
[83] Согласно примеру осуществления, sps_max_dec_pic_buffering_minus1 сообщается для каждого наибольшего временного идентификатора в наборе параметров последовательности (SPS, Sequence Parameter Set).
[84] Согласно примеру осуществления, список неиспользуемых опорных изображений для каждого наибольшего временного идентификатора сообщается в заголовке группы тайлов.
[85] Согласно примеру осуществления, все опорные изображения с временным идентификатором (например, синтаксический элемент "TemporalId"), большим указанного наибольшего временного идентификатора (например, синтаксический элемент "HighestTid"), помечаются как "неиспользуемые для ссылки", если значение указанного наибольшего временного идентификатора не равно "sps_max_sub_layers_minus1".
[86] В соответствии с некоторыми примерами раскрытия настоящего изобретения блоки NAL, не используемые для предсказания и восстановления других блоков NAL, следующих за ними в том же временном подуровне, могут, возможно, отбрасываться из буфера декодированных изображений, в зависимости от целевого битового потока или доступного битового потока сети.
[87] Например, на фиг. 5 показан алгоритм, иллюстрирующий, каким образом кодеры и декодеры, согласно раскрытию настоящего изобретения, могут обрабатывать соответствующие блоки NAL путем анализа и интерпретации типов блоков NAL. Как показано на фиг. 5, декодер (или кодер) может выполнять процесс 500. Процесс 500 может включать анализ заголовка блока NAL (501) и идентификацию типа блока NAL, представленного в текущий момент (502). Далее декодер (или кодер) может определить, используется ли блок NAL, представленный в текущий момент, для предсказания и восстановления последующих блоков NAL в том же временном подуровне (503). На основе определения декодер (или кодер) может восстановить/переслать последующий блок NAL с использованием блока NAL, представленного в текущий момент (504), или, в альтернативном варианте, отбросить блок NAL, представленный в текущий момент, из буфера декодированных изображений (505) без использования блока NAL для предсказания и восстановления последующего блока NAL. Например, если определяется, что блок NAL, представленный в текущий момент, используется для предсказания и восстановления последующих блоков NAL в том же временном подуровне, декодер (или кодер) может восстановить/переслать последующий блок NAL с использованием блока NAL, представленного в текущий момент (504) и сохраненного в буфере декодированных изображений. Если блок NAL, представленный в текущий момент, не используется для предсказания и восстановления последующего блока NAL, декодер (или кодер) может отбросить блок NAL, представленный в текущий момент, из буфера декодированных изображений (505) без использования блока NAL для предсказания и восстановления последующего блока NAL. Предсказание и восстановление последующего блока NAL может относиться к декодированию, использующему буфер декодированных изображений, текущего изображения посредством предсказания и восстановления текущего изображения.
[88] Примеры раскрытия настоящего изобретения могут использоваться отдельно или в сочетании друг с другом в любом порядке. Кроме того, каждый из способов, кодеров и декодеров, соответствующих раскрытию настоящего изобретения, могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном из примеров один или более процессоров исполняют программу, записанную на машиночитаемом носителе, для выполнения функций способов, кодеров и декодеров, описанных в рамках раскрытия настоящего изобретения.
[89] Как описано выше, типы блоков NAL, а именно: "TRAIL_NUT", "STSA_NUT", "RASL_NUT" и "RADL_NUT", разделяются и определяются как ("TRAIL_N", "TRAIL_R"), ("STSA_N", "STSA_R"), ("RASL_N, RASL_R"), и ("RADL_N, RASL_R") для указания не опорных изображений в том же подуровне. Соответственно, кодеры и декодеры, согласно раскрытию настоящего изобретения, могут использовать, например, блоки NAL, описанные ниже в таблице 1.
[90] Тип изображения подуровня может быть одним из представленных выше типов блока NAL. Если тип блока NAL изображения (например, синтаксический элемент "nal_unit_type") равен "TRAIL_N", "TSA_N", "STSA_N", "RADL_N" или "RASL_N", то изображение не является опорным в подуровне (SLNR). В противном случае, изображение является опорным в подуровне. Изображение SLNR может представлять собой изображение, содержащее отсчеты, которые не могут использоваться для взаимного предсказания в процессе декодирования последующих изображений того же подуровня в порядке декодирования. Опорное изображение подуровня может представлять собой изображение, содержащее отсчеты, которые могут использоваться для взаимного предсказания в процессе декодирования последующих изображений того же подуровня в порядке декодирования. Опорное изображение подуровня может также использоваться для взаимного предсказания в процессе декодирования последующих изображений более высокого подуровня в порядке декодирования.
[91] Путем предоставления блоков NAL (таких, например, как блоки VCLNAL), указывающих не опорные изображения, лишние блоки NAL могут отбрасываться для адаптации битовой скорости. Изображения, отличные от опорных, с временным идентификатором (указывающим временный подуровень, которому принадлежит изображение), равным идентификатору текущего изображения, могут включаться в список RefPicList[i]. В этом отношении, согласно примеру осуществления, не опорные изображения могут помечаться как "неиспользуемое опорное изображение" и могут сразу удаляться из буфера декодированных изображений.
[92] Например, согласно примеру осуществления, декодер (или кодер) может определять, является ли изображение изображением SLNR, на основе блока NAL, связанного с изображением, и если изображение является изображением SLNR, отмечать изображение как "неиспользуемое опорное изображение". Изображение, которое может сохраняться в буфере декодированных изображений, может отмечаться путем ввода идентификатора в элемент, соответствующий изображению в списке опорных изображений, и идентификатор, например, может быть следующим: "не опорное изображение" или "неиспользуемое опорное изображение". Декодер (или кодер) может выполнять такие операции на шаге 503 процесса 500, как показано на фиг. 5. Далее декодер (или кодер) может удалять изображение из буфера декодированных изображений на основе значения отметки изображения. Декодер (или кодер) может выполнять такую операцию в качестве части шага 505 процесса 500, как показано на фиг. 5.
[93] Согласно примеру осуществления, списки опорных изображений "RefPicList[0]" и "RefPicList[1]" могут формироваться следующим образом:
[94] Согласно примеру осуществления, для согласования битового потока могут применяться ограничения. Например, в кодере или декодере может применяться ограничение, заключающееся в том, что в RefPicList[0] или RefPicList[1] отсутствует активный элемент, для которого истинно одно или более следующих утверждений: (1) значение элемента равно "не опорное изображение"; (2) изображение является изображением SLNR и его идентификатор "TemporalId" равен идентификатору текущего изображения.
[95] Как описывалось выше, согласно примеру осуществления, синтаксический элемент "sps_max_dec_pic_buffering_minus1" может сигнализироваться для каждого наибольшего временного идентификатора (например, синтаксический элемент "HighestTid") в SPS.
[96] Значение переменной "HighestTid" может определяться внешними средствами, если они доступны. В противном случае, значение "HighestTid" может устанавливаться равным значению синтаксического элемента "sps_max_sub_layers_minus1". Затем декодер может оценить максимальный требуемый размер буфера декодированных изображений для заданного значения "HighestTid".
[97] Согласно примеру осуществления, SPS может включать типовой синтаксис, показанный в качестве примера в таблице 2.
[98] Значение "sps_max_dec_pic_buffering_minus1[i]" плюс 1 указывает максимальный требуемый размер буфера декодированных изображений для кодированной видеопоследовательности (CVS, Coded Video Sequence) в блоках буферов хранения изображений, если значение "HighestTid" равно i. Значение "sps_max_dec_pic_buffering_ minus1[i]" может находиться в диапазоне от 0 до "MaxDpbSize" - 1 включительно, где "MaxDpbSize" указывается в другом месте.
[99] Как описывается выше, в примере список неиспользуемых опорных изображений для каждого наибольшего временного идентификатора сообщается в заголовке группы тайлов.
[100] В зависимости от значения "HighestTid" некоторые опорные изображения каждого временного подуровня могут не использоваться в качестве ссылки для последующих изображений. Согласно примеру осуществления, неиспользуемые опорные изображения, соответствующие каждому значению "HighestTid" в заголовке группы тайлов, могут сообщаться явным образом. Путем явной сигнализации неиспользуемых опорных изображений, соответствующих каждому значению "HighestTid" в заголовке группы тайлов, неиспользуемые декодированные опорные изображения могут сразу удаляться из DPB.
[101] Согласно примеру осуществления, SPS может включать типовой синтаксис, показанный в качестве примера в таблице 3.
[102] Значение "unused_ref_pic_signaling_enabled_flag", равное 0, указывает на то, что "num_unused_ref_pic" и "delta_poc_unused_ref_pic[i]" отсутствуют в заголовке группы тайлов, и неявно определяется интервал времени удаления декодированного изображения из DPB. Значение "unused_ref_pic_signaling_enabled_flag", равное 1, указывает на то, что "num_unused_ref_pic" и "delta_poc_unused_ref_pic[i]" находятся в заголовке группы тайлов, и посредством анализа "delta_poc_unused_ref_pic[i]" явно определяется интервал времени удаления декодированного изображения из DPB.
[103] Согласно примеру осуществления, заголовок группы тайлов может включать типовой синтаксис, показанный в качестве примера в таблице 4.
[104] Значение "num_unused_ref_pic" указывает количество элементов для неиспользуемых опорных изображений. Если они отсутствуют, значение этого поля может устанавливаться равным 0.
15
[105] Значение "delta_poc_unused_ref_pic[i]" указывает абсолютную разность между порядковыми значениями счетчика текущего изображения и неиспользуемого декодированного опорного изображения, на которое ссылается i-й элемент. Значение "delta_poc_unused_ref_pic[i]" может находиться в диапазоне от 0 до 2-1 включительно.
[106] Если "unused_ref_pic_signaling_enabled_flag" равно 1, применимо следующее:
[107] Согласно примеру осуществления, декодер (или кодер) может определять, должно ли изображение отмечаться как "неиспользуемое опорное изображение", на основе представленного выше определения. Декодер (или кодер) могут выполнять такие операции на шаге 503 процесса 500, показанного на фиг. 5. Далее декодер (или кодер) может удалять изображение из буфера декодированных изображений на основе отмеченного изображения. Декодер (или кодер) может выполнять такую операцию в качестве части шага 505 процесса 500, показанного на фиг. 5.
[108] В соответствии с аспектом примера осуществления все опорные изображения с "Temporal Id", большим HighestTid, могут отмечаться как "неиспользуемые для ссылки", если значение "HighestTid" не равно "sps_max_sub_layers_minus1".
[109] Значение "HighestTid" может сразу заменяться внешними средствами. Процесс извлечения битового подпотока может применяться с использованием значения "HighestTid" в качестве входного.
[110] Например, процесс может вызываться один раз для изображения после декодирования заголовка группы тайлов и процесса декодирования для создания списка опорных изображений для группы тайлов, но перед декодированием данных группы тайлов. В результате выполнения процесса одно или более опорных изображений отмечаются в DPB как "неиспользуемое для ссылки" или "используемое для долгосрочной ссылки".
[111] Согласно примеру осуществления, декодированное изображение в DPB может отмечаться как "неиспользуемое для ссылки", "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки", но в заданный момент времени в процессе декодирования может использоваться только одна отметка из трех указанных. Назначение одной из этих отметок изображению может неявно привести к удалению другой из этих отметок, если это применимо. Если изображение, на которое осуществляется ссылка, отмечается как "используемое для ссылки", это совокупно рассматривается как ссылки на изображение, отмеченное как "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки" (но не обе отметки).
[112] Декодированное изображение в DPB может идентифицироваться (например, индексироваться) отдельно или сохраняться в DPB в соответствии со своей отметкой. Например, краткосрочные опорные изображения (STRP, Short Term Reference Picture) могут идентифицироваться своими значениями "PicOrderCntVal". Долгосрочные опорные изображения (LTRP, Long Term Reference Picture) могут идентифицироваться блоками LSB Log2(MaxLtPicOrderCntLsb) их значений "PicOrderCntVal".
[113] Если текущее изображение является изображением IRAP с флагом "NoRaslOutputFlag", равным 1, все опорные изображения, в настоящий момент находящиеся в DPB (если такие имеются), отмечаются как "неиспользуемые для ссылки". Значение "NoRaslOutputFlag", равное 1, может указывать на то, что декодер не выводит изображения RASL.
[114] Все опорные изображения с "TemporalId", большим HighestTid, отмечаются как "неиспользуемые для ссылки", если значение "HighestTid" не равно "sps_max_sub_layers_minus1".
[115] В примере, показанном на фиг. 6, декодеры и кодеры в соответствии с раскрытием настоящего изобретения могут выполнять процесс 600. Процесс 600 может выполняться на основе определения, что значение "HighestTid" не равно "sps_max_sub_layers_minus1". Как показано на фиг. 6, декодер (или кодер) может определять значение временного идентификатора опорного изображения (601). Например, первое опорное изображение перечисляется в DPB или в списке опорных изображений. Далее декодер (или кодер) может сравнивать значение временного идентификатор опорного изображения с заранее заданным значением (например, со значением "HighestTid") (602). Если значение временного идентификатора больше заранее заданного значения, декодер (или кодер) может отметить опорное изображение как "неиспользуемое для ссылки" (603). Согласно примеру осуществления, декодер (или кодер) может ставить метку в DPB или в списке опорных изображений.
[116] Независимо от того, превосходит ли значение временного идентификатора заранее заданное значение, декодер (или кодер) может затем определить, существует ли другое опорное изображение в DPB (или в списке опорных изображений), собственное значение временного идентификатора которого не сравнивалось с заранее заданным значением идентификатора на шаге 602 (604). Если декодер (или кодер) определяет, что существует другое опорное изображение в DPB (или в списке опорных изображений), собственное значение временного идентификатора которого не сравнивалось с заранее заданным значением идентификатора на шаге 602, декодер (или кодер) может повторить шаги 601-604 для всех опорных изображений в DPB (или в списке опорных изображений). После того как декодер (или кодер) определяет, что все опорные изображения в DPB (или в списке опорных изображений) имеют собственные соответствующие значения временного идентификатора, которые сравнивались с заранее заданным значением идентификатора на шаге 602, декодер (или кодер) может удалить опорные изображения, отмеченные как "неиспользуемые для ссылки" из DPB (605). Декодер (или кодер) может декодировать текущее изображение с использованием DPB с любым количеством изображений, удаленных из DPB (606).
[117] Согласно примерам осуществления, декодер (или кодер) может также выполнять другие функции для декодирования текущего изображения с использованием DPB. Например, декодеры (и кодеры) могут альтернативно или дополнительно применять следующие функции: (1) для каждого элемента LTRP в RefPicList[0] или RefPicList[1], если опорное изображение является изображением STRP, декодер (или кодер) может отметить изображение как "используемое для долгосрочной ссылки"; (2) декодер (или кодер) может отметить каждое опорное изображение в DPB, на которое не осуществляется ссылка любым из элементов в RefPicList[0] или RefPicList[1], как "неиспользуемое для ссылки".
[118] Согласно примеру осуществления, декодер (или кодер) может удалить все опорные изображения в DPB, которые отмечены как "неиспользуемые для ссылки", перед декодированием текущего изображения с использованием DPB или сохранить такие опорные изображения в DPB и проигнорировать опорные изображения при использовании DPB для декодирования текущего изображения.
[119] Согласно примерам осуществления, устройство 800 может содержать компьютерный программный код, хранящийся в памяти, при исполнении которого по меньшей мере один процессор выполняет функции декодеров и кодеров, описанные выше.
[120] Например, на фиг. 7 компьютерный программный код устройства 800 может содержать код 810 сохранения, код 820 определения, код 830 удаления и код 840 декодирования.
[121] Код 810 сохранения может быть сконфигурирован для выполнения по меньшей мере одним процессором сохранения предварительно декодированных изображений видеопотока в буфере декодированных изображений, включая множество первых изображений одного временного подуровня, при этом множество первых изображений включает по меньшей мере одно опорное изображение подуровня для предсказания текущего изображения видеопотока.
[122] Код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором выполнения определений с использованием одной или более технологий, описанных выше. Например, код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли изображение, входящее в состав множества первых изображений, не опорным изображением подуровня (SLNR). В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором идентификации типа блока изображения уровня абстракции сети (NAL) и определения, является ли изображение изображением SLNR, на основе идентифицированного типа блока NAL. В альтернативном варианте или дополнительно, код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня изображения больше заранее заданного значения (например, значения "HighestTid"). В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором сравнения заранее заданного значения (например, значения "HighestTid") со значением, соответствующим наибольшему номеру идентификации временного подуровня. В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение временного подуровня изображения(-й) больше заранее заданного значения (например, значения "HighestTid"), если заранее заданное значение определяется не равным значению, соответствующему наибольшему номеру идентификации временного подуровня. В альтернативном варианте или дополнительно код 820 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором определения, является ли значение текущего изображения изображением внутренней точки произвольного доступа (IRAP), и определения, указывает ли флаг на то, что отсутствует вывод пропущенного опережающего изображения произвольного доступа (RASL).
[123] Код 830 определения может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления одного или более изображений из буфера декодированных изображений в соответствии с одной или более технологий, описанных выше. Например, код 830 удаления может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления изображения SLNR из буфера декодированных изображений на основе определения изображения в качестве изображения SLNR. В альтернативном варианте или дополнительно код 830 удаления может быть сконфигурирован для выполнения по меньшей мере одним процессором удаления изображения(-ий) из буфера декодированных изображений на основе определения, что значение временного подуровня изображения(-ий) больше заранее заданного значения (например, значения "HighestTid"). Согласно примерам осуществления, код 830 удаления может конфигурироваться для выполнения по меньшей мере одним процессором удаления изображений из буфера декодированных изображений на основе идентификаторов (например, отмеченных как "неиспользуемые для ссылки" или "не опорные").
[124] Код 840 декодирования может быть сконфигурирован для выполнения по меньшей мере одним процессором декодирования текущего изображения с использованием буфера декодированных изображений в соответствии с одной или более технологий, описанных выше. Например, согласно примеру осуществления, код 840 декодирования содержит код предсказания, сконфигурированный для выполнения по меньшей мере одним процессором предсказания текущего изображения с использованием одного или более изображений из по меньшей мере одного опорного изображения подуровня, хранящегося в буфере декодированных изображений, после удаления изображений из буфера декодированных изображений (например, изображений SLNR или изображений, отмеченных таким идентификатором, как "неиспользуемые для ссылки" или "не опорные изображения").
[125] Согласно примерам осуществления, компьютерный программный код может также содержать код 850 предоставления идентификатора и код 860 формирования.
[126] Код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификаторов с использованием одной или более технологий, описанных выше. Идентификаторы могут указывать, например, что заданное изображение является "неиспользуемым для ссылки", "используемым для кратковременной ссылки" или "используемым для долговременной ссылки". Например, код 850 предоставления идентификатора может конфигурироваться для выполнения по меньшей мере одним процессором предоставления идентификатора (например, такой отметки как "неиспользуемое для ссылки" или "не опорное изображение") для изображения, определенного как изображение SLNR, на основе изображения, определяемого как изображение SLNR. В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора элемента списка опорных изображений, соответствующего изображению, определенному как изображение SLNR. В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором предоставления идентификатора изображения(-ий) на основе определения, что значение временного подуровня изображения(-ий) больше заранее заданного значения (например, значения "HighestTid"). В альтернативном варианте или дополнительно, код 850 предоставления идентификатора может быть сконфигурирован для выполнения по меньшей мере одним процессором установки идентификатора каждого опорного изображения, в настоящий момент хранящегося в DPB, указывающего, что каждое опорное изображение, хранимое в настоящий момент, должно удаляться из DPB в том случае, если текущее изображение определяется как изображение IRAP, и флаг указывает на то, что нет вывода изображения RASL.
[127] Код 860 формирования может быть сконфигурирован для выполнения по меньшей мере одним процессором формирования одного или более списков опорных изображений в соответствии с одной или более технологий, описанных выше. Например, код 860 формирования может быть сконфигурирован для выполнения по меньшей мере одним процессором формирования списка опорных изображений, содержащего элемент для одного или более изображений в DPB.
[128] Технологии, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций, которые физически хранятся на одном или более машиночитаемых носителях. Например, на фиг. 8 показана компьютерная система 900, подходящая для реализации определенных примеров раскрытия настоящего изобретения.
[129] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может ассемблироваться, компилироваться, компоноваться или с помощью подобных механизмов формировать код, содержащий команды, которые могут выполняться непосредственно или интерпретироваться, выполняться в виде микрокоманд и т.п. центральными процессорами компьютера (CPU, Central Processing Unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[130] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшеты, серверы, смартфоны, игровые устройства, устройства "Интернета вещей" и т.п.
[131] Компоненты, показанные на фиг. 8 для компьютерной системы 900, являются примерами, и не предполагается, что они каким-либо образом ограничивают объем использования или функциональность компьютерного программного обеспечения, реализующего примеры раскрытия настоящего изобретения. Кроме того, конфигурация компонентов не должна рассматриваться в плане какой-либо зависимости или требований, связанных с любым компонентом или с комбинацией компонентов, показанных в рамках неограниченного примера компьютерной системы 900.
[132] Компьютерная система 900 может включать устройства ввода пользовательского интерфейса. Такое устройство ввода пользовательского интерфейса может отвечать за ввод одним или более пользователями с помощью, например, тактильных средств ввода (таких как нажатие клавиш, сдвиг экрана, движения информационной перчаткой), звукового ввода (например, голосом, хлопками), визуального ввода (например, жестикуляцией), обонятельного ввода (не изображено на чертеже). Устройства пользовательского интерфейса также могут применяться для захвата определенной медийной информации, не обязательно непосредственно связанной с сознательным вводом пользователя, такой как звуковой сигнал (например, речь, музыка, звуковое сопровождение), изображения (например, отсканированные изображения, фотографии, полученные с помощью камеры получения неподвижных изображений), видеоинформация (такая как двумерное видео, трехмерное видео, включая стереоскопическое видео).
[133] Устройства пользовательского интерфейса могут включать в свой состав (на чертеже показано только одно устройство каждого типа) клавиатуру 901, мышь 902, сенсорную панель 903, сенсорный экран 910, информационную перчатку, джойстик 905, микрофон 906, сканер 907, камеру 908.
[134] Компьютерная система 900 может также включать в свой состав устройства вывода пользовательского интерфейса. Такие устройства вывода пользовательского интерфейса могут стимулировать восприятие одного или более пользователей с помощью, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода пользовательского интерфейса могут включать в свой состав устройства тактильного вывода (например, тактильную обратную связь через сенсорный экран 910, информационную перчатку или джойстик 905, но также могут существовать устройства тактильной обратной связи, которые не являются устройствами ввода). Например, такими устройствами могут быть устройства звукового вывода (такие как громкоговорители 909, наушники (не показаны на чертеже)), устройства визуального вывода (такие как экраны 910, включая экраны CRT, жидкокристаллические экраны, плазменные экраны, OLED-экраны, каждый из которых может быть оснащен средствами сенсорного ввода, средствами тактильной обратной связи, некоторые из которых могут выводить двумерные изображения или изображения с размерностью, большей, чем три измерения, через такие средства, как стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи и дымовые баки (не показаны на чертеже)) и принтеры (не показаны на чертеже).
[135] Компьютерная система 900 также может содержать доступные пользователю запоминающие устройства и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW 920 с CD/DVD или похожие носители 921, флеш-накопитель 922, съемный или несъемный жесткий диск 923, традиционные магнитные носители, такие как дискета (не показана на чертеже), специализированные устройства, основанные на ROM/ASIC/PLD, такие как аппаратные ключи (не показаны на чертеже) и т.п.
[136] Специалистам в этой области техники должно быть понятно, что термин "машиночитаемый носитель", используемый в связи с предметом раскрытия настоящего изобретения, не охватывает средства передачи, сигналы несущей или другие кратковременные сигналы.
[137] Компьютерная система 900 также может содержать интерфейс с одной или более сетями связи. Сети, например, могут быть беспроводными, проводными, оптическими. Сети также могут быть локальными, глобальными, городскими, транспортными и промышленными, реального времени, устойчивыми к задержке и т.д. Примеры сетей включают локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., телевизионные проводные или беспроводные глобальные цифровые сети, включая кабельное ТВ, спутниковое TV и наземное телевизионное вещание, транспортные и промышленные сети, включая CANBus и т.д. В определенных сетях обычно требуются внешние адаптеры сетевого интерфейса, которые подключаются к определенным портам данных общего назначения или к периферийным шинам 949 (такие, например, как USB-порты компьютерной системы 900); другие обычно интегрируются в ядро компьютерной системы 900 путем подключения к системной шине, как описано ниже (например, Ethernet-интерфейс в персональном компьютере или сотовый сетевой интерфейс в компьютерной системе смартфона). При использовании любой из этих сетей компьютерная система 900 может взаимодействовать с другими объектами. Такая связь может быть однонаправленной, только в приемном направлении (например, телевизионное вещание), однонаправленной, только в передающем направлении (например, CANbus с определенными устройствами CANbus), или двунаправленной, например, с другими компьютерными системами с использованием локальных или глобальных цифровых сетей. Такая связь может включать связь со средой 955 облачных вычислений. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсов, как описано выше.
[138] Вышеупомянутые пользовательские интерфейсные устройства, доступные пользователю запоминающие устройства и сетевые интерфейсы 954 могут подключаться к ядру 940 компьютерной системы 900.
[139] Ядро 940 может содержать один или более центральных процессоров (CPU) 941, графических процессоров (GPU) 942, специализированных программируемых процессорных блоков в виде программируемых пользователем вентильных матриц (FPGA, Field Programmable Gate Area) 943, аппаратных ускорителей 944 для определенных задач и т.д. Эти устройства совместно с постоянной памятью (ROM, Read-Only Memory) 945, оперативной памятью 946, внутренними массовыми запоминающими устройствами 947, такими как внутренние, не доступные пользователю жесткие диски, SSD и т.п., могут соединяться через системную шину 948. В некоторых компьютерных системах доступ к системной шине 948 может осуществляться в виде одного или более физических разъемов, позволяющих добавлять CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к системной шине 948 ядра, либо через периферийную шину 949. Архитектуры периферийной шины включают PCI, USB и т.п. Графический адаптер 950 может включаться в ядро 940.
[140] CPU 941, GPU 942, FPGA 943 и ускорители 944 могут исполнять определенные инструкции, которые в совокупности могут компенсировать недостатки упомянутого выше компьютерного кода. Компьютерный код может храниться в ROM 945 или RAM 946. Промежуточные данные могут также храниться в RAM 946, в то время как постоянные данные могут храниться, например, во внутреннем массовом запоминающем устройстве 947. Быстрая запись и извлечение данных из любых запоминающих устройств может выполняться с использованием кэш-памяти, которая может быть тесно связана с одним или более CPU 941, GPU 942, внутренними массовыми запоминающими устройствами 947, ROM 945, RAM 946 и т.п.
[141] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых на компьютере. Медийный и компьютерный код может быть специально разработан и составлен в целях раскрытия настоящего изобретения, или эти коды могут быть хорошо известны и доступны специалистам в области компьютерного программного обеспечения.
[142] Без ограничения приведенным примером, компьютерная система 900 определенной архитектуры и, в частности, ядро 940 может обеспечивать функциональность в результате выполнения процессором(-ами) (включая CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, реализованного на одном или более машиночитаемых носителях. Такой машиночитаемый носитель, как указывалось выше, может представлять собой носитель, связанный с соответствующим массовым запоминающим устройством, доступным пользователю, а также определенный носитель ядра 940, являющийся по своей природе долговременным носителем информации, таким как массовое запоминающее устройство 947, расположенное внутри ядра, или ROM 945. Программное обеспечение, реализующее различные примеры раскрытия настоящего изобретения, может храниться на таких устройствах и выполняться ядром 940. Машиночитаемый носитель может содержать одно или более запоминающих устройств или микросхем в соответствии с конкретными требованиями. Программное обеспечение может инициализировать ядро 940 и, в частности, процессоры, расположенные в нем (включая CPU, GPU, FPGA и т.п.), для выполнения конкретных процессов или частей конкретных процессов, приведенных в этом описании, включая определение структур данных в RAM 946 и модификацию таких структур данных в соответствии с процессами, определенными программным обеспечением. Кроме того, или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логических аппаратных решений или встроенных в схему (например, ускорителя 944) решений, которые могут работать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей конкретных процессов, приведенных в этом описании. Ссылка на программное обеспечение может охватывать логические схемы и наоборот, где это приемлемо. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную микросхему (IC, Integrated Circuit)), в которой хранится исполняемое программное обеспечение, схему, в которой реализованы исполняемые логические команды, или оба этих компонента, где это приемлемо. Раскрытие настоящего изобретения охватывает любую подходящую комбинацию аппаратуры и программного обеспечения.
[143] Хотя изобретение было описано посредством нескольких не ограничивающих его примеров осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты в объеме настоящего изобретения. Следует отметить, что специалисты в этой области техники способны разработать ряд систем и способов, которые, хотя явно не показаны и не описаны, но реализуют принципы раскрытия настоящего изобретения и, следовательно, соответствуют его сущности и объему.