Перекрестные ссылки на родственные заявки
Настоящая заявка испрашивает приоритет международной заявки No. PCT/CN2019/130804, поданной 31 декабря 2019 г., и международной заявки No. PCT/CN2020/070153, поданной 2 января 2020 г., все содержание которых включено сюда посредством ссылки во всей своей полноте.
Область техники, к которой относится изобретение
Варианты настоящей заявки (изобретения) относятся, в общем, к области обработки изображений и более конкретно к кодирующему устройству, декодирующему устройству и соответствующим способам и аппаратуре.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широчайшем спектре цифровых приложений видео, например, в цифровом телевизионном вещании (TV), в передаче видео через Интернет и через сети мобильной связи, в разговорных приложениях, работающих в реальном времени, таких как видеочаты, видеоконференцсвязь, в области дисков DVD и дисков «Блю-рей» (Blu-ray), системах получения и редактирования видеоконтента и в записывающих видеокамерах для приложений обеспечения безопасности.
Количество данных видео, необходимых для описания даже относительно короткого видеоролика, может быть весьма существенным, что может привести к затруднениям при потоковой или иной передаче данных через сеть связи с ограниченной полосой пропускания. Поэтому данные видео обычно сжимают перед тем, как передавать их по современным телекоммуникационным сетям. Размер ролика может также быть проблемой, когда нужно сохранить этот видеоролик в запоминающем устройстве, поскольку объем ресурсов памяти может быть ограничен. Устройства сжатия видео часто используют программное обеспечение и/или оборудование в источнике видео для кодирования данных видео прежде их передачи или записи в запоминающем устройстве, уменьшая тем самым количество данных, необходимых для представления изображений цифрового видео. После этого, в пункте назначения принимают сжатые данные посредством устройства расширения (декомпрессии) видео, которое декодирует данные видео. В условиях ограниченности сетевых ресурсов и все возрастающей потребности в получении видео более высокого качества, желательно разработать усовершенствованные способы сжатия и расширения видео, которые позволили бы повысить коэффициент сжатия ценой незначительного или даже вообще отсутствующего ущерба для качества изображения.
Сущность изобретения
Варианты настоящей заявки предлагают аппаратуру и способы кодирования и декодирования в соответствии с независимыми пунктами Формулы изобретения.
Упомянутые выше и другие цели настоящего изобретения достигаются с применением предмета независимых пунктов Формулы изобретения. Другие формы реализации настоящего изобретения ясны из зависимых пунктов Формулы, настоящего описании и чертежей.
Конкретные варианты описаны в независимых пунктах Формулы изобретения, а другие варианты - в зависимых пунктах.
Согласно первому аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео или кодирования. Этот способ осуществляется в аппаратуре для декодирования потока битов данных кодированного видео. Этот способ содержит:
получение синтаксического элемента опорного слоя путем синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k являются целыми числами не меньше 0;
определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j - целое число не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно первому аспекту, как такового, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
Согласно второму аспекту, настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео. Этот способ содержит:
получение синтаксического элемента опорного слоя посредством синтаксического анализа поток битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j являются целыми числами не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первого аспекта или второго аспекта как таковых, указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (video parameter set (VPS)), где этот набор VPS применяется и к слою с индексом j, и к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первого аспекта или второго аспекта как таковых, указанный относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (sequence parameter set (SPS)), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из возможных вариантов реализации способ согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первого аспекта или какого-либо из предшествующих вариантов реализации второго аспекта или второго аспекта как таковых дополнительно содержит:
получение относящегося к цветовому формату синтаксического элемента применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способ согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первому аспекту, как таковому, дополнительно содержит:
если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, остановку декодирования потока битов данных кодированного видео.
В одном из возможных вариантов реализации способ согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первому аспекту, как таковому, дополнительно содержит:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
В одном из возможных вариантов реализации способ согласно какому-либо из предыдущих вариантов реализации первого аспекта, либо первому аспекту или какому-либо из предшествующих вариантов реализации второго аспекта или второму аспекту как таковым дополнительно содержит:
если удовлетворяется указанное условие, определение, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, представляет собой величину относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
Согласно третьему аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео. Этот способ содержит:
получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0;
определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно третьему аспекту, как таковому, если величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
Согласно четвертому аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео. Этот способ содержит:
получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предыдущих вариантов реализации третьего аспекта, или первого аспекта, или четвертого аспекта, как такового, синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предыдущих вариантов реализации третьего аспекта, или первого аспекта, или четвертого аспекта, как такового, относящийся к битовой глубине синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из возможных вариантов реализации способ согласно какому-либо из предыдущих вариантов реализации третьего аспекта, либо третьему аспекта или какому-либо из предшествующих вариантов реализации четвертого аспекта или четвертому аспекту как таковым дополнительно содержит:
получение относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способ согласно какому-либо из предшествующих вариантов реализации третьего аспекта или третьему аспекту, как таковому, дополнительно содержит:
если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, остановку декодирования потока битов данных кодированного видео.
В одном из возможных вариантов реализации способ согласно какому-либо из предшествующих вариантов реализации третьего аспекта или третьему аспекту, как таковому, дополнительно содержит:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
В одном из возможных вариантов реализации способ согласно какому-либо из предшествующих вариантов реализации третьего аспекта или третьему аспекту, либо какому-либо из предшествующих вариантов реализации четвертого аспекта или четвертому аспекту, как таковым, дополнительно содержит:
если удовлетворяется указанное условие, определение, без получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предыдущих вариантов реализации третьего аспекта, либо третьему аспекта или какому-либо из предшествующих вариантов реализации четвертого аспекта или четвертому аспекту как таковым, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной и цветностной составляющих изображения в слое, к которому применим этот относящийся к битовой глубине синтаксический элемент.
Согласно пятому аспекту настоящее изобретение относится к способу кодирования видео. Этот способ осуществляется аппаратурой для кодирования видео. Этот способ содержит:
определение, является ли слой с индексом j прямым опорным слоем с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставку этой кодированной величины в поток битов данных видео, и кодирование относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставку этих кодированных величин в поток битов данных видео, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента применяем к слою с индексом j.
В одном из возможных вариантов реализации способ согласно пятому аспекту, как таковому, дополнительно содержит:
если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на основе слоя с индексом j.
В одном из возможных вариантов реализации способ согласно пятому аспекту, как таковому, дополнительно содержит:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
Согласно шестому аспекту настоящее изобретение относится к способу кодирования видео. Этот способ осуществляется аппаратурой для кодирования видео. Этот способ содержит:
определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставку этой кодированной величины в поток битов данных видео, и кодирование относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и вставку этих кодированных величины в поток битов данных видео, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способ согласно шестому аспекту, как таковому, дополнительно содержит:
если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на основе слоя с индексом j.
В одном из возможных вариантов реализации способ согласно пятому аспекту, как таковому, дополнительно содержит:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации шестого аспекта или шестому аспекту, как таковому, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной и цветностной составляющих изображения в слое, к которому применяется указанный относящийся к битовой глубине синтаксический элемент.
Согласно седьмому аспекту настоящее изобретение относится к аппаратуре для декодирования потока битов данных кодированного видео. Эта аппаратура содержит:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0;
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно седьмому аспекту, как таковому, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
Согласно восьмому аспекту настоящее изобретение относится к аппаратуре для декодирования потока битов данных кодированного видео. Эта аппаратура содержит:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, либо восьмому аспекту, как таковому, синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, либо восьмому аспекту, как таковому, относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, либо какому-либо из предшествующих вариантов реализации восьмого аспекта или восьмому аспекту, как таковому, получающий модуль далее выполнен с возможностью получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способ согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, как таковому, далее используется модуль остановки;
этот модуль остановки выполнен с возможностью остановки декодирования потока битов данных кодированного видео, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, как таковому, получающий модуль дополнительно выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации седьмого аспекта или седьмому аспекту, или какому-либо из предшествующих вариантов реализации восьмого аспекта или восьмому аспекту, как таковому, решающий модуль дополнительно выполнен с возможностью определения, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина этого относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, если удовлетворяется указанное условие.
Согласно девятому аспекту настоящее изобретение относится к аппаратуре для декодирования потока битов данных кодированного видео. Эта аппаратура содержит:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i and k представляют собой целые числа не меньше 0;
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способ согласно девятому аспекту, как таковому, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
Согласно десятому аспекту настоящее изобретение относится к аппаратуре для декодирования потока битов данных кодированного видео. Эта аппаратура содержит:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, либо десятому аспекту, как таковому, указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, либо десятому аспекту, как таковому, указанный относящийся к битовой глубине синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, либо согласно какому-либо из предшествующих вариантов реализации десятого аспекта или десятому аспекту, как таковому, получающий модуль дополнительно выполнен с возможностью получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, как таковому, далее используется модуль остановки;
этот модуль остановки выполнен с возможностью остановки декодирования потока битов данных кодированного видео, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, как таковому, прогнозирующий модуль дополнительно выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, либо согласно какому-либо из предшествующих вариантов реализации десятого аспекта или десятому аспекту, как таковому, решающий модуль дополнительно выполнен с возможностью определения, без получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина этого относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации девятого аспекта или девятому аспекту, либо согласно какому-либо из предшествующих вариантов реализации десятого аспекта или десятому аспекту, как таковому, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется указанный относящийся к битовой глубине синтаксический элемент.
Согласно одиннадцатому аспекту настоящее изобретение относится к аппаратуре для кодирования видео. Эта аппаратура содержит:
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
кодирующий модуль, выполненный с возможностью кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированного элемента в поток битов данных видео, и кодирования относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных величин в поток битов данных видео, если слой с индексом j является прямым опорным слоем для слоя с индексом i, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов реализации способа согласно одиннадцатому аспекту, как таковому, дополнительно применяется первый прогнозирующий модуль;
первый прогнозирующий модуль выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно одиннадцатому аспекту, как таковому, дополнительно применяется второй прогнозирующий модуль;
первый прогнозирующий модуль выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
Согласно двенадцатому аспекту настоящее изобретение относится к аппаратуре для кодирования видео. Эта аппаратура содержит:
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
кодирующий модуль, выполненный с возможностью кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированного элемента в поток битов данных видео, и кодирования относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных элементов в поток битов данных видео, если слой с индексом j является прямым опорным слоем для слоя с индексом i, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из возможных вариантов способа согласно двенадцатому аспекту, как таковому, дополнительно применяется первый прогнозирующий модуль;
этот первый прогнозирующий модуль выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если слой с индексом j является прямым опорным слоем для слоя с индексом i.
В одном из возможных вариантов способа согласно двенадцатому аспекту, как таковому, дополнительно применяется второй прогнозирующий модуль;
этот второй прогнозирующий модуль выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двенадцатого аспекта или двенадцатому аспекту, как таковому, указанный относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей в изображении слоя, к которому применяется этот относящийся к битовой глубине синтаксический элемент.
Согласно тринадцатому аспекту настоящее изобретение относится к кодирующему устройству, содержащему процессорную схему для осуществления способа согласно пятому или шестому аспекту.
Согласно четырнадцатому аспекту настоящее изобретение относится к декодирующему устройству, содержащему процессорную схему для осуществления способа согласно первому аспекту, второму аспекту, третьему аспекту или четвертому аспекту.
Согласно четырнадцатому аспекту настоящая заявка относится к компьютерному программному продукту, содержащему программный код для осуществления способа согласно какому-либо одному из аспектов с первого по шестой аспект при выполнении этого программного кода на компьютере или в процессоре.
Согласно пятнадцатому аспекту настоящая заявка относится к декодирующему устройству, содержащему: один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими одним или несколькими процессорами и сохраняющий программы для выполнения этими процессорами, где эти программы при выполнении их процессорами, конфигурируют декодирующее устройство для осуществления способа согласно первому аспекту, второму аспекту, третьему аспекту или четвертому аспекту.
Согласно шестнадцатому аспекту настоящая заявка относится к кодирующему устройству, содержащему: один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими одним или несколькими процессорами и сохраняющий программы для выполнения этими процессорами, где эти программы при выполнении их процессорами, конфигурируют декодирующее устройство для осуществления способа согласно пятому аспекту или шестому аспекту.
Согласно семнадцатому аспекту настоящая заявка относится к энергонезависимому читаемому компьютером носителю для хранения информации, сохраняющему программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ согласно какому-либо из аспектов с первого по шестой аспект.
Согласно восемнадцатому аспекту настоящая заявка относится к энергонезависимому носителю для хранения информации, содержащему кодированный поток битов данных, декодируемый устройством для декодирования изображения, этот поток битов данных содержит кодированные данные по меньшей мере одного слоя, где этот поток битов данных далее содержит относящийся к цветовому формату синтаксический элемент для слоя с индексом i и относящийся к цветовому формату синтаксический элемент для слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к цветовому формату синтаксического элемента для слоя с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
Согласно девятнадцатому аспекту настоящая заявка относится к энергонезависимому носителю для хранения информации, который содержит кодированный поток битов данных, декодируемый устройством для декодирования изображения, этот поток битов данных содержит кодированные данные по меньшей мере одного слоя, где указанный поток битов данных далее содержит относящийся к битовой глубине синтаксический элемент для слоя с индексом i и относящийся к битовой глубине синтаксический элемент для слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к битовой глубине синтаксического элемента для слоя с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
В одном из возможных вариантов реализации способа согласно девятнадцатому аспекту, как таковому, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и отсчетов цветностной составляющей изображения в слое, к которому применяется указанный относящийся к битовой глубине синтаксический элемент.
В одном из возможных вариантов способа согласно восемнадцатому аспекту или какому-либо из предшествующих вариантов реализации девятнадцатого аспекта или девятнадцатому аспекту, как таковому, где указанный поток битов данных далее содержит синтаксический элемент опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом i, способ содержит: величина синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Согласно двадцатому аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: синтаксический анализ для выделения первого синтаксического элемента, используемого для определения максимально допустимого числа слоев; когда удовлетворяется первое условие, прогнозирование изображения текущего слоя при условии, что величина второго синтаксического элемента, специфицирующего третий синтаксический элемент, не присутствует в потоке битов данных кодированного видео, где указанное первое условие состоит в том, что величина первого синтаксического элемента специфицирует, что максимально допустимое число слоев равно 1.
В одном из возможных вариантов реализации способа согласно двадцатому аспекту, как таковому, где первый синтаксический элемент входит в набор VPS для потока битов данных кодированного видео и используется для определения максимально допустимого числа слоев в каждой последовательности CVS, обращающейся к этому набору VPS.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцатого аспекта или двадцатому аспекту, как таковому, где процедура прогнозирования изображения текущего слоя с индексом на условии, что величина второго синтаксического элемента, специфицирующего третий синтаксический элемент, не присутствует в потоке битов данных кодированного видео, содержит: прогнозирование текущего слоя с индексом на условии, что величина второго синтаксического элемента, специфицирующего третий синтаксический элемент, не присутствует в заголовках PH, обращающихся к набору SPS, в потоке битов данных кодированного видео, и указанный второй синтаксический элемент входит в набор SPS.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцатого аспекта или двадцатому аспекту, как таковому, этот способ дополнительно содержит: когда удовлетворяется первое условие, определение, что величина второго синтаксического элемента специфицирует, что третий синтаксический элемент, не присутствует в потоке битов данных кодированного видео.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцатого аспекта или двадцатому аспекту, как таковому, третий синтаксический элемент специфицирует, присутствует ли в заголовке PH синтаксический элемент, представляющий величину POC MSB (младшего бита числа изображений), и третий синтаксический элемент включен в заголовок PH.
Согласно двадцать первому аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: синтаксический анализ для выделения первого синтаксического элемента, специфицирующего, использует ли слой с индексом i межслойное прогнозирование, где i представляет собой целое число и это число i больше 0; когда удовлетворяется первое условие, состоящее в том, что первый синтаксический элемент специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на условии, что величина относящегося к цветовому формату синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к цветовому формату синтаксического элемента для слоя с индексом j, где согласно первому условию индекс j представляет собой целое число и этот индекс j больше 0.
В одном из возможных вариантов реализации способа согласно двадцать первому аспекту, как таковому, этот способ далее содержит: когда удовлетворяется первое условие, определение, что величина относящегося к цветовому формату синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к цветовому формату синтаксического элемента для слоя с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать первого аспекта или двадцать первому аспекту, как таковому, относящийся к цветовому формату синтаксический элемент содержит параметр chroma_format_idc или флаг separate_colour_plane_flag.
Согласно двадцать второму аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: синтаксический анализ для выделения первого синтаксического элемента, специфицирующего, использует ли слой с индексом i межслойное прогнозирование, индекс i представляет собой целое число и этот индекс больше 0; когда удовлетворяется первое условие, состоящее в том, что величина первого синтаксического элемента специфицирует, что слой с индексом j является первым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на условии, что величина относящегося к битовой глубине синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к битовой глубине синтаксического элемента для слой с индексом j, где используемый в первом условии индекс j представляет собой целое число и этот индекс j больше 0.
В одном из возможных вариантов реализации способа согласно двадцать второму аспекту, как таковому, способ далее содержит: когда удовлетворяется указанное первое условие, определение, что величина относящегося к битовой глубине синтаксического элемента для слоя с индексом i является такой же, как величина относящегося к битовой глубине синтаксического элемента для слоя с индексом j.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать второго аспекта или двадцать второму аспекту, как таковому, указанный относящийся к битовой глубине синтаксический элемент содержит параметр bit_depth_minus8.
Согласно двадцать третьему аспекту настоящее изобретение относится к способу декодирования поток битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: определение максимально допустимого числа слоев; когда удовлетворяется первое условие, прогнозирование изображения текущего слоя на условии, что величина первого синтаксического элемента специфицирует, что второй синтаксический элемент не присутствует в потоке битов данных кодированного видео, где указанное первое условие состоит в том, что величина максимально допустимого числа f слоев равна 1.
Согласно двадцать четвертому аспекту настоящее изобретение относится к способу декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: получение числа слоев в потоке битов данных видео; когда удовлетворяется первое условие, состоящее в том, что число слоев больше 1, прогнозирование изображений слоев с одинаковой величиной относящихся к цветовому формату синтаксических элементов.
В одном из возможных вариантов реализации способа согласно двадцать четвертому аспекту, как таковому, где этот способ далее содержит: когда удовлетворяется указанное первое условие, определение, что величины относящихся к цветовому формату синтаксических элементов являются одинаковыми.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать четвертого аспекта или двадцать четвертому аспекту, как таковому, где относящийся к цветовому формату синтаксический элемент содержит параметр chroma_format_idc или флаг separate_colour_plane_flag.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать четвертого аспекта или двадцать четвертому аспекту, как таковому, процедура получения числа слоев в потоке битов данных видео содержит: синтаксический анализ для выделения синтаксического элемента, используемого для определения максимально допустимого числа слоев с целью получения числа слоев (например, vps_max_layers_minus1).
Согласно двадцать пятому аспекту настоящее изобретение относится к способу для декодирования потока битов данных кодированного видео, этот способ осуществляется аппаратурой для декодирования потока битов данных кодированного видео, этот способ содержит: получение числа слоев в потоке битов данных видео; когда удовлетворяется первое условие, состоящее в том, число слоев больше 1, прогнозирование изображений слоев с одинаковыми величинами относящихся к битовой глубине синтаксических элементов.
В одном из возможных вариантов реализации способа согласно двадцать пятому аспекту, как таковому, этот способ дополнительно содержит: когда удовлетворяется первое условие, определение, что величины относящихся к битовой глубине синтаксических элементов для этих слоев являются одинаковыми.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать пятого аспекта или двадцать пятому аспекту, как таковому, относящийся к битовой глубине синтаксический элемент содержит параметр bit_depth_minus8.
В одном из возможных вариантов реализации способа согласно какому-либо из предшествующих вариантов реализации двадцать пятого аспекта или двадцать пятому аспекту, как таковому, процедура получения числа слоев в потоке битов данных видео содержит: синтаксический анализ для выделения синтаксического элемента, используемого для определения максимально допустимого числа слоев с целью получения числа слоев (например, vps_max_layers_minus1).
Согласно двадцать шестому аспекту настоящая заявка относится к декодирующему устройству, содержащему процессорную схему для осуществления способа согласно какому-либо одному из аспектов с двадцать первого аспекта по двадцать пятый аспект.
Согласно двадцать седьмому аспекту настоящая заявка относится к компьютерному программному продукту, содержащему программный код для осуществления способа согласно какому-либо одному из аспектов с двадцать первого аспекта по двадцать пятый аспект, при выполнении этого программного кода компьютером или процессором.
Согласно двадцать восьмому аспекту настоящая заявка относится к декодирующему устройству, содержащему: один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с процессорами и сохраняющий программы для выполнения процессорами, где эти программы, при выполнении процессорами, конфигурируют декодирующее устройство для осуществления способа согласно какому-либо одному из аспектов с двадцать первого аспекта по двадцать пятый аспект.
Согласно двадцать девятому аспекту настоящая заявка относится к энергонезависимому читаемому компьютером носителю для хранения информации, содержащему программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ согласно какому-либо одному из аспектов с двадцать первого аспекта по двадцать пятый аспект.
Подробности одного или нескольких вариантов приведены на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества станут ясны из описания, чертежей и Формулы изобретения.
Согласно одному из вариантов настоящей заявки, синтаксический элемент опорного слоя получают посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0; определяют, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i, достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает проектирование проще.
Краткое описание чертежей
В приведенных далее вариантах настоящее изобретение описано более подробно со ссылками на прилагаемые чертежи, на которых:
Фиг. 1A представляет блок-схему, показывающую пример системы кодирования видео, выполненной с возможностью осуществления вариантов настоящей заявки;
Фиг. 1B представляет блок-схему, показывающую другой пример системы кодирования видео, выполненной с возможностью осуществления вариантов настоящей заявки;
Фиг. 2 представляет блок-схему, показывающую пример кодирующего устройства для видео, конфигурированного для осуществления вариантов настоящей заявки;
Фиг. 3 представляет блок-схему, показывающую пример структуры декодирующего устройства для видео, конфигурированного для осуществления вариантов настоящей заявки;
Фиг. 4 представляет блок-схему, иллюстрирующую пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 5 представляет блок-схему, иллюстрирующую другой пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 6 представляет иллюстративную диаграмму, показывающую масштабируемое кодирование с 2 слоями;
Фиг. 7 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 8 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 9 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 10 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 11 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 12 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 13 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 14 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 15 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 16 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 17 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 18 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 19 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 20 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 21 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 22 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки;
Фиг. 23 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 24 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 25 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 26 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки;
Фиг. 27 представляет блок-схему, показывающую пример структуры системы 3100 передачи контента, реализующей сервис доставки контента; и
Фиг. 28 представляет блок-схему, показывающую структуру примера устройства терминала.
В последующем идентичные позиционные обозначения присвоены идентичным или по меньшей мере функционально эквивалентным компонентам, если в явном виде не указано иное.
Описание вариантов
В последующем описании ссылки даны на прилагаемые чертежи, которые составляют часть настоящего описания и на которых показаны, посредством иллюстраций, конкретные аспекты вариантов настоящего изобретения или конкретные аспекты, где варианты настоящего изобретения могут быть использованы. Понятно, что варианты настоящего изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на чертежах. Поэтому не следует рассматривать последующее подробное описание в ограничительном смысле, а объем настоящего изобретения определен прилагаемой Формулой изобретения.
Например, понятно, что настоящее изобретение в сочетании с описываемым способом может также оставаться применимым к соответствующему устройству или системе, выполненной с возможностью осуществления этого способа, и наоборот. Например, если описываются один или несколько конкретных этапов способа, соответствующее устройство может содержать один или несколько модулей, например, функциональных модулей, для осуществления одного или нескольких описываемых этапов способа (например, один модуль, осуществляющий один или несколько этапов, или несколько модулей, каждый из которых осуществляет один или несколько этапов), даже если такие один или несколько модулей не описаны здесь в явном виде или не иллюстрированы на чертежах. С другой стороны, например, если конкретная аппаратура описана на основе одного или нескольких модулей, например, функциональных модулей, соответствующий способ может содержать один этап для осуществления функций одного или нескольких модулей (например, один этап, осуществляющий функции одного или нескольких модулей, или несколько этапов, каждый из которых осуществляет функции одного или нескольких модулей), даже если такие один или несколько этапов не описываются в явном виде или не иллюстрированы на чертежах. Далее, понятно, что признаки различных примеров вариантов и/или аспектов, описываемых здесь, можно комбинировать одни с другими, если только конкретно не указано иное.
Кодированием видео обычно называется обработка последовательности изображений, которые составляют видеоролик или последовательность видео. В области кодирования видео в качестве синонимов могут быть использованы термины «картинка», «кадр» или «изображение». Кодирование видео (или кодирование вообще) состоит из двух частей - собственно кодирования видео и декодирования видео. Кодирование видео осуществляется на стороне источника и обычно содержит обработку (например, путем сжатия) исходных изображений видео с целью уменьшить объем данных, требуемых для представления этих изображений видео (для более эффективного хранения и/или передачи). Декодирование видео осуществляется на стороне пункта назначения и обычно содержит обработку, обратную относительно обработки в кодирующем устройстве, для реконструкции изображений видео. Следует понимать, что варианты, ссылающиеся на «кодирование» изображений видео (или изображений вообще), относятся к собственно «кодированию» или «декодированию» изображений видео или соответствующих последовательностей видео. Комбинация кодирующей части и декодирующей части также называется кодеком (кодирование и декодирование) (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), либо одну или несколько групп блоков (например, плиток (стандарты H.265/HEVC и VVC) или «кирпичей» (стандарт VVC)).
Варианты кодирующего устройства 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)), шумоподавляющий фильтр (noise suppression filter (NSF)) или какая-либо комбинация таких фильтров. В одном из примеров, модуль 220 контурного фильтра может содержать деблокирующий фильтр, фильтр SAO и фильтр ALF. Порядок осуществления фильтрации может быть следующим - деблокирующий фильтр, фильтр SAO и фильтр ALF. В другом примере добавлена процедура, называемая отображением яркостной составляющей с масштабированием цветностной составляющей (luma mapping with chroma scaling (LMCS)) (а именно, адаптивное внутриконтурное переформирование). Эта процедура осуществляется прежде деблокирования. В другом примере, процедура деблокирующей фильтрации может быть также применена к внутренним кромкам субблоков, например, к кромкам аффинных субблоков, кромкам субблоков с аффинным прогнозированием движения (ATMVP), кромкам субблоков преобразования (sub-block transform (SBT)) и кромкам при внутрикадровом субразбиении (intra sub-partition (ISP)). Хотя модуль 220 контурного фильтра показан на Фиг. 2 как внутриконтурный фильтр, в других конфигурациях этот модуль 220 контурного фильтра может быть реализован в качестве постконтурного фильтра. Фильтрованный блок 221 может также называться фильтрованным реконструированным блоком 221.
Варианты кодирующего устройства 20 для видео (соответственно модуль 220 контурного фильтра) могут быть конфигурированы для передачи на выход параметров контурного фильтра (таких как параметры фильтра SAO или параметры фильтра ALF или параметры масштабирования LMCS), например, напрямую, либо в кодированном виде через модуль 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 разбиения может быть выполнен с возможностью разбиения последовательности видео на последовательность единиц дерева кодирования (CTU) и эти единицы CTU 203 могут быть далее разбиты на единицы разбиения или субблоки меньшего размера (которые снова образуют блоки), например, путем итеративного использования разбиения по схеме дерева квадратов (quad-tree (QT)), разбиения по схеме двоичного дерева (binary-tree (BT)) или разбиения по схеме троичного дерева (triple-tree (TT)) или какой-либо комбинации этих схем разбиения, и для осуществления, например, прогнозирования для каждой единицы разбиения блока или субблока, где процедура выбора режима содержит выбор структуры дерева для разбиваемого блока 203, и указанные режимы прогнозирования применяются к каждой из единиц разбиения блока или к каждому субблоку.
В последующем, разбиение (например, посредством модуля 260 разбиения) и прогнозирование (посредством модуля 244 межкадрового прогнозирования и модуля 254 внутрикадрового прогнозирования), осуществляемые посредством примера кодирующего устройства 20 для видео, будут пояснены более подробно.
Разбиение
Модуль 262 разбиения может быть выполнен с возможностью разбиения изображения из состава последовательности видео, превращая его в последовательность единиц дерева кодирования (CTU), а также модуль 262 разбиения может разбивать (или разделять) единицу 203 дерева кодирования (CTU) на единицы разбиения меньшего размера, например, блоки меньшего размера квадратной или прямоугольной формы. Для изображения, имеющего три массива отсчетов, единица CTU состоит из блока размером N×N отсчетов яркостной составляющей вместе с двумя соответствующими блоками отсчетов цветностных составляющих. Максимально допустимый размер блока яркостной составляющей в единице CTU был при разработке стандарта универсального видеокодирования (VVC) задан равным 128×128, но в будущем может быть также задана величина, отличная от 128×128, например, 256×256. Единицы CTU в изображении могут быть объединены в кластеры/сгруппированы как группы срезов/плиток, плитки или кирпичи. Плитка покрывает прямоугольную область изображения, а также плитка может быть разделена на один или несколько кирпичей. Кирпич содержит несколько строк единиц CTU в пределах плитки. Плитка, не разбитая на несколько кирпичей, может рассматриваться как один кирпич. Однако кирпич представляет собой истинное подмножество для плитки и не считается плиткой. В стандарте кодирования VVC поддерживаются два типа групп плиток, а именно группа срезов/плиток с растровым сканированием и прямоугольный срез. В случае группы плиток с растровым сканированием, группа срезов/плиток содержит последовательность плиток в процессе растрового сканирования изображения. Для типа прямоугольного среза один срез содержит несколько кирпичей изображения, которые коллективно образуют прямоугольную область изображения. Кирпичи в пределах прямоугольного среза располагаются в порядке растрового сканирования кирпичей в этом срезе. Эти блоки меньшего размера (которые могут также называться субблоками) могут быть далее разделены на единицы разбиения еще меньшего размера.
Это также называется разбиением по схеме дерева или разбиением по схеме иерархического дерева, где корневой блок, например, корневой блок на уровне дерева 0 (иерархический уровень 0, глубина 0) может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне дерева 1 (иерархический уровень 1, глубина 1), где эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например, уровня дерева 2 (иерархический уровень 2, глубина 2), и т.д. до тех пор, пока процедура разбиения не завершится, например, поскольку будет выполнен критерий завершения, например, будет достигнута максимальная глубина дерева или минимальный размер блоков. Блоки, которые не подвергнуты дальнейшему разбиению, также называются концевыми блоками или концевыми узлами («листьями») дерева. Дерево, использующее разбиение на две единицы разбиения, называется двоичным деревом (binary-tree (BT)), дерево, использующее разбиение на три единицы разбиения, называется троичным деревом (ternary-tree (TT)), и дерево, использующее разбиение на четыре единицы разбиения, называется деревом квадратов или четвертичным деревом (quad-tree (QT)).
Например, единица дерева кодирования (CTU) может представлять собой или содержать блок CTB отсчетов яркостной составляющей, два соответствующих блока CTB отсчетов цветностных составляющих изображения, имеющего три массива отсчетов, либо блок CTB отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок дерева кодирования (CTB) может представлять собой блок размером N×N отсчетов для некоторого значения N, так что разделение составляющей на блоки CTB является разбиением. Единица кодирования (CU) может представлять собой или содержать блок кодирования отсчетов яркостной составляющей, два соответствующих блока кодирования отсчетов цветностной составляющей изображения, содержащего три массива отсчетов, или блок кодирования отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок кодирования (CB) может представлять собой блок размером M×N отсчетов для некоторых значений M и N, так что разделение блока CTB на блоки кодирования является разбиением.
В ряде вариантов, например, согласно стандарту кодирования HEVC, единица дерева кодирования (CTU) может быть разбита на единицы CU с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, следует ли кодировать какую-то область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) прогнозирования, принимается на уровне единиц CU. Каждая концевая единица CU может быть далее разбита на одну, две или четыре единицы PU в соответствии с типом разбиения на единицы PU. Внутри одной единицы PU применяется один и тот же процесс прогнозирования, а относящуюся к этому информацию передают декодирующему устройству на основе единиц PU. После получения блока остатка в результате применения процедуры прогнозирования на основе типа разбиения на единицы PU, концевая единица CU может быть разбита на единицы преобразования (TU) в соответствии с другой структурой дерева квадратов, аналогичной дереву кодирования для единицы CU.
В некоторых вариантах, например, согласно самой последней разрабатываемой сегодня версии стандарта кодирования, которая называется универсальным видеокодированием (Versatile Video Coding (VVC)), для разбиения блока кодирования применяется, например, комбинированное разбиение по схеме дерева нескольких типов с вложенным деревом квадратов с использованием структуры сегментации с двоичным и троичным разбиением, например, для разбиения дерева кодирования. В структуре дерева кодирования в пределах единицы дерева кодирования, единица CU может иметь либо квадратную, либо прямоугольную форму. Например, единицу дерева кодирования (CTU) сначала разбивают согласно структуре четвертичного дерева. Концевые узлы («листья») четвертичного дерева далее разбивают в соответствии со структурой вложенного дерева нескольких типов. Затем концевые узлы четвертичного дерева могут быть далее разбиты в структуре дерева нескольких типов. Имеются четыре типа разбиения в структуре дерева нескольких типов, а именно вертикальное двоичное разбиение (SPLIT_BT_VER), горизонтальное двоичное разбиение (SPLIT_BT_HOR), вертикальное троичное разбиение (SPLIT_TT_VER) и горизонтальное троичное разбиение (SPLIT_TT_HOR). Концевые узлы дерева разбиения нескольких типов называются единицами кодирования (coding unit (CU)), и если только такая единица CU не является слишком большой для максимальной длины преобразования, такая сегментация используется для обработки прогнозирования и преобразования без какого-либо дальнейшего разбиения. Это означает, что, в большинстве случаев, единицы CU, единицы PU и единицы TU имеют одинаковый размер блоков в дереве квадратов с вложенной структурой блоков дерева кодирования нескольких типов. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше ширины или высоты цветовой составляющей в единице CU. Стандарт кодирования VVC разрабатывает уникальный сигнализационный механизм для передачи информации о разбиении в структуре дерева квадратов с вложенным деревом кодирования нескольких типов. В этом сигнализационном механизме, единицу дерева кодирования (CTU) рассматривают в качестве корня четвертичного дерева и сначала разбивают по схеме четвертичного дерева. Каждый концевой узел («лист») четвертичного дерева (когда он достаточно большой, чтобы позволить сделать это) затем дополнительно разбивают в структуре дерева нескольких типов. В этой структуре дерева нескольких типов передают в виде сигнализации первый флаг (mtt_split_cu_flag) для индикации, что узел будет далее разбит; когда узел подвергают дальнейшему разбиению, передают в виде сигнализации второй флаг (mtt_split_cu_vertical_flag) для индикации направления разбиения, и затем передают в виде сигнализации третий флаг (mtt_split_cu_binary_flag) для индикации, является ли это разбиение двоичным разбиением или троичным разбиением. На основе величин флага mtt_split_cu_vertical_flag и флага mtt_split_cu_binary_flag, декодирующее устройство может определить режим разбиения по схеме дерева нескольких типов (MttSplitMode) для единицы CU согласно заданному правилу или таблице. Следует отметить, что в некоторых вариантах, например, в конвейерной структуре с блоками размером 64×64 яркостной составляющей и блоками размером 32×32 цветностной составляющей в аппаратных декодирующих устройствах согласно стандарту кодирования VVC, разбиение по схеме дерева TT запрещено, когда либо ширина, либо высота блока кодирования яркостной составляющей больше 64, как показано на Фиг. 6. Разбиение по схеме дерева TT также запрещено, когда либо ширина, либо высота блока кодирования цветностной составляющей больше 32. Такая конвейерная конфигурация будет разбивать изображение на единицы данных виртуального конвейера (Virtual pipeline data unit (VPDU)), которые определены как не накладывающиеся одна на другую единицы изображения. В аппаратных декодирующих устройствах последовательные единицы VPDU обрабатывают в нескольких ступенях конвейера одновременно. Размер единицы VPDU грубо пропорционален размеру буфера в большинстве ступеней конвейера, так что важно поддерживать небольшой размер единиц VPDU. В большинстве аппаратных декодирующих устройств, размер единиц VPDU может быть установлен равным максимальному размеру блока преобразования (TB). Однако в стандарте кодирования VVC, разбиение по схеме троичного дерева (TT) и двоичного дерева (BT) может приводить к увеличению размера единиц VPDU.
В дополнение к этому, следует отметить, что когда часть блока узла дерева выходит за пределы нижней или правой границы изображения, этот блок узла дерева принудительно разбивают до тех пор, по все отсчеты каждой кодированной единицы CU не будут расположены внутри границ изображения.
В качестве примера, инструмент внутрикадрового субразбиения (Intra Sub-Partitions (ISP)) может разбивать блоки яркостной составляющей с внутрикадровым прогнозированием вертикально или горизонтально на 2 или 4 единицы субразбиения в зависимости от размера блока.
В одном из примеров, модуль 260 выбора режима в кодирующем устройстве 20 для видео может быть выполнен с возможностью осуществления какой-либо комбинации способов разбиения, описываемых здесь.
Как описано выше, кодирующее устройство 20 для видео конфигурировано для определения или выбора наилучшего или оптимального режима прогнозирования из множества (например, предварительно заданного) режимов прогнозирования. Это множество режимов прогнозирования может содержать, например, режимы внутрикадрового прогнозирования и/или режимы межкадрового прогнозирования.
Внутрикадровое прогнозирование
Множество режимов внутрикадрового прогнозирования может содержать 35 разных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования HEVC, либо может содержать 67 различных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования VVC. В качестве одного из примеров, ряд обычных угловых режимов внутрикадрового прогнозирования адаптивно заменяют широкоугольными режимами внутрикадрового прогнозирования для неквадратных блоков, например, как это определено в стандарте кодирования VVC. В качестве другого примера, чтобы избежать операций деления при прогнозировании в режиме DC, только длинную сторону используют для вычисления среднего для неквадратных блоков. И результаты внутрикадрового прогнозирования в планарном режиме могут быть далее модифицированы посредством способа зависимой от расположения комбинации внутрикадрового прогнозирования (position dependent intra prediction combination (PDPC)).
Модуль 254 внутрикадрового прогнозирования выполнен с возможностью использования реконструированных отсчетов соседних блоков из одного и того же текущего изображения для генерации блока 265 при внутрикадровом прогнозировании в соответствии с одним из режимов внутрикадрового прогнозирования из множества режимов внутрикадрового прогнозирования.
Модуль 254 внутрикадрового прогнозирования (или вообще модуль 260 выбора режима) далее выполнен с возможностью передачи параметров внутрикадрового прогнозирования (или вообще информации, указывающей выбранный режим внутрикадрового прогнозирования для рассматриваемого блока) модулю 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры прогнозирования при декодировании.
Межкадровое прогнозирование
Множество (или возможные) режимов межкадрового прогнозирования зависит от доступных опорных изображений (т.е. предшествующих по меньшей мере частично декодированных изображений, например, сохраняемых в буфере DBP 230) и других параметров межкадрового прогнозирования, например, используется ли опорное изображение целиком или только его часть, например, область окна поиска вокруг области текущего блока, в опорном изображении для поиска наилучшим образом согласованного опорного блока, и/или, применяется ли интерполяция пикселей, например, интерполяция с точностью половины (half/semi-pel) пикселя, четверти пикселя и/или 1/16 пикселя или нет.
В дополнение к приведенным выше режимам прогнозирования могут быть применены режим пропуска, прямой режим и/или режим межкадрового прогнозирования.
Например, прогнозирование с расширенным объединением, список кандидатов на объединение в таком режиме построен с использованием следующих пяти типов кандидатов по порядку: Пространственное прогнозирование вектора движения (Spatial MVP) на основе пространственно соседних единиц CU, временное прогнозирование MVP (Temporal MVP) на основе расположенных в одном месте единиц CU, прогнозирование MVP на основе предыстории (History-based MVP) с использованием таблицы обратного магазинного типа (FIFO), попарно усредненное прогнозирование MVP (Pairwise average MVP) и нулевые векторы Zero MV. Далее, может быть применено уточнение вектора движения на стороне декодирующего устройства (decoder side motion vector refinement (DMVR)) на основе двустороннего согласования с целью повышения точности векторов MV в режиме объединения. Режим объединения с разностями векторов движения (merge mode with MVD (MMVD)) является режимом объединения, использующим разности векторов движения. Флаг режима MMVD передают в виде сигнализации сразу после передачи флага пропуска и флага объединения для спецификации, используется ли режим MMVD для единицы CU. Может быть применена схема адаптивного разрешения векторов движения (adaptive motion vector resolution (AMVR)) на уровне единиц CU. Разрешение AMVR позволяет кодировать разности MVD на уровне CU с различной степенью точности. В зависимости от режима прогнозирования для текущей единицы CU могут быть адаптивно выбраны разности MVD для текущей единицы CU. Когда единицу CU кодируют в режиме объединения, к текущей единице CU может быть применен комбинированный режим межкадрового/внутрикадрового прогнозирования (combined inter/intra prediction (CIIP)). Для получения прогнозирования в режиме CIIP осуществляется взвешенное усреднение сигналов межкадрового и внутрикадрового прогнозирования. При прогнозировании с компенсацией аффинного движения, поле аффинного движения для блока описывается информацией движения, представляющей собой векторы движения для двух контрольных точек (4 параметра) или для трех контрольных точек (6 параметров). Временное прогнозирование векторов движения на основе субблоков (subblock-based temporal motion vector prediction (SbTMVP)), аналогично временному прогнозированию векторов движения (temporal motion vector prediction (TMVP)) в стандарте кодирования HEVC, но осуществляет прогнозирование векторов движения для субединиц CU в пределах текущей единицы CU. Использование двунаправленных оптических потоков (bi-directional optical flow (BDOF)), ранее обозначаемое BIO, представляет собой более простую версию, что требует намного меньше вычислений, особенно в терминах числа операций умножения и размера умножителя. В режиме треугольного разбиения единицу CU разбивают поровну на две части треугольной формы с использованием либо диагонального разбиения, либо антидиагонального разбиения. Помимо этого, режим двустороннего прогнозирования расширяют за пределы простого усреднения, чтобы позволить осуществлять взвешенное усреднение двух прогнозируемых сигналов.
Модуль 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), шумоподавляющий фильтр (NSF), либо какая-либо комбинация фильтров. Хотя модуль 320 контурного фильтра показан на Фиг. 3 как внутриконтурный фильтр, в других конфигурациях такой модуль 320 контурного фильтра может быть реализован как постконтурный фильтр. Например, модуль 220 контурного фильтра может содержать деблокирующий фильтр, фильтр SAO и фильтр ALF. Порядок процедуры фильтрации может быть следующим - деблокирующий фильтр, фильтр SAO и фильтр ALF. В другом примере, добавлена процедура, называемая отображением яркостной составляющей с масштабированием цветностной составляющей (LMCS) (а именно, адаптивное внутриконтурное переформирование). Эта процедура осуществляется прежде деблокирования. В другом примере, процедура деблокирующей фильтрации может быть также применена к внутренним кромкам субблоков, например, к кромкам аффинных субблоков, кромкам субблоков с аффинным прогнозированием движения (ATMVP), кромкам субблоков преобразования (SBT) и кромкам при внутрикадровом субразбиении (ISP). Хотя модуль 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) или одну или несколько групп блоков (например, плиток (стандарты H.265/HEVC и VVC) или кирпичей (стандарт VVC)).
Варианты декодирующего устройства 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.
На Фиг. 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 может, таким образом, быть реализовано в самом широком спектре конфигураций.
Масштабируемое кодирование
Масштабируемое кодирование может быть масштабируемым по качеству (масштабирование по параметру PSNR (отношение сигнала к шумам и помехам для изображения), пространственно масштабируемым и т.п. Например, как показано на Фиг. 6, последовательность может быть субдискретизирована до версии с более низким пространственным разрешением. При этом, обе версии - версия с низким пространственным разрешением и версия с первоначальным пространственным разрешением (высоким пространственным разрешением) должны быть кодированы. И, обычно, версия с низким пространственным разрешением должна быть кодирована первой, и затем эта версия должна быть использована в качестве опоры для кодированной позднее версии с высоким пространственным разрешением.
Для описания информации о слоях (число слоев, зависимости, передача на выход) используется набор параметров видео VPS (Video Parameter Set) определяемый следующим образом:
Параметр VPS RBSP (первичная байтовая последовательность данных набора VPS) должен быть доступен для процедуры декодирования прежде обращения к ней, будучи включен по меньшей мере в одну единицу AU доступа с идентификатором TemporalId, равным 0, или получен через внешние средства.
Все единицы VPS NAL (слой сетевой абстракции набора VPS) с конкретной величиной параметра vps_video_parameter_set_id в последовательности CVS должны иметь одинаковый контент.
Параметр vps_video_parameter_set_id представляет идентификатор для набора VPS для ссылок от других синтаксических элементов. Величина параметра vps_video_parameter_set_id должна быть больше 0.
Параметр vps_max_layers_minus1 plus 1 специфицирует максимально допустимое число слоев в каждой последовательности CVS, обращающейся к этому набору VPS.
Параметр vps_max_sublayers_minus1 плюс 1 специфицирует максимальное число временных подслоев, которые могут присутствовать в одном слое в каждой последовательности CVS, обращающейся к этому набору VPS. Величина параметра vps_max_sublayers_minus1 должна быть в диапазоне от 0 до 6, включительно.
Флаг vps_all_layers_same_num_sublayers_flag равный 1 специфицирует, что число временных подслоев является одинаковым для все слоев в каждой последовательности CVS, обращающейся к этому набору VPS. Флаг vps_all_layers_same_num_sublayers_flag равный 0 специфицирует, что слои в каждой последовательности CVS, обращающейся к этому набору VPS, могут или не могут иметь одинаковое число временных подслоев. Когда флаг vps_all_layers_same_num_sublayers_flag не присутствует, его величину признают равной 1.
Флаг vps_all_independent_layers_flag равный 1 специфицирует, что все слои в последовательности CVS кодируют независимо без использования межслойного прогнозирования. Флаг vps_all_independent_layers_flag равный 0 специфицирует, что один или несколько слоев в этой последовательности CVS могут использовать межслойное прогнозирование. Когда флаг vps_all_independent_layers_flag не присутствует, его величину признают равной 1.
Параметр vps_layer_id[ i ] специфицирует величину nuh_layer_id для i-го слоя. Для любых двух целочисленных значений m и n, когда m меньше n, величина vps_layer_id[ m ] должна быть меньше vps_layer_id[ n ].
Флаг vps_independent_layer_flag[ i ] равный 1 специфицирует, что слой с индексом i не использует межслойное прогнозирование. Флаг vps_independent_layer_flag[ i ] равный 0 специфицирует, что слой с индексом i может использовать межслойное прогнозирование, и что синтаксические элементы vps_direct_ref_layer_flag[ i ][ j ] для j в диапазоне от 0 до i - 1, включительно, присутствуют в наборе VPS. Когда флаг vps_independent_layer_flag[ i ] не присутствует, его величину признают равной 1.
Флаг vps_direct_ref_layer_flag[ i ][ j ] равный 0 специфицирует, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. Флаг vps_direct_ref_layer_flag [ i ][ j ] равный 1 специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда флаг vps_direct_ref_layer_flag[ i ][ j ] не присутствует для i и j в диапазоне от 0 до vps_max_layers_minus1, включительно, его признают равным 0. Когда флаг vps_independent_layer_flag[ i ] равен 0, должно быть по меньшей мере одно значение j в диапазоне от 0 до i - 1, включительно, для которого величина флага vps_direct_ref_layer_flag[ i ][ j ] равна 1.
Переменные NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ], and LayerUsedAsRefLayerFlag[ j ] определены следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0; j <= vps_max_layers_minus1; j++ ) { dependencyFlag[ i ][ j ] = vps_direct_ref_layer_flag[ i ][ j ] for( k = 0; k < i; k++ ) if( vps_direct_ref_layer_flag[ i ][ k ] && dependencyFlag[ k ][ j ] ) dependencyFlag[ i ][ j ] = 1 } LayerUsedAsRefLayerFlag[ i ] = 0 } for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) { (1) if( direct_ref_layer_flag[ i ][ j ] ) { DirectRefLayerIdx[ i ][ d++ ] = j LayerUsedAsRefLayerFlag[ j ] = 1 } if( dependencyFlag[ i ][ j ] ) RefLayerIdx[ i ][ r++ ] = j } NumDirectRefLayers[ i ] = d NumRefLayers[ i ] = r }
Переменную GeneralLayerIdx[ i ], специфицирующую индекс слоя для слоя с параметром nuh_layer_id равным vps_layer_id[ i ], определяют следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) (2)
GeneralLayerIdx[ vps_layer_id[ i ] ] = i
Флаг each_layer_is_an_ols_flag равный 1 специфицирует, что каждое выходное множество слоев (output layer set (OLS)) содержит только один слой, и каждый слой сам по себе в последовательности CVS, обращающейся к набору VPS, является множеством OLS с единственным включенным слоем, являющимся единственным передаваемым на выход слоем. Флаг each_layer_is_an_ols_flag равный 0 означает, что множество OLS может содержать больше одного слоя. Если параметр vps_max_layers_minus1 равен 0, величину флага each_layer_is_an_ols_flag признают равной 1. В противном случае, когда флаг vps_all_independent_layers_flag равен 0, величину флага each_layer_is_an_ols_flag признают равным 0.
Параметр ols_mode_idc равный 0 специфицирует, что общее число множеств OLS, специфицированное набором VPS, равно vps_max_layers_minus1 + 1, i-ое множество OLS содержит слои с индексами от 0 до i, включительно, и для каждого множества OLS на выход передают только наивысший слой из этого множества OLS.
Параметр ols_mode_idc равный 1 специфицирует, что общее число множеств OLS, специфицированное в наборе VPS, равно vps_max_layers_minus1 + 1, i-ое множество OLS содержит слои с индексами от 0 до i, включительно, и для каждого множества OLS все слои из этого множества OLS передают на выход.
Параметр ols_mode_idc равный 2 специфицирует, что общее число множеств OLS, специфицированное набором VPS, передают в виде сигнализации в явном виде, и для каждого множества OLS о передаваемых на выход слоях сигнализируют в явном виде, а другие слои являются прямыми или непрямыми опорными слоями для передаваемых на выход слоев этого множества OLS.
Величина параметра ols_mode_idc должна быть в диапазоне от 0 до 2, включительно. Значение 3 для параметра ols_mode_idc зарезервировано для использования в будущем организациями ITU-T | ISO/IEC.
Когда флаг vps_all_independent_layers_flag равен 1 и флаг each_layer_is_an_ols_flag равен 0, значение параметра ols_mode_idc признают равным 2.
Параметр num_output_layer_sets_minus1 плюс 1 специфирует общее число множеств OLS, специфицированных набором VPS, когда параметр ols_mode_idc равен 2.
Переменную TotalNumOlss, специфицирующую общее число множеств OLS, специфицированных набором VPS, определяют следующим образом:
if( vps_max_layers_minus1 = = 0 ) TotalNumOlss = 1 else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) TotalNumOlss = vps_max_layers_minus1 + 1 (3) else if( ols_mode_idc = = 2 ) TotalNumOlss = num_output_layer_sets_minus1 + 1
Параметр ols_output_layer_flag[ i ][ j ] равный 1 специфицирует, что слой с параметром nuh_layer_id равным параметру vps_layer_id[ j ] представляет собой выходной слой i-ого множества OLS, когда параметр ols_mode_idc равен 2.
Параметр ols_output_layer_flag[ i ][ j ] равный 0 специфицирует, что слой с параметром nuh_layer_id равным параметру vps_layer_id[ j ] не является выходным слоем i-ого множества OLS, когда параметр ols_mode_idc равен 2.
Переменную NumOutputLayersInOls[ i ], специфицирующую число выходных слоев в i-ом множестве OLS, и переменную OutputLayerIdInOls[ i ][ j ], специфицирующую величину параметра nuh_layer_id для j-го выходного слоя в i-ом множестве OLS, определяют следующим образом:
NumOutputLayersInOls[ 0 ] = 1 OutputLayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ] for( i = 1; i < TotalNumOlss; i++ ) { if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 ) { NumOutputLayersInOls[ i ] = 1 OutputLayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ] } else if( ols_mode_idc = = 1 ) { NumOutputLayersInOls[ i ] = i + 1 for( j = 0; j < NumOutputLayersInOls[ i ]; j++ ) OutputLayerIdInOls[ i ][ j ] = vps_layer_id[ j ] } else if( ols_mode_idc = = 2 ) { for( j = 0; j <= vps_max_layers_minus1; j++ ) layerIncludedInOlsFlag[ i ][ j ] = 0 for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ ) (4) if( ols_output_layer_flag[ i ][ k ] ) { layerIncludedInOlsFlag[ i ][ k ] = 1 OutputLayerIdx[ i ][ j ] = k OutputLayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ] } NumOutputLayersInOls[ i ] = j for( j = 0; j < NumOutputLayersInOls[ i ]; j++ ) { idx = OutputLayerIdx[ i ][ j ] for( k = 0; k < NumRefLayers[ idx ]; k++ ) layerIncludedInOlsFlag[ i ][ RefLayerIdx[ idx ][ k ] ] = 1 } } }
Для каждого множества OLS, должен быть по меньшей мере один слой, являющийся выходным слоем. Другими словами, для каждого значения i в диапазоне от 0 до TotalNumOlss - 1, включительно, величина параметра NumOutputLayersInOls[ i ] должна быть не меньше 1.
Переменную NumLayersInOls[ i ], специфицирующую число слоев в i-ом множестве OLS, и переменную LayerIdInOls[ i ][ j ], специфицирующую величину параметра nuh_layer_id для j-го слоя в i-ом множестве OLS, определяют следующим образом:
NumLayersInOls[ 0 ] = 1 LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ] for( i = 1; i < TotalNumOlss; i++ ) { if( each_layer_is_an_ols_flag ) { NumLayersInOls[ i ] = 1 LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ] (5) } else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) { NumLayersInOls[ i ] = i + 1 for( j = 0; j < NumLayersInOls[ i ]; j++ ) LayerIdInOls[ i ][ j ] = vps_layer_id[ j ] } else if( ols_mode_idc = = 2 ) { for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ ) if( layerIncludedInOlsFlag[ i ][ k ] ) LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ] NumLayersInOls[ i ] = j } }
ПРИМЕЧАНИЕ 1 - Множество OLS с индексом 0 (0-ое) содержит только самый низший слое (т.е. слой с параметром nuh_layer_id равным параметру vps_layer_id[ 0 ]) и для 0-ого множества OLS только один входящий в нее слой передают на выход.
Переменную OlsLayeIdx[ i ][ j ], специфицирующую индекс слоя в множестве OLS для слоя с параметром nuh_layer_id, равным LayerIdInOls[ i ][ j ], определяют следующим образом:
for( i = 0; i < TotalNumOlss; i++ ) for j = 0; j < NumLayersInOls[ i ]; j++ ) (6) OlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j
Самый низший слой в каждом множестве OLS должен быть независимым слоем. Другими словами, для каждой величины i в диапазоне от 0 до TotalNumOlss - 1, включительно, величина флага vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ] должна быть равна 1.
Каждый слой должен быть включен по меньшей мере в одно множество OLS, специфицированное в наборе VPS. Другими словами, для каждого слоя с конкретным значением параметра nuh_layer_id nuhLayerId равным одному из значений vps_layer_id[ k ] для k в диапазоне от 0 до vps_max_layers_minus1, включительно, должна быть по меньшей мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOlss - 1, включительно, и j находится в диапазоне NumLayersInOls[ i ] - 1, включительно, так что величина параметра LayerIdInOls[ i ][ j ] равна nuhLayerId.
Параметр vps_num_ptls специфицирует число синтаксических структур profile_tier_level( ) в наборе VPS.
Параметр pt_present_flag[ i ] равный 1 специфицирует, что в i-ой синтаксической структуре profile_tier_level( ) в наборе VPS присутствуют указания профиля, яруса и информации об общих ограничениях. Флаг pt_present_flag[ i ] равный 0 специфицирует, что в i-ой синтаксической структуре profile_tier_level( ) в наборе VPS не присутствуют указания, профиля и информации об общих ограничениях. Значение флага pt_present_flag[ 0 ] признают равным 1. Когда флаг pt_present_flag[ i ] равен 0, указания профиля, яруса и информации об общих ограничений в i-ой синтаксической структуре profile_tier_level( ) в наборе VPS признают такими же, как в ( i - 1 )-ой синтаксической структуре profile_tier_level( ) в наборе VPS.
Параметр ptl_max_temporal_id[ i ] специфицирует идентификатор TemporalId для представления наивысшего подслоя, для которого информация об уровне присутствует в i-ой синтаксической структуре profile_tier_level( ) в наборе VPS. Величина параметра ptl_max_temporal_id[ i ] должна быть в диапазоне от 0 до vps_max_sublayers_minus1, включительно. Когда параметр vps_max_sublayers_minus1 равен 0, величину параметра ptl_max_temporal_id[ i ] признают равной 0. Когда параметр vps_max_sublayers_minus1 равен 0 и флаг vps_all_layers_same_num_sublayers_flag равен 1, значение параметра ptl_max_temporal_id[ i ] признают равным vps_max_sublayers_minus1.
Параметр vps_ptl_byte_alignment_zero_bit должен быть равным 0.
Параметр ols_ptl_idx[ i ] специфирует индекс, к списку синтаксических структур profile_tier_level( ) в наборе VPS, для синтаксической структуры profile_tier_level( ), применимой к i-ому множеству OLS, когда параметр NumLayersInOls[ i ] больше 1. Когда параметр value of ols_ptl_idx[ i ] присутствует, он должен быть в диапазоне от 0 до vps_num_ptls - 1, включительно.
Когда параметр NumLayersInOls[ i ] равен 1, синтаксическая структура profile_tier_level( ), применяемая к i-ому множеству OLS, присутствует в наборе SPS, к которому обращается рассматривамый слой в i-ом множестве OLS.
Параметр vps_num_dpb_params специфицирует число синтаксических структур dpb_parameters( ) в наборе VPS. Значение параметра vps_num_dpb_params должно быть в диапазоне от 0 to 16, включительно. Когда параметр vps_num_dpb_params не присутствует, его величину признают равным 0.
Параметр same_dpb_size_output_or_nonoutput_flag равный 1 специфицирует что синтаксический элемент layer_nonoutput_dpb_params_idx[ i ] не присутствует в наборе VPS. Флаг same_dpb_size_output_or_nonoutput_flag равный 0 специфицирует, что синтаксические элементы layer_nonoutput_dpb_params_idx[ i ] могут присутствовать или не присутствовать в наборе VPS.
Флаг vps_sublayer_dpb_params_present_flag используется для управления присутствием синтаксических элементов max_dec_pic_buffering_minus1[ ], max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] в синтаксических структурах dpb_parameters( ) в наборе VPS. Когда флаг vps_sub_dpb_params_info_present_flag не присутствует, его признают равным 0.
Флаг dpb_size_only_flag[ i ] равный 1 специфицирует, что синтаксические элементы max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] не присутствуют в i-ой синтаксической структуре dpb_parameters( ) в наборе VPS. Флаг dpb_size_only_flag[ i ] равный 0 специфицирует, что синтаксические элементы max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] могут не присутствовать в i-ой синтаксической структуре dpb_parameters( ) в наборе VPS.
Параметр dpb_max_temporal_id[ i ] специфицирует идентификатор TemporalId для представления наивысшего подслоя, для которого параметры буфера DPB могут присутствовать в i-ой синтаксической структуре dpb_parameters( ) в наборе VPS. Величина параметра dpb_max_temporal_id[ i ] должна быть в диапазоне от 0 до vps_max_sublayers_minus1, включительно. Когда параметр vps_max_sublayers_minus1 равен 0, величину параметра dpb_max_temporal_id[ i ] признают равной 0. Когда параметр vps_max_sublayers_minus1 больше 0 и флаг vps_all_layers_same_num_sublayers_flag равен 1, величину параметр dpb_max_temporal_id[ i ] признают равной vps_max_sublayers_minus1.
Параметр layer_output_dpb_params_idx[ i ] специфицирует индекс, к списку синтаксических структур dpb_parameters( ) в наборе VPS, для синтаксической структуры dpb_parameters( ), применимой к i-ому слою, когда он является выходным слоем в множестве OLS. Когда параметр layer_output_dpb_params_idx[ i ] присутствует, его величина должна быть в диапазоне от 0 до vps_num_dpb_params - 1, включительно.
Если флаг vps_independent_layer_flag[ i ] равен 1, синтаксическая структура dpb_parameters( ), применимая к i-ому слою, когда он является выходным слоем, представляет собой синтаксическую структуру dpb_parameters( ), присутствующую в наборе SPS, к которому обращается этот слой.
В противном случае (флаг vps_independent_layer_flag[ i ] равен 0), применяется следующее:
- Когда параметр vps_num_dpb_params равен 1, величину параметра layer_output_dpb_params_idx[ i ] признают равной 0.
- Требование соответствия потока битов данных состоит в том, что величина параметра layer_output_dpb_params_idx[ i ] должна быть такой, чтобы флаг dpb_size_only_flag[ layer_output_dpb_params_idx[ i ] ] был равен 0.
Параметр layer_nonoutput_dpb_params_idx[ i ] специфицирует индекс, к списку синтаксических структур в наборе VPS, для синтаксической структуры dpb_parameters( ), применимой к i-ому слою, когда он не является выходным слоем для множества OLS. Когда параметр layer_nonoutput_dpb_params_idx[ i ] присутствует, его величина должна быть в диапазоне от 0 до vps_num_dpb_params - 1, включительно.
Если флаг same_dpb_size_output_or_nonoutput_flag равен 1, применяется следующее:
- Если флаг vps_independent_layer_flag[ i ] равен 1, синтаксическая структура dpb_parameters( ), применяемая к i-ому слою, который не является выходным слоем, представляет собой синтаксическую структуру dpb_parameters( ), присутствующую в наборе SPS, к которому обращается указанный слой.
- В противном случае (флаг vps_independent_layer_flag[ i ] равен 0), величину параметра layer_nonoutput_dpb_params_idx[ i ] признают равной layer_output_dpb_params_idx[ i ].
В противном случае (флаг same_dpb_size_output_or_nonoutput_flag равен 0), когда параметр vps_num_dpb_params равен 1, величину параметра layer_output_dpb_params_idx[ i ] признают равной 0.
Флаг vps_general_hrd_params_present_flag равный 1 специфицирует, что синтаксическая структура general_hrd_parameters( ) и другие параметры HRD присутствует в синтаксической структуре VPS RBSP. Флаг vps_general_hrd_params_present_flag равный 0 специфицирует, что синтаксическая структура general_hrd_parameters( ) и другие параметры HRD не присутствует в синтаксической структуре VPS RBSP.
Флаг vps_sublayer_cpb_params_present_flag равный 1 специфицирует, что i-ая синтаксическая структура ols_hrd_parameters( ) в наборе VPS содержит параметры HRD для представлений подслоев с идентификатором TemporalId в диапазоне от 0 до hrd_max_tid[ i ], включительно. Флаг vps_sublayer_cpb_params_present_flag равный 0 специфицирует, specifies что i-ая синтаксическая структура ols_hrd_parameters( ) в наборе VPS содержит параметры HRD для представлений подслоев только с идентификатором TemporalId равным hrd_max_tid[ i ]. Когда параметр vps_max_sublayers_minus1 равен 0, значение флага vps_sublayer_cpb_params_present_flag признают равным 0.
Когда флаг vps_sublayer_cpb_params_present_flag равен 0, параметры HRD для представлений подслоев с идентификатором TemporalId в диапазоне от 0 до hrd_max_tid[ i ] - 1, включительно, признают такими же, как параметры для представлений подслоев с идентификатором TemporalId равным hrd_max_tid[ i ]. Это охватывает параметры HRD, начиная от синтаксического элемента fixed_pic_rate_general_flag[ i ], до момента, когда синтаксическая структура sublayer_hrd_parameters( i ) не будет непосредственно подпадать под условие "if( general_vcl_hrd_params_present_flag )" в синтаксической структуре ols_hrd_parameters.
Параметр num_ols_hrd_params_minus1 плюс 1 специфицирует число синтаксических структур ols_hrd_parameters( ), присутствующих в синтаксической структуре general_hrd_parameters( ). Величина параметра num_ols_hrd_params_minus1 должна быть в диапазоне от 0 до 63, включительно. Когда параметр TotalNumOlss равен 1, величину параметра num_ols_hrd_params_minus1 признают равной 0.
Параметр hrd_max_tid[ i ] специфицирует идентификатор TemporalId для представления наивысшего подслоя, для которого параметры HRD содержатся в i-ой синтаксической структуре ols_hrd_parameters( ). Величина параметра hrd_max_tid[ i ] должна быть в диапазоне от 0 до vps_max_sublayers_minus1, включительно. Когда параметр vps_max_sublayers_minus1 равен 0, величину параметра hrd_max_tid[ i ] признают равной 0. Когда параметр vps_max_sublayers_minus1 больше 0 и флаг vps_all_layers_same_num_sublayers_flag равен 1, величину параметра hrd_max_tid[ i ] признают равной vps_max_sublayers_minus1.
Параметр ols_hrd_idx[ i ] специфицирует индекс синтаксической структуры ols_hrd_parameters( ), применимой к i-ому множеству OLS. Величина параметра ols_hrd_idx[[ i ] должна быть в диапазоне от 0 до num_ols_hrd_params_minus1, включительно. Когда параметр ols_hrd_idx[[ i ] не присутствует, его величину признают равной 0.
Флаг vps_extension_flag равный 0 специфицирует, что синтаксические элементы vps_extension_data_flag не присутствуют в синтаксической структуре VPS RBSP. Флаг vps_extension_flag равный 1 специфицирует, что синтаксические элементы vps_extension_data_flag присутствуют в синтаксической структуре VPS RBSP.
Флаг vps_extension_data_flag может иметь любое значение. Его присутствие и значение не влияют на соответствие декодирующего устройства профилям, специфицированным в этой версии настоящего Описания. Декодирующие устройства, соответствующие этой версии настоящего Описания, должны игнорировать все синтаксические элементы vps_extension_data_flag.
Управление буфером DPB и маркировка опорных изображений
Для управления опорными изображениями в процессе декодирования декодированные изображения необходимо сохранять в буфере декодированных изображений (DPB) для использования в качестве опорных изображений при последующем декодировании изображений. Для указания таких изображений необходимо в виде сигнализации передать информацию об их порядковых номерах (picture order count (POC)) в заголовке среза прямо или непрямо. Обычно поддерживают два списка опорных изображений, список0 (List0) и список1 (List1). Необходимо также включить индекс опорного изображения, чтобы сообщить об изображении в списке. Для однонаправленного прогнозирования опорные изображения выбирают из одного списка опорных изображения, а для двунаправленного прогнозирования опорные изображения выбирают из двух списков опорных изображений.
Все опорные изображения сохраняют в буфере DPB. Все изображения в буфере DPB маркируют как «используемые в качестве долгосрочной опоры», «используемые в качестве краткосрочной опоры» или «неиспользуемые в качестве опоры» и присваивают каждому изображению только один из трех статусов. Когда какое-то изображение один раз маркировано как «неиспользуемое в качестве опоры», оно больше никогда не будет использоваться в качестве опоры. Если такое изображение также не нужно передавать на выход, его можно удалить из буфера DPB. Статус опорных изображений можно передавать в виде сигнализации в заголовке среза, либо его можно вывести из информации в заголовке среза.
Предложен новый способ управления опорными изображениями, называемый способом списка опорных изображений (RPL (reference picture list)) или способом списка RPL. Список RPL будет предлагать полное множество или несколько множеств опорных изображений для текущего декодируемого изображения, опорное изображение из состава множества опорных изображений используется при декодировании текущего или будущего (более позднего или уже следующего) изображения. Таким образом, список RPL отражает информацию об изображениях в буфере DPB, даже если какое-то опорное изображение не используется в качестве опоры для текущего изображения, если оно будет использоваться в качестве опоры для текущего изображения, его необходимо сохранить в списке RPL.
После реконструкции изображения оно будет сохранено в буфере DPB, и маркировано как «используемое в качестве краткосрочной опоры» по умолчанию. Операция управления буфером DPB начинается после выделения посредством синтаксического анализа информации списка RPL из заголовка среза.
Построение списка опорных изображений
Информация об опорных изображениях может быть сообщена в виде сигнализации в заголовке среза. Кроме того, некоторые кандидаты в список RPL могут быть указаны в наборе параметров последовательности (SPS), в этом случае заголовок среза может содержать индекс списка RPL для получения необходимой информации о списке RPL без передачи в виде сигнализации всей синтаксической структуры списка RPL. Либо вся синтаксическая структура списка RPL может быть сообщена в виде сигнализации в заголовке среза.
Введение в способ списков RPL.
Для сбережения «стоимостных» битов сигнализации списка RPL в наборе SPS могут присутствовать несколько кандидатов в список RPL. Изображение может использовать индекс списка RPL (ref_pic_list_idx[ i ]) для получения информации списка RPL из набора SPS. Сигнализация о списке RPL выглядит следующим образом:
Семантика является следующей:
Флаг rpl1_same_as_rpl0_flag равный 1 специфицирует, что синтаксические структуры num_ref_pic_lists_in_sps[ 1 ] и ref_pic_list_struct( 1, rplsIdx ) не присутствуют и применяется следующее:
- Величину параметра num_ref_pic_lists_in_sps[ 1 ] признают равной величине параметров num_ref_pic_lists_in_sps[ 0 ].
- Величину каждого из синтаксических элементов в структуре ref_pic_list_struct( 1, rplsIdx ) признают равной величине соответствующего синтаксического элемента в структуре ref_pic_list_struct( 0, rplsIdx ) для параметра rplsIdx в диапазоне от 0 до num_ref_pic_lists_in_sps[ 0 ] - 1.
Параметр num_ref_pic_lists_in_sps[ i ] специфицирует число синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ) с индексом listIdx равным i, включенным в набор SPS. Величина параметра num_ref_pic_lists_in_sps[ i ] должна быть в диапазоне от 0 до 64, включительно.
Помимо получения информации списка RPL на основе индекса списка RPL из набора SPS информация списка RPL может быть передана в виде сигнализации в заголовке среза.
Флаг ref_pic_list_sps_flag[ i ] равный 1 специфицирует, что список опорных изображений i для текущего среза определяют на основе синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ) с индексом listIdx равным i в наборе SPS. Флаг ref_pic_list_sps_flag[ i ] равный 0 специфицирует, что список i опорных изображений для текущего среза определяют на основе синтаксической структуры ref_pic_list_struct( listIdx, rplsIdx ) с индексом listIdx равнывм i, который напрямую включен в заголовки срезов текущего изображения.
Когда флаг ref_pic_list_sps_flag[ i ] не присутствует, применяется следующее:
- Если параметр num_ref_pic_lists_in_sps[ i ] равен 0, величину флага ref_pic_list_sps_flag[ i ] признают равной 0.
- В противном случае (параметр num_ref_pic_lists_in_sps[ i ] больше 0), если флаг rpl1_idx_present_flag равен 0, величину флага ref_pic_list_sps_flag[ 1 ] признают равной ref_pic_list_sps_flag[ 0 ].
- В противном случае, величину флага ref_pic_list_sps_flag[ i ] признают равной pps_ref_pic_list_sps_idc[ i ] - 1.
Параметр ref_pic_list_idx[ i ] специфицирует индекс, в список синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ) с индексом listIdx равным i, включенным в набор SPS, для синтаксической структуры ref_pic_list_struct( listIdx, rplsIdx ) с индексом listIdx равным i, который используется для определения списка i опорных изображений для текущего изображения. Синтаксический элемент ref_pic_list_idx[ i ] представлен посредством Ceil( Log2( num_ref_pic_lists_in_sps[ i ] ) ) бит. Когда индекс ref_pic_list_idx[ i ] не присутствует, его величину признают равной 0. Величина индекса ref_pic_list_idx[ i ] должна быть в диапазоне от 0 до num_ref_pic_lists_in_sps[ i ] - 1, включительно. Когда флаг ref_pic_list_sps_flag[ i ] равен 1 и параметр num_ref_pic_lists_in_sps[ i ] равен 1, величину индекса ref_pic_list_idx[ i ] признают равной 0. Когда флаг ref_pic_list_sps_flag[ i ] равен 1 и флаг rpl1_idx_present_flag равен 0, величину индекса ref_pic_list_idx[ 1 ] признают равной ref_pic_list_idx[ 0 ].
Переменную RplsIdx[ i ] определяют следующим образом:
RplsIdx[ i ] = ref_pic_list_sps_flag[ i ] ? ref_pic_list_idx[ i ] : num_ref_pic_lists_in_sps[ i ] (77)
Параметр slice_poc_lsb_lt[ i ][ j ] специфицирует величину номера изображения по модулю MaxPicOrderCntLsb для j-ой входной позиции долгосрочного опорного изображения (long-term reference picture (LTRP)) в i-ый список опорных изображений. Длина синтаксического элемента slice_poc_lsb_lt[i][j] равна log2_max_pic_order_cnt_lsb_minus4 + 4 бит.
Переменную PocLsbLt[ i ][ j ] определяют следующим образом:
PocLsbLt[ i ][ j ] = ltrp_in_slice_header_flag[ i ][ RplsIdx[ i ] ] ? (78) slice_poc_lsb_lt[ i ][ j ] : rpls_poc_lsb_lt[ listIdx ][ RplsIdx[ i ] ][ j ]
Флаг delta_poc_msb_present_flag[ i ][ j ] равный 1 специфицирует, что параметр delta_poc_msb_cycle_lt[ i ][ j ] присутствует. Флаг delta_poc_msb_present_flag[ i ][ j ] равный 0 специфицирует, что параметр delta_poc_msb_cycle_lt[ i ][ j ] не присутствует.
Пусть изображение prevTid0Pic представляет собой предыдущее изображение в порядке декодирования, имеющее такой же параметр nuh_layer_id, как и текущее изображение, имеющее идентификатор TemporalId равный 0, и не является изображением с произвольным доступом и пропущенным ведущим изображением (random access skipped leading (RASL)) или изображением с произвольным доступом и декодируемым ведущим изображением (random access decodable leading (RADL)). Пусть setOfPrevPocVals представляет собой множество, содержащее следующее:
- PicOrderCntVal из prevTid0Pic,
- PicOrderCntVal для каждого изображения, к которому обращаются входные позиции в списке RefPicList[ 0 ] или RefPicList[ 1 ] изображений prevTid0Pic и которое имеет такой же идентификатор nuh_layer_id, как текущее изображение,
- PicOrderCntVal для каждого изображения, следующего за изображением prevTid0Pic в порядке декодирования, имеющего такой же идентификатор nuh_layer_id, как текущее изображение, и предшествующего текущему изображению в порядке декодирования.
Когда среди setOfPrevPocVals имеется больше одной величины, для которой величина по модулю MaxPicOrderCntLsb равна PocLsbLt[ i ][ j ], величина флага delta_poc_msb_present_flag[ i ][ j ] должна быть равна 1.
Параметр delta_poc_msb_cycle_lt[ i ][ j ] специфицирует величину переменной FullPocLt[ i ][ j ] следующим образом:
if( j = = 0 ) DeltaPocMsbCycleLt[ i ][ j ] = delta_poc_msb_cycle_lt[ i ][ j ] else (71) DeltaPocMsbCycleLt[ i ][ j ] = delta_poc_msb_cycle_lt[ i ][ j ] + DeltaPocMsbCycleLt[ i ][ j - 1 ] FullPocLt[ i ][ j ] = PicOrderCntVal - DeltaPocMsbCycleLt[ i ][ j ] * MaxPicOrderCntLsb - ( PicOrderCntVal & ( MaxPicOrderCntLsb - 1 ) ) + PocLsbLt[ i ][ j ]
Величина параметра delta_poc_msb_cycle_lt[ i ][ j ] должна быть в диапазоне от 0 до 2(32 - log2_max_pic_order_cnt_lsb_minus4 - 4 ), включительно. Когда параметр delta_poc_msb_cycle_lt[ i ][ j ] не присутствует, его величину признают равной 0.
Синтаксическая структура списка RPL является следующей:
Параметр num_ref_entries[ listIdx ][ rplsIdx ] специфицирует число входных позиций в синтаксическую структуру ref_pic_list_struct( listIdx, rplsIdx ). Величина параметра num_ref_entries[ listIdx ][ rplsIdx ] должна быть в диапазоне от 0 до sps_max_dec_pic_buffering_minus1 + 14, включительно.
Флаг ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] равный 0 специфицирует, что младшие биты номера изображения (POC LSB) во входных позициях LTRP в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) присутствуют в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Флаг ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] равный 1 специфицирует, что младшие биты номера изображения (POC LSB) во входных позициях LTRP в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) не присутствуют в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ).
Флаг inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равный 1 специфицирует, что i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является входной позицией ILRP. Флаг inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равный 0 специфицирует, что i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) не является входной позицией ILRP. Когда флаг inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] не присутствует, его величину признают равной 0.
Флаг st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равный 1 специфицирует, что i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является входной позицией краткосрочного опорного изображения (short-term reference picture (STRP)). Флаг st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равный 0 i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является входной позицией долгосрочного опорного изображения (long-term reference picture (LTRP)). Когда флаг inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равен 0 и флаг st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] не присутствует, величину флага st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] признают равной 1.
Переменную NumLtrpEntries[ listIdx ][ rplsIdx ] определяют следующим образом:
for( i = 0, NumLtrpEntries[ listIdx ][ rplsIdx ] = 0; i < num_ref_entries[ listIdx ][ rplsIdx ]; i++ ) if( !inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] && !st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] ) (710) NumLtrpEntries[ listIdx ][ rplsIdx ]++
Параметр abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] специфицирует величину переменной AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ] следующим образом:
if( sps_weighted_pred_flag | | sps_weighted_bipred_flag ) AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ] = abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] (711) else AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ] = abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] + 1
Величина параметра abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] должна быть в диапазоне от 0 до 215 - 1, включительно.
Флаг strp_entry_sign_flag[ listIdx ][ rplsIdx ][ i ] равный 1 специфицирует, что i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) имеет величину не меньше 0. Флаг strp_entry_sign_flag[ listIdx ][ rplsIdx ][ i ] равный 0 специфицирует, что i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) имеет величину меньше 0. Когда флаг strp_entry_sign_flag[ listIdx ][ rplsIdx ][ i ] не присутствует, его величину признают равной 1.
Список DeltaPocValSt[ listIdx ][ rplsIdx ] определяют следующим образом:
for( i = 0; i < num_ref_entries[ listIdx ][ rplsIdx ]; i++ ) if( !inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] && st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] ) (712) DeltaPocValSt[ listIdx ][ rplsIdx ][ i ] = ( strp_entry_sign_flag[ listIdx ][ rplsIdx ][ i ] ) ? AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ] : 0 - AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]
Параметр rpls_poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] специфицирует величину порядкового номера изображения по модулю MaxPicOrderCntLsb для изображения, к которому обращается i-ая входная позиция в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Длина синтаксического элемента rpls_poc_lsb_lt[ listIdx ][ rplsIdx ][ i ] равна log2_max_pic_order_cnt_lsb_minus4 + 4 бит.
Некоторые общие описания структуры списка RPL
Для каждого списка имеется структура RPL. Сначала, передают в виде сигнализации параметр num_ref_entries[ listIdx ][ rplsIdx ] для указания числа опорных изображений в этом списке. Флаг ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] используется для индикации, передается ли информация самых младших байтов (LSB (Least Significant Byte)) в заголовке среза. Если текущее опорное изображение не является межслойным опорным изображением, тогда передают флаг st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] для индикации, является ли оно долгосрочным опорным изображением. Если это изображение является краткосрочным опорным изображением, тогда передают в виде сигнализации информацию о порядковом номере POC (параметр abs_delta_poc_st и флаг strp_entry_sign_flag). Если флаг ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] равен нулю, тогда используют параметр rpls_poc_lsb_lt[ listIdx ][ rplsIdx ][ j++ ] для определения информации битов LSB для текущего опорного изображения. Самые старшие биты (MSB (Most Significant Bit)) могут быть получены напрямую или определены на основе информации (флаг delta_poc_msb_present_flag[ i ][ j ] и параметр delta_poc_msb_cycle_lt[ i ][ j ]) в заголовке среза.
Процедура декодирования для построения списка опорных изображений
Эту процедуру вызывают в начале процесса декодирования для каждого среза в не-IDR изображении (изображении мгновенного обновления декодирования (instantaneous decoding refresh (IDR))).
Адресация к опорным изображениям осуществляется посредством опорных индексов. Опорный индекс представляет собой индекс в список опорных изображений При декодировании I-среза никакие списки опорных изображений не используются для декодирования данных этого среза. При декодирования P-среза, только список 0 опорных изображений (т.е. RefPicList[ 0 ]) используется для декодирования данных этого среза. При декодировании B-среза, оба списка опорных изображений - список 0 и список 1 (т.е. RefPicList[ 1 ]) используются для декодирования данных этого среза.
В начале процесса декодирования для каждого среза в не-IDR изображении определяют списки RefPicList[ 0 ] и RefPicList[ 1 ] опорных изображений. Эти списки опорных изображений используются при маркировке опорных изображений, как это специфицировано в статье Процедура декодирования для маркировки опорных изображений, или при декодировании данных среза.
ПРИМЕЧАНИЕ 2 - Для I-среза в не-IDR изображении, который не является первым срезом этого изображения, списки RefPicList[ 0 ] и RefPicList[ 1 ] могут быть определены для целей проверки соответствия потока битов данных, но их определение не является обязательным для декодирования текущего изображения или изображений, следующих за текущим изображением в порядке декодирования. Для P-среза, который не является первым срезом изображения, список RefPicList[ 1 ] может быть определен для целей проверки соответствия потока битов данных, но его определение не является обязательным для декодирования текущего изображения или изображений, следующих за текущим изображением в порядке декодирования.
Построение списков RefPicList[ 0 ] и RefPicList[ 1 ] опорных изображений, коэффициентов RefPicScale[ i ][ j ][ 0 ] и RefPicScale[ i ][ j ][ 1 ] масщтабирования опорных изображений и флагов RefPicIsScaled[ 0 ] и RefPicIsScaled[ 1 ] масштабированных опорных изображений осуществляется следующим образом:
for( i = 0; i < 2; i++ ) { for( j = 0, k = 0, pocBase = PicOrderCntVal; j < num_ref_entries[ i ][ RplsIdx[ i ] ]; j++) { if( !inter_layer_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { if( st_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase - DeltaPocValSt[ i ][ RplsIdx[ i ] ][ j ] if(в буфере DPB имеется опорное изображение picA с таким же параметром nuh_layer_id как текущее изображение и PicOrderCntVal равно RefPicPocList[ i ][ j ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "нет опорного изображения" (13) pocBase = RefPicPocList[ i ][ j ] } else { if( !delta_poc_msb_cycle_lt[ i ][ k ] ) { if(в буфере DPB имеется опорное изображение picA с таким же параметром nuh_layer_id как текущее изображение и PicOrderCntVal & ( MaxPicOrderCntLsb - 1 ) равно PocLsbLt[ i ][ k ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "нет опорного изображения" RefPicLtPocList[ i ][ j ] = PocLsbLt[ i ][ k ] } else { if(в буфере DPB имеется опорное изображение picA с таким же параметром nuh_layer_id как текущее изображение и PicOrderCntVal равно FullPocLt[ i ][ k ] ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "нет опорного изображения" RefPicLtPocList[ i ][ j ] = FullPocLt[ i ][ k ] } k++ } } else { layerIdx = DirectRefLayerIdx[ GeneralLayerIdx[ nuh_layer_id ] ][ ilrp_idx[ i ][ RplsIdx ][ j ] ] refPicLayerId = vps_layer_id[ layerIdx ] if(в буфере DPB имеется опорное изображение picA с параметром nuh_layer_id равным refPicLayerId и таким же PicOrderCntVal как текущее изображение ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "нет опорного изображения" } fRefWidth устанавливают равным PicOutputWidthL для опорного изображения RefPicList[ i ][ j ] в отсчетах яркостной составляющей fRefHeight устанавливают равным PicOutputHeightL для опорного изображения RefPicList[ i ][ j ] в отсчетах яркостной составляющей RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL RefPicIsScaled[ i ][ j ] = ( RefPicScale[ i ][ j ][ 0 ] != ( 1 << 14 ) ) | | ( RefPicScale[ i ][ j ][ 1 ] != ( 1 << 14 ) ) } }
Для каждого i равного 0 или 1, первые NumRefIdxActive[ i ] входных позиций в списке RefPicList[ i ] называются активными входными позициями в этот список RefPicList[ i ], а другие входные позиции в списке RefPicList[ i ] называются неактивными входными позициями в этот список RefPicList[ i ].
ПРИМЕЧАНИЕ 3 - Может быть так, что какое-то конкретное изображение может обращаться и к входной позиции в список RefPicList[ 0 ], и к входной позиции в список RefPicList[ 1 ]. Также может быть так, что к какому-то конкретному изображению могут обращаться более одной входной позиции в список RefPicList[ 0 ] или более чем одной входной позиции в список RefPicList[ 1 ].
ПРИМЕЧАНИЕ 4 - Активные входные позиции в список RefPicList[ 0 ] и активные входные позиции в список RefPicList[ 1 ] коллективно относятся ко всем опорным изображениям, которые могут быть использованы для межкадрового прогнозирования текущего изображения и одного или нескольких изображений, следующих за текущим изображением в порядке декодирования. Неактивные входные позиции в список RefPicList[ 0 ] и неактивные входные позиции в список RefPicList[ 1 ] коллективно относятся ко всем опорным изображениям, которые не могут быть использованы для межкадрового прогнозирования текущего изображения, но могут быть использованы для межкадрового прогнозирования одного или нескольких изображений, следующих за текущим изображением в порядке декодирования.
ПРИМЕЧАНИЕ 5 - В списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] могут быть одна или несколько входных позиций, которые равны «нет опорного изображения», поскольку соответствующие изображения не присутствуют в буфере DPB. Каждую неактивную входную позицию в список RefPicList[ 0 ] или в список RefPicList[ 1 ], которая равна «нет опорного изображения», следует игнорировать. Для каждой активной входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], равной «нет опорного изображения», можно признать непреднамеренную потерю изображения.
Применение следующих ограничений является требованием соответствия потока битов данных:
- Для каждого i равного 0 или 1, параметр num_ref_entries[ i ][ RplsIdx[ i ] ] должен быть не меньше NumRefIdxActive[ i ].
- Изображение, к которому обращается каждая активная входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], должно присутствовать в буфере DPB и должно иметь идентификатор TemporalId не больше идентификатора текущего изображения.
- Изображение, относящееся к каждой активной входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], не должно быть текущим изображением и должно иметь флаг non_reference_picture_flag равный 0.
- Входная позиция изображения STRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] для среза изображения и входная позиция изображения LTRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] для того же самого или для другого среза того же самого изображения не должны относиться к одному и тому же изображению.
- Не должно быть входной позиции изображения LTRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], для которой разность между величиной PicOrderCntVal для текущего изображения и величиной PicOrderCntVal для изображения, относящегося к этой входной позиции, не меньше 224.
- Пусть setOfRefPics представляет собой множество уникальных изображений, относящихся ко всем входным позициям в списке RefPicList[ 0 ], имеющим такой же параметр nuh_layer_id, как текущее изображение, и ко всем входным позициям в списке RefPicList[ 1 ], имеющим такой же параметр nuh_layer_id, как текущее изображение. Число изображений в множестве setOfRefPics должно быть не больше MaxDecPicBuffMinus1 и множество setOfRefPics должно быть одним и тем же для всех срезов изображения.
- Когда текущее изображение представляет собой изображение пошагового доступа к временному подуровню (Step-wise Temporal Sub-layer Access (STSA)), не должно быть активной входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], имеющей идентификатор TemporalId, равный идентификатору текущего изображения.
- Когда текущее изображение представляет собой изображение, следующее в порядке декодирования за изображением STSA, имеющим идентификатор TemporalId, равный идентификатору текущего изображения, не должно быть изображения, имеющего идентификатор TemporalId равный идентификатору текущего изображения, входящего в качестве активной входной позиции в список RefPicList[ 0 ] или в список RefPicList[ 1 ] и предшествующего изображению STSA в порядке декодирования.
- Когда текущее изображение представляет собой чистое изображение с произвольным доступом (clean random access (CRA)), не должно быть изображения, к которому обращается входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], которая предшествует, в порядке передачи на выход или в порядке декодирования, какому-либо предшествующему изображению IRAP (когда таковое присутствует).
- Когда текущее изображение является «хвостовым» изображением, не должно быть изображения, к которому обращается активная входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] и которое было сформировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP, ассоциированного с текущим изображением.
- Когда текущее изображение является «хвостовым» изображением, следующим, и в порядке декодирования, и в порядке передачи на выход, за одним или несколькими ведущими изображениями, ассоциированными с тем же самым изображением IRAP, если таковое имеется, не должно быть изображения, к которому обращается какая-либо входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] и которое было сформировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP, ассоциированного с текущим изображением.
- Когда текущее изображение является изображением точки восстановления или изображением, следующим за изображением точки восстановления в порядке передачи на выход, не должно быть входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], содержащей изображение, которое было сформировано в процессе декодирования для генерации недоступных опорных изображений для изображения с плавным обновлением декодирования (gradual decoding refresh (GDR)) для изображения в точке восстановления.
- Когда текущее изображение является «хвостовым» изображением, не должно быть изображения, относящегося к активной входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], которая предшествует ассоциированному изображению IRAP в порядке передачи на выход или в порядке декодирования.
- Когда текущее изображение является «хвостовым» изображением, следующим, и в порядке декодирования, и в порядке передачи на выход, за одним или несколькими ведущими изображениями, ассоциированными с тем же самым изображением IRAP, если таковое имеется, не должно быть изображения, к которому обращается какая-либо входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] и которое предшествует ассоциированному изображению IRAP в порядке передачи на выход или в порядке декодирования.
- Когда текущее изображение является изображением RADL, не должно быть активной входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], представляющей собой что-либо из следующего:
- Изображение RASL
- Изображение, сформированное в процессе декодирования для генерации недоступных опорных изображений
- Изображение, предшествующее ассоциированному изображению IRAP в порядке декодирования
- Изображение, к которому обращается каждая входная позиция ILRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] для среза текущего изображения, должно принадлежать той же самой единице AU как текущее изображение.
- Изображение, к которому обращается каждая входная позиция ILRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] для среза текущего изображения, должно присутствовать в буфере DPB и должно иметь величину параметра nuh_layer_id меньше, чем текущее изображение.
- Каждая входная позиция ILRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ] для среза должна быть активной входной позицией.
После того, как построены списки RPL, процедура маркировки должна быть следующей:
Процедура декодирования для маркировки опорных изображений
Эту процедуру привлекают один раз для изображения, после декодирования заголовка среза и процедуры декодирования для построения списка опорных изображений для среза, как это специфицировано в пункте 8.3.2, но прежде декодирования данных среза. В результате этой процедуры одно или несколько опорных изображений в буфере DPB будут маркированы как «неиспользуемые в качестве опоры» или «используемые в качестве долгосрочной опоры».
Декодированное изображение в буфере DPB может быть маркировано как «неиспользуемое в качестве опоры», «используемое в качестве краткосрочной опоры» или «используемое в качестве долгосрочной опоры», но в любой конкретный момент времени в процессе декодирования может быть использована только одна из этих трех маркировок. Назначение одной из этих маркировок изображению неявно исключает другие из этих маркировок, когда применимо. Когда изображение называется маркированным как «используемое в качестве опоры», это коллективно означает, что это изображение маркировано как «используемое в качестве краткосрочной опоры» или «используемое в качестве долгосрочной опоры» (но не и то, и другое).
Изображения STRP и ILRP идентифицируют величинами их параметров nuh_layer_id и PicOrderCntVal. Изображения LTRP идентифицируют величинами их параметра nuh_layer_id и младшими битами (LSB) функции Log2( MaxLtPicOrderCntLsb ) их величин PicOrderCntVal.
Если текущее изображение представляет собой изображение из последовательности CLVSS, все опорные изображения, находящиеся в текущий момент в буфере DPB (если таковые имеются) с таким же параметром nuh_layer_id как текущее изображение, маркируют как «неиспользуемые в качестве опоры».
В противном случае, применяется следующее:
- Для каждой входной позиции изображения LTRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], когда соответствующее изображение является изображением STRP с такой же величиной параметра nuh_layer_id, как текущее изображение, это изображение маркируют как «используемое в качестве долгосрочной опоры».
- Каждое опорное изображение с такой же величиной параметра nuh_layer_id, как текущее изображение, в буфере DPB, но не соответствующее никакой входной позиции в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], маркируют как «неиспользуемое в качестве опоры».
- Для каждой входной позиции ILRP в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], опорное изображение маркируют как «используемое в качестве долгосрочной опоры»
Допускается иметь несинхронизированные изображения IRAP между слоями. Для поддержки такой возможности смешивают изображения IRAP и изображения не-IRAP в одной единице AU, при следующей конфигурации нумерации POC.
Для независимых слоев используют передачи в виде сигнализации циклов POC MSB. В наборе SPS, имеется флаг для управления, имеет ли заголовок изображения флаг ph_poc_msb_cycle_present_flag, и некоторую длину в наборе SPS. Когда флаг ph_poc_msb_cycle_present_flag равен 1, цикл POC MSB, кодированный в формате u(v), передают в виде сигнализации в заголовке изображения. Когда присутствует цикл POC MSB, бит POC MSB для изображения задают равным poc_msb_cycle * MaxPicOrderCntLsb
Для зависимых слоев, если имеется изображение picA в той же самой единице AU в опорном слое для текущего слоя, номер POC определяют как равный номеру POC изображения pica, а также требуется совмещение младших битов POC LSB между слоями. В противном случае применяется текущая процедура определения номера POC.
Параметр bit_depth_minus8 специфицирует битовую глубину, BitDepth, отсчетов в массивах яркостной составляющей и цветностной составляющей, и величину сдвига, QpBdOffset диапазона параметра квантования яркостной и цветностной составляющих следующим образом:
BitDepth = 8 + bit_depth_minus8 (14)
QpBdOffset = 6 * bit_depth_minus8 (15)
bit_depth_minus8 должно быть в диапазоне от 0 до 8, включительно.
Параметр sps_decoding_parameter_set_id, когда он больше 0, специфицирует величину параметра dps_decoding_parameter_set_id для набора параметров декодирования (decoding parameter set (DPS)), на который ссылается набор SPS. Когда величина параметра sps_decoding_parameter_set_id равна 0, набор SPS не ссылается на набор DPS, и никакой набор DPS не требуется при декодировании каждой последовательности кодированных слоев видео (CLVS), обращающейся к набору SPS. Величина параметра sps_decoding_parameter_set_id должна быть одинаковой для всех наборов 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).
- Величину параметра GeneralLayerIdx[ nuh_layer_id ] признают равной 0.
- Величину флага vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] признают равной 1.
Когда флаг vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равен 1, набор SPS, к которому обращается последовательность CLVS с конкретной величиной параметра nuh_layer_id равной параметру nuhLayerId, должен иметь параметр nuh_layer_id, равный nuhLayerId.
Параметр chroma_format_idc специфицирует дискретизацию цветностной составляющей относительно дискретизации яркостной составляющей, как это специфицировано в пункте 6.2.
Флаг separate_colour_plane_flag равный 1 специфицирует, что три цветовые составляющее цветового формата 4:4:4 кодируют по отдельности. Флаг separate_colour_plane_flag равный 0 специфицирует, что цветовые составляющие не кодируют по отдельности. Когда флаг separate_colour_plane_flag не присутствует, его признают равным 0. Когда флаг separate_colour_plane_flag равен 1, кодированное изображение состоит из трех цветовых составляющих, каждая из которых содержит кодированные отсчеты одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис одноцветного кодирования. В этом случае, каждая цветовая плоскость ассоциирована с конкретной величиной параметра colour_plane_id.
ПРИМЕЧАНИЕ 6 - Нет зависимости между процессами декодирования для разных цветовых плоскостей, имеющих различные величины параметра colour_plane_id. Например, процедура декодирования одноцветного изображения с одной величиной параметра colour_plane_id не использует никаких данных из одноцветных изображений с другими величинами параметра colour_plane_id для межкадрового прогнозирования.
В зависимости от величины флага separate_colour_plane_flag, величину переменной ChromaArrayType назначают следующим образом:
- Если флаг separate_colour_plane_flag равен 0, переменную ChromaArrayType устанавливают равной параметру chroma_format_idc.
- В противном случае (флаг separate_colour_plane_flag равен 1), переменную ChromaArrayType устанавливают равной 0.
Значения параметра chroma_format_idc и флага separate_colour_plane_flag используют для индикации цветового формата:
Параметр sps_poc_msb_flag равный 1 специфицирует, что синтаксический элемент флага ph_poc_msb_cycle_present_flag присутствует в заголовках PH, обращающихся к набору SPS. Флаг sps_poc_msb_flag равный 0 специфицирует, что синтаксический элемент флага ph_poc_msb_cycle_present_flag не присутствует в заголовках PH, обращающихся к набору SPS.
Параметр poc_msb_len_minus1 плюс 1 специфицирует длину, в битах, синтаксических элементов poc_msb_val syntax, когда они присутствуют в заголовках PH, обращающихся к набору SPS. Величина параметра poc_msb_len_minus1 должна быть в диапазоне от 0 до 32 - log2_max_pic_order_cnt_lsb_minus4 - 5, включительно.
Флаг ph_poc_msb_present_flag равный 1 специфицирует, что синтаксический элемент poc_msb_val присутствует в заголовке PH. Флаг ph_poc_msb_present_flag равный 0 специфицирует, что синтаксический элемент poc_msb_val не присутствует в заголовке PH. Когда флаг vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равен 0 и имеется изображение в текущей единице AU в опорном слое для текущего слоя, величина флага ph_poc_msb_present_flag должга быть равна 0.
Параметр poc_msb_val специфицирует величину бита POC MSB для текущего изображения. Длина синтаксического элемента poc_msb_val равна poc_msb_len_minus1 + 1 бит.
Ниже приведено определение параметра POC (порядковый номер изображения) для текущего изображения
Процедура декодирования для порядкового номера изображения
Результатом процедуры является величина PicOrderCntVal, порядковый номер текущего изображения.
Каждое кодированное изображение ассоциировано с переменной порядкового номера изображения, обозначенного PicOrderCntVal.
Если флаг vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равен 0 и имеется изображение picA в текущей единице AU в опорном слое для текущего слоя, величину PicOrderCntVal определяют равной величине PicOrderCntVal для изображения picA, и величина параметра slice_pic_order_cnt_lsb должна быть одной и той же для всех единиц VCL NAL в текущей единице AU. В противном случае, величину PicOrderCntVal для текущего изображения определяют, как специфицировано ниже.
Когда флаг ph_poc_msb_present_flag равен 0 и текущее изображение не входит в последовательность CLVSS, переменные prevPicOrderCntLsb и prevPicOrderCntMsb определяют следующим образом:
- Пусть изображение prevTid0Pic является предыдущим изображением в порядке декодирования, которое имеет параметр nuh_layer_id равный параметру nuh_layer_id для текущего изображения и идентификатор TemporalId равный 0, и это изображение не является ни изображением RASL, ни изображением RADL.
- Переменную prevPicOrderCntLsb устанавливают равной slice_pic_order_cnt_lsb для изображения prevTid0Pic.
- Переменную prevPicOrderCntMsb устанавливают равной величине PicOrderCntMsb для изображения prevTid0Pic.
Переменную PicOrderCntMsb для текущего изображения определяют следующим образом:
- Если флаг ph_poc_msb_present_flag равен 1, параметр PicOrderCntMsb устанавливают равным poc_msb_val * MaxPicOrderCntLsb.
- В противном случае (флаг ph_poc_msb_present_flag равен 0), если текущее изображение принадлежит последовательности CLVSS, параметр PicOrderCntMsb устанавливают равным 0.
- В противном случае, параметр PicOrderCntMsb определяют следующим образом:
if( ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ( ( prevPicOrderCntLsb - slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb (16) else if( (slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( ( slice_pic_order_cnt_lsb - prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb - MaxPicOrderCntLsb else PicOrderCntMsb = prevPicOrderCntMsb
Параметр PicOrderCntVal определяют следующим образом:
PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb (17)
Примечание 7 - Все изображения последовательности CLVSS, для которых параметр poc_msb_val не присутствует, будут иметь величину PicOrderCntVal, равную параметру slice_pic_order_cnt_lsb, поскольку для этих изображений величину PicOrderCntMsb устанавливают равной 0.
Величина параметра PicOrderCntVal должна быть в диапазоне от -231 до 231 - 1, включительно.
В одной последовательности CVS, величины параметра PicOrderCntVal для любых двух кодированных изображений с одинаковыми значениями параметра nuh_layer_id не должны быть одинаковыми.
Все изображения в любой конкретной единице AU должны иметь одинаковую величину параметра PicOrderCntVal.
Функцию PicOrderCnt( picX ) специфицируют следующим образом:
PicOrderCnt( picX ) = PicOrderCntVal для изображения picX (18)
Функцию DiffPicOrderCnt( picA, picB ) специфицируют следующим образом:
DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) - PicOrderCnt( picB ) (19)
Поток битов данных не должен содержать данные, результатом которых будет то, что величины параметров DiffPicOrderCnt( picA, picB ), используемых в процессе декодирования, оказываются вне диапазона от -215 до 215 - 1, включительно.
ПРИМЕЧАНИЕ 8 - Пусть X является текущим изображением, и Y и Z являются двумя другими изображениями в той же самой последовательности CVS, тогда Y и Z считаются находящимися в одном и том же направлении в порядке вывода от X, когда обе величины DiffPicOrderCnt( X, Y ) и DiffPicOrderCnt( X, Z ) являются положительными или обе являются отрицательными.
Ограничения флага sps_poc_msb_flag
Флаг sps_poc_msb_flag используется для управления тем, будет ли присутствовать флаг ph_poc_msb_cycle_present_flag в заголовке изображения. В то же время, смешивание изображений IRAP и не-IRAP в единице AU необходимо активизировать только в многослойном сценарии. Таким образом, нет необходимости в присутствии флага ph_poc_msb_cycle_present_flag в однослойном сценарии кодирования. Поэтому, величина флага sps_poc_msb_flag может быть ограничена тем, что она должна быть равна 0 в однослойном сценарии кодирования.
1.2 ограничение параметра chroma_format_idc, флага separate_colour_plane_flag, параметра bit_depth_minus8. Сегодняшняя процедура компенсации движения может быть использована при межслойном прогнозировании, но она не может быть использована, когда разные слои имеют различные форматы (аналогично, параметр chroma_format_idc, флаг separate_colour_plane_flag, параметр bit_depth_minus8),
Предлагается ограничить величину флага sps_poc_msb_flag тем, что она должна быть равн 0 в многослойном сценарии кодирования.
Предлагается ограничение, что межслойное прогнозирование может быть использовано только тогда, когда текущее изображение в текущем слое и опорное изображение в опорном слое имеют одинаковый формат.
Флаг sps_poc_msb_flag используется для управления тем, будет ли присутствовать флаг flag ph_poc_msb_cycle_present_flag в заголовке изображения. В то же время, смешивание изображений IRAP и не-IRAP в единице AU необходимо активизировать только в многослойном сценарии. Таким образом, нет необходимости в присутствии флага ph_poc_msb_cycle_present_flag в однослойном сценарии кодирования. Поэтому, величина флага sps_poc_msb_flag может быть ограничена тем, что она должна быть равна 0 в однослойном сценарии кодирования
Первый вариант [ограничение флага sps_poc_msb_flag]
Семантика флага sps_poc_msb_flag может быть модифицирована, как показано ниже:
Флаг sps_poc_msb_flag равный 1 специфицирует, что синтаксический элемент флага ph_poc_msb_cycle_present_flag присутствует в заголовках PH, обращающихся к набору SPS. Флаг sps_poc_msb_flag равный 0 специфицирует, что синтаксический элемент флага ph_poc_msb_cycle_present_flag не присутствует в заголовках PH, обращающихся к набору SPS. Когда параметр vps_max_layers_minus1 равен 0, величина флага sps_poc_msb_flag должна быть равна 0.
Второй вариант [ограничение формата]
Приведенное ниже ограничение следует добавить в спецификации:
Флаг vps_direct_ref_layer_flag[ i ][ j ] равный 0 специфицирует, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. Флаг vps_direct_ref_layer_flag [ i ][ j ] равный 1 специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда флаг vps_direct_ref_layer_flag[ i ][ j ] не присутствует для i и j в диапазоне от 0 до vps_max_layers_minus1, включительно, величину этого флага признают равной 0. Когда флаг vps_independent_layer_flag[ i ] равен 0, должно быть по меньшей мере одно такое значение j в диапазоне от 0 до i - 1, включительно, что величина флага vps_direct_ref_layer_flag[ i ][ j ] равна 1.
Переменные NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ] и LayerUsedAsRefLayerFlag[ j ] определяют следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0; j <= vps_max_layers_minus1; j++ ) { dependencyFlag[ i ][ j ] = vps_direct_ref_layer_flag[ i ][ j ] for( k = 0; k < i; k++ ) if( vps_direct_ref_layer_flag[ i ][ k ] && dependencyFlag[ k ][ j ] ) dependencyFlag[ i ][ j ] = 1 } LayerUsedAsRefLayerFlag[ i ] = 0 } for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) { (20) if( direct_ref_layer_flag[ i ][ j ] ) { DirectRefLayerIdx[ i ][ d++ ] = j LayerUsedAsRefLayerFlag[ j ] = 1 } if( dependencyFlag[ i ][ j ] ) RefLayerIdx[ i ][ r++ ] = j } NumDirectRefLayers[ i ] = d NumRefLayers[ i ] = r }
Переменную GeneralLayerIdx[ i ], специфицирующую индекс слоя для слоя с параметром nuh_layer_id равным vps_layer_id[ i ], определяют следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) (21) GeneralLayerIdx[ vps_layer_id[ i ] ] = i
Опция ограничения A:
Если текущий слой является зависимым слоем, видео в текущем слое должно иметь такой же параметр chroma_format_idc, как и видео в опорном слое.
Кроме того, можно сказать, что межслойное прогнозирование может быть использовано только тогда, когда видео в текущем слое будет иметь такой же параметр chroma_format_idc, как и видео в опорном слое
Опция ограничения B:
Если текущий слой является зависимым слоем, видео в текущем слое должно иметь такой же флаг separate_colour_plane_flag, как и видео в опорном слое.
Кроме того, можно сказать, что межслойное прогнозирование может быть использовано только тогда, когда видео в текущем слое будет иметь такой же флаг separate_colour_plane_flag, как и видео в опорном слое
Опция ограничения C:
Если текущий слой является зависимым слоем, видео в текущем слое должно иметь такой же параметр bit_depth_minus8, как и видео в опорном слое.
Кроме того, можно сказать, что межслойное прогнозирование может быть использовано только тогда, когда видео в текущем слое будет иметь такой же параметр bit_depth_minus8, как и видео в опорном слое
Опции A, B и C могут быть комбинированы:
Как опция A+ B:
Если текущий слой является зависимым слоем, видео в текущем слое должно иметь такие же параметр chroma_format_idc и флаг separate_colour_plane_flag, как и видео в опорном слое.
Кроме того, можно сказать, что межслойное прогнозирование может быть использовано только тогда, когда видео в текущем слое будет иметь такие же параметр chroma_format_idc и флаг separate_colour_plane_flag, как и видео в опорном слое
Как опция A+ B+C
Если текущий слой является зависимым слоем, видео в текущем слое должно иметь такие же параметр chroma_format_idc, флаг separate_colour_plane_flag и параметр bit_depth_minus8, как и видео в опорном слое.
Кроме того, можно сказать, что межслойное прогнозирование может быть использовано только тогда, когда видео в текущем слое будет иметь такие же параметр chroma_format_idc, флаг separate_colour_plane_flag и параметр bit_depth_minus8, как и видео в опорном слое
Третий вариант [ограничение формата]
Эти ограничения могут быть также добавлены в других способах:
8 Процедура декодирования
8.1 Общая процедура декодирования
8.1.1 Общие положения
Входными данными для этой процедуры является поток битов данных BitstreamToDecode, подлежащий декодированию. Выходными данными этой процедуры является список декодированных изображений.
Процедура декодирования специфицирована таким образом, чтобы все декодирующие устройства, соответствующие специфицированным профилю и уровню, генерировали численно идентичные усеченные декодированные выходные изображения при привлечении процедуры декодирования, ассоциированной с этим профилем, для потока битов данных, соответствующего этим профилю и уровню. Любая процедура декодирования, генерирующая усеченные декодированные выходные изображения, идентичные тем, которые являются результатом описываемой здесь процедуры (с правильным порядком передачи на выход или выходной синхронизацией, как специфицировано), соответствует требованиям к процедуре декодирования согласно настоящим Спецификациям.
Для каждой единицы IRAP AU в потоке битов данных, применяется следующее:
- Если рассматриваемая единица AU является первой единицей AU в потоке битов данных в порядке декодирования, каждое изображение представляет собой изображение IDR, или каждое изображение является первым изображением в слое, следующем за единицей EOS NAL unit в порядке декодирования, переменную NoIncorrectPicOutputFlag устанавливают равной 1.
- В противном случае, если некоторые внешние средства, не специфицированные в настоящих Спецификациях, доступны для установления переменной HandleCraAsCvsStartFlag на некую величину для единицы AU, эту переменную HandleCraAsCvsStartFlag устанавливают равной этой величине, предоставляемой внешними средствами, и переменную NoIncorrectPicOutputFlag устанавливают равной переменной HandleCraAsCvsStartFlag.
- В противном случае, обе переменные HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливают равными 0.
Для каждой единицы GDR AU в потоке битов данных, применяется следующее:
- Если рассматриваемая единица AU является первой единицей AU в потоке битов данных в порядке декодирования, или каждое изображение является первым изображением в слое, следующем за единицей EOS NAL unit в порядке декодирования, переменную NoIncorrectPicOutputFlag устанавливают равной 1.
- В противном случае, если некоторые внешние средства, не специфицированные в настоящих Спецификациях, доступны для установления переменной HandleGdrAsCvsStartFlag на некую величину для единицы AU, эту переменную HandleGdrAsCvsStartFlag устанавливают равной этой величине, предоставляемой внешними средствами, и переменную NoIncorrectPicOutputFlag устанавливают равной переменной HandleGdrAsCvsStartFlag.
- В противном случае, обе переменные HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливают равными 0.
ПРИМЕЧАНИЕ - Приведенные выше операции, и для изображений IRAP, и для изображений GDR, необходимы для идентификации последовательностей CVS в потоке битов данных.
Переменную TargetOlsIdx, идентифицирующую индекс OLS для целевого множества OLS, подлежащего декодированию, и переменную Htid, идентифицирующую наивысший временной подслой, подлежащий декодированию, устанавливают посредством некоторых внешних средств, неспецифированных в настоящих Спецификациях. Поток битов данных BitstreamToDecode, подлежащий декодированию, не содержит никаких других слоев кроме тех, какие включены в целевое множество OLS, и не содержит никаких единиц NAL с идентификатором TemporalId больше Htid.
Пункт 8.1.2 многократно привлекают для каждого кодированного изображения в потоке BitstreamToDecode в порядке декодирования.
Опция A:
Когда поток BitstreamToDecode содержит больше одного слоя, следующее свойство должно быть одинаковым для каждого слоя:
- chroma_format_idc
- separate_colour_plane_flag
Опция B
Когда поток BitstreamToDecode содержит больше одного слоя, следующее свойство должно быть одинаковым для каждого слоя:
- bit_depth_minus8
Опция C = Опция A+ Опция B
Когда поток BitstreamToDecode содержит больше одного слоя, следующее свойство должно быть одинаковым для каждого слоя:
- chroma_format_idc
- separate_colour_plane_flag
- bit_depth_minus8
(1) ограничение - величина флага sps_poc_msb_flag должна быть ограничена равенством 0, при работе в однослойном сценарии кодирования, чтобы очистить структуру определения номера POC.
(2) ограничение формата текущего слоя и опорного слоя при межслойном прогнозировании, чтобы упростить конфигурацию.
Фиг. 7 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео. Как показано на Фиг. 7, способ декодирования потока битов данных кодированного видео может содержать следующие этапы с 701 по 703.
S701. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0.
В частности, слой представляет собой последовательность изображений, и изображения в этой последовательности изображений совместно используют один и тот же идентификатор слоя или индекс слоя.
В частности, аппаратура для декодирования потока битов данных кодированного видео (например, декодирующее устройство, показанное на Фиг. 3) конфигурирована для синтаксического анализа потока 21 битов данных (или вообще кодированных данных 21 изображения) и осуществления, например, энтропийного декодирования кодированных данных 21 изображения с целью получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на Фиг. 3), например, каких-либо или всех параметров межкадрового прогнозирования (например, индекса опорного изображения и вектора движения), параметра внутрикадрового прогнозирования (например, режима внутрикадрового прогнозирования или индекса такого режима), параметров преобразования, параметров квантования, параметров контурного фильтра, синтаксического элемента опорного слоя, относящегося к цветовому формату синтаксического элемента, относящегося к битовой глубине синтаксического элемента, и/или других синтаксических элементов. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, описанным применительно к модулю 270 энтропийного кодирования в кодирующем устройстве 20. Модуль 304 энтропийного декодирования может быть далее выполнен с возможностью передачи параметров межкадрового прогнозирования, параметра внутрикадрового прогнозирования и/или других синтаксических элементов модулю 360 применения режима и других параметров другим модулям декодирующего устройства 30. Декодирующее устройство 30 для видео может принимать синтаксические элементы на уровне среза видео и/или на уровне блока видео. В дополнение или в качестве альтернативы для срезов и соответствующих синтаксических элементов могут быть приняты и/или использованы группы плиток и/или плитки и соответствующие синтаксические элементы.
В одном из вариантов, указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из вариантов, указанный синтаксический элемент опорного слоя может представлять собой синтаксический элемент флага vps_direct_ref_layer_flag[ i ][ j ] в таблице набора VPS, приведенной выше.
Флаг vps_direct_ref_layer_flag[ i ][ j ] равный 0 специфицирует, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. Флаг vps_direct_ref_layer_flag [ i ][ j ] равный 1 специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда флаг vps_direct_ref_layer_flag[ i ][ j ] не присутствует для индексов i и j в диапазоне от 0 до vps_max_layers_minus1, включительно, его признают равным 0. Когда флаг vps_independent_layer_flag[ i ] is равен 0, должно быть по меньшей мере одно значение индекса j в диапазоне от 0 до i - 1, включительно, такое, что флаг vps_direct_ref_layer_flag[ i ][ j ] равен 1.
Переменные NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ] и LayerUsedAsRefLayerFlag[ j ] определяют следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0; j <= vps_max_layers_minus1; j++ ) { dependencyFlag[ i ][ j ] = vps_direct_ref_layer_flag[ i ][ j ] for( k = 0; k < i; k++ ) if( vps_direct_ref_layer_flag[ i ][ k ] && dependencyFlag[ k ][ j ] ) dependencyFlag[ i ][ j ] = 1 } LayerUsedAsRefLayerFlag[ i ] = 0 } for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) { (22) if( vps_direct_ref_layer_flag[ i ][ j ] ) { DirectRefLayerIdx[ i ][ d++ ] = j LayerUsedAsRefLayerFlag[ j ] = 1 } if( dependencyFlag[ i ][ j ] ) RefLayerIdx[ i ][ r++ ] = j } NumDirectRefLayers[ i ] = d NumRefLayers[ i ] = r }
В частности, флаг vps_direct_ref_layer_flag [ i ][ j ] равный 1 специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
S702. Определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0.
В одном из вариантов, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, тогда слой с индексом j является опорным слоем для слоя с индексом i.
В частности, в отношении опорного слоя, имеется два виде сцен: согласно одному виду сцен слой с индексом A является прямым опорным слоем для слоя с индексом B; согласно другому виду сцен слой с индексом A является непрямым опорным слоем для слоя с индексом B, когда слой с индексом C является опорным слоем для слоя с индексом B, слой с индексом A является опорным слоем для слоя с индексом C, и слой с индексом A не является прямым опорным слоем для слоя с индексом B. Опорный слой может представлять собой прямой опорный слой или непрямой опорный слой. То, что слой с индексом A является прямым опорным слоем для слоя с индексом B, означает, что слой с индексом A содержит по меньшей мере одно опорное изображение для какого-либо изображения в слое с индексом B. На этапе S702, слой с индексом j является опорным слоем для слоя с индексом k, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
S703. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В частности, если слой с индексом j является опорным слоем для слоя с индексом i, изображение в слое с индексом i можно прогнозировать на основе слоя с индексом j, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В частности, аппаратура для декодирования потока битов данных кодированного видео (например, декодирующее устройство 30, показанное на Фиг. 3) конфигурирована для использования межкадрового прогнозирования для изображения слоя с индексом i на основе слоя с индексом j, генерации блоков 365 прогнозирования для блока видео в текущем срезе видео на основе векторов движения и других синтаксических элементов, принятых от модуля 304 энтропийного декодирования. Для межкадрового прогнозирования, блоки прогнозирования могут быть получены из одного из опорных изображений в пределах одного из списков опорных изображений. Декодирующее устройство 30 для видео может построить списки опорных кадров, Список 0 и Список 1, с использованием способа построения по умолчанию на основе опорных изображений, сохраняемых в буфере DPB 330. То же самое или аналогичное может быть применено для или посредством вариантов, использующих группы (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для срезов (например, срезов видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B.
В частности, межслойным прогнозированием называется использование межкадрового прогнозирования изображения из слоя с индексом i на основе опорного изображения из слоя с индексом j.
В одном из вариантов, относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
В частности, набор SPS применяют к последовательности изображений, и пока какой-то слой представляет собой последовательность изображений, набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из вариантов, относящийся к цветовому формату синтаксический элемент может представлять собой синтаксический элемент chroma_format_idc в таблице набора SPS, приведенной выше.
Параметр chroma_format_idc специфицирует дискретизацию цветностной составляющей относительно дискретизации яркостной составляющей, как это указано в статье 6.2.
Значения параметра chroma_format_idc и флага separate_colour_plane_flag используются для индикации цветового формата:
Таблица значений SubWidthC и SubHeightC, полученных на основе параметра chroma_format_idc
Согласно одному из вариантов настоящей заявки, синтаксический элемент опорного слоя получают посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0; определяют, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 8 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео. Как иллюстрировано на Фиг. 8, способ декодирования потока битов данных кодированного видео может содержать следующие этапы с 801 по 802.
S801. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
S802. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Следует отметить, что если величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j не является прямым опорным слоем для слоя с индексом i, слой с индексом j может представлять собой опорный слой, т.е. этот слой с индексом j может быть непрямым опорным слоем для слоя с индексом j и может также быть опорным слоем.
Согласно рассматриваемому варианту настоящей заявки, синтаксический элемент опорного слоя получают посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и если удовлетворяется некоторое условие, прогнозируют изображение слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
На основе вариантов, показанных на Фиг. 7 и 8, способ декодирования потока битов данных кодированного видео далее содержит:
получение относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее содержит то, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В частности, изображение из слоя с индексом i можно прогнозировать только на основе слоя с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
Фиг. 9 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео, как иллюстрировано на Фиг. 9, на основе способа, показанного на Фиг. 7. Этот способ декодирования потока битов данных кодированного видео может содержать следующие этапы с 901 по 906.
S901. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0.
S902. Определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0.
S903. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
S904. Если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, остановка декодирования потока битов данных кодированного видео.
S905. Если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
В частности, определяют, что слой с индексом j не является опорным слоем для слоя с индексом i, когда слой с индексом j не является прямым опорным слоем для слоя с индексом i, и слой с индексом k не может быть найден путем прохода через все слои, слой с индексом k является прямым опорным слоем для слоя с индексом i, и слой с индексом j является опорным слоем для слоя с индексом k.
В одном из вариантов, если слой с индексом j не является опорным слоем для слоя с индексом i, определяют, является ли слой с индексом j непрямым опорным слоем для слоя с индексом i; если слой с индексом j является непрямым опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i с использованием слоя с индексом j; если слой с индексом j не является непрямым опорным слоем для слоя с индексом i, прогнозируют изображения слоя с индексом i без использования слоя с индексом j.
Определяют, что слой с индексом j является непрямым слоем для слоя с индексом i, когда слой с индексом k является прямым опорным слоем для слоя с индексом i, и слой с индексом j является опорным слоем для слоя с индексом k, путем прохода через все слои.
S906. Если удовлетворяется указанное условие, определение, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В частности, определяют, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео.
Согласно рассматриваемому варианту настоящей заявки, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, останавливают декодирование потока битов данных кодированного видео; если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i без использования слоя с индексом j; и если удовлетворяется указанное условие, определяют, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 10 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео. Как иллюстрировано на Фиг. 10, способ декодирования потока битов данных кодированного видео может содержать следующие этапы с 1001 по 1003.
S1001. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0.
В одном из вариантов, указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где набор VPS применяется к слою с индексом j и к слою с индексом i.
S1002. Определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0.
В одном из вариантов, если величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, этот слой с индексом j является опорным слоем для слоя с индексом i.
S1003. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется этот относящийся к битовой глубине синтаксический элемент.
В одном из вариантов, где относящийся к битовой глубине синтаксический элемент является синтаксическим элементом на уровне набора параметров последовательности (SPS), этот набор SPS применяется к слою с индексом j или к слою с индексом i.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент может представлять собой синтаксический элемент параметра bit_depth_minus8 в таблице набора SPS, приведенной выше.
Параметр bit_depth_minus8 специфицирует битовую глубину отсчетов в массивах яркостной составляющей и цветностной составляющей, BitDepth, и величину сдвига диапазона параметра квантования яркостной составляющей и цветностной составляющей, QpBdOffset, следующим образом:
BitDepth = 8 + bit_depth_minus8 (23)
QpBdOffset = 6 * bit_depth_minus8 (24)
bit_depth_minus8 должно быть в диапазоне от 0 до 8, включительно.
Принцип этого варианта аналогичен варианту, показанному на Фиг. 7, и потому здесь не будет описан для краткости.
Согласно рассматриваемому варианту настоящей заявки, синтаксический элемент опорного слоя получают посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0; определяют, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и если удовлетворяется некоторое условие, прогнозируют изображение слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где это указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 11 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео. Как иллюстрировано на Фиг. 11, этот способ декодирования потока битов данных кодированного видео может содержать следующие этапы 1101 и 1102.
S1101. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
S1102. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Принципы этого варианта аналогичны принципам вариантам, показанного на Фиг. 8, так что здесь они для краткости повторно описаны не будут.
Согласно рассматриваемому варианту настоящей заявки, синтаксический элемент опорного слоя получают посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и если удовлетворяется некоторое условие, прогнозируют изображение слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
На основе вариантов, показанных на Фиг. 10 и 11, способ декодирования потока битов данных кодированного видео далее содержит:
получение относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее содержит то, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
Фиг. 12 представляет упрощенную логическую схему, показывающую способ декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для декодирования потока битов данных кодированного видео. Как иллюстрировано на Фиг. 12, на основе способа, показанного на Фиг. 10, способ декодирования потока битов данных кодированного видео может содержать следующие этапы с 1201 по 1206.
S1201. Получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0.
S1202. Определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0.
S1203. Если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
S1204. Если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, остановка декодирования потока битов данных кодированного видео.
S1205. Если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
S1206. Если удовлетворяется указанное условие, определение, без получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
Принципы этого варианта аналогичны варианту, показанному на Фиг. 9, так что они здесь для краткости повторно описаны не будут.
Согласно рассматриваемому варианту настоящей заявки, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, останавливают декодирование потока битов данных кодированного видео; если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i без использования слоя с индексом j; и если удовлетворяется указанное условие, определяют, без получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 13 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки, этот способ может осуществляться аппаратурой для кодирования видео. Как иллюстрировано на Фиг. 13, способ кодирования видео может содержать следующие этапы 1301 и 1302.
S1301. Определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
Аппаратура для кодирования видео (например, кодирующее устройство 20, показанное на Фиг. 2) может, например, быть конфигурирована для определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, и для выбора опорного блока из нескольких опорных блоков из того же самого или из других изображений из совокупности нескольких других изображений и для передачи опорного изображения (или индекса опорного изображения) и/или сдвига (пространственного сдвига) между позицией (координаты x, y) указанного опорного блока и позицией текущего блока в качестве параметров межкадрового прогнозирования модулю оценки движения
S1302. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставка кодированной величины в поток битов данных видео, и кодирование относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставка кодированных величин в поток битов данных видео, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
В одном из вариантов, указанный синтаксический элемент опорного слоя может представлять собой синтаксический элемент с флагом vps_direct_ref_layer_flag[ i ][ j ] в таблице набора VPS, приведенной выше.
Флаг vps_direct_ref_layer_flag[ i ][ j ] равный 0 специфицирует, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. Флаг vps_direct_ref_layer_flag [ i ][ j ] равный 1 специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда флаг vps_direct_ref_layer_flag[ i ][ j ] не присутствует для индексов i и j в диапазоне от 0 до vps_max_layers_minus1, включительно, этот флаг признают равным 0. Когда флаг vps_independent_layer_flag[ i ] равен 0, должно быть по меньшей мере одно значение индекса j в диапазоне от 0 до i - 1, включительно, при котором величина флага vps_direct_ref_layer_flag[ i ][ j ] равна 1.
Переменные NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ] и LayerUsedAsRefLayerFlag[ j ] определяют следующим образом:
for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0; j <= vps_max_layers_minus1; j++ ) { dependencyFlag[ i ][ j ] = vps_direct_ref_layer_flag[ i ][ j ] for( k = 0; k < i; k++ ) if( vps_direct_ref_layer_flag[ i ][ k ] && dependencyFlag[ k ][ j ] ) dependencyFlag[ i ][ j ] = 1 } LayerUsedAsRefLayerFlag[ i ] = 0 } for( i = 0; i <= vps_max_layers_minus1; i++ ) { for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) { (25) if( vps_direct_ref_layer_flag[ i ][ j ] ) { DirectRefLayerIdx[ i ][ d++ ] = j LayerUsedAsRefLayerFlag[ j ] = 1 } if( dependencyFlag[ i ][ j ] ) RefLayerIdx[ i ][ r++ ] = j } NumDirectRefLayers[ i ] = d NumRefLayers[ i ] = r }
В одном из вариантов, указанный относящийся к цветовому формату синтаксический элемент может представлять собой синтаксический элемент chroma_format_idc из таблицы набора SPS, приведенной выше.
Параметр chroma_format_idc специфицирует дискретизацию цветностной составляющей относительно дискретизации яркостной составляющей, как это определено в статье 6.2.
Значения параметра chroma_format_idc и флага separate_colour_plane_flag используются для индикации цветового формата:
Таблица значений SubWidthC и SubHeightC, полученных на основе параметра from chroma_format_idc
В частности, аппаратура для кодирования видео (например, кодирующее устройство 20, показанное на Фиг. 2) конфигурирована для кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированной величины в поток битов данных видео; для кодирования относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных величин в поток битов данных видео; и для применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования в коде переменной длины (VLC), схемы контекстно-адаптивного кодирования в коде переменной длины (CAVLC), схемы арифметического кодирования, бинаризации, схемы контекстно-адаптивного двоичного арифметического кодирования (CABAC), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (SBAC), схемы энтропийного кодирования с разбиением интервалов вероятности (PIPE) или других способов или технологии энтропийного кодирования) или обхода (без сжатия) к квантованным коэффициентам 209, параметрам межкадрового прогнозирования, параметрам внутрикадрового прогнозирования, параметрам контурного фильтра и/или другим синтаксическим элементам с целью получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного потока битов данных 21, так что, аппаратура для декодирования кодированного потока битов данных (например, декодирующее устройство 30 для видео, показанное на Фиг. 3) может принять и использовать эти параметры для декодирования. Кодированный поток битов данных 21 может быть передан декодирующему устройству 30 для видео, или сохранен в запоминающем устройстве для передачи в более позднее время или вызова декодирующим устройством 30 для видео.
Согласно рассматриваемому варианту настоящей заявки, определяют, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодируют синтаксический элемент опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставляют кодированную величину в поток битов данных видео, и кодируют относящийся к цветовому формату синтаксический элемент, применяемый к слою с индексом i, и относящийся к цветовому формату синтаксический элемент, применяемый к слою с индексом j, и вставляют кодированные величины в поток битов данных видео, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 14 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для кодирования видео, как иллюстрировано на Фиг. 14, на основе способа, показанного на Фиг. 13, этот способ кодирования видео может содержать следующие этапы с 1401 по 1404.
S1401. Определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
S1402. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставка кодированной величины в поток битов данных видео, и кодирование относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставка кодированных величин в поток битов данных видео, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
S1403. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на основе слоя с индексом j.
Множество (или возможные) режимов межкадрового прогнозирования зависит от доступных опорных изображений (т.е. предыдущих по меньшей мере частично декодированных изображений, например, сохраняемых в буфере DBP) и других параметров межкадрового прогнозирования, например, является ли это полным опорным изображением или только его частью, например, область окна поиска вокруг области текущего блока опорного изображения используется для поиска наилучшим образом согласованного опорного блока, и/или например, применяется ли интерполяция пикселей, например, интерполяция с точностью половина пикселя, четверть пикселя и/или 1/16 пикселя, или нет.
S1404. Если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
В одном из вариантов, если слой с индексом j не является прямым опорным слоем для слоя с индексом i, определяют, является ли слой с индексом j непрямым опорным слоем для слоя с индексом i; если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i, используя слой с индексом j; если слой с индексом j не является непрямым опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i без использования слоя с индексом j.
Согласно рассматриваемому варианту настоящей заявки, определяют, является ли слой с индексом j непрямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодируют синтаксический элемент опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставляют кодированную величину в поток битов данных видео, кодируют относящийся к цветовому формату синтаксического элемента, применяемый к слою с индексом i, и относящийся к цветовому формату синтаксический элемент, применяемый к слою с индексом j, и вставляют кодированные величины в поток битов данных видео, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j; и если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i на основе слоя с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 15 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки, этот способ может осуществляться аппаратурой для кодирования видео. Как иллюстрировано на Фиг. 15, этот способ кодирования видео может содержать следующие этапы 1501 и 1502.
S1501. Определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
S1502. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставка кодированную величину в поток битов данных видео, и кодирование относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и вставка кодированных величин в поток битов данных видео, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется указанный относящийся к битовой глубине синтаксический элемент.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент может представлять собой синтаксический элемент с параметром bit_depth_minus8 из таблицы набора SPS, приведенной выше.
Параметр bit_depth_minus8 специфицирует битовую глубину отсчетов в массивах яркостной составляющей и цветностной составляющей, BitDepth, и величину сдвига диапазона параметра квантования яркостной составляющей и цветностной составляющей, QpBdOffset, следующим образом:
BitDepth = 8 + bit_depth_minus8 (26)
QpBdOffset = 6 * bit_depth_minus8 (27)
bit_depth_minus8 должно быть в диапазоне от 0 до 8, включительно.
Принцип этого варианта аналогичен варианту, показанному на Фиг. 13, и потому здесь не будет описан для краткости.
Согласно рассматриваемому варианту настоящей заявки, в одном из вариантов, относящийся к битовой глубине синтаксический элемент может представлять собой синтаксический элемент bit_depth_minus8 из таблицы набора SPS, приведенной выше.
Параметр bit_depth_minus8 специфицирует битовую глубину отсчетов в массивах яркостной составляющей и цветностной составляющей, BitDepth, и величину сдвига диапазона параметра квантования яркостной составляющей и цветностной составляющей, QpBdOffset, следующим образом:
BitDepth = 8 + bit_depth_minus8 (28)
QpBdOffset = 6 * bit_depth_minus8 (29)
bit_depth_minus8 должно быть в диапазоне от 0 до 8, включительно.
Принцип этого варианта аналогичен варианту, показанному на Фиг. 7, и потому здесь не будет описан для краткости.
Согласно рассматриваемому варианту настоящей заявки, определяют, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодируют синтаксический элемент опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставляют кодированную величину в поток битов данных видео, кодируют относящийся к битовой глубине синтаксический элемент, применяемый к слою с индексом i, и относящийся к битовой глубине синтаксический элемент, применяемый к слою с индексом j, и вставляют кодированные величины в поток битов данных видео, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 16 представляет упрощенную логическую схему, показывающую способ кодирования видео согласно одному из вариантов настоящей заявки, этот способ может быть осуществлен аппаратурой для кодирования видео, как это иллюстрировано на Фиг. 16, на основе способа, показанного на Фиг. 15. Этот способ кодирования видео может содержать следующие этапы с 1601 по 1604.
S1601. Определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
S1602. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставка кодированной величины в поток битов данных видео, кодирование относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и вставка кодированных величин в поток битов данных видео, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
S1603. Если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на основе слоя с индексом j.
S1604. Если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
Согласно рассматриваемому варианту настоящей заявки, определяют, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодируют синтаксический элемент опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставляют кодированную величину в поток битов данных видео, кодируют относящийся к битовой глубине синтаксический элемент, применяемый к слою с индексом i, и относящийся к битовой глубине синтаксический элемент, применяемый к слою с индексом j, и вставляют кодированные величины в поток битов данных видео, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j; и если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозируют изображение слоя с индексом i на основе слоя с индексом j, в результате достигается ограничение формата текущего слоя и опорного слоя для межслойного прогнозирования, что делает алгоритм простым.
Фиг. 17 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки. Как иллюстрировано на Фиг. 17, аппаратура для декодирования потока битов данных кодированного может содержать получающий модуль 1701, решающий модуль 1702 и прогнозирующий модуль 1703.
Получающий модуль 1701 выполнен с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0;
Решающий модуль 1702 выполнен с возможностью определения, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
Прогнозирующий модуль 1703 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из вариантов, если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
В одном из вариантов, синтаксических элемент опорного слоя i является синтаксическим элементов на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из вариантов, относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
Получающий модуль 1701 может представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на in Фиг. 3, решающий модуль 1702 может представлять собой или быть частью модуля 360 применения режима в декодирующем устройстве 30, показанном на Фиг. 3, и прогнозирующий модуль 1703 может представлять собой или быть частью модуля межкадрового прогнозирования 344 в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 1701, решающий модуль 1702 и прогнозирующий модуль 1703, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в этом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 7, и аппаратура для декодирования потока битов данных кодированного видео, в соответствии со способом, показанным на Фиг. 7, может иметь структуру такого же типа, как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 17, что здесь не будет снова описано для краткости.
Фиг. 18 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, как иллюстрировано на Фиг. 18, аппаратура для декодирования потока битов данных кодированного видео может содержать получающий модуль 1801 и прогнозирующий модуль 1802.
Получающий модуль 1801 выполнен с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
Прогнозирующий модуль 1802 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Получающий модуль 1801 может представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на Фиг. 3, и прогнозирующий модуль 1802 может представлять собой или быть частью модуля межкадрового прогнозирования 344 в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 1801 и прогнозирующий модуль 1802, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного Фиг. 8, и аппаратура для декодирования потока битов данных кодированного видео способом, показанным на Фиг. 8, может иметь такую же структуру, как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 18, так что здесь она, для краткости, повторно описана не будет.
На основе вариантов, показанных на Фиг. 17 и 18, получающий модуль 1701 или получающий модуль 1801 дополнительно выполнен с возможностью получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
Фиг. 19 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки, на основе аппаратуры, показанной на Фиг. 17, эта аппаратура для декодирования потока битов данных кодированного видео может содержать получающий модуль 1701, решающий модуль 1702, прогнозирующий модуль 1703 и модуль 1704 остановки.
Модуль 1704 остановки выполнен с возможностью остановки декодирования потока битов данных кодированного видео, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемому к слою с индексом j.
Прогнозирующий модуль 1703 дополнительно выполнен с возможностью прогнозирования изображения в слое с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
Решающий модуль 1702 дополнительно выполнен с возможностью определения, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к цветовому формату синтаксического элемента, применяемому к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, если удовлетворяется указанное условие.
Модуль 1704 остановки в этом варианте может также представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 1701, решающий модуль 1702, прогнозирующий модуль 1703 и модуль 1704 остановки, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 9. При этом аппаратура для декодирования поток битов данных кодированного видео способом, показанным на Фиг. 9, может иметь такую же структуру, как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 19, так что здесь она, для краткости, повторно описана не будет.
Фиг. 20 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки. Эта аппаратура для декодирования потока битов данных кодированного видео может содержать получающий модуль 2001, решающий модуль 2002 и прогнозирующий модуль 2003.
Получающий модуль 2001 выполнен с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0.
Решающий модуль 2002 выполнен с возможностью определения, является ли слой с индексом j опорным слоем для слоя с индексом i на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0.
Прогнозирующий модуль 2003 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i.
В одном из вариантов, если величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется этот относящийся к битовой глубине синтаксический элемент.
В одном из вариантов, синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
В одном из вариантов, указанный относящийся к битовой глубине синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
Получающий модуль 2001 может представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на Фиг. 3, решающий модуль 2002 может представлять собой или быть частью модуля 360 применения режима в декодирующем устройстве 30, показанном на Фиг. 3, и прогнозирующий модуль 2003 может представлять собой или быть частью модуля 344 межкадрового прогнозирования в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 2001, решающий модуль 2002 и прогнозирующий модуль 2003, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 10. При этом аппаратура для декодирования потока битов данных кодированного видео с использованием способа, показанного на Фиг. 10, может иметь такую же структуру, как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 20, так что здесь она, для краткости, повторно описана не будет.
Фиг. 21 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки. Эта аппаратура для декодирования потока битов данных кодированного видео может содержать получающий модуль 2101 и прогнозирующий модуль 2102.
Получающий модуль 2101 выполнен с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
Прогнозирующий модуль 2102 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Получающий модуль 2101 может представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на Фиг. 3, и прогнозирующий модуль 2102 может представлять собой или быть частью модуля 344 межкадрового прогнозирования в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 2101 и прогнозирующий модуль 2102, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 11. Такая аппаратура для декодирования поток битов данных кодированного видео способом, показанным на Фиг. 11, может также иметь такую же структуру, как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 21, так что здесь она, для краткости, повторно описана не будет.
На основе вариантов, показанных на Фиг. 20 и 21, получающий модуль 2001 или получающий модуль 2101 дополнительно выполнен с возможностью получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
Фиг. 22 представляет структурную схему, показывающую аппаратуру для декодирования потока битов данных кодированного видео согласно одному из вариантов настоящей заявки. Как показано на Фиг. 22, на основе аппаратуры, показанной на Фиг. 20, аппаратура для декодирования потока битов данных кодированного видео может содержать получающий модуль 2001, решающий модуль 2002, прогнозирующий модуль 2003 и модуль остановки 2004.
Модуль остановки 2004 выполнен с возможностью остановки декодирования потока битов данных кодированного видео, если слой с индексом j является опорным слоем для слоя с индексом i, и величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
Прогнозирующий модуль 2003 далее выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
Решающий модуль 2002 далее выполнен с возможностью определения, без получения относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к битовой глубине синтаксического элемента применяемого к слою с индексом i, является величиной относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
Модуль 2004 остановки в этом варианте может также представлять собой или быть частью модуля 304 энтропийного декодирования в декодирующем устройстве 30, показанном на Фиг. 3.
Следует отметить, что каждый из модулей - получающий модуль 2001, решающий модуль 2002, прогнозирующий модуль 2003 и модуль 2004 остановки, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для декодирования потока битов данных кодированного видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 12. Такая аппаратура для декодирования потока битов данных кодированного видео способом, показанным на Фиг. 12, может иметь такую же структуру как аппаратура для декодирования потока битов данных кодированного видео, показанная на Фиг. 22, так что здесь она, для краткости, повторно описана не будет.
Следует отметить, что аппаратура для осуществления способа, показанного на Фиг. 7 - 12, или аппаратура для декодирования потока битов данных кодированного видео, как показано на Фиг. 17 - 22, может представлять собой или быть частью устройства 14 адресата, показанного на Фиг. 1A, декодирующего устройства 30 для видео, показанного на Фиг. 1B, декодирующего устройства 30, показанного на Фиг. 3, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Фиг. 23 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки. Как иллюстрировано на Фиг. 23, аппаратура для кодирования видео может содержать решающий модуль 2301 и кодирующий модуль 2302.
Решающий модуль 2301 выполнен с возможностью определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
Кодирующий модуль 2302 выполнен с возможностью кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированной величины в поток битов данных видео, и кодирования относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных величин в поток битов данных видео, если слой с индексом j является прямым опорным слоем для слоя с индексом i, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента применяемого к слою с индексом j.
Решающий модуль 2301 может представлять собой или быть частью модуля 260 выбора режима в кодирующем устройстве 20, показанном на Фиг. 2, и кодирующий модуль 2302 может представлять собой или быть частью модуля 270 энтропийного кодирования в кодирующем устройстве 20, показанном на Фиг. 2.
Следует отметить, что каждый модуль - решающий модуль 2301 и кодирующий модуль 2302, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для кодирования видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 13. При этом аппаратура для кодирования видео в соответствии со способом, показанным Фиг. 13, может также иметь такую же структуру, как аппаратура для кодирования видео, показанная на Фиг. 23, так что здесь она, для краткости, повторно описана не будет.
Фиг. 24 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки. Как показано на Фиг. 24, на основе аппаратуры, представленной на Фиг. 23, аппаратура для кодирования видео может далее содержать первый прогнозирующий модуль 2303 и второй прогнозирующий модуль 2304.
Первый прогнозирующий модуль 2303 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если слой с индексом j является прямым опорным слоем для слоя с индексом i.
Второй прогнозирующий модуль 2304 выполнен с возможностью прогнозирования изображения слой с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
Первый прогнозирующий модуль 2303 и второй прогнозирующий модуль 2304 могут представлять собой или быть частью модуля 244 межкадрового прогнозирования в кодирующем устройстве 20, показанном на Фиг. 2.
Следует отметить, что каждый модуль - решающий модуль 2301, кодирующий модуль 2302, первый прогнозирующий модуль 2303 и второй прогнозирующий модуль 2304, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для кодирования видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 14. При этом аппаратура для кодирования видео в соответствии со способом, показанным на Фиг. 14, может иметь такую же структуру, как аппаратура для кодирования видео, показанная на Фиг. 24, так что здесь она, для краткости, повторно описана не будет.
Фиг. 25 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки. Как показано на Фиг. 25, аппаратура для кодирования видео может содержать решающий модуль 2501 и кодирующий модуль 2502.
Решающий модуль 2501 выполнен с возможностью определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, оба индекса i и j представляют собой целые числа не меньше 0.
Кодирующий модуль 2502 выполнен с возможностью кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированной величины в поток битов данных видео, и кодирования относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, и относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных величин в поток битов данных видео, если слой с индексом j является прямым опорным слоем для слоя с индексом i, где величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к битовой глубине синтаксического элемента, применяемого к слою с индексом j.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется этот относящийся к битовой глубине синтаксический элемент.
Решающий модуль 2501 может представлять собой или быть частью модуля 260 выбора режима в кодирующем устройстве 20, показанном на Фиг. 2, и кодирующий модуль 2502 может представлять собой или быть частью модуля 270 энтропийного кодирования в кодирующем устройстве 20, показанном на Фиг. 2.
Следует отметить, что каждый из модулей - решающий модуль 2501 и кодирующий модуль 2502, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для кодирования видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 15, и эта аппаратура для кодирования видео в соответствии со способом, показанным на Фиг. 15, может иметь такую же структуру, как аппаратура для кодирования видео, показанная на Фиг. 25, так что здесь она, для краткости, повторно описана не будет.
Фиг. 26 представляет структурную схему, показывающую аппаратуру для кодирования видео согласно одному из вариантов настоящей заявки. Как иллюстрировано на Фиг. 26, на основе аппаратуры, показанной на Фиг. 25, аппаратура для кодирования видео может дополнительно содержать первый прогнозирующий модуль 2503 и второй прогнозирующий модуль 2504.
Первый прогнозирующий модуль 2503 выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если слой с индексом j является прямым опорным слоем для слоя с индексом i.
Второй прогнозирующий модуль 2504 выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
Первый прогнозирующий модуль 2503 и второй прогнозирующий модуль 2504 могут представлять собой или быть частью модуля 244 межкадрового прогнозирования в кодирующем устройстве 20, показанном на Фиг. 2.
Следует отметить, что каждый модулей - решающий модуль 2501, кодирующий модуль 2502, первый прогнозирующий модуль 2503 и второй прогнозирующий модуль 2504, может представлять собой модуль программного обеспечения или аппаратную схему.
Аппаратура для кодирования видео в рассматриваемом варианте может быть конфигурирована для осуществления способа, показанного на Фиг. 16, и эта аппаратура для кодирования видео в соответствии со способом, показанным на Фиг. 16, может иметь такую же структуру, как аппаратура для кодирования видео, показанная на Фиг. 26, так что здесь она, для краткости, повторно описана не будет.
Следует отметить, что аппаратура для осуществления способа, показанного Фиг. 13 - 16, или аппаратура для кодирования видео, показанная на Фиг. 23 - 26, может представлять собой или быть частью устройства 12 источника, показанного на Фиг. 1A, кодирующего устройства 20 для видео, показанного на Фиг. 1B, кодирующего устройства 20, показанного на Фиг. 2, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Настоящая заявка далее предлагает кодирующее устройство, содержащее процессорную схему для осуществления способа согласно какому-либо одному из вариантов настоящей заявки, показанных на Фиг. 13 - 16.
Следует отметить, что кодирующее устройство в рассматриваемом варианте может представлять собой или быть частью устройства 12 источника, показанного на Фиг. 1A, кодирующего устройства 20 для видео, показанного на Фиг. 1B, кодирующего устройства 20, показанного на Фиг. 2, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Настоящая заявка далее предлагает декодирующее устройство, содержащее процессорную схему для осуществления способа согласно какому-либо одному из вариантов настоящей заявки, показанных на Фиг. 7 - 12.
Следует отметить, что декодирующее устройство в рассматриваемом варианте может представлять собой или быть частью устройства 14 адресата, показанного на Фиг. 1A, декодирующего устройства 30 для видео, показанного на Фиг. 1B, декодирующего устройства 30, показанного на Фиг. 3, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Настоящая заявка далее предлагает компьютерный программный продукт, содержащий программный код для осуществления способа согласно какому-либо одному из вариантов настоящей заявки, показанному на Фиг. 7-16, при выполнении на компьютере или в процессоре.
Настоящая заявка далее предлагает декодирующее устройство, это декодирующее устройство содержит один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими одним или несколькими процессорами и сохраняющий программы для выполнения процессорами, так что при выполнении процессорами программы конфигурируют декодирующее устройство для осуществления способа согласно какому-либо одному из вариантов настоящей заявки, показанных на Фиг. 7-12.
Следует отметить, что декодирующее устройство в рассматриваемом варианте может представлять собой или быть частью устройства 14 адресата, показанного на Фиг. 1A, декодирующего устройства 30 для видео, показанного на Фиг. 1B, декодирующего устройства 30, показанного на Фиг. 3, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Настоящая заявка далее предлагает кодирующее устройство, это кодирующее устройство содержит один или несколько процессоров; и энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с этими процессорами и сохраняющий программы для выполнения процессорами, так что при выполнении процессорами эти программы конфигурируют кодирующее устройство для осуществления способа согласно какому-либо одному из вариантов настоящей заявки, показанных на Фиг. 13 - 16.
Следует отметить, что кодирующее устройство в рассматриваемом варианте может представлять собой или быть частью устройства 12 источника, показанного на Фиг. 1A, кодирующего устройства 20 для видео, показанного на Фиг. 1B, кодирующего устройства 20, показанного на Фиг. 2, устройства 400 для кодирования видео, показанного на Фиг. 4, или аппаратуры 500, показанной на Фиг. 5.
Настоящая заявка далее предлагает энергонезависимый читаемый компьютером носитель, содержащий программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ согласно какому-либо одному из вариантов настоящей заявки, показанных на Фиг. 7-16.
Настоящая заявка далее предлагает энергонезависимый носитель для хранения информации, содержащий кодированный поток битов данных, декодируемый устройством для декодирования изображения, этот поток битов данных содержит кодированные данные по меньшей мере одного слоя, где этот поток битов данных далее содержит относящийся к цветовому формату синтаксический элемент слоя с индексом i и относящийся к цветовому формату синтаксический элемент слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента слоя с индексом i является такой же, как величина относящегося к цветовому формату синтаксического элемента слоя с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i, оба индекса i и j представляют собой целые числа не меньше 0.
Настоящая заявка далее предлагает энергонезависимый носитель для хранения информации, содержащий кодированный поток битов данных, декодируемый устройством для декодирования изображения, этот поток битов данных содержит кодированные данные по меньшей мере одного слоя, где этот поток битов данных далее содержит относящийся к битовой глубине синтаксический элемент слоя с индексом i и относящийся к битовой глубине синтаксический элемент слоя с индексом j, где величина относящегося к битовой глубине синтаксического элемента слоя с индексом i является такой же, как величина относящегося к битовой глубине синтаксического элемента слоя с индексом j, когда слой с индексом j является опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0.
В одном из вариантов, относящийся к битовой глубине синтаксический элемент специфицирует битовую глубину отсчетов яркостной составляющей и цветностной составляющей изображения в слое, к которому применяется этот относящийся к битовой глубине синтаксический элемент.
В одном из вариантов, поток битов данных далее содержит синтаксический элемент опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом i, и величина этого синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
Далее следует пояснение применения способа кодирования, равно как и способа декодирования, как показано в приведенных выше вариантах, и системы, использующей эти способы.
На Фиг. 27 представлена блок-схема, показывающая пример структуры системы 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 для видео, входящее в устройство терминала, имеет приоритет для осуществления декодирования этого видео. Когда кодированные данные содержат аудио, декодирующее устройство для аудио, входящее в устройство терминала, имеет приоритет для осуществления декодирования этого аудио.
Что касается устройства терминала с собственным дисплеем, например, смартфона или планшета 3108, компьютера или портативного компьютера 3110, сетевого видеорегистратора (NVR)/ цифрового видеорегистратора (DVR) 3112, телевизора TV 3114, персонального цифрового помощника (PDA) 3122 или автомобильного устройства 3124, такое устройство терминала может передать декодированные данные своему дисплею. С устройством терминала, не имеющим своего дисплея, например, приставкой STB 3116, системой 3118 для видеоконференций или системой 3120 видеонаблюдения, может быть соединен внешний дисплей 3126 для приема и визуального представления декодированных данных.
Когда каждое устройство в системе осуществляет кодирование или декодирование, может быть использовано устройство для кодирования изображения или устройство для декодирования изображения, как показано в приведенных выше вариантах.
Фиг. 28 представляет блок-схему, показывающую структуру примера устройства 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 аудио для генерации аудио кадра и передает эти данные. В альтернативном варианте, кадр видео может быть сохранен в буфере (не показан на Фиг. 28) прежде передачи его модулю 3212 синхронизации. Аналогично, кадр аудио может быть сохранен в буфере (не показан на Фиг. 28) прежде передачи его модулю 3212 синхронизации.
Модуль 3212 синхронизации осуществляет синхронизацию кадра видео и кадра аудио и передает видео/аудио в адрес видео/аудио дисплея 3214. Например, модуль 3212 синхронизации осуществляет синхронизацию представления видео и аудио информации. Информация может кодировать синтаксис с использованием меток времени, относящихся к представлению аудио и визуальных данных, и меток времени, относящихся к передаче самого потока данных.
Если в поток включены субтитры, декодирующее устройство 3210 субтитров осуществляет декодирование этих субтитров и синхронизирует их с кадром видео и с кадром аудио, и передает видео/аудио субтитры дисплею 3216 видео/аудио/субтитров.
Настоящее изобретение не исчерпывается приведенной выше системой, так что либо устройство для кодирования изображения, либо устройство для декодирования изображений согласно приведенным выше вариантам может быть встроено в другую систему, например, в автомобильную систему.
Следует отметить, что и система 3100 передачи контента, и устройство 3106 терминала конфигурированы для осуществления способа согласно приведенным выше Фиг. 7 - 16.
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования «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.
Математические функции
Далее определены математические функции:
Abs( x ) =
Asin( x ) тригонометрическая функция, обратная синусу, оперирует над аргументом x в диапазоне от -1.0 до 1.0, включительно, выходное значение в диапазоне -π÷2 до π÷2, включительно, в единицах радиан
Atan( x ) тригонометрическая функция, обратная тангенсу, оперирует над аргументом x, выходное значение в диапазоне от -π÷2 до π÷2, включительно, в единицах радиан
Atan2(y,x)=
Ceil( x ) наименьшее целое число не меньше x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
Clip3( x, y, z ) =
Cos( x ) тригонометрическая функция косинуса, оперирующая над аргументом x в единицах радиан.
Floor( x ) наибольшее целое число не больше x.
GetCurrMsb( a, b, c, d ) =
Ln( x ) натуральный логарифм x (логарифм по основанию «e», где «e» - основание натуральных логарифмов, константа 2.718 281 828…).
Log2( x ) логарифм x по основанию 2.
Log10( x ) логарифм x по основанию 10.
Min( x, y ) =
Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sign( x ) =
Sin( x ) тригонометрическая функция синуса, оперирующая над аргументом x в единицах радиан
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, оперирующая над аргументом x в единицах радиан
Порядок приоритетности операций
Когда порядок приоритетности операций в выражении не указан в явном виде с использованием скобок, применяются следующие правила:
- Операции с более высоким приоритетом выполняют раньше любых операции с более низким приоритетом.
- Операции с одинаковым приоритетом выполняют последовательно слева направо.
Таблица ниже специфицирует приоритетность операций от самой высокой к самой низкой; более высокая позиция в таблице обозначает более высокий приоритет.
Для тех операторов, которые также используются в языке программирования «C», порядок приоритетности, применяемый в настоящих Спецификациях, является таким же, какой используется в языке программирования «C».
Таблица: Приоритетность операций от самой высокой (в верхней части таблицы) до самой низкой (в нижней части таблицы)
, "x % y"
Текстовое описание логических операций
В тексте, формулировка логических операций, которые математически можно описать следующим образом:
if( условие 0 ) утверждение 0 else if( условие 1 ) утверждение 1 … else /* информационная ремарка на оставшемся условии */ утверждение n
может быть описано следующим образом:
… как указано далее / … применяется следующее:
- Если условие 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 или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, устройство флэш-памяти или другой носитель, который может сохранять нужный программный код в форме команд или структур данных и к которому может обращаться и получать доступ компьютер. Кроме того, любое соединение можно называть читаемым компьютером носителем. Например, если команды передавать с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (digital subscriber line (DSL)) или беспроводных технологий, таких как инфракрасная связь, радио или связь в СВЧ-диапазоне, тогда все это - коаксиальный кабель, оптоволоконный кабель, витая пара, линия DSL, или беспроводные технологии, такие как инфракрасные, радио и СВЧ, включены в определение носителя. Следует понимать, однако, что термины «читаемые компьютером носители для хранения информации» и «носители для хранения данных» не охватывает соединения, волны несущих, сигналов или другие временные носители, а направлены на энергонезависимые материальные носители для хранения информации. Термин диски, как он используется здесь, охватывает компакт-диски (compact disc (CD)), лазерные диски, оптические диски, цифровые универсальные диски (digital versatile disc (DVD)), гибкие диски и диски Блю-рей, где disk обычно воспроизводит данные магнитным способом, а disc воспроизводит данные оптическим способом с использованием лазеров. Комбинации перечисленных выше носителей также должны быть отнесены к области читаемых компьютером носителей.
Команды могут быть выполнены одним или несколькими процессорами, таким как один или несколько цифровых процессоров сигнала (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), либо другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», как он используется здесь, может относиться к любой из перечисленных выше структур или к другой структуре, подходящей для описываемых здесь способов. В дополнение к этому, в некоторых аспектах, описываемые здесь функциональные возможности могут быть реализованы в специализированной аппаратуре и/или в модулях программного обеспечения, конфигурированных для кодирования и декодирования, либо встроенных в комбинированный кодек. Кроме того, эти способы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Способы согласно настоящему изобретению могут быть реализованы в широком спектре устройств или аппаратуры, включая беспроводную головную гарнитуру, интегральную схему (integrated circuit (IC)) или группу схем IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящей заявке с целью подчеркнуть функциональные аспекты устройств, конфигурированных для осуществления описываемых способов, но не обязательно требуют реализации разными аппаратными модулями. Напротив, как описано выше, различные модули могут быть объединены в аппаратуре кодека или реализованы в наборе взаимодействующих аппаратных модулей, включая один или несколько процессоров, как описано выше, в сочетании с соответствующим загружаемым и/или встроенным программным обеспечением.
Изобретение относится к области обработки видео. Техническим результатом является повышение коэффициента сжатия видео. Результат достигается тем, что способ декодирования потока битов данных кодированного видео содержит следующие этапы: получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0; определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i. 11 н. и 16 з.п. ф-лы, 29 ил., 1 табл.
1. Способ декодирования потока битов данных кодированного видео, содержащий:
получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0;
определение, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i;
в котором если величина синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
2. Способ декодирования потока битов данных кодированного видео, содержащий:
получение синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
если удовлетворяется некоторое условие, прогнозирование изображения слоя с индексом i на основе слоя с индексом j, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
3. Способ по п. 1 или 2, в котором указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
4. Способ по п. 1 или 2, в котором указанный относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
5. Способ по какому-либо одному из пп. 1-4, дополнительно содержащий:
получение относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и при этом указанное условие дополнительно состоит в том, что величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
6. Способ по п. 1, дополнительно содержащий:
если слой с индексом j является опорным слоем для слоя с индексом i, и величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, остановку декодирования потока битов данных кодированного видео.
7. Способ по п. 1, дополнительно содержащий:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
8. Способ по какому-либо одному из пп. 1-7, дополнительно содержащий:
если удовлетворяется указанное условие, определение, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
9. Способ кодирования видео, содержащий:
определение, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
если слой с индексом j является прямым опорным слоем для слоя с индексом i, кодирование синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставку кодированной величины в поток битов данных видео, и кодирование относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставку кодированных величин в поток битов данных видео, где величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина указанного относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
10. Способ по п. 9, дополнительно содержащий:
если слой с индексом j является прямым опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i на основе слоя с индексом j.
11. Способ по п. 9, дополнительно содержащий:
если слой с индексом j не является опорным слоем для слоя с индексом i, прогнозирование изображения слоя с индексом i без использования слоя с индексом j.
12. Аппаратура для декодирования потока битов данных кодированного видео, содержащая:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом k прямым опорным слоем для слоя с индексом i, где оба индекса i и k представляют собой целые числа не меньше 0;
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j опорным слоем для слоя с индексом i, на основе величины указанного синтаксического элемента опорного слоя, где слой с индексом j является опорным слоем для слоя с индексом k, где j представляет собой целое число не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что слой с индексом j является опорным слоем для слоя с индексом i;
в которой если величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом k является прямым опорным слоем для слоя с индексом i, слой с индексом j является опорным слоем для слоя с индексом i.
13. Аппаратура по п. 12, дополнительно содержащая модуль остановки;
этот модуль остановки выполнен с возможностью остановки декодирования потока битов данных кодированного видео, если слой с индексом j является слоем с индексом i, и величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, не является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
14. Аппаратура по п. 12, в которой получающий модуль дополнительно выполнен с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
15. Аппаратура для декодирования потока битов данных кодированного видео, содержащая:
получающий модуль, выполненный с возможностью получения синтаксического элемента опорного слоя посредством синтаксического анализа потока битов данных кодированного видео, где величина этого синтаксического элемента опорного слоя специфицирует, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если удовлетворяется некоторое условие, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и где указанное условие состоит в том, что величина указанного синтаксического элемента опорного слоя специфицирует, что слой с индексом j является прямым опорным слоем для слоя с индексом i.
16. Аппаратура по п. 15, в которой указанный синтаксический элемент опорного слоя представляет собой синтаксический элемент на уровне набора параметров видео (VPS), где этот набор VPS применяется к слою с индексом j и к слою с индексом i.
17. Аппаратура по п. 15 или 16, в которой указанный относящийся к цветовому формату синтаксический элемент представляет собой синтаксический элемент на уровне набора параметров последовательности (SPS), где этот набор SPS применяется к слою с индексом j или к слою с индексом i.
18. Аппаратура по какому-либо одному из пп. 15-17, в которой получающий модуль дополнительно выполнен с возможностью получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, посредством синтаксического анализа потока битов данных кодированного видео; и где указанное условие далее состоит в том, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же, как величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
19. Аппаратура по какому-либо одному из пп. 15-18, в которой решающий модуль дополнительно выполнен с возможностью определения, без получения относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, посредством синтаксического анализа потока битов данных кодированного видео, что величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является величиной относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, если удовлетворяется указанное условие.
20. Аппаратура для кодирования видео, содержащая:
решающий модуль, выполненный с возможностью определения, является ли слой с индексом j прямым опорным слоем для слоя с индексом i, где оба индекса i и j представляют собой целые числа не меньше 0; и
кодирующий модуль, выполненный с возможностью кодирования синтаксического элемента опорного слоя с величиной, специфицирующей, что слой с индексом j является прямым опорным слоем для слоя с индексом i, и вставки кодированной величины в поток битов данных видео, и кодирования относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, и относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j, и вставки кодированных величин в поток битов данных видео, если слой с индексом j является прямым опорным слоем для слоя с индексом i, где величина относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом i, является такой же как величина относящегося к цветовому формату синтаксического элемента, относящегося к цветовому формату синтаксического элемента, применяемого к слою с индексом j.
21. Аппаратура по п. 20, дополнительно содержащая первый прогнозирующий модуль;
первый прогнозирующий модуль выполнен с возможностью прогнозирования изображения слоя с индексом i на основе слоя с индексом j, если слой с индексом j является прямым опорным слоем для слоя с индексом i.
22. Аппаратура по п. 20, дополнительно содержащая второй прогнозирующий модуль;
первый прогнозирующий модуль, выполненный с возможностью прогнозирования изображения слоя с индексом i без использования слоя с индексом j, если слой с индексом j не является опорным слоем для слоя с индексом i.
23. Кодирующее устройство, содержащее процессорную схему для осуществления способа по какому-либо одному из пп. 9-11.
24. Декодирующее устройство, содержащее процессорную схему для осуществления способа по какому-либо одному из пп. 1-8.
25. Декодирующее устройство, содержащее:
один или несколько процессоров; и
энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с одним или несколькими процессорами и сохраняющий программы для выполнения процессорами, где эти программы, при выполнении их процессорами, конфигурируют декодирующее устройство для осуществления способа по какому-либо одному из пп. 1-8.
26. Кодирующее устройство, содержащее:
один или несколько процессоров; и
энергонезависимый читаемый компьютером носитель для хранения информации, соединенный с одним или несколькими процессорами и сохраняющий программы для выполнения процессорами, где эти программы, при выполнении их процессорами, конфигурируют кодирующее устройство для осуществления способа по какому-либо одному из пп. 9-11.
27. Энергонезависимый читаемый компьютером носитель информации, несущий программный код, при выполнении которого компьютерным устройством это компьютерное устройство осуществляет способ по какому-либо одному из пп. 1-11.
WO 2015054634 A2, 2015.04.16 | |||
WO 2014179605 A1, 2014.11.06 | |||
US 2015195554 A1, 2015.07.09 | |||
US 2017041641 A1, 2017.02.09 | |||
Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации | 2014 |
|
RU2639958C2 |
US 2016134868 A1, 2016.05.12 | |||
US 9813722 B2, 2017.11.07 | |||
WO 2015136941 A1, 2015.09.17 | |||
US 2019261011 A1, 2019.08.22 | |||
US 2018115787 A1, 2018.04.26. |
Авторы
Даты
2024-10-24—Публикация
2020-12-31—Подача