СПОСОБ ДЛЯ РЕЖИМА НАБОРА ВЫХОДНЫХ УРОВНЕЙ В МНОГОУРОВНЕВОМ ВИДЕОПОТОКЕ
METHOD FOR THE OUTPUT LAYER SET MODE IN A MULTI-LEVEL VIDEO STREAM

Перекрестные ссылки на связанные заявки
[0001] Настоящая заявка ссылается на приоритет предварительной заявки на патент США №63/001045, зарегистрированной 27 марта 2020 года, и заявки на патент США №17/000018, зарегистрированной 21 августа 2020 года, при этом обе упомянутые заявки полностью включены в настоящий документ путем ссылки.
Предпосылки создания изобретения
Область техники
[0002] Настоящее изобретение относится к технологиям сжатия видео, а также к внешнему и внутреннему предсказанию в усовершенствованных видеокодеках. А именно, настоящее изобретение относится к технологиям видеокодирования/декодирования следующих поколений, приходящих на смену высокоэффективному видеокодированию (High Efficiency Video Coding, HEVC), например, к универсальному видеокодированию (Versatile Video Coding, VVC). В частности, один из аспектов настоящего изобретения относится к способу, устройству и машиночитаемому носителю, предоставляющим набор усовершенствованных технологий видеокодирования для определения выходных уровней в потоке кодированного видео с множеством уровней.
Описание существующего уровня техники
[0003] Уже на протяжении десятилетий существуют методы видеокодирования и видеодекодирования с использованием внешнего или внутреннего предсказания изображений с компенсацией движения. Несжатое цифровое видео может содержать последовательность изображений, каждое из которых имеет заданный пространственный размер, например, 1920 × 1080 отсчетов яркости и соответствующих отсчетов цветности. Такая последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), равную, например, 60 изображениям в секунду, или 60 Гц. Несжатое видео предъявляет высокие требования к битовой скорости передачи данных. К примеру, видео формата 1080р60 4:2:0 с 8-битной глубиной отсчета (разрешение в 1920×1080 отсчетов яркости с частотой кадров 60 Гц) требует полосы пропускания около 1,5 Гб/с. Час такого видео может требовать более 600 ГБ памяти для хранения.
[0004] Одной из задач видеокодирования и видеодекодирования является снижение избыточности во входном видеосигнале путем сжатия. Сжатие позволяет сократить требования к полосе пропускания или объему памяти для хранения в некоторых случаях до двух порядков величины или более. Может применяться как сжатие без потерь, так и с потерями, а также их комбинации. Под сжатием без потерь понимают методы, в которых из сжатого сигнала может быть восстановлена точная копия исходного сигнала. Когда используют сжатие с потерями восстановленный сигнал может не быть идентичным исходному, однако расхождение между исходным и восстановленным сигналами достаточно мало, чтобы восстановленный сигнал был пригоден для целевого применения. Сжатие с потерями широко применяется для видео. Величина допустимых искажений зависит от конкретного применения; например, пользователи коммерческих приложений потоковой передачи могут быть терпимее к искажениям, чем пользователи приложений телевещания. Степень сжатия подчиняется следующей закономерности: чем больше допустимые искажения, тем больше достижимая степень сжатия.
[0005] В видеокодере и видеодекодере может применяться ряд методов, относящихся к различным категориям, включая, например, компенсацию движения, преобразования, квантование и энтропийное кодирование, некоторые из которых будут рассмотрены ниже.
[0006] Исторически сложилось, что видеокодеры и видеодекодеры работали с заданным размером изображений, который в большинстве случаев был известен и оставался неизменным на протяжении всей кодированной видеопоследовательности (coded video sequence, CVS), группы изображений (Group of Pictures, GOP) или внутри аналогичных временных рамок, включающих множество изображений. К примеру, в стандарте Группы экспертов по движущемуся изображению (Motion Picture Experts Group) MPEG-2 его структура позволяет изменять горизонтальное разрешение (и, следовательно, размер изображения) в зависимости от определенных факторов, например, активности в видеосцене, однако только в во внутренне предсказываемых изображениях (I-кадрах или I-изображениях), а значит, как правило, только для GOP. В приложении Р Рекомендации Н.263 ITU-T (ITU-T Rec. Н.263 Annex P) была определена передискретизация (ресэмплинг) опорных изображений для возможности использования различных разрешений внутри последовательности CVS. Однако в этом случае менялся лишь размер опорных изображений, а размер собственно изображений не менялся, что в результате давало возможность использовать лишь фрагменты всей поверхности изображения (при понижении разрешения, downsampling) или захватывать лишь часть сцены (при повышении разрешения, upsampling). Также, приложение Q Н.263 (Н.263 Annex Q) допускает повышающий и понижающий ресэмплинг отдельных макроблоков с коэффициентом, равным степени двойки (по любой оси). Однако снова, размер изображения остается неизменным. Размер макроблока в Н.263 фиксирован, и следовательно, не должен сигнализироваться.
[0007] В современном видеокодировании изменение размера предсказываемых изображений встречается более часто. К примеру, стандарт VP9 допускает ресэмплинг опорных изображений и изменение разрешения изображения в целом. Аналогично, были внесены соответствующие предложения для стандарта универсального видеокодирования (VVC) (включая, например, документ Объединенной группы экспертов по видео JVET-M0135-v1, «Об адаптивном изменении разрешения (adaptive resolution change, ARC) для VVC», 9-19 января 2019 года, Hendry и соавт., полностью включенный в настоящий документ путем ссылки), допускающие ресэмплинг опорных изображений целиком, до отличающихся, повышенных или пониженных, разрешений. В упомянутом документе (Hendry и соавт.) предлагается кодирование различных кандидатных разрешений в наборе параметров последовательности и осуществление ссылок на них в синтаксических элементах, для каждого изображения, в наборе параметров изображения.
Сущность изобретения
[0008] В соответствии с различными вариантами осуществления настоящего изобретения предложены методы сигнализации адаптивного размера изображения в битовом потоке видео.
[0009] В соответствии с одним из аспектов настоящего изобретения, способ декодирования может включать: прием битового потока, включающего сжатые данные видео/изображений, при этом упомянутый битовый поток имеет множество уровней; получение путем анализа или выведения, из битового потока, индикатора режима набора выходных уровней в наборе параметров видео (video parameter set, VPS); идентификацию сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней; идентификацию одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней; и декодирование одного или более идентифицированных уровней вывода изображения.
[0010] Идентификация сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней может включать: в случае, если индикатор режима набора выходных уровней в VPS имеет первое значение, определение, что самый верхний уровень в битовом потоке является упомянутым одним или более уровнем вывода изображения; в случае, если индикатор режима набора выходных уровней в VPS имеет второе значение, определение, что все уровни в битовом потоке являются упомянутыми одним или более уровнями вывода изображения; и в случае, если индикатор режима набора выходных уровней в VPS имеет третье значение, идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS.
[0011] Первое значение может отличаться от второго значения и может отличаться от третьего значения, при этом второе значение может отличаться от третьего значения.
[0012] Первое значение может быть 0, второе значение может быть 1, и третье значение может быть 2. Однако могут использоваться и другие значения, без ограничения настоящего изобретения применением описанных выше значений 0, 1 и 2.
[0013] Идентификация одного или более уровней вывода изображения с помощью явной сигнализации в VPS может включать: (i) получение из VPS, путем анализа или выведения, флага выходного уровня, и (ii) назначение уровней, флаг выходного уровня у которых равен 1, упомянутыми одним или более уровнями вывода изображения.
[0014] Идентификация сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней может включать следующее: в случае, если индикатор режима набора выходных уровней в VPS имеет заранее заданное значение, сигнализация набора выходных уровней включает идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS.
[0015] Идентификация одного или более уровней вывода изображения с помощью явной сигнализации в VPS включает: (i) получение из VPS, путем анализа или выведения, флага выходного уровня, и (ii) назначение уровней, флаг выходного уровня у которых равен 1, упомянутыми одним или более уровнями вывода изображения, при этом количество уровней в упомянутом множестве уровней больше 2.
[0016] Сигнализация режима набора выходных уровней может включать идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS, когда индикатор режима набора выходных уровней равен 2, и когда количество уровней в упомянутом множестве уровней больше 2.
[0017] Сигнализация набора выходных уровней включает определение, что самый верхний уровень в битовом потоке или все уровни в битовом потоке являются упомянутым одним или более уровнями вывода изображения, путем логического заключения об одном или более уровней вывода изображения, когда индикатор режима набора выходных уровней меньше 2, а количество уровней в упомянутом множестве уровней равно 2, и индикатор режима набора выходных уровней действительно меньше 2, а количество уровней в упомянутом множестве уровней действительно равно 2.
[0018] В соответствии с одним из вариантов осуществления настоящего изобретения, индикатор количества наборов выходных уровней минус 1 в VPS указывает на количество выходных уровней.
[0019] В соответствии с одним из вариантов осуществления настоящего изобретения индикатор максимального уровня в VPS минус 1 в VPS указывает на количество уровней в битовом потоке.
[0020] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг набора выходных уровней [i][j] в VPS указывает, является ли выходным уровнем j-й уровень i-го набора выходных уровней или нет.
[0021] В соответствии с одним из вариантов осуществления настоящего изобретения, если все из упомянутого множества уровней являются независимыми, при этом флаг «все уровни в VPS независимы» в VPS равен 1, индикатор режима набора выходных уровней не сигнализируют, при этом значение индикатора режима набора выходных уровней принимают равным упомянутому второму значению.
[0022] В соответствии с одним из вариантов осуществления настоящего изобретения, когда каждый уровень является набором выходных уровней, флаг вывода изображения в VPS назначают равным флагу вывода изображения, сигнализированному в заголовке изображения, независимо от значения индикатора режима набора выходных уровней.
[0023] Примечание: изображения в выходном уровне могут как иметь, так и не иметь PictureOutputFlag (флаг вывода изображения), равный 1. Изображения в не выходном уровне имеют PictureOutputFlag, равный 0. Изображения с PictureOutputFlag, равным 1, выводят для отображения. Изображения с PictureOutputFlag, равным 0, не выводят для отображения.
[0024] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг вывода изображения назначают равным 0, когда идентификатор VPS в наборе параметров последовательности (sequence parameter set, SPS) больше 0, что указывает: в битовом потоке присутствует более одного уровня, флаг «каждый уровень является набором выходных уровней» в VPS равен 0, что указывает: не все уровни среди множества уровней в битовом потоке являются независимыми, индикатор режима набора выходных уровней равен 0, и текущий блок доступа содержит изображение, которое удовлетворяет всем из следующих условий, включающих: наличие флага вывода изображения, равного 1, наличие идентификатора уровня nuh, большего чем у текущего изображения, и принадлежность выходному уровню из набора выходных уровней.
[0025] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг вывода изображения в VPS назначают равным 0, когда набор параметров последовательности (SPS) в VPS больше 0, флаг «каждый уровень является набором выходных уровней» равен 0, индикатор режима набора выходных уровней равен 2, а флаг «выходной уровень набора выходных уровней» [индекс целевого OLS] [общий индекс уровня [идентификатор уровня NUH]] равен 0.
[0026] В соответствии с одним из вариантов осуществления настоящего изобретения, способ может дополнительно включать управление дисплеем для отображения декодированных одного или более уровней вывода изображения.
[0027] В соответствии с одним из аспектов настоящего изобретения предложен машиночитаемый носитель данных, на котором хранят инструкции, которые, при их исполнении, обеспечивают выполнение, системой или устройством, включающими один или более процессоров, следующего: прием битового потока, включающего сжатые данные видео/изображений, при этом упомянутый битовый поток имеет множество уровней; получение путем анализа или выведения, из битового потока, индикатора режима набора выходных уровней в наборе параметров видео (VPS); идентификацию сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней; идентификацию одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней; и декодирование одного или более идентифицированных уровней вывода изображения.
[0028] В соответствии с одним из вариантов осуществления настоящего изобретения упомянутые инструкции сконфигурированы также для обеспечения выполнения, системой или устройством, включающими один или более процессоров, следующего: управление дисплеем для отображения декодированных одного или более уровней вывода изображения.
[0029] В соответствии с одним из аспектов настоящего изобретения устройство может включать: по меньшей мере одну память, сконфигурированную для хранения компьютерного программного кода; по меньшей мере один процессор, сконфигурированный для доступа к упомянутой по меньшей мере одной памяти и для выполнения операций в соответствии с компьютерным программным кодом. В соответствии с одним из вариантов осуществления настоящего изобретения компьютерный программный код может включать: код приема, сконфигурированный для обеспечения приема, упомянутым по меньшей мере одним процессором, битового потока, включающего сжатые данные видео/изображений, при этом упомянутый битовый поток имеет множество уровней; код получения, сконфигурированный для обеспечения получения, путем анализа или выведения упомянутым по меньшей мере одним процессором, из битового потока, индикатора режима набора выходных уровней в наборе параметров видео (VPS); код идентификации сигнализации выходных уровней, сконфигурированный для обеспечения идентификации, упомянутым по меньшей мере одним процессором, сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней; код идентификации уровня вывода изображения, сконфигурированный для обеспечения идентификации, упомянутым по меньшей мере одним процессором, одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней; и код декодирования, сконфигурированный для обеспечения выполнения, упомянутым по меньшей мере одним процессором, следующего: декодирование одного или более идентифицированных уровней вывода изображения.
[0030] В соответствии с одним из вариантов осуществления настоящего изобретения компьютерный программный код может дополнительно включать код управления дисплеем, сконфигурированный для обеспечения управления, упомянутым по меньшей мере одним процессором, дисплеем для отображения одного или более уровней вывода изображения.
[0031] В соответствии с одним из аспектов настоящего изобретения способ сигнализации адаптивного размера изображения в битовом потоке может включать: прием битового потока, состоящего из сжатых данных видео/изображений, при этом упомянутый битовый поток имеет множество уровней; идентификацию области заднего плана и одного или более субизображений переднего плана; определение, выбрана ли конкретная область субизображения; и если определено, что конкретная область субизображения выбрана: формирование деквантованных блоков, соответствующих выбранному субизображению, при помощи процедуры, включающей, без ограничения перечисленным, анализ битового потока, декодирование энтропийно кодированного битового потока и деквантование соответствующих блоков.
[0032] Способ может дополнительно включать: декодирование и отображение области заднего плана, если конкретная область субизображения не была выбрана.
[0033] Битовый поток может включать синтаксические элементы, определяющие, какие из уровней могут выводиться на стороне декодера.
[0034] Эти синтаксические элементы могут включать заголовок изображения, содержащий синтаксический элемент переменной длины, кодированный экспоненциальным кодом Голомба (Exp-Golomb).
[0035] Способ может дополнительно включать: определение, используют или нет адаптивное разрешение для изображения или его частей, на основе сигнализации в параметре последовательности.
[0036] Определение, используют или нет адаптивное разрешение для изображения или его частей может включать: определение, указывает ли первый синтаксический элемент, являющийся флагом, на использование адаптивного разрешения.
[0037] Способ может включать инструктирование кодером декодера об использовании конкретного размера опорного изображения, вместо безусловного использования размера, равного размеру выходного изображения, с помощью флага, определяющего условное присутствие размеров опорного изображения.
[0038] Упомянутые синтаксические элементы могут включать таблицу возможных значений ширины и высоты декодированного изображения.
[0039] В соответствии с одним из вариантов осуществления настоящего изобретения значение в заголовке блока уровня сетевой абстракции (Network Abstraction Layer, NAL) может использоваться для указания не только на временной, но и на пространственный уровень.
[0040] Таким значением в заголовке блока NAL может быть поле временного идентификатора (Temporal_id).
[0041] Способ может дополнительно включать: использование без изменений, для окружений, где применяют масштабирование, существующих выбираемых блоков ретрансляции (Selected Forwarding Units, SFU), созданных и оптимизированных для избирательной ретрансляции временных уровней, в зависимости от значения Temporal_id в заголовке блока NAL.
[0042] Способ может дополнительно включать: установление соответствия между размером кодированного изображения и временным уровнем, на который ссылается поле Temporal_id в заголовке блока NAL.
[0043] Способ может дополнительно включать: прием дополнительных данных вместе с кодированным видео, при этом дополнительные данные включают как часть кодированной видеопоследовательности (или последовательностей); и использование дополнительных данных для корректного декодирования данных и/или для более точного восстановления исходных видеоданных.
[0044] Дополнительные данные могут иметь форму одного или более из следующего: уточняющих временных, пространственных или SNR уровней, избыточных слайсов, избыточных изображений или кодов упреждающей коррекции ошибок.
[0045] В соответствии с одним из вариантов настоящего изобретения предложен машиночитаемый носитель данных, на котором хранят инструкции, которые, при их исполнении, могут обеспечить выполнение, системой или устройством, включающими один или более процессоров, следующего: прием битового потока, состоящего из сжатых данных видео/изображений, при этом упомянутый битовый поток имеет множество уровней; идентификацию области заднего плана и одного или более субизображений переднего плана; определение, выбрана ли конкретная область субизображения; и если определено, что конкретная область субизображения была выбрана: формирование деквантованных блоков отсчетов, соответствующих выбранному субизображению, при помощи процедуры, включающей, без ограничения перечисленным, анализ битового потока, декодирование энтропийно кодированного битового потока и деквантование соответствующих блоков отсчетов.
[0046] В соответствии с одним из вариантов осуществления настоящего изобретения устройство может включать: по меньшей мере одну память, сконфигурированную для хранения компьютерного программного кода; и по меньшей мере один процессор, сконфигурированный для доступа к упомянутой по меньшей мере одной памяти и для выполнения операций в соответствии с компьютерным программным кодом, при этом компьютерный программный код включает: код приема, сконфигурированный для обеспечения приема, упомянутым по меньшей мере одним процессором, битового потока, состоящего из сжатых данных видео/изображений, при этом упомянутый битовый поток имеет множество уровней; код идентификации, сконфигурированный для идентификации, упомянутым по меньшей мере одним процессором, области заднего плана и одного или более субизображений переднего плана; код определения, сконфигурированный для обеспечения определения, упомянутым по меньшей мере одним процессором, выбрана ли конкретная область субизображения; и код формирования, сконфигурированный для обеспечения выполнения, упомянутым по меньшей мере одним процессором, следующего: если определено, что конкретная область субизображения была выбрана: формирование деквантованных блоков отсчетов, соответствующих выбранному субизображению, при помощи процедуры, включающей, без ограничения перечисленным, анализ битового потока, декодирование энтропийно кодированного битового потока и деквантование соответствующих блоков отсчетов.
Краткое описание чертежей
[0047] Дополнительные признаки, сущность и различные преимущества предложенного изобретения могут быть уяснены более детально с помощью приведенного ниже подробного описания и приложенных чертежей, где:
[0048] на фиг. 1 эскизно показана упрощенная блок-схема системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0049] на фиг. 2 эскизно показана упрощенная блок-схема системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0050] на фиг. 3 эскизно показана упрощенная блок-схема декодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0051] на фиг. 4 эскизно показана упрощенная блок-схема кодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0052] фиг. 5 эскизно иллюстрируют варианты сигнализации параметров ARC в соответствии с существующим уровнем техники или одним из вариантов осуществления настоящего изобретения, как указано на чертеже;
[0053] на фиг. 6 показан пример синтаксической таблицы в соответствии с одним из вариантов осуществления настоящего изобретения;
[0054] на фиг. 7 эскизно проиллюстрирована компьютерная система в соответствии с одним из вариантов осуществления настоящего изобретения;
[0055] на фиг. 8 представлен пример структуры предсказания для масштабирования с адаптивным изменением разрешения;
[0056] на фиг. 9 показан пример синтаксической таблицы в соответствии с одним из вариантов осуществления настоящего изобретения;
[0057] на фиг. 10 эскизно показана упрощенная блок-схема анализа и декодирования цикла РОС для каждого блока доступа и каждого значения порядкового номера блока доступа;
[0058] на фиг. 11 эскизно проиллюстрирована структура битового потока видео, включающая многоуровневые субизображения;
[0059] на фиг. 12 эскизно проиллюстрировано отображение выбранного субизображения с повышенным разрешением;
[0060] на фиг. 13 показана блок-схема процедуры декодирования и отображения битового потока видео, включающего многоуровневые субизображения;
[0061] на фиг. 14 эскизно проиллюстрировано отображение 360-градусного видео с уточняющим уровнем субизображения;
[0062] на фиг. 15 показан пример информации о компоновке субизображений и соответствующей ей структуры предсказания уровней и изображений в соответствии с одним из вариантов осуществления настоящего изобретения;
[0063] на фиг. 16 показан пример информации о компоновке субизображений и соответствующей ей структуры предсказания уровней и изображений, с возможностью пространственного масштабирования локальной области;
[0064] на фиг. 17 показаны пример синтаксической таблицы для информации о компоновке субизображений;
[0065] на фиг. 18 показан пример синтаксической таблицы сообщения SEI для информации о компоновке субизображений;
[0066] на фиг. 19 показан пример синтаксической таблицы для указания выходных уровней и информации о профиле/ярусе/уровне стандарта для каждого набора выходных уровней;
[0067] на фиг. 20 показан пример синтаксической таблицы для указания на режим выходного уровня для каждого набора выходных уровней;
[0068] на фиг. 21 показан пример синтаксической таблицы для указания на присутствие субизображения для каждого уровня, для каждого набора выходных уровней;
[0069] на фиг. 22 показан пример синтаксической таблицы для RBSP набора параметров видео;
[0070] на фиг. 23 показан пример синтаксической таблицы для указания на набор выходных уровней с использованием индикатора режима набора выходных уровней;
[0071] на фиг. 24 показана блок-схема процедуры декодирования битового потока, с указанием на набор выходных уровней с помощью индикатора режима набора выходных уровней;
[0072] на фиг. 25А-25С проиллюстрирована информация, связанная с указанием набора выходных уровней с помощью индикатора режима набора выходных уровней.
Подробное описание
[0073] Когда изображения кодируют в битовый поток, состоящий из множества уровней с различным качеством, этот битовый поток может включать синтаксические элементы, определяющие, какие из уровней могут быть поданы на выход на стороне декодера. Набор уровней, подлежащих выводу, называют набором выходных уровней. В новейших видеокодеках, поддерживающих многоуровневое видео и масштабирование, один или более набор выходных уровней сигнализируют в наборе параметров видео. Эти синтаксические элементы, определяющие наборы выходных уровней и их зависимости, профиль / ярус / уровень стандарта и параметры эталонной модели гипотетического опорного декодера, должны эффективно сигнализироваться в одном из наборов параметров.
[0074] В вариантах осуществления настоящего изобретения предложены решения одной или более проблем, имеющихся на существующем уровне техники.
[0075] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи в соответствии одним из примеров осуществления настоящего изобретения. Система (100) может включать по меньшей мере два терминала (110, 120), связанных друг с другом сетью (150). При однонаправленной передаче данных первый терминал (ПО) может кодировать видеоданные локально для передачи во второй терминал (120) по сети (150). Второй терминал (120) может принимать кодированные видеоданные от первого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[0076] На фиг. 1 проиллюстрирована вторая пара терминалов (130, 140), сконфигурированных для поддержки двунаправленной передачи кодированного видео, которая может требоваться, например, при видеоконференцсвязи. При двунаправленной передаче данных оба терминала (130, 140) могут кодировать локально захватываемые видеоданные для передачи в другой терминал по сети (150). Оба терминала (130, 140) могут также принимать кодированные видеоданные, переданные другим терминалом, могут декодировать кодированные данные и отображать восстановленные видеоданные на локальном дисплейном устройстве.
[0077] На фиг. 1 терминалы (110-140) проиллюстрированы в виде портативного компьютера 110, персонального компьютера (PC) 120 и мобильных терминалом 130 и 140. Однако терминалы (110-140) не ограничены такими вариантами и могут соответствовать одному или более, или любым комбинациям, из следующего: серверы, персональные компьютеры, мобильные устройства, планшетные компьютеры и смартфоны. Варианты осуществления настоящего изобретения могут применяться в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (150) может представлять собой любое количество сетей, передающих кодированные видеоданные между терминалами (110-140), включая, например, проводные и/или беспроводные сети связи. Сеть (150) связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети (local area networks, LAN), глобальные вычислительные сети (wide area networks, WAN) и/или Интернет. В настоящем описании архитектура и топология сети (150) не играют никакой роли в функционировании предложенного изобретения, если на это явно не указано.
[0078] На фиг. 2 проиллюстрировано, в качестве примера применения одного из вариантов осуществления настоящего изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Предложенное изобретение может применяться с равной эффективностью и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение (TV), хранение сжатого видео на цифровых носителях, включая компакт-диски (compact disc, CD), цифровые универсальные диски (digital versatile disc, DVD), карты памяти и т.п.
[0079] Система потоковой передачи может включать подсистему (213) захвата, которая может включать источник (201) видео, например, видеокамеру, сконфигурированную, например, для формирования потока (202) несжатых отсчетов. Поток (202) отсчетов, показанный жирной линией на фиг. 2, чтобы подчеркнуть больший объем данных по сравнению с кодированными видео потоками, может обрабатываться кодером (303), связанным с камерой (201). Кодер (203) может включать аппаратное обеспечение, программное обеспечение, или их комбинацию, которые позволяют реализовать аспекты предложенного изобретения, в соответствии с последующим более подробным описанием. Битовый поток (204) кодированного видео, показанной тонкой линией на фиг. 2, чтобы подчеркнуть меньший объем данных по сравнению с потоком (202) отсчетов, может сохраняться на сервере (205) потоковой передачи для последующего использования. Один или более клиентов (206, 208) потоковой передачи могут осуществлять доступ к серверу (205) потоковой передачи для получения копий (207, 209) битового потока (204) кодированного видео. Клиентское устройство (206) может включать видеодекодер (210), который декодирует принятую копию битового потока (207) кодированного видео и формировать выходной поток (211) видеотсчетов, который может отображаться на дисплее (212) или другом устройстве отображения. В некоторых системах потоковой передачи битовые видеопотоки (204, 207, 209) могут быть кодированы в соответствии с заданными стандартами видеокодирования/видеосжатия. Примером таких стандартов может быть Рекомендация Н.265 ITU-T. В настоящее время ведется разработка стандарта видеокодирования, который неформально называют «универсальным видеокодированием» (Versatile Video Coding, VVC). Описанное в данном документе изобретение может применяться в контексте стандарта VVC.
[0080] На фиг. 3 показана функциональная блок-схема видеодекодера (210) в соответствии с одним из вариантов осуществления настоящего изобретения.
[0081] Приемник (310) может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера (210). В этом же варианте осуществления или в альтернативных вариантах осуществления настоящего изобретения прием видеопоследовательностей может выполняться поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (312), который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник (310) может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым джиттером между приемником (310) и энтропийным декодером/анализатором (320) (далее, «анализатор») может быть установлена буферная память (315). Когда приемник (310) принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер (315) может не применяться или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер (315) необходим, может быть сравнительно объемным и, предпочтительно, иметь при этом адаптивный размер.
[0082] Видеодекодер (210) может иметь в своем составе анализатор (320) для восстановления символов (321) из энтропийно-кодированной видеопоследовательности. Типы этих символов могут включать, например, информацию, используемую для управления работой декодера (210), а также, возможно, информацию для управления устройством отображения, такого как дисплей (212), который может быть связан с декодером, но не являться его неотъемлемой частью, как это показано на фиг. 2.Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной уточняющей информации (Supplementary Enhancement Information, SEI) или фрагментов наборов параметров информации об используемости видео (Video Usability Information, VUI). Анализатор (320) может выполнять анализ/энтропийное декодирование принятой кодированной видеопоследовательности. Кодированная видеопоследовательность может быть кодирована в соответствии с некоторой технологией или стандартом видеокодирования, и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной кодового слова, кодирование Хаффмана, контекстно-зависимое или контекстно-независимое арифметическое кодирование и т.п. Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной подгруппы пикселей в видеодекодере, на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (Groups of Pictures, GOP), изображения, тайлы, слайсы, макроблоки, кодовые блоки (Coding Units, CU), блоки (blocks), блоки преобразования (Transform Units, TU), блоки предсказания (Prediction Units, PU) и т.п. Анализатор может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.п.
[0083] Анализатор (320) может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буфера (315), и формировать символы (321).
[0084] При восстановлении символов (321) могут использоваться различные блоки устройства, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки отсчетов), а также от других факторов. То, какие блоки устройства будут использованы, и каким образом, может определяться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором (320). Поток управляющей информации подгруппы передается между анализатором (320) и множеством блоков устройства.
[0085] Помимо уже упомянутых функциональных блоков декодер 210 может быть концептуально подразбит на набор описанных ниже функциональных блоков. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже подразделение на функциональные блоки.
[0086] Первым из таких блоков может быть блок (351) масштабирования/обратного преобразования. Блок (351) масштабирования/обратного преобразования принимает квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блока, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов (321) из анализатора (320). Он выдает блоки отсчетов, включающие значения отсчетов, которые могут быть введены в агрегатор (355).
[0087] В некоторых случаях отсчеты на выходе из блока (351) масштабирования/ обратного преобразования могут относиться к внутренне кодируемому блоку отсчетов, то есть: блоку отсчетов, для которого не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком (352) внутреннего предсказания изображений. В некоторых случаях блок (352) внутреннего предсказания изображений может формировать блоки отсчетов тех же размеров и формы, что и восстанавливаемый блок отсчетов, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в памяти (358) текущих изображений. Агрегатор (355) может в некоторых случаях добавлять информацию предсказания, сформированную блоком (352) внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком (351) масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[0088] В других случаях отсчеты на выходе блока (351) масштабирования/обратного преобразования могут относиться к блоку с внешним предсказанием, возможно с компенсацией движения. В таких случаях блок (353) предсказания с компенсацией движения может осуществлять доступ к памяти (357) опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами (321), относящимися к этому блоку отсчетов, могут быть добавлены агрегатором (355) к выходным данным блока масштабирования/обратного преобразования (в этом случае их называют разностными отсчетами или разностным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти опорных изображений, по которым блок предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения, доступными для блока предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, X-компоненту, Y-компоненту и компоненту опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти (457) опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[0089] Отсчеты на выходе из агрегатора (355) могут обрабатываться при помощи различных методов контурной фильтрации в блоке (356) контурной фильтрации. Технологии сжатия видео могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, содержащимися в кодированном битовом видеопотоке, и предоставляемыми в блок (356) контурной фильтрации в виде символов (321) из анализатора (320). Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также - от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[0090] Выходными данными блока (356) контурной фильтрации может быть поток отсчетов, который подают в устройство (212) отображения, а также сохраняют в памяти (356) опорных изображений для использования при будущем внешнем предсказании изображений.
[0091] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. После полного восстановления кодированного изображения, и, если оно было определено как опорное (например, анализатором (320)), текущее опорное изображение (356) может быть помещено в буфер (357) опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделена новая память текущих изображений.
[0092] Видеодекодер (анализатор) 320 может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, Рекомендации Н.265 ITU-T. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе, или стандарте, технологии сжатия видео, и в частности, синтаксису специфицированных профилей стандарта. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п. Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического эталонного декодера (Hypothetical Reference Decoder, HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[0093] В одном из вариантов осуществления настоящего изобретения приемник (310) может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером (320) для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, уточняющих временных, пространственных или SNR уровней, избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[0094] На фиг. 4 показана функциональная блок-схема видеокодера (203) в соответствии с одним из вариантов осуществления настоящего изобретения.
[0095] Кодер (203) может принимать видеоотсчеты из источника (201) видео (который не является частью кодера), захватывающего видеоизображения для кодирования при помощи кодера (203).
[0096] Источник (201) видео может подавать видеопоследовательность источника для кодирования видеокодером (203) в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCb, RGB, …) и любую подходящую структуру отчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе медиасервиса источник (201) видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник (203) видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должно быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[0097] В соответствии с одним из вариантов осуществления настоящего изобретения видеокодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера (450) может быть обеспечение подходящей скорости кодирования. Контроллер (450) может управлять остальными функциональными блоками, описанными ниже, и быть функционально связан с этими блоками. Параметры, задаваемые контроллером (450), могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение X для методов оптимизации скорость-искажения,...), размером изображений, компоновкой групп изображений (GOP), максимальным диапазоном поиска векторов движения и т.п. Специалистам в данной области техники должны быть известны и другие функции контроллера (450), которые могут соответствовать видеокодеру (203), оптимизированному для конструкции конкретной системы.
[0098] Некоторые из видеокодеров работают в конфигурации, которую специалисты в данной области техники называют «петлей кодирования». Крайне упрощенно, петля кодирования может состоять из подсистемы кодирования в кодере (203) (далее «кодер источника»), отвечающей за формирование символов на основе входных кодируемых изображений, а также опорных изображений, и (локального) декодера (433), встроенного в кодер (203) и восстанавливающего символы, с формированием данных отсчетов, которые бы идентичным образом формировал (удаленный) декодер (поскольку сжатие символов в кодированный битовый видеопоток является сжатием без потерь, в технологиях сжатия видео, рассматриваемых в настоящем изобретении). Этот восстановленный поток отсчетов вводят в память (434) опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое буфера опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, подсистема предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) должен быть хорошо известен специалистам в данной области техники.
[0099] Работа «локального» декодера (433) по существу идентична «удаленному» декодеру (210), которая уже была подробно описана выше в связи с фиг. 3. Однако, возвращаясь к фиг. 3, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и анализатором (320) может выполняться без потерь, в локальном декодере (433) могут не быть в полной мере реализованы подсистемы энтропийного декодирования из состава декодера (210), включая канал (312), приемник (310), буфер (315) и анализатор (320).
[0100] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. По этой причине описание настоящего изобретения сконцентрировано на работе декодера. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[0101] В числе своих операций кодер (203) источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входные кадры кодируют с предсказанием на основе одного или более ранее кодированных кадров видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, подсистема (432) кодирования кодирует разности между блоками пикселей во входном кадре и блоками пикселей в опорном кадре (или кадрах), которые могут быть выбраны как опорные для предсказания входного кадра.
[0102] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, помеченные как опорные, в зависимости от символов, формируемых кодером (430) источника. Операции подсистемы (432) кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными кадрами и помещает восстановленные опорные кадры в кэш (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, содержимое которых совпадает с восстановленными опорными кадрами, получаемыми удаленным видеодекодером (при отсутствии ошибок передачи).
[0103] Предсказатель (435) может выполнять поиск предсказаний для подсистемы (432) кодирования. То есть, для нового кодируемого кадра предсказатель (435) может выполнять поиск в памяти (434) опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданных, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предсказатель (435), может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (435), опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти (434) опорных изображений.
[0104] Контроллер (450) может управлять операциями кодирования в видеокодере (203), включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[0105] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хаффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[0106] Передатчик (440) может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером (445), чтобы подготовить ее к передаче по каналу (460), связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные из видеокодера (430) с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных.
[0107] Контроллер (450) может управлять работой кодера (203). При кодировании контроллер (450) может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. Например, изображениям может быть присвоен один из описанных ниже типов кадров.
[0108] Внутренне предсказываемым изображением (I-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других кадров видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники должны быть осведомлены о подобных вариантах I-изображений, а также об их свойствах и применимости.
[0109] Предсказываемое изображение (Р-изображение) это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока.
[0110] Двунаправленно предсказываемое изображение (В-изображение) это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображения и соответствующих метаданных, чтобы восстановить один блок отсчетов.
[0111] Исходные изображения обычно пространственно разбивают на множество блоков (например, блоки размера 4×4, 8×8, 4×8 или 16×16 отсчетов в каждом) и кодируют поблочно. Блоки отсчетов могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже кодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки в В-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[0112] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть задокументированы в стандарте, например, в Рекомендации Н.265 ITU-T. При своем функционировании видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[0113] В одном из вариантов осуществления настоящего изобретения передатчик (440) может, совместно с кодированным видео, передавать дополнительные данные. Видеокодер (430), например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные уточняющих временных, пространственных или SNR-уровней, избыточных изображений или слайсов, сообщений дополнительной уточняющей информации (SEI) или фрагментов наборов параметров информации об используемости видео (VUI) и т.п.
[0114] Перед тем как аспекты настоящего изобретения будут рассмотрены более подробно, введем несколько терминов, используемых в остальной части данного описания.
[0115] Субизображение, в некоторых случаях, далее понимается как прямоугольная структура из отсчетов, блоков, макроблоков, блоков кодирования, или аналогичных элементов, сгруппированных семантически, которые могут быть кодированы независимо с различным разрешением. Одно или более субизображений могут формировать изображение. Одно или более кодированных субизображений могут формировать кодированное изображение. Одно или более субизображений могут быть объединены в изображение, и одно или более субизображений могут быть извлечены из изображения. В некоторых из вариантов осуществления настоящего изобретения одно или более субизображений могут быть объединены в сжатом виде, без перекодирования на уровне отсчетов, в единое кодированное изображение, и в этом случае, а также в других случаях, одно или более кодированных субизображений могут быть извлечены из кодированного изображения в сжатом виде.
[0116] Под адаптивным изменением разрешения (Adaptive Resolution Change, ARC) далее понимается механизм, который позволяет изменять разрешение изображения или субизображения внутри кодированной видеопоследовательности, например, при помощи ресэмплинга опорных изображений. Параметрами ARC далее будем называть управляющую информацию, необходимую для выполнения адаптивного изменения разрешения, которая может включать, например, параметры фильтрации, коэффициенты масштабирования, разрешения выходных и/или опорных изображений, различные флаги управления и т.п.
[0117] Приведенное выше описание относится к кодированию и декодированию отдельных семантически независимых видеоизображений, в соответствии с различными вариантами осуществления настоящего изобретения. Перед описанием сущности кодирования/декодирования множества субизображений с независимыми параметрами ARC, и вносимыми ими дополнительными усложнениями, рассмотрим варианты сигнализации параметров ARC.
[0118] На примере фиг. 5 проиллюстрированы несколько предложенных в настоящем изобретении вариантов осуществления сигнализации параметров ARC. Как отмечается в каждом из вариантов, они имеют свои преимущества и недостатки с точки зрения эффективности и сложности кодирования, а также с точки зрения архитектуры. В конкретном стандарте или технологии видеокодирования могут быть выбраны один или более из предложенных вариантов осуществления сигнализации ARC параметров, а также варианты, известные на существующем уровне техники. Эти варианты не обязательно взаимно исключают друг друга, и могут быть взаимозаменяемы в зависимости от требований конкретного применения, применяемых технологий и стандартов, а также выбора, выполняемого кодером.
[0119] Классы параметров ARC могут включать:
[0120] - коэффициенты повышающего или понижающего ресэмплинга, отдельно по осям X и Y, или в комбинации;
[0121] - коэффициенты повышающего или понижающего ресэмплинга, с добавлением временного измерения, указывающего на постоянную скорость увеличения/уменьшения масштаба для заданного количества изображений;
[0122] - любое из двух предыдущих может включать кодирование одного или более по возможности коротких синтаксических элементов, которые могут указывать на таблицу, содержащую упомянутые коэффициенты;
[0123] - разрешение, по оси X или Y, измеряемое в отсчетах, блоках, макроблоках, блоках кодирования (CU), или с любой другой подходящей точностью, для входного изображения, выходного изображения, опорного изображения, кодированного изображения, в комбинации, или по отдельности. Если присутствует более одного разрешения (например, одно для входного изображения и одно для опорного изображения), то в некоторых случаях один набор значений может вычисляться на основе другого набора значений. Это может управляться, например, при помощи специальных флагов. Более подробный пример будет рассмотрен ниже.
[0124] - координаты деформации (warping), подобные применяемым в приложении Р стандарта Н.263 (Н.263 Annex Р), снова, как упоминалось выше, с подходящей точностью. В приложении Р стандарта Н.263 определен один эффективный метод кодирования координат деформации, однако, потенциально можно предложить и более эффективные методы. К примеру, реверсивное кодирование, типа кодирования Хаффмана, с кодовым словом переменной длины, координат деформации в приложении Р может быть заменено на двоичное кодирование с кодовым словом соответствующей длины, которая, например, может вычисляться на основе максимального размера изображения, возможно, умноженного на коэффициент и смещенного на заданное значение, чтобы разрешить «деформацию» вне границ, заданных максимальным размером изображения; и
[0125] - параметры фильтрации повышающего или понижающего ресэмплинга. В самом простом случае может присутствовать только один фильтр для повышающего и/или понижающего ресэмплинга. Однако в других случаях может быть желательным обеспечить большую гибкость конструирования фильтров, а это может требовать сигнализации параметров фильтрации. Такие параметры могут выбираться с помощью указателя в списке возможных конструкций фильтра, фильтр может быть полностью определен (например, при помощи списка коэффициентов фильтрации, с использованием подходящих методов энтропийного кодирования), фильтр может быть неявно выбран при помощи коэффициентов повышающего или понижающего ресэмплинга, которые, в свою очередь сигнализируют в соответствии с описанными выше механизмами, и т.п.
[0126] В дальнейшем описании предполагается кодирование конечного набора коэффициентов повышающего или понижающего ресэмплинга (один и тот же коэффициент применяют для оси X и для оси Y), указываемого при помощи кодового слова. Такое кодовое слово, предпочтительно, может иметь переменную длину, например, с использованием экспоненциального кодирования Голомба (Exp-Golomb) для соответствующих синтаксических элементов, в таких стандартах видеокодирования, как Н.264 и Н.265.
[0127] Одна из возможных таблиц соответствия значений коэффициентам повышающего или понижающего ресэмплинга проиллюстрирована в приведенной ниже таблице.
[0128] Могут быть предложены множество аналогичных таблиц соответствий, согласно требованиям применения и возможностям механизмов повышающего и понижающего ресэмплинга, доступных в стандарте или технологии видеокодирования. Таблица может быть расширена большим количеством значений. Значения могут быть также представлены и с помощью других механизмов кодирования, а не кодами Exp-Golomb, например, с помощью двоичного кодирования. Это позволяет получить определенные преимущества, когда коэффициенты ресэмплинга используют вне собственно подсистем обработки видео (в первую очередь, в кодере и декодере), например, в мобильных одноранговых сетях (Mobile ad hoc networks, MANET). Следует отметить, что в (предположительно) наиболее частом случае, когда изменения разрешения не требуется, может быть выбран короткий код Exp-Golomb, например, в показанной выше таблице, имеющий длину только в один бит. Это позволяет получить преимущество в эффективности кодирования, в общем случае, по сравнению с использованием двоичных кодов.
[0129] Количество записей в таблице, как и их семантика, могут быть конфигурируемыми, частично или полностью. К примеру, основной каркас таблицы может передаваться в наборе параметров высокого уровня, например, в наборе параметров последовательности или наборе параметров декодера. Альтернативно или в дополнение, в технологии или стандарте видеокодирования могут быть определены несколько подобных таблиц, выбор которых выполняют, например, при помощи набора параметров декодера или последовательности.
[0130] Ниже будет рассмотрено, каким образом коэффициенты повышающего или понижающего ресэмплинга (информация ARC), кодированные в соответствии с описанным выше, могут быть включены в синтаксис технологии или стандарта видеокодирования. Сходные рассуждения могут быть применимы для одного или нескольких кодовых слов, управляющих фильтрами повышающего или понижающего ресэмплинга. Случай, когда для фильтров или других структур данных необходимы сравнительно большие объемы данных, будет рассмотрен ниже.
[0131] Приложение Р спецификации Н.263 (Н.263 Annex Р) включает информацию 502 ARC в форме четырех координат деформации в заголовке 501 изображения, а именно, в расширении заголовка PLUSPTYPE 503 стандарта Н.263. Это представляется рациональным решением для случаев, когда а) заголовок изображения доступен, и b) ожидаются частные изменения информации ARC. Однако объем служебной информации при применении сигнализации типа, предложенного в Н.263, может быть довольно высок, при этом коэффициенты масштабирования между границами изображений могут быть несогласованными, поскольку заголовки изображений не обязательно хранят длительно.
[0132] Цитируемая выше спецификация JVCET-M135-v1 включает ссылочную информацию (505) ARC (индекс), расположенную в наборе (504), параметров последовательности, которая указывает на таблицу (506), включающую целевые разрешения, которая, в свою очередь, расположена внутри набора (507) параметров последовательности (SPS). Помещение доступных разрешений в таблице (506) в наборе (507) параметров последовательности (507), согласно словам авторов, обусловлено применением набора SPS в качестве точки соглашения о совместимости при обмене информацией о возможностях. Разрешение может меняться в пределах, заданных значениями таблицы (506), от изображения к изображению, путем ссылки на подходящий набор (504) параметров изображения.
[0133] Вернемся к фиг. 5, где показаны также дополнительные возможные варианты передачи информации ARC в битовом потоке кодированного видео, описанные ниже. Каждый из этих вариантов обладает преимуществами по сравнению с описанным выше существующим уровнем техники. Предложенные варианты могут присутствовать в технологии или стандарте видеокодирования одновременно.
[0134] В одном из вариантов осуществления настоящего изобретения информация ARC (509), к примеру, коэффициент ресэмплинга (масштабирования), может присутствовать в заголовке слайса, заголовке группы блоков (group of block, GOB), заголовке тайла или заголовке группы тайлов (508) (далее, в заголовке группы тайлов). Это может быть адекватным решением, если информация ARC имеет малый объем, например, одиночного значения ue(v) переменной длины или кодового слова фиксированной длины в несколько бит, как, например, это показано выше. Размещение информации ARC непосредственно в заголовке группы тайлов имеет то дополнительное преимущество, что информация ARC может применяться для субизображения, представленного, например, этой группой тайлов, а не только к целому изображению. Более подробно это будет описано ниже. Кроме того, даже если технология или стандарт видеокодирования подразумевают адаптивное изменение разрешения только для изображений в целом (в отличие, например, от адаптивного изменения разрешения на уровне группы тайлов), помещение информации ARC в заголовок группы тайлов, по сравнению с ее помещением в заголовок изображения, подобно Н.263, позволяет получить определенные преимущества с точки зрения устойчивости к ошибкам.
[0135] В этом же, или в других вариантах осуществления настоящего изобретения, например, информация (512) ARC может быть непосредственно представлена в соответствующем наборе (511) параметров, к примеру, в наборе параметров изображения (PPS), наборе параметров заголовка, наборе параметров тайла, наборе параметров адаптации (на чертеже показан набор параметров адаптации) и т.д. Область действия этого параметра наборов, предпочтительно, может быть не больше, чем изображение, например, группа тайлов. Использование информации ARC задают неявно, при помощи активации соответствующего набора параметров. К примеру, если в технологии или стандарте видеокодирования определено только ARC на уровне изображений, то подходящим может быть набор параметров изображения или эквивалентный набор.
[0136] В этом же, или в других вариантах осуществления настоящего изобретения, например, ссылочная информация (513) ARC может присутствовать в заголовке (514) группы тайлов или в аналогичной структуре данных. Такая ссылочная информация (513) может ссылаться на подмножество информации (515) ARC, доступной в наборе (516) параметров, с областью действия, превосходящей отдельное изображение, например, в наборе параметров последовательности или наборе параметров декодера.
[0137] Дополнительный уровень неявной активации набора PPS из заголовка группы тайлов, PPS, SPS, применяемой в JVET-M0135-v1 представляется излишним, поскольку наборы параметры изображений, как и наборы параметров последовательности, могут (и должны в некоторых стандартах, например, RFC3984) использоваться для соглашений, или объявлений, о совместимости. Однако если информация ARC должна также применяться к субизображению, например, представленному группой тайлов, лучшим выбором может быть набор параметров с областью действия, ограниченной группой тайлов, например, набор параметров адаптации или набор параметров заголовка. Также, если информация ARC имеет не пренебрежимо малый объем, например, содержит информацию управления фильтрацией, то есть, множество коэффициентов фильтрации, то с точки зрения эффективности кодирования набор параметров может быть лучшим решением, чем использование непосредственно заголовка (508), поскольку эти параметры могут использоваться повторно для будущих изображений или субизображений путем ссылки на тот же набор параметров.
[0138] При использовании набора параметров последовательности или более высокоуровневых наборов параметров с областью действия, охватывающей множество изображений, могут быть актуальными соображения, описанные ниже.
[0139] 1. Набором параметров для хранения таблицы (516) с информацией ARC в некоторых случаях может быть набор параметров последовательности, однако в других случаях, предпочтительно, набор параметров декодера. Область действия набора параметров декодера может охватывать несколько CVS, а именно, кодированный видеопоток, т.е. все биты кодированного видео, от начала до завершения сеанса. Такая область действия может быть более подходящей, поскольку коэффициенты ARC могут быть запрограммированы в декодере, и возможно, реализованы аппаратно, поэтому аппаратные параметры в основном остаются постоянными в одной CVS (которая, по меньшей мере в некоторых мультимедийных системах, представляет собой группу изображений длиной в одну секунду или менее). При этом, помещение таблицы в набор параметров последовательности явно перечислено среди вариантов размещения, рассмотренных в настоящем документе, а именно, в связи с приведенным ниже пунктом 2.
[0140] 2. Ссылочная информация (513) ARC, предпочтительно, может быть помещена непосредственно в заголовок (514) изображения/слайса/тайла/GOP/ группы тайлов (далее заголовок группы тайлов), вместо набора параметров изображения, как в JVCET-M0135-v1. Это предпочтительно по следующим причинам: когда кодеру необходимо изменить одно значение в наборе параметров изображения, например, ссылочную информацию ARC, ему нужно создать новый набор PPS и сослаться на этот новый набор PPS. Допустим, что изменяется только ссылочная информация ARC, а остальная информация, то есть, например, информация матрицы квантования, в наборе PPS остается неизменной. Эта информация может иметь значительный объем, и чтобы новый PPS был полным, ее нужно будет передать повторно.
[0141] Поскольку ссылочная информация (513) ARC может быть одиночным кодовым словом, например, указателем на таблицу, и это единственное значение, которое меняется, то повторно передавать всю информацию матрицы квантования представляется неудобным и нерациональным. В такой мере, с точки зрения эффективности кодирования было бы значительно лучше исключить непрямое указание через набор PPS, предложенное в JVET-M0135-v1. Также, помещение ссылочной информации ARC в набор PPS имеет дополнительное неудобство, связанное с тем, что информация ARC, на которую ссылается ссылочная информация (513) ARC, необходимо будет применяться для всего изображения, а не для субизображений, поскольку областью действия набора параметров изображения является изображение в целом.
[0142] В этом же, или в альтернативном, варианте осуществления настоящего изобретения сигнализация параметров ARC может соответствовать подробному примеру, показанному на фиг. 6. На фиг. 6 показаны синтаксические деревья, в нотации, используемой в стандартах видеокодирования по меньшей мере с 1993 года. Такая нотация приблизительно соответствует языку программирования С. Выделенные жирным шрифтом строки, на фиг. 6, указывают на синтаксические элементы, присутствующие в битовом потоке. Строки без выделения жирным в основном указывают на команды управления или на присвоение значений переменных.
[0143] Заголовок (601) группы тайлов, как пример синтаксической структуры заголовка, применимого для (возможно, прямоугольной) части изображения, может, по условию, содержать имеющий переменную длину и кодированный кодом Exp-Golomb синтаксический элемент dec_pic_size_idx (602) (выделен жирным). Присутствие этого синтаксического элемента в заголовке группы тайлов может определяться фактом использования адаптивного разрешения (603). В данном примере значение флага не выделено жирным, это означает, что флаг присутствует в битовом потоке на момент, когда он встречается в синтаксической диаграмме.
[0144] Применяется ли адаптивное разрешение для данного изображения, или его части, может быть сигнализировано в любой высокоуровневой синтаксической структуре внутри или вне битового потока. В примере, проиллюстрированном на фиг. 6, это сигнализировано в наборе параметров последовательности, как это будет показано ниже.
[0145] На фиг. 6 также показан фрагмент набора (610) параметров последовательности. Первый показанный синтаксический элемент это флаг (611) adaptive_pic_resolution_change_ flag. Когда он имеет значение «ИСТИНА», флаг указывает на использование адаптивного разрешения, что, в свою очередь может требовать соответствующей информации управления. В данном примере такую информацию управления включают по условию в зависимости от значения флага, с помощью выражения if() в наборе (612) параметров и в заголовке (601) группы тайлов.
[0146] Когда применяют адаптивное разрешение, в данном примере, кодируют выходное разрешение, измеряемое в отсчетах (613). Число, обозначенное 613, относится одновременно к output_pic_width_in_luma_samples и output_pic_width_in_luma_samples, которые совместно определяют разрешение выходного изображения. В конкретной технологии или стандарте видеокодирования, в других местах, могут быть определены некоторые ограничения на любое из этих значений. К примеру, разрешение уровня стандарта может ограничивать общее количество выходных отсчетов, которое может быть равно произведению значений этих двух синтаксических элементов. Также, в конкретных технологиях или стандартах видеокодирования, или во внешних технологиях или стандартах, например, стандартах системы, может быть ограничен числовой диапазон (например, одно или оба измерения должны быть кратны степени двойки), или соотношение сторон (например, высота и ширина должны иметь заданное отношение, например, 4:3 или 16:9). Такие ограничения могут накладываться из-за аппаратной реализации, или по другим причинам, и должны быть известны специалистам в данной области техники.
[0147] В некоторых применениях кодер может инструктировать декодер об использовании конкретного размера изображения, вместо безусловного использования размера, равного размеру выходного изображения. В данном примере флаг reference_pic size_present_flag (614) определяет условное присутствие размеров (615) опорного изображения (снова, показанные обозначения относятся одновременно к ширине и к высоте).
[0148] Наконец, на фиг. 6 показана таблица возможных значений ширины и высоты декодированного изображения. Такая таблица может быть указана, например, с помощью указателя (616) на таблицу, (num_dec_pic_size_in_luma_samples_minus1). "minus 1" может указывать на интерпретацию значения этого синтаксического элемента. К примеру, если кодированное значение равно нулю, присутствует только одна запись таблицы. Если значение равно пяти, имеются шесть записей таблицы. Для каждой «строки» таблицы ширину и высоту декодированного изображения затем включают в синтаксическую структуру (617).
[0149] На записи таблицы, обозначенные (617), может указывать синтаксический элемент (602) dec_pic_size_idx в заголовке группы тайлов, что позволяет иметь различные размеры декодированного изображения, то есть, по сути, эффект зуммирования, в каждой отдельной группе тайлов.
[0150] Некоторые технологии или стандарты видеокодирования, например, VP9, для обеспечения возможности пространственного масштабирования поддерживают пространственное масштабирование с выполнением некоторого вида ресэмплинга опорных изображений (соответствующая сигнализация значительно отличается от предложенной в настоящем документе) в комбинации с временным масштабированием. В частности, может выполняться повышающий ресэмплинг отдельных опорных изображений, с использованием методов типа ARC, до более высокого разрешения, в результате чего формируют основу пространственного уточняющего уровня. Изображения с повышенным разрешением могут уточняться с использованием стандартных механизмов предсказания в высоком разрешении, что позволяет повысить детализацию.
[0151] Предложенное изобретение может применяться в подобном окружении. В некоторых случаях, в этом же, или в альтернативном варианте осуществления настоящего изобретения, значение в заголовке блока уровня сетевой абстракции (NAL), например, поле временного идентификатора (Temporal Id) может использоваться для указания не только на временной, но и на пространственный уровень. Это может давать преимущества для некоторых типов систем, к примеру, для окружений, где применяется масштабирование, могут, без изменений, применяться существующие выбираемые блоки ретрансляции (Selected Forwarding Units, SFU), созданные и оптимизированные для избирательной ретрансляции временных уровней, в зависимости от значения Temporal Id в заголовке блока NAL. Для возможности применения этой функциональности может быть необходимо соответствие между размером кодированного изображения и временным уровнем, на который ссылается поле Temporal Id в заголовке блока NAL.
[0152] В некоторых технологиях видеокодирования блок доступа (Access Unit, AU) может ссылаться на кодированные изображения, слайсы, тайлы, блоки NAL и т.п., которые были захвачены и скомпонованы в соответствующий битовый поток изображений/слайсов/тайлов/блоков NAL, в заданный момент времени. Таким моментом времени может быть, например, время композиции.
[0153] В стандарте HEVC и в некоторых других технологиях видеокодирования значение порядкового номера изображения (picture order count, РОС) может использоваться для указания на выбранное опорное изображение среди множества опорных изображений, хранимых в буфере декодированных изображений (DPB). Когда блок доступа (AU) содержит одно или более изображений, слайсов или тайлов, то каждое изображение, слайс или тайл, принадлежащие одному блоку доступа, могут иметь одно и то же значение РОС, по которому может быть сделан вывод о том, что они были сформированы на основе контента с одинаковым временем композиции. Другими словами, в случае, когда два изображения/слайса/тайла содержат одно и то же заданное значение РОС, эти два изображения/слайса/тайла принадлежат одному блоку доступа, AU, и имеют одинаковое время композиции. И наоборот, два изображения/слайса/тайла с различными значениями РОС указывают на то, что эти изображения/слайсы/тайлы принадлежат разным блокам доступа и имеют различные времена композиции.
[0154] В одном из вариантов осуществления настоящего изобретения это жесткое требование может быть ослаблено, то есть, блок доступа может включать изображения, слайсы или тайлы с различными значениями РОС. За счет допущения различных значений РОС в одном блоке доступа можно использовать значение РОС для идентификации потенциальных независимо декодируемых изображений/слайсов/тайлов с одинаковым временем отображения. А это, в свою очередь, позволяет обеспечить поддержку множества уровней масштабирования без изменения сигнализации о выборе опорных изображений (например, сигнализации наборов опорных изображений или списка опорных изображений), описанной более подробно ниже.
[0155] Однако все же желательно иметь возможность идентифицировать блок доступа, которому принадлежит изображение/слайс/тайл, среди остальных изображений/слайсов/тайлов с отличающимися значениями РОС, на основе исключительно значения РОС. Это может быть достигнуто в соответствии с приведенным ниже описанием.
[0156] В этом же, или в других вариантах осуществления, порядковый номер блока доступа (access unit count, AUC) может сигнализироваться в высокоуровневой синтаксической структуре, например, в заголовке блока NAL, заголовке слайса, заголовке группы тайлов, в сообщении SEI, в наборе параметров или в разделителе блоков доступа. Значение AUC может использоваться для определения, какие блоки NAL, изображения, слайсы или тайлы принадлежат к заданному блоку доступа. Значение AUC может соответствовать конкретному моменту времени композиции. Значение AUC может быть кратно значению РОС. Значение AUC может вычисляться делением значения РОС на целочисленное значение. В некоторых вариантах реализации операции деления могут быть значительной нагрузкой для декодера. В таких случаях небольшое ограничение пространства номеров для значений AUC позволяет заменить операцию деления операцией сдвига. К примеру, значение AUC может быть равно значению старшего бита (Most Significant Bit, MSB) в диапазоне значений РОС.
[0157] В этом же варианте осуществления значение цикла РОС для блока доступа (poc_cycle_au) может сигнализироваться в синтаксической структуре верхнего уровня, например, в заголовке блока NAL, заголовке слайса, заголовке группы тайлов, в сообщении SEI, в наборе параметров или в разделителе блока доступа. Значение poc_cycle_au может указывать, сколько последовательных отличающихся значений РОС могут быть связаны с одним блоком доступа. Например, если значение poc_cycle_au равно 4, изображения, слайсы или тайлы со значением РОС, равным 0-3, включительно, относятся к блоку доступа со значением AUC, равным 0, а изображения, слайсы или тайлы со значением РОС, равным 4-7, включительно, относятся к блоку доступа со значением AUC, равным 1. Следовательно, значение AUC может быть вычислено делением значения РОС на значение рос_cycle_au.
[0158] В этом же, или в другом варианте осуществления, значение рос_cycle_au может быть вычислено на основе информации, располагающейся, например, в наборе параметров видео (VPS), которая определяет количество пространственных или SNR-уровней в кодированной видеопоследовательности. Один из примеров такого потенциального соответствия кратко описан ниже. Описанные выше вычисления позволяют сэкономить несколько бит в VPS, и, следовательно, повысить эффективность кодирования, однако может быть предпочтительным явное кодирование poc_cycle_au в соответствующей синтаксической структуре верхнего уровня, иерархически подчиненной набору параметров видео, что позволяет минимизировать poc_cycle_au для заданной малой части битового потока, например, для изображения. Такая оптимизация позволяет сэкономить больше бит, чем за счет описанной выше процедуры вычисления, поскольку значения РОС (и/или значения синтаксических элементов, опосредованно ссылающихся на РОС), могут кодироваться в синтаксических структурах нижнего уровня.
[0159] На фиг. 9, в соответствии с этим же или с альтернативным вариантом осуществления, показан пример синтаксических таблиц, для сигнализации синтаксического элемента vps_poc_cycle_au в VPS (или SPS), в котором указывают рос_cycle_au, используемое для всех изображений/слайсов в кодированной видеопоследовательности, в заголовке слайса. Если значение РОС увеличивается в каждом блоке доступа равномерно, vps_contant_poc_cycle_per_au в VPS может задают равным 1, a vps_poc_cycle_au сигнализируют в VPS. В этом случае slice_poc_cycle_au не сигнализируют явно, а значение AUC для каждого блока доступа вычисляют делением значения РОС на vps_poc_cycle_au. Если значение РОС в каждом блоке доступа не увеличивается равномерно, то vps contantjtoc cyclej»er au в VPS может быть задано равным 0. В этом случае vps_access_unit_cnt не сигнализируют, тогда как Slice_acces_sun_itcnt сигнализируют в заголовке слайса для каждого слайса изображения. Каждый слайс изображения может иметь отличающееся значение slice access unit cnt. Значение AUC для каждого блока доступа вычисляют делением значения РОС на slice_poc_cycle_au. На фиг. 10 показана блок-схема, иллюстрирующая соответствующую последовательность операций.
[0160] В этом же или в других вариантах осуществления несмотря на то, что значения РОС в изображениях, слайсах или тайлах могут быть различными, эти изображения, слайсы или тайлы, соответствующие блоку доступа с одинаковыми значениями AUC, могут относиться к одному моменту времени декодирования или вывода. Следовательно, при отсутствии каких-либо зависимостей анализа иди декодирования между изображениями, слайсами или тайлами в одном блоке доступа, все изображения, слайсы или тайлы, относящиеся к одному блоку доступа, или их подмножество, могут декодироваться параллельно и могут выводиться в один момент времени.
[0161] В этом же или в других вариантах осуществления несмотря на то, что значения РОС в изображениях, слайсах или тайлах могут быть различными, эти изображения, слайсы или тайлы, соответствующие блоку доступа с одинаковыми значениями AUC, могут относиться к одному моменту времени композиции/отображения. Когда время композиции содержится в контейнерном формате, даже если изображения соответствуют различным блокам доступа, но имеют одинаковое время композиции, эти изображения могут отображаться в один момент времени.
[0162] В этом же или в других вариантах осуществления каждое изображение, слайс или тайл могут иметь одинаковые временные идентификаторы (temporal_id) в одном блоке доступа. Все изображения, слайсы или тайлы, соответствующие одному моменту времени, или их подмножество, могут соответствовать одному временному подуровню. В этом же или в других вариантах осуществления все изображения, слайсы или тайлы могут иметь одинаковые или отличающиеся идентификаторы пространственного уровня (layer_id) в одном пакте доступа. Все изображения, слайсы или тайлы, соответствующие одному моменту времени, или их подмножество, могут соответствовать одному или различным пространственным уровням.
[0163] На фиг. 8 показан пример структуры видеопоследовательности с комбинацией значений temporal_id, layer_id, РОС и AUC при адаптивном изменении разрешения. В данном примере изображение, слайс или тайл в первом блоке доступа с AUC=0 может иметь temporal_id=0, и layer_id=0 или 1, тогда как изображение, слайс или тайл во втором блоке доступа с AUC=1 может иметь temporal_id=1 и layer_id=0 или 1, соответственно. Значение РОС увеличивают на 1 в каждом изображении независимо от значений temporal_id и layer_id. В данном примере значение poc_cycle_au может быть равно 2. Предпочтительно, значение рос_cycle_au может быть задано равным количеству уровней (пространственного масштабирования). В данном примере, соответственно, значение РОС увеличивают на 2, тогда как значение AUC увеличивают на 1.
[0164] В рассмотренных выше вариантах осуществления может быть поддержана вся структура межуровневого предсказания и указания опорных изображений, или ее подмножество, с использованием существующей сигнализации наборов опорных изображений (reference picture set, RPS) в HEVC или с использованием сигнализации списка опорных изображений (reference picture list, RPL). В RPS или RPL указание на выбранное опорное изображение выполняют путем сигнализации значения РОС или значения разности РОС между текущим изображением и выбранным опорным изображением. В настоящем изобретении RPS и RPL могут использоваться для указания на структуру внешнего предсказания изображений или межуровневого предсказания без изменения сигнализации, однако с описанными ниже ограничениями. Если значение temporal_id опорного изображения больше, чем значение temporal_id текущего изображения, то для компенсации движения в текущем изображении, или иного предсказания, это опорное изображение использоваться не может. Если значение layer_id опорного изображения больше, чем значение layer_id текущего изображения, то для компенсации движения в текущем изображении, или иного предсказания, это опорное изображение использоваться не может.
[0165] В этом же, или в других вариантах осуществления, масштабирование векторов движения на основе разности РОС, для временного предсказания векторов движения, может быть запрещено между различными изображениями внутри блока доступа. Поэтому, несмотря на то, что каждое значение может иметь различные значения РОС внутри блока доступа, вектор движения не масштабируют и используют для временного предсказания векторов движения внутри блока доступа. Это необходимо, поскольку опорное изображение с отличающимся РОС в том же блоке доступа, рассматривают как опорное изображение, имеющее тот же момент времени. Соответственно, в данном варианте осуществления, функция масштабирования вектора движения может возвращать 1, когда опорное изображение принадлежит блоку доступа, к которому относится текущее изображение.
[0166] В этом же, или в других вариантах осуществления, масштабирование векторов движения на основе разности РОС, для временного предсказания векторов движения, может, опционально, деактивироваться на протяжении нескольких изображений, когда пространственное разрешение опорного изображения отличается от пространственного разрешения текущего изображения. Когда масштабирование векторов движения разрешено, его выполняют на основе одновременно разности РОС и соотношения пространственных разрешений между текущим изображением и опорным изображением.
[0167] В этом же, или в других вариантах осуществления, масштабирование вектора движения может выполняться на основе разности AUC, вместо разности РОС, для временного предсказания векторов движения, в частности, когда poc_cycle_au имеет неравномерные значения (когда vps_contant_poc_cycle_per_au=0). В противном случае (когда vps_contant_poc_cycle_per_au=1), масштабирование векторов движения на основе разности AUC может быть идентично масштабированию векторов движения на основе разности РОС.
[0168] В этом же, или в других вариантах осуществления, когда вектор движения масштабируют на основе разности AUC, опорный вектор движения в том же блоке доступа (с тем же значением AUC), что и текущее изображение, не масштабируют на основе разности AUC и используют для предсказания векторов движения без масштабирования или с масштабированием на основе отношения пространственного разрешения между текущим изображением и опорным изображением.
[0169] В этом же, или в других вариантах осуществления, значение AUC используют для определения границ блока доступа, а также для работы гипотетического эталонного декодера (HRD), которому необходимы значения времен ввода и вывода с точностью до блока доступа. В большинстве случаев декодированное изображение в верхнем уровне в блоке доступа может выводиться для отображения. Значение AUC и значение layer_id могут использоваться для идентификации выходного изображения.
[0170] В одном из вариантов осуществления изображение может состоять из одного или более субизображений. Каждое субизображение может покрывать локальную область или всю область изображения. Область, занимаемая субизображением, может как перекрываться, так и не перекрываться с областями других изображений. Область, состоящая из одного или более субизображений, может покрывать как всю область изображения, так и ее часть. Если изображение состоит из субизображения, область, занимаемая субизображением, может быть идентична области, занимаемой изображением.
[0171] В том же варианте осуществления субизображение может кодироваться при помощи метода кодирования, аналогичного методу кодирования, используемому для кодированного изображения. Субизображение может кодироваться независимо или кодироваться в зависимости от другого субизображения или кодированного изображения. Субизображение может быть как зависимо, в отношении его синтаксического анализа, от другого субизображения или кодированного изображения, так и независимо.
[0172] В этом же варианте осуществления кодированное субизображение может содержаться в одном или более уровнях. Кодированные субизображения в различных уровнях могут иметь различное пространственное разрешение. Может выполняться пространственный ресэмплинг исходного субизображения (повышающий или понижающий), оно может быть кодировано с использованием отличающихся параметров пространственного разрешения и включено в битовый поток, соответствующий одному из уровней.
w,k
h,k
w,k
h,k
w,k
h,k
w,k
h,k
[0173] В этом же, или в других вариантах осуществления, субизображение с параметрами (W, Н), где W ширина изображения, а Н высота субизображения, соответственно, может быть кодировано и включено в кодированный битовый поток, соответствующий уровню 0, тогда как субизображение с повышенным (или пониженным) разрешением, полученное на основе субизображения с исходным пространственным разрешением, с параметрами (W*S, Н* S), может быть кодировано и включено в кодированный битовый поток, соответствующий уровню k, где S, S - коэффициенты ресэмплинга по горизонтали и вертикали. Если значение S, S больше 1, ресэмплинг будет повышающим. Тогда как если значения S, S меньше 1, ресэмплинг будет понижающим.
j,n
j,m
[0174] В этом же, или в других вариантах осуществления, кодированное изображение в одном из уровней может иметь отличающееся визуальное качество от кодированного субизображения в другом уровне для того же субизображения или отличающегося субизображения. Например, субизображение i в уровне n может быть кодировано с параметром Q квантования, тогда как субизображение j в уровне m может быть кодировано с параметром Q квантования.
[0175] В этом же или в другом варианте осуществления кодированное субизображение в одном из уровней может быть декодировано независимо, без какой-либо зависимости анализа или декодирования от кодированных субизображений в других уровнях для той же локальной области. Уровень субизображения, который может быть независимо декодирован без ссылок на другие уровни субизображения той же локальной области, называют независимым уровнем субизображения. Кодированное субизображение в независимом уровне субизображения может как иметь, так и не иметь зависимости декодирования или анализа от ранее кодированных субизображений в том же уровне субизображения, однако кодированное субизображение не может иметь каких-либо зависимостей от кодированных изображений в другом уровне субизображения.
[0176] В этом же или в другом варианте осуществления кодированное субизображение в одном из уровней может быть декодировано зависимо, с любыми зависимостями, анализа или декодирования, от кодированных субизображений в других уровнях для той же локальной области. Уровень субизображения, который может быть декодирован зависимо, со ссылками на другие уровни субизображения той же локальной области, называют зависимым уровнем субизображения. Кодированное субизображение в зависимом уровне субизображения может ссылаться на кодированное субизображение, принадлежащее тому же субизображению, ранее кодированному субизображению в том же уровне субизображения, или на оба этих опорных субизображения.
[0177] В этом же или альтернативном варианте осуществления кодированное субизображение состоит из одного или более независимых уровней субизображения и одного или боле зависимых уровней субизображения. Однако по меньшей мере один независимый уровень субизображения должен присутствовать в каждом кодированном субизображении. Значение идентификатора уровня (layer_id), которое может находиться в заголовке блока NAL или иной высокоуровневой синтаксической структуре, для независимого уровня субизображения может быть равно 0. Уровень субизображения с layer_id равным 0 может быть базовым уровнем субизображения.
[0178] В этом же или в альтернативном варианте осуществления изображение может состоять из одного или более субизображений заднего плана и одно субизображения переднего плана. Область, охватываемая субизображением заднего плана может быть равна области изображения. Область, занимаемая субизображением переднего плана может перекрываться с областью, охватываемой субизображением заднего плана. Субизображение заднего плана может быть базовым уровнем субизображения, тогда как субизображение переднего плана может быть небазовым (уточняющим) уровнем субизображения. Один или более небазовых уровней субизображения могут ссылаться на один и тот же базовый уровень для декодирования. Каждый небазовый уровень субизображения с layer_id, равным а, может ссылаться на небазовый уровень субизображения, с layer_id, равным b, где а больше b.
[0179] В этом же или в альтернативном варианте осуществления изображение может состоять из одного или более субизображений заднего плана, с субизображением переднего плана или без него. Каждое субизображение может иметь собственный базовый уровень субизображения и один или более небазовых (уточняющих) уровней. На каждый базовый уровень субизображения могут ссылаться один или более небазовых уровней субизображения. Каждый небазовый уровень субизображения с layer_id, равным а, может ссылаться на небазовый уровень субизображения, с layer_id, равным b, где а больше b.
[0180] В этом же или в альтернативном варианте осуществления изображение может состоять из одного или более субизображений заднего плана, с субизображением переднего плана или без него. На каждое кодированное субизображение в (базовом или небазовом) уровне субизображения могут ссылаться один или более небазовых уровней субизображения, принадлежащих к тому же субизображений, и один или более небазовых уровней субизображения, не принадлежащих к тому же субизображению.
[0181] В этом же или в альтернативном варианте осуществления изображение может состоять из одного или более субизображений заднего плана, с субизображением переднего плана или без него. Субизображение в одном из уровней может быть дополнительно разбито на множество субизображений в том же уровне. Одно или более кодированных субизображений в уровне b могут ссылаться на разбитое субизображение в уровне а.
[0182] В этом же или в альтернативном варианте осуществления кодированная видеопоследовательность (CVS) может представлять собой группу кодированных изображений. CVS может состоять из одной или более последовательностей кодированных субизображений (coded sub-picture sequences, CSPS), при этом CSPS может быть группой кодированных субизображений, охватывающих одну и ту же локальную область изображения. CSPS может иметь такое же временное разрешение, что и кодированная видеопоследовательность, или отличающееся от нее.
[0183] В этом же или в альтернативном варианте осуществления CSPS может быть кодирована и включена в один или более уровней. CSPS может состоять из одного или более уровней CSPS. Декодирование одного или более уровней CSPS, соответствующих CSPS, позволяет восстановить последовательность субизображений, соответствующих одной и той же локальной области.
[0184] В этом же или в альтернативном варианте осуществления количество уровней CSPS, соответствующих CSPS, может быть как равно количеству уровней CSPS, соответствующих другой CSPS, так и отличаться.
[0185] В этом же или в альтернативном варианте осуществления уровень CSPS может иметь временное разрешение (например, частоту смену кадров), отличающееся от другого уровня CSPS. Может выполняться временной ресэмплинг исходной (несжатой) последовательности субизображений (например, повышающий или понижающий), она может быть кодирована с использованием отличающихся параметров временного разрешения и включена в битовый поток, соответствующий одному из уровней.
t,k
t,k
t,k
t,k
[0186] В этом же или в альтернативном варианте осуществления последовательность субизображений с частотой F кадров может быть кодирована и включена в кодированный битовый поток, соответствующий уровню 0, тогда как последовательность субизображений с повышенным (или пониженным) временным разрешением, по сравнению с исходной последовательностью субизображений, с F*S, может быть кодирована и включена в кодированный битовый поток, соответствующий уровню k, где S - коэффициент временного ресэмплинга для уровня k. Если значение S больше 1, процедура временного ресэмплинга может быть преобразованием с повышением частоты кадров. Тогда как если значение S меньше 1, процедура временного ресэмплинга может быть преобразованием с понижением частоты кадров.
[0187] В этом же или в альтернативном варианте осуществления, когда на субизображение в уровне CSPS ссылается субизображение из уровня b, для компенсации движения или любого межуровневого предсказания, если пространственное разрешение этого уровня CSPS отличается от пространственного разрешения уровня b CSPS, то выполняют ресэмплинг декодированных пикселей в уровне CSPS и используют их в качестве опорных. В процедуре ресэмплинга может быть необходима фильтрация с повышающим или с понижающим ресэмплингом.
[0188] На фиг. 11 показан пример видеопотока, включающего CSPS видео заднего плана с layer_id, равным 0, и множеством уровней CSPS переднего плана. Тогда как кодированное субизображение может состоять из одного или более уровней CSPS, область заднего плана, которая не принадлежит ни одному из уровней CSPS переднего плана, может состоять из базового уровня. Базовый уровень может включать область заднего плана и области переднего плана, тогда как уточняющий уровень CSPS может включать область переднего плана. Уточняющий уровень CSPS может иметь более высокое визуальное качество, по сравнению с базовым уровнем, в той же области. Уточняющий уровень CSPS может ссылаться на восстановленные пиксели и на векторы движения базового уровня, соответствующего той же области.
[0189] В этом же или в альтернативном варианте осуществления битовый поток видео, соответствующий базовому уровню, содержится в одном треке, в видеофайле, тогда как уровни CSPS, соответствующие каждому субизображению, содержатся в отдельном треке.
[0190] В этом же или в альтернативном варианте осуществления битовый поток видео, соответствующий уровню, содержится в одном треке, тогда как уровни CSPS с тем же layer_id содержатся в отдельном треке. В данном примере трек, соответствующий уровню k, включает только уровни CSPS, соответствующие уровню k.
[0191] В этом же или в альтернативном варианте осуществления каждый уровень CSPS каждого субизображения хранят в отдельном треке. Каждый трек может как иметь, так и не иметь зависимость анализа или декодирования от одного или более других треков.
[0192] В этом же или в альтернативном варианте осуществления каждый трек может содержать битовые потоки, соответствующие уровням от i до j уровней CSPS всех субизображений, или их подмножества, где 0<i=<j=<k, а k верхний уровень CSPS.
[0193] В этом же или в альтернативном варианте осуществления изображение состоит из соответствующих медиаданных, включая одно или более из следующего: карту глубины, карту значений альфа-канала, данные 3D-геометрии, карту занятости и т.п. Эти снабженные временными метками медиаданные могут быть разделены на один или более субпотоков данных, каждый из которых соответствует одному субизображению.
[0194] На фиг. 12, в соответствии с этим же или с альтернативным вариантом осуществления, показан пример видеоконференцсвязи на основе метода многоуровневых субизображений. В видеопотоке содержатся один битовый поток видео базового уровня, соответствующий изображению заднего плана, и один или более битовых потоков видео уточняющих уровней, соответствующих субизображениям переднего плана. Каждый битовый поток видео уточняющего уровня может соответствовать уровню CSPS. На дисплее по умолчанию отображается изображение, соответствующее базовому уровню. Оно содержит изображения одного или более пользователей, помещенных внутри изображения, методом «картинка в картинке» (picture in a picture, PIP). Когда клиент осуществляет выбор конкретного пользователя, декодируют и отображают уточняющий уровень CSPS, соответствующий выбранному пользователю и имеющий повышенное качество или пространственное разрешение.
[0195] На фиг. 13 показана блок-схема процедуры декодирования и отображения битового потока видео, включающего многоуровневые субизображения, в соответствии с одним из вариантов осуществления. Например, процедура может включать одну или более из описанных ниже операций. Например, в операции 1301 может выполняться декодирование битового потока видео со множеством уровней. Операция 1302 может включать идентификацию области заднего плана и одного или более субизображений заднего плана. Операция 1303 может включать определение, выбрана ли область конкретного субизображения. Операция 1304 может включать декодирование и отображение уточненного субизображения, если область конкретного субизображения была выбрана (т.е. 1303 = Да). Операция 1305 может включать декодирование и отображение области заднего плана, если область конкретного субизображения не была выбрана (т.е. 1303 = Нет).
[0196] В этом же или в альтернативном варианте осуществления сетевое промежуточное оборудование (например, маршрутизатор) может выбирать подмножество уровней для передачи пользователю в зависимости от его полосы пропускания. Для адаптации к полосе пропускания может применяться разбиение изображений на субизображения. К примеру, если пользователю не хватает полосы пропускания, маршрутизатор может отбрасывать уровни или выбирать субизображения по их важности, или на основе применяемой конфигурации, причем это может выполняться динамически для адаптации к полосе пропускания.
[0197] На фиг. 14 показан сценарий применения, соответствующий 360-градусному видео. Когда сферическое 360-градусное изображение проецируют на плоское изображение, проекционное 360-градусное изображение может быть разбито на множество субизображений, в качестве базового уровня. Уточняющий уровень для конкретного субизображения, например, переднего субизображения, может быть кодирован и передан клиенту. Декодер может быть способен декодировать как базовый уровень, включающий все субизображения, так и уточняющий уровень выбранного субизображения. Когда текущий порт просмотра идентичен выбранному субизображению, отображаемое изображение может иметь более высокое качество, за счет декодированного субизображения в уточняющем уровне. В противном случае может быть отображено декодированное изображение базового уровня, с меньшим качеством.
[0198] В этом же или в альтернативном варианте осуществления информация о компоновке для отображения может присутствовать в файле в виде вспомогательной информации (например, сообщения SEI или метаданных). Одно или более декодированных субизображений могут быть перемещены и отображаться в зависимости от сигнализируемой информации о компоновке. Информация о компоновке может сигнализироваться сервером потоковой передачи, или вещательной станцией, или может формироваться повторно сетевым объектом или облачными сервером, или может определяться с использованием выбираемых пользователем настроек.
[0199] В одном из вариантов осуществления, когда входное изображение разбито на одну или более (прямоугольных) подобластей, каждая такая подобласть может быть кодирована в виде независимого уровня. Каждый независимый уровень, соответствующий локальной области, может иметь уникальное значение layer_id. Для каждого независимого уровня могут сигнализироваться размер субизображения и информация о местоположении субизображения. К примеру, размер изображения (ширина, высота), информация о смещении относительно верхнего левого угла (х_offset, у_offset). На фиг. 15 показан пример компоновки субизображений, соответствующей информации о размере и позиции субизображений, а также соответствующая структура предсказания изображений. Информация о компоновке, включающая размеры и позиции субизображений, может сигнализироваться в высокоуровневой синтаксической структуре, например, наборах параметров, заголовке слайса или группы тайлов, или в сообщении SEI.
[0200] В этом же варианте осуществления каждое субизображение, соответствующее независимому уровню, может иметь уникальное значение РОС внутри блока доступа. Когда на опорное изображение среди изображений, хранимых в буфере DPB, указывают с помощью синтаксического элемента (или элементов) в структуре RPS или RPL, может использоваться значение (или значения) РОС каждого субизображения, соответствующего одному из уровней.
[0201] В этом же или в альтернативном варианте осуществления для указания на структуру (межуровневого) предсказания, layer_id использоваться не может, а может использоваться значение (разности) РОС.
[0202] В этом же варианте осуществления субизображение со значением РОС, равным N, соответствующе уровню (или локальной области), может (но не обязательно) использоваться в качестве опорного изображения для субизображения с РОС, равным N+K, соответствующим тому же уровню (или той же локальной области), для предсказания с компенсацией движения. В большинстве случаев значение числа К может быть равно максимальному количеству (независимых) уровней, котором может совпадать с количеством подобластей.
[0203] На фиг. 16 рассмотрен расширенный случай фиг. 15, в соответствии с тем же или альтернативным вариантом осуществления. Когда входное изображение разделено на множество (например, четыре) подобластей, каждая локальная область может кодироваться с использованием одного или более уровней. В таком случае количество независимых уровней может быть равно количеству подобластей, и каждой подобласти будет соответствовать один или более уровней. Таким образом, каждая подобласть может быть кодирована с использованием одного или более независимых уровней и нуля или более зависимых уровней.
[0204] В этом же варианте осуществления, в соответствии с фиг. 16, входное изображение может быть разделено на четыре подобласти. Правая верхняя подобласть может быть кодирована в виде двух уровней, уровня 1 и уровня 4, тогда как правая нижняя подобласть может быть кодирована в виде двух уровней, уровня 3 и уровня 5. В таком случае уровень 4 может ссылаться на уровень 1 для предсказания с компенсацией движения, тогда как уровень 5 может ссылаться на уровень 3 для предсказания с компенсацией движения.
[0205] В этом же или в альтернативном варианте осуществления внутриконтурная фильтрация (например, деблокирующая фильтрация, адаптивная внутриконтурная фильтрация, восстановление формы, двусторонняя фильтрация или любая фильтрация на основе глубокого обучения) с пересечением границ уровней может быть (опционально) запрещена.
[0206] В этом же или в альтернативном варианте осуществления предсказание с компенсацией движения или внутреннее копирование блоков с пересечением границ блоков может быть (опционально) запрещено.
[0207] В этом же или в альтернативном варианте осуществления заполнение границы незначащей информацией (boundary padding) или внутриконтурная фильтрация на границах субизображений могут выполняться опционально. Флаг, указывающий, следует выполнять граничное заполнение или нет, может сигнализироваться в высокоуровневой синтаксической структуре, например, наборе (или наборах) параметров (VPS, SPS, PPS или APS), заголовке слайса или группы тайлов или в сообщении SEI.
[0208] В этом же или в альтернативном варианте осуществления информация о компоновке подобластей (или субизображений) может сигнализироваться в VPS или SPS. На фиг. 17 показаны примеры синтаксических элементов в наборах VPS и SPS. В данном примере в VPS сигнализируют флаг vps_sub_picture_dividing_flag. Этот флаг может указывать, разделено ли входное изображение (или изображения) на множество подобластей или нет.
[0209] Когда значение флага vps_sub_picture_dividing_flag равно 0, входное изображение (или изображения) в кодированной видеопоследовательности (или последовательностях), соответствующих текущему набору VPS, не может быть разделено на множество подобластей. В этом случае размер входного изображения может быть равен размеру кодированного изображения, (pic_width_in_luma_samples, pic_height_in_luma_samples), которое сигнализируют в наборе SPS.
[0210] Когда значение флага vps_sub_picture_dividing_flag равно 1, входное изображение (или изображения может быть разделено на множество подобластей. В этом случае синтаксические элементы vps_full_pic_width_in_luma_samples и vps full_pic_height_in_luma samples сигнализируют в VPS. Значения vps_full_pic_width_in_luma_samples и vps_full_pic_height_in_luma_samples могут быть равны ширине и высоте входного изображения (или изображений) соответственно.
[0211] В этом же варианте осуществления значения vps full_pic_width_in_luma_samples и vps_full_pic_height_in_luma samples могут не использоваться для декодирования, однако могут использоваться для компоновки и отображения.
[0212] В этом же варианте осуществления, когда значение флага vps_sub_pic_ture dividing flag равно 1, синтаксические элементы Pic_offset и Pic_offset y могут сигнализироваться в наборе SPS, соответствующем конкретному уровню (или уровням). В этом случае размер кодированного изображения (Pic_width_in_luma_samples, Pic_height_in_luma_samples), сигнализируемый в SPS, может быть равен ширине и высоте подобласти, соответствующей заданному уровню. Также в SPS может сигнализироваться позиция (pic_offset_x, pic_offset_y) левого верхнего угла подобласти.
[0213] В этом же варианте осуществления информация (pic_offset_х, pic_offset_у) о позиции левого верхнего угла подобласти может не использоваться для декодирования, однако может использоваться для компоновки и отображения.
[0214] В этом же варианте осуществления информация о компоновке (размере и позиции) всех подобластей или подмножества подобластей входного изображения (или изображений) и информация о зависимостях между уровнями может сигнализироваться в наборе параметров или в сообщении SEI.
[0215] На фиг. 18 показаны примеры синтаксических элементов для указания информации о компоновке подобластей, о зависимостях между уровнями и о соотношении между подобластями и одним или более уровнями. В данном примере синтаксический элемент num sub region указывает на количество (прямоугольных) подобластей в текущей кодированной видеопоследовательности. В соответствии с одним из вариантов осуществления синтаксический элемент num_layers может указывать на количество уровней в текущей кодированной видеопоследовательности. Значение num layers может быть больше или равно значению num sub region. Когда все подобласти кодируют в качестве одиночных уровней, значение num_layers может быть равно значению num_sub_region. Когда одну или более подобластей кодируют в виде множества уровней, значение num_layers должно быть больше значения num_sub_region. Синтаксический элемент direc_dependency_flag[i][j] указывает на зависимость i-го уровня от j-го уровня. Значение num_layers_for_region[i] указывает на количество уровней, относящихся к i-ой подобласти. Значение sub_region_layer_id[i][j] указывает layer_id j-го уровня, относящегося к i-ой подобласти. Значения sub_region_offset_х[i] и sub_region_offset_у[i] указывают на горизонтальное и вертикальное расположение левого верхнего угла i-ой подобласти соответственно. Значения sub_region_width [i] и sub_region_height[i] указывают на ширину и высоту i-ой подобласти соответственно.
[0216] В одном из вариантов осуществления один или более синтаксических элементов, которые определяют набор выходных уровней для указания на один или более уровней для вывода, с информацией об уровне, ярусе и профиле стандарта, или без такой информации, могут сигнализироваться в высокоуровневой синтаксической структуре, например, VPS, DPS, SPS, PPS, APS или в сообщении SEI. В соответствии с иллюстрацией фиг. 19, синтаксический элемент num output layer sets, указывающий на количество наборов выходных уровней (output layer set, OLS) в кодированной видеопоследовательности, ссылающейся на VPS, может сигнализироваться в VPS. Для каждого набора выходных уровней может сигнализироваться флаг output_layer_flag, столько раз, сколько имеется выходных уровней.
[0217] В этом же варианте осуществления флаг output_layer_flag[i], равный 1, определяет что i-й уровень должен быть выведен. Флаг vps_output_layer_flag[i], равный 0, определяет что i-й уровень не должен быть выведен.
[0218] В этом же или в альтернативном варианте осуществления один или более синтаксических элементов, которые определяют информацию об уровне, ярусе и профиле стандарта для каждого набора выходных уровней, могут сигнализироваться в высокоуровневой синтаксической структуре, например, VPS, DPS, SPS, PPS, APS или в сообщении SEI. Также, в соответствии с иллюстрацией фиг. 19, синтаксический элемент num_profile_tile_level, указывающий на номер информации об уровне, ярусе и профиле стандарта для каждого OLS в кодированной видеопоследовательности, ссылающейся на VPS, может сигнализироваться в VPS. Для каждого набора выходных уровней, может сигнализироваться (столько раз, сколько имеется выходных уровней) набор синтаксических элементов для информации об уровне, ярусе и профиле стандарта или указатель, указывающий на информацию об уровне, ярусе и профиле стандарта среди записей в информации об уровне, ярусе и профиле стандарта.
[0219] В этом же варианте осуществления значение profile_tier_ level_idx[i][j] определяет указатель, в списке синтаксических структур profile_tier_level() в VPS, на синтаксическую структуру profile_tier_level(), применимую для j-го уровня i-го набора OLS.
[0220] В этом же или в альтернативном варианте осуществления, в соответствии с иллюстрацией фиг. 20, синтаксический элемент num_profile_tile_level и/или num_output_layer_sets могут сигнализироваться, когда максимальное количество уровней больше 1 (vps_max_layers_minus 1>0).
[0221] В этом же или в альтернативном варианте осуществления, в соответствии с иллюстрацией фиг. 20, синтаксический элемент vps_output_layers_mode[i], указывающий на режим сигнализации выходного уровня для i-го выходного уровня, может присутствовать в VPS.
[0222] В этом же варианте осуществления значение vps_output_layers_mode [i], равное 0, определяет, что выводят только верхний уровень с использованием i-го набора выходных уровней. Значение vps_output_layer_mode[i], равное 1, определяет, что выводят все уровни с использованием i-го набора выходных уровней. Значение vps_output_layer_mode[i], равное 2, определяет, что выходными уровнями являются уровни с флагом vps_output_layer_mode_flag[i][j], равным 1, с использованием i-го набора выходных уровней. Может быть зарезервировано большее количество значений.
[0223] В этом же варианте осуществления output layer_flag[i][j] может сигнализироваться или не сигнализироваться в зависимости от значения vps_output_layers_mode [i] для i-го набора выходных уровней.
[0224] В этом же или в альтернативном варианте осуществления, в соответствии с иллюстрацией фиг. 20, флаг vps_ptl_signal_flag [i] может присутствовать для i-го набора выходных уровней. В зависимости от значения vps_ptl_signal_flag[i] может сигнализироваться или не сигнализироваться информация об уровне, ярусе и профиле стандарта для i-го набора выходных уровней.
[0225] В этом же или в альтернативном варианте осуществления, в соответствии с иллюстрацией фиг. 21, количество субизображений, max sub_pics minusl, в текущей CVS может сигнализироваться в высокоуровневой синтаксической структуре, например, VPS, DPS, SPS, PPS, APS или в сообщении SEI.
[0226] В этом же варианте осуществления, в соответствии с иллюстрацией фиг. 21, идентификатор субизображения, sub_pic_id[i], для i-го субизображения может сигнализироваться, когда количество субизображений больше 1 (max_sub_pics_minus 1>0).
[0227] В этом же или в альтернативном варианте осуществления один или более синтаксических элементов, указывающих на идентификатор субизображения, принадлежащего каждому уровню каждого набора выходных уровней, может сигнализироваться в VPS. В соответствии с иллюстрацией фиг. 22, значение sub_pic_id_layer[i][j][k] указывает на то, что k-ое субизображение присутствует в j-ом уровне i-го набора выходных уровней. С помощью этой информации декодер может распознавать, какое из субизображений может быть декодировано и выведено для каждого уровня заданного набора выходных уровней.
[0228] В одном из вариантов осуществления заголовок изображения (РН) является синтаксической структурой, которая содержит синтаксические элементы, применимые ко всем слайсам кодированного изображения. Блок изображения (picture unit, PU) представляет собой набор блоков NAL, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат в точности одно кодированное изображение. Блок изображения может содержать заголовок изображения (РН) и один или более блоков NAL кодированных слайсов или блоков NAL VCL, составляющих кодированное изображение.
[0229] В одном из вариантов осуществления набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен в по меньшей мере один блок доступа с TemporalId, равным 0, или предоставлен с помощью внешних средств.
[0230] В одном из вариантов осуществления набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным 0, в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[0231] В одном из вариантов осуществления набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с Nuh_layer_id, равным наименьшему значению Nuh_layer_id среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[0232] В одном из вариантов осуществления набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с TemporalId, равным 0, и Nuh_layer_id, равным наименьшему значению Nuh_layer_id среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[0233] В одном из вариантов осуществления набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с TemporalI, равным 0, и с Nuh_layer_id, равным наименьшему значению Nuh_layer_id среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
q p
[0234] В этом же или в альтернативном варианте осуществления значение pps_seq_parameter_set_id определяет значение sps searameter_set_id для набора SPS, на который ссылаются. Значение pps_seq_parameterset_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
q p
[0235] В этом же или в альтернативном варианте осуществления все блоки NAL SPS, имеющие одинаковое значение sps_searameter_set_id в CVS, могут иметь одинаковый контент.
[0236] В этом же или в альтернативном варианте осуществления, независимо от значений nuh_layer_id, блоки NALSPS могут иметь общее пространство значений sps_seq_parameter_set_id.
[0237] В этом же или в альтернативном варианте осуществления значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL PPS, который ссылается на данный блок NAL SPS.
[0238] В одном из вариантов осуществления, когда на набор SPS с nuh_layer_id, равным m, ссылаются в одном или более наборов PPS с nuh_layer_id, равным п, уровень со значением nuh_layer_id, равным т, может быть тем же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[0239] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS, или предоставлен с помощью внешних средств.
[0240] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[0241] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированных слайсов), он может быть включен по меньшей мере в один блок изображения с nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот 3PS, или предоставлен с помощью внешних средств.
[0242] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированных слайсов), он может быть включен по меньшей мере в один блок изображения с Temporal_id, равным Temporal_id блока NAL PPS, и nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[0243] В этом же или в альтернативном варианте осуществления значение ph_pic_parameter_set_id в заголовке изображения, РН, определяет значение pps_pic_parameter_set_id для используемого PPS, на который ссылаются. Значение pps_seq_parameter_set_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
[0244] В этом же или в альтернативном варианте осуществления все блоки NAL PPS с одним значением pps_pic_parameter_set_id внутри блока изображения должны иметь одинаковый контент.
[0245] В этом же или в альтернативном варианте осуществления, независимо от значений nuh_layer_id, блоки NAL PPS могут иметь общее пространство значений pps_seq_parameter_set_id.
[0246] В этом же или в альтернативном варианте осуществления значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на данный блок NAL PPS.
[0247] В одном из вариантов осуществления, когда на набор PPS с nuh_layer_id, равным m, ссылаются в одном или более блоков NAL кодированных слайсов с nuh_layer_id, равным n, уровень со значением nuh_layer_id, равным m, может быть тем же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[0248] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS, или предоставлен с помощью внешних средств.
[0249] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[0250] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированных слайсов), он может быть включен по меньшей мере в один блок изображения с nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот ЗРS, или предоставлен с помощью внешних средств.
[0251] В одном из вариантов осуществления набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированных слайсов), он может быть включен по меньшей мере в один блок изображения с TemporalId, равным TemporalId блока NAL PPS, и nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированных слайсов), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[0252] В этом же или в альтернативном варианте осуществления значение ph_pic_parameter_set_id в заголовке изображения, РН, определяет значение pps_pic_parameter_set_id для используемого PPS, на который ссылаются. Значение pps_seq_parameter_set_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
[0253] В этом же или в альтернативном варианте осуществления все блоки NAL PPS с одним значением pps_pic_parameter_set_id внутри блока изображения должны иметь одинаковый контент.
[0254] В этом же или в альтернативном варианте осуществления, независимо от значений nuh_layer_id, блоки NAL PPS могут иметь общее пространство значений pps_seq_parameter_set_id.
[0255] В этом же или в альтернативном варианте осуществления значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL кодированных слайсов, ссылающихся на данный блок NAL PPS.
[0256] В одном из вариантов осуществления, когда на набор PPS с nuh_layer_id, равным m, ссылаются в одном или более блоков NAL кодированных слайсов с nuh_layer_id, равным n, уровень со значением nuh_layer_id, равным m, может быть тем же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[0257] Выходной уровень это уровень из набора выходных уровней, который должен быть подан на выход. Набор выходных уровней (OLS) это набор уровней, состоящий из заданного множества уровней, в котором для одного или более уровней указано, что они являются выходными уровнями. Индекс уровня в наборе выходных уровней (OLS) это индекс уровня в списке уровней OLS.
[0258] Подуровень это уровень временного масштабирования или битовый поток с временным масштабированием, состоящий из блоков NAL VCL с конкретным значением переменной TemporalId, а также из соответствующих не-vlC блоков NAL. Представление подуровня подмножество битового потока, состоящее из блоков NAL конкретного подуровня и нижележащих подуровней.
[0259] PvBSP-последовательность VPS может быть доступна в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным 0, или предоставлен с помощью внешних средств. Все NAL-блоки VPS с заданным значением vps_video_parameter_set_id в CVS могут иметь одинаковый контент.
[0260] Значение vps_video_parameter_set_id содержит идентификатор VPS для ссылки из других синтаксических элементов. Значение vps_video_parameter_set_id может быть большим 0.
[0261] Значение vps_max_layers_minus 1 плюс 1 определяет максимально допустимое количество уровней в каждой CVS, ссылающейся на данный VPS.
[0262] Значение vps_max_sub_layers_minus 1 плюс 1 определяет максимальное количество временных подуровней, которые могут содержаться в уровне в каждой CVS, ссылающейся на данный VPS. Значение vps_max_sublayers_minus 1 может лежать в диапазоне от 0 до 6 включительно.
[0263] Флаг vps_all_layers_same_num_sub_layers_flag, равный 1, указывает на то, что количество временных подуровней одинаково для всех уровней в каждой CVS, ссылающейся на данный VPS.
[0264] Флаг vps_all_layers_same_num_sub_layers_flag, равный 0, указывает на то, что уровни в каждой CVS, ссылающейся на данный VPS, не обязательно должны иметь одинаковое количество временных подуровней. Если этот флаг отсутствует, значение vps_all_layers_same_num_sub_layers_flag принимают равным 1.
[0265] Флаг vps_all_independent_layers_flag, равный 1, определяет, что все уровни в CVS кодируют независимо, без использования межуровневого предсказания.
[0266] Флаг vps_all_independent_layers_flag, равный 0, определяет, что для одного или более уровней в CVS может использоваться межуровневое предсказание. Когда этот флаг отсутствует, значение vps_all_independent_layers_flag принимают равным 1.
[0267] Значение vps layer_id[i] определяет значение nuh_layer_id i-го уровня. Для любых двух неотрицательных значений тип, когда m меньше n, значение vps_layer_id[m] может быть меньше vps_layer_id [n].
[0268] Флаг, vps_independent_layerf_lag[i], равный 1, определяет, что для уровня с индексом i не используют межуровневое предсказание. Флаг, vps_independent_layer_flag[i], равный 0, определяет, что для уровня с индексом i может использоваться межуровневое предсказание и синтаксические элементы.
[0269] В VPS присутствуют флаги vps_direct_ref_layer_flag[i][j] для j в диапазоне от i-1 включительно. Если этот флаг отсутствует, значение vps_direct_ref_layer_flag [i] принимают равным 1. Значение vps_direct_ref_layer_flag[i][j], равное 0, определяет, что уровень с порядковым номером j не является прямым опорным уровнем для уровня с порядковым номером i. Значение vps_direct_ref_layer_flag [i][j], равное 1, определяет, что уровень с порядковым номером j является прямым опорным уровнем для уровня с порядковым номером i.
[0270] Когда значение vps_direct_ref_layer_flag[i][j] отсутствует для i и j в диапазоне от 0 до vps_max_layers_minus 1 включительно, его значение принимают равным 0. Когда флаг vps_independent_layer_flag[i] равен 0, может присутствовать по меньшей мере одно значение j в диапазоне от 0 до i - 1 включительно, то есть, значение vps_direct_ref_layer_flag[i][j] равно 1.
Переменные NumDirectRefLayers[i], DirectRefLayerldx[i][d], NumRefLayers[i], RefLayerIdx[i][r] и LayerUsedAsRefLayerFlag[j] вычисляют следующим образом:
[0271] Переменную GeneralLayerIdx[i], определяющую порядковый номер уровня с nuh_layer_id, равным vps_layer_id[i], вычисляют следующим образом:
[0272] Для любых двух различных значений i и j, обоих в диапазоне от 0 до vps_max_layers_minus 1 включительно, когда DependencyFlag[i][j] равен 1, это является требованием совместимости битового потока, гласящего, что значения chroma_format_idc и bit_depth_minus8, применимые к i-му уровню, могут быть равны значениям chroma_format_idc и bit_depth_minus8, соответственно, применимым к j-му уровню.
[0273] Значение max_tid_ref_present_flag[i], равное 1, определяет, что присутствует синтаксический элемент max_tid_il_ref_pics_plusl[i]. Значение max_tid_ref_present_flag[i], равное 0, определяет, что синтаксический элемент max_tid_il_ref_pics_plus 1 [i] отсутствует.
[0274] Значение max_tid_il_ref_pics_plusl[i], равное 0, определяет, что для не-IRAP изображений i-го уровня не используют межуровневое предсказание. Значение max_tid_il_ref_pics_plus 1 [i], большее 0, определяет, что для декодирования изображений i-го уровня в качестве ILRP не могут использоваться изображения с TemporaIid больше max_tid_il_ref_pics_plus1[i]-1. В случае его отсутствия значение max tid_tid_il_ref_picsp_plus 1 [i] принимают равным 7.
[0275] Флаг each_layer_is_an_ols_flag, равный 1, определяет, что каждый набор OLS содержит только один уровень, при этом каждый уровень в CVS, ссылающийся на данный VPS, является набором OLS с единственным содержащимся уровнем, являющимся единственным выходным уровнем. Флаг each_layer_is_an_ols_flag, равный 0, определяет, что набор OLS может содержать более одного уровня. Если vps_max_layers_minus1 равно 0, значение each_layer_is_an_ols_flag принимают равным 1. В противном случае, когда vps_all_independent _layers_flag равен 0, значение each_layers_an_ols_flag принимают равным 0.
[0276] Значение ols_mode_idc, равное 0, определяет, что общее количество наборов OLS, заданное набором VPS, равно vps_max_layers_minus1+1, при этом i-й набор OLS содержит уровни с порядковыми номерами от 0 до i включительно, и для каждого OLS только наивысший уровень в нем является выходным.
[0277] Значение ols_mode_idc, равное 1, определяет, что общее количество наборов OLS, заданное набором VPS, равно vps_max _ayers_minus1+1, при этом i-й набор OLS содержит уровни с порядковыми номерами от 0 до i включительно, и для каждого OLS все уровни в нем являются выходными.
[0278] Значение ols_mode_idc, равное 2, определяет, что общее количество наборов OLS, заданных набором VPS, сигнализируют явно, и для каждого OLS выходные уровни сигнализируют явно, при этом остальные уровни являются прямыми или косвенными опорными уровнями для выходных уровней OLS.
[0279] Значение ols_mode_idc может лежать в диапазоне от 0 до 2 включительно. Значение ols_mode_idc, равное 3, зарезервировано ITU-T / ISO/IEC для будущего использования.
[0280] Когда флаг vps_all_independent_layers_flag равен 1, и флаг each_layer_is_an_ols_flag равен 0, значение ols_mode_idc принимают равным 2.
[0281] Значение num_out_put_layer_sets_minus1 плюс 1 определяет общее количество OLS, заданных VPS, когда ols_mode_idc равно 2.
[0282] Переменную TotalNumOlss, определяющую общее количество OLS, заданных VPS, вычисляют следующим образом:
[0283] Флаг vps_all_layers_same_num_sub_layers_flag, равный 0, указывает на то, что уровни в каждой CVS, ссылающейся на данный VPS, не обязательно должны иметь одинаковое количество временных подуровней. Если этот флаг отсутствует, значение vps_all_layers_same_num_sub_layers_flag принимают равным 1.
[0284] Флаг vps_all_independent_layers_flag, равный 1, определяет, что все уровни в CVS кодируют независимо, без использования межуровневого предсказания.
[0285] Флаг ols_output_layer_flag[i][j], равный 1, определяет, что уровень с nuh_layer_id, равным vps layer_id[j], является выходным уровнем i-го набора OLS, когда ols_mode_idc равно 2. Флаг ols_output_layer_flag[i][j], равный 0, определяет, что уровень с nuh_layer_id, равным vps-layer_id[j], не является выходным уровнем i-го набора OLS, когда ols_mode_idc равно 2.
[0286] Переменную NumOutputLayersInOls[i], определяющую количество выходных уровней в i-м наборе OLS, переменную NumSubLayersInLayerInOLS[i][j], определяющую количество подуровней в j-м уровне i-го набора OLS, переменную OutputLayer_idInOls[i][j], определяющую значение nuh_layer_id j-го выходного уровня в i-м OLS, и переменную LayerUsedAsOutputLayerFlag[k], определяющую, используют ли k-й уровень в качестве выходного хотя бы в одном наборе OLS, вычисляют следующим образом:
[0287] Для каждого значения i в диапазоне от 0 до vps_max _ayers minus 1, включительно, значения LayerUsedAsRefLayerFlag[i] и LayerUsedAsOutputLayerFlag[i] могут быть одновременно равны 0. Другими словами, не может быть уровня, который не являлся бы ни выходным уровнем по меньшей мере одного набора OLS, ни опорным для какого-либо другого уровня.
[0288] В каждом OLS может присутствовать по меньшей мере один уровень, который является выходным. Другими словами, для любого значения i в диапазоне от 0 до TotalNumOlss 1 включительно значение NumOutputLayersInOls [i] может быть большим или равным 1.
[0289] Переменную NumLayersInOls[i], определяющую количество уровней в i-м OLS, и переменную LayerldlnOls[i][j], определяющую значение nuh_layer_id j-го уровня в i-м наборе OLS, вычисляют следующим образом:
[0290] Переменную OlsLayerIdx[i][j], определяющую порядковый номер уровня OLS с nuh_layer_id, равным LayerldlnOls[i][j], вычисляют следующим образом:
[0291] Самый нижний уровень в каждом наборе OLS может быть независимым уровнем. То есть, для каждого i в диапазоне от 0 до TotalNumOlss 1 включительно значение vps_independent_layer_flag[GeneralLayerIdx[LayerldlnOls[i][0]]] должно быть равно 1.
[0292] Каждый уровень должен входить в состав по меньше мере одного OLS, заданных набором VPS. Другими словами, для каждого уровня с конкретным значением nuh_layer_id, nuhLayerId, равным одному из vps_layer_id[k] для к в диапазоне от 0 до vps_max_layers_minus1 включительно может быть по меньшей мере одна пара значений i и j, где i лежит в диапазоне от 0 до TotalNumOlss-1 включительно, a j лежит в диапазоне NumLayersInOls[i] 1 включительно, такая что значение Layer_idInOls[i][j] равно nuhLayerId.
[0293] В одном из вариантов осуществления процедуру декодирования текущего изображения CurrPic выполняют следующим образом:
- PictureOutputFlag задают следующим образом:
- если одно из приведенных ниже условий выполнено («истина»), флаг PictureOutputFlag назначают равным 0:
- текущее изображение является RASL-изображением, а флаг NoOutputBeforeRecoveryFlag для соответствующего IRAP-изображения равен 1.
- gdr_enabled_flag равен 1 и текущее изображение является GDR-изображением с флагом NoOutputBeforeRecoveryFlag, равным 1.
- gdr_enabled_flag равен 1, текущее изображение относится к GDR-изображению с флагом NoOutputBeforeRecoveryFlag, равным 1, и PicOrderCntVal текущего изображения меньше, чем RpPicOrderCntVal соответствующего GDR-изображения.
- sps_video_parameter_set_id равен 0, ols_mode_idc равен 0 и текущий блок доступа, AU, содержит изображение picA, удовлетворяющему всем следующим условиям:
- PicA имеет PictureOutputFlag, равный 1.
- PicA имеет nuh_layer_id, nuhLid, больший, чем у текущего изображения. PicA принадлежит выходному уровню из OLS (т.е. OutputLayer_idInOls[TargetOlsIdx][0] равен nuhLid).
- sps_video_parameter_set_id больше 0, ols_mode_idc равен 2 и ols_output_layer_flag[TargetOlsIdx][GeneralLayerldxf nuh_layer_id]] равен 0.
- В противном случае PictureOutputFlag назначают равным pic_output_flag.
[0294] После декодирования всех слайсов текущего изображения его помечают как «используемое в качестве краткосрочного опорного», и каждую запись ILRP в RefPicList[0] или RefPicList[1] помечают как «используемое в качестве краткосрочного опорного».
[0295] В этом же или в альтернативном варианте осуществления, когда каждый уровень является набором выходных уровней, PictureOutputFlag назначают равным pic_output_flag, независимо от значения ols_mode_idc.
[0296] В этом же или в альтернативном варианте осуществления PictureOutputFlag назначают равным 0, когда sps_video_parameter_set_id больше 0, each_layer_is_an_ols_flag равен 0, ols_mode_idc равен 0, и текущий блок доступа, AU, содержит изображение picA, удовлетворяющее всем следующим условиям: PicA имеет PictureOutputFlag, равный 1, PicA имеет nuh_layer_id, nuhLid, больший, чем у текущего изображения, и PicA принадлежит выходному уровню из OLS (т.е. OutputLayer_idInOls[TargetOlsIdx][0] равно nuhLid).
[0297] В этом же или в альтернативном варианте осуществления, PictureOutputFlag назначают равным 0, когда sps_video_parameter_set_id больше 0, each_layer_is_an_ols_flag равен 0, ols_mode_idc равен 2, и ols_output_layer_flagf[argetOlsIdx][GeneralLayer_idx[nuh_layer_id]] равен 0.
[0298] На фиг. 23 показан пример синтаксической таблицы для указания набора выходных уровней с использованием режима набора выходных уровней.
[0299] На фиг. 24 показана блок-схема процедуры декодирования битового потока в соответствии с одним из аспектов настоящего изобретения. А именно, на фиг. 24 показа блок-схема алгоритма на стороне декодера для указания набора выходных уровней с использованием режима набора выходных уровней, в соответствии с одним из вариантов осуществления.
[0300] В соответствии с одним из аспектов настоящего изобретения способ декодирования может включать: прием битового потока, включающего сжатые данные видео/изображений (операция 1001 на фиг. 24). Битовый поток может иметь множество уровней.
[0301] Способ декодирования может также включать операцию 1002 анализа или выведения, из битового потока, индикатора режима набора выходных уровней (например, ols_mode_idc) в наборе параметров видео (VPS).
[0302] Способ декодирования может также включать операцию 1003 идентификации сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней.
[0303] Способ декодирования может также включать операцию 1004 (например, операции 1004А, 1004В или 1004С) идентификации одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней.
[0304] Способ декодирования может также включать операцию 1005 декодирования одного или более идентифицированных уровней вывода изображения. Декодированные один или более уровней вывода изображения могут быть отображены.
[0305] Идентификация сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней может включать: в случае, если индикатор режима набора выходных уровней в VPS имеет первое значение, определение, что самый верхний уровень в битовом потоке является упомянутым одним или более уровнями вывода изображения (см., например, фиг. 25А); в случае, если индикатор режима набора выходных уровней в VPS имеет второе значение, определение, что все уровни в битовом потоке являются упомянутыми одним или более уровнями вывода изображения (см., например, фиг. 25В); и в случае, если индикатор режима набора выходных уровней в VPS имеет третье значение, идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS (см., например фиг. 25С).
[0306] На фиг. 25А-25С выходное изображение подчеркнуто. В соответствии с фиг. 25А-25С, в битовом потоке может присутствовать пять уровней, и только некоторые из них выводят для отображения. К примеру, выходным может быть уровень 3 (см., например, фиг. 25С).
[0307] В соответствии с одним из вариантов осуществления настоящего изобретения индикатор ols_mode_idc в VPS может указывать метод (механизм) сигнализации набора выходных уровней. Например, если он равен 0, самый верхний уровень в битовом потоке может быть единственным выходным уровнем; если он равен 1, все уровни в битовом потоке могут быть выходными, и если он равен 2, один или более выходных уровней могут быть явно сигнализированы в VPS. То есть, выходные изображения могут определяться с помощью сигнализации набора выходных уровней.
[0308] К примеру, вывод изображений каждого уровня может быть определен с помощью сигнализации набора выходных уровней, а метод сигнализации выходных уровней может определяться посредством ols_mode_idc.
[0309] В соответствии с одним из вариантов осуществления настоящего изобретения, в каждом битовом потоке может сигнализироваться режим выходных уровней, при этом режим выходных уровней может меняться со временем.
[0310] В соответствии с одним из вариантов осуществления настоящего изобретения, показанным на фиг. 25А, в битовом потоке может присутствовать 5 уровней (уровень 4 уровень 0). В соответствии с иллюстрацией фиг. 25А, в момент времени К, когда индикатор режима набора выходных уровней (ols_mode_idc)=0, может выводиться самый верхний уровень. То есть, в соответствии с иллюстрацией фиг. 25А, в момент времени К выводят выходное изображение уровня 4. В момент времени K+1 может выводиться уровень 3, являющийся самым верхним, и так далее для моментов K+2 и K+3.
[0311] В соответствии с иллюстрацией фиг. 25В, где индикатор режима набора выходных уровней, (ols_mode_idc), равен 1, могут выводиться все уровни, например, во все моменты времени от K до K+3.
[0312] В соответствии с иллюстрацией фиг. 25С, может выполняться явная сигнализация. Например, в соответствии с иллюстрацией фиг. 26, уровень 3 изображений (который показан как выходной подчеркиванием) является выходным уровнем, например, в моменты времени от K до K+3.
[0313] Первое значение может отличаться от второго значения и может отличаться от третьего значения, при этом второе значение может отличаться от третьего значения.
[0314] Первое значение может быть 0, второе значение может быть 1, и третье значение может быть 2. Однако могут использоваться и другие значения, без ограничения настоящего изобретения применением описанных выше значений 0, 1 и 2.
[0315] Идентификация одного или более уровней вывода изображения с помощью явной сигнализации в VPS может включать: (i) получение из VPS, путем анализа или выведения, флага выходного уровня, и (ii) назначение уровней, флаг выходного уровня у которых равен 1, упомянутыми одним или более уровнями вывода изображения.
[0316] Идентификация сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней может включать: в случае, если индикатор режима набора выходных уровней в VPS имеет заранее заданное значение, сигнализация набора выходных уровней включает идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS.
[0317] Идентификация одного или более уровней вывода изображения с помощью явной сигнализации в VPS включает: (i) получение из VPS, путем анализа или выведения, флага выходного уровня, и (ii) назначение уровней, флаг выходного уровня у которых равен 1, упомянутыми одним или более уровнями вывода изображения, при этом количество уровней в упомянутом множестве уровней больше 2.
[0318] Сигнализация режима набора выходных уровней может включать идентификацию одного или более уровней вывода изображения на основе явной сигнализации в VPS, когда индикатор режима набора выходных уровней равен 2, и количество уровней в упомянутом множестве уровней больше 2.
[0319] Сигнализация набора выходных уровней может включать определение того, что самый верхний уровень в битовом потоке или все уровни в битовом потоке являются упомянутым одним или более уровнями вывода изображения, путем логического заключения об одном или более уровней вывода изображения, когда индикатор режима набора выходных уровней меньше 2, а количество уровней в упомянутом множестве уровней равно 2, и индикатор режима набора выходных уровней действительно меньше 2, а количество уровней в упомянутом множестве уровней действительно равно 2.
[0320] В соответствии с одним из вариантов осуществления настоящего изобретения, индикатор количества наборов выходных уровней минус 1 в VPS указывает количество выходных уровней.
[0321] В соответствии с одним из вариантов осуществления настоящего изобретения индикатор максимального уровня в VPS минус 1 в VPS указывает количество уровней в битовом потоке.
[0322] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг набора выходных уровней [i][j] указывает, является ли выходным уровнем j-й уровень i-го набора выходных уровней или нет.
[0323] В соответствии с одним из вариантов осуществления настоящего изобретения, если все из упомянутого множества уровней являются независимыми, при этом флаг «все уровни в VPS независимы» в VPS равен 1, индикатор режима набора выходных уровней не сигнализируют, при этом значение индикатора режима набора выходных уровней принимают равным упомянутому второму значению.
[0324] В соответствии с одним из вариантов осуществления настоящего изобретения, когда каждый уровень является набором выходных уровней, флаг вывода изображения в VPS назначают равным флагу вывода изображения, сигнализированному в заголовке изображения, независимо от значения индикатора режима набора выходных уровней.
[0325] Примечание: изображения в выходном уровне могут как иметь, так и не иметь PictureOutputFlag, равный 1. Изображения в не выходном уровне имеют PictureOutputFlag, равный 0. Изображения с PictureOutputFlag, равным 1, выводят для отображения. Изображения с PictureOutputFlag, равным 0, не выводят для отображения.
[0326] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг вывода изображения назначают равным 0, когда идентификатор VPS в наборе параметров последовательности (SPS) больше 0, что указывает: в битовом потоке присутствует более одного уровня, флаг «каждый уровень является набором выходных уровней» в VPS равен 0, что указывает: не все уровни среди множества уровней в битовом потоке являются независимыми, индикатор режима набора выходных уровней равен 0, и текущий блок доступа содержит изображение, которое удовлетворяет всем из следующих условий, включающих: наличие флага вывода изображения, равного 1, наличие идентификатора уровня nuh, большего чем у текущего изображения, и принадлежность выходному уровню из набора выходных уровней.
[0327] В соответствии с одним из вариантов осуществления настоящего изобретения, флаг вывода изображения в VPS назначают равным 0, когда идентификатор набора параметров последовательности (SPS) в VPS больше 0, флаг «каждый уровень является набором выходных уровней» равен 0, индикатор режима набора выходных уровней равен 2, а флаг «выходной уровень набора выходных уровней» [указатель целевого OLS][общий указатель уровня [идентификатор уровня NUH]] равен 0.
[0328] В соответствии с одним из вариантов осуществления настоящего изобретения, способ может дополнительно включать управление дисплеем для отображения декодированных одного или более уровней вывода изображения.
[0329] В соответствии с одним из аспектов настоящего изобретения предложен машиночитаемый носитель данных, на котором хранят инструкции, которые, при их исполнении, обеспечивают выполнение, системой или устройством, включающими один или более процессоров, следующего: прием битового потока, включающего сжатые данные видео/изображений, при этом упомянутый битовый поток имеет множество уровней; получение из битового потока, путем анализа или выведения, индикатора режима набора выходных уровней в наборе параметров видео (VPS); идентификацию сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней; идентификацию одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней; и декодирование одного или более идентифицированных уровней вывода изображения.
[0330] В соответствии с одним из вариантов осуществления настоящего изобретения упомянутые инструкции сконфигурированы также для обеспечения выполнения, системой или устройством, включающими один или более процессоров, следующего: управление дисплеем для отображения декодированных одного или более уровней вывода изображения.
[0331] В соответствии с одним из аспектов настоящего изобретения устройство может включать: по меньшей мере одну память, сконфигурированную для хранения компьютерного программного кода; и по меньшей мере один процессор, сконфигурированный для доступа к упомянутой по меньшей мере одной памяти и для выполнения операций в соответствии с компьютерным программным кодом. В соответствии с одним из вариантов осуществления настоящего изобретения компьютерный программный код может включать: код приема, сконфигурированный для обеспечения приема, упомянутым по меньшей мере одним процессором, битового потока, включающего сжатые данные видео/изображений, при этом упомянутый битовый поток имеет множество уровней; код получения, сконфигурированный для обеспечения получения из битового потока, путем анализа или выведения упомянутым по меньшей мере одним процессором, индикатора режима набора выходных уровней в наборе параметров видео (VPS); код идентификации сигнализации выходных уровней, сконфигурированный для обеспечения идентификации, упомянутым по меньшей мере одним процессором, сигнализации набора выходных уровней на основе индикатора режима набора выходных уровней; код идентификации уровня вывода изображения, сконфигурированный для обеспечения идентификации, упомянутым по меньшей мере одним процессором, одного или более уровней вывода изображения на основе идентифицированной сигнализации набора выходных уровней; и код декодирования, сконфигурированный для обеспечения выполнения, упомянутым по меньшей мере одним процессором, следующего: декодирование одного или более идентифицированных уровней вывода изображения.
[0332] В соответствии с одним из вариантов осуществления настоящего изобретения, компьютерный программный код может дополнительно включать: код управления дисплеем, сконфигурированный для обеспечения управления, упомянутым по меньшей мере одним процессором, дисплеем для отображения одного или более уровней вывода изображения.
[0333] Описанные выше методы декодирования, отображения и сигнализации параметров адаптивного разрешения могут быть реализованы в виде компьютерного программного обеспечения, где используются машиночитаемые инструкции, и которое физически хранят на одном или более машиночитаемых носителей. К примеру, на фиг. 7 показана компьютерная система 700 подходящая для реализации некоторых из вариантов осуществления настоящего изобретения.
[0334] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации, исполнения микрокода и т.п., центральными процессорами компьютера (computer central processing units, CPU), графическими процессорами (Graphics Processing Units, GPU) и т.п.
[0335] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0336] Компоненты компьютерной системы 700, показанные на фиг. 7, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в примере осуществления компьютерной системы 700, или комбинацией таких компонентов.
[0337] Компьютерная система 700 может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0338] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура 701, мышь 702, трекпад 703, сенсорный экран 710, кибер-перчатка 704, джойстик 705, микрофон 706, сканер 707, камера 708.
[0339] Компьютерная система 700 может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана 710, киберперчатки 704 или джойстика 705, однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители 709, наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны 710, включая CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, - при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таких средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, дым-машины, а также принтеры (не показаны на чертеже).
[0340] Компьютерная система 700 может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW 720, с носителями 721 CD/DVD или аналогичными им, флэш-привод 722, съемный жесткий диск или твердотельный диск 723, применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже), и т.п.
[0341] Специалисты в данной области техники должны понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие кратковременные сигналы.
[0342] Компьютерная система 700 может также иметь интерфейс с одной или более сетями связи. Сети могут быть, например, беспроводными, проводными или оптическими. Сети также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п. Примеры сетей включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п. Некоторые сети требуют наличия внешних адаптеров сетевых интерфейсов, подключаемых к портам данных или периферийным шинам (749) общего назначения (например, USB-портам компьютерной системы 700). Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы 700 за счет подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс сети сотовой связи в компьютерной системе на базе смартфона). Применение любых из подобных сетей позволяет компьютерной системе 700 осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. В любой из сетей и сетевых интерфейсов, описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[0343] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы могут быть подключены к базовой внутренней структуре 740 компьютерной системы 700.
[0344] Базовая внутренняя структура 740 может включать один или более центральных процессоров (Central Processing Units, CPU) 741, графических процессоров (Graphics Processing Units, GPU) 742, специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) 743, аппаратных ускорителей 744 для определенных задач и т.п. Эти устройства, вместе с памятью 745 в режиме «только для чтения» (Readonly memory, ROM) 945, памятью 746 с произвольным доступом, внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, SSD-дисками и аналогичной памятью 747, могут быть объединены системной шиной 748. В некоторых компьютерных системах к системной шине 748 может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к базовой системной шине 748, либо к периферийной шине 749. Примерами архитектур периферийной шины могут служить шины PCI, USB и т.п.
[0345] CPU 741, GPU 742, FPGA 743 и ускорители 744 могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM 745 или RAM 746. Временные данные при этом могут храниться в RAM 746, тогда как постоянные данные могут храниться, например, во внутренней памяти 747 большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться за счет применения кэш-памяти, которая может быть тесно связан с одним или более CPU 741, GPU 742, памятью 747 большой емкости, ROM 745, RAM 746 и т.п.
[0346] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[0347] В качестве неограничивающего примера, компьютерная система с архитектурой 700, и в частности, базовой структурой 740, может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или энергонезависимыми запоминающими устройствами в базовой структуре 740, например, встроенным запоминающим устройством 747 большой емкости или ROM 745. Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой 740 компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой 740, и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM 746, и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе 744), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот. Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем настоящего изобретения входят все соответствующие комбинации из аппаратного и программного обеспечения.
[0348] В данном документе были описаны несколько примеров осуществления изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел изобретения и соответственно, находятся в пределах его объема и сущности.