УКАЗАНИЕ ТОЧКИ ПРОИЗВОЛЬНОГО ДОСТУПА И ВЫВОД ИЗОБРАЖЕНИЯ В КОДИРОВАННОМ ВИДЕОПОТОКЕ
ALLOCATION OF A RANDOM ACCESS POINT AND IMAGE DISPLAY IN AN ENCODED VIDEO STREAM

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] По данной заявке испрашивается приоритет согласно предварительной заявке на патент США №63/037,903, поданной 11 июня 2020 г.; предварительной заявке на патент США №63/036,335, поданной 8 июня 2020 г.; предварительной заявке на патент США №63/035,274, поданной 5 июня 2020 г.; предварительной заявке на патент США №63/027,826, поданной 20 мая 2020 г.; и заявке на патент США №17/320,764, поданной 14 мая 2021 г., раскрытия которых включены в данное описание путем ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Варианты осуществления настоящего изобретения относятся к кодированию и декодированию видео и, в частности, к изображению произвольного доступа и процессу его вывода в кодированном видеопотоке с множественными уровнями.
УРОВЕНЬ ТЕХНИКИ
[0003] Кодирование и декодирование видеосигнала с использованием предсказания между изображениями с компенсацией движения использовались ранее. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920 × 1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. К видео без сжатия предъявляются значительные требования по битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920x1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 Гбайт.
[0004] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать то, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0005] Кодер и декодер видеосигнала могут использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование, некоторые из которых будут рассмотрены ниже.
[0006] Ранее видеокодеры и декодеры были предназначены для работы с изображениями данного размера, которые, в большинстве случаев, были заданы и оставались постоянными на протяжении кодированной видеопоследовательности (CVS, coded video sequence), группы изображений (GOP, Group of Pictures) или аналогичного периода времени множественных изображений. Например, в MPEG-2 известны конструкции системы для изменения горизонтального разрешения (и, таким образом, размера изображения) в зависимости от таких факторов как активность сцены, но только в I-изображениях, следовательно, обычно для GOP. Передискретизация опорных изображений для использования разных разрешений в CVS известна, например, из ITU-Т Rec. Н.263, приложение Р. Однако здесь размер изображения не изменяется, передискретизируются только опорные изображения, в результате чего потенциально используется только части холста изображения (в случае понижающей дискретизации), или захватываются только части сцены (в случае повышающей дискретизации). Дополнительно, Н.263, приложение Q, допускает передискретизацию индивидуального макроблока с коэффициентом два (в каждом измерении), вверх или вниз. Опять же, размер изображения остается неизменным. Размер макроблока является фиксированным в Н.263 и поэтому не нуждается в сигнализации.
[0007] Изменения размера изображения в предсказанных изображениях стали более популярными в современном видеокодировании. Например, VP9 допускает передискретизацию опорного изображения и изменение разрешения для полного изображения. Аналогично, некоторые предложения относительно VVC (включая, например, Hendry, et. al, "On adaptive resolution change (ARC) for VVC", документ JVET-M0135-vl Joint Video Team, 9-19 января 2019 г., включенный сюда в полном объеме) предусматривают передискретизацию полных опорных изображений с повышением или понижением разрешения. В этом документе предлагается кодировать разные возможные разрешения в наборе параметров последовательности и ссылаться на них в синтаксических элементах для каждого изображения в наборе параметров изображения.
[0008] Документ JVET-R2001-vA Bross, et. al, "Versatile Video Coding (Draft 9)", Joint Video Experts Team, апрель 2020 г., включен сюда в полном объеме.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0009] В кодированном видеопотоке широко используется указание информации точки произвольного доступа в высокоуровневой синтаксической структуре, например, заголовке блока уровня сетевой абстракции (NAL), наборе параметров, заголовке изображения или заголовке слайса. На основании информации произвольного доступа можно управлять декодированными опережающими (leading) изображениями, связанными с изображением произвольного доступа. В этом описании изобретения для пояснения управления декодированными изображениями, связанного с процессом произвольного доступа, объяснены некоторые важные синтаксические элементы и ограничения.
[0010] Когда битовый поток видео доступен для воспроизведения в произвольной точке в трюковом режиме, изображение внутренней точки произвольного доступа (IRAP, intra random access point) может обеспечивать произвольный доступ к промежуточной точке битового потока и успешное декодирование битового потока видео в точке произвольного доступа. Одним из возможных способов является постепенное обновление сцены при некоторой величине времени восстановления. В VVC и других видеокодеках изображение постепенного обновления декодирования (GDR, gradual decoding refresh) и блок доступа (AU, access unit) задаются для указания синтаксиса и семантики операции произвольного доступа с постепенным обновлением декодирования. В этом описании, для правильного понимания процесса сигнализации и декодирования GDR, описаны его синтаксис, семантика и ограничения.
[0011] Когда один или более списков опорных изображений построены для внешнего предсказания в Р- или В-слайсах, одно или более изображений могут быть недоступны вследствие произвольного доступа или непредусмотренной потери изображения. Во избежание любого отказа или непредусмотренного поведения декодера, желательно генерировать недоступные изображения с принятыми по умолчанию значениями пикселей и параметров. После генерации недоступных изображений, может потребоваться проверить действительность всех опорных изображений в списке опорных изображений.
[0012] Варианты осуществления настоящего изобретения относятся к изображению произвольного доступа и процессу его вывода в кодированном видеопотоке с множественными уровнями. Варианты осуществления настоящего изобретения, относятся к изображению произвольного доступа и указанию вывода опережающего его изображения в кодированном видеопотоке с множественными уровнями. Варианты осуществления настоящего изобретения относятся к сигнализации изображений произвольного доступа с постепенным обновлением декодирования и точкой восстановления в кодированном видеопотоке с множественными уровнями. Варианты осуществления настоящего изобретения относятся к построению списка опорных изображений и генерации недоступных изображений в кодированном видеопотоке с множественными уровнями. Варианты осуществления настоящего изобретения включают в себя технику сигнализации адаптивного размера изображения в битовом потоке видео.
[0013] Один или более вариантов осуществления настоящего изобретения включают в себя способ, осуществляемый по меньшей мере одним процессором. Способ включает в себя: прием кодированного видеопотока, который включает в себя блок доступа, включающий в себя изображение; сигнализацию, в разделителе блоков доступа кодированного видеопотока, первого флага, который указывает, включает ли в себя блок доступа какое-либо или ни одно из изображения внутренней точки произвольного доступа (IRAP) и изображения постепенного обновления декодирования (GDR); сигнализацию в заголовке изображения кодированного видеопотока второго флага, который указывает, является ли изображение изображением IRAP; и декодирование изображения, в качестве текущего изображения, на основании сигнализации первого флага и второго флага, причем значение первого флага и значение второго флага выравниваются.
[0014] Согласно варианту осуществления, способ дополнительно включает в себя: сигнализацию, в заголовке изображения кодированного видеопотока, третьего флага, который указывает, является ли изображение изображением GDR, причем значение первого флага и значение третьего флага выравниваются.
[0015] Согласно варианту осуществления, третий флаг сигнализируется на основании второго флага, указывающего, что изображение не является изображением IRAP.
[0016] Согласно варианту осуществления, первый флаг имеет значение, которое указывает, что изображение является любым из изображения IRAP и изображения GDR, второй флаг имеет значение, которое указывает, что изображение является изображением IRAP, и способ дополнительно включает в себя сигнализацию, в заголовке слайса изображения кодированного видеопотока, третьего флага, который указывает, выводятся ли какие-либо изображения до изображения IRAP.
[0017] Согласно варианту осуществления, способ дополнительно включает в себя: определение типа блока уровня сетевой абстракции (NAL) слайса, причем третий флаг сигнализируется на основании определенного типа блока NAL.
[0018] Согласно варианту осуществления, третий флаг сигнализируется на основании типа блока NAL, определяемого равным IDR_W_RADL, IDR_N_LP или CRA_NUT.
[0019] Согласно варианту осуществления, способ дополнительно включает в себя: сигнализацию, в заголовке изображения кодированного видеопотока, четвертого флага, который указывает, является ли изображение изображением GDR, причем значение первого флага и значение четвертого флага выравниваются.
[0020] Согласно варианту осуществления, третий флаг сигнализируется на основании второго флага, указывающего, что изображение не является изображением IRAP.
[0021] Согласно варианту осуществления, декодирование включает в себя: построение списка опорных изображений; генерацию недоступного опорного изображения из списка опорных изображений; и проверку соответствия битового потока, для опорных изображений в списке опорных изображений, которая налагает следующие ограничения: количество элементов, указанных в списке опорных изображений, не меньше количества активных элементов, указанных в списке опорных изображений, каждое изображение, на которое ссылается активный элемент в списке опорных изображений, присутствует в буфере декодированных изображений (DPB) и имеет значение временного идентификатора, меньшее или равное значению временного идентификатора текущего изображения, и каждое изображение, на которое ссылается элемент в списке опорных изображений, не является текущим изображением и указано флагом заголовка изображения как потенциально опорное изображение.
[0022] Согласно варианту осуществления, проверка соответствия битового потока осуществляется на основании определения, является ли текущее изображение изображением независимого обновления декодера (IDR, independent decoder refresh), изображением чистого произвольного доступа (CRA, clean random access) или изображением постепенного обновления декодирования (GDR).
[0023] Согласно одному или более вариантам осуществления, предложена система. Система включает в себя: по меньшей мере один процессор, выполненный с возможностью принимать кодированный видеопоток, который включает в себя блок доступа, включающий в себя изображение; и память, где хранится компьютерный код, причем компьютерный код включает в себя: первый код сигнализации, предписывающий по меньшей мере одному процессору сигнализировать первый флаг, в разделителе блоков доступа кодированного видеопотока, который указывает, включает ли в себя блок доступа какое-либо или ни одно из изображения внутренней точки произвольного доступа (IRAP) и изображения постепенного обновления декодирования (GDR); второй код сигнализации, предписывающий по меньшей мере одному процессору сигнализировать второй флаг, в заголовке изображения кодированного видеопотока, который указывает, является ли изображение изображением IRAP; и код декодирования, предписывающий по меньшей мере одному процессору декодировать изображение, в качестве текущего изображения, на основании сигнализации первого флага и второго флага, причем значение первого флага и значение второго флага выравниваются.
[0024] Согласно варианту осуществления, компьютерный код дополнительно включает в себя:
третий код сигнализации, предписывающий по меньшей мере одному процессору сигнализировать третий флаг в заголовке изображения кодированного видеопотока, который указывает, является ли изображение изображением GDR, причем значение первого флага и значение третьего флага выравниваются.
[0025] Согласно варианту осуществления, третий флаг сигнализируется на основании второго флага, указывающего, что изображение не является изображением IRAP.
[0026] Согласно варианту осуществления, первый флаг имеет значение, которое указывает, что изображение является любым из изображения IRAP и изображения GDR, второй флаг имеет значение, которое указывает, что изображение является изображением IRAP, и код вычисления дополнительно включает в себя третий код сигнализации, предписывающий по меньшей мере одному процессору сигнализировать третий флаг в заголовке слайса изображения кодированного видеопотока, который указывает, выводятся ли какие-либо изображения до изображения IRAP.
[0027] Согласно варианту осуществления, компьютерный код дополнительно включает в себя: код определения, предписывающий по меньшей мере одному процессору определять тип блока уровня сетевой абстракции (NAL) слайса, причем третий флаг сигнализируется на основании определенного типа блока NAL.
[0028] Согласно варианту осуществления, третий флаг сигнализируется на основании типа блока NAL, определяемого равным IDR_W_RADL, IDR_N_LP или CRA_NUT.
[0029] Согласно варианту осуществления, компьютерный код дополнительно включает в себя: четвертый код сигнализации, предписывающий по меньшей мере одному процессору сигнализировать четвертый флаг в заголовке изображения кодированного видеопотока, который указывает, является ли изображение изображением GDR, причем значение первого флага и значение четвертого флага выравниваются.
[0030] Согласно варианту осуществления, третий флаг сигнализируется на основании второго флага, указывающего, что изображение не является изображением IRAP.
[0031] Согласно варианту осуществления, код декодирования включает в себя: код построения, предписывающий по меньшей мере одному процессору построить список опорных изображений; код генерации, предписывающий по меньшей мере одному процессору генерировать недоступное опорное изображение из списка опорных изображений; и код проверки, предписывающий по меньшей мере одному процессору проверять соответствие битового потока, для опорных изображений в списке опорных изображений, которое налагает следующие ограничения: количество элементов, указанных в списке опорных изображений, не меньше количества активных элементов, указанных в списке опорных изображений, каждое изображение, на которое ссылается активный элемент в списке опорных изображений, присутствует в буфере декодированных изображений (DPB) и имеет значение временного идентификатора, меньшее или равное значению временного идентификатора текущего изображения, и каждое изображение, на которое ссылается элемент в списке опорных изображений, не является текущим изображением и указано флагом заголовка изображения как потенциально опорное изображение.
[0032] Согласно одному или более вариантам осуществления, предложен компьютерно-считываемый носитель, где хранятся компьютерные инструкции. Компьютерные инструкции, при выполнении по меньшей мере одним процессором, который принимает кодированный видеопоток, который включает в себя блок доступа, включающий в себя изображение, предписывают по меньшей мере одному процессору: сигнализировать, в разделителе блоков доступа кодированного видеопотока, первый флаг, который указывает, включает ли в себя блок доступа какое-либо или ни одно из изображения внутренней точки произвольного доступа (IRAP) и изображения постепенного обновления декодирования (GDR); сигнализировать, в заголовке изображения кодированного видеопотока, второй флаг, который указывает, является ли изображение изображением IRAP; и декодировать изображение, в качестве текущего изображения, на основании сигнализации первого флага и второго флага, причем значение первого флага и значение второго флага выравниваются.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0033] Дополнительные признаки, сущность и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0034] фиг. 1 - упрощенная блок-схема системы связи в соответствии с вариантом осуществления;
[0035] фиг. 2 - упрощенная блок-схема системы связи в соответствии с вариантом осуществления;
[0036] фиг. 3 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;
[0037] фиг. 4 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;
[0038] фиг. 5А - схема первой конфигурации для сигнализации параметров ARC в соответствии с вариантом осуществления сравнительной техники;
[0039] фиг. 5В - схема второй конфигурации для сигнализации параметров ARC в соответствии с вариантом осуществления сравнительной техники;
[0040] фиг. 6А - схема первой конфигурации для сигнализации параметров ARC в соответствии с вариантом осуществления;
[0041] фиг. 6В - схема второй конфигурации для сигнализации параметров ARC в соответствии с вариантом осуществления;
[0042] фиг. 6С - схема третьей конфигурации для сигнализации параметров ARC в соответствии с вариантом осуществления;
[0043] фиг. 7А - схема фрагмента заголовка группы тайлов в соответствии с вариантом осуществления;
[0044] фиг. 7В - схема фрагмента набора параметров последовательности в соответствии с вариантом осуществления;
[0045] фиг. 8 - пример структуры предсказания для масштабируемости с адаптивным изменением разрешения;
[0046] фиг. 9А - пример синтаксической таблицы в соответствии с вариантом осуществления;
[0047] фиг. 9В - пример синтаксической таблицы в соответствии с вариантом осуществления;
[0048] фиг. 10 - упрощенная блок-схема цикла РОС анализа и декодирования для каждого блока доступа и значения счетчика блоков доступа в соответствии с вариантом осуществления;
[0049] фиг. 11 - схема структуры битового потока видео, содержащего многоуровневые субизображения в соответствии с вариантом осуществления;
[0050] фиг. 12 - схема отображения выбранного субизображения с повышенным разрешением в соответствии с вариантом осуществления;
[0051] фиг. 13 - блок-схема процесса декодирования и отображения для битового потока видео, содержащего многоуровневые субизображения, в соответствии с вариантом осуществления;
[0052] фиг. 14 - схема отображения видео 360° с уровнем улучшения субизображения в соответствии с вариантом осуществления;
[0053] фиг. 15А - пример компоновки разделенных субизображений в соответствии с вариантом осуществления;
[0054] фиг. 15В - пример соответствующего размера субизображения и информации положения одного субизображения в соответствии с вариантом осуществления;
[0055] фиг. 16 - соответствующая структура предсказания изображения субизображений, представленных на фиг. 15А-В;
[0056] фиг. 17 - пример входного изображения, разделенного на множественные подобласти, которые могут кодироваться одним или более уровнями, в соответствии с вариантом осуществления;
[0057] фиг. 18 - соответствующий уровень и структура предсказания изображения с возможностью пространственной масштабируемости локальной области для подобластей, проиллюстрированных на фиг. 17;
[0058] фиг. 19А - схема фрагмента набора параметров видео в соответствии с вариантом осуществления;
[0059] фиг. 19В - схема фрагмента набора параметров последовательности в соответствии с вариантом осуществления.
[0060] фиг. 20 - пример синтаксической таблицы для информации компоновки субизображений в соответствии с вариантом осуществления.
[0061] фиг. 21 - пример синтаксической таблицы для указания выходных уровней и информации профиля/яруса/уровня для каждого набора выходных уровней согласно варианту осуществления;
[0062] фиг. 22 - пример синтаксической таблицы для указания режима выходного уровня для каждого набора выходных уровней согласно варианту осуществления;
[0063] фиг. 23 - пример синтаксической таблицы для указания текущего субизображения каждого уровня для каждого набора выходных уровней;
[0064] фиг. 24 - пример синтаксической таблицы набора параметров видео RBSP;
[0065] фиг. 25 - пример синтаксической таблицы для указания набора выходных уровней в режиме набора выходных уровней;
[0066] фиг. 26 - пример синтаксической таблицы для указания точки произвольного доступа, связанной с IRAP или изображением GDR, в заголовке изображения;
[0067] фиг. 27 - пример синтаксической таблицы для указания AU произвольного доступа в разделителе AU;
[0068] фиг. 28 - пример синтаксической таблицы для указания наличия изображения IRAP в заголовке изображения;
[0069] фиг. 29 - пример синтаксической таблицы для указания вывода опережающего изображения в заголовке слайса;
[0070] фиг. 30 - пример синтаксической таблицы для указания наличия изображения IRAP и изображения GDR в разделителе AU;
[0071] фиг. 31 - пример синтаксической таблицы для указания изображения GDR и его точки восстановления в заголовке изображения;
[0072] фиг. 32 - упрощенная блок-схема построения списка опорных изображений и генерации недоступного изображения;
[0073] фиг. 33 - блок-схема компьютерного кода согласно вариантам осуществления;
[0074] фиг. 34 - диаграмма компьютерной системы, подходящей для реализации вариантов осуществления.
ПОДРОБНОЕ ОПИСАНИЕ
[0075] На фиг. 1 показана упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего изобретения. Система (100) может включать в себя по меньшей мере два терминала (110, 120) соединенные между собой через сеть (150). Для однонаправленной передачи данных, первый терминал (110) может кодировать видеоданные в локальном местоположении для передачи на другой терминал (120) через сеть (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может широко применяться в приложениях обслуживания медиа и т.п.
[0076] На фиг. 1 показана вторая пара терминалов (130, 140), предназначенная для поддержки двунаправленной передачи кодированного видео, которая может происходить, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, каждый терминал (130, 140) может кодировать видеоданные, захваченные в локальном местоположении, для передачи на другой терминал через сеть (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, передаваемые другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[0077] На фиг. 1 терминалы (110-140) проиллюстрированы как серверы, персональные компьютеры и смартфоны и/или терминал любого другого типа. Например, терминалами (110-140) могут быть портативные компьютеры, планшетные компьютеры, медиаплееры и/или специальное оборудование для видеоконференцсвязи. Сеть (150) представляет любые сети, которые переносят кодированные видеоданные между терминалами (110-140), включая, например, сети проводной и/или беспроводной связи. Сеть (150) связи допускает обмен данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет.В целях настоящего рассмотрения, архитектура и топология сети (150) может не иметь отношения к принципам настоящего изобретения, если не указано обратное.
[0078] На фиг. 2 показано, в качестве примера применения раскрытого изобретения, расположение видеокодера и декодера в окружении потоковой передачи. Раскрытое изобретение одинаково применимо к другим приложениям с отображением видео, включая, например, видеоконференцсвязь, цифровое телевидение, сохранение сжатого видео на цифровых носителях, включающих в себя CD, DVD, карту памяти и т.п.
[0079] Как показано на фиг. 2, система (200) потоковой передачи может включать в себя подсистему (213) захвата, которая может включать в себя источник (201) видеосигнала и кодер (203). Источником (201) видеосигнала может быть, например, цифровая камера, и он может быть выполнен с возможностью создания потока (202) отсчетов видео без сжатия. Поток (202) отсчетов видео без сжатия может обеспечивать большой объем данных, по сравнению с битовыми потоками кодированного видео, и может обрабатываться кодером (203), подключенным к камере (201). Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинация для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Битовый поток (204) кодированного видео может включать в себя меньший объем данных по сравнению с потоком отсчетов и может храниться на сервере (205) потоковой передачи для использования в будущем. Один или более клиентов (206) потоковой передачи могут осуществлять доступ к серверу (205) потоковой передачи для извлечения битовых потоков (209) видео, которые могут быть копиями битового потока (204) кодированного видео.
[0080] Согласно вариантам осуществления, сервер (205) потоковой передачи также может функционировать как сетевой элемент, осведомленный о носителе (MANE, Media-Aware Network Element). Например, сервер (205) потоковой передачи может быть выполнен с возможностью обрезать битовый поток (204) кодированного видео для подгонки потенциально разных битовых потоков к одному или более из клиентов (206) потоковой передачи. Согласно вариантам осуществления, MANE может отдельно обеспечиваться с сервера (205) потоковой передачи в системе (200) потоковой передачи.
[0081] Клиенты (206) потоковой передачи могут включать в себя видеодекодер (210) и дисплей (212). Видеодекодер (210) может, например, декодировать битовый поток (209) видео, который является входящей копией битового потока (204) кодированного видео, и создавать исходящий поток (211) отсчетов видео, который можно визуализировать на дисплее (212) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи битовые потоки (204, 209) видео могут кодироваться согласно некоторым стандартам кодирования/сжатия видео. Примеры таких стандартов включают в себя, но без ограничения, ITU-T Recommendation Н.265. В процессе разработки находится стандарт видеокодирования, неофициально именуемый универсальным видеокодированием (VVC). Варианты осуществления изобретения могут использоваться в контексте VVC.
[0082] На фиг. 3 показана иллюстративная функциональная блок-схема видеодекодера (210), который присоединен к дисплею (212) согласно варианту осуществления настоящего изобретения.
[0083] Видеодекодер (210) может включать в себя канал (312), приемник (310), буферную память (315), энтропийный декодер/анализатор (320), модуль (351) масштабирования / обратного преобразования, модуль (352) внутреннего предсказания, модуль (353) предсказания с компенсацией движения, агрегатор (355), модуль (356) контурного фильтра, память (357) опорных изображений и память текущего изображения. По меньшей мере в одном варианте осуществления, видеодекодер (210) может включать в себя интегральную схему, несколько интегральных схем и/или другую электронную схему. Видеодекодер (210) также может быть частично или полностью реализован в программном обеспечении, выполняющемся на одном или более CPU с соответствующими блоками памяти.
[0084] В этом варианте осуществления и других вариантах осуществления, приемник (310) может принимать одну или более кодированных видеопоследовательностей, подлежащих декодированию декодером (210), по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от другой кодированной видеопоследовательности. Кодированная видеопоследовательность может приниматься из канала (312), который может представлять собой аппаратную/программную линию связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие их объекты (не показаны). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиггером сети, буферная память (315) может быть подключена между приемником (310) и энтропийным декодером/анализатором (320) (далее "анализатором"). Когда приемник (310) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буфер (315) может не требоваться или может быть малым. Для использования в пакетных сетях наилучших усилий, например, Интернете, буфер (315) может требоваться, может быть сравнительно большим и может иметь адаптивный размер.
[0085] Видеодекодер (210) может включать в себя анализатор (320) для реконструкции символов (321) из энтропийно-кодированной видеопоследовательности. Категории этих символов включают в себя, например, информацию, используемую для управления работой декодера (210), и, возможно, информацию для управления устройством визуализации, например, дисплеем (212), который может быть подключен к декодеру, как показано на фиг. 2. Информация управления для устройств(а) визуализации может принимать форму, например, сообщений вспомогательной информации улучшения (SEI, Supplementary Enhancement Information) или фрагментов набора параметров информации визуальной пригодности (VUI, Video Usability Information) (не показаны). Анализатор (320) может анализировать / энтропийно-декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной серии, кодирование по Хаффману, арифметическое кодирование с или без контекстной чувствительности и т.д. Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере, на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, блоки кодирования (CU, Coding Units), блоки (blocks), блоки преобразования (TU, Transform Units), блоки предсказания (PU. Prediction Units) и т.д. Анализатор (320) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0086] Анализатор (320) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буфера (315), для создания символов (321).
[0087] В реконструкции символов (321) могут участвовать несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блоки) и других факторов. Какие модули используются и как они используются, может определяться информацией управления подгруппы, которая была выделена из кодированной видеопоследовательности анализатором (320). Поток такой информации управления подгруппы между анализатором (320) и множественными модулями далее для ясности не показан.
[0088] Помимо уже упомянутых функциональных блоков, декодер 210 может принципиально делиться на несколько функциональных модулей, как описано ниже. В практической реализации, действующей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, объединяться друг с другом. Однако в целях описания раскрытого изобретения подходит принципиальное разделение на нижеследующие функциональные модули.
[0089] Один модуль может быть модулем (351) масштабирования / обратного преобразования. Модуль (351) масштабирования / обратного преобразования может принимать квантованный коэффициент преобразования, а также информацию управления, включающую в себя то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д., как символ(ы) (321) от анализатора (320). Модуль (351) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут поступать на агрегатор (355).
[0090] В ряде случаев, выходные отсчеты модуля (351) масштабирования / обратного преобразования могут относиться к интра-кодированному блоку; то есть блоку, который не использует информацию предсказания из ранее реконструированных изображений, но может использовать информацию предсказания из ранее реконструированных частей текущего изображения. Такая информация предсказания может обеспечиваться модулем (352) внутреннего предсказания изображения. В ряде случаев, модуль (352) внутреннего предсказания изображения генерирует блок того же размера и той же формы, что и реконструируемый блок, используя ранее реконструированную информацию окружения, извлеченную из текущего (частично реконструированного) изображения из памяти (358) текущего изображения. Агрегатор (355), в ряде случаев, добавляет, для каждого отсчета в отдельности, информацию предсказания, генерированную модулем (352) внутреннего предсказания, в информацию выходных отсчетов, выдаваемую модулем (351) масштабирования / обратного преобразования.
[0091] В других случаях, выходные отсчеты модуля (351) масштабирования / обратного преобразования могут относиться к интер-кодированному блоку, возможно с компенсацией движения. В таком случае модуль (353) предсказания с компенсацией движения может осуществлять доступ к памяти (357) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (321), относящимися к блоку, агрегатор (355) может добавлять эти отсчеты к выходу модуля (351) масштабирования / обратного преобразования (в этом случае именуемые остаточными отсчетами или сигналом остатка) для генерации информации выходных отсчетов. Адреса в памяти (357) опорных изображений, откуда модуль (353) предсказания с компенсацией движения извлекает отсчеты предсказания, могут определяться векторами движения. Векторы движения могут быть доступны модулю (353) предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, компоненты X, Y и компоненты опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (357) опорных изображений при использовании векторов движения с точностью до подотсчета, механизмы предсказания вектора движения и т.д.
[0092] Выходные отсчеты агрегатора (355) могут подвергаться различным методам контурной фильтрации в модуле (356) контурного фильтра. Технологии сжатия видео могут включать в себя технологии внутриконтурной фильтрации, которые управляются параметрами, включенными в битовый поток кодированного видео, и делаются доступными модулю (356) контурного фильтра как символы (321) от анализатора (320), но также могут определяться метаинформацией, полученной в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также определяться ранее реконструированными и контурно-отфильтровыванными значениями отсчетов.
[0093] Выходным сигналом модуля (356) контурного фильтра может быть поток отсчетов, который может выводиться в устройство визуализации, например, дисплей (212), а также сохраняться в памяти (357) опорных изображений для использования в будущем предсказании между изображениями.
[0094] Некоторые кодированные изображения, будучи полностью реконструированными, могут использоваться в качестве опорных изображений для будущего предсказания. После того как кодированное изображение полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (320)), текущее опорное изображение может стать частью памяти (357) опорных изображений, и память может быть снова выделена для свежего текущего изображения до осуществления реконструкции следующего кодированного изображения.
[0095] Видеодекодер (210) может осуществлять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть документирована в стандарте, например, ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным технологией или используемым стандартом сжатия видео, в том смысле, что оно придерживается синтаксиса технологии или стандарта сжатия видео, заданного в документе или стандарте технологии сжатия видео и, в частности, в документе ее профилей. Также, для согласования с некоторыми технологиями или стандартами сжатия видео, сложность кодированной видеопоследовательности может быть заключена в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев, могут дополнительно ограничиваться спецификациями и метаданными гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) для управления буфером HRD, сигнализируемым в кодированной видеопоследовательности.
[0096] Согласно варианту осуществления, приемник (310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или для более точной реконструкции исходных видеоданных. Дополнительные данные могут иметь форму, например, уровней улучшения по времени, пространстве или SNR, избыточных слайсов, избыточных изображений, кодов прямой коррекции ошибок и т.д.
[0097] На фиг. 4 показана иллюстративная функциональная блок-схема видеокодера (203), связанного с источником (201) видеосигнала согласно варианту осуществления настоящего изобретения.
[0098] Видеокодер (203) может включать в себя, например, кодер, который является кодером (430) источника, машину (432) кодирования, (локальный) декодер (433), память (434) опорных изображений, предсказатель (435), передатчик (440), энтропийный кодер (445), контроллер (450) и канал (460).
[0099] Кодер (203) может принимать отсчеты видео из источника (201) видеосигнала (который не является частью кодера), который может захватывать видеоизображение(я), подлежащие кодированию кодером (203).
[0100] Источник (201) видеосигнала может обеспечивать видеопоследовательность источника, подлежащую кодированию кодером (203), в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 битов, 10 битов, 12 битов, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру дискретизации (например, YCrCb 4:2:0, YCrCb 4:4:4). В системе медиа службы источником (201) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (203) видеосигнала может быть камера, которая захватывает локальную информацию изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при последовательном просмотре. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники понятно соотношение между пикселями и отсчетами. Нижеследующее описание сосредоточено на отсчетах.
[0101] Согласно варианту осуществления, кодер (203) может кодировать и сжимать изображения видеопоследовательности источника в кодированную видеопоследовательность (443) в реальном времени или согласно любым другим ограничениям по времени, требуемым приложением. Обеспечение подходящей скорости кодирования является одной функцией контроллера (450). Контроллер (450) также может управлять другими функциональными модулями, как описано ниже, и может быть функционально подключен к этим модулям. Соединение для ясности не показано. Параметры, установленные контроллером (450), могут включать в себя параметры, связанные с управлением частотой (пропуск изображения, квантователь, значение лямбда метода оптимизации скорости-искажения, …), размер изображения, компоновку группы изображений (GOP), максимальную зону поиска вектора движения и т.д. Специалист в данной области техники легко может идентифицировать другие функции контроллера (450) которые могут относиться к видеокодеру (203), оптимизированному для некоторой конструкции системы.
[0102] Некоторые видеокодеры действуют в так называемом "контуре кодирования", известном специалистам в данной области техники. В виде упрощенного описания, контур кодирования может состоять из кодирующей части исходного кодера (430) (отвечающей за создание символов на основании входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локального) декодера (433), встроенного в кодер (203), который реконструирует символы для создания данных отсчетов, которые (удаленный) декодер также создавал бы, когда сжатие между символами и битовым потоком кодированного видео осуществляется без потерь в некоторой технологии сжатия видео. Этот реконструированный поток отсчетов может вводиться в память (434) опорных изображений. Поскольку декодирование потока символов дает результаты с точностью до бита независимо от местоположения декодера (локального или удаленного), содержимое памяти опорных изображений также совпадает с точностью до бита между локальным кодером и удаленным кодером. Другими словами, предсказывающая часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел бы" декодер в случае использования предсказания в ходе декодирования. Этот фундаментальный принцип синхронизации с опорным изображением (и дрейфа, если поддержка синхронизации невозможна, например, вследствие канальных ошибок) известен специалистам в данной области техники.
[0103] Работа "локального" декодера (433) может быть такой же, как "удаленного" декодера (210), которая была подробно описана выше в связи с фиг. 3. Однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и анализатором (320) может осуществляться без потерь, энтропийно-декодирующие части декодера (210), включающие в себя канал (312), приемник (310), буфер (315) и анализатор (320), могут быть не полностью реализованы в локальном декодере (433).
[0104] При этом следует отметить, что любая технология декодера, кроме анализа/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать, в по существу идентичной функциональной форме в соответствующем кодере. По этой причине, раскрытое изобретение сосредоточено на работе декодера. Описание технологий кодера может быть сокращено, поскольку они могут быть обратны полностью описанным технологиям декодера. Только в некоторых случаях требуется более подробное описание, приведенное ниже.
[0105] В ходе работы, исходный кодер (430) может осуществлять кодирование с предсказанием и компенсацией движения, то есть кодировать входной кадр с предсказанием на основании одного или более ранее кодированных кадров из видеопоследовательности, которые получили название "опорные кадры". Таким образом, машина (432) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного(ых) кадра(ов), который(е) можно выбирать как ссылку предсказания для входного кадра.
[0106] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть указаны как опорные кадры, на основании символов, созданных исходными кодером (430). Операции машины (432) кодирования преимущественно могут быть процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показанном на фиг. 4), реконструированная видеопоследовательность обычно бывает копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных кадрах и могут предписывать сохранение реконструированных опорных кадров в памяти (434) опорных изображений. Таким образом, кодер (203) может локально сохранять копии реконструированных опорных кадров, которые имеют такое же содержимое, как реконструированные опорные кадры, которые будут получены видеодекодером дальнего конца (если ошибки передачи отсутствуют).
[0107] Предсказатель (435) может осуществлять поиски предсказаний для машины (432) кодирования. Таким образом, для нового кадра, подлежащего кодированию, предсказатель (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве возможных опорных блоков пикселей) или некоторые метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут выступать в роли подходящей ссылки предсказания для новых изображений. Предсказатель (435) может действовать на основе блок отсчетов х блок пикселей для нахождения подходящих ссылок предсказания. В ряде случаев, в соответствии с результатами поиска, полученными предсказателем (435), входное изображение может иметь ссылки предсказания, извлеченные из множественных опорных изображений, хранящихся в памяти (434) опорных изображений.
[0108] Контроллер (450) может управлять операциями кодирования видеокодера (430), включающими в себя, например, задание параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0109] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер транслирует символы, генерированные различными функциональными модулями, в кодированную видеопоследовательность, сжимая без потерь символы согласно технологиям, известным специалистам в данной области техники, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0110] Передатчик (440) может буферизовать кодированную видеопоследовательность, созданную энтропийным кодером (445). для ее подготовки к передаче по каналу (460) связи, который может быть аппаратной / программной линией связи с запоминающим устройством, где должны храниться кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные от видеокодера (430) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0111] Контроллер (450) может управлять работой кодера (203). В ходе кодирования, контроллер (450) может назначать каждому кодированному изображению некоторый тип кодированного изображения, который может определять методы кодирования, которые могут применяться к соответствующему изображению. Например, изображения часто могут назначаться как интра-изображение (I-изображение), предсказываемое изображение (Р-изображение) или двунаправленно-предсказываемое изображение (В изображение).
[0112] Интра-изображение (I-изображение) может представлять собой изображение, которое можно кодировать и декодировать без использования любого другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения независимого обновления декодера (IDR). Специалистам в данной области техники известны эти разновидности I-изображений и соответствующие им применения и признаки.
[0113] Предсказываемое изображение (Р-изображение) может представлять собой изображение, которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и ссылочного индекса для предсказания значений отсчетов каждого блока.
[0114] Двунаправленно-предсказываемое изображение (В-изображение) может представлять собой изображение, которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и ссылочных индексов для предсказания значений отсчетов каждого блока. Аналогично, множественно-предсказываемые изображения могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одиночного блока.
[0115] Исходные изображения обычно делятся в пространстве на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодируются на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки того же изображения (пространственное предсказание или внутреннее предсказание). Блоки пикселей Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображений.
[0116] Видеокодер (203) может осуществлять операции кодирования согласно заранее определенной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В ходе работы, видеокодер (203) может осуществлять различные операции сжатия, включающие в себя операции кодирования с предсказанием, которые используют временную и пространственную избыточности во входной видеопоследовательности. Таким образом, кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0117] Согласно варианту осуществления, передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временной/пространственный/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения информации вспомогательного улучшения (SEI), фрагменты набора параметров информации визуальной пригодности (VUI) и т.д.
[0118] Прежде чем перейти к более подробному описанию некоторых аспектов раскрытого изобретения, необходимо определить некоторые термины, которые будут использоваться в оставшейся части настоящего описания.
[0119] Под субизображением далее, в ряде случаев, следует понимать прямоугольную конфигурацию отсчетов, блоков, макроблоков, блоков кодирования или аналогичных объектов, которые семантически сгруппированы и могут независимо кодироваться с измененным разрешением. Одно или более субизображений могут формировать изображение. Одно или более кодированных субизображений могут формировать кодированное изображение. Одно или более субизображений могут собираться в изображение, и одно или более субизображений могут извлекаться из изображения. В некоторых окружениях, одно или более кодированных субизображений могут собираться в сжатой области без перекодирования до уровня отсчетов в кодированное изображение, и в том же или некоторых других случаях, одно или более кодированных субизображений могут извлекаться из кодированного изображения в сжатой области.
[0120] Под адаптивным изменением разрешения (ARC, Adaptive Resolution Change) далее подразумеваются механизмы, которые позволяют изменять разрешение изображений или субизображений в кодированной видеопоследовательности посредством, например, передискретизации опорного изображения. Под параметрами ARC далее следует понимать информацию управления, необходимую для осуществления адаптивного изменения разрешения, которая может включать в себя, например, параметры фильтрации, коэффициенты масштабирования, разрешения выходных и/или опорных изображений, различные флаги управления и т.д.
[0121] Вышеприведенное описание сосредоточено на кодировании и декодировании одиночного, семантически независимого кодированного видеоизображения. Прежде чем перейти к описанию кодирования/декодирования множественных субизображений с независимыми параметрами ARC и, следовательно, дополнительной сложностью, опишем варианты осуществления сигнализации параметров ARC.
[0122] На фиг. 6А-С показано несколько новых иллюстративных вариантов осуществления для сигнализации параметров ARC. Как указано в каждом из вариантов осуществления, они имеют ряд преимуществ с точки зрения эффективности кодирования, сложности и архитектуры. Стандарт или технология видеокодирования могут реализовать один или более из этих вариантов осуществления, и также могут включать в себя варианты осуществления, известные из уровня техники, для сигнализации параметров ARC. Варианты осуществления сравнительных техник включают в себя примеры, представленные на фиг. 5А-В. Новые варианты осуществления могут не являться взаимоисключающими и предположительно могут быть включены в стандарт или технологию, которая также включает в себя варианты осуществления уровня техники, поэтому могут использоваться в зависимости от применения, используемых стандартов и технологий или от выбора кодера.
[0123] Классы параметров ARC могут включать в себя: (1) коэффициенты повышающей/понижающей дискретизации, разделенные или объединенные в измерениях X и Y, или (2) коэффициенты повышающей/понижающей дискретизации, с добавлением временного измерения, указывающего приближение/отдаление с постоянной скоростью для данного количества изображений. Любой из двух вышеприведенных классов может предусматривать кодирование или декодирование одного или более синтаксических элементов, которые могут указывать на таблицу, содержащую коэффициенты). Такие синтаксические элементы могут быть короткими согласно вариантам осуществления.
[0124] "Разрешение" может означать разрешение в измерении X или Y, в единицах отсчетов, блоков, макроблоков, CU или любой другой подходящей гранулярности входного изображения, выходного изображения, опорного изображения, кодированного изображения, объединенных или разделенных. При наличии более одного разрешения (например, одного для входного изображения, одного для опорного изображения), в некоторых случаях, один набор значений можно вывести из другого набора значений. Разрешение можно указывать, например, с использованием флагов. Более детализированный пример разрешения дополнительно приведен ниже.
[0125] Координаты "деформации", наподобие используемых в Н.263, приложение Р, могут обладать подходящей гранулярностью, как описано выше. Н.263, приложение Р, задает один эффективный способ кодирования таких координат деформации, но можно также использовать другие, возможно более эффективные способы. Например, обратимое с переменной длиной серии, "в стиле Хаффмана" кодирование координат деформации приложения Р можно заменить двоичным кодированием подходящей длины, где длину слова двоичного кода можно выводить, например, из максимального размера изображения, возможно, умноженного на некоторый коэффициент и смещенного на некоторое значение, чтобы "деформация" могла выходить за пределы границ максимального размера изображения.
[0126] Со ссылкой на параметры фильтрации повышающей или понижающей дискретизации, в простейшем случае, для повышающей и/или понижающей дискретизации может существовать единственный фильтр. Однако, в некоторых случаях, может быть предпочтительным допускать больше гибкости в конструкции фильтра, что может быть реализовано путем сигнализации параметров фильтрации. Такие параметры можно выбирать посредством индекса в списке возможных конструкций фильтра, фильтр может полностью задаваться (например, посредством списка коэффициентов фильтра с использованием подходящих методов энтропийного кодирования), и/или фильтр можно неявно выбирать посредством коэффициентов повышающей/понижающей дискретизации, которые сигнализируются согласно любому из вышеупомянутых механизмов, и т.д.
[0127] Далее описание предполагает иллюстративный случай, когда кодирование конечного набора коэффициентов повышающей/понижающей дискретизации (один и тот же коэффициент подлежит использованию в обоих измерениях X и Y), которые указаны посредством кодового слова. Это кодовое слово преимущественно может кодироваться с переменной длиной серии, например, с использованием экспоненциального кода Голомба, общего для некоторых синтаксических элементов в спецификациях видеокодирования, например, Н.264 и Н.265. Одно подходящее отображение значений в коэффициенты повышающей/понижающей дискретизации может, например, выражаться согласно нижеприведенной таблице 1.
[0128] Многие аналогичные отображения можно предложить согласно требованиям приложения и возможностям механизмов увеличения и уменьшения разрешения, доступных в технологии или стандарте сжатия видео. Таблицу можно расширить за счет дополнительных значений. Значения также могут быть представлены механизмами энтропийного кодирования, отличными от экспоненциальных кодов Голомба (например, с использованием двоичного кодирования). Это может иметь некоторые преимущества, когда коэффициенты передискретизации представляют интерес за пределами самих машин обработки видео (прежде всего кодера и декодера), например, для MANE. Следует отметить, что, в (предположительно) наиболее общем случае, когда изменения разрешения не требуется, можно выбирать короткий экспоненциальный код Голомба (например, единственный бит, как показано, например, во второй строке таблицы 1). В наиболее общем случае это может иметь преимущество эффективности кодирования по сравнению с использованием двоичных кодов.
[0129] Количество элементов в таблице, а также их семантика, могут быть полностью или частично конфигурируемыми. Например, основной контур таблицы может переноситься в "высоком" наборе параметров, например, наборе параметров последовательности или декодера. Альтернативно или дополнительно, одну или более таких таблиц можно задавать в технологии или стандарте видеокодирования и можно выбирать посредством, например, декодера или набора параметров последовательности.
[0130] Ниже приведено описание того, как коэффициент повышающей/понижающей дискретизации (информацию ARC), кодированный так, как описано выше, можно включить в синтаксис технологии или стандарта видеокодирования. Аналогичные соображения можно применить к одному или нескольким кодовым словам, управляющим фильтрами повышающей/понижающей дискретизации. Ниже также приведено описание случая, когда сравнительно большие объемы данных могут потребоваться для фильтра или других структур данных.
[0131] Согласно фиг. 5А, Н.263, приложение Р, включает информацию (502) ARC в форме четырех координат деформации в заголовок (501) изображения, в частности, в расширение (503) заголовка Н.263 PLUSPTYPE. Такая конструкция имеет смысл, когда (а) существует доступный заголовок изображения, и (b) изменения информации ARC предполагаются частыми. Однако служебная нагрузка при использовании сигнализации Н.263 может быть весьма высокой, и коэффициенты масштабирования могут не укладываться в границы изображения, поскольку заголовок изображения может иметь переходный характер.
[0132] Согласно фиг. 5В, JVCET-M135-vl включает в себя опорную информацию ARC (505), (индекс), находящийся в наборе (504) параметров изображения, который указывает таблицу (506), включающую в себя целевые разрешения, которая находится внутри набора (507) параметров последовательности. Расположение возможного разрешения в таблице (506) в наборе (507) параметров последовательности может подтверждаться с использованием SPS (507), как точка согласования возможности взаимодействий в ходе обмена информацией о возможностях. Разрешение может изменяться, в пределах, установленных значениями в таблице (506), от изображения к изображению путем обращения к подходящему набору (504) параметров изображения.
[0133] Согласно фиг. 6А-С, следующие варианты осуществления настоящего изобретения могут переносить информацию ARC в битовом потоке видео, например, в декодер настоящего изобретения. Каждый из этих вариантов осуществления имеет определенные преимущества над вышеописанным известным уровнем техники. Варианты осуществления могут одновременно присутствовать в одной и той же технологии или стандарте видеокодирования.
[0134] Согласно варианту осуществления согласно фиг. 6А, информация (509) ARC, например, коэффициент передискретизации (масштабирования) может присутствовать в заголовке (508), например, заголовке слайса, заголовке GOB, заголовке тайла или заголовке группы тайлов. В качестве примера, на фиг. 6А показан заголовок (508) в виде заголовка группы тайлов. Такая конфигурация может быть адекватна, если информация ARC мала, например, составляет одно кодовое слово переменной длины ue(v) или фиксированной длины в несколько битов, например, как показано в таблице 1. Наличие информации ARC непосредственно в заголовке группы тайлов имеет дополнительное преимущество в том, что информация ARC может быть применима к субизображению, представленному, например, группой тайлов, соответствующих заголовку группы тайлов, вместо полного изображения. Кроме того, даже если технология или стандарт сжатия видео использует только адаптивные изменения разрешения полного изображения (в отличие, например, от адаптивных изменений разрешения на основе группы тайлов), помещение информации ARC в заголовок группы тайлов (например, в заголовок изображения в формате Н.263) имеет некоторые преимущества с точки зрения устойчивости к ошибкам. Хотя вышеприведенное описание описывает информацию (509) ARC, присутствующую в заголовке группы тайлов, следует понимать, что вышеприведенное описание также может аналогично применяться в случаях, когда информация (509) ARC присутствует, например, в заголовке слайса, заголовке GOB или заголовок тайла.
[0135] В том же или другом варианте осуществления согласно фиг. 6В, информация (512) ARC сама могут присутствовать в подходящем наборе (511) параметров, например, наборе параметров изображения, наборе параметров заголовка, наборе параметров тайла, наборе параметров адаптации и т.д. В качестве примера, на фиг. 6В показан набор (511) параметров как набор параметров адаптации (APS). Размер этого набора параметров преимущественно не превышает размер изображения. Например, объем набора параметров может быть группой тайлов. Использование информации ARC (512) может быть неявным благодаря активации соответствующего набора параметров. Например, когда технология или стандарт видеокодирования предусматривает только ARC на основе изображения, то может подойти набор параметров изображения или эквивалент в качестве соответствующего набора параметров.
[0136] В том же или другом варианте осуществления, согласно фиг. 6С, опорная информация (513) ARC может присутствовать в заголовке (514) группы тайлов или аналогичной структуре данных. Опорная информация (513) ARC может относиться к поднабору информации (515) ARC, доступному в наборе (516) параметров за пределами границ одиночного изображения. Например, набор (516) параметров может быть набором параметров последовательности (SPS) или набором параметров декодера (DPS).
[0137] Дополнительный уровень косвенности, обусловленный активацией PPS из заголовка группы тайлов, PPS или SPS, используемых в JVET-M0135-vl, может быть не нужен, поскольку наборы параметров изображения, как и наборы параметров последовательности, могут использоваться для согласования или объявления возможностей. Если же информация ARC не подлежит применению к субизображению, которое также представлено, например, группой тайлов, предпочтительно выбирать набор параметров (например, адаптационный набор параметров или набор параметров заголовка), границы действия которого ограничены группой тайлов. Также, если информация ARC имеет более, чем пренебрежимо малый размер - например, содержит информацию управления фильтром, например, многочисленные коэффициенты фильтра - то выбирать параметр может быть лучше, чем непосредственно использовать заголовок, с точки зрения эффективности кодирования, поскольку эти настройки можно повторно использовать в будущих изображениях или субизображениях, обращаясь к одному и тому же набору параметров.
[0138] При использовании набора параметров последовательности или другого, более высокого, набора параметров с диапазоном, охватывающим множественные изображения, можно применять некоторые соображения:
[0139] (1) Набор (516) параметров для хранения информации (515) ARC в таблице, в ряде случаев, может быть набором параметров последовательности, но в других случаях может преимущественно быть набором параметров декодера. Набор параметров декодера может иметь диапазон действия в виде множества CVS, а именно, кодированного видеопотока, т.е. все биты кодированного видео от начала сеанса до окончания сеанса. Такой объем может быть более подходящим, поскольку возможные коэффициенты ARC могут быть признаком декодера, возможно реализованного аппаратными средствами, а аппаратным признакам не свойственно изменяться с любой CVS (которая по меньшей мере в некоторых развлекательных системах является группой изображений, имеет длительность одну секунду или менее). Тем не менее, некоторые варианты осуществления могут включать в себя таблицу информации ARC в наборе параметров последовательности, как описано здесь, в частности, в связи с нижеследующим пунктом (2).
[0140] (2) Опорная информация (513) ARC может преимущественно располагаться непосредственно в заголовке (514) (например, заголовке изображения/слайса/тайла/GOB/группы тайлов; далее именуемым заголовком группы тайлов), а не в наборе параметров изображения, как в JVCET-M0135-vl. Причина состоит в том, что, когда кодер хочет изменить единственное значение в наборе параметров изображения, например, ссылочную информацию ARC, кодеру придется создать новый PPS и сослаться на этот новый PPS. В случае, когда изменяется только ссылочная информация ARC, но другая информация, например, информация матрицы квантования в PPS, остается, такая информация может иметь существенный размер и ее потребуется повторно передавать для завершения нового PPS. Поскольку ссылочной информацией ARC может быть единственное кодовое слово, например, индекс таблицы информации ARC, который был бы единственным значением, которое изменяется, было бы затратно и расточительно повторно передавать, например, всю информацию матрицы квантования. Соответственно, размещение ссылочной информации ARC непосредственно в заголовке (например, заголовке (514)) может быть значительно лучше с точки зрения эффективности кодирования, поскольку позволяет избежать косвенности PPS, предложенной в JVET-M0135-vl. Также, помещение ссылочной информации ARC в PPS имеет дополнительный недостаток в том, что информация ARC, на которой базируется ссылочная информация ARC, обязательно должна применяться к полному изображению, а не к субизображению, поскольку диапазон действия набора параметров изображения является изображением.
[0141] В том же или другом варианте осуществления, сигнализация параметров ARC может следовать подробному примеру, приведенному на фиг. 7А-В. На фиг. 7А-В изображено синтаксические диаграммы. Система обозначений таких синтаксических диаграмм примерно следует программированию на языке С.Строки жирным шрифтом указывают синтаксические элементы, присутствующие в битовом потоке, и строки без жирного шрифта часто указывают последовательность управления или задание переменных.
[0142] В качестве примера синтаксическая структура заголовка, применимая к (возможно прямоугольной) части изображения, заголовок (600) группы тайлов может условно содержать синтаксический элемент dec_pic_size_idx (602), кодированный экспоненциальным кодом Голомба переменной длины (изображенный жирным шрифтом). Наличие этого синтаксического элемента в заголовке (600) группы тайлов может задаваться с использованием адаптивного разрешения (603). Здесь значение флага адаптивного разрешения не показано жирным шрифтом, и это означает, что флаг присутствует в битовом потоке в точке, где он возникает в синтаксической диаграмме. Используется ли адаптивное разрешение для этого изображения или его части, может сигнализироваться в любой высокоуровневой синтаксической структуре внутри или за пределами битового потока. В примере, представленном на фиг. 7А-В, адаптивное разрешение сигнализируется в наборе (610) параметров последовательности, как изложено ниже.
[0143] На фиг. 7В изображен фрагмент набора (610) параметров последовательности. Первым показанным синтаксическим элементом является adaptive_pic_resolution_change_flag (611). Будучи равным true, такой флаг может указывать на использование адаптивного разрешения, которое, в свою очередь, может требовать некоторой информации управления. В примере такая информация управления условно присутствует на основании значения флага на основании оператора if() (612) в наборе (610) параметров последовательности и заголовке (600) группы тайлов.
[0144] При использовании адаптивного разрешения, в этом примере кодируется выходное разрешение (613) в единицах отсчетов. Выходное разрешение (613) в этом иллюстративном варианте осуществления относится к обоим синтаксическим элементам output_pic_width_in_luma_samples и output_pic_height_in_luma_samples, которые совместно могут задавать разрешение выходного изображения. В другой технологии или стандарте видеокодирования можно задавать некоторые ограничения любого значения. Например, задание уровня может ограничивать полное количество выходных отсчетов, которое может равняться произведению значений этих двух синтаксических элементов. Также некоторые технологии или стандарты видеокодирования, или сторонние технологии или стандарты, например, системные стандарты, могут ограничивать числовой диапазон (например, один или оба размера должны быть кратны степени числа 2), или форматное соотношение (например, отношение ширины и высоты должно составлять, например, 4:3 или 16:9). Такие ограничения могут устанавливаться для облегчения реализаций аппаратного обеспечения или с другими целями.
[0145] В некоторых вариантах применения целесообразно, чтобы кодер предписывал декодеру использовать некоторый размер опорного изображения вместо того, чтобы неявно предполагать размер равным размеру выходного изображения. В этом примере синтаксический элемент reference_pic_size_present_flag (614) указывает условное наличие размеров (615) опорного изображения (опять же, позиция означает как ширину, так и высоту в иллюстративном варианте осуществления).
[0146] На фиг. 7В дополнительно представлена таблица возможного декодирования ширины и высоты изображения. Такая таблица может выражаться, например, табличным указанием (616) (например, синтаксический элемент num_dec_pic_size_in_luma_samples_minus1). "minus1" синтаксического элемента может относиться к интерпретации значения этого синтаксического элемента. Например, если кодированное значение синтаксического элемента равно нулю, присутствует один элемент таблицы. Если кодированное значение равно пяти, присутствует шесть элементов таблицы. Для каждой "строки" в таблице, декодированные ширина и высота изображения затем включаются в синтаксис как элементы (617) таблицы.
[0147] Представленные элементы (617) таблицы можно индексировать с использованием синтаксического элемента dec_pic_size_idx (602) в заголовке (600) группы тайлов, таким образом допуская разные декодированные размеры - фактически, масштабные коэффициенты - для каждой группы тайлов.
[0148] Некоторые технологии или стандарты видеокодирования, например VP9, поддерживают пространственную масштабируемость путем осуществления некоторых форм передискретизации опорного изображения (которые могут сигнализироваться совершенно по-другому по сравнению с вариантами осуществления настоящего изобретения) в связи с временной масштабируемостью, для обеспечения пространственной масштабируемости. В частности, некоторые опорные изображения можно дискретизировать с повышением с использованием технологий ARC до более высокого разрешения для формирования основы для пространственного уровня улучшения. Такие изображения, дискретизированные с повышением, можно уточнять с использованием обычных механизмов предсказания с высоким разрешением для добавления деталей.
[0149] Варианты осуществления изобретения могут использоваться в таком окружении. В некоторых случаях, в том же или другом варианте осуществления, значение в заголовке блока уровня сетевой абстракции (NAL), например, поле временного ID, может использоваться для указания не только временного, но и пространственного уровня. Это обеспечивает некоторые преимущества для некоторых конструкций системы; например, существующие выбранные пересылаемые блоки (SFU, Selected Forwarding Unit), созданные и оптимизированные для выбранной ретрансляции временного уровня на основании значения временного ID заголовка блока NAL, могут использоваться без модификации для масштабируемого окружения. Для обеспечения этого, варианты осуществления настоящего изобретения могут включать в себя отображение между размером кодированного изображения и временным уровнем, подлежащим указанию полем временного ID в заголовке блока NAL.
[0150] В некоторых технологиях видеокодирования, блок доступа (AU) может относиться к кодированному(ым) изображению(ям), слайсу(ам), тайлу(ам), блоку(ам) NAL и т.д., которые были захвачены и составлены в битовый поток соответствующего изображения/слайса/тайла/блока NAL в данный момент времени. Такой момент времени может быть временем композиции.
[0151] В высокопроизводительном видеокодировании (HEVC) и некоторых других технологиях видеокодирования, значение порядкового номера изображения (РОС, picture order count) может использоваться для указания выбранного опорного изображения из множества опорных изображений, хранящихся в буфере декодированных изображений (DPB, decoded picture buffer). Когда блок доступа (AU) содержит одно или более изображений, слайсов или тайлов, каждое изображение, слайс или тайл, принадлежащий одному и тому же AU, может нести одно и то же значение РОС, из которого можно заключить, что они были созданы из содержимого того же времени композиции. Другими словами, можно определять, что два изображения/слайса/тайла принадлежат одному и тому же AU и имеют одно и то же время композиции в сценарии, где два изображения/слайса/тайла несут одно и то же данное значение РОС. Напротив, два изображения/тайла/слайса, имеющие разные значения РОС, могут указывать, что изображения/слайсы/тайлы принадлежат разным AU и имеют разные значения времени композиции.
[0152] Согласно варианту осуществления изобретения, вышеупомянутое жесткое соотношение может ослабляться в том смысле, что блок доступа может содержать изображения, слайсы или тайлы с разными значениями РОС. Возможность наличия разных значений РОС в AU, позволяет использовать значение РОС для идентификации потенциально независимо декодируемых изображений/слайсов/тайлов с одинаковым временем представления. Соответственно, вариант осуществления настоящего изобретения позволяет поддерживать множественные масштабируемые уровни без изменения сигнализации выбора опорного изображения (например, сигнализации набора опорных изображений или сигнализации списка опорных изображений), как более подробно описано ниже.
[0153] Согласно варианту осуществления, по-прежнему желательно иметь возможность идентифицировать AU, которому принадлежит изображение/слайс/тайл, относительно других изображений/слайсов/тайлов, имеющих другие значения РОС, только из значения РОС. Этого можно добиться согласно вариантам осуществления, как описано ниже.
[0154] В том же или других вариантах осуществления, счетчик блоков доступа (AUC, access unit count) может сигнализироваться в высокоуровневой синтаксической структуре, например, заголовке блока NAL, заголовке слайса, заголовке группы тайлов, сообщении SEI, наборе параметров или разделителе AU. Значение AUC может использоваться для идентификации того, какие блоки NAL, изображения, слайсы или тайлы принадлежат данному AU. Значение AUC может соответствовать отдельному моменту время композиции. Значение AUC может быть равно множественным значениям РОС. Делением значения РОС на целое число можно вычислить значение AUC. В некоторых случаях, операции деления могут создавать некоторую нагрузку на реализации декодера. В подобных случаях, малые ограничения в пространстве нумерации значений AUC могут позволять заменять операцию деления операциями сдвига, осуществляемыми согласно вариантам осуществления настоящего изобретения. Например, значение AUC может быть равно значению старшего бита (MSB, Most Significant Bit) диапазона значения РОС.
[0155] В том же варианте осуществления, значение цикла РОС для каждого AU (например, синтаксический элемент poc_cycle_au) может сигнализироваться в высокоуровневой синтаксической структуре, например, заголовке блока NAL, заголовке слайса, заголовке группы тайлов, сообщении SEI, наборе параметров или разделителе AU. Синтаксические элементы рос_cycle_au могут указывать, сколько разных и последовательных значений РОС может быть связано с одним и тем же AU. Например, если значение poc_cycle_au равно 4, изображения, слайсы или тайлы со значением РОС, равным 0-3, включительно, связаны с AU со значением AUC, равным 0, и изображения, слайсы или тайлы со значением РОС, равным 4-7, включительно, связаны с AU со значением AUC, равным 1. Следовательно, значение AUC можно получать согласно вариантам осуществления настоящего изобретения делением значения РОС на значение рос_cycle_au.
[0156] В том же или другом варианте осуществления, значение рос_cycle_au может выводиться из информации, находящейся, например, в наборе параметров видео (VPS, video parameter set), который идентифицирует количество пространственных уровней или уровней SNR в кодированной видеопоследовательности. Такое возможное соотношение кратко описано ниже. Хотя вышеописанный вывод позволяет сэкономить несколько битов в VPS и, таким образом, повышает эффективность кодирования, может быть предпочтительно явно кодировать poc_cycle_au в подходящей высокоуровневой синтаксической структуре иерархически ниже набора параметров видео, чтобы иметь возможность минимизировать рос_cycle_au для данной малой части битового потока, например изображения. Эта оптимизация позволяет сэкономить больше битов, чем вышеописанный процесс выведения, поскольку значения РОС (и/или значения синтаксических элементов, косвенно ссылающихся на РОС) могут кодироваться в низкоуровневых синтаксических структурах.
[0157] В том же или другом варианте осуществления, фиг. 9А демонстрирует пример синтаксической таблицы для сигнализации синтаксического элемента vps_poc_cycle_au (632) в VPS (630) или SPS, который указывает poc_cycle_au, используемый для всех изображений/слайсов в кодированной видеопоследовательности, и фиг. 9В демонстрирует пример синтаксической таблицы для сигнализации синтаксического элемента slice_poc_cycle_au (642), который указывает poc_cycle_au текущего слайса в заголовке слайса (640). Если значение РОС увеличивается равномерно для каждого AU, vps_contant_poc_cycle_per_au (634) в VPS (630) устанавливается равным 1, и vps_poc_cycle_au (632) сигнализируется в VPS (630). В этом случае, slice_poc_cycle_au (642) явно не сигнализируется, и значение AUC для каждого AU вычисляется делением значения РОС на vps_poc_cycle_au (632). Если значение РОС не увеличивается равномерно для каждого AU, vps_contant_poc_cycle_perau (634) в VPS (630) устанавливается равным 0. В этом случае, vps_access_unit_cnt не сигнализируется, тогда как slice access unit cnt сигнализируется в заголовке слайса для каждого слайса или изображения. Каждый слайс или изображение может иметь разное значение slice_access_unit_cnt. Значение AUC для каждого AU вычисляется делением значения РОС на slice_poc_cycle_au (642).
[0158] На фиг. 10 показана блок-схема для описания соответствующей последовательности операций согласно варианту осуществления. Например, декодер (или кодер) анализирует VPS/SPS и идентифицирует, постоянен ли цикл РОС для каждого AU (652). Затем декодер (или кодер) принимает решение (654) на основании того, постоянен ли цикл РОС для каждого AU в кодированной видеопоследовательности. Таким образом, если цикл РОС для каждого AU постоянен, декодер (или кодер) вычисляет значение счетчика блоков доступа из значения poccycleau на уровне последовательностей и значения РОС (656). Альтернативно, если цикл РОС для каждого AU не постоянен, декодер (или кодер) вычисляет значение счетчика блоков доступа из значения poc cycle au на уровне изображений и значение РОС (658). В любом случае, декодер (или кодер) может затем повторять процесс, например, путем анализа VPS/SPS и идентификации, постоянен ли цикл РОС для каждого AU (662).
[0159] В том же или других вариантах осуществления, хотя значения РОС изображения, слайса или тайла могут различаться, изображение, слайс или тайл, соответствующий AU с одним и тем же значением AUC, может быть связан с одним и тем же моментом времени декодирования или вывода. Следовательно, без какой-либо зависимости анализа/декодирования между изображениями, слайсами или тайлами в одном и том же AU, все или поднабор изображений, слайсов или тайлов, связанных с одним и тем же AU, могут декодироваться параллельно, и могут выводиться в один и тот же момент времени.
[0160] В том же или других вариантах осуществления, хотя значения РОС изображения, слайса или тайла могут различаться, изображение, слайс или тайл, соответствующий AU с одним и тем же значением AUC, могут быть связаны с одним и тем же моментом времени композиции/отображения. Когда время композиции содержится в формате контейнера, хотя изображения соответствуют разным AU, если изображения имеют одно и то же время композиции, изображения могут отображаться в один и тот же момент времени.
[0161] В том же или других вариантах осуществления, каждое изображение, слайс или тайл могут иметь один и тот же временной идентификатор (например, синтаксический элемент temporalid) в одном и том же AU. Все или поднабор изображений, слайсов или тайлов, соответствующих моменту времени, могут быть связаны с одним и тем же временным подуровнем. В том же или других вариантах осуществления, каждое изображение, слайс или тайл могут иметь один и тот же или разные id пространственного уровня (например, синтаксический элемент layerid) в одном и том же AU. Все или поднабор изображений, слайсов или тайлов, соответствующих моменту времени, могут быть связаны с одним и тем же или разными пространственным(и) уровнем(ями).
[0162] На фиг. 8 показан пример структуры видеопоследовательности (680) с комбинацией temporal_id, layer_id, и значений РОС и AUC с адаптивным изменением разрешения. В этом примере, изображение, слайс или тайл в первом AU с AUC=0 может иметь temporal_id=0 и layer_id=0 или 1, тогда как изображение, слайс или тайл во втором AU с AUC=1 может иметь temporal_id=1 и layer_id=0 или 1, соответственно. Значение РОС увеличивается на 1 для каждого изображения независимо от значений temporal_id и layer_id. В этом примере, значение рос_cycle_au может быть равно 2. Согласно варианту осуществления, значение рос_cycle_au может быть установлено равным количеству уровней (пространственной масштабируемости). В этом примере, значение РОС увеличивается на 2 тогда как значение AUC увеличивается на 1. В качестве примера, на фиг. 8, в первом AU (AUC=0), показаны 1-слайс (681), имеющий РОС 0, TID 0 и LID 0, и В-слайс (682), имеющий РОС 1, TID 0 и LID 1. Во втором AU (AUC=1), на фиг. 8 показаны В-слайс (683) имеющий РОС 2, TID 1 и LID 0, и В-слайс (684), имеющий РОС 3, TID 1 и LID 1. В третьем AU (AUC=3), на фиг. 8 показаны В-слайс (685), имеющий РОС 4, TID 0 и LID 0, и В-слайс (686), имеющий РОС 5, TID 0 и LID 1.
[0163] Согласно вышеописанным вариантам осуществления, все или поднабор из структуры предсказания между изображениями или между уровнями и указания опорного изображения могут поддерживаться с использованием существующей сигнализации набора опорных изображений (RPS, reference picture set) HEVC или сигнализации списка опорных изображений (RPL, reference picture list). В RPS или RPL выбранное опорное изображение указывается сигнализацией значения РОС или разности значений РОС между текущим изображением и выбранным опорным изображением. Согласно вариантам осуществления настоящего изобретения, RPS и RPL могут использоваться для указания структуры предсказания между изображениями или между уровнями без изменения сигнализации, но со следующими ограничениями. Если значение temporal_id опорного изображения больше значения temporal_id текущего изображения, текущее изображение не может использовать опорное изображение для компенсации движения или других предсказаний. Если значение layer_id опорного изображения больше значения layer_id текущего изображения, текущее изображение не может использовать опорное изображение для компенсации движения или других предсказаний.
[0164] В том же и других вариантах осуществления, масштабирование вектора движения на основании разности РОС для временного предсказания вектора движения может быть запрещено для множества изображений в блоке доступа. Следовательно, хотя разные изображения могут иметь разные значения РОС в блоке доступа, вектор движения может не масштабироваться и использоваться для временного предсказания вектора движения в блоке доступа, поскольку опорное изображение с другим РОС в одном и том же AU может считаться опорным изображением, имеющим один и тот же момент времени. Таким образом, согласно варианту осуществления, функция масштабирования вектора движения может возвращать 1 когда опорное изображение принадлежит AU, связанному с текущим изображением.
[0165] В том же и других вариантах осуществления, масштабирование вектора движения на основании разности РОС для временного предсказания вектора движения может быть опционально запрещено для множества изображений, когда пространственное разрешение опорного изображения отличается от пространственного разрешения текущего изображения. Когда масштабирование вектора движения разрешено, вектор движения может масштабироваться на основании отношения как разности РОС, так и пространственного разрешения между текущим изображением и опорным изображением.
[0166] В том же или другом варианте осуществления, вектор движения может масштабироваться на основании разности AUC вместо разности РОС для временного предсказания вектора движения, в особенности, когда рос_cycle_au имеет неоднородное значение (когда vps_contant_poc_cycle_per_au=0). В противном случае (когда vps_contant_poc_cycle_per_au=1), масштабирование вектора движения на основании разности AUC может быть идентично масштабированию вектора движения на основании разности РОС.
[0167] В том же или другом варианте осуществления, когда вектор движения масштабируется на основании разности AUC, опорный вектор движения в одном и том же AU (с одним и тем же значением AUC) с текущим изображением не масштабируется на основании разности AUC и используется для предсказания вектора движения без масштабирования или с масштабированием на основании пространственное разрешение отношения между текущим изображением и опорным изображением.
[0168] В том же и других вариантах осуществления, значение AUC используется для идентификации границы AU и используется для операции гипотетического эталонного декодера (HRD), для которой требуется время ввода и вывода с гранулярностью AU. В большинстве случаев декодированное изображение с наивысшим уровнем в AU может выводиться для отображения. Значение AUC и значение layer_id может использоваться для идентификации выходного изображения.
[0169] Согласно варианту осуществления, изображение может содержать одно или более субизображений. Каждое субизображение может покрывать локальную область или всю область изображения. Область, поддерживаемая субизображением, может перекрываться или не перекрываться с областью, поддерживаемой другим субизображением. Область, составленная одним или более субизображениями, может покрывать или не покрывать всю область изображения. Если изображение состоит из субизображения, область, поддерживаемая субизображением, может быть идентична области, поддерживаемой изображением.
[0170] В том же варианте осуществления, субизображение может кодироваться способом кодирования, аналогичным способу кодирования, используемому для кодированного изображения. Субизображение может кодироваться независимо или может кодироваться в зависимости от другого субизображения или кодированного изображения. Субизображение может иметь или не иметь какую-либо зависимость анализа от другого субизображения или кодированного изображения.
[0171] В том же варианте осуществления, кодированное субизображение может содержаться в одном или более уровней. Кодированные субизображения в уровне могут иметь разное пространственное разрешение. Исходное субизображение может пространственно передискретизироваться (дискретизироваться с повышением или дискретизироваться с понижением), кодироваться с разными параметрами пространственного разрешения и содержаться в битовом потоке, соответствующем уровню.
w,k
h,k
w,k
h,k
w,k
h,k
w,h
h,k
[0172] В том же или другом варианте осуществления, субизображение с (W, Н), где W обозначает ширину субизображения и Н обозначает высоту субизображения, соответственно, может кодироваться и содержаться в кодированном битовом потоке, соответствующем уровню 0, тогда как дискретизированное с повышением (или дискретизированное с понижением) субизображение из субизображения с исходным пространственным разрешением, с (W*S, Н* S), может кодироваться и содержаться в кодированном битовом потоке, соответствующем уровню k, где S, S указывают коэффициенты передискретизации, по горизонтали и вертикали. Если значения S S больше 1, передискретизация является повышающей дискретизацией. Если же значения S S меньше 1, то передискретизация является понижающей дискретизацией.
i,n
j,m
[0173] В том же или другом варианте осуществления, кодированное субизображение в уровне может отличаться визуальным качеством от кодированного субизображения в другом уровне в том же субизображении или другом субизображении. Например, субизображение i в уровне, n, кодируется параметром квантования, Q, тогда как субизображение j в уровне, m, кодируется параметром квантования, Q.
[0174] В том же или другом варианте осуществления, кодированное субизображение в уровне может независимо декодироваться, без какой-либо зависимости анализа или декодирования от кодированного субизображения в другом уровне той же локальной области. Уровень субизображения, который может независимо декодироваться без опоры на другой уровень субизображения той же локальной области, является независимым уровнем субизображения. Кодированное субизображение в независимом уровне субизображения может иметь или не иметь зависимость декодирования или анализа от ранее кодированного субизображения в том же уровне субизображения, но кодированное субизображение не может иметь никакой зависимости от кодированного изображения в другом уровне субизображения.
[0175] В том же или другом варианте осуществления, кодированное субизображение в уровне может зависимо декодироваться, при любой зависимости анализа или декодирования от кодированного субизображения в другом уровне той же локальной области. Уровень субизображения, который может зависимо декодироваться со ссылкой на другой уровень субизображения той же локальной области, является зависимым уровнем субизображения. Кодированное субизображение в зависимом субизображении может ссылаться на кодированное субизображение, принадлежащее тому же субизображению, ранее кодированному субизображению в том же уровне субизображения или обоим опорным субизображениям.
[0176] В том же или другом варианте осуществления, кодированное субизображение содержит один или более независимых уровней субизображений и один или более зависимых уровней субизображений. Однако по меньшей мере один независимый уровень субизображения может присутствовать для кодированного субизображения. Независимый уровень субизображения может иметь значение идентификатора уровня (например, синтаксический элемент layer_id), которое может присутствовать в заголовке блока NAL или другой высокоуровневой синтаксической структуре, равное 0. Уровень субизображения с layer_id равным 0 может быть базовым уровнем субизображения.
[0177] В том же или другом варианте осуществления, изображение может содержать одно или более субизображений переднего плана и одно субизображение заднего плана. Область, поддерживаемая субизображением заднего плана, может быть равна области изображения. Область, поддерживаемая субизображением переднего плана, может перекрываться с областью, поддерживаемой субизображением заднего плана. Субизображение заднего плана может быть базовым уровнем субизображения, тогда как субизображение переднего плана может быть небазовым (улучшенным) уровнем субизображения. Один или более небазовый уровень субизображения может ссылаться на один и тот же базовый уровень для декодирования. Каждый небазовый уровень субизображения с layer_id равным а может ссылаться на небазовый уровень субизображения с layer_id равным b, где а больше b.
[0178] В том же или другом варианте осуществления, изображение может содержать одно или более субизображений переднего плана с субизображением заднего плана или без него. Каждое субизображение может иметь свой собственный базовый уровень субизображения и один или более небазовых уровней (уровней улучшения). Каждый базовый уровень субизображения может служить опорой одному или более небазовым уровням субизображений. Каждый небазовый уровень субизображения с layer_id равным а может ссылаться на небазовый уровень субизображения с layer_id равным b, где а больше b.
[0179] В том же или другом варианте осуществления, изображение может содержать одно или более субизображений переднего плана с субизображением заднего плана или без него. Каждое кодированное субизображение в уровне (базовом или небазовом) субизображения может служить опорой одному или более небазовым уровням субизображений, принадлежащим тому же субизображению, и одному или более небазовым уровням субизображений, которые не принадлежат тому же субизображению.
[0180] В том же или другом варианте осуществления, изображение может содержать одно или более субизображений переднего плана с субизображением заднего плана или без него. Субизображение в уровне а могут дополнительно разбиваться на множественные субизображения в одном и том же уровне. Одно или более кодированных субизображений в уровне b может ссылаться на разбиваемое субизображение в уровне а.
[0181] В том же или другом варианте осуществления, кодированная видеопоследовательность (CVS) может быть группой кодированных изображений. CVS может содержать одну или более последовательностей кодированных субизображений (CSPS, coded sub-picture sequence), где CSPS может быть группой кодированных субизображений, покрывающих одну и ту же локальную область изображения. CSPS может иметь такое же или другое временное разрешение, чем у кодированной видеопоследовательности.
[0182] В том же или другом варианте осуществления, CSPS может кодироваться и содержаться в одном или более уровней. CSPS может содержать или состоять из одного или более уровней CSPS. Декодирование одного или более уровней CSPS, соответствующих CSPS, позволяет реконструировать последовательность субизображений, соответствующих одной и той же локальной области.
[0183] В том же или другом варианте осуществления, количество уровней CSPS, соответствующих CSPS, может быть равно или отличаться от количества уровней CSPS, соответствующих другой CSPS.
[0184] В том же или другом варианте осуществления, уровень CSPS может иметь временное разрешение (например, частоту кадров), отличное от временного разрешения уровня CSPS. Исходная (без сжатия) последовательность субизображений может передискретизироваться по времени (дискретизироваться с повышением или дискретизироваться с понижением), кодироваться с разными параметрами временного разрешения и содержаться в битовом потоке, соответствующем уровню.
t,k
t,k
t,k
t,k
[0185] В том же или другом варианте осуществления, последовательность субизображений с частотой кадров, F, может кодироваться и содержаться в кодированном битовом потоке, соответствующем уровню 0, тогда как дискретизированная с повышением (или дискретизированная с понижением) по времени последовательность субизображений из исходной последовательности субизображений, F*S, может кодироваться и содержаться в кодированном битовом потоке, соответствующем уровню k, где S указывает коэффициент временной дискретизации для уровня k. Если значение S больше 1, процесс временной передискретизации является преобразованием с повышением частоты кадров. Если значение S меньше 1. процесс временной передискретизации является преобразованием с понижением частоты кадров.
[0186] В том же или другом варианте осуществления, когда субизображение с уровнем CSPS а служит опорой для субизображения с уровнем CSPS b для компенсации движения или любого межуровневого предсказания, если пространственное разрешение уровня CSPS а отличается от пространственного разрешения уровня CSPS b, декодированные пиксели в уровне CSPS а передискретизируются и используются для ссылки. Процесс передискретизации может требовать фильтра повышающей дискретизации или фильтра понижающей дискретизации.
[0187] На фиг. 11 показан пример видеопотока, включающего в себя CSPS видео заднего плана с layer_id равным 0 и множественными уровнями CSPS переднего плана. В то время как кодированное субизображение может содержать один или более уровней (704) улучшения CSPS, область заднего плана, которая не принадлежит ни одному уровню CSPS переднего плана, может содержать базовый уровень (702). Базовый уровень (702) может содержать область заднего плана и области переднего плана, тогда как уровень (704) улучшения CSPS содержит область переднего плана. Уровень (704) улучшения CSPS может иметь лучше визуальное качество, чем базовый уровень (702), в той же области. Уровень (704) улучшения CSPS может ссылаться на реконструированные пиксели и векторы движения базового уровня (702), соответствующие той же области.
[0188] В том же или другом варианте осуществления, битовый поток видео, соответствующий базовому уровню (702), содержится в треке, тогда как уровни (704) CSPS, соответствующие каждому субизображение, содержатся в отдельном треке, в файле видео.
[0189] В том же или другом варианте осуществления, битовый поток видео, соответствующий базовому уровню (702), содержится в треке, тогда как уровни (704) CSPS с одним и тем же layer_id содержатся в отдельном треке. В этом примере, трек, соответствующий уровню k, включает в себя только уровни (704) CSPS, соответствующие уровню k.
[0190] В том же или другом варианте осуществления, каждый уровень (704) CSPS каждого субизображения хранится в отдельном треке. Каждый трек может иметь или не иметь какую-либо зависимость анализа или декодирования от одного или более других треков.
[0191] В том же или другом варианте осуществления, каждый трек может содержать битовые потоки, соответствующие уровням от i до j из уровней (704) CSPS всех или поднабора субизображений, где 0<i=<j=<k, где k - наивысший уровень CSPS.
[0192] В том же или другом варианте осуществления, изображение содержит или состоит из одних или более соответствующих медиаданных, включающих в себя карту глубины, альфа-карту, данные 3D геометрии, карту занятости и т.д. Такие соответствующим образом синхронизированные медиаданные могут делиться на один или несколько подпотоков данных, каждый из которых соответствует одному субизображению.
[0193] В том же или другом варианте осуществления, на фиг. 12 показан пример видеоконференции на основании способа многоуровневых субизображений. В видеопотоке содержатся один битовый поток видео базового уровня, соответствующий изображению заднего плана, и один или более битовых потоков видео уровня улучшения, соответствующие субизображениям переднего плана. Каждый битовый поток видео уровня улучшения может соответствовать уровню CSPS. На дисплее по умолчанию отображается изображение, соответствующее базовому уровню (712). Базовый уровень (712) может содержать одно или более изображений в изображении (PIP, picture_in picture) пользователя. Когда конкретный пользователь выбирается под управлением клиента, уровень (714) улучшения CSPS, соответствующий выбранному пользователю, декодируется и отображается с повышенным качеством или пространственным разрешением.
[0194] На фиг. 13 показана схема операций варианта осуществления. Согласно варианту осуществления, декодер может декодировать битовый поток видео, который включает в себя множественные уровни, например, один базовый уровень и один или более уровней (722) улучшения CSPS. Затем декодер может идентифицировать область заднего плана и одно или более субизображений переднего плана (724) и принимать решение, выбрана ли конкретная область субизображения (726). Если конкретная область субизображения, соответствующая, например, PIP пользователя выбрана ("да"), декодер может декодировать и отображать улучшенное субизображение, соответствующее выбранному пользователю (728). Например, декодер может декодировать и отображать изображение, соответствующее уровню (714) улучшения CSPS. Ему никакая конкретная область субизображения не выбрана ("нет"), декодер может декодировать и отображать область заднего плана (730). Например, декодер может декодировать и отображать изображение, соответствующее базовому уровню (712).
[0195] В том же или другом варианте осуществления, промежуточный узел сети (например, маршрутизатор) может выбирать поднабор уровней для отправки пользователю в зависимости от его полосы частот. Организация изображения/субизображения может использоваться для адаптации полосы. Например, если пользователь не имеет достаточной полосы, маршрутизатор удаляет уровни или выбирает некоторые субизображения вследствие их важности или на основании используемой настройки. Согласно варианту осуществления, такие процессы могут осуществляться динамически для адаптации к полосе.
[0196] Фиг. 14 демонстрирует иллюстративный вариант использования видео 360°. Когда сферическое изображение 360° (742) проецируется на плоское изображение, сферическое изображение 360° (742), которое проецируется, может разбиваться на множественные субизображения (745) в качестве базового уровня (744). Уровень (746) улучшения конкретного одного из субизображений (745) может кодироваться и передаваться клиенту. Декодер может декодировать как базовый уровень (744). включающий в себя все субизображения (745), так и уровень (746) улучшения выбранного одного из субизображений (745). Когда текущее окно обзора идентично выбранному одному из субизображений (745), отображаемое изображение может иметь более высокое качество с декодированным субизображением (745) с уровнем (746) улучшения. В противном случае, декодированное изображение с базовым уровнем (744) может отображаться с более низким качеством.
[0197] В том же или другом варианте осуществления, любая информация компоновки для отображения может присутствовать в файле как вспомогательная информация (например, сообщение SEI или метаданные). Одно или более декодированных субизображений можно перемещать и отображать в зависимости от сигнализируемой информации компоновки. Информация компоновки может сигнализироваться сервером потоковой передачи или вещательной станцией, или может регенерироваться сетевым узлом или облачным сервером или может определяться индивидуальной настройкой пользователя.
[0198] Согласно варианту осуществления, когда входное изображение делится на одну или более прямоугольных подобластей, каждая подобласть может кодироваться как независимый уровень. Каждый независимый уровень, соответствующий локальной области, может иметь уникальное значение layer_id. Для каждого независимого уровня может сигнализироваться информация размера субизображения и местоположения. Например, могут сигнализироваться размер изображения (ширина, высота) и смещение информация левого верхнего угла (х_offset, у_offset). Фиг. 15А демонстрирует пример компоновки разделенных субизображений (752), фиг. 15В демонстрирует пример соответствующего размера субизображения и информации положения одного из субизображений (752), и фиг. 16 демонстрирует соответствующую структуру предсказания изображения. Информация компоновки, включающая в себя размер субизображения(й) и положение(я) субизображений, может сигнализироваться в высокоуровневой синтаксической структуре, например, наборе(ах) параметров, заголовке слайса или группы тайлов или сообщении SEI.
[0199] В том же варианте осуществления, каждое субизображение, соответствующее независимому уровню, может иметь свое уникальное значение РОС в AU. Когда опорное изображение из изображений, хранящихся в DPB, указано с использованием синтаксического(их) элемента(ов) в структуре RPS или RPL, может использоваться значение(я) РОС каждого субизображения, соответствующего уровню.
[0200] В том же или другом варианте осуществления, для указания структуры (межуровневого) предсказания, layer_id может не использоваться, и значение (дельта) РОС может использоваться.
[0201] В том же варианте осуществления, субизображение со значением РОС, равным N, соответствующим уровню (или локальной области), может использоваться или не использоваться как опорное изображение для субизображения со значением РОС, равным K+N, соответствующим тому же уровню (или той же локальной области) для предсказания с компенсацией движения. В большинстве случаев, значение числа K может быть равно максимальному количеству (независимых) уровней, которое может быть равно количеству подобластей.
[0202] В том же или другом варианте осуществления, фиг. 17-18 демонстрируют расширенный случай фиг. 15А-В и фиг. 16. Когда входное изображение делится на множественные (например, четыре) подобласти, каждая локальная область может кодироваться с одним или более уровней. В этом случае, количество независимых уровней может быть равно количеству подобластей, и один или более уровней могут соответствовать подобласти. Таким образом, каждая подобласть может кодироваться с одним или более независимыми уровнями и нулем или более зависимыми уровнями.
[0203] В том же варианте осуществления, согласно фиг. 17, входное изображение может делиться на четыре подобласти, включающие в себя верхнюю левую подобласть (762), верхнюю правую подобласть (763), нижнюю левую подобласть (764) и нижнюю правую подобласть (765). Верхняя правая подобласть (763) может кодироваться как два уровня, которые являются уровнем 1 и уровнем 4, тогда как нижняя правая подобласть (765) может кодироваться как два уровня, которые являются уровнем 3 и уровнем 5. В этом случае уровень 4 может ссылаться на уровень 1 для предсказания с компенсацией движения, тогда как уровень 5 может ссылаться на уровень 3 для компенсации движения.
[0204] В том же или другом варианте осуществления, внутриконтурная фильтрация (например деблокирующая фильтрация, адаптивная внутриконтурная фильтрация, формирователь, двусторонняя фильтрация или любая фильтрация на основе глубокого обучения) через границу уровня может быть (опционально) запрещена.
[0205] В том же или другом варианте осуществления, предсказание с компенсацией движения или внутреннее копирование блоков через границу уровня может быть (опционально) запрещено.
[0206] В том же или другом варианте осуществления, заполнение границы для предсказания с компенсацией движения или внутриконтурная фильтрация на границе субизображения может обрабатываться опционально. Флаг, указывающий, обрабатывается ли заполнение границы, может сигнализироваться в высокоуровневой синтаксической структуре, например, набор(ах) параметров (VPS, SPS, PPS или APS), заголовке слайса или группы тайлов, или в сообщении SEI.
[0207] В том же или другом варианте осуществления, информация компоновки подобласти(ей) (или субизображения(й)) может сигнализироваться в VPS или SPS. На фиг. 19А показан пример синтаксических элементов в VPS (770), и на фиг. 19В показан пример синтаксических элементов SPS (780). В этом примере, vps_sub_picture_dividing_flag (772) сигнализируется в VPS (770). Флаг может указывать, делится ли входное изображение(я) на множественные подобласти. Когда значение vps_sub_picture_dividing_flag (772) равно 0, входное изображение(я) в кодированной видеопоследовательности, соответствующей текущему VPS, не может делиться на множественные подобласти. В этом случае размер входного изображения может быть равен размеру кодированного изображения (pic_width_in_luma_samples (786), pic_height_in_luma_samples (788)), который сигнализируется в SPS (680). Когда значение vps_sub_picture_dividing_flag (772) равно 1, входное изображение(я) может делиться на множественные подобласти. В этом случае синтаксические элементы vps_full_pic_width_in_luma_samples (774) и vps_full_pic_height_in_luma_samples (776) сигнализируются в VPS (770). Значения vps_full_pic_width_in_luma_samples (774) и vps_full_pic_height_in_luma_samples (776) могут быть равны ширине и высоте входного изображения, соответственно.
[0208] В том же варианте осуществления значения vps_full_pic_width_in_luma_samples (774) и vps_full_pic_height_in_luma_samples (776) могут не использоваться для декодирования, но могут использоваться для композиции и отображения.
[0209] В том же варианте осуществления, когда значение vps_sub_picture_dividing_flag (772) равно 1, синтаксические элементы picoffsetx (782) и pic offset y (784)), которые соответствуют конкретному(ым) уровню(ям), могут сигнализироваться в SPS (780). В этом случае размер кодированного изображения (pic_width_in_luma_samples (786), pic_height_in_luma_samples (788)) сигнализируемого в SPS (780), может быть равен ширине и высоте подобласти, соответствующей конкретному уровню. Также положение (pic_offset_x (782), pic_offset_y (784)) левого верхнего угла подобласти может сигнализироваться в SPS (780).
[0210] В том же варианте осуществления, информация положения (pic_offset_х (782), pic_offset_y (784)) левого верхнего угла подобласти может не использоваться для декодирования, но может использоваться для композиции и отображения.
[0211] В том же или другом варианте осуществления информация компоновки (размер и положение) всех или поднабора подобластей входного(ых) изображения(й), и зависимость информация между уровнями может сигнализироваться в наборе параметров или сообщении SEI. Фиг. 20 демонстрирует пример синтаксических элементов, которые указывают информацию компоновки подобластей, зависимости между уровнями и отношения между подобластью и одним или более уровнями. В этом примере синтаксический элемент numsubregion (791) указывает количество (прямоугольных) подобластей в текущей кодированной видеопоследовательности. Синтаксический элемент num_layers (792) указывает количество уровней в текущей кодированной видеопоследовательности. Значение num_layers (792) может быть больше или равно значению num_sub_region (791). Когда любая подобласть кодируется как единственный уровень, значение num_layers (792) может быть равно значению numsubregion (791). Когда одна или более подобластей кодируются как множественные уровни, значение num_layers (792) может быть больше значения num sub region (791). Синтаксический элемент direct_dependency_flag[i][j] (793) указывает зависимость от j-го уровня до i-го уровня. Синтаксический элемент num_layers_for_region[i] (794) указывает количество уровней, связанное с i-ой подобластью. Синтаксический элемент sub_region_layer_id[i][j] (795) указывает layer id j-го уровня, связанного с i-ой подобластью. Синтаксические элементы sub_region_offset_x[i] (796) и sub_region_offset_y[i] (797) указывают горизонтальное и вертикальное местоположение левого верхнего угла i-ой подобласти, соответственно. Синтаксические элементы sub_region_width [i] (798) и sub_region_height[i] (799) указывают ширину и высоту i-ой подобласти, соответственно.
[0212] В одном варианте осуществления, один или более синтаксических элементов, которые указывают набор выходных уровней для указания одного или более уровней, подлежащих выводу с информацией уровня/яруса/профиля или без нее, могут сигнализироваться в высокоуровневой синтаксической структуре (например, VPS, DPS, SPS, PPS, APS или сообщении SEI). Согласно фиг. 21, синтаксический элемент num_output_layer_sets (804), указывающий номер набора выходных уровней (OLS, output layer set) в кодированной видеопоследовательности со ссылкой на VPS может сигнализироваться в VPS. Для каждого набора выходных уровней, синтаксический элемент outputlayerflag (810) может сигнализироваться столько раз, сколько существует выходных уровней.
[0213] В том же варианте осуществления, синтаксический элемент output_layer_flag (810), равный 1, указывает, что i-й уровень выводится. Синтаксический элемент output_layer_flag (810), равный 0, указывает, что i-й уровень не выводится.
[0214] В том же или другом варианте осуществления, один или более синтаксических элементов, которые указывают информацию уровня/яруса/профиля для каждого набора выходных уровней, могут сигнализироваться в высокоуровневой синтаксической структуре (например, VPS, DPS, SPS, PPS, APS или сообщение SEI). Возвращаясь к фиг. 21, синтаксический элемент num_profile_tier_level (806), указывающий количество информации уровня/ яруса/ профиля для каждого OLS в кодированной видеопоследовательности со ссылкой на VPS, может сигнализироваться в VPS. Для каждого набора выходных уровней, набор синтаксических элементов для информации уровня/яруса/профиля или индекса, указывающего конкретную информацию уровня/яруса/профиля среди элементов в информации уровня/яруса/профиля, может сигнализироваться столько раз, сколько существует выходных уровней.
[0215] В том же варианте осуществления, синтаксический элемент profile_tier_level_idx[i][j] (812) указывает индекс списка синтаксических структур profile_tier_level() (808) в VPS, синтаксической структуры profile_tier_level() (808), которая применяется к j-му уровню i-го OLS.
[0216] Профили, ярусы и уровни (и соответствующая информация о них) могут задавать ограничения для битовых потоков и, таким образом, ограничивать возможности, необходимые для декодирования битовых потоков. Профили, ярусы и уровни (и соответствующая информация о них) также могут использоваться для указания точек возможности взаимодействия между отдельными реализациями декодера. Профиль может быть поднабором всего синтаксиса битового потока, например, стандартного. Каждый профиль (и соответствующая информация о них) может указывать поднабор алгоритмических признаков и пределов, которые могут поддерживаться всеми декодерами, согласующимися с профилем. Ярусы и уровни могут задаваться в каждом профиле, и уровень яруса может быть заданным набором ограничений, налагаемых на значения синтаксических элементов в битовом потоке. Каждый уровень яруса (и соответствующая информация о нем) может указывать набор пределов для значений и/или пределов для арифметических комбинаций значений, которые могут принимать синтаксические элементы. Один и тот же набор определений яруса и уровня может использоваться со всеми профилями, но отдельные реализации могут поддерживать разные ярусы и в пределах яруса разные уровни для разных поддерживаемых профилей. Для любого данного профиля, уровень яруса может соответствовать конкретной нагрузке обработки декодера и возможностям памяти. Уровень, заданный для более низкого яруса, может быть более ограниченным, чем уровень, заданный для более высокого ярус.
[0217] В том же или другом варианте осуществления, согласно фиг. 22, синтаксические элементы num_profile_tier_level (806) и/или num output layer sets (804) могут сигнализироваться, когда количество максимальных уровней больше 1 (vps_max_layers_minus 1>0).
[0218] В том же или другом варианте осуществления, согласно фиг. 22, синтаксический элемент vps_output_layers_mode[i] (822) указывающий режим сигнализации выходного уровня для i-набора выходных уровней, может присутствовать в VPS.
[0219] В том же варианте осуществления, синтаксический элемент vps_output_layers_mode[i] (822), равный 0, указывает, что с i-ым набором выходных уровней выводится только наивысший уровень. Синтаксический элемент vps_output_layers_mode[i] (822), равный 1, указывает, что с i-ым набором выходных уровней выводятся все уровни. Синтаксический элемент vps_output_layers_mode[i] (822), равный 2, указывает, что выводимые уровни являются уровнями с vps_output_layer_flag[i][j] равным 1 с i-ым набором выходных уровней. Дополнительные значения могут быть зарезервированы.
[0220] В том же варианте осуществления, синтаксический элемент output_layer_flag[i][j] (810) может сигнализироваться или не сигнализироваться в зависимости от значения синтаксического элемента vps_output_layers_mode[i] (822) для i-набора выходных уровней.
[0221] В том же или другом варианте осуществления, согласно фиг. 22, флаг vps_ptl_signal_flag[i] (824) может присутствовать для i-набора выходных уровней. В зависимости от значения vps_ptl_signal_flag[i] (824), информация уровня/ яруса/ профиля для i-набора выходных уровней может сигнализироваться или не сигнализироваться.
[0222] В том же или другом варианте осуществления, согласно фиг. 23, количество субизображений, max_subpics_minus1, в текущем CVS может сигнализироваться в высокоуровневой синтаксической структуре (например, VPS, DPS, SPS, PPS, APS или сообщение SEI).
[0223] В том же варианте осуществления, согласно фиг. 23, идентификатор субизображения, sub_pic_id[i] (821), для i-субизображения может сигнализироваться, когда количество субизображений больше 1 (max_subpics_minus1>0).
[0224] В том же или другом варианте осуществления, один или более синтаксических элементов, указывающих идентификатор субизображения, принадлежащего каждому уровню каждого набора выходных уровней, может сигнализироваться в VPS. Согласно фиг. 23, идентификатор sub_pic_id_layer[i][j][k] (826) указывает k-ое субизображение, присутствующее в j-ом уровне i-набора выходных уровней. С использованием информации идентификатора sub_pic_id_layer[i][j][k] (826), декодер может распознавать, какое субизображение может декодироваться и выводиться для каждого уровня конкретного набора выходных уровней.
[0225] Согласно варианту осуществления, заголовок изображения (РН, picture header) является синтаксической структурой, содержащей синтаксические элементы, применимые ко всем слайсам кодированного изображения. Блок изображения (PU, picture unit) является набором блоков NAL, которые связаны друг с другом согласно заданному правилу классификации, следуют друг за другом в порядке декодирования и содержат в точности одно кодированное изображение. PU может содержать заголовок изображения (РН) и один или более блоков NAL уровня видеокодирования (VCL, video coding layer), образующих кодированное изображение.
[0226] Согласно варианту осуществления, SPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным 0 или предоставления внешним средством.
[0227] Согласно варианту осуществления, SPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным 0 в CVS, который содержит один или более PPS со ссылкой на SPS, или предоставления внешним средством.
[0228] Согласно варианту осуществления, SPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более PPS, за счет включения по меньшей мере в один PU с nuhlayerid равным низшему значению nuhlayerid блоков NAL PPS, которые ссылаются на блок NAL SPS в CVS, который содержит один или более PPS со ссылкой на SPS, или предоставления внешним средством.
[0229] Согласно варианту осуществления, SPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более PPS, за счет включения по меньшей мере в один PU с Temporalid равным 0 и nuh_layer_id равным низшему значению nuh_layer_id блоков NAL PPS, которые ссылаются на блок NAL SPS, или предоставления внешним средством.
[0230] Согласно варианту осуществления, SPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более PPS, за счет включения по меньшей мере в один PU с Temporalid равным 0 и nuh_layer_id равным низшему значению nuh_layer_id блоков NAL PPS, которые ссылаются на блок NAL SPS в CVS, который содержит один или более PPS со ссылкой на SPS, или предоставления внешним средством.
[0231] В том же или другом варианте осуществления, идентификатор pps_seq_parameter_set_id указывает значение идентификатора sps_seq_parameter_set_id для опорного SPS. Значение идентификатора pps_seq_parameter_set_id может быть одинаковым во всех PPS, на которые ссылаются кодированные изображения в видеопоследовательности кодированного уровня (CLVS, coded layer video sequence).
[0232] В том же или другом варианте осуществления, все блоки NAL SPS с конкретным значением идентификатора sps_seq_parameter_set_id в CVS могут иметь одинаковое содержимое.
[0233] В том же или другом варианте осуществления, независимо от значений nuh_layer_id, блоки NAL SPS могут совместно использовать одно и то же пространство значений идентификатора sps_seq_parameter_set_id.
[0234] В том же или другом варианте осуществления, значение nuh_layer_id блока NAL SPS может быть равно низшему значению nuh_layer_id блоков NAL PPS, которые ссылаются на блок NAL SPS.
[0235] Согласно варианту осуществления, когда SPS с nuh_layer_id равным m служит опорой для одного или более PPS с nuh_layer_id равным n, уровень с nuh_layer_id равным m может быть идентичным уровню с nuh_layer_id равным n или (прямому или косвенному) опорному уровню уровня с nuh_layer_id равным m.
[0236] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным Temporalid блока NAL PPS или предоставления внешним средством.
[0237] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным Temporalid блока NAL PPS в CVS, который содержит один или более РН (или блоков NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0238] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более РН (или блоком NAL кодированного слайса), за счет включения по меньшей мере в один PU с nuh_layer_id равным низшему значению nuh_layer_id блоков NAL кодированного слайса, которые ссылаются на блок NAL PPS в CVS, который содержит один или более РН (или блок NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0239] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, ем на него будет сделана ссылка одним или более РН (или блоков NAL кодированного слайса), за счет включения по меньшей мере в один PU с Temporalid равным Temporalid блока NAL PPS и nuh layer id равным низшему значению nuh layer id блоков NAL кодированного слайса, которые ссылаются на блок NAL PPS в CVS, который содержит один или более РН (или блок NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0240] В том же или другом варианте осуществления, идентификатор ph_pic_parameter_set_id в РН указывает значение идентификатора pps_pic_parameter_set_id для используемого PPS, служащего опорой. Значение pps_seq_parameter_set_id может быть одинаковым во всех PPS, на которое ссылаются кодированные изображения в CLVS.
[0241] В том же или другом варианте осуществления, все блоки NAL PPS с конкретным значением идентификатора pps_pic_parameter_set_id в PU могут иметь одинаковое содержимое.
[0242] В том же или другом варианте осуществления, независимо от значений nuh_layer_id, блоки NAL PPS могут совместно использовать одно и то же пространство значений идентификатора pps_pic_parameter_set_id.
[0243] В том же или другом варианте осуществления, значение nuh_layer_id блока NAL PPS может быть равно низшему значению nuh_layer_id блоков NAL кодированного слайса, которые ссылаются на блок NAL, который ссылается на блок NAL PPS.
[0244] Согласно варианту осуществления, когда PPS с nuh_layer_id равным т служит опорой для одного или более блоков NAL кодированного слайса с nuh_layer_id равным n, уровень с nuh_layer_id равным m может быть идентичным уровню с nuh_layer_id равным n или (прямому или косвенному) опорному уровню уровня с nuh_layer_id равным т.
[0245] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем станет опорой, за счет включения по меньшей мере в один AU с Temporalid равным Temporalid блока NAL PPS или предоставления внешним средством.
[0246] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным Temporalid блока NAL PPS в CVS, который содержит один или более РН (или блоков NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0247] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более РН (или блоком NAL кодированного слайса), за счет включения по меньшей мере в один PU с nuh_layer_ id равным низшему значению nuh_layer_id блоков NAL кодированного слайса, которые ссылаются на блок NAL PPS в CVS, который содержит один или более РН (или блоков NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0248] Согласно варианту осуществления, PPS (RBSP) может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка одним или более РН (или блоком NAL кодированного слайса), за счет включения по меньшей мере в один PU с Temporalid равным Temporalid блока NAL PPS и nuh_layer_id равным низшему значению nuh layer id блоков NAL кодированного слайса, которые ссылаются на блок NAL PPS в CVS, который содержит один или более РН (или блоков NAL кодированного слайса) со ссылкой на PPS, или предоставления внешним средством.
[0249] В том же или другом варианте осуществления, идентификатор ph_pic_parameter_set_id в РН указывает значение идентификатора pps_pic_parameter_set_id для используемого PPS, служащего опорой. Значение идентификатора pps_seq_parameter_set_id может быть одинаковым во всех PPS, на который ссылаются кодированные изображения в CLVS.
[0250] В том же или другом варианте осуществления, все блоки NAL PPS с конкретным значением pps_pic_parameter_set_id в PU могут иметь одинаковое содержимое.
[0251] В том же или другом варианте осуществления, независимо от значений nuh_layer_id, блоки NAL PPS могут совместно использовать одно и то же пространство значений идентификатора pps_pic_parameter_set_id.
[0252] В том же или другом варианте осуществления, значение nuh_layer_id блока NAL PPS может быть равно низшему значению nuh_layer_id блоков NAL кодированного слайса, которые ссылаются на блок NAL PPS.
[0253] Согласно варианту осуществления, когда PPS с nuh_layer_id равным m служит опорой для одного или более блоков NAL кодированного слайса с nuh_layer_id равным n, уровень с nuh_layer_id равным m может быть идентичным уровню с nuh_layer_id равным n или (прямому или косвенному) опорному уровню уровня с nuh_layer_id равным m.
[0254] Выходной уровень может быть уровнем набора выходных уровней, который выводят. Набор выходных уровней (OLS) может быть заданным набором уровней, где один или более уровней в наборе уровней задаются как выходные уровни. Индекс уровня набора выходных уровней (OLS) являются индексом уровня в OLS в списке уровней в OLS.
[0255] Подуровень может быть уровнем временного масштабирования битового потока временного масштабирования, подуровня, включающего в себя блоки NAL VCL с конкретным значением переменной Temporalid и соответствующих блоков NAL без VCL. Представление подуровней может быть поднабором битового потока, который включает в себя блоки NAL конкретного подуровня и более низких подуровней.
[0256] VPS RBSP может быть доступен процессу декодирования прежде, чем на него будет сделана ссылка, за счет включения по меньшей мере в один AU с Temporalid равным 0 или предоставления внешним средством. Все блоки NAL VPS с конкретным значением vps_video_parameter_set_id в CVS могут иметь одинаковое содержимое.
[0257] Синтаксические элементы иллюстративных VPS RBSP описаны ниже со ссылкой на фиг. 24-25.
[0258] Синтаксический элемент vps_video_parameter_set_id (842) обеспечивает идентификатор VPS, на который должны ссылаться другие синтаксические элементы. Значение синтаксического элемента vps_video_parameter_set_id (842) может быть больше 0.
[0259] Синтаксический элемент vps_max_layers_minus1 (802) плюс 1 указывает максимально допустимое количество уровней в каждой CVS со ссылкой на VPS.
[0260] Синтаксический элемент vps_max_sublayers_minus1 (846) плюс 1 указывает максимальное количество временных подуровней, которые могут присутствовать в уровне в каждой CVS со ссылкой на VPS. Значение синтаксического элемента vps_max_sublayers_minus1 (846) может находиться в диапазоне от 0 до 6, включительно.
[0261] Синтаксический элемент vps_all_layers_same_num_sublayers_flag (848) равный 1, указывает, что количество временных подуровней одинаково для всех уровней в каждой CVS со ссылкой на VPS. Синтаксический элемент vps_all_layers_same_num_sublayers_flag (848) равный 0, указывает, что уровни в каждой CVS со ссылкой на VPS могут иметь или не иметь одинаковое количество временных подуровней. Когда отсутствует, значение vps_all_layers_same_num_sublayers_flag (848) может считаться равным 1.
[0262] Синтаксический элемент vps_all_independent_layers_flag (850) равный 1, указывает, что все уровни в CVS независимо кодируются без использования межуровневого предсказания. Синтаксический элемент vps_all_independent_layers_flag (850) равный 0, указывает, что один или более из уровней в CVS может использовать межуровневое предсказание. Когда отсутствует, значение vps_all_independent_layers_flag (850) может считаться равным 1.
[0263] Синтаксический элемент vps_layer_id[i] (852) указывает значение nuh_layer_id i-уровня. Для любых двух неотрицательных целочисленных значений m и n, когда m меньше n, значение vps_layer_id[m] может быть меньше vps_layer_id[n].
[0264] Синтаксический элемент vps_independent_layer_flag[i] (854) равный 1. указывает, что уровень с индексом i не использует межуровневое предсказание. Синтаксический элемент vps_independent_layer_flag[i] (854) равный 0, указывает, что уровень с индексом i может использовать межуровневое предсказание, и синтаксические элементы vps_direct_ref_layer_flag[i][j] для j в диапазоне от 0 до i 1, включительно, присутствуют в VPS. Когда отсутствует, значение синтаксического элемента vps_independent_layer_flag[i] (854) может считаться равным 1.
[0265] Синтаксический элемент vps_direct_ref_layer_flag[i][j] (856) равный 0, указывает, что уровень с индексом] не является прямым опорным уровнем для уровня с индексом i. Синтаксический элемент vps_direct_ref_layer_flag [i][j] (856) равный 1, указывает, что уровень с индексом j является прямым опорным уровнем для уровня с индексом i. Когда синтаксический элемент vps_direct_ref_layer_flag[i][j] (856) отсутствует для i и j в диапазоне от 0 до vpsmaxlayersminus 1, включительно, этот синтаксический элемент может считаться равным 0. Когда синтаксический элемент vps_independent_layer_flag[i] (854) равен 0, может существовать по меньшей мере одно значение j в диапазоне от 0 до i - 1, включительно, благодаря чему значение синтаксического элемента vps_direct_ref_layer_flag[i][j] (856) равно 1.
[0266] Переменные NumDirectRefLayers[i], DirectRefLayerldx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] можно вывести следующим образом:
for(i=0; i<=vps_max_layers_minus 1; i++) {
for(j=0; j<=vps_max_layers_minus 1; j++) {
dependencyFlag[i][j]=vps_direc_ ref_layer_flag[i][j]
for(k=0; k<i; k++) {
if(vps_direct_ref_layer_flag[i][k] && dependencyFlag[k] [j]) {
dependencyFlagf i][j]=1
} }
}
LayerUsedAsRefLayerFlag[i]=0
}
for(i=0; i<=vps_max_layers_minus 1; i++) {
for(j=0, d=0, r=0; j<=vps_max_layers_minus 1; j++) {
if(vps_direct_ref_layer_flag[i][j]) {
DirectRefLayerIdx[i] [d++]=j
LayerUsedAsRefLayerFlag[j]=1
}
if(dependencyFlagf i][j]) { RefLayerIdx[i][r++]=j
}
}
NumDirectRefLayers [i]=d NumRefLayers[i]=r
}
[0267] Переменную GeneralLayerIdx[i], указывающую индекс уровня для уровня с nuh_layer_id равным vps_layer_id[i] (852), можно вывести следующим образом:
for(i=0; i<=vps_max_layers_minus 1; i++) {
GeneralLayerIdx[vps_layer_id[i]]=i
}
[0268] Для любых двух разных значений i и j, оба в диапазоне от 0 до vps_max_layers_minus1 (846), включительно, когда dependencyFlag[i][j] равен 1, может потребоваться соответствие битового потока, состоящее в том, что значения chroma_format_idc и bit_depth_minus8, которые применяются к i-ому уровню, равны значениям chromaformatidc и bit_depth_minus8, соответственно, которые применяются к j-ому уровню.
[0269] Синтаксический элемент max_tid_ref_present_flag[i] (858) равный 1. указывает присутствие синтаксического элемента max_tid_il_ref_pics_plus1[i] (860). Синтаксический элемент max_tid_ref_present_flag[i] (858) равный 0, указывает отсутствие синтаксического элемента max_tid_il_ref_pics_plus1[i] (860).
[0270] Синтаксический элемент max_tid_il_ref_pics_plus1[i] (860) равный 0, указывает, что межуровневое предсказание не используется изображениями не-IRAP i-го уровня. Синтаксический элемент max_tid_il_ref_pics_plus1 [i] (860) больший 0 указывает, что для декодирования изображений i-уровня, ни одно изображение с Temporalid больше max_tid_il_ref_pics_plus1[i] - 1 не используется в качестве межуровневого опорного изображения (ILRP, inter-layer reference picture). Когда отсутствует, значение синтаксического элемента max_tid_il_ref_pics_plus1[i] (860) может считаться равным 7.
[0271] Синтаксический элемент each_layer_is_an_ols_flag (862) равный 1. указывает, что каждый OLS содержит только один уровень, и каждый уровень в CVS со ссылкой на VPS является OLS с единственным включенным уровнем, который является единственным выходным уровнем. Синтаксический элемент eachlayerisanolsflag (862) равный 0, указывает, что OLS может содержать более одного уровня. Если синтаксический элемент vps_max_layers_minus1 равен 0, значение синтаксического элемента each_layer_is_an_ols_flag (862) может считаться равным 1. В противном случае, когда синтаксический элемент vps_all_independent_layers_flag (854) равен 0, значение синтаксического элемента each_layer_is_an_ols_flag (862) может считаться равным 0.
[0272] Синтаксический элемент ols_mode_idc (864) равный 0, указывает, что суммарное количество OLS, заданное VPS, равно vps_max_layers_minus1+1, i-й OLS включает в себя уровни с индексами уровня от 0 до i, включительно, и для каждого OLS выводится только наивысший уровень в OLS.
[0273] Синтаксический элемент ols mode idc (864) равный 1, указывает, что суммарное количество OLS, заданное VPS, равно vps_max_layers_minus1+1, i-й OLS включает в себя уровни с индексами уровня от 0 до i, включительно, и для каждого OLS выводятся все уровни в OLS.
[0274] Синтаксический элемент ols_mode_idc (864) равный 2, указывает, что суммарное количество OLS, заданное VPS, сигнализируется явно, и для каждого OLS выходные уровни сигнализируются явно, и другие уровни являются уровнями, которые являются прямыми или косвенными опорными уровнями из выходных уровней OLS.
[0275] Значение синтаксического элемента ols_mode_idc (864) может находиться в диапазоне от 0 до 2, включительно. Значение 3 синтаксического элемента ols_mode_idc (864) может резервироваться для использования в будущем в ITU-T | ISO/IEC.
[0276] Когда синтаксический элемент vps all independent layers flag (850) равен 1, и each_layer_is_an_ols_flag (862) равен 0, значение синтаксического элемента ols_mode_idc (864) может считаться равным 2.
[0277] Синтаксический элемент num_output_layer_sets_minus1 (866) плюс 1 указывает суммарное количество OLS, заданное VPS, когда синтаксический элемент olsmodeidc (864) равен 2.
[0278] Переменную TotalNumOlss, указывающую суммарное количество OLS, заданное VPS, можно вывести следующим образом:
if(vps_max_layers minus 1=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
} else {
if(ols_mode_idc=2) {
TotalNumOlss=num_output_layer_sets_minus1+1
}
}
}
[0279] Синтаксический элемент ols_output_layer_flag[i][j] (868) равный 1. указывает, что уровень с nuh_layer_id равным vps_layer_id[j], является выходным уровнем i-OLS, когда ols_mode_idc (864) равен 2. Синтаксический элемент ols_output_layer_flag[i][j] (868) равный 0, указывает, что уровень с nuh_layer_id равным vps_layer_id[j] не является выходным уровнем i-OLS, когда синтаксический элемент ols_mode_idc (864) равен 2.
[0280] Переменную NumOutputLayersInOls[i], указывающую количество выходных уровней в i-ом OLS, переменную NumSubLayersInLayerInOLS[i][j], указывающую количество подуровней в j-ом уровне в i-ом OLS, переменную OutputLayerIdInOls[i][j], указывающих значение nuh_layer_id j-го выходного уровня в i-ом OLS, и переменную LayerUsedAsOutputLayerFlag[k], указывающую, используется ли k-й уровень в качестве выходного уровня по меньшей мере в одном OLS, можно вывести следующим образом:
NumOutputLayersInOls[0]=1
OutputLayerIdInOls[0][0]=vps_layer_id[0]
NumSubLayersInLayerlnOLS[0][0]=vps_max_sub_layers_minus1+1
LayerUsedAsOutputLayerFlag[0]=1
for(i=1, i<=vps_max_layers_minus1; i++) {
if(each_layer_is_an_ols_flag || ols_mode_idc<2) {
LayerUsedAsOutputLayerFlag[i]=1
} else { /*(! each_layer_is_an_ols_flag && ols_mode_idc=2) */
LayerUsedAsOutputLayerFlag[i]=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]
for(j=0; j<i && (ols_mode_idc=0); j++) {
NumSubLayersInLayerInOLS[i][j]=max_tid_il_ref_pics_plus 1 [i]
NumSubLayersInLayerInOLS[i][i]=vps_max_sub_layers_minus1+1
}
} else {
if(ols_mode_idc=1) { NumOutputLayersInO1s[i]=i+1
for(j=0; j<NumOutputLayersInOls[i]; j++) {
OutputLayerIdInO1s[i][j]=vps_layer_id[j]
NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1 }
} else {
if(ols_mode_idc=2) {
for(j=0; j<=vps_max_layers_minus1; j++) {
layerIncludedInO1sFlag[i][j]=0
NumSubLayersInLayerInOLS[i][j]=0
}
for(k=0, j=0; k<=vps max layers minus 1; k++) {
if(ols output layer flag [i][j]=0) {
layerlncludedlnOlsFlag[i][k]=1
LayerUsedAsOutputLayerFlag[k]=1
OutputLayerIdx[i][j]=k
OutputLayerldInO1s[i][j++]=vps_layer_id[k]
NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1 }
NumOutputLayersInOls[i]=j
}
for(j=0; j<NumOutputLayersInOls[i]; j++) {
idx=OutputLayerIdx[i][j] for(k=0; k<NumRefLayers[idx]; k++) {
layerlncludedlnOlsFlag[i][RefLayerIdx[idx][k]]=1
if(NumSubLayersInLayerInOLS[i] [RefLayerIdx[idx][k]]<
max_tid_il_ref_pics_plus1 [OutputLayerldlnOls[i][j]]) {
NumSubLayersInLayerInOLS[i] [RefLayerIdx[idx][k]]=
max_tid_il_ref_pics_plus1 [OutputLayerldInOls[i][j]
}
}
}
}
}
}
}
[0281] Для каждого значения i в диапазоне от 0 до vps_max_layers_minus1. включительно, значения LayerUsedAsRefLayerFlag[i] и LayerUsedAsOutputLayerFlag[i] не могут оба быть равны 0. Другими словами, не может существовать уровня, которой не является ни выходным уровнем по меньшей мере одного OLS, ни прямым опорным уровнем любого другого уровня.
[0282] Для каждого OLS может существовать по меньшей мере один уровень, который является выходным уровнем. Другими словами, для любого значения i в диапазоне от 0 до TotalNumOlss 1 включительно, значение NumOutputLayersInOls[i] может быть больше или равно 1.
[0283] Переменную 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]
} 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_minus 1; k++) {
if(layerIncludedInOlsFlag[i][k]) {
LayerIdInOls[i][j++]=vps_layer_id[k]
NumLayersInOls[i]=j
}
}
}
}
}
}
[0284] Переменную OlsLayerIdx[i][j], указывающую индекс уровня OLS для уровня с nuh_layer_id равным LayerIdInOls[i][j], выводится следующим образом:
for(i=0; i<TotalNumOlss; i++) {
for(j=0; j<NumLayersInOls[i]; j++) {
OlsLayerIdxf[i][LayerIdInOls[i][j]]=j
}
}
[0285] Низшим уровнем в каждом OLS может быть независимый уровень. Другими словами, для каждого i в диапазоне от 0 до TotalNumOlss 1, включительно, значение vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] может быть равно 1. Каждый уровень может быть включен по меньшей мере в один OLS, заданный посредством VPS. Другими словами, для каждого уровня с конкретным значением nuh_layer_id, nuhLayerId, равный одному из vps_layer_id[k] для к в диапазоне от 0 до vps_max_layers_minusl, включительно, может существовать по меньшей мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOlss - 1, включительно, и j находится в диапазоне от NumLayersInOls[i] - 1, включительно, благодаря чему, значение LayerIdInOls[i][j] равно nuhLayerld.
[0286] Согласно варианту осуществления, процесс декодирования может действовать следующим образом для текущего изображения (например, синтаксический элемент CurrPic) для задания синтаксического элемента PictureOutputFlag:
[0287] PictureOutputFlag устанавливается равным 0, если выполняется одно из следующих условий:
(1) текущее изображение является изображением RASL, и NoOutputBeforeRecoveryFlag соответствующего изображения IRAP равен 1;
(2) gdr_enabled_flag равен 1 и текущее изображение является изображением GDR с NoOutputBeforeRecoveryFlag равным 1;
(3) gdr_enabled_flag равен 1, текущее изображение связано с изображением GDR с NoOutputBeforeRecoveryFlag равным 1, и PicOrderCntVal текущего изображения меньше RpPicOrderCntVal соответствующего изображения GDR;
(4) sps_video_parameter_set_id больше 0, ols_mode_idc равен 0, и текущий AU содержит изображение (например, синтаксический элемент picA), которое удовлетворяет всем следующим условиям: (a) PicA имеет PictureOutputFlag равный 1, (b) PicA имеет nuh_layer_id_nuhLid, больший, чем у текущего изображения, (с) PicA принадлежит выходному уровню OLS (т.е. OutputLayerIdInOls[TargetOlsIdx][0] равен nuhLid);
(5) sps_video_parameter_set_id больше 0, ols_mode_idc равен 2, andols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]] равен 0.
[0288] Если ни одно из вышеперечисленных условий не выполняется, синтаксический элемент PictureOutputFlag может быть установлен равным синтаксическому элементу pic_output_flag.
[0289] После декодирования всех слайсов текущего изображения, текущее декодированное изображение может быть помечено как "используемое для кратковременной ссылки", и каждый элемент ILRP в RefPicList[0] или RefPicList[1] может быть помечен как "используемый для кратковременной ссылки".
[0290] В том же или другом варианте осуществления, когда каждый уровень является набором выходных уровней, синтаксический элемент PictureOutputFlag устанавливается равным pic_output_flag, независимо от значения синтаксического элемента ols_mode_idc (864).
[0291] В том же или другом варианте осуществления, синтаксический элемент PictureOutputFlag устанавливается равным 0, когда sps_video_parameter_set_id больше 0, each_layer_is_an_ols_flag (862) равен 0, ols_mode_idc (864) равен 0, и текущий AU содержит изображение picA которое удовлетворяет всем следующим условиям: PicA имеет PictureOutputFlag равный 1, PicA имеет nuh_layer_id_nuhLid, больший, чем у текущего изображения, и PicA принадлежит выходному уровню OLS (т.е. OutputLayerldlnOls[TargetOlsIdx][0] равен nuhLid).
[0292] В том же или другом варианте осуществления, синтаксический элемент PictureOutputFlag устанавливается равным 0, когда sps_video_parameter_set_id больше 0, each_layer_is_an_ols_flag равен 0, ols_mode_idc равен 2, и ols_output_layer_flag[TargetOlsIdx][GeneralLayerIdx[nuh_layer_id]] равен 0.
[0293] Изображение внутренней точки произвольного доступа (IRAP) может быть кодированным изображением для произвольного доступа, которое может быть изображением мгновенного обновления декодирования (IDR), которое поддерживает закрытую группу структур изображения, или изображением чистого произвольного доступа (CRA), которое поддерживает открытую группу структур изображения. Изображение постепенного обновления декодирования (GDR) может быть изображением для постепенного произвольного доступа с частичным обновлением изображения.
[0294] Варианты осуществления настоящего изобретения могут включать в себя синтаксические элементы, которые указывают изображение IRAP или GDR. Например, согласно фиг. 26, может обеспечиваться заголовок (1) изображения. В заголовке (1) изображения может сигнализироваться флаг ph_gdr_or_irap_pic_flag (2). Флаг указывает наличие изображения IRAP или GDR в текущем PU, связанном с заголовком (1) изображения.
[0295] В том же или другом варианте осуществления, флаг ph_no_output_of_prior_pics_flag (3) может сигнализирован только при условии, что ph_gdr_or_irap_pic_flag (2) равен 1, как показано на фиг. 26. Значение ph_no_output_of_prior_pics_flag (3) может использоваться для процесса вывода и удаления изображений из DPB. Значение флага может влиять на вывод ранее декодированных изображений в DPB после декодирования изображений в CVSS AU. который не является первым AU в битовом потоке.
[0296] Существует потенциальная проблема в том, что изображение IRAP может иметь ph_gdr_or_irap_pic_flag равный 0, поскольку ограничение, заданное семантикой ph_gdr_or_irap_pic_flag может быть "односторонним", а именно: флаг ph_gdr_or_irap_pic_flag равный 1, указывает, что текущее изображение является изображением GDR или IRAP. Флаг ph_gdr_or_irap_pic_flag равный 0, указывает, что текущее изображение не является изображением GDR и может быть или не быть изображением IRAP. Когда значение ph_gdr_or_irap_pic_flag изображения IRAP равно 0, значение ph_no_output_of_prior_pics_flag может использоваться для операций DPB, без сигнализации или какого-либо правила логического вывода.
[0297] Для решения потенциальной проблемы, согласно варианту осуществления, ограничения семантики ph_gdr_or_irap_pic_flag (2) может задаваться как "двустороннее", поэтому сигнализация ph_no_output_of_prior_pics_flag (3) может потребоваться, когда текущее изображение является изображением IRAP, а именно: флаг ph_gdr_or_irap_pic_flag (2) равный 1, указывает, что текущее изображение является изображением GDR или IRAP. Флаг ph_gdr_or_irap_pic_flag (2) равный 0, указывает, что текущее изображение не является ни изображением GDR, ни изображением IRAP.
[0298] В том же или другом варианте осуществления, правило логического вывода значения ph_no_output_of_prior_pics_flag (3), когда оно отсутствует, может задаваться следующим образом: флаг ph_no_output_of_prior_pics_flag (3) влияет на вывод ранее декодированных изображений в DPB после декодирования изображений в CVSS AU, который не является первым AU в битовом потоке. Может потребоваться соответствие битового потока, состоящее в том, что, значение ph_no_output_of_prior_pics_flag (3), когда присутствует, должно быть одинаковым для всех изображений в AU.
[0299] Когда ph_no_output_of_prior_pics_flag (3) присутствует в заголовках (1) изображений для изображений в AU, значение ph_no_output_of_prior_pics_flag (3) AU является значением ph_no_output_of_prior_pics_flag (3) изображений в AU. Когда отсутствует, значение ph_no_output_of_prior_pics_flag (3) может считаться равным 0.
[0300] Согласно фиг. 27, разделитель (10) AU может использоваться для указания начала AU, является ли AU IRAP или GDR AU, и типа слайсов, присутствующих в кодированных изображениях в AU, содержащем блок NAL разделителя AU. Когда битовый поток содержит только один уровень, нормативного процесса декодирования, связанного с разделителем (10) AU, может не существовать.
[0301] В разделителе (10) AU, aud_irap_or_gdr_au_flag (12) может указывать наличие IRAP или GDR AU, и может сигнализироваться, как показано на фиг. 27. Флаг aud_irap_or_gdr_au_flag (12) равный 1, может указывать, что AU, содержащий разделитель AU, является IRAP или GDR AU. Флаг aud_irap_or_gdr_au_flag (12) равный 0, может указывать, что AU, содержащий разделитель (10) AU, не является ни IRAP, ни GDR AU.
[0302] В том же или другом варианте осуществления, флаг aud_irap_or_gdr_au_flag (12) IRAP или GDR AU может присутствовать, когда битовый поток имеет множественные уровни, когда sps_video_parameter_set_id больше 0. Технология или стандарт видеокодирования может требовать наличия разделителя AU для многоуровневого битового потока.
[0303] В том же или другом варианте осуществления, со ссылкой на фиг. 26-27, когда aud_irap_or_gdr_au_flag (12) присутствует, и значение aud_irap_or_gdr_au_flag (12) равно 1, может потребоваться, чтобы значение ph_gdr_or_irap_pic_flag (2) было равно 1. Дело в том, что каждый PU может иметь изображение GDR или IRAP, когда aud_irap_or_gdr_au_flag (12) в разделителе (10) AU равен 1.
[0304] В том же или другом варианте осуществления, когда pps_mixed_nalu_types_in_pic_flag равен 1, значение ph_no_output_of_prior_pics_flag может отсутствовать. Когда pps_mixed_nalu_types_in_pic_flag определяется (например, декодером) как присутствующий, значение ph_no_output_of_prior_pics_flag (3) можно игнорировать.
[0305] В том же или другом варианте осуществления, ph_no_output_of_prior_pics_flag (3) может влиять на вывод ранее декодированных изображений в DPB после декодирования изображений в CVSS AU, который не является первым AU в битовом потоке. Когда отсутствует, значение ph_no_output_of_prior_pics_flag (3) может считаться равным 1.
[0306] В том же или другом варианте осуществления, для решения проблемы, состоящей в том, что значение ph_no_output_of_prior_pics_flag (3) используется без правила логического вывода, когда ph_no_output_of_prior_pics_flag (3) отсутствует, и ph_gdr_or_irap_pic_flag (2) равен 1, ph_gdr_or_irap_pic_flag (2) может быть заменен в заголовке (1) изображения на ph_irap_pic_flag (6), как показано на фиг. 28. Флаг ph_irap_pic_flag (6) равный 1, может указывать, что текущее изображение является изображением IRAP. Флаг ph_irap_pic_flag (6) равный 0, может указывать, что текущее изображение не является изображением IRAP.
[0307] В том же или другом варианте осуществления, для решения проблемы, состящей в том, что значение ph_no_output_of_prior_pics_flag (3) используется без правила логического вывода, когда ph_no_output_of_prior_pics_flag (3) отсутствует, и ph_gdr_or_irap_pic_flag (2) равен 1, ph_no_output_of_prior_pics_flag (3) в заголовке (1) изображения может быть заменен на sh_no_output_of_prior_pics_flag (23) в заголовке (20) слайса, как показано на фиг. 29.
[0308] В том же варианте осуществления, sh_no_output_of_prior_pics_flag (23) может присутствовать в заголовке (20) слайса только при условии, что тип блока NAL текущего VCL NAL равен IDR_W_RADL, IDR_N_LP или CRA_NUT. IDR_W_RADL является типом блока NAL, который содержит сегмент кодированного слайса изображения IDR, которое не имеет соответствующих изображений RASL, присутствующих в битовом потоке, но может иметь соответствующие изображения RADL в битовом потоке. IDR_N_LP может быть типом блока NAL, который содержит сегмент кодированного слайса изображения IDR, которое не имеет соответствующих опережающих изображений, присутствующих в битовом потоке. CRA_NUT является типом блока NAL, который содержит сегмент кодированного слайса изображения CRA.
[0309] В том же или другом варианте осуществления, sh_no_output_of_prior_pics_flag (23) может влиять на вывод ранее декодированных изображений в DPB после декодирования изображений в CVSS AU, который не является первым AU в битовом потоке.
[0310] В том же или другом варианте осуществления, может потребоваться соответствие битового потока, состоящее в том, что значение sh_no_output_of_prior_pics_flag (23), когда присутствует, должно быть одинаковым для всех изображений в AU. Когда sh_no_output_of_prior_pics_flag (23) присутствует в заголовках (20) слайсов изображений в AU, значение sh_no_output_of_prior_pics_flag (23) AU может быть равно значению sh_no_output_of_prior_pics_flag (23) изображений в AU.
[0311] В том же или другом варианте осуществления, когда pps_mixed_nalu_types_in_pic_flag в наборе параметров изображения равен 1, значение sh_no_output_of_prior_pics_flag (23) может отсутствовать. Когда присутствует, значение sh_no_output_of_prior_pics_flag (23) можно игнорировать.
[0312] В том же или другом варианте осуществления, aud_irap_au_flag (16) может присутствовать в разделителе (10) AU, как показано на фиг. 30. Флаг aud irap au flag
(16) равный 1, может указывать, что AU, содержащий разделитель (10) AU, является IRAP AU. Флаг audirapauflag (16) равный 0, может указывать, что AU, содержащий разделитель (10) AU, не является IRAP AU.
[0313] В том же варианте осуществления, когда aud_irap_au_flag (16) присутствует, значение ph_irap_pic_flag (6) в заголовке (1) изображения может быть равно aud_irap_au_flag (16) в разделителе (10) AU. Флаг ph_irap_pic_flag (7) равный 1, может указывать, что изображение, связанное с РН (1), является изображением IRAP. Флаг ph_irap_pic_flag (6) равный 0, может указывать, что изображение, связанное с РН (1), не является изображением IRAP.
[0314] В том же или другом варианте осуществления, aud_gdr_au_flag (17) может присутствовать в разделителе (10) AU, как показано на фиг. 30. Флаг aud_gdr_au_flag
(17) равный 1, может указывать, что AU, содержащий разделитель (10) AU, является GDR AU. Флаг aud_irap_au_flag (17) равный 0, может указывать, что AU, содержащий разделитель (10) AU не является GDR AU.
[0315] В том же варианте осуществления, когда aud_gdr_au_flag (17) в разделителе (10) AU присутствует, значение ph_gdr_pic_flag (7) в заголовке (1) изображения может быть равно aud_gdr_au_flag (17) в разделителе (10) AU. Флаг ph_gdr_pic_flag (7) равный 1, может указывать, что изображение, связанное с РН (1), является изображением GDR. Флаг ph_gdr_pic_flag (7) равный 0, может указывать, что изображение, связанное с РН (1), не является изображением GDR.
[0316] Постепенное обновление декодирования (GDR) может задаваться следующими определениями:
GDR AU: AU, в котором существует PU для каждого уровня, заданный посредством VPS, и кодированное изображение в каждом присутствующем PU является изображением GDR.
GDR PU: PU, в котором кодированное изображение является изображением GDR.
Изображение GDR: изображение, для которого каждый блок NAL VCL имеет nal_unit_type, равный GDR_NUT.
Субизображение GDR: субизображение, для которого каждый блок NAL VCL имеет nal unit type, равный GDR NUT.
GDR_NUT: тип блока NAL, который включает в себя группу кодированных тайлов изображения GDR.
[0317] Согласно вариантам осуществления, первое изображение в битовом потоке в порядке декодирования может быть изображением IRAP или GDR. Последующие изображения (trailing pictures), связанные с изображением IRAP или GDR, также могут следовать за изображением IRAP или GDR в порядке декодирования. Изображения, которые следуют за соответствующим изображением IRAP в порядке вывода и предшествуют соответствующему изображению IRAP в порядке декодирования, могут быть не разрешены.
[0318] Согласно варианту осуществления, согласно фиг. 31, синтаксические элементы, указывающие GDR, сигнализируются в РН (1), например ph_gdr_pic_flag (7). Когда отсутствует, значение ph_gdr_pic_flag (7) может считаться равным 0. Когда sps_gdr_enabled_flag равен 0, значение ph_gdr_pic_flag (7) может считаться равным 0. Синтаксический элемент ph_recovery_poc_cnt (32) может указывать точку восстановления декодированных изображений в порядке вывода.
[0319] Когда текущее изображение является изображением GDR, переменную recoveryPointPocVal можно вывести следующим образом: recoveryPointPocVal=PicOrderCntVal+ph_recovery_poc_cnt
[0320] В том же или другом варианте осуществления, как показано на фиг 31. ph_recovery_poc_cnt (34) сигнализируется после сигнализации синтаксических элементов порядкового номера изображения (РОС) (например ph_pic_order_cnt_lsb (32) и ph_poc_msb_cycle_val (36)), поскольку PicOrderCntVal, который используется для вывода recoveryPointPocVal, выводится из значений ph_pic_order_cnt_lsb (32) и ph_poc_msb_cycle_val (36).
[0321] Если текущее изображение является изображением GDR, и существует изображение picA, которое следует за текущим изображением GDR в порядке декодирования в CLVS, которое имеет PicOrderCntVal, равный recoveryPointPocVal, изображение picA может именоваться изображением точки восстановления. В противном случае, первое изображение в порядке вывода, которое имеет PicOrderCntVal, большее recoveryPointPocVal в CLVS, может именоваться изображением точки восстановления. Изображение точки восстановления не может предшествовать текущему изображению GDR в порядке декодирования. Изображения, которые связаны с текущим изображением GDR и имеют PicOrderCntVal, меньшее recoveryPointPocVal, могут именоваться изображениями восстановления изображения GDR. Значение ph_recovery_poc_cnt (34) может находиться в диапазоне от 0 до MaxPicOrderCntLsb - 1. включительно.
[0322] В том же или другом варианте осуществления, изображение точки восстановления не может предшествовать текущему изображению GDR в порядке как декодирования, так и вывода.
[0323] В том же или другом варианте осуществления, изображение восстановления не может предшествовать текущему изображению GDR в порядке как декодирования, так и вывода.
[0324] В том же или другом варианте осуществления, изображение восстановления может предшествовать соответствующему изображению точки восстановления в порядке как декодирования, так и вывода.
[0325] В том же или другом варианте осуществления, когда текущее изображение является изображением GDR или изображением восстановления изображения GDR, и текущее изображение содержит не выровненную с СТО границу между "обновленной областью" (т.е. областью, которая имеет точное совпадение значений декодированных отсчетов в начале процесса декодирования из изображения GDR по сравнению с началом процесса декодирования из предыдущего изображения IRAP в порядке декодирования, когда присутствует) и "грязной областью" (т.е. областью, которая может не иметь точное совпадение значений декодированных отсчетов в начале процесса декодирования из изображения GDR по сравнению с началом процесса декодирования из предыдущего изображения IRAP в порядке декодирования, когда присутствует), масштабирование остатка цветности отображения яркости с масштабированием цветности (LMCS) может быть запрещено в текущем изображении, чтобы "грязная область" не влияла назначения декодированных отсчетов "обновленной области".
[0326] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А может быть больше или равно recoveryPointPocVal опорного уровня для уровня А.
[0327] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А с layerid равным m может быть больше или равно recoveryPointPocVal другого уровня В с layerid равным n, где m больше n.
[0328] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А с layerid равным т может быть больше или равно recoveryPointPocVal другого уровня В с layerid равным n, где m больше n, и уровни А и В принадлежат одному и тому же набору выходных уровней.
[0329] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А может быть равно recoveryPointPocVal опорного уровня для уровня А.
[0330] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А с layerid равным m может быть равно recoveryPointPocVal другого уровня В с layerid равным n, где m больше n.
[0331] В том же или другом варианте осуществления, значение recoveryPointPocVal уровня А с layerid равным m может быть равно recoveryPointPocVal другого уровня В с layerid равным n, где m больше n, и уровни А и В принадлежат одному и тому же набору выходных уровней.
[0332] В том же или другом варианте осуществления, когда pps_mixed_nalu_types_in_pic_flag равен 1, может применяться следующее:
(1) Изображение должно иметь по меньшей мере два субизображения.
(2) Блоки NAL VCL изображения должны иметь два или более разных значения nal_unit_type.
(3) Не должно существовать блока NAL VCL изображения, который имеет nal_unit_type, равный GDR NUT.
(4) Изображение не должно быть восстановлением или изображением восстановления, связанным с изображением GDR.
(5) Когда блоки NAL VCL по меньшей мере одного субизображения изображения имеют конкретное значение nal_unit_type равное IDR_W RADL, IDR_N_LP или CRA_NUT, все блоки NAL VCL других субизображений в изображении должны иметь nal_unit_type равный TRAIL_NUT.
[0333] TRAIL NUT является типом блока NAL, который содержит кодированную группу тайлов последующего изображения не-STSA VCL.
[0334] В начале процесса декодирования для каждого слайса изображения, процесс декодирования для построения списков опорных изображений может вызываться для полученияа списка опорных изображений 0 (RefPicList[0]) и списка опорных изображений 1 (RefPicList[1]). После построения одного или более списков опорных изображений, может вызываться процесс декодирования для маркировки опорного изображения, где опорные изображения могут маркироваться как "не используемые для ссылки", "используемые для кратковременной ссылки" или "используемые для долговременной ссылки".
[0335] Согласно фиг. 32, согласно вариантам осуществления, процесс (40) декодирования может осуществляться декодером. В процессе (40) декодирования может строиться (42) один или более списков (RPL) опорных изображений. Когда один или более списков опорных изображений построены, одно или более изображений могут быть недоступны вследствие произвольного доступа или непреднамеренной потери изображения. Декодер может определять, доступно ли опорное изображение из RPL в DPB (44). Если определено, что опорное изображение недоступно, недоступные опорные изображения могут маркироваться как "отсутствие опорного изображения". Во избежание любого отказа или непредусмотренного поведения декодера, недоступные опорные изображения могут мгновенно генерироваться с принятыми по умолчанию значениями пикселей и параметров (46). После генерации недоступных опорных изображений (и/или определения доступности опорных изображений), декодер может проверять действительность всех опорных изображений, включая генерированные изображения, в списке (48) опорных изображений.
[0336] В том же или другом варианте осуществления, один или более списков опорных изображений строятся (42) путем анализа синтаксических элементов RPL в SPS, РН и/или SH. После построения (42) одно или более опорных изображений в списке RPL могут не быть доступны, поскольку пропускаемые опережающие изображения произвольного доступа (RASL, random access skipped leading picture), связанные с изображением CRA, могут отбрасываться декодером или системой, или не могут успешно декодироваться, когда произвольный доступ происходит на изображении CRA. Недоступные опорные изображения могут генерироваться с принятыми по умолчанию значениями пикселей и параметров (46).
[0337] В том же или другом варианте осуществления, когда текущее изображение является изображением IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1, изображением CRA с NoOutputBeforeRecoveryFlag равным 1, или изображением GDR с NoOutputBeforeRecoveryFlag равным 1, вызывают по меньшей мере один из следующих процессов декодирования для генерации недоступных опорных изображений (46), который может потребоваться вызывать только для первого слайса изображения.
[0338] А. Общий процесс декодирования для генерации недоступных опорных изображений
[0339] Этот процесс может вызываться по одному разу для каждого кодированного изображения, когда текущее изображение является изображением IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph flag равным 1, изображением CRA с NoOutputBeforeRecoveryFlag равным 1, или изображением GDR с NoOutputBeforeRecoveryFlag равным 1. При вызове этого процесса, может применяться следующее: для каждого RefPicList[i][j], с i в диапазоне от 0 до 1 включительно, и j в диапазоне от 0 до num_ref_entries[i][RplsIdx[i]] - 1, включительно, который равен "отсутствие опорного изображения", изображение генерируется как описано ниже в "генерации одного недоступного изображения", и применяется следующее:
(1) значение nuh_layer_id для генерированного изображения устанавливается равным nuh_layer_id текущего изображения;
(2) если st_ref_pic_flag[i][RplsIdx[i]][j] равен 1, и inter_layer_ref_pic_flag[i][RplsIdx[i]][j] равен 0, значение PicOrderCntVal для генерированного изображения устанавливается равным RefPicPocList[i][j] и генерированное изображение помечается как "используемое для кратковременной ссылки";
(3) в противном случае, когда st_ref_pic_flag[i][RplsIdx[i]][j] равен 0, и inter_layer_ref_pic_flag[i][RplsIdx[i]][j] равен 0, значение PicOrderCntVal для генерированного изображения устанавливается равным RefPicLtPocList[i][j], значение ph_pic_order_cnt_lsb для генерированного изображения становится равным (RefPicLtPocList[i][j] & (MaxPicOrderCntLsb - 1)), и генерированное изображение помечается как "используемое для долговременной ссылки";
(4) значение PictureOutputFlag для генерированного опорного изображения устанавливается равным 0;
(5) RefPicList[i][j] задается как генерированное опорное изображение;
(6) значение Temporalid для генерированного изображения устанавливается равным Temporalid текущего изображения;
(7) значение ph_non_ref_pic flag для генерированного изображения устанавливается равным 0;
(8) значение ph_pic_parameter_set_id для генерированного изображения устанавливается равным ph_pic_parameter_set_id текущего изображения;
[0340] флаг ph_non_ref_pic_flag равный 1, может указывать, что изображение, связанное с РН, никогда не используется как опорное изображение. Флаг ph_non_ref_pic_flag равный 0, может указывать изображение, связанное с РН, может использоваться или не использоваться как опорное изображение.
[0341] В. Генерация одного недоступного изображения
[0342] При вызове этого процесса, недоступное изображение генерируется следующим образом:
L
(1) значение каждого элемента в массиве S отсчетов для изображения устанавливается равным 1<<(BitDepth - 1);
Cb
Cr
(2) когда sps_hroma_format_idc не равен 0, значение каждого элемента в массивах S и S отсчетов для изображения устанавливается равным 1<<(BitDepth 1);
(3) режим предсказания CuPredMode[0][х][у] устанавливается равным MODE_INTRA для х в пределах от 0 до pps_pic_width_in_luma_samples - 1, включительно, и у в пределах от 0 до pps_pic_height_in_luma_samples - 1, включительно;
[0343] в том же или другом варианте осуществления, после генерации недоступного опорного изображения из списка RPL, проверка соответствия битового потока для всех или активных опорных изображений в списке RPL может вызываться, например, декодером. Например, декодер может проверять, что для соответствия битового потока соблюдаются следующие ограничения:
(1) для каждого i равного 0 или 1, num_ref_entries[i][RplsIdx[i]] должен быть не меньше NumRefIdxActive [i];
(2) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1], должно присутствовать в DPB и должно иметь TemporalId меньший или равный TemporalId текущего изображения;
(3) изображение, на которое ссылается каждый элемент в RefPicList[0] или RefPicList[1], не должно быть текущим изображение и должно иметь ph_non_ref_pic_flag равный 0;
(4) элемент кратковременного опорного изображения (STRP, short term reference picture) в RefPicList[0] или RefPicList[1] слайса изображения и элемент долговременного опорного изображения (LTRP, longer term reference picture) в RefPicList[0] или RefPicList[1] одного и того же слайса или разных слайсов одного и того же изображения не должны ссылаться на одно и то же изображение;
24
(5) в RefPicList[0] или RefPicList[1] не должно быть элемента LTRP, для которого разность между PicOrderCntVal текущего изображения и PicOrderCntVal изображения, на которое ссылается элемент, больше или равна 2;
(6) пусть setOfRefPics - набор уникальных изображений, на которые ссылаются все элементы в RefPicList[0], которые имеют такой же nuh layer id, как текущее изображение, и все элементы в RefPicList[1], которые имеют такой же nuh layer id, как текущее изображение. Количество изображений в setOfRefPics должно быть меньше или равно MaxDpbSize 1, включительно, где MaxDpbSize одинаково, и setOfRefPics должно быть одинаковым для всех слайсов изображения.
(7) Когда текущий слайс имеет nal_unit_type равный STS_A NUT, в RefPicList[0] или RefPicList[1] не должно быть активного элемента, который имеет такой же Temporalid, как у текущего изображения, и такой же nuh layer id, как у текущего изображения.
(8) Когда текущее изображение является изображением, которое следует, в порядке декодирования, за изображением поэтапного доступа к временному подуровню (STSA, step-wise temporal sub-layer access), которое имеет такой же TemporalId, как у текущего изображения, и такой же nuh_layer_id, как у текущего изображения, не должно быть изображения, которое предшествует изображению STSA в порядке декодирования, имеет такой же TemporalId, как у текущего изображения, и имеет такой же nuh_layer_id, как у текущего изображения, включенного в качестве активного элемента в RefPicList[0] или RefPicList[1].
(9) Когда текущее субизображение с Temporalid, равным конкретному значению tId, nuh_layer_id равным конкретному значению layerid, и индексом субизображения равным конкретному значению subpicldx, является субизображением, которое следует, в порядке декодирования, за субизображением STSA с Temporalid равным tId, nuh_layer_id равным layerId, и индексом субизображения равным subpicldx, не должно быть изображения с Temporalid равным tId и nuh_layer_id равным layerId, которое предшествует изображению, содержащему субизображение STSA в порядке    декодирования, включенное в качестве активного элемента в RefPicList[0] или RefPicList[1].
(10) Когда текущее изображение, с nuh layer id равным конкретному значению layerid, является изображением IRAP, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует, в порядке вывода или порядке декодирования, любому предыдущему изображению IRAP с nuh_layer_id равным layerId в порядке декодирования (когда присутствуют).
(11) Когда текущее субизображение, с nuh_layer_id равным конкретному значению layerid и индексом субизображения равным конкретному значению subpicldx, является субизображением IRAP, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует, в порядке вывода или порядке декодирования, любому предыдущему изображению, в порядке декодирования (когда присутствует), содержащему субизображение IRAP с nuh_layer_id равным layerId и индексом субизображения равным subpicIdx.
(12) Когда текущее изображение не является изображением RASL, связанным с изображением CRA с NoOutputBeforeRecoveryFlag равным 1, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения CRA, связанного с текущим изображением.
(13) Когда текущее субизображение не является субизображением RASL, связанным с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения CRA, содержащего субизображение CRA, связанное с текущим субизображением.
(14) Когда текущее изображение, с nuh layer id равным конкретному значению layerid, не является ни одним из следующих, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP или GDR, связанного с текущим изображением:
(a) изображения IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1;
(b) изображения CRA с NoOutputBeforeRecoveryFlag равным 1;
(c) изображения, связанного с изображением CRA с NoOutputBeforeRecoveryFlag равным 1, которое предшествует, в порядке декодирования, опережающим изображениям, связанным с одним и тем же изображением CRA;
(d) опережающего изображения, связанного с изображением CRA с NoOutputBeforeRecoveryFlag равным 1;
(e) изображения GDR с NoOutputBeforeRecoveryFlag равным 1;
(f) изображения восстановления изображения GDR с NoOutputBeforeRecoveryFlag равным 1 и nuh_layer_id равным layerId;
(15) когда текущее субизображение, с nuh_layer_id равным конкретному значению layerId и индексом субизображения равным конкретному значению subpicldx, не является ни одним из следующих, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP или GDR, содержащего субизображение IRAP или GDR, связанное с текущим субизображением:
(a) субизображение IDR в изображении IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1;
(b) субизображение CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1;
(c) субизображение, связанное с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1, которое предшествует, в порядке декодирования, опережающим изображениям, связанным с тем же изображением CRA;
(d) опережающее субизображение, связанное с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1;
(e) субизображение GDR в изображении GDR с NoOutputBeforeRecoveryFlag равным 1;
(f) субизображение в изображении восстановления изображения GDR с NoOutputBeforeRecoveryFlag равным 1 и nuh_layer_id равным layerid;
(16) когда текущее изображение следует за изображением IRAP, имеющим одинаковое значение nuh_layer_id как в порядке декодирования, так и в порядке вывода, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое предшествует этому изображению IRAP в порядке вывода или порядке декодирования;
(17) когда текущее субизображение следует за субизображением IRAP, имеющим одинаковое значение nuh layer id и одинаковое значение индекса субизображения в порядке как декодирования, так и вывода, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое предшествует изображению, содержащему это субизображение IRAP в порядке вывода или порядке декодирования;
(18) когда текущее изображение следует за изображением IRAP, имеющим одинаковое значение nuh_layer_id и опережающие изображения, при наличии, связанные с этим изображением IRAP, как в порядке декодирования, так и в порядке вывода, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует этому изображению IRAP в порядке вывода или порядке декодирования;
(19) когда текущее субизображение следует за субизображением IRAP, имеющим одинаковое значение nuh_layer_id и одинаковое значение индекса субизображения, и опережающими субизображениями, при наличии, связанными с этим субизображением IRAP в порядке как декодирования, так и вывода, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует изображению, содержащему это субизображение IRAP в порядке вывода или порядке декодирования;
(20) когда текущее изображение является декодируемым опережающим изображением произвольного доступна (RADL), не должно быть активных элементов в RefPicList[0] или RefPicList[1], который является любым из следующих:
(a) изображение RASL с pps_mixed_nalu_types_in_pic_flag равным 0. Это означает, что активный элемент из RPL изображения RADL может ссылаться на изображению RASL с pps_mixed_nalu_types_in_pic_flag равным 1. Однако, когда декодирование начинается с соответствующего изображения CRA, такое изображение RADL все же можно правильно декодировать, поскольку субизображение(я) RADL в этом опорном изображении RASL будет правильно декодироваться, когда изображение RADL будет ссылаться только на субизображения RADL в опорном изображении RASL, как предписано следующим ограничением, которое запрещает субизображения RADL со ссылкой на субизображение RASL.
(b) изображение, которое предшествует соответствующему изображению IRAP в порядке декодирования;
(21) когда текущее субизображение, с nuh_layer_id равным конкретному значению layerId и индексом субизображения равным конкретному значению subpicldx, является субизображением RADL, не должно быть активных элементов в RefPicList[0] или RefPicList[1], который является любым из следующих:
(a) изображения с nuh_layer_id равным layerid, содержащего субизображение RASL с индексом субизображения равным subpicldx;
(b) изображения, которое предшествует изображению, содержащему соответствующее субизображение IRAP в порядке декодирования;
(22) для изображения, на которое ссылается каждый элемент ILRP, когда присутствует, в RefPicList[0] или RefPicList[1] слайса текущего изображения применяют следующие ограничения:
(a) изображение должно находиться в том же AU, что и текущее изображение;
(b) изображение должно присутствовать в DPB;
(c) изображение должно иметь nuh_layer_id refPicLayerId меньший, чем nuh_layer_id текущего изображения;
(d) применяется любое из следующих ограничений: изображение должно быть изображением IRAP; или изображение должно иметь Temporalid меньший или равный Мах(0, vps_max_tid_il_ref_pics_plus1[currLayerIdx][refLayerIdx] - 1), где currLayerIdx и refLayerIdx равны GeneralLayerIdx[nuh_layer_id] и GeneralLayerIdx[refpicLayerId], соответственно;
(23) каждый элемент ILRP, когда присутствует в RefPicList[0] или RefPicList[1] слайса, должен быть активным элементом;
(24) когда vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равен 0, и sps_num_subpics_minus1 больше 0, должно выполняться любое из следующих двух условий (но не оба):
(а) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1] имеет такую же компоновку субизображений, как текущее изображение (т.е. SPS, на которые ссылаются это изображение и текущее изображение, имеют одинаковое значение spsnumsubpicsminusl и одинаковые значения sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], и sps_subpic_height_minus1[j], соответственно, для каждого значения] в диапазоне от 0 до sps_num_subpics_minus1, включительно);
(b) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1], является ILRP, для которого значение sps_num_subpics_minus1 равно 0.
[0344] С.Процесс декодирования для маркировки опорного изображения
[0345] В том же или другом варианте осуществления, когда опорные изображения маркированы, может вызываться следующий процесс декодирования.
[0346] Процесс может вызываться по одному для каждого изображения, после декодирования заголовка слайса и процесса декодирования для построения списка опорных изображений для слайса, но до декодирования данных слайса. Этот процесс может приводить к тому, что одно или более опорных изображений в DPB помечаются как "не используемые для ссылки" или "используемые для долговременной ссылки".
[0347] Декодированное изображение в DPB может помечаться как "не используемое для ссылки", "используемое для кратковременной ссылки" или "используемое для долговременной ссылки", но только одним из этих трех способов в любой данный момент в ходе процесса декодирования. Назначение изображению одной из этих маркировок может неявно удалять другую из этих маркировок, когда это применимо. Когда изображение помечено как "используемое для ссылки", это совместно означает, что изображение помечено как "используемое для кратковременной ссылки" или "используемое для долговременной ссылки" (но не и то, и другое).
[0348] STRP и ILRP можно идентифицировать по их значениям nuh_layer_id и PicOrderCntVal. LTRP можно идентифицировать по их значениям nuh_layer_id и Log2(MaxLtPicOrderCntLsb) LSB их значений PicOrderCntVal.
[0349] Если текущее изображение является изображением CLVSS, все опорные изображения, в данный момент находящиеся в DPB (при наличии), с тем же nuh_layer_id, что и у текущего изображения, могут быть помечены как "не используемые для ссылки".
[0350] В противном случае, может применяться следующее:
(1) для каждого элемента LTRP в RefPicList[0] или RefPicList[1], когда изображение является LTRP с тем же nuh_layer_id, что и у текущего изображения, изображение помечается как "используемое для долговременной ссылки";
(2) каждое опорное изображение с тем же nuh_layer_id, что и у текущего изображения в DPB, на которое не ссылается ни один элемент в RefPicList[0] или RefPicList[1], помечается как "не используемое для ссылки";
(3) для каждого элемента ILRP в RefPicList[0] или RefPicList[1], изображение помечается как "используемое для долговременной ссылки";
[0351] в том же или другом варианте осуществления, для каждого элемента LTRP в RefPicList[0] или RefPicList[1], когда изображение с тем же nuh_layer_id, что и у текущего изображения, помечено как "используемое для кратковременной ссылки", изображение помечается как "используемое для долговременной ссылки".
[0352] В том же или другом варианте осуществления, при построении одного или более списков RPL, может применяться следующее:
для каждого элемента RefPicList[i][j], с i в диапазоне от 0 до 1 включительно, и j в диапазоне от 0 до num_ref_entries[i][RplsIdx[i]] - 1, включительно, который равен "отсутствие опорного изображения", генерируется изображение.
[0353] В том же или другом варианте осуществления, при построении одного или более списков RPL, может применяться следующее:
для каждого RefPicList[i][j], с i в диапазоне от 0 до 1 включительно, и j в диапазоне от 0 до NumRefIdxActive[i] 1, включительно, который равен "отсутствию опорного изображения", генерируется изображение.
[0354] В процессе декодирования для построения списка опорных изображений, пропущенные опорные изображения в DPB могут устанавливаться как "отсутствие опорного изображения". Недоступные изображения, равные "отсутствию опорного изображения", генерируются в процессе декодирования для генерации недоступных опорных изображений в целях проверки соответствия. Проблема состоит в том, что не только недоступные опорные изображения в одном и том же уровне, но и недоступные межуровневые опорные изображения в опорном уровне устанавливаются как "отсутствие опорного изображения", нижеследующим образом:
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]=" отсутствие опорного изображения"
pocBase=RefPicPocList[i][j]
} else {
if(!delta_poc_msb_cycle_present_flag[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[General LayerIdx [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]="отсутствие опорного изображения"
}
}
[0355] Однако в процессе декодирования для генерации недоступных опорных изображений, все недоступные изображения, равные "отсутствию опорного изображения", могут обрабатываться как опорные изображения в одном и том же уровне, поэтому nuh_layer_id и значения PicOrderCntVal недоступных межуровневых опорных изображений устанавливаются на неверные значения. Также недоступные межуровневые опорные изображения неверно помечаются как "используемые для долговременной ссылки". Эти неверные значения приводят к ошибкам в процессе декодирования следующих изображений и проверки соответствия битового потока. Таким образом, согласно вариантам осуществления, недоступные межуровневые опорные изображения, являющиеся "отсутствием опорного изображения", должны правильно генерироваться следующим образом:
[0356] D. Улучшенный процесс декодирования для генерации недоступных опорных изображений
[0357] Этот процесс вызывается по одному разу для каждого кодированного изображения, когда текущее изображение является изображением IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1, изображением CRA с NoOutputBeforeRecoveryFlag равным 1, или изображением GDR с NoOutputBeforeRecoveryFlag равным 1.
[0358] При вызове этого процесса, для каждого RefPicList[i][j], с i в диапазоне от 0 до 1 включительно, и j в диапазоне от 0 до num_ref_entries[i][RplsIdx[i]] - 1, включительно, который равен "отсутствию опорного изображения", изображение может генерироваться, как описано ранее в настоящей заявке, и может применяться следующее:
(1) Если inter_layer_ref_pic_flag[i][RplsIdx[i]][j]] равен 0, значение nuh_layer_id для генерированного изображения устанавливается равным nuh_layer_id текущего изображения.
(2) В противном случае (inter_layer_ref_pic_flag[i][RplsIdx[i]][j]] равен 1), значение nuh layer id для генерированного изображения устанавливается равным vps_layer_id[DirectRefLayerIdx[GeneralLayerIdx[nuh_layer_id]][ilrp_idx[i][RplsIdx][j]]]
(3) Если st_ref_pic_flag[i][RplsIdx[i]][j]] равен 1, и inter_layer_ref_pic_flag[i][RplsIdx[i]][j] равен 0, значение PicOrderCntVal для генерированного изображения устанавливается равным RefPicPocList[i][j] и генерированное изображение помечается как "используемое для кратковременной ссылки ".
(4) Если st_ref_pic_flag[i][RplsIdx[i]][j]] равен 0, и inter_layer_ref_pic_flag[i][RplsIdx[i]][j] равен 0, значение PicOrderCntVal для генерированного изображения устанавливается равным RefPicLtPocList[i][j], значение ph_pic_order_cnt_lsb для генерированного изображения становится равным (RefPicLtPocList[i][j] & (MaxPicOrderCntLsb - 1)), и генерированное изображение помечается как "используемое для долговременной ссылки".
(5) В противном случае, если inter_layer_ref_pic_flag[i][RplsIdx[i]][j]] равен 1. значение PicOrderCntVal для генерированного изображения устанавливается равным PicOrderCntVal текущего изображения, значение ph_pic_order_cnt_lsb для генерированного изображения становится равным ph_pic_order_cnt_lsb текущего изображения и генерированное изображение помечается как "используемое для долговременной ссылки".
(6) Значение PictureOutputFlag для генерированного опорного изображения устанавливается равным 0.
(7) RefPicList[i][j] задается как генерированное опорное изображение.
(8) Значение Temporalid для генерированного изображения устанавливается равным Temporalid текущего изображения.
(9) Значение ph_non_ref_pic_flag для генерированного изображения устанавливается равным 0.
(10) Значение ph_pic_prameter_set_id для генерированного изображения устанавливается равным ph_pic_parameter_set_id текущего изображения.
[0359] В процессе декодирования для вышеописанной маркировки опорного изображения, для пояснения процесса маркировка, следующее утверждение модифицируется: для каждого элемента LTRP в RefPicList[0] или RefPicList[1], когда изображение является STRP с тем же nuh_layer_id, что и у текущего изображения, изображение помечается как "используемое для долговременной ссылки".
[0360] В качестве первого варианта, исходное утверждение изменяется следующим образом: для каждого элемента LTRP в RefPicList[0] или RefPicList[1]. когда изображение в данный момент помечено как "используемое для кратковременной ссылки" с тем же nuh_layer_id, что и у текущего изображения, изображение помечается как "используемое для долговременной ссылки".
[0361] В качестве второго варианта, исходное утверждение изменяется следующим образом: для каждого элемента LTRP в RefPicList[0] или RefPicList[1], когда изображение является LTRP с тем же nuh_layer_id, что и у текущего изображения, изображение помечается как "используемое для долговременной ссылки".
[0362] Смысл исходного утверждения несколько неясен, поскольку оно говорит, что STRP помечают как "используемое для долговременной ссылки". Если первоначальная идея утверждения состоит в том, чтобы помечать изображение LTRP текущего изображения в RefPicList[0] или RefPicList[1] как "используемое для долговременной ссылки", когда LTRP в данный момент помечено как "используемое для кратковременной ссылки", может использоваться вариант 1. В противном случае может использоваться вариант 2.
[0363] Е. Улучшенный процесс декодирования для построения списков опорных изображений
[0364] В HEVC списки опорных изображений строятся после генерации недоступных опорных изображений из RPS. В VVC (текущий проект), списки опорных изображений строятся до генерации недоступных опорных изображений из RPS. Если проверка соответствия битового потока осуществляется до генерации недоступных опорных изображений, как указано ранее, битовый поток может не подчиняться указанным ограничениям. Для прояснения порядка, процесс декодирования можно модифицировать следующим образом, чтобы иметь следующие ограничения для соответствия битового потока:
(1) для каждого i равного 0 или 1, num ref entries[i][RplsIdx[i]] должен быть не меньше NumRefIdxActive [i];
(2) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1], должно присутствовать в DPB и должно иметь Temporalid, меньший или равный Temporalid текущего изображения;
(3) изображение, на которое ссылается каждый элемент в RefPicList[0] или RefPicList[1], не должно быть текущим изображением и должно иметь ph_non_ref_pic_flag равный 0;
(4) элемент STRP в RefPicList[0] или RefPicList[1] слайса изображения и элемент LTRP в RefPicList[0] или RefPicList[1] одного и того же слайса или разных слайсов одного и того же изображения не должны ссылаться на одно и то же изображение;
24
(5) в RefPicList[0] или RefPicList[1] не должно быть элемента LTRP, для которого разность между PicOrderCntVal текущего изображения и PicOrderCntVal изображения, на которое ссылается элемент, больше или равна 2;
(6) пусть setOfRefPics - набор уникальных изображений, на которые ссылаются все элементы в RefPicList[0], которые имеют такой же nuh_layer_d, как текущее изображение, и все элементы в RefPicList[1], которые имеют такой же nuh_layer_id, как текущее изображение. Количество изображений в setOfRefPics должно быть меньше или равно MaxDpbSize - 1, включительно, где MaxDpbSize, и setOfRefPics должно быть одинаковым для всех слайсов изображения.
(7) Когда текущий слайс имеет nal unit type равный STS A NUT, в RefPicList[0] или RefPicList[1] не должно быть активного элемента, который имеет такой же Temporalid, как у текущего изображения, и такой же nuh_layer_id, как у текущего изображения.
(8) Когда текущее изображение является изображением, которое следует, в порядке декодирования, за изображением STSA который имеет такой же Temporalid, как у текущего изображения, и такой же nuh_layer_id, как у текущего изображения, не должно быть изображения, которое предшествует изображению STSA в порядке декодирования, имеет такой же Temporalid, как у текущего изображения, и имеет такой же nuh layer id, как у текущего изображения, включенного в качестве активного элемента в RefPicList[0] или RefPicList[1].
(9) Когда текущее субизображение, с Temporalid равным конкретному значению tId, nuh_layer_id равным конкретному значению layerid, и индексом субизображения равным конкретному значению subpicIdx, является субизображением, которое следует, в порядке декодирования, за субизображением STSA с Temporalid равным tId, nuh_layer_id равным layerId, и индексом субизображения равным subpicIdx, не должно быть изображения с Temporalid равным tId и nuh_layer_id равным layerId, которое предшествует изображению, содержащему субизображение STSA в порядке декодирования, включенное в качестве активного элемента в RefPicList[0] или RefPicList[1].
(10) Когда текущее изображение, с nuh_layer_id равным конкретному значению layerid, является изображением IRAP, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует, в порядке вывода или порядке декодирования, любому предыдущему изображению IRAP с nuh_layer_id равным layerid в порядке декодирования (когда присутствуют).
(11) Когда текущее субизображение, с nuh_layer_id равным конкретному значению layerId и индексом субизображения равным конкретному значению subpicIdx, является субизображением IRAP, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует, в порядке вывода или порядке декодирования, любому предыдущему изображению, в порядке декодирования (когда присутствуют), содержащему субизображение IRAP с nuh_layer_id равным layerid и индексом субизображения равным subpicldx.
(12) Когда текущее изображение не является изображением RASL, связанным с изображением CRA с NoOutputBeforeRecoveryFlag равным 1, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения CRA, связанного с текущим изображением.
(13) Когда текущее субизображение не является субизображением RASL, связанным с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения CRA, содержащего субизображение CRA, связанное с текущим субизображением.
(14) Когда текущее изображение, с nuh_layer_id равным конкретному значению layerid, не является ни одним из следующих, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP или GDR, связанного с текущим изображением:
(a) изображение IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1;
(b) изображение CRA с NoOutputBeforeRecoveryFlag равным 1;
(c) изображение, связанное с изображением CRA с NoOutputBeforeRecoveryFlag равным 1, которое предшествует, в порядке декодирования, опережающим изображениям, связанным с одним и тем же изображением CRA;
(d) опережающее изображение, связанное с изображением CRA с NoOutputBeforeRecoveryFlag равным 1;
(e) изображение GDR с NoOutputBeforeRecoveryFlag равным 1;
(f) изображение восстановления изображения GDR с NoOutputBeforeRecoveryFlag равным 1 и nuh_layer_id равным layerId.
(15) Когда текущее субизображение, с nuh_layer_id равным конкретному значению layerId и индексом субизображения равным конкретному значению subpicIdx, не является ни одним из следующих, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое было генерировано в процессе декодирования для генерации недоступных опорных изображений для изображения IRAP или GDR, содержащего субизображение IRAP или GDR, связанное с текущим субизображением:
(a) субизображение IDR в изображении IDR с sps_idr_rpl_present_flag равным 1 или pps_rpl_info_in_ph_flag равным 1;
(b) субизображение CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1;
(c) субизображение, связанное с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1, которое предшествует, в порядке декодирования, опережающим изображениям, связанным с тем же изображением CRA;
(d) опережающее субизображение, связанное с субизображением CRA в изображении CRA с NoOutputBeforeRecoveryFlag равным 1;
(e) субизображение GDR в изображении GDR с NoOutputBeforeRecoveryFlag равным 1;
(f) субизображение в изображении восстановления изображения GDR с NoOutputBeforeRecoveryFlag равным 1 и nuh_layer_id равным layerid.
(16) Когда текущее изображение следует за изображением IRAP, имеющим одинаковое значение nuh_layer_id как в порядке декодирования, так и в порядке вывода, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое предшествует этому изображению IRAP в порядке вывода или порядке декодирования.
(17) Когда текущее субизображение следует за субизображением IRAP, имеющим одинаковое значение nuh_layer_id и одинаковое значение индекса субизображения в порядке как декодирования, так и вывода, не должно быть изображения, на которое ссылается активный элемент в RefPicList[0] или RefPicList[1], которое предшествует изображению, содержащему это субизображение IRAP в порядке вывода или порядке декодирования.
(18) Когда текущее изображение следует за изображением IRAP, имеющим одинаковое значение nuh_layer_id и опережающие изображения, при наличии, связанные с этим изображением IRAP как в порядке декодирования, так и в порядке вывода, не должно быть изображения, на которое ссылается элемент в RefPicListf[0] или RefPicList[1], которое предшествует этому изображению IRAP в порядке вывода или порядке декодирования.
(19) Когда текущее субизображение следует за субизображением IRAP, имеющим одинаковое значение nuh_layer_id и одинаковое значение индекса субизображения, и опережающие субизображения, при наличии, связанные с этим субизображением IRAP в порядке как декодирования, так и вывода, не должно быть изображения, на которое ссылается элемент в RefPicList[0] или RefPicList[1], которое предшествует изображению, содержащему это субизображение IRAP в порядке вывода или порядке декодирования.
(20) Когда текущее изображение является изображением RADL, не должно быть активного элемента в RefPicList[0] или RefPicList[1], который является любым из следующих:
(a) Изображение RASL с pps_mixed_nalu_types_in_pic_flag равным 0. Это означает, что активный элемент из RPL изображения RADL может ссылаться на изображение RASL с pps_mixed_nalu_types_in_pic_flag равным 1. Однако, когда декодирование начинается с соответствующего изображения CRA, такое изображение RADL все же можно правильно декодировать, поскольку субизображение(я) RADL в этом опорном изображении RASL будет правильно декодироваться, когда изображение RADL будет ссылаться только на субизображения RADL в опорном изображении RASL, что предписано следующим ограничением, которое запрещает субизображения RADL со ссылкой на субизображение RASL.
(b) Изображение, которое предшествует соответствующему изображению IRAP в порядке декодирования.
(21) Когда текущее субизображение, с nuh_layer_id равным конкретному значению layerid и индексом субизображения равным конкретному значению subpicldx, является субизображением RADL, не должно быть активного элемента в RefPicList[0] или RefPicList[1], который является любым из следующих:
(a) изображение с nuh_layer_id равным layerid, содержащего субизображение RASL с индексом субизображения равным subpicIdx;
(b) изображение, которое предшествует изображению, содержащему соответствующее субизображение IRAP в порядке декодирования;
(22) Для изображения, на которое ссылается каждый элемент ILRP, когда присутствует, в RefPicList[0] или RefPicList[1] слайса текущего изображения применяют следующие ограничения:
(a) изображение должно находиться в том же AU, что и текущее изображение.
(b) изображение должно присутствовать в DPB.
(c) изображение должно иметь nuh_layer_id refPicLayerId меньший, чем nuh_layer_id текущего изображения;
(d) применяется любое из следующих ограничений: изображение должно быть изображением IRAP; и изображение должно иметь Temporalid меньший или равный Мах(0, vps_max_tid_il_ref_pics_plus1[currLayerIdx][refLayerIdx] - 1), где currLayerIdx и refLayerIdx равны GeneralLayerIdx[nuh layer id] и GeneralLayerIdx[refpicLayerId], соответственно.
(23) Каждый элемент ILRP, когда присутствует в RefPicList[0] или RefPicList[1] слайса, должен быть активным элементом.
(24) Когда vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] равен 0, и sps_num_subpics_minus1 больше 0, должно выполняться любое из следующих двух условий (но не оба):
(a) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1], имеет такую же компоновку субизображений, как текущее изображение (т.е. SPS, на которые ссылаются это изображение и текущее изображение, имеют одинаковое значение sps_num_subpics_minus1 и одинаковые значения sps_subpic_ctu_top_left_x[j], sps_subpic_ctu_top_left_y[j], sps_subpic_width_minus1[j], и sps_subpic_height_minus1[j], соответственно, для каждого значения j в диапазоне от О до sps_num_subpics_minus2, включительно);
(b) изображение, на которое ссылается каждый активный элемент в RefPicList[0] или RefPicList[1] является ILRP, для которого значение sps_num_subpics_minus1 равно 0.
[0365] Согласно вариантам осуществления, декодер может проверять, выполняются ли вышеупомянутые ограничения для соответствия битового потока. Проверка соответствия может осуществляться после вызова процесса декодирования для генерации недоступных опорных изображений, как описано выше.
[0366] Варианты осуществления настоящего изобретения могут содержать по меньшей мере один процессор и память, где хранится компьютерный код.
Компьютерный код, при выполнении по меньшей мере одним процессором, может быть конфигурирован для предписания по меньшей мере одному процессору осуществлять функции вариантов осуществления настоящего изобретения.
[0367] Например, согласно фиг. 33, декодер настоящего изобретения может содержать по меньшей мере один процессор и память, где хранится компьютерный код (80). Декодер может быть выполнен с возможностью принимать битовый поток, включающий в себя по меньшей мере одно кодированное изображение и наборы параметров (например, SPS и VPS), заголовки (например, заголовки изображения и заголовки слайсов), и разделители AU. Компьютерный код может быть конфигурирован для предписания по меньшей мере одному процессору осуществлять любое количество процессов декодирования (например, построение списка опорных изображений, генерацию недоступного опорного изображения и проверку соответствия битового потока) и аспекты, относящиеся к декодированию (например, сигнализацию флагов и других синтаксических элементов в заголовке изображения, заголовке слайса и разделителе блоков доступа), как описано в настоящем изобретении. Например, компьютерный код (80) может включать в себя множество кодов (81) сигнализации и кодов (82) декодирования.
[0368] Множество кодов (81) сигнализации может включать в себя различные коды сигнализации, которые выполнены с возможностью предписания по меньшей мере одному процессору сигнализировать (и/или выводить) флаги и другие синтаксические элементы в заголовке изображения, заголовке слайса и разделителе блоков доступа.
[0369] Код (82) декодирования может быть конфигурирован для предписания по меньшей мере одному процессору декодировать одно или более изображений. Согласно вариантам осуществления, код (82) декодирования может включать в себя код (83) построения, код (84) генерации и код (85) проверки. Код (83) построения может быть конфигурирован для предписания по меньшей мере одному процессору строить список(и) опорных изображений. Код (84) генерации может быть конфигурирован для предписания по меньшей мере одному процессору генерировать недоступное опорное изображение из списка опорных изображений. Код (85) проверки может быть выполнен с возможностью предписания по меньшей мере одному процессору проверять соответствие битового потока, для опорных изображений в списке(ах) опорных изображений, следующим ограничениям: (а) количество элементов, указанных в списке опорных изображений, не меньше количества активных элементов, указанных в списке опорных изображений, (b) каждое изображение, на которое ссылается активный элемент в списке опорных изображений, присутствует в буфере декодированных изображений (DPB) и имеет значение временного идентификатора, меньшее или равное значению временного идентификатора текущего изображения, и (с) каждое изображение, на которое ссылается элемент в списке опорных изображений, не является текущим изображением и указано флагом заголовка изображения как потенциально опорное изображение.
[0370] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 34 показана компьютерная система (900) пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0371] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[0372] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0373] Компоненты компьютерной системы (900), показанные на фиг. 34, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (900).
[0374] Компьютерная система (900) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0375] Устройства ввода интерфейса с человеком могут включать в себя один или более из (показаны по одному из них): клавиатуры (901), мыши (902), сенсорной панели (903), сенсорного экрана (910), информационной перчатки, джойстика (905), микрофона (906), сканера (907) и камеры (908).
[0376] Компьютерная система (900) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (910), информационную перчатку или джойстик (905), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода). Например, такие устройства могут быть устройствами вывода аудио (например: громкоговорителями (909), наушниками (не показаны)), устройствами визуального вывода (например, экранами (910) в том числе CRT-экранами, LCD-экранами, плазменными экранами, OLED-экранами, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0377] Компьютерная система (900) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (920) с CD/DVD или подобными носителями (921), карту (922) флэш-памяти, сменный жесткий диск или твердотельный привод (923), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0378] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0379] Компьютерная система (900) также может включать в себя интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (949) (например, USB-порты компьютерной системы (900); другие обычно встраиваются в ядро компьютерной системы 900 путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (900) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Такая связь может включать в себя связь с облачной вычислительной средой (955). Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0380] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы (954) могут подключаться к ядру (940) компьютерной системы (900).
[0381] Ядро (940) может включать в себя один или более центральных процессоров (CPU) (941), графические процессоры (GPU) (942), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (943), аппаратные ускорители
(944) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (945), оперативной памятью (946), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (947), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (948). В некоторых компьютерных системах, системная шина (948) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (948) ядра, либо через периферийную шину (949). Архитектуры периферийной шины включают в себя PCI, USB и т.п. Графический адаптер 950 может быть включен в ядро 940.
[0382] CPU (941), GPU (942), FPGA (943) и ускорители (944) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (945) или RAM (946). Переходные данные также могут храниться в RAM (946), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (947) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (941), GPU (942), хранилищем (947) данных большой емкости, ROM (945), RAM (946) и т.п.
[0383] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0384] В качестве примера, но не ограничения, компьютерная система, имеющая архитектуру (900), и, в частности, ядро (940) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (940), носящим долговременный характер, например, внутренним хранилищем (947) данных большой емкости или ROM (945). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (940). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (940) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (946), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (944)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
[0385] Хотя в этом изобретении описано несколько неограничивающих примеров осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.