Перекрестные ссылки на родственные заявки
Настоящая заявка на выдачу патента испрашивает приоритет международной заявки на выдачу патента PCT/EP2020/057229, поданной 17 марта 2020 г. Описание упомянутой выше заявки на выдачу патента включено сюда по ссылке во всей своей полноте.
Область техники, к которой относится изобретение
Варианты настоящей заявки, в общем, относятся к области обработки изображений и более конкретно к кодированию видео.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широчайшем спектре цифровых приложений видео, например, в цифровом телевизионном вещании (TV), в передаче видео через Интернет и через сети мобильной связи, в разговорных приложениях, работающих в реальном времени, таких как видео чаты, видео конференцсвязь, в области дисков DVD и дисков «Блю-рей» (Blu-ray), системах получения и редактирования видео контента и в записывающих видеокамерах для приложений обеспечения безопасности.
Количество данных видео, необходимых для описания даже относительно короткого видеоролика, может быть весьма существенным, что может привести к затруднениям при потоковой или иной передаче данных через сеть связи с ограниченной полосой пропускания. Поэтому данные видео обычно сжимают перед тем, как передавать их по современным телекоммуникационным сетям. Размер видеоролика может также быть проблемой, когда нужно сохранить этот видеоролик в запоминающем устройстве, поскольку объем ресурсов памяти может быть ограничен. Устройства сжатия видео часто используют программное обеспечение и/или оборудование в источнике видео для кодирования данных видео прежде их передачи или записи в запоминающем устройстве, уменьшая тем самым количество данных, необходимых для представления изображений цифрового видео. После этого, в пункте назначения принимают сжатые данные посредством устройства расширения (декомпрессии) видео, которое декодирует данные видео. В условиях ограниченности сетевых ресурсов и все возрастающей потребности в получении видео более высокого качества, желательно разработать усовершенствованные способы сжатия и расширения видео, которые позволили бы повысить коэффициент сжатия ценой незначительного или даже вообще отсутствующего ущерба для качества изображения.
Сущность изобретения
Варианты настоящей заявки предлагают аппаратуру и способы кодирования и декодирования в соответствии с независимыми пунктами формулы изобретения.
Упомянутые выше и другие цели настоящего изобретения достигаются сущностью независимых пунктов формулы изобретения. Другие формы реализации настоящего изобретения ясны из зависимых пунктов формулы, настоящего описания и чертежей.
Согласно первому аспекту настоящее изобретение относится к способу декодирования потока битов данных видео или изображения, осуществляемому устройством декодирования, этот способ содержит: определение, является ли текущий кодированный слой видео единственным слоем видео в потоке битов данных; когда определено (это определяется только тогда, например, когда это определяется), что текущий кодированный слой видео является единственным слоем в потоке битов данных (например, параметр sps_video_parameter_set_id равен 0), используют идентификатор единицы слоя сетевой абстракции (NAL) (например, идентификатор nuh_layer_id) текущего кодированного слоя видео в качестве идентификатора этого текущего кодированного слоя видео (например, идентификатора vps_layer_id).
Набор VPS (набор параметров видео) представляет собой набор параметров, являющийся опцией. Например, в случае однослойного потока битов данных набор VPS может и отсутствовать в таком потоке битов данных, поэтому идентификатор текущего кодированного слоя видео, который мог бы присутствовать в наборе VPS, может и отсутствовать в потоке битов данных, тогда использование идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео для однослойного потока битов данных будет гарантировать реализацию кодирования видео.
Согласно одному из вариантов реализации, этот способ может далее содержать прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора этого текущего кодированного слоя видео.
Согласно одному из вариантов реализации, способ может далее содержать, когда определено, что поток битов данных содержит несколько слоев (например, идентификатор sps_video_parameter_set_id больше 0), получение идентификатора текущего кодированного слоя видео посредством синтаксического анализа потока битов данных.
Такой способ декодирования потока битов данных видео гарантирует эффективную передачу в виде сигнализации идентификатора текущего кодированного слоя видео и сохраняет скорость передачи битов данных.
Согласно одному из вариантов реализации, идентификатор текущего кодированного слоя видео может быть использован для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и процедура прогнозирования этого текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео может содержать: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
Согласно одному из вариантов реализации, единица NAL текущего кодированного слоя видео может представлять собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
Использование идентификатора единицы VCL NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео для однослойного потока битов данных является более точным, поскольку единица не-VCL в однослойном потоке битов данных может иметь другой идентификатор слоя, если однослойный поток битов данных получают в результате выделения доли потока (подпотока) из потока битов данных.
Согласно одному из вариантов реализации, единица VCL NAL текущего кодированного слоя видео может представлять собой какую-либо одну единицу VCL NAL (или все единицы VCL NAL) текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно второму аспекту настоящее изобретение относится к способу кодирования потока битов данных видео или изображения, реализуемому устройством кодирования, где этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит: определение, является ли текущий кодированный слой видео единственным слоем в потоке битов данных; если определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных, использование идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео.
Согласно одному из вариантов реализации, способ может далее содержать прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
Согласно одному из вариантов реализации, способ может далее содержать, когда определено, что поток битов данных содержит несколько слоев (например, идентификатор sps_video_parameter_set_id больше 0), кодирование идентификатора текущего кодированного слоя видео и преобразование его в поток битов данных.
Согласно одному из вариантов реализации, идентификатор текущего кодированного слоя видео может быть использован для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и процедура прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео может содержать: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
Согласно одному из вариантов реализации, единица NAL текущего кодированного слоя видео может представлять собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно одному из вариантов реализации, единица VCL NAL текущего кодированного слоя видео может представлять собой какую-либо одну единицу VCL NAL (или все единицы VCL NAL) текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно третьему аспекту настоящее изобретение относится к аппаратуре для декодирования (кодированного) потока битов данных видео, где эта аппаратура содержит: решающий модуль, конфигурированный для определения, является ли текущий кодированный слой видео единственным слоем в потоке битов данных; модуль прогнозирования, конфигурированный для использования идентификатора единицы NAL (например, идентификатора nuh_layer_id) текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео (например, идентификатора vps_layer_id), когда определено (это определяется только тогда, например, когда это определяется), что текущий кодированный слой видео представляет собой единственный слой в потоке битов данных (например, идентификатор sps_video_parameter_set_id равен 0).
Согласно одному из вариантов реализации, модуль прогнозирования может быть далее конфигурирован для прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
Согласно одному из вариантов реализации, аппаратура может далее содержать получающий модуль, конфигурированный для получения идентификатора текущего кодированного слоя видео посредством синтаксического анализа потока битов данных, когда определено, что поток битов данных содержит несколько слоев (например, идентификатор sps_video_parameter_set_id больше 0).
Согласно одному из вариантов реализации, идентификатор текущего кодированного слоя видео может быть использован для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и модуль прогнозирования конфигурирован для прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео, где процедура прогнозирования может содержать: прогнозирование текущего среза с использованием одного или нескольких списков опорных изображений.
Согласно одному из вариантов реализации, единица NAL текущего кодированного слоя видео может представлять собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно одному из вариантов реализации, единица VCL NAL текущего кодированного слоя видео может представлять собой какую-либо одну из единиц VCL NAL (или все единицы VCL NAL) текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно четвертому аспекту настоящее изобретение относится к аппаратуре для кодирования потока битов данных видео, где эта аппаратура содержит: решающий модуль, конфигурированный для определения, является ли текущий кодированный слой видео единственным слоем в потоке битов данных; модуль прогнозирования, конфигурированный для использования идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео, когда определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных.
Согласно одному из вариантов реализации, модуль прогнозирования может быть далее конфигурирован для прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
Согласно одному из вариантов реализации, аппаратура может далее содержать модуль кодирования, конфигурированный для кодирования идентификатора текущего кодированного слоя видео и встраивания его в поток битов данных, когда определено, что этот поток битов данных содержит несколько слоев (например, идентификатор sps_video_parameter_set_id больше 0).
Согласно одному из вариантов реализации, идентификатор текущего кодированного слоя видео может быть использован для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и модуль прогнозирования может быть конфигурирован для прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео и может быть конфигурирован для прогнозирования текущего среза с использованием указанных одного или нескольких списков опорных изображений.
Согласно одному из вариантов реализации, единица NAL текущего кодированного слоя видео представляет собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
Согласно одному из вариантов реализации, единица VCL NAL текущего кодированного слоя видео представляет собой какую-либо одну из единиц VCL NAL (или все единицы VCL NAL) текущего кодированного слоя видео, присутствующую в потоке битов данных.
Способ согласно первому аспекту настоящего изобретения может быть осуществлен аппаратурой согласно третьему аспекту настоящего изобретения. Другие признаки и формы реализации аппаратуры согласно третьему аспекту настоящего изобретения соответствуют признакам и формам реализации способа согласно первому аспекту настоящего изобретения.
Способ согласно второму аспекту настоящего изобретения может быть осуществлен аппаратурой согласно четвертому аспекту настоящего изобретения. Другие признаки и формы реализации аппаратуры согласно четвертому аспекту настоящего изобретения соответствуют признакам и формам реализации способа согласно второму аспекту настоящего изобретения.
Рассмотренные выше способы могут быть реализованы в устройствах декодирования и кодирования, соответственно, здесь предлагается кодирующее устройство, содержащее процессорную схему для осуществления способа кодирования потока битов данных видео согласно какому-либо одному из приведенных выше примеров. Далее, предложено кодирующее устройство, содержащее один или несколько процессоров и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими процессорами и сохраняющий программы для выполнения этими процессорами, где эти программы, при выполнении их процессорами, конфигурируют кодирующее устройство для осуществления способа кодирования потока битов данных видео в соответствии с каким-либо одним из приведенных выше примеров. Аналогично, предложено декодирующее устройство, содержащее процессорную схему для осуществления способа декодирования потока битов данных видео согласно какому-либо одному из приведенных выше примеров, и декодирующее устройство, содержащее один или несколько процессоров и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими процессорами и сохраняющий программы для выполнения этими процессорами, где эти программы, при выполнении их процессорами, конфигурируют декодирующее устройство для осуществления способа декодирования потока битов данных видео в соответствии с каким-либо одним из приведенных выше примеров.
Более того, предложен компьютерный программный продукт, содержащий программный код для осуществления способа согласно какому-либо одному из рассмотренных выше примеров, при выполнении этого кода компьютером или процессором. Аналогично, предложен энергонезависимый читаемый компьютером носитель для хранения информации, с записанным на нем программным кодом, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ в соответствии с каким-либо одним из приведенных выше примеров.
Подробности одного или нескольких вариантов настоящего изобретения приведены на прилагаемых чертежах и в приведенном ниже описании. Другие признаки, цели и преимущества этого изобретения станут очевидны из указанного описания, чертежей и Формулы изобретения.
Краткое описание чертежей
В дальнейшем варианты настоящего изобретения рассмотрены более подробно со ссылками на прилагаемые чертежи, на которых:
фиг. 1A представляет блок-схему, показывающую пример системы кодирования видео, конфигурированной для осуществления вариантов настоящего изобретения;
фиг. 1B представляет блок-схему, показывающую другой пример системы кодирования видео, конфигурированной для осуществления вариантов настоящего изобретения;
фиг. 2 представляет блок-схему, показывающую пример структуры кодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;
фиг. 3 представляет блок-схему, показывающую пример структуры декодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;
фиг. 4 представляет блок-схему, иллюстрирующую пример аппаратуры кодирования или аппаратуры декодирования;
фиг. 5 представляет блок-схему, иллюстрирующую другой пример аппаратуры кодирования или аппаратуры декодирования;
фиг. 6 представляет пример порядка растрового сканирования;
фиг. 7 представляет пример плиток, срезов и фрагментов изображения;
фиг. 8 представляет пример слоев и подслоев при масштабированном кодировании видео;
фиг. 9 иллюстрирует способ декодирования потока битов данных видео согласно одному из вариантов;
фиг. 10 иллюстрирует способ кодирования потока битов данных видео согласно одному из вариантов;
фиг. 11 иллюстрирует способ декодирования потока битов данных видео согласно одному из вариантов;
фиг. 12 иллюстрирует способ кодирования потока битов данных видео согласно одному из вариантов;
фиг. 13 представляет блок-схему, показывающую пример структуры системы 3100 передачи контента, которая реализует сервис передачи контента;
фиг. 14 представляет блок-схему, показывающую структуру примера устройства терминала.
Подробное описание вариантов
В последующем описании, ссылки сделаны на прилагаемые чертежи, которые составляют часть настоящего описания и которые показывают, посредством иллюстрации, конкретные аспекты вариантов настоящего изобретения или конкретные аспекты, где могут быть использованы варианты настоящего изобретения. Понятно, что варианты настоящего изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на чертежах. Последующее подробное описание, поэтому, не следует рассматривать в ограничительном смысле, так что объем настоящего изобретения определен прилагаемой Формулой изобретения.
Например, понятно, что настоящее изобретение в сочетании с описываемым способом может также оставаться истинным для соответствующего устройства или системы, конфигурированных для осуществления этого способа, и наоборот. Например, если описаны один или несколько конкретных этапов способа, соответствующее устройство может содержать один или несколько модулей, например, функциональных модулей, для осуществления одного или нескольких этапов способа (например, один модуль, осуществляющий один или несколько этапов, либо несколько модулей, каждый их которых осуществляет один или несколько этапов), даже если такие один или несколько модулей не описаны в явном виде или не иллюстрированы в явном виде на чертежах. С другой стороны, например, если конкретная аппаратура описана на основе одного или нескольких модулей, например, функциональных модулей, соответствующий способ может содержать один этап для осуществления функциональных возможностей одного или нескольких модулей (например, один этап, осуществляющий функциональные возможности одного или нескольких модулей, либо несколько этапов, каждый из которых осуществляет функциональные возможности одного или нескольких модулей), даже если такие один или несколько модулей не описаны в явном виде или не иллюстрированы в явном виде на чертежах. Далее, понятно, что признаки разных примеров вариантов и/или аспектов, описываемых здесь, можно комбинировать одни с другими, если специально не указано иное.
Кодированием видео обычно называется обработка последовательности изображений, которые составляют видеоролик или последовательность видео. В области кодирования видео в качестве синонимов могут быть использованы термины «картинка», «кадр» или «изображение». Кодирование видео (или кодирование вообще) состоит из двух частей – собственно кодирования видео и декодирования видео. Кодирование видео осуществляется на стороне источника и обычно содержит обработку (например, путем сжатия) исходных изображений видео с целью уменьшить объем данных, требуемых для представления этих изображений видео (для более эффективного хранения и/или передачи). Декодирование видео осуществляется на стороне пункта назначения и обычно содержит обработку, обратную относительно обработки в кодирующем устройстве, для реконструкции изображений видео. Следует понимать, что варианты, ссылающиеся на «кодирование» изображений видео (или изображений вообще), относятся к собственно «кодированию» или «декодированию» изображений видео или соответствующих последовательностей видео. Комбинация кодирующей части и декодирующей части также называется кодеком (кодирование и декодирование) (CODEC (Coding and Decoding)).
В случае кодирования видео без потерь могут быть реконструированы первоначальные изображения видео, т.е. реконструированные изображения видео имеют такое же качество, как первоначальные изображения видео (в предположении, что нет потерь при передаче или других потерь данных в процессе хранения или передачи). В случае кодирования видео с потерями осуществляется дальнейшее сжатие, например, посредством квантования, с целью уменьшения объема данных, представляющих эти изображения видео, которые теперь не могут быть полностью реконструированы в декодирующем устройстве, т.е. качество реконструированных изображений видео оказывается ниже или хуже по сравнению с качеством первоначальных изображений видео.
Ряд стандартов кодирования видео принадлежит к группе «гибридных кодеков видео с потерями» (т.е. они комбинируют пространственное и временное прогнозирование в области отсчетов и двумерное (2D) кодирование с преобразованием для применения квантования в области преобразования). Каждое изображение в последовательности видео обычно разбивают на множество не накладывающихся один на другой блоков, и кодирование обычно осуществляется на уровне блоков. Другими словами, в кодирующем устройстве видео обычно обрабатывают, т.е. кодируют, на уровне блоков (блоков видео), например, с использованием пространственного (внутрикадрового) прогнозирования и/или временного (межкадрового) прогнозирования для генерации блока прогнозирования, вычитания этого блока прогнозирования текущего блока (блока, обрабатываемого/подлежащего обработке в текущий момент) для получения блока остатка, преобразования блока остатка и квантования блока остатка в области преобразования с целью уменьшения объема (сжатия) данных, подлежащих передаче, тогда как в декодирующем устройстве применяется обратная, по сравнению с кодирующим устройством, обработка кодированного или сжатого блока с целью реконструкции текущего блока для представления. Более того, кодирующее устройство дублирует контур обработки данных из декодирующего устройства, так что оба устройства будут генерировать идентичные результаты прогнозирования (например, внутрикадрового и межкадрового прогнозирования) и/или реконструкции для обработки, т.е. кодирования, последующих блоков.
В последующих вариантах системы 10 кодирования видео, кодирующее устройство 20 для видео и декодирующее устройство 30 для видео описаны на основе фиг. 1 – 3.
На фиг. 1A представлена упрощенная блок-схема, иллюстрирующая пример системы 10 кодирования, например, системы 10 кодирования видео (или для краткости системы 10 кодирования), которая может использовать технологию согласно настоящей заявке. Кодирующее устройство 20 для видео (или коротко кодирующее устройство 20) и декодирующее устройство 30 для видео (или коротко декодирующее устройство 30) из системы 10 кодирования видео представляют собой примеры устройств, которые могут быть конфигурированы для осуществления способов согласно различным примерам, описываемым в настоящей заявке.
Как показано на фиг. 1A, система 10 кодирования содержит устройство 12 источник, конфигурированное для передачи кодированных данных 21 изображения, например, устройству 14 адресату для декодирования этих кодированных данных 21 изображения.
Устройство 12 источник содержит кодирующее устройство 20 и может дополнительно, т.е. в качестве опции, содержать источник 16 изображения, предпроцессор (или предпроцессорный модуль) 18, например, предпроцессор 18 изображения и интерфейс 22 связи или модуль 22 связи.
Источник 16 изображения может содержать или представлять собой устройство какого-либо типа для захвата изображения, например видеокамеру для захвата (съемки) изображения реального мира, и/или устройство какого-либо типа для генерации изображения, например процессор компьютерной графики для генерации компьютерных анимированных изображений, либо другое устройство какого-либо типа для получения и/или передачи изображения реального мира, генерируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality (VR))) и/или какой-либо комбинации таких изображений (например, изображения дополненной реальности (augmented reality (AR))). Источник изображения может представлять собой запоминающее устройство или хранилище данных какого-либо типа, сохраняющее какие-либо из перечисленных выше изображений.
В отличие от предпроцессора 18 и обработки, осуществляемой предпроцессорным модулем 18, изображение или данные 17 изображения могут также называться необработанным изображением или необработанными данными 17 изображения.
Предпроцессор 18 конфигурирован для приема (необработанных) данных 17 изображения и осуществления предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, осуществляемая предпроцессором 18, может, например, содержать подрезку размеров, преобразование цветового формата (например, из формата RGB к формату YCbCr), цветовую коррекцию или подавление шумов. Можно понимать, что предпроцессорный модуль 18 может быть компонентом-опцией.
Кодирующее устройство 20 для видео конфигурировано для приема предварительно обработанных данных 19 изображения и генерации кодированных данных 21 изображения (другие подробности будут описаны ниже, например, на основе фиг. 2).
Интерфейс 22 связи в устройстве 12 источнике может быть конфигурирован для приема кодированных данных 21 изображения и для передачи кодированных данных 21 изображения (или какой-либо прошедшей дальнейшую обработку версии этих данных) по каналу 13 связи другому устройству, например, устройству 14 адресату или какому-либо другому устройству для сохранения или прямой реконструкции.
Устройство 14 адресат содержит декодирующее устройство 30 (например, декодирующее устройство 30 для видео), и может дополнительно, т.е. в качестве опции, содержать интерфейс 28 связи или модуль 28 связи, постпроцессор 32 (или постпроцессорный модуль 32) и дисплейное устройство 34.
Интерфейс 28 связи в устройстве 14 адресате конфигурирован для приема кодированных данных 21 изображения (или какой-либо прошедшей дополнительную обработку версии этих данных), например, прямо от устройства 12 источника или от какого-либо другого источника, например, хранилища данных, например, хранилища кодированных данных изображения, и передачи этих кодированных данных 21 изображения декодирующему устройству 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть конфигурированы для передачи или приема кодированных данных 21 изображения или других кодированных данных по прямой линии связи между устройством 12 источником и устройством 14 адресатом, например, по прямому проводному или беспроводному соединению, или через сеть связи какого-либо типа, например, проводную или беспроводную сеть связи, или какую-либо комбинацию таких сетей связи, или через частную или общедоступную сеть связи какого-либо типа, или через комбинацию какого-либо типа из таких сетей связи.
Интерфейс 22 связи может быть, например, конфигурирован для упаковки кодированных данных 21 изображения в подходящий формат, например, в пакеты, и/или для обработки кодированных данных изображения с использованием какого-либо типа кодирования для передачи, либо для обработки данных с целью передачи по линии связи или через сеть связи.
Интерфейс 28 связи, являющийся контрагентом для интерфейса 22 связи, может быть, например, конфигурирован для приема переданных данных и обработки этих переданных данных с использованием какого-либо типа декодирования передач, либо обработки и/или распаковки для получения кодированных данных 21 изображения.
Оба интерфейса – интерфейс 22 связи и интерфейс 28 связи, могут быть конфигурированы в качестве однонаправленных интерфейсов связи, как это обозначено стрелкой для канала 13 связи на фиг. 1A, где эта стрелка указывает от устройства 12 источника к устройству 14 адресату, либо двунаправленных интерфейсов связи, и могут быть конфигурированы, например, для передачи и приема сообщений, например, для установления соединения, для квитирования и обмена любой другой информацией относительно линии связи и/или передачи данных, например, передачи кодированных данных изображения.
Декодирующее устройство 30 конфигурировано для приема кодированных данных 21 изображения и передачи декодированных данных 31 изображения или декодированного изображения 31 (дальнейшие подробности будут описаны ниже, например, на основе фиг. 3 или фиг. 5).
Постпроцессор 32 в устройстве 14 адресате конфигурирован для постобработки декодированных данных 31 изображения (также называемых реконструированными данными изображения), например, декодированного изображения 31, для получения постобработанных данных 33 изображения, например, постобработанного изображения 33. Постобработка, осуществляемая постпроцессорным модулем 32, может содержать, например, преобразование цветового формата (например, от формата YCbCr к формату RGB), цветовую коррекцию, подрезку размеров или редискретизацию, либо какую-либо другую обработку, например, подготовку декодированных данных 31 изображения к представлению на дисплее, например, посредством дисплейного устройства 34.
Дисплейное устройство 34 в устройстве 14 адресате конфигурировано для приема постобработанных данных 33 изображения для представления изображения на дисплее, например, пользователю или зрителю. Дисплейное устройство 34 может представлять собой или содержать дисплей какого-либо типа для представления реконструированного изображения, например, встроенный или внешний дисплей или монитор. Таким дисплеем может быть, например, жидкокристаллический дисплей (liquid crystal display (LCD)), дисплей на органических светодиодах (organic light emitting diodes (OLED)), плазменный дисплей, проектор, микро-LED дисплей, жидкий кристалл на кремнии (liquid crystal on silicon (LCoS)), цифровой процессор световых сигналов (digital light processor (DLP)) или дисплей какого-либо другого типа.
Хотя на фиг. 1A устройство 12 источник и устройство 14 адресат показаны в качестве раздельных устройств, варианты этих устройств могут содержать устройство 12 источник или соответствующие функциональные компоненты и устройство 14 адресат или соответствующие функциональные компоненты. В таких вариантах устройство 12 источник или соответствующие функциональные компоненты и устройство 14 адресат или соответствующие функциональные компоненты могут быть реализованы с использованием одинаковых оборудования и/или программного обеспечения, либо разных оборудования и/или программного обеспечения, либо какой-либо комбинации оборудования и программного обеспечения.
Как будет понятно для специалистов в рассматриваемой области на основе настоящего описания, существование и (точное) распределение функциональных возможностей между различными модулями или функциональных возможностей в пределах устройства 12 источника и/или устройства 14 адресата, как показано на фиг. 1A, может варьироваться в зависимости от фактически используемых устройств и приложения.
Кодирующее устройство 20 (например, кодирующее устройство 20 для видео) или декодирующее устройство 30 (например, декодирующее устройство 30 для видео) или оба устройства – кодирующее устройство 20 и декодирующее устройство 30, могут быть реализованы посредством процессорной схемы, как показано на фиг. 1B, например, в виде одного или нескольких микропроцессоров, цифровых процессоров сигнала (digital signal processor (DSP)), специализированных интегральных схем (application-specific integrated circuit (ASIC)), программируемых пользователем вентильных матриц (field-programmable gate array (FPGA)), дискретных логических устройств, оборудования, специально предназначенного для кодирования видео, или какой-либо комбинации перечисленных компонентов. Кодирующее устройство 20 может быть реализовано посредством процессорной схемы 46 для осуществления различных модулей, как обсуждается в отношении кодирующего устройства 20, показанного на фиг. 2, и/или какой-либо системы или подсистемы кодирующего устройства, описываемого здесь. Декодирующее устройство 30 может быть реализовано посредством процессорной схемы 46 для осуществления различных модулей, как обсуждается в отношении декодирующего устройства 30, показанного на фиг. 3, и/или какой-либо системы или подсистемы декодирующего устройства, описываемого здесь. Процессорная схема может быть конфигурирована для осуществления различных операций, как обсуждается позднее. Как показано на фиг. 5, если способ реализуется частично в программном обеспечении, устройство может сохранять команды для программного обеспечения на подходящем энергонезависимом читаемом компьютером носителе для хранения информации, и может выполнять команды в оборудовании с использованием одного или нескольких процессоров для осуществления технологии согласно настоящему изобретению. Любое устройство – кодирующее устройство 20 для видео и/или декодирующее устройство 30 для видео, может быть интегрировано в качестве части комбинированного кодирующего устройства/декодирующего устройства (CODEC) в одном устройстве, как показано на фиг. 1B.
Устройство 12 источник и устройство 14 адресат может представлять собой какое-либо из широкого спектра устройств, включая ручные или стационарные устройства какого-либо типа, например, компьютеры типа ноутбук или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, видеокамеры, настольные компьютеры, приставки, телевизоры, дисплейные устройства, цифровые медиа плееры, видео игровые консоли, видео потоковые устройства (такие как серверы контентных сервисов или серверы доставки контента), вещательные приемники, вещательные передатчики или другие подобные устройства, которые могут использовать или не использовать операционную систему какого-либо типа. В некоторых случаях устройство 12 источник и устройство 14 адресат могут быть оборудованы для радиосвязи. Таким образом, устройство 12 источник и устройство 14 адресат могут представлять собой устройства радиосвязи.
В некоторых случаях система 10 кодирования видео, иллюстрируемая на фиг. 1A является просто примером, а технологии согласно настоящей заявке могут применяться к настройкам кодирования видео (например, кодирования видео или декодирования видео), что не обязательно содержит какую-либо передачу данных между кодирующими и декодирующими устройствами. В других примерах, данные извлекают из локального запоминающего устройства, передают в виде потока через сеть связи или выполняют другие подобные операции. Устройство для кодирования видео может кодировать и сохранять данные в запоминающем устройстве, и/или устройство для декодирования видео может вызывать и декодировать данные из запоминающего устройства. В некоторых примерах, кодирование и декодирование осуществляется устройствами, которые не поддерживают связь одно с другим, а просто кодируют данные и записывают их в запоминающем устройстве и/или вызывают и декодируют данные из запоминающего устройства.
Для удобства описания, варианты настоящего изобретения описаны здесь, например, со ссылками на стандарт высокоэффективного видео кодирования (High-Efficiency Video Coding (HEVC)) или на эталонное программное обеспечение для стандарта универсального видео кодирования (Versatile Video coding (VVC)), стандарта видео кодирования следующего поколения, разрабатываемого совместной рабочей группой по видео кодированию (Joint Collaboration Team on Video Coding (JCT-VC)), основанной группой экспертов по видео кодированию (Video Coding Experts Group (VCEG)) союза ITU-T и группой экспертов по кинематографии (Motion Picture Experts Group (MPEG)) организации ISO/IEC. Даже рядовой специалист в рассматриваемой области должен понимать, что варианты настоящего изобретения не ограничиваются стандартами кодирования HEVC или VVC.
Кодирующее устройство и способ кодирования
На фиг. 2 показана упрощенная блок-схема примера кодирующего устройства 20 для видео, конфигурированного для осуществления технологии согласно настоящему изобретению. В примере, показанном на фиг. 2, кодирующее устройство 20 для видео содержит вход 201 (или входной интерфейс 201), модуль 204 вычисления остатка, процессорный модуль 206 преобразования, модуль 208 квантования, модуль 210 обратного квантования и процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, модуль 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer (DPB)), модуль 260 выбора режима, модуль 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Модуль 260 выбора режима может содержать модуль 244 межкадрового прогнозирования, модуль 254 внутрикадрового прогнозирования и модуль 262 разбиения. Модуль 244 межкадрового прогнозирования может содержать модуль оценки движения и модуль компенсации движения (не показаны). Кодирующее устройство 20 для видео, как показано на фиг. 2, может также называться гибридным кодирующим устройством для видео или кодирующим устройством для видео в соответствии с гибридным видео кодеком.
Модуль 204 вычисления остатка, процессорный модуль 206 преобразования, модуль 208 квантования, модуль 260 выбора режима могут называться модулями, составляющими тракт прямой передачи сигнала в кодирующем устройстве 20, тогда как модуль 210 обратного квантования, процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (DPB), модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования могут называться модулями, составляющими тракт обратной передачи сигнала в кодирующем устройстве 20 для видео, где тракт обратной передачи сигнала в кодирующем устройстве 20 для видео соответствует тракту передачи сигнала в декодирующем устройстве (см. декодирующее устройство 30 для видео, показанное на фиг. 3). Модуль 210 обратного квантования, процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, контурный фильтр 220, буфер 230 декодированного изображения (DPB), модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования также называются модулями, составляющими «встроенное декодирующее устройство» в кодирующем устройстве 20 для видео.
Изображения и разбиение изображений (изображения и блоки)
Кодирующее устройство 20 может быть конфигурировано для приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, какого-либо изображения из последовательности изображений, составляющих видео или последовательность видео. Принятое изображение или данные изображения может также представлять собой предварительно обработанное изображение 19 (или данные 19 предварительно обработанного изображения). Для простоты, последующее описание ссылается на изображение 17. Это изображение 17 может также называться текущим изображением или изображением, подлежащим кодированию (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например от ранее кодированных и/или декодированных изображений в той же самой последовательности видео, т.е. в последовательности видео, которая содержит также текущее изображение).
Изображение (цифровое) представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности. Любой отсчет в массиве может также называться пикселем (pixel) (сокращенная форма от «элемента изображения» (picture element)) или pel. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых составляющих, т.е. изображение может быть представлено или может содержать три массива отсчетов. В формате или в цветовом пространстве RGB изображение содержит соответствующие массивы отсчетов красного, зеленого и синего цвета. Однако при кодировании видео каждый пиксель обычно представляют в формате или цветовом пространстве яркости и цветности, например, YCbCr, который содержит яркостную составляющую, обозначаемую буквой Y, (иногда вместо этого используется литера L) и две цветностные составляющие, обозначаемые как Cb и Cr. Яркостная (luminance) (или сокращенно luma) составляющая Y представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), тогда как две цветностные (chrominance) (или сокращенно chroma) составляющие Cb и Cr представляют составляющие хроматичности или информации о цвете. Соответственно, изображение в формате YCbCr содержит массив яркостных отсчетов, составленный из величин отсчетов яркостной составляющей (Y), и два массива отсчетов цветностных составляющих (Cb и Cr). Изображения в формате RGB могут быть преобразованы или трансформированы в формат YCbCr и наоборот, процедура также известна под названием цветовой трансформации или преобразования. Если изображение является одноцветным (черно-белым), это изображение может содержать только массив отсчетов яркостной составляющей. Соответственно, изображение может представлять собой, например, массив отсчетов яркостной составляющей в черно-белом или одноцветном формате, или массив отсчетов яркостной составляющей и два соответствующих массива отсчетов цветностных составляющих в цветовых форматах 4:2:0, 4:2:2 и 4:4:4.
Варианты кодирующего устройства 20 для видео могут содержать модуль разбиения изображения (не показан на фиг. 2), конфигурированный для разбиения изображения 17 на несколько (обычно не накладывающихся один на другой) блоков 203 изображения. Эти блоки могут также называться корневыми блоками, макроблоками (в стандарте кодирования H.264/AVC), либо блоками дерева кодирования (coding tree block (CTB)) или единицами дерева кодирования (coding tree unit (CTU)) (в стандартах кодирования H.265/HEVC и VVC). Модуль разбиения изображения может быть конфигурирован для использования одного и того же размера блоков для всех изображений последовательности видео и соответствующей сетки, определяющей размер блоков, либо для изменения размера блоков между изображениями, или подмножествами или группами изображений и разбиения каждого изображения на соответствующие блоки.
В дальнейших вариантах, кодирующее устройство для видео может быть конфигурировано для приема блока 203 изображения 17 напрямую, например, одного, нескольких или всех блоков, составляющих изображение 17. Этот блок 203 изображения может также называться текущим блоком изображения или блоком изображения, подлежащим кодированию.
Аналогично изображению 17, блок 203 изображения опять представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности (величины отсчетов), хотя размеры этого массива меньше размеров массива для изображения 17. Другими словами, блок 203 может содержать, например, один массив отсчетов (например, массив яркостной составляющей в случае черно-белого изображения 17, либо массив яркостной или цветностной составляющей в случае цветного изображения) или три массива отсчетов (например, массив яркостной составляющей и два массива цветностных составляющих в случае цветного изображения 17), либо какое-либо другое число массивов и/или другие типы массивов в зависимости от применяемого цветового формата. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер этого блока 203. Соответственно, блок может представлять собой, например, массив отсчетов размером MxN (M-столбцов на N-строк) или массив размером MxN коэффициентов преобразования.
Варианты кодирующего устройства 20 для видео, как показано на фиг. 2, могут быть конфигурированы для кодирования изображения 17 блок за блоком, например, для каждого блока 203 осуществляется кодирование и прогнозирование.
Варианты кодирующего устройства 20 для видео, как показано на фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием срезов (также называемых срезами видео), где изображение может быть разбито на или кодировано с использованием одного или нескольких срезов (обычно не накладывающихся один на другой), и каждый срез может содержать один или несколько блоков (например, единиц CTU).
Варианты кодирующего устройства 20 для видео, как показано на фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), где изображение может быть разбито на или кодировано с использованием одной или нескольких групп плиток (обычно не накладывающихся одна на другую), и каждая группа плиток может содержать, например, один или несколько блоков (например, единиц CTU) или одну или несколько плиток, где каждая плитка, например, может быть прямоугольной формы и может содержать один или несколько блоков (например, единиц CTU), например, полных или частичных блоков.
Вычисление остатка
Модуль 204 вычисления остатка может быть конфигурирован для вычисления блока 205 остатка (также называемого остатком 205) на основе блока 203 изображения и блока 265 прогнозирования (дальнейшие подробности относительно блока 265 прогнозирования будут приведены позднее), например, путем вычитания величин отсчетов блока 265 прогнозирования из величин отсчетов блока 203 изображения, отсчет за отсчетом (пиксель за пикселем) с целью получения блока 205 остатка в области отсчетов.
Преобразование
Процессорный модуль 206 преобразования может быть конфигурирован для применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform (DCT)) или дискретного синусного преобразования (discrete sine transform (DST)), к величинам отсчетов в блоке 205 остатка для получения коэффициентов 207 преобразования в области преобразования. Эти коэффициенты 207 преобразования могут также называться коэффициентами преобразования остатка и представлять блок 205 остатка в области преобразования.
Процессорный модуль 206 преобразования может быть конфигурирован для применения целочисленных аппроксимаций преобразований DCT/DST, так, как эти преобразования специфицированы для стандарта H.265/HEVC кодирования. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабированы с некоторым коэффициентом. Для сохранения нормы блока остатка, обрабатываемого посредством прямого и обратного преобразования, применяют дополнительные масштабные коэффициенты как часть процедуры преобразования. Эти масштабные коэффициенты обычно выбирают на основе определенных ограничений, таких как масштабные коэффициенты, являющиеся степенями двойки, для операций сдвига, битовая глубина (разрядность) коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.п. Конкретные масштабные коэффициенты, специфицируют, например, для обратного преобразования, например, посредством процессорного модуля 212 обратного преобразования (и соответствующего обратного преобразования, например, посредством процессорного модуля 312 обратного преобразования в декодирующем устройстве 30 для видео), и соответствующие масштабные коэффициенты для прямого преобразования, например, посредством процессорного модуля 206 преобразования, в кодирующем устройстве 20 могут быть специфицированы соответственно.
Варианты кодирующего устройства 20 для видео (соответственно, процессорный модуль 206 преобразования) могут быть конфигурированы для передачи на выход параметров преобразования, например, типа преобразования или преобразований, например, напрямую, либо в кодированном или в сжатом виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры преобразования для декодирования.
Квантование
Модуль 208 квантования может быть конфигурирован для квантования коэффициентов 207 преобразования с целью получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также называться квантованными коэффициентами 209 преобразования или квантованными коэффициентами 209 остатка.
Процедура квантования может уменьшить битовую глубину (разрядность), ассоциированную с некоторыми или со всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть в процессе квантования округлен в меньшую сторону до m-битового коэффициента преобразования, где n больше m. Степень квантования можно модифицировать путем регулирования параметра квантования (quantization parameter (QP)). Например, при скалярном квантовании можно применять различное масштабирование для достижения более «тонкого» или более грубого квантования. Шаг квантования меньшего размера соответствует более «тонкому» квантованию, тогда как шаг квантования большего размера соответствует более грубому квантованию. Применимый размер шага квантования может быть обозначен параметром квантования (QP). Этот параметр квантования может представлять собой, например, индекс к предварительно заданному множеству применимых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать «тонкому» квантованию (маленькие размеры шага квантования), а большие параметры кантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Процедура квантования может содержать деление на величину размера шага квантования, и соответствующая и/или обратная процедура – деквантование, например, посредством модуля 210 обратного квантования, может содержать умножение на величину размера шага квантования. Варианты согласно некоторым стандартам, например, стандарту кодирования HEVC, могут быть конфигурированы для использования параметра квантования с целью определения размера шага квантования. В общем случае, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной запятой для уравнения, содержащего операцию деления. Для квантования и деквантования могут быть введены дополнительные масштабные коэффициенты для восстановления нормы блока остатка, которая могла быть модифицирована вследствие использования масштабирования в аппроксимации с фиксированной запятой применительно к уравнению для размера шага квантования и параметра квантования. В одном из примеров реализации масштабирование обратного преобразования и деквантования может быть комбинировано. В альтернативном варианте могут быть использованы специализированные таблицы квантования, передаваемые в виде сигнализации от кодирующего устройства декодирующему устройству, например, в потоке битов данных. Квантование представляет собой операцию с потерями, причем потери растут при увеличении размера шага квантования.
Варианты кодирующего устройства 20 для видео (соответственно модуль 208 квантования) могут быть конфигурированы для передачи на выход параметров квантования (QP), например, напрямую, либо в кодированном виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и применить эти параметры квантования для декодирования.
Обратное квантование
Модуль 210 обратного квантования конфигурирован для применения процедуры обратного квантования относительно модуля 208 квантования к квантованным коэффициентам с целью получения деквантованных коэффициентов 211, например, посредством применения схемы, обратной схеме квантования, применяемой модулем 208 квантования, на основе или с использованием такого же размера шага квантования, как в модуле 208 квантования. Деквантованные коэффициенты 211 могут также называться деквантованными коэффициентами 211 остатка и соответствовать коэффициентам 207 преобразования – хотя они обычно не являются идентичными коэффициентам преобразования вследствие потерь при квантовании.
Обратное преобразование
Процессорный модуль 212 обратного преобразования конфигурирован для применения обратного преобразования относительно преобразования, применяемого процессорным модулем 206 преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST), либо другого обратного преобразования с цель получения реконструированного блока 213 остатка (или соответствующих деквантованных коэффициентов 213) в области отсчетов. Реконструированный блок 213 остатка может называться блоком 213 преобразования.
Реконструкция
Модуль 214 реконструкции (например, сумматор 214) конфигурирован для суммирования блока 213 преобразования (т.е. реконструированного блока 213 остатка) с блоком 265 прогнозирования с целью получения реконструированного блока 215 в области отсчетов, например, посредством суммирования – отсчет за отсчетом, – величин отсчетов реконструированного блока 213 остатка с величинами отсчетов блока 265 прогнозирования.
Фильтрация
Модуль 220 контурного фильтра (или коротко «контурный фильтр» 220) конфигурирован для фильтрации реконструированного блока 215 с целью получения фильтрованного блока 221, или в общем случае, для фильтрации реконструированных отсчетов с целью получения фильтрованных отсчетов. Модуль контурного фильтра конфигурирован, например, для сглаживания переходов между пикселями или повышения качества видео иным способом. Этот модуль 220 контурного фильтра может содержать один или несколько контурных фильтров, таких как деблокирующий фильтр, нелинейный фильтр с адаптивным смещением (sample-adaptive offset (SAO)), либо один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter (ALF)), фильтры для повышения резкости, сглаживающие фильтры или кооперативные фильтры, или какая-либо комбинация таких фильтров. Хотя модуль 220 контурного фильтра показан на фиг. 2 как внутриконтурный фильтр, в других конфигурациях этот модуль 220 контурного фильтра может быть реализован в качестве постконтурного фильтра. Фильтрованный блок 221 может также называться фильтрованным реконструированным блоком 221.
Варианты кодирующего устройства 20 для видео (соответственно модуль 220 контурного фильтра) могут быть конфигурированы для передачи на выход параметров контурного фильтра (таких как информация о нелинейном фильтре с адаптивным смещением (SAO)), например, напрямую, либо в кодированном виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 может принимать и применять те же самые параметры контурного фильтра или соответствующих контурных фильтров при декодировании.
Буфер декодированного изображения
Буфер 230 декодированного изображения (decoded picture buffer (DPB)) может представлять собой запоминающее устройство, сохраняющее опорные изображения, или, в общем случае, данные опорных изображений, для кодирования данных видео посредством кодирующего устройства 20 для видео. Буфер DPB 230 может быть образован какими-либо из широкого спектра запоминающих устройств, такими как динамическое запоминающее устройство с произвольной выборкой (динамическое ЗУПВ (dynamic random access memory (DRAM))), включая синхронное динамическое ЗУПВ (synchronous DRAM (SDRAM)), магниторезистивное ЗУПВ (magnetoresistive RAM (MRAM)), резистивное ЗУПВ (resistive RAM (RRAM)) или запоминающие устройства других типов. Буфер 230 декодированного изображения (DPB) может быть конфигурирован для сохранения одного или нескольких фильтрованных блоков 221. Буфер 230 декодированного изображения может быть далее конфигурирован для сохранения других ранее фильтрованных блоков, например, ранее реконструированных и фильтрованных блоков 221, из того же самого текущего изображения или из других изображений, например, ранее реконструированных изображений, и может предоставлять полные ранее реконструированные, т.е. декодированные, изображения (и соответствующие опорные блоки и отсчеты) и/или частично реконструированное текущее изображение (и соответствующие опорные блоки и отсчеты), например, для межкадрового прогнозирования. Буфер 230 декодированного изображения (DPB) может быть также конфигурирован для сохранения одного или нескольких нефильтрованных реконструированных блоков 215, либо вообще нефильтрованных реконструированных отсчетов, например, если реконструированный блок 215 не был фильтрован в модуле 220 контурного фильтра, или какой-либо другой дополнительно обработанной версии реконструированных блоков или отсчетов.
Выбор режима (разбиение и прогнозирование)
Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования и этот модуль 260 конфигурирован для приема или получения данных исходного изображения, например, исходного блока 203 (текущего блока 203 текущего изображения 17), и данных реконструированного изображения, например, фильтрованных и/или нефильтрованных реконструированных отсчетов или блоков того же самого (текущего) изображения и/или из одного или нескольких ранее декодированных изображений, например, из буфера 230 декодированного изображения или других буферов (например, буфера строк, не показанного). Эти реконструированные данные изображения используются в качестве опорных данных изображения для прогнозирования, например, межкадрового или внутрикадрового прогнозирования, с целью получения блока 265 прогнозирования или предиктора 265.
Модуль 260 выбора режима может быть конфигурирован для определения или выбора разбиения для режима прогнозирования текущего блока (включая отсутствие разбиения) и режима прогнозирования (например, режима внутрикадрового или межкадрового прогнозирования) и генерации соответствующего блока 265 прогнозирования, который используется для вычисления блока 205 остатка и для реконструкции указанного реконструированного блока 215.
Варианты модуля 260 выбора режима могут быть конфигурированы для выбора режима разбиения и прогнозирования (например, из совокупности режимов, поддерживаемых модулем 260 выбора режима или доступных для него), который обеспечивает наилучшее согласование или другими словами минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), либо минимальные сигнализационные издержки (минимальные сигнализационные издержки означают лучшее сжатие для передачи или хранения), либо этот режим учитывает или балансирует оба этих фактора – минимальный остаток и минимальные издержки. Модуль 260 выбора режима может быть конфигурирован для определения режима разбиения и прогнозирования на основе оптимизации соотношения между скоростью передачи данных и искажениями (rate distortion optimization (RDO)), т.е. для выбора режима прогнозирования, обеспечивающего минимальные искажения в функции скорости передачи данных. Термины типа «наилучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему «наилучшему», «минимальному», «оптимальному» и т.п., а могут также относиться к выполнению критерия завершения или выбора, типа того, что некая величина превосходит или падает ниже пороговой величины, или других ограничений, ведущих к потенциально «субоптимальному выбору», но позволяющих уменьшить сложность и сократить время обработки данных.
Другими словами, модуль 262 разбиения может быть конфигурирован для разбиения блока 203 на единицы разбиения или субблоки меньшего размера (которые снова образуют блоки), например, путем итеративного использования разбиения по схеме дерева квадратов (quad-tree (QT)), разбиения по схеме двоичного дерева (binary-tree (BT)) или разбиения по схеме троичного дерева (triple-tree (TT)) или какой-либо комбинации этих схем разбиения, и для осуществления, например, прогнозирования для каждой единицы разбиения блока или субблока, где процедура выбора режима содержит выбор структуры дерева для разбиваемого блока 203, и указанные режимы прогнозирования применяются к каждой из единиц разбиения блока или к каждому субблоку.
В последующем, разбиение (например, посредством модуля 260 разбиения) и прогнозирование (посредством модуля 244 межкадрового прогнозирования и модуля 254 внутрикадрового прогнозирования), осуществляемые посредством примера кодирующего устройства 20 для видео, будут пояснены более подробно.
Разбиение
Модуль 262 разбиения может разбивать (или разделять) текущий блок 203 на единицы разбиения меньшего размера, например, блоки меньшего размера квадратной или прямоугольной формы. Эти блоки меньшего размера (которые могут также называться субблоками) могут быть далее разбиты на единицы разбиения еще меньшего размера. Эти блоки меньшего размера (которые могут также называться субблоками) могут быть далее разделены на единицы разбиения еще меньшего размера. Это также называется разбиением по схеме дерева или разбиением по схеме иерархического дерева, где корневой блок, например, корневой блок на уровне дерева 0 (иерархический уровень 0, глубина 0) может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне дерева 1 (иерархический уровень 1, глубина 1), где эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например, уровня дерева 2 (иерархический уровень 2, глубина 2), и т.д. до тех пор, пока процедура разбиения не завершится, например, поскольку будет выполнен критерий завершения, например, будет достигнута максимальная глубина дерева или минимальный размер блоков. Блоки, которые не подвергнуты дальнейшему разбиению, также называются концевыми блоками или концевыми узлами («листьями») дерева. Дерево, использующее разбиение на две единицы разбиения, называется двоичным деревом (binary-tree (BT)), дерево, использующее разбиение на три единицы разбиения, называется троичным деревом (ternary-tree (TT)), и дерево, использующее разбиение на четыре единицы разбиения, называется деревом квадратов или четвертичным деревом (quad-tree (QT)).
Как отмечено ранее, термин «блок», как он используется здесь, может обозначать участок изображения, в частности, участок квадратной или прямоугольной формы. В соответствии, например, со стандартами кодирования HEVC и VVC, блок может представлять собой или соответствовать единице дерева кодирования (coding tree unit (CTU)), единице кодирования (coding unit (CU)), единице прогнозирования (prediction unit (PU)) и единице преобразования (transform unit (TU)) и/или соответствующим блокам, например, блоку дерева кодирования (coding tree block (CTB)), блоку кодирования (coding block (CB)), блоку преобразования (transform block (TB)) или блоку прогнозирования (prediction block (PB)).
Например, единица дерева кодирования (CTU) может представлять собой или содержать блок CTB отсчетов яркостной составляющей, два соответствующих блока CTB отсчетов цветностных составляющих изображения, имеющего три массива отсчетов, либо блок CTB отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок дерева кодирования (CTB) может представлять собой блок размером NxN отсчетов для некоторого значения N, так что разделение составляющей на блоки CTB является разбиением. Единица кодирования (CU) может представлять собой или содержать блок кодирования отсчетов яркостной составляющей, два соответствующих блока кодирования отсчетов цветностной составляющей изображения, содержащего три массива отсчетов, или блок кодирования отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок кодирования (CB) может представлять собой блок размером MxN отсчетов для некоторых значений M и N, так что разделение блока CTB на блоки кодирования является разбиением.
В ряде вариантов, например, согласно стандарту кодирования HEVC, единица дерева кодирования (CTU) может быть разбита на единицы CU с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, следует ли кодировать какую-то область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) прогнозирования, принимается на уровне единиц CU. Каждая единица CU может быть далее разбита на одну, две или четыре единицы PU в соответствии с типом разбиения на единицы PU. Внутри одной единицы PU применяется одна и та же процедура прогнозирования, а относящуюся к этому информацию передают декодирующему устройству на основе единиц PU. После получения блока остатка в результате применения процедуры прогнозирования на основе типа разбиения на единицы PU, единица CU может быть разбита на единицы преобразования (TU) в соответствии с другой структурой дерева квадратов, аналогичной дереву кодирования для единицы CU.
В некоторых вариантах, например, согласно самой последней разрабатываемой сегодня версии стандарта кодирования, которая называется универсальным видео кодированием (Versatile Video Coding (VVC)), для разбиения блока кодирования применяется, например, комбинированное разбиение по схеме дерева квадратов и двоичного дерева (Quad-tree and binary tree (QTBT)). В структуре блоков дерева QTBT единица CU может иметь либо квадратную, либо прямоугольную форму. Например, единицу дерева кодирования (CTU) сначала разбивают в структуре дерева квадратов. Концевые узлы («листья») дерева квадратов далее разбивают в соответствии со структурой двоичного дерева или троичного (тройного) дерева. Концевые узлы дерева разбиения называются единицами кодирования (CU), и эти сегменты используются в последующих процедурах прогнозирования и преобразования без какого-либо дальнейшего разбиения. Это означает, что единицы CU, PU и TU имеют одинаковый размер блоков в структуре с разбиением на блоки кодирования по схеме дерева QTBT. Параллельно со структурой разбиения на блоки по схеме дерева QTBT могут быть использованы несколько других видов разбиения, например, разбиение по схеме троичного дерева.
В одном из примеров, модуль 260 выбора режима в кодирующем устройстве 20 для видео может быть конфигурирован для осуществления какой-либо комбинации способов разбиения, описываемых здесь.
Как описано выше, кодирующее устройство 20 для видео конфигурировано для определения или выбора наилучшего или оптимального режима прогнозирования из множества (например, предварительно заданного) режимов прогнозирования. Это множество режимов прогнозирования может содержать, например, режимы внутрикадрового прогнозирования и/или режимы межкадрового прогнозирования.
Внутрикадровое прогнозирование
Множество режимов внутрикадрового прогнозирования может содержать 35 разных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования HEVC, либо может содержать 67 различных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования VVC.
Модуль 254 внутрикадрового прогнозирования конфигурирован для использования реконструированных отсчетов соседних блоков из одного и того же текущего изображения для генерации блока 265 при внутрикадровом прогнозировании в соответствии с одним из режимов внутрикадрового прогнозирования из множества режимов внутрикадрового прогнозирования.
Модуль 254 внутрикадрового прогнозирования (или вообще модуль 260 выбора режима) далее конфигурирован для передачи параметров внутрикадрового прогнозирования (или вообще информации, указывающей выбранный режим внутрикадрового прогнозирования для рассматриваемого блока) модулю 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры прогнозирования при декодировании.
Межкадровое прогнозирование
Множество (или возможные) режимов межкадрового прогнозирования зависит от доступных опорных изображений (т.е. предшествующих по меньшей мере частично декодированных изображений, например, сохраняемых в буфере DBP 230) и других параметров межкадрового прогнозирования, например, используется ли опорное изображение целиком или только его часть, например, область окна поиска вокруг области текущего блока, в опорном изображении для поиска наилучшим образом согласованного опорного блока, и/или, применяется ли интерполяция пикселей, например, интерполяция с точностью половины (half/semi-pel) пикселя, четверти пикселя и/или 1/16 пикселя или нет.
В дополнение к приведенным выше режимам прогнозирования могут быть применены режим пропуска и/или прямой режим.
Модуль 244 межкадрового прогнозирования может содержать модуль оценки движения (motion estimation (ME)) и модуль компенсации движения (motion compensation (MC)) (оба не показаны на фиг. 2). Модуль оценки движения может быть конфигурирован для приема или получения блока 203 изображения (текущий блок 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или нескольких ранее реконструированных блоков, например, реконструированных блоков одного или нескольких других/отличных ранее декодированных изображений 231, для оценки движения. Например, последовательность видео может содержать текущее изображение и ранее декодированные изображения 231, или другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или составлять последовательность изображений, образующую последовательность видео.
Кодирующее устройство 20 может, например, быть конфигурировано для выбора опорного блока из нескольких опорных блоков одного и того же или разных изображений из совокупности нескольких других изображений и передачи опорного изображения (или индекса опорного изображения) и/или сдвига (пространственного сдвига) между позицией (координаты x, y) рассматриваемого опорного блока и позицией текущего блока в качестве параметров межкадрового прогнозирования модулю оценки движения. Этот сдвиг также называется вектором движения (motion vector (MV)).
Модуль компенсации движения конфигурирован для получения, например, приема, параметра межкадрового прогнозирования и осуществления межкадрового прогнозирования на основе или с использованием этого параметра межкадрового прогнозирования для получения блока 265 при межкадровом прогнозировании. Процедура компенсации движения, осуществляемая модулем компенсации движения, может содержать выборку или генерацию блока прогнозирования на основе вектора движения/блочного вектора, определяемого в результате оценки движения, возможно осуществление интерполяции с точностью до долей пикселя. Процедура интерполяционной фильтрации может генерировать дополнительные пиксельные отсчеты на основе известных пиксельных отсчетов, тем самым потенциально увеличивая число блоков-кандидатов прогнозирования, которые могут быть использованы для кодирования блока изображения. После приема вектора движения для единицы PU текущего блока изображения, модуль компенсации движения может поместить блок прогнозирования, на который указывает вектор движения, в один из списков опорных изображений.
Модуль компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками и срезами видео для использования декодирующим устройством 30 для видео при декодировании блоков изображения в срезе видео. В дополнение или в качестве альтернативы для срезов и соответствующих синтаксических элементов можно генерировать или использовать группы плиток и/или плитки и соответствующие синтаксические элементы.
Энтропийное кодирование
Модуль 270 энтропийного кодирования конфигурирован для применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования в коде переменной длины (variable length coding (VLC)), схемы контекстно-адаптивного кодирования в коде переменной длины (context adaptive VLC (CAVLC)), схемы арифметического кодирования, бинаризации, схемы контекстно-адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding (CABAC)), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding (SBAC)), схемы энтропийного кодирования с разбиением интервалов вероятности (probability interval partitioning entropy (PIPE)) или других способов или технологии энтропийного кодирования) или обхода (без сжатия) к квантованным коэффициентам 209, параметрам межкадрового прогнозирования, параметрам внутрикадрового прогнозирования, параметрам контурного фильтра и/или другим синтаксическим элементам с целью получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного потока битов данных 21, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры для декодирования. Кодированный поток битов данных 21 может быть передан декодирующему устройству 30 для видео, или сохранен в запоминающем устройстве для передачи в более позднее время или вызова декодирующим устройством 30 для видео.
Для кодирования потока видео могут быть использованы и другие структурные вариации кодирующего устройства 20 для видео. Например, кодирующее устройство 20, работающее не на основе преобразования, может квантовать сигнал остатка непосредственно, без привлечения процессорного модуля 206 преобразования, для определенных блоков или кадров. В другом варианте реализации, кодирующее устройство 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, комбинированные в одном модуле.
Декодирующее устройство и способ декодирования
На фиг. 3 показан пример декодирующего устройства 30 для видео, конфигурированного для реализации технологии согласно настоящей заявке. Это декодирующее устройство 30 для видео конфигурировано для приема кодированных данных 21 изображения (например, кодированного потока битов данных 21), например, кодированных посредством кодирующего устройства 20, с целью получения декодированного изображения 331. Кодированные данные изображения или поток битов данных кодированного изображения содержит информацию для декодирования кодированных данных изображения, например, данных, представляющих блоки изображения из кодированного среза видео (и/или групп плиток или плиток) и ассоциированные синтаксические элементы.
В примере, показанном на фиг. 3, декодирующее устройство 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, процессорный модуль 312 обратного преобразования, модуль 314 реконструкции (например, сумматор 314), контурный фильтр 320, буфер 330 декодированного изображения (DBP), модуль 360 применения режима, модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования. Модуль 344 межкадрового прогнозирования может представлять собой или содержать модуль компенсации движения. Декодирующее устройство 30 для видео может, в некоторых примерах, осуществлять декодирующий проход, в общем обратный кодирующему проходу, описываемому применительно к кодирующему устройству 20 для видео, показанному на фиг. 2.
Как поясняется в отношении кодирующего устройства 20, модуль 210 обратного квантования, процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, контурный фильтр 220, буфер 230 декодированного изображения (DPB), модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования также называются модулями, составляющими «встроенное декодирующее устройство» в кодирующем устройстве 20 для видео. Соответственно, модуль 310 обратного квантования может быть идентичным по функциям модулю обратного квантования 210, процессорный модуль 312 обратного преобразования может быть идентичным по функциям процессорному модулю 212 обратного преобразования, модуль 314 реконструкции может быть идентичным по функциям модулю 214 реконструкции, контурный фильтр 320 может быть идентичным по функциям контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичным по функциям буферу 230 декодированного изображения. Поэтому пояснения, приведенные для соответствующих модулей и функций кодирующего устройства 20 для видео, подходят также к соответствующим модулям и функциям декодирующего устройства 30 для видео.
Энтропийное декодирование
Модуль 304 энтропийного декодирования конфигурирован для синтаксического анализа потока битов данных 21 (или вообще кодированных данных 21 изображения) и осуществления, например, энтропийного декодирования кодированных данных 21 изображения с целью получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг. 3), например, какие-либо или все параметры межкадрового прогнозирования (например, индекс опорного изображения и вектора движения), параметр внутрикадрового прогнозирования (например, режим внутрикадрового прогнозирования или индекс), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Модуль 304 энтропийного декодирования может быть конфигурирован для применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как это рассматривается в отношении модуля 270 энтропийного кодирования в кодирующем устройстве 20. Модуль 304 энтропийного декодирования может быть далее конфигурирован для предоставления параметров межкадрового прогнозирования, параметра внутрикадрового прогнозирования и/или других синтаксических элементов модулю 360 применения режима и других параметров другим модулям в декодирующем устройстве 30. Декодирующее устройство 30 для видео может принимать синтаксические элементы на уровне срезов видео и/или уровне блоков видео. В дополнение или в качестве альтернативы срезам и соответствующим синтаксическим элементам могут быть приняты и/или использованы группы плиток и/или плитки и соответствующие синтаксические элементы.
Обратное квантование
Модуль 310 обратного квантования может быть конфигурирован для приема параметров квантования (QP) (или, в общем, информации относительно обратного квантования) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, в модуле 304 энтропийного декодирования) и для применения, на основе этих параметров квантования, обратного квантования к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые могут также называться коэффициентами 311 преобразования. Процедура обратного квантования может содержать использование параметра квантования, найденного кодирующим устройством 20 для видео применительно к каждому блоку видео в срезе видео (либо в плитке или в группе плиток), с целью определения степени квантования, и, аналогично, степени обратного квантования, которое должно быть применено.
Обратное преобразование
Процессорный модуль 312 обратного преобразования может быть конфигурирован для приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311 с целью получения реконструированных блоков 213 остатка в области отсчетов. Эти реконструированные блоки 213 остатка могут также называться блоками 313 преобразования. Это преобразование может представлять собой обратное преобразование, например, обратное преобразование DCT, обратное преобразование DST, обратное целочисленное преобразование или концептуально аналогичную процедуру обратного преобразования. Процессорный модуль 312 обратного преобразования может быть далее конфигурирован для приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, в модуле 304 энтропийного декодирования) с целью определения преобразования, которое должно быть применено к деквантованным коэффициентам 311.
Реконструкция
Модуль 314 реконструкции (например, сумматор 314) может быть конфигурирован для суммирования реконструированного блока 313 остатка с блоком 365 прогнозирования с целью получения реконструированного блока 315 в области отсчетов, например, посредством суммирования величин отсчетов реконструированного блока 313 остатка и величин отсчетов блока 365 прогнозирования.
Фильтрация
Модуль 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) конфигурирован для фильтрации реконструированного блока 315 с целью получения фильтрованного блока 321, например, для сглаживания переходов пикселей, или для повышения качества видео иным образом. Этот модуль 320 контурного фильтра может содержать один или несколько контурных фильтров, таких как деблокирующий фильтр, нелинейный фильтр с адаптивным смещением (SAO), либо один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры для повышения резкости, сглаживающие фильтры или кооперативные фильтры, или какая-либо комбинация таких фильтров. Хотя модуль 320 контурного фильтра показан на фиг. 3 как внутриконтурный фильтр, в других конфигурациях такой модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированного изображения
Декодированные видео блоки 321 изображения затем сохраняют в буфере 330 декодированного изображения, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или передачи на выход соответствующего изображения для дисплея.
Декодирующее устройство 30 конфигурировано для передачи на выход декодированного изображения 311, например, через выход 312, для представления или для просмотра пользователем.
Прогнозирование
Модуль 344 межкадрового прогнозирования может быть по функциям идентичным модулю 244 межкадрового прогнозирования (в частности, модулю компенсации движения), и модуль 354 внутрикадрового прогнозирования может быть по функциям идентичным модулю 254 внутрикадрового прогнозирования и принимать решения о разбиении или разделении и осуществлять прогнозирование на основе такого разбиения и/или параметров прогнозирования или соответствующей информации, принятой из кодированных данных 21 изображения (например, в результате синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования). Модуль 360 применения режима может быть конфигурирован для осуществления прогнозирования (внутрикадрового или межкадрового прогнозирования) по блокам на основе реконструированных изображений, блоков или соответствующих отсчетов (фильтрованных или нефильтрованных) с целью получения блока 365 прогнозирования.
Когда срез видео кодирован как срез с внутрикадровым кодированием (I), модуль 354 внутрикадрового прогнозирования из модуля 360 применения режима конфигурирован для генерации блока 365 прогнозирования для блока изображения текущего среза видео на основе сообщенного режима внутрикадрового прогнозирования и данных из ранее декодированных блоков текущего изображения. Когда изображение видео кодировано в качестве среза с межкадровым кодированием (т.е. типа B или P), модуль 344 межкадрового прогнозирования (например, модуль компенсации движения) из модуля 360 применения режима конфигурирован для генерации блоков 365 прогнозирования для видео блока текущего среза видео на основе векторов движения и других синтаксических элементов, принятых от модуля 304 энтропийного декодирования. Для межкадрового прогнозирования, блоки прогнозирования можно генерировать на основе одного из опорных изображений в пределах одного из списков опорных изображений. Декодирующее устройство 30 для видео может строить списки опорных изображений, Список 0 и Список 1 (List 0 и List 1), с использованием способов построения по умолчанию на основе опорных изображений, сохраняемых в буфере DPB 330. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для срезов (например, срезов видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.
Модуль 360 применения режима конфигурирован для определения информации прогнозирования для видео блока текущего среза видео посредством синтаксического анализа векторов движения или относящейся к ним информации и других синтаксических элементов, и использует эту информацию прогнозирования для генерации блоков прогнозирования для текущего видео блока, декодируемого в настоящий момент. Например, модуль 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима прогнозирования (например, внутрикадрового или межкадрового прогнозирования), применяемого для кодирования видео блоков из среза видео, типа среза для межкадрового прогнозирования (например, B-срез, P-срез или GPB-срез), информации о построении для одного или нескольких списков опорных изображений для рассматриваемого среза, векторов движения для каждого видео блока, кодированного в режиме межкадрового прогнозирования, информации о статусе межкадрового прогнозирования для каждого видео блока, кодированного в режиме межкадрового прогнозирования, из рассматриваемого среза и другой информации, необходимой для декодирования видео блоков текущего среза видео. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для срезов (например, срезов видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.
Варианты декодирующего устройства 30 для видео, как показано на фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием срезов (также называемых срезами видео), где изображение может быть разбито на или декодировано с использованием одного или нескольких срезов (обычно не накладывающихся один на другой), и при этом каждый срез может содержать один или несколько блоков (например, единиц CTU).
Варианты декодирующего устройства 30 для видео, как показано на фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), где изображение может быть разбито на или декодировано с использованием одной или нескольких групп плиток (обычно не накладывающихся одни на другие), и каждая группа плиток может содержать, например, один или несколько блоков (например, единиц CTU) или одну или несколько плиток, где каждая плитка может, например, быть прямоугольной формы и может содержать один или несколько блоков (например, единиц CTU), например, полных или частичных блоков.
Для декодирования кодированных данных 21 изображения могут быть использованы и другие варианты декодирующего устройства 30 для видео. Например, это декодирующее устройство 30 может генерировать выходной поток видео без применения модуля 320 контурной фильтрации. Например, декодирующее устройство 30, построенное не на основе преобразования, может осуществлять обратное квантование сигнала остатка напрямую, без применения процессорного модуля 312 обратного преобразования для определенных блоков или кадров. В другом варианте реализации, декодирующее устройство 30 для видео может иметь модуль 310 обратного квантования и процессорный модуль 312 обратного преобразования, комбинированные в одном модуле.
Следует понимать, что в кодирующем устройстве 20 и в декодирующем устройстве 30, результат обработки данных на любом текущем этапе может быть далее обработан и затем передан на следующий этап. Например, после интерполяционной фильтрации, определения вектора движения или контурной фильтрации над результатом такой интерполяционной фильтрации, определения вектора движения или контурной фильтрации может быть выполнена дополнительная операция, такая как усечение или сдвиг.
Следует отметить, что дополнительные операции могут быть применены к найденным векторам движения для текущего блока (включая, но не ограничиваясь, векторы движения контрольных точек для аффинного режима, векторы движения субблоков в аффинном и планарном режимах, в режимах прогнозирования ATMVP, временные векторы движения и т.п.). Например, величина вектора движения ограничена заданным диапазоном в соответствии с представляющими ее битами. Если представляющие биты для вектора движения определены параметром bitDepth, тогда указанный диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где символ “^” обозначает возведение в степень. Например, если параметр bitDepth установлен равным 16, диапазон составляет -32768 ~ 32767; если параметр bitDepth установлен равным 18, диапазон составляет -131072~131071. Например, величина найденного в результате определения вектора движения (например, векторов MV для четырех субблоков размером 4x4 каждый в одном блоке размером 8x8) ограничена таким образом, что максимальная величина разности между целыми частями векторов MV четырех субблоков размером 4x4 не превышает N пикселей, например, не более 1 пикселя. Здесь предлагаются два способа для ограничения векторов движения в соответствии с параметром bitDepth.
Способ 1: удаление самого старшего бита MSB (most significant bit) переполнения посредством следующих операций
ux= ( mvx+2bitDepth ) % 2bitDepth … (1)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux … (2)
uy= ( mvy+2bitDepth ) % 2bitDepth … (3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (4)
где mvx – горизонтальная составляющая вектора движения для блока или субблока изображения, mvy – вертикальная составляющая вектора движения для блока или субблока изображения, и ux и uy обозначают промежуточные величины;
Например, если величина mvx равна -32769, после применения формул (1) и (2), результирующая величина будет равна 32767. В компьютерной системе десятичные числа сохраняют в виде двоичного дополнительного кода. Двоичный дополнительный код для числа -32769 имеет вид 1,0111,1111,1111,1111 (17 бит), затем старший бит MSB отбрасывают, так что результирующий двоичный дополнительный код приобретает вид 0111,1111,1111,1111 (десятичное число равно 32767), что совпадает с результатом применения формул (1) и (2).
ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth … (5)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux … (6)
uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth … (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (8)
Эти операции могут быть применены в процессе суммирования mvp и mvd, как показывают формулы с (5) по (8).
Способ 2: удаление самого старшего бита MSB переполнения посредством усечения величины
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx – горизонтальная составляющая вектора движения для блока или субблока изображения, vy - вертикальная составляющая вектора движения для блока или субблока изображения; x, y и z – представляют собой соответственно три входные величины процедуры усечения вектора MV, а функция Clip3 определена следующим образом:
На фиг. 4 представлена упрощенная схема устройства 400 для декодирования видео согласно одному из вариантов настоящего изобретения. Это устройство 400 для декодирования видео подходит для осуществления рассматриваемых здесь вариантов. В одном из вариантов, устройство 400 для декодирования видео может представлять собой декодирующее устройство, такое как декодирующее устройство 30 для видео, показанное на фиг. 1A, или кодирующее устройство, такое как кодирующее устройство 20 для видео, показанное на фиг. 1A.
Это устройство 400 для декодирования видео содержит входящие порты 410 (или входные порты 410) и приемные модули (Rx) 420 для приема данных; процессор, логический модуль или центральный процессор (central processing unit (CPU)) 430 для обработки данных; передающие модули (Tx) 440 и исходящие порты 450 (или выходные порты 450) для передачи данных; и запоминающее устройство 460 для сохранения данных. Это устройство 400 для декодирования видео может также содержать оптоэлектрические (optical-to-electrical (OE)) компоненты и электрооптические (electrical-to-optical (EO)) компоненты, соединенные с входящими портами 410, приемными модулями 420, передающими модулями 440 и исходящими портами 450 для вывода или ввода оптических или электрических сигналов.
Процессор 430 реализован посредством аппаратуры и программного обеспечения. Процессор 430 может быть реализован в виде одного или нескольких кристаллов интегральных схем процессоров CPU, ядер (например, в качестве многоядерного процессора), матриц FPGA, схем ASIC и процессоров DSP. Этот процессор 430 осуществляет связь с входящими портами 410, приемными модулями 420, передающими модулями 440, исходящими портами 450 и запоминающим устройством 460. Процессор 430 содержит кодирующий модуль 470. Этот кодирующий модуль 470 реализует предлагаемые здесь варианты, рассмотренные выше. Например, кодирующий модуль 470 реализует, обрабатывает, готовит или обеспечивает различные операции кодирования. Введение в процессор кодирующего модуля 470, таким образом, создает значительное усовершенствование функциональных возможностей устройства 400 для декодирования видео и осуществляет трансформацию устройства 400 для декодирования видео в другое состояние. В качестве альтернативы, кодирующий модуль 470 реализуется в виде команд, сохраняемых в запоминающем устройстве 460 и выполняемых процессором 430.
Запоминающее устройство 460 может содержать один или несколько дисков, накопителей на магнитной ленте и твердотельных накопителей (дисков) и может быть использовано в качестве устройства для хранения данных с переполнением, с целью сохранения программ, когда такие программы выбраны для выполнения, и с целью сохранения команд и данных, считываемых в процессе выполнения программ. Запоминающее устройство 460 может быть, например, энергозависимым и/или энергонезависимым и может представлять собой постоянное запоминающее устройство (ПЗУ (read-only memory (ROM))), запоминающее устройство с произвольной выборкой (ЗУПВ (random access memory (RAM))), троичное ассоциативное запоминающее устройство (ternary content-addressable memory (TCAM)) и/или статическое ЗУПВ (static random-access memory (SRAM)).
На фиг. 5 представлена упрощенная блок-схема аппаратуры 500, которая может быть использована в качестве одного из устройств – устройства 12 источника или устройства 14 адресата, или обоих этих устройств, показанных на фиг. 1, согласно одному из примеров вариантов.
Процессор 502 в аппаратуре 500 может представлять собой центральный процессор. В качестве альтернативы, процессор 502 может представлять собой устройство какого-либо другого типа, или несколько устройств, способных манипулировать или обрабатывать информацию, как существующих сегодня, так и разрабатываемых. Хотя, предлагаемые варианты реализации могут быть практически осуществлены с использованием единственного процессора, например, процессора 502, как это показано на схеме, использование нескольких (больше одного) процессоров может позволить добиться выигрыша по скорости и эффективности.
Запоминающее устройство 504 в устройстве 500 может представлять собой в различных вариантах реализации постоянное запоминающее устройство (ПЗУ (ROM)) или запоминающее устройство с произвольной выборкой (ЗУПВ (RAM)). В качестве запоминающего устройства 504 может быть использовано устройство любого подходящего типа для хранения информации. Запоминающее устройство 504 может содержать код и данные 506, доступ к которым процессор 502 осуществляет с использованием шины 512. Запоминающее устройство 504 может далее содержать операционную систему 508 и прикладные программы 510, среди этих прикладных программ 510 имеется по меньшей мере одна программа, позволяющая процессору 502 осуществлять способы, описываемые здесь. Например, совокупность прикладных программ 510 может содержать приложения с 1 по N, среди которых далее имеется приложение для кодирования видео, осуществляющее рассматриваемые здесь способы.
Аппаратура 500 может также содержать одно или несколько выходных устройств, таких как дисплей 518. Дисплей 518 может представлять собой, в одном из примеров, сенсорный дисплей, комбинирующий дисплей с чувствительным к прикосновению (сенсорным) элементом, оперируемым для восприятия входных прикосновений. Дисплей 518 может быть связан с процессором 502 через шину 512.
Хотя шина 512 аппаратуры 500 показана здесь в виде единственной шины, эта шина 512 может быть составлена из нескольких шин. Далее, вторичное запоминающее устройство 514 может быть напрямую соединено с другими компонентами аппаратуры 500, либо оно может быть доступно через сеть связи и может содержать один интегральный модуль, такой как карта памяти, или несколько модулей, таких как несколько карт памяти. Аппаратура 500 может, таким образом, быть реализована в самом широком спектре конфигураций.
Базовая информация
Наборы параметров
Наборы параметров принципиально похожи и имеют одинаковые основные проектные цели – а именно, эффективность скорости передачи данных, устойчивость против ошибки и реализацию интерфейсов системного уровня. В стандарте кодирования HEVC (H.265) создана иерархическая структура наборов параметров, содержащая набор параметров видео (Video Parameter Set (VPS)), набор параметров последовательности (Sequence Parameter Set (SPS)) и набор параметров изображения (Picture Parameter Set (PPS)), которые аналогичны соответствующим «контрагентам» в стандартах кодирования AVC и VVC. Каждый срез обращается к одному активному набору PPS, SPS и VPS для доступа к информации, используемой для декодирования этого среза. Набор PPS содержит информацию, применяемую ко всем срезам изображения, так что все срезы в изображении должны обращаться к одному и тому же набору PPS. Срезы в разных изображениях также имеют право обращаться к одному и тому же набору PPS. Аналогично, набор SPS содержит информацию, которая применяется ко всем изображениям в одной и той же кодированной последовательности видео.
Хотя набор PPS может быть различным для отдельных изображений, обычно многие или все изображения в кодированной последовательности видео обращаются к одному и тому же набору PPS. Повторное использование наборов параметров является эффективным с точки зрения скорости передачи данных, поскольку избегает необходимости передавать совместно используемую информацию несколько раз. Это также обладает устойчивостью против потерь, поскольку позволяет содержание набора параметров передавать по какому-то более надежному внешнему каналу связи, либо повторять его часто в потоке битов данных, чтобы обеспечить, что информация не будет потеряна.
Набор параметров последовательности (SPS): Синтаксическая структура, содержащая синтаксические элементы, применимые к нулю или нескольким полным последовательностям CLVS, как это определено содержанием синтаксического элемента, находящегося в наборе PPS, к которому обращается синтаксический элемент, находящийся в каждом заголовке изображения.
Масштабированное кодирование видео, слой и набор параметров видео (Video Parameter Set (VPS))
Масштабированное кодирование видео предлагает механизм для кодирования видео в виде нескольких слоев, где каждый слой является представлением со своим, отличным от других слоев качеством одной и той же сцены видео. Базовый слой (base layer (BL)) является представлением самого низкого качества. Один или несколько усилительных слоев (enhancement layer (EL)) могут быть кодированы со ссылками на слои более низкого уровня для реализации видео повышенного качества. Результатом декодирования только подмножества слоев из потока битов данных видео, кодированного посредством масштабированного кодирования, является видео более низкого, но все же приемлемого качества по сравнению с тем, какое было бы получено в результате декодирования полного потока битов данных. Это позволяет добиться более плавной деградации качества изображения по сравнению с декодированием немасштабированного потока битов данных видео, для которого снижение скорости передачи битов данных обычно вызывает более резкое падение качества видео, так что часто это качество видео быстро становится неприемлемым для просмотра.
В масштабируемой последовательности видео присутствуют несколько типов масштабируемости, включая временную масштабируемость, пространственную масштабируемость и масштабируемость по качеству. На фиг. 8 представлен пример, иллюстрирующий и пространственную масштабируемость, и временную масштабируемость. На фиг. 8 имеются два слоя, кодированные с разными разрешениями. Слой BL имеет более низкое разрешение, тогда как слой EL имеет более высокое разрешение, и пространственная масштабируемость достигается за счет того, что декодирующее устройство может декодировать либо какой-то один из слоев BL и EL, либо оба слоя.
В дополнение к пространственной масштабируемости в слое кодирования достигается временная масштабируемость. В этом примере каждый слой кодирования разделен на два временных подслоя, маркированные временными идентификаторами (ID) 0 и 1, соответственно. Временная масштабируемость достигается за счет того, что декодирующее устройство может декодировать либо временной подслой 0 (с временным идентификатором ID равным 0), либо оба подслоя 0 и 1.
Изображениям в разных слоях присваивают разные идентификаторы слоев, т.е. разные синтаксические элементы nuh_layer_id. Последовательность кодированных слоев видео (coded layer video sequence (CLVS)) представляет собой последовательность изображений с одинаковой величиной идентификатора nuh_layer_id, которая содержит, в порядке декодирования, специальное изображение начала кодированной последовательности слоев видео (coding layer video sequence starting coding (CLVSS)), (например, изображение с внутрикадровым прогнозированием), за каковым следуют нулевое количество или больше изображений, не являющихся начальными (или стартовыми) изображениями (CLVSS), включая все последующие изображения вплоть до (но не включая) любые последующие изображения, являющиеся изображениями CLVSS.
Кодированная последовательность видео (coded video sequence (CVS)), к которой может быть применен набор VPS, состоит из одной или нескольких последовательностей кодированных слоев видео (CLVS). В примере, показанном на фиг. 8, в предположении, что первые изображения слоев BL и EL являются начальными изображениями CLVSS, и что все другие изображения не являются изображениями CLVSS, имеем последовательность CVS, состоящую из двух последовательностей CLVS.
Изображения, находящиеся в одной и той же позиции, но в разных слоях, (такие как изображения A и B на фиг. 8) образуют единицу доступа (Access Unit (AU)). Единица доступа представляет собой группу изображений, принадлежащих разным слоям, и содержит кодированные изображения, ассоциированные с одним и тем же моментом времени для передачи на выход из буфера декодированных изображений.
Слои могут представлять собой независимые слои или зависимые слои, для прогнозирования зависимого слоя необходимо использовать межслойное прогнозирование со ссылками на один или несколько слоев, где идентификатор опорного слоя может быть меньше идентификатора зависимого слоя. Независимый слой прогнозируют без использования межслойного прогнозирования.
Следующая таблица содержит примеры синтаксических элементов, передаваемых в виде сигнализации в наборе VPS.
Таблица 1. Синтаксические элементы, передаваемые в виде сигнализации в наборе VPS
Например, идентификатор vps_video_parameter_set_id представляет собой идентификатор (ID), к которому может обращаться набор SPS, вводимый в следующем разделе.
Например, параметр vps_max_layers_minus1 плюс 1 представляет максимальное разрешенное число слоев в последовательности CVS.
Например, параметр vps_max_sublayers_minus1 плюс 1 представляет максимальное разрешенное число временных подслоев в последовательности CVS.
Например, флаг vps_all_layers_same_num_sublayers_flag характеризует последовательность CVS тем, что все ее слои кодирования содержат одинаковое число временных подслоев. Этот флаг передают только тогда, когда и максимальное разрешенное число слоев, и максимальное разрешенное число временных подслоев больше 1.
Например, флаг vps_all_independent_layers_flag характеризует последовательность CVS тем, что все ее слои кодирования являются независимыми слоями, т.е. для каждого слоя не существует никакого опорного изображения для межслойного прогнозирования. Опорное изображение для межслойного прогнозирования может быть использовано, когда для межслойного прогнозирования используется изображение не из того же самого слоя, а из другого слоя.
Например, идентификатор vps_layer_id [i] для индекса i в диапазоне от 0 до vps_max_layers_minus1, включительно, представляет идентификатор каждого слоя от слоя с индексом 0 до слоя с индексом vps_max_layers_minus1. Труднее заметить разницу между индексом слоя и идентификатором слоя. Идентификатор vps_layer_id [0] указывает идентификатор 0-го слоя, но он может не быть равен 0.
Для простоты, введение в остальные синтаксические элементы здесь пропущено.
За информацией, поясняющей эти элементы, следует обратиться к проекту 8 стандарта кодирования VVC (VVC draft 8).
Набор параметров последовательности (Sequence Parameter Set (SPS))
Набор SPS содержит параметры, применяемые к одному или нескольким слоям кодированной последовательности видео и не изменяемые от одного изображения к другому в пределах кодированной последовательности видео. В частности, набор SPS содержит информацию, сигнализирующую о фрагменте изображения.
Некоторые части следующей таблицы показывают «моментальный снимок» части сигнализации о фрагменте изображения в наборе SPS в документе ITU JVET-Q2001-v13, соответствующем следующей ссылке для скачивания:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v13.zip.
В остальной части настоящей заявки этот известный документ будет называться «проект 8 стандарта кодирования VVC» (VVC draft 8) для простоты.
Таблица 2. Синтаксические элементы набора SPS
Идентификатор sps_video_parameter_set_id, когда он больше 0, специфицирует величину идентификатора vps_video_parameter_set_id для набора VPS, к которому обращается набор SPS.
Когда идентификатор sps_video_parameter_set_id равен 0, применяется следующее:
– Набор SPS не обращается к набору VPS, и не обращается ни к какому набору VPS при декодировании каждой последовательности CLVS, обращающейся к этому набору SPS.
– Величину параметра vps_max_layers_minus1 признают равной 0.
– Последовательность CVS должна содержать только один слой (т.е. все единицы VCL NAL в этой последовательности CVS должны иметь одинаковую величину идентификатора nuh_layer_id).
Некоторые синтаксические элементы в наборе SPS сообщают информацию о позиции и флаги управления для каждого фрагмента изображения. Информация о позиции для i-го фрагмента изображения содержит:
• параметр subpic_ctu_top_left_x[ i ], указывающий горизонтальную составляющую координат верхней-левой точки i-го фрагмента изображения в рассматриваемом изображении; или
• параметр subpic_ctu_top_left_y[ i ], указывающий вертикальную составляющую координат верхней-левой точки i-го фрагмента изображения в рассматриваемом изображении; или
• параметр subpic_width_minus1[ i ], указывающий ширину i-го фрагмента изображения в рассматриваемом изображении; или
• параметр subpic_height_minus1[ i ], указывающий высоту i-го фрагмента изображения в рассматриваемом изображении.
Некоторые синтаксические элементы указывают число фрагментов изображения в рассматриваемом изображении, например, параметр sps_num_subpics_minus1.
Разбиение изображения на единицы CTU, срезы, плитки и фрагменты изображения
Разбиение изображения на единицы CTU
Изображения разбивают на последовательность единиц дерева кодирования (CTU). Иногда вместо этого используется, взаимозаменяемо, термин CTB (блок дерева кодирования). Концепция единиц CTU является такой же, как в стандарте кодирования HEVC. Для изображения, имеющего три массива отсчетов, единица CTU состоит из блока размером N×N отсчетов яркостной составляющей и соответствующих блоков отсчетов цветностных составляющих. На фиг. 6 показан пример изображения, разбитого на единицы CTU. Размер единиц CTU внутри кадра должен быть одинаковым за исключением единиц, расположенных на границах изображения (где могут присутствовать неполные единицы CTU).
Разбиение изображения на плитки
Когда активизировано разбиение на плитки, изображение разбивают на имеющие прямоугольную форму группы единиц CTU, разделенные вертикальными и/или горизонтальными границами. Вертикальные и горизонтальные границы плиток пересекают изображения от нижнего края и от левой границы изображения к правой границе изображения, соответственно. В поток битов данных включена индикация относительно расположения вертикальных и горизонтальных границ плиток.
Разбиение изображения на срезы
Концепция срезов предлагает разбиение изображения таким образом, что каждый срез является декодируемым независимо от других срезов того же самого изображения, где под декодированием понимают энтропийное декодирование, декодирование остатка и декодирование с прогнозированием. Отличие от плиток состоит в том, что срезы могут иметь более произвольные формы (больше гибкости в возможностях разбиения), а целью разбиения на срезы является не параллельная обработка, а согласование размера пакетов данных в средах передачи сигнала и устойчивость против ошибок.
Срез может содержать полное изображение, равно как его части. В стандарте кодирования HEVC срез содержит множество последовательных единиц CTU изображения в порядке обработки. Срез идентифицируют посредством адреса его начальной единицы CTU, сообщаемого в виде сигнализации в заголовке среза или в наборе параметров изображения или в какой-то другой единице информации.
В проекте 8 стандарта кодирования VVC срез содержит целое число полных плиток или целое число последовательных строк единиц CTU в плитке изображения. Вследствие этого, каждая вертикальная граница среза всегда является также вертикальной границей плитки. Возможна ситуация, когда горизонтальная граница среза не является границей плитки, но содержит горизонтальные границы единиц CTU в плитке; это происходит, когда плитку разбивают на множество прямоугольных срезов, каждый срез содержит целое число последовательных полных строк единиц CTU в пределах плитки.
В некоторых примерах имеются два типа срезов – срезы с растровым сканированием и прямоугольные срезы. В случае срезов с растровым сканированием, такой срез содержит последовательность плиток в порядке растрового сканирования плиток изображения. В случае прямоугольных срезов, такой срез содержит несколько плиток, которые коллективно образуют прямоугольную область изображения, или этот срез содержит несколько последовательных строк единиц CTU из одной плитки, которые коллективно образуют прямоугольную область изображения. Плитки в пределах прямоугольного среза сканируют в порядке растрового сканирования плиток в пределах прямоугольной области, соответствующей этому срезу.
Все срезы изображения коллективно составляют полное изображение, т.е. все и каждая из единиц CTU должны входить в какой-нибудь из срезов изображения. Аналогичные правила применяются к плиткам и к фрагментам изображения.
Разбиение изображения на фрагменты изображения
Разбиение изображения на прямоугольные фрагменты изображения. Фрагмент изображения может представлять собой полное изображение или часть изображения. Фрагмент изображения представляет собой результат разбиения изображения таким образом, что каждый фрагмент изображения является декодируемым независимо от других фрагментов изображения в полной последовательности видео. В проекте 8 стандарта кодирования VVC это является истинным, когда указано в потоке битов данных. Т.е. когда флаг subpic_treated_as_pic_flag[i] имеет значение «истинно» (true) для i-го фрагмента изображения, этот i-ый фрагмент изображения является декодируемым независимо от других фрагментов изображения в полной последовательности видео.
Различие между фрагментом изображения и плитками или срезами состоит в том, что фрагменты изображения образуют независимо декодируемую последовательность видео внутри последовательности видео. Тогда как для плиток и срезов независимое декодирование гарантируется только в пределах одного изображения из последовательности видео.
В проекте 8 стандарта кодирования VVC, фрагмент изображения содержит один или несколько срезов, коллективно покрывающих прямоугольную область изображения. Вследствие этого, каждая граница фрагмента изображения всегда является границей среза, и каждая вертикальная граница фрагмента изображения всегда является вертикальной границей плитки.
На фиг. 7 представлен пример плиток, срезов и фрагментов изображения.
В одном из примеров, как показано на фиг. 7, изображение разбито на 216 единиц CTU, 4 плитки, 4 среза и 3 фрагмента изображения. Величина параметра sps_num_subpics_minus1 равна 2, а синтаксические элементы, относящиеся к позиции, имеют следующие величины:
Для фрагмента 0 изображения
• параметр subpic_ctu_top_left_x[ 0], не передают в виде сигнализации, а признают равным 0;
• параметр subpic_ctu_top_left_y[ 0 ], не передают в виде сигнализации, а признают равным 0;
• величина параметра subpic_width_minus1[ 0 ], равна 8;
• величина параметра subpic_height_minus1[ 0 ] , равна 11.
Для фрагмента 1 изображения
• величина параметра subpic_ctu_top_left_x[ 1], равна 9;
• величина параметра subpic_ctu_top_left_y[ 1 ], равна 0;
• величина параметра subpic_width_minus1[ 1 ], равна 8;
• величина параметра subpic_height_minus1[ 1 ] , равна 5.
Для фрагмента изображения 2
• величина параметра subpic_ctu_top_left_x[ 2 ], равна 9;
• величина параметра subpic_ctu_top_left_y[ 2 ], равна 6;
• параметр subpic_width_minus1[ 2 ], не передают в виде сигнализации, а признают равным 8;
• параметр subpic_height_minus1[ 2 ], не передают в виде сигнализации, а признают равным 5.
Кодированный поток битов данных содержит единицы слоя сетевой абстракции (network abstraction layer (NAL)). Единица NAL представляет собой синтаксическую структуру, содержащую индикацию типа последующих данных, и байты, содержащие данные, в форме первичной байтовой последовательности данных ((Raw Byte Sequence Payload) RBSP), перемежаемые по мере необходимости с байтами, предотвращающими эмуляцию.
Последовательность RBSP представляет собой синтаксическую структуру, содержащую целое число байтов, инкапсулированных в единице NAL, и являющуюся либо пустой, либо имеющей форму строки битов данных, содержащей синтаксические элементы, за которыми следует бит остановки последовательности RBSP и ни одного или более последующих битов, равных 0.
Байт предотвращающий эмуляцию представляет собой байт равный 0x03.
Наборы параметров, такие как набор SPS или набор VPS, инкапсулированы в единице NAL. За исключением информации синтаксических элементов, специфицированной в наборе SPS и в наборе VPS, для каждой единицы NAL имеется свой заголовок. Заголовок единицы NAL содержит такую информацию, как идентификатор слоя (т.е. синтаксический элемент nuh_layer_id), тип единицы NAL (т.е. синтаксический элемент nal_unit_type). Например, типом единицы NAL, содержащей набор VPS, является VPS_NUT, и типом единицы NAL, содержащей набор SPS является SPS_NUT.
В общем случае, единицы NAL в потоке битов данных могут быть разделены на два класса: Единицы слоя кодирования видео (Video Coding Layer (VCL) NAL) и единицы NAL, не принадлежащие к слою кодирования видео (не-VCL NAL). Единицы NAL, содержащие наборы параметров (такие как набор VPS или набор SPS) и не несущие существенных кодированных данных изображения, относятся к типу единиц не-VCL NAL. В отличие от этого, единицы NAL, содержащие существенные кодированные данные изображения, (такие как кодированные данные видео для I-изображения) называются единицами VCL NAL.
В проекте 8 стандарта кодирования VVC, в таблице 5, определены тип единицы NAL для каждой единицы NAL и классификация этих типов.
Другие подробности приведены в проекте 8 стандарта кодирования.
Процедура декодирования для построения списков опорных изображений
Эту процедуру привлекают в начале процедуры декодирования для каждого среза изображения.
К опорным изображениям адресуются через опорные индексы. Опорный индекс представляет собой индекс в список RPL (список опорных изображений). При декодировании I-среза никакие списки RPL не используются для декодирования данных этого среза. При декодировании P-среза только список RPL 0 (т.е. RefPicList[ 0 ]), используется для декодирования данных среза. При декодировании B-среза оба списка RPL 0 и RPL 1 (т.е. RefPicList[ 1 ]) используются для декодирования данных среза.
В начале процедуры декодирования каждого среза в изображении сначала определяют списки RPL – RefPicList[ 0 ] и RefPicList[ 1 ]. Эти списки RPL используются при маркировке опорных изображений, как это специфицировано в статье или при декодировании данных среза.
ПРИМЕЧАНИЕ 1 – Для I-среза изображения, списки RefPicList[ 0 ] и RefPicList[ 1 ] могут быть определены для целей проверки соответствия потока битов данных, но определение этих списков не является необходимым для декодирования текущего изображения или изображений, следующих за текущим изображением в порядке декодирования. Для P-среза изображения, список RefPicList[ 1 ] может быть определен для целей проверки соответствия потока битов данных, но определение этого списка не является необходимым для декодирования текущего изображения или изображений, следующих за текущим изображением в порядке декодирования.
Если флаг sps_idr_rpl_present_flag равен 0, флаг pps_rpl_info_in_ph_flag равен 0, и параметр nal_unit_type равен IDR_W_RADL или IDR_N_LP, оба списка RPL – RefPicList[ 0 ] и RefPicList[ 1 ], определяют как пустые, т.е. содержащие 0 входных позиций, и для каждого индекса i равного 0 или 1 применяется следующее:
- Величину параметра RplsIdx[ i ] признают равной sps_num_ref_pic_lists[ i ].
- Величину num_ref_entries[ i ][ RplsIdx[ i ] ] признают равной 0.
- Величину NumRefIdxActive[ i ] признают равной 0.
В противном случае, списки RPL – RefPicList[ 0 ] и RefPicList[ 1 ], коэффициенты масштабирования опорных изображений – RefPicScale[ i ][ j ][ 0 ] и RefPicScale[ i ][ j ][ 1 ], и флаги масштабирования опорных изображений – RprConstraintsActiveFlag[ 0 ][ j ] и RprConstraintsActiveFlag[ 1 ][ j ], определяют следующим образом:
Для каждого индекса i равного 0 или 1, первые NumRefIdxActive[ i ] входных позиций в списке RefPicList[ i ] называются активными входными позициями в список RefPicList[ i ], а другие входные позиции этого списка RefPicList[ i ] называются неактивными входными позициями списка RefPicList[ i ].
Описание проблем и технических решений
Первая проблема
Набор VPS представляет собой набор параметров, являющийся опцией. Например, для однослойного потока битов данных, в потоке битов данных может не быть набора VPS. Наблюдается, что семантика некоторых синтаксических элементов в наборе VPS является неполной. Для этих элементов нет дефиниций, когда в потоке битов данных отсутствует набор VPS.
Например, в проекте 8 стандарта кодирования VVC, семантика синтаксического элемента vps_max_layers_minus1 специфицирована следующим образом:
Параметр vps_max_layers_minus1 плюс 1 специфицирует максимальное разрешенное число слоев в каждой последовательности CVS, обращающейся к набору VPS.
Вариант 1
Согласно первому варианту, учитывая случай, когда набор VPS не присутствует в потоке битов данных, семантику параметра vps_max_layers_minus1 модифицируют следующим образом:
Параметр vps_max_layers_minus1 плюс 1 специфицируют максимально разрешенное число слоев в каждой последовательности CVS, обращающейся к набору VPS. Когда параметр vps_max_layers_minus1 не присутствует, его величину признают равной 0.
Другими словами, когда набор VPS не присутствует, в последовательности CVS имеется только один слой.
Вторая проблема
Другой синтаксический элемент vps_layer_id[i] для индекса i в диапазоне от 0 до vps_max_layers_minus в наборе VPS имеет такую же проблему, т.е. без спецификации признаваемой величины, когда набор VPS не присутствует. Семантика идентификатора vps_layer_id[i] специфицирована в проекте 8 стандарта кодирования VVC следующим образом:
Идентификатор vps_layer_id[ i ] специфицирует величину идентификатора nuh_layer_id для i-го слоя. Для каждых двух неотрицательных целых чисел m и n, когда m меньше n, величина идентификатора vps_layer_id[ m ] должна быть меньше vps_layer_id[ n ]
Идентификатор nuh_layer_id представляет идентификатор слоя. Идентификатор vps_layer_id[i] специфицирует идентификатор i-го слоя. Эти дефиниции также ограничивают, что когда имеется больше слоев, идентификатор более высокого слоя (с индексом n слоя) должен быть больше идентификатора более низкого слоя (с индексом m слоя). Иными словами, идентификаторы слоев специфицированы в массиве vps_layer_id в восходящем порядке.
Имеет смысл отметить, что величина идентификатора vps_layer_id[i] используется для определения некоторой промежуточной переменной в проекте 8 стандарта кодирования VVC. Например, определение переменной OutputLayerIdInOls[0][0] опирается на величину идентификатора vps_layer_id[i] для индекса i в диапазоне от 0 до vps_max_layers_minus1, включительно, переменная OutputLayerIdInOls[0][0] может быть использована для определения процедуры декодирования, как это специфицировано в Статье 8.1.2 в проекте 8 стандарта кодирования VVC. Если VPS не присутствует в потоке битов данных, процедура декодирования может быть неопределенной, поскольку величина переменной OutputLayerIdInOls[0][0] не определена из-за отсутствия признанной величины для идентификатора vps_layer_id[i] для индекса i в диапазоне от 0 до vps_max_layers_minus1, включительно.
Вариант 2
Согласно второму варианту, рассматривая случай, когда набор VPS не присутствует в потоке битов данных, семантику идентификатора vps_layer_id [i] модифицируют следующим образом:
Идентификатор vps_layer_id[ i ] специфицирует величину идентификатора nuh_layer_id для i-го слоя. Для любых двух неотрицательных целых чисел m и n, когда m меньше n, величина идентификатора vps_layer_id[ m ] должна быть меньше идентификатора vps_layer_id[ n ]. Когда не присутствует, идентификатор vps_layer_id[0] признают равным величине идентификатора nuh_layer_id из набора параметров последовательности (SPS).
Другими словами, когда набор VPS не присутствует, имеется только один слой кодирования видео. Массив синтаксических элементов vps_layer_id может иметь только одну входную позицию (т.е. 0-ой слой), и величину идентификатора vps_layer_id[0] для него признают равной идентификатору слоя в наборе SPS.
Вариант 3
Согласно третьему варианту, учитывая случай, когда набор VPS не присутствует в потоке битов данных, семантику идентификатора vps_layer_id [i] модифицируют следующим образом:
Идентификатор vps_layer_id[ i ] специфицирует величину идентификатора nuh_layer_id value для i-го слоя. Для любых двух неотрицательных целых чисел m и n, когда m меньше n, величина идентификатора vps_layer_id[ m ] должна быть меньше идентификатора vps_layer_id[ n ]. Когда не присутствует, идентификатор vps_layer_id[0] признают равным идентификатору nuh_layer_id для первой единицы не-VCL NAL.
Другими словами, когда набор VPS не присутствует, имеется только один слой кодирования видео. Массив vps_layer_id синтаксических элементов может иметь только одну входную позицию (т.е. 0-ой слой), и величину идентификатора vps_layer_id[0] признают равной величине идентификатора слоя для первой единицы не-VCL NAL.
Вариант 4
Согласно четвертому варианту, рассматривая случай, когда набор VPS не присутствует в потоке битов данных, семантику идентификатора vps_layer_id [i] модифицируют следующим образом:
Идентификатор vps_layer_id[ i ] специфицирует величину идентификатора nuh_layer_id для i-го слоя. Для любых двух неотрицательных целых чисел m и n, где m меньше n, величина идентификатора vps_layer_id[ m ] должна быть меньше идентификатора vps_layer_id[ n ]. Когда не присутствует, идентификатор vps_layer_id[0] признают равным величине идентификатора nuh_layer_id для первой единицы VCL NAL.
Другими словами, когда набор VPS не присутствует, имеется только один слой кодирования видео. Массив vps_layer_id синтаксических элементов может иметь только одну входную позицию (т.е. 0-ой слой) и величину идентификатора vps_layer_id[0] для него признают равной идентификатору слоя для первой единицы VCL NAL.
Вариант 5
Согласно пятому варианту, рассматривая случай, когда набор VPS не присутствует в потоке битов данных, семантику идентификатора vps_layer_id [i] модифицируют следующим образом:
Идентификатор vps_layer_id[ i ] специфицирует величину идентификатора nuh_layer_id для i-го слоя. Для любых двух неотрицательных целых чисел m и n, когда m меньше n, величина идентификатора vps_layer_id[ m ] должна быть меньше vps_layer_id[ n ]. Когда не присутствует, идентификатор vps_layer_id[0] признают равным величине идентификатора nuh_layer_id для любой единицы NAL.
Другими словами, когда набор VPS не присутствует, имеется только один слой кодирования видео, т.е. все единицы NAL имеют одинаковую величину идентификатора nuh_layer_id в своих заголовках NAL. Массив vps_layer_id синтаксических элементов может иметь только одну входную позицию (т.е. 0-ой слой), и величину идентификатора vps_layer_id[0] для него признают равной идентификатору слоя для любой единицы NAL.
Согласно приведенному выше описанию здесь предложены способ декодирования потока битов данных видео и способ кодирования потока битов данных видео. Соответственно, здесь предложены аппаратура для декодирования (кодированного) потока битов данных видео и аппаратура для кодирования потока битов данных видео.
Фиг. 9 иллюстрирует способ декодирования потока битов данных видео, осуществляемый устройством декодирования, где этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит: определение 910, является ли текущий кодированный слой видео единственным слоем в потоке битов данных; когда определено (это определяется только тогда, например, когда это определяется), что текущий кодированный слой видео является единственным слоем в потоке битов данных (например, идентификатор sps_video_parameter_set_id равен 0), использование 920 идентификатора единицы NAL (например, nuh_layer_id) текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео (например, vps_layer_id).
Следует отметить, что поток битов данных может быть получен посредством сети радиосвязи или проводной сети связи. Этот поток битов данных может быть передан с веб-сайта, от сервера или из другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (digital subscriber line (DSL)), либо технологий беспроводной связи, таких как связь в инфракрасном диапазоне, радиосвязь, связь в СВЧ-диапазоне, WIFI, Bluetooth, LTE или 5G.
Поток битов данных может представлять собой последовательность битов в форме потока единиц слоя сетевой абстракции (NAL) или потока байтов, что создает представление последовательности единиц доступа (AU), образующей одну или несколько кодированных последовательностей видео (CVS).
В одном из конкретных примеров форматы поток битов данных специфицируют соотношение между потоком единиц слоя сетевой абстракции (NAL) и потоком байтов, любой из которых называется потоком битов данных.
Поток битов данных может иметь один из двух форматов: формат потока единиц NAL или формат потока байтов. Формат потока единиц NAL концептуально является более «базовым». Этот формат потока единиц NAL содержит последовательность синтаксических структур, именуемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Имеются ряд ограничений, наложенных на этот порядок декодирования (и содержание) единиц NAL в потоке единиц NAL.
Формат потока байтов может быть построен из формата потока единиц NAL путем упорядочения единиц NAL в порядке декодирования и присоединение к каждой единице NAL стартового кодового префикса и нулевого числа или более нулевых байтов для образования потока байтов. Формат потока единиц NAL может быть выделен из формата потока байтов путем поиска позиции уникальной структуры стартового кодового префикса в этом потоке байтов.
Фиг. 10 иллюстрирует способ кодирования потока битов данных видео, осуществляемый устройством кодирования, где поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит: определение 1010, является ли текущий кодированный слой видео единственным слоем в потоке битов данных; когда определено, что текущий кодированный слой видео является единственным слоем в поток битов данных, использование 1020 идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора этого текущего кодированного слоя видео.
Рассмотренные выше способы могут быть встроены в аппаратуру для декодирования видео или в аппаратуру для кодирования видео (формирующую поток битов данных), соответственно, как описано далее.
Как показано на фиг. 11, аппаратура 1100 для декодирования видео, предлагаемая в настоящей заявке согласно одному из вариантов, содержит решающий модуль 1110 и модуль 1120 прогнозирования. Как показано на фиг. 12, аппаратура 1200 для кодирования видео, предлагаемая в настоящей заявке согласно одному из вариантов, содержит решающий модуль 1210 и модуль 1220 прогнозирования.
Решающий модуль 1110, входящий в аппаратуру 1100 для декодирования видео, показанную на фиг. 11, конфигурирован для определения, является ли текущий кодированный слой видео единственным слоем в потоке битов данных. Модуль 1120 прогнозирования, входящий в аппаратуру 1100 для декодирования видео, показанную на фиг. 11, конфигурирован в качестве модуля прогнозирования, адаптированного для использования идентификатора единицы NAL (например, идентификатора nuh_layer_id) текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео (например, идентификатора vps_layer_id), когда определено (это определяется только тогда, например, когда это определяется), что текущий кодированный слой видео является единственным слоем в потоке битов данных (например, идентификатор sps_video_parameter_set_id равен 0).
Решающий модуль 1210, входящий в аппаратуру 1200 для кодирования видео, показанную на фиг. 12, конфигурирован для определения, является ли текущий кодированный слой видео единственным слоем в потоке битов данных. Модуль 1220 прогнозирования, входящий в аппаратуру 1200 для кодирования видео, показанную на фиг. 12, конфигурирован для использования идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео, когда определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных.
Аппаратура 1100 для декодирования видео, показанная на фиг. 11, может входить или не входить в декодирующее устройство 30, показанное на фиг. 1A, 1B и 3, и в декодирующее устройство 3206 для видео, показанное на фиг. 14. Кроме того, устройство 1100 декодирования может входить в устройство 400 для кодирования видео, показанное на фиг. 4, в аппаратуру 500, показанную на фиг. 5, и в устройство 3106 терминала, показанное на фиг. 13. Устройство 1200 кодирования, показанное на фиг. 12, может входить или не входить в кодирующее устройство 20, показанное на фиг. 1A, 1B и 3. Кроме того, устройство 1200 кодирования может 1200 входить в устройство 400 для кодирования видео, показанное на фиг. 4, в аппаратуру 500, показанную на фиг. 5, и в устройство 3102 захвата изображения, показанное на фиг. 13.
Далее следует пояснение применения способа кодирования и способа декодирования, как показано в приведенных выше вариантах, и системы, использующей эти способы.
На фиг. 13 представлена блок-схема, показывающая пример структуры системы 3100 передачи контента, которая реализует сервис распределения контента. Эта система 3100 передачи контента содержит устройство 3102 захвата изображения, устройство 3106 терминала, и в качестве опции может содержать дисплей 3126. Устройство 3102 сбора данных осуществляет связь с устройством 3106 терминала по линии 3104 связи. Эта линия связи может содержать канал 13 связи, описываемый выше. Линия 3104 связи может представлять собой, без ограничений, линию WIFI, Этернет, кабель, радиолинию (поколения 3G/4G/5G), шину USB, какую-либо комбинацию перечисленных линий или другую подобную линию.
Устройство 3102 захвата изображения генерирует данные и может кодировать эти данные с применением способа кодирования, как показано в приведенных выше вариантах. В качестве альтернативы, устройство 3102 захвата изображения может передавать эти данные потоковому серверу (не показан на чертежах), а сервер кодирует эти данные и передает кодированные данные устройству 3106 терминала. Устройство 3102 захвата изображения может содержать, не ограничиваясь этим, видеокамеру, смартфон или планшет, компьютер или портативный компьютер, систему для видео конференций, помощник PDA, установленное на автомобиле (транспортном средстве) устройство или какую-либо комбинацию перечисленных устройств, либо другой подобный компонент. Например, устройство 3102 захвата изображения может содержать устройство 12 источник, как описано выше. Когда данные содержат видео, кодирующее устройство 20 для видео, входящее в устройство 3102 захвата изображения, может фактически осуществлять обработку данных для кодирования видео. Когда данные содержат аудио (т.е. голос), кодирующее устройство для аудио, входящее в устройство 3102 захвата изображения, может фактически осуществлять обработку кодирования аудио. В ряде практических сценариев устройство 3102 захвата изображения распределяет кодированные данные видео и аудио путем мультиплексирования их вместе. В других практических сценариях, например, в системе для видео конференций, кодированные данные аудио и кодированные данные видео не мультиплексируют. Устройство 3102 захвата изображения распределяет кодированные данные аудио и кодированные данные видео устройству 3106 терминала по отдельности.
В системе 3100 передачи контента, устройство 3106 терминала принимает и воспроизводит кодированные данные. Это устройство 3106 терминала может представлять собой устройство с возможностями приема и извлечения данных, такое как смартфон или планшет 3108, компьютер или портативный компьютер 3110, сетевой видеорегистратор (network video recorder (NVR))/ цифровой видеорегистратор (digital video recorder (DVR)) 3112, телевизор TV 3114, приставка (set top box (STB)) 3116, система 3118 для видео конференций, система 3120 видеонаблюдения, персональный цифровой помощник (personal digital assistant (PDA)) 3122, устанавливаемое на автомобиле устройство 3124 или комбинация перечисленных устройств, либо другое подобное устройство, способное декодировать рассматриваемые выше кодированные данные. Например, устройство 3106 терминала может содержать устройство 14 адресата, как описано выше. Когда кодированные данные содержат видео, декодирующее устройство 30 для видео, входящее в устройство терминала, имеет приоритет для осуществления декодирования этого видео. Когда кодированные данные содержат аудио, декодирующее устройство для аудио, входящее в устройство терминала, имеет приоритет для осуществления декодирования этого аудио.
Когда каждое устройство в системе осуществляет кодирование или декодирование, может быть использовано устройство для кодирования изображения или устройство для декодирования изображения, как показано в приведенных выше вариантах.
На фиг. 14 представлена блок-схема, показывающая структуру примера устройства 3106 терминала. После приема устройством 3106 терминала потока от устройства 3102 захвата изображения, модуль 3202 обработки протокола анализирует протокол передачи потока. Этот протокол может представлять собой, без ограничений, потоковый протокол реального времени (Real Time Streaming Protocol (RTSP)), гипертекстовый транспортный протокол (Hyper Text Transfer Protocol (HTTP)), протокол онлайн-трансляции в реальном времени (HTTP Live streaming protocol (HLS)), протокол MPEG-DASH, транспортный протокол реального времени (Real-time Transport protocol (RTP)), протокол обмена сообщениями в реальном времени (Real Time Messaging Protocol (RTMP)), какую-либо комбинацию этих протоколов или другой подобный протокол.
После того, как модуль 3202 обработки протокола выполнит обработку потока, генерируют потоковый файл. Этот файл передают в демультиплексорный модуль 3204. Демультиплексорный модуль 3204 может разделить мультиплексированные данные на кодированные данные аудио и кодированные данные видео. Как описано выше, для некоторых практических сценариев, например в системе для видео конференций, кодированные данные аудио и кодированные данные видео не мультиплексируют. В этой ситуации кодированные данные передают декодирующему устройству 3206 для видео и декодирующему устройству 3208 для аудио без прохождения через демультиплексорный модуль 3204.
В результате демультиплексирующей обработки генерируют элементарный поток (elementary stream (ES)) видео, поток ES аудио и, в качестве опции, субтитры. Декодирующее устройство 3206 для видео, которое содержит декодирующее устройство 30 для видео, как поясняется в приведенных выше вариантах, декодирует поток ES видео с использованием способа согласно приведенным выше вариантам для генерации кадра видео и передает эти данные модулю 3212 синхронизации. Декодирующее устройство 3208 для аудио декодирует поток ES аудио для генерации аудио кадра и передает эти данные модулю 3212 синхронизации. В альтернативном варианте, кадр видео может быть сохранен в буфере (не показан на фиг. 14) прежде передачи его модулю 3212 синхронизации. Аналогично, кадр аудио может быть сохранен в буфере (не показан на фиг. 14) прежде передачи его модулю 3212 синхронизации.
Модуль 3212 синхронизации осуществляет синхронизацию кадра видео и кадра аудио и передает видео/аудио в адрес видео/аудио дисплея 3214. Например, модуль 3212 синхронизации осуществляет синхронизацию представления видео и аудио информации. Информация может кодировать синтаксис с использованием меток времени, относящихся к представлению аудио и визуальных данных, и меток времени, относящихся к передаче самого потока данных.
Если в поток включены субтитры, декодирующее устройство 3210 субтитров осуществляет декодирование этих субтитров, синхронизирует их с кадром видео и с кадром аудио, и передает видео/аудио/субтитры дисплею 3216 видео/аудио/субтитров.
Настоящее изобретение не исчерпывается приведенной выше системой, так что либо устройство для кодирования изображения, либо устройство для декодирования изображений согласно приведенным выше вариантам может быть встроено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования «C». Однако результаты операций целочисленного деления и арифметического сдвига определены здесь более точно, а также определены дополнительные операции, такие как возведение в степень и деление действительных чисел. Нумерация и подсчет по соглашению обычно начинаются с 0, например, «первый» эквивалентно 0-ому, «второй» эквивалентно 1-ому и т.д.
Арифметические операторы
Далее арифметические операторы определены следующим образом:
Логические операторы
Далее логические операторы определены следующим образом:
x && y Булево-логическое «И» от x и y
x | | y Булево-логическое «ИЛИ» от x и y
! Булево-логическое «НЕ»
x ? y : z Если «x» является TRUE (истинно) или не равно 0, результатом операции является величина «y»; в противном случае, результатом операции является величина «z».
Операторы сравнения
Далее операторы сравнения определены следующим образом:
> Больше чем
>= Не меньше (больше или равно)
< Меньше чем
<= Не больше (меньше или равно)
= = Равно
!= Не равно
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которой было назначено значение "na" (не применимо (not applicable)), это значение "na" рассматривается как отдельное значение для синтаксического элемента или переменной. Значение "na" считается неравным никакой другой величине.
Поразрядные операторы
Далее поразрядные операторы определены следующим образом:
& Поразрядное «И». При работе с целочисленными аргументами, оперирует над представлением целочисленной величины в виде двоичного дополнительного кода. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют путем добавления более значимых (старших) битов, равных 0.
| Поразрядное «ИЛИ». При работе с целочисленными аргументами, оперирует над представлением целочисленной величины в виде двоичного дополнительного кода. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют путем добавления более значимых (старших) битов, равных 0.
^ Поразрядное «исключающее ИЛИ». При работе с целочисленными аргументами, оперирует над представлением целочисленной величины в виде двоичного дополнительного кода. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют путем добавления более значимых (старших) битов, равных 0.
x >> y Арифметический сдвиг вправо представления целочисленной величины x в виде двоичного дополнительного кода на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции более значимых (старших) битов (MSB), в результате сдвига вправо имеют значения, равные старшим (MSB) битам числа x перед операцией сдвига.
x << y Арифметический сдвиг влево представления целочисленной величины x в виде двоичного дополнительного кода на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции менее значимых (младших) битов (LSB), в результате сдвига влево имеют значения, равные 0.
Операторы присвоения
Далее арифметические операторы определены следующим образом:
= Оператор присвоения
+ + Инкремент, т.е. x+ + эквивалентно x = x + 1; при использовании в индексе массива результатом операции является величина переменной перед этой операцией инкремента.
− − Декремент, т.е. x− − эквивалентно x = x − 1; при использовании в индексе массива результатом операции является величина переменной перед этой операцией декремента.
+= Инкремент на указанную величину, т.е. x += 3 эквивалентно x = x + 3, и
x += (−3) эквивалентно x = x + (−3).
−= Декремент на указанную величину, т.е. x −= 3 эквивалентно x = x − 3, и
x −= (−3) эквивалентно x = x − (−3).
Обозначение диапазона
Следующая нотация используется для спецификации диапазона величин:
x = y..z x принимает целочисленные значения, начиная от y до z, включительно, где x, y, и z представляют собой целые числа и z больше чем y.
Математические функции
Далее определены математические функции:
Asin( x ) тригонометрическая функция, обратная синусу, оперирует над аргументом x в диапазоне от −1.0 до 1.0, включительно, выходное значение в диапазоне −π÷2 до π÷2, включительно, в единицах радиан
Atan( x ) тригонометрическая функция, обратная тангенсу, оперирует над аргументом x, выходное значение в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан
Ceil( x ) наименьшее целое число не меньше x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Cos( x ) тригонометрическая функция косинуса, оперирующая над аргументом x в единицах радиан.
Floor( x ) наибольшее целое число не больше x.
Ln( x ) натуральный логарифм x (логарифм по основанию «e», где «e» - основание натуральных логарифмов, константа 2.718 281 828...).
Log2( x ) логарифм x по основанию 2.
Log10( x ) логарифм x по основанию 10.
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sin( x ) тригонометрическая функция синуса, оперирующая над аргументом x в единицах радиан
Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, оперирующая над аргументом x в единицах радиан
Порядок приоритетности операций
Когда порядок приоритетности операций в выражении не указан в явном виде с использованием скобок, применяются следующие правила:
– Операции с более высоким приоритетом выполняют раньше любых операций с более низким приоритетом.
– Операции с одинаковым приоритетом выполняют последовательно слева направо.
Таблица ниже специфицирует приоритетность операций от самой высокой к самой низкой; более высокая позиция в таблице обозначает более высокий приоритет.
Для тех операторов, которые также используются в языке программирования «C», порядок приоритетности, применяемый в настоящих Спецификациях, является таким же, какой используется в языке программирования «C».
Таблица. Приоритетность операций от самой высокой (в верхней части таблицы) до самой низкой (в нижней части таблицы)
", "x % y"
"
Текстовое описание логических операций
В тексте, формулировка логических операций, которые математически можно описать следующим образом:
может быть описано следующим образом:
... как указано далее / ... применяется следующее:
– Если условие 0, утверждение 0
– В противном случае, если условие 1, утверждение1
– ...
– В противном случае (информационная ремарка на оставшемся условии), утверждение n
Каждое утверждение "If ... Otherwise, if ... Otherwise, ..." в тексте вводится со словами "... как следует" или "... применяется следующее" за которыми сразу следует "If ... ". Последнее условие в цепочке "If ... Otherwise, if ... Otherwise, ..." всегда " Otherwise, ...". Перемежение утверждений "If ... Otherwise, if ... Otherwise, ..." может быть идентифицировано согласованием "... как следует" или "... применяется следующее" с завершающим " Otherwise, ...".
В тексте, формулировка логических операций, которые математически можно описать следующим образом:
if( условие 0a && условие 0b )
утверждение 0
else if( условие 1a | | условие 1b )
утверждение1
...
Else
утверждение n
может быть описано следующим образом:
... как указано далее / ... применяется следующее:
– Если все следующие условия являются истинными (true), утверждение 0:
– условие 0a
– условие 0b
– В противном случае, если одно или несколько из следующих условий являются истинными, утверждение 1:
– условие 1a
– условие 1b
– ...
– В противном случае, утверждение n
В тексте, формулировка логических операций, которые математически можно описать следующим образом:
if( условие 0 )
утверждение 0
if( условие 1 )
утверждение 1
может быть описано следующим образом:
При условии 0, утверждение 0
При условии 1, утверждение 1
Хотя варианты настоящего изобретения были описаны главным образом на основе кодирования видео, следует отметить, что варианты системы 10 кодирования, кодирующего устройства 20 и декодирующего устройства 30 (и соответственно системы 10) и другие варианты, описываемые здесь, могут также быть конфигурированы для обработки или кодирования неподвижных изображений, т.е. обработки или кодирования индивидуальных изображений независимо от любых предшествующих или последующих изображений, как при кодировании видео. В общем случае, только модули межкадрового прогнозирования 244 (кодирующее устройство) и 344 (декодирующее устройство) могут отсутствовать, если кодирующая обработка изображения ограничивается единственным изображением 17. Все остальные функциональные возможности (также называемые инструментами или технологиями) кодирующего устройства 20 для видео и декодирующего устройства 30 для видео могут в равной степени быть использованы для обработки неподвижных изображений, например, вычисление остатка 204/304, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, разбиение 262/362, внутрикадровое прогнозирование 254/354, и/или контурная фильтрация 220, 320, а также энтропийное кодирование 270 и энтропийное декодирование 304.
Варианты, например, кодирующее устройство 20 и декодирующее устройство 30, и описываемые здесь функции, например, со ссылками на кодирующее устройство 20 и декодирующее устройство 30, могут быть реализованы в аппаратуре, загружаемом программном обеспечении, встроенном программном обеспечении или комбинации этих компонентов. В случае реализации в загружаемом программном обеспечении эти функции могут быть сохранены на читаемых компьютером носителях или переданы через средства связи в виде одной или нескольких команд или кода и выполнены посредством аппаратного процессорного модуля. Совокупность читаемых компьютером носителей может содержать читаемые компьютером носители для хранения информации, которые соответствуют материальным носителям, таким как носители для хранения данных, или средства связи, включая любые носители, способствующие передаче компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, читаемые компьютером носители могут, в общем случае, соответствовать (1) материальным читаемым компьютером носителям для хранения информации, являющимся энергонезависимыми, или (2) средствам связи, таким как сигнал или волна несущей. Носители для хранения данных могут представлять собой какие-либо доступные носители, к которым могут обращаться и получать доступ один или несколько компьютеров и один или несколько процессоров для вызова команд, кода и/или структур данных для реализации способов, предлагаемых в настоящем изобретении. Компьютерный программный продукт может содержать читаемый компьютером носитель.
В качестве неограничивающего примера, такие читаемые компьютером носители для хранения информации могут представлять собой ЗУПВ (RAM), ПЗУ (ROM), ЭСППЗУ (EEPROM), CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, устройство флэш-памяти или другой носитель, который может быть использован для сохранения нужного программного кода в форме команд или структур данных и к которому может обращаться и получать доступ компьютер. Кроме того, любое соединение правильно называть читаемым компьютером носителем. Например, если команды передавать с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио или связь в СВЧ-диапазоне, тогда все это – коаксиальный кабель, оптоволоконный кабель, витая пара, линия DSL, или беспроводные технологии, такие как инфракрасные, радио и СВЧ, включены в определение носителя. Следует понимать, однако, что термины «читаемые компьютером носители для хранения информации» и «носители для хранения данных» не охватывает соединения, волны несущих, сигналов или другие временные носители, а направлены на энергонезависимые материальные носители для хранения информации. Термин диски, как он используется здесь, охватывает компакт-диски (compact disc (CD)), лазерные диски, оптические диски, цифровые универсальные диски (digital versatile disc (DVD)), гибкие диски и диски Блю-рей, где disk обычно воспроизводит данные магнитным способом, а disc воспроизводит данные оптическим способом с использованием лазеров. Комбинации перечисленных выше носителей также должны быть отнесены к области читаемых компьютером носителей.
Команды могут быть выполнены одним или несколькими процессорами, таким как один или несколько цифровых процессоров сигнала (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), либо другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», как он используется здесь, может относиться к любой из перечисленных выше структур или к другой структуре, подходящей для осуществления описываемых здесь способов. В дополнение к этому, в некоторых аспектах, описываемые здесь функциональные возможности могут быть реализованы в специализированной аппаратуре и/или в модулях программного обеспечения, конфигурированных для кодирования и декодирования, либо встроенных в комбинированный кодек. Кроме того, эти способы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Способы согласно настоящему изобретению могут быть реализованы в широком спектре устройств или аппаратуры, включая беспроводную головную гарнитуру, интегральную схему (integrated circuit (IC)) или группу схем IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящей заявке с целью подчеркнуть функциональные аспекты устройств, конфигурированных для осуществления описываемых способов, но не обязательно требуют реализации разными аппаратными модулями. Напротив, как описано выше, различные модули могут быть объединены в аппаратуре кодека или реализованы в наборе взаимодействующих аппаратных модулей, включая один или несколько процессоров, как описано выше, в сочетании с соответствующим загружаемым и/или встроенным программным обеспечением.
В частности, здесь предложены следующие десять аспектов, пронумерованные как аспекты 1–10.
1. Аспект способа декодирования потока битов данных видео или изображения, осуществляемого устройством декодирования, где этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит: Когда синтаксический элемент, специфицирующий идентификатор (например, идентификатор vps_layer_id[0]) текущего кодированного слоя видео, не присутствует в потоке битов данных (например, набор VPS не присутствует), использование идентификатора набора параметров последовательности в этом потоке битов данных в качестве идентификатора текущего кодированного слоя видео; Прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
2. Аспект способа согласно аспекту 1, в котором использование идентификатора набора параметров последовательности в потоке битов данных в качестве идентификатора текущего кодированного слоя видео служит для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и процедура прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео содержит: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
3. Аспект способа декодирования потока битов данных видео или изображения, осуществляемого устройством декодирования, где этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит: Когда синтаксический элемент, специфицирующий идентификатор (например, идентификатор vps_layer_id[0]) текущего кодированного слоя видео, не присутствует в потоке битов данных (например, набор VPS не присутствует), использование идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео; Прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
4. Аспект способа согласно аспекту 3, в котором использование идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео служит для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео; и процедура прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео содержит: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
5. Аспект способа согласно аспекту 3 или 4, в котором указанная единица NAL текущего кодированного слоя видео является первой единицей не-VCL NAL или первой единицей VCL NAL текущего кодированного слоя видео, присутствующей в потоке битов данных.
6. Аспект способа согласно аспекту 3 или 4, в котором указанная единица NAL текущего кодированного слоя видео представляет собой любую одну единицу NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
7. Аспект декодирующего устройства (30), содержащего процессорную схему для осуществления способа согласно какому-либо одному из аспектов 1–6.
8. Аспект компьютерного программного продукта, содержащего программный код для осуществления способа согласно какому-либо одному из предшествующих аспектов 1 – 6 при выполнении этого кода компьютером или процессором.
9. Аспект декодирующего устройства, содержащего: один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими процессорами и сохраняющий программу для выполнения этими процессорами, где эта программа при выполнении процессорами конфигурирует декодирующее устройство для осуществления способа согласно какому-либо одному из предшествующих аспектов 1–6.
10. Аспект энергонезависимого читаемого компьютером носителя, несущего программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ согласно какому-либо одному из предшествующих аспектов 1–6.
Изобретение относится к области обработки изображений и, более конкретно, к кодированию видео. Техническим результатом является повышение коэффициента сжатия видео. Результат достигается определением того, что текущий кодированный слой из видеопотока битов данных является единственным слоем в потоке битов данных, когда набор параметров видео (VPS) не присутствует в потоке битов данных; и когда определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных, используют идентификатор слоя единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео. 11 н. и 11 з.п. ф-лы, 15 ил., 3 табл.
1. Способ декодирования потока битов данных видео или изображения, осуществляемый устройством декодирования, в котором этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит:
определение, что текущий кодированный слой видео является единственным слоем в потоке битов данных, когда набор параметров видео (VPS) не присутствует в потоке битов данных; и
когда определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных, использование идентификатора слоя единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео.
2. Способ по п. 1, этот способ дополнительно содержит:
прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
3. Способ по п. 1 или 2, этот способ дополнительно содержит:
если определено, что поток битов данных содержит несколько слоев, получение идентификатора текущего кодированного слоя видео посредством синтаксического анализа потока битов данных.
4. Способ по какому-либо одному из пп. 1-3, в котором идентификатор текущего кодированного слоя видео используется для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео;
и в котором процедура прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео содержит: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
5. Способ по какому-либо одному из пп. 1-4, в котором указанная единица NAL текущего кодированного слоя видео представляет собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
6. Способ по п. 5, в котором указанная единица VCL NAL текущего кодированного слоя видео представляет собой какую-либо одну единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
7. Способ кодирования потока битов данных видео или изображения, осуществляемый устройством кодирования, в котором этот поток битов данных содержит данные, представляющие текущий кодированный слой видео, этот способ содержит:
определение, что текущий кодированный слой видео является единственным слоем в потоке битов данных, когда набор параметров видео (VPS) не присутствует в потоке битов данных; и
когда определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных, использование идентификатора слоя единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео.
8. Способ по п. 7, этот способ дополнительно содержит:
прогнозирование текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео.
9. Способ по п. 7 или 8, этот способ дополнительно содержит:
если определено, что поток битов данных содержит несколько слоев, кодирование идентификатора текущего кодированного слоя видео и преобразование его в поток битов данных.
10. Способ по какому-либо одному из пп. 7-9, в котором использование идентификатора единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео служит для построения одного или нескольких списков опорных изображений для текущего среза текущего кодированного слоя видео;
и в котором процедура прогнозирования текущего среза текущего кодированного слоя видео с использованием идентификатора текущего кодированного слоя видео содержит: прогнозирование текущего среза с использованием указанных одного или нескольких списков опорных изображений.
11. Способ по какому-либо одному из пп. 7-10, в котором указанная единица NAL текущего кодированного слоя видео представляет собой единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
12. Способ по п. 11, в котором указанная единица VCL NAL текущего кодированного слоя видео представляет собой какую-либо одну единицу VCL NAL текущего кодированного слоя видео, присутствующую в потоке битов данных.
13. Устройство декодирования, содержащее процессорную схему для осуществления способа согласно какому-либо одному из пп. 1-6.
14. Устройство кодирования, содержащее процессорную схему для осуществления способа согласно какому-либо одному из пп. 7-12.
15. Устройство декодирования, содержащее:
один или несколько процессоров; и
энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими одним или несколькими процессорами и сохраняющий программу для выполнения одним или несколькими процессорами, в котором эта программа, при выполнении ее одним или несколькими процессорами, конфигурирует устройство декодирования для осуществления способа по какому-либо одному из пп. 1-6.
16. Устройство кодирования, содержащее:
один или несколько процессоров; и
энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими одним или несколькими процессорами и сохраняющий программу для выполнения одним или несколькими процессорами, в котором эта программа, при выполнении ее одним или несколькими процессорами, конфигурирует устройство кодирования для осуществления способа по какому-либо одному из пп. 7-12.
17. Энергонезависимый читаемый компьютером носитель для хранения информации, несущий программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ по какому-либо одному из пп. 1-6.
18. Энергонезависимый читаемый компьютером носитель для хранения информации, несущий программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ по какому-либо одному из пп. 7-12.
19. Аппаратура для декодирования потока битов данных видео, в которой эта аппаратура содержит:
решающий модуль, конфигурированный для определения, что текущий кодированный слой видео является единственным слоем в потоке битов данных, когда набор параметров видео (VPS) не присутствует в потоке битов данных;
модуль прогнозирования, конфигурированный для использования идентификатора слоя единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео, если определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных.
20. Аппаратура для кодирования потока битов данных видео, в которой эта аппаратура содержит:
решающий модуль, конфигурированный для определения, что текущий кодированный слой видео является единственным слоем в потоке битов данных, когда набор параметров видео (VPS) не присутствует в потоке битов данных;
модуль прогнозирования, конфигурированный для использования идентификатора слоя единицы NAL текущего кодированного слоя видео в качестве идентификатора текущего кодированного слоя видео, если определено, что текущий кодированный слой видео является единственным слоем в потоке битов данных.
21. Устройство для сохранения потоков битов данных видео или изображения, содержащее интерфейс связи и носитель для хранения информации, в котором интерфейс связи конфигурирован для приема потока битов данных видео или изображения, а носитель для хранения информации конфигурирован для сохранения этого потока битов данных, в котором этот поток битов данных содержит синтаксический элемент sps_video_parameter_set_id, синтаксический элемент nuh_layer_id и данные, представляющие текущий кодированный слой видео; так что когда идентификатор sps_video_parameter_set_id равен 0, текущий кодированный слой видео является единственным слоем в потоке битов данных, а идентификатор nuh_layer_id используется в качестве идентификатора текущего кодированного слоя видео.
22. Устройство по п. 21, в котором интерфейс связи дополнительно конфигурирован для передачи потока битов данных другому устройству.
WO 2014038906 A1, 2014.03.13 | |||
US 2014181885 A1, 2014.06.26 | |||
US 2015063453 A1, 2015.03.05 | |||
CN 101180883 A, 2008.05.14 | |||
WO 2016205747 A1, 2016.12.22 | |||
US 9451289 B2, 2016.09.20 | |||
ПРИМЕНИМОСТЬ БИТОВОГО СУБПОТОКА К ВЛОЖЕННЫМ SEI-СООБЩЕНИЯМ ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2633100C2 |
ПЕРЕНОС ПОТОКОВ БИТОВ РАСШИРЕНИЯ СТАНДАРТА ВЫСОКОЭФФЕКТИВНОГО КОДИРОВАНИЯ ВИДЕО (HEVC) И БУФЕРНОЙ МОДЕЛИ С ПОМОЩЬЮ СИСТЕМ СТАНДАРТА ЭКСПЕРТНОЙ ГРУППЫ ПО ДВИЖУЩИМСЯ ИЗОБРАЖЕНИЯМ (MPEG)-2 | 2015 |
|
RU2685233C2 |
Авторы
Даты
2024-12-28—Публикация
2021-03-17—Подача