СПОСОБ ПОДДЕРЖКИ БЛОКОВ УРОВНЯ СЕТЕВОЙ АБСТРАКЦИИ (NAL) СМЕШАННЫХ ТИПОВ В КОДИРОВАННОМ ИЗОБРАЖЕНИИ
METHOD FOR SUPPORTING NETWORK ABSTRACTION LAYER (NAL) BLOCKS OF MIXED TYPES IN AN ENCODED IMAGE

ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящая заявка испрашивает приоритет предварительной патентной заявки США №62/956 254, поданной 1 января 2020 г., и патентной заявки США №17/077 035, поданной 22 октября 2020 г., которые включены в настоящий документ в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Варианты осуществления настоящего изобретения относятся к кодированию и декодированию видео, и, в частности, к поддержке использования в кодированном изображении блоков уровня сетевой абстракции (NAL, Network Abstraction Layer) смешанных типов.
УРОВЕНЬ ТЕХНИКИ
[0003] В проекте спецификации универсального кодирования видео (VVC, Versatile Video Coding) JVET-P2001 (включен в настоящий документ в полном объеме) (с редакционными изменениями JVET-Q0041) поддерживается функция смешанных типов блоков уровня сетевой абстракции (NAL), которая позволяет иметь один или более блоков NAL слайса. имеющих тип внутренней точки произвольного доступа (IRAP, intra random access point) или чистого произвольного доступа (CRA, clean random access), и один или более блоков NAL слайса, имеющих другой тип и не являющихся блоками IRAP. Эта функция может использоваться для слияния двух различных битовых потоков в один или для поддержки различных периодов произвольного доступа для каждой локальной области (субизображения). В настоящее время для поддержки этой функциональной возможности определены следующие синтаксис и семантика:
[0004] В таблице 1 ниже приведен пример синтаксиса набора параметров изображения полезной нагрузки исходной последовательности байтов (RBSP, Raw Byte Sequence Payload).
[0005] Если значение элемента синтаксиса mixed_nalu_types_in_pic_flag равно 1, то это означает, что у каждого изображения, относящегося к набору параметров изображения (PPS, Picture Parameter Set), есть более одного блока NAL уровня кодирования видео (VCL, Video Coding Layer), при этом значения параметров nal_unit_type блоков NAL VCL различаются, и изображение не является изображением IRAP. Если значение элемента синтаксиса mixed_nalu_types_in_pic_flag равно 0, то это означает, что у каждого изображения, ссылающегося на этот PPS, есть один или более блоков NAL VCL, при этом блоки NAL VCL каждого изображения, ссылающегося на этот PPS, имеют одинаковые значения параметра nal_unit_type.
[0006] Если значение элемента синтаксиса no_mixed_nalu_types_in_pic_constraint_flag равно 1, значение элемента синтаксиса mixed nalu_types_in_pic_flag должно быть равно 0.
[0007] Согласно действующей спецификации VVC, коды и классы типов блоков NAL определяются, как показано в таблице 2 ниже.
[0008] Для каждого слайса со значением параметра nal_unit_type nalUnitTypeA в диапазоне от IDR_W_RADL до CRA_NUT включительно в изображении picA, которое также содержит один или более слайсов с другим значением nal_unit_type (т.е. значение флага mixed_nalu_types_in_pic_flag для изображения picA равно 1), применяются следующие правила:
[0009] (А) Слайс должен принадлежать субизображению subpicA, для которого значение соответствующего элемента синтаксиса subpic treated as_pic flag[i] равно 1.
[0010] (В) Слайс не должен принадлежать субизображению picA, содержащему блоки NAL VCL с элементом синтаксиса nal_unit_type, не равным nalUnitTypeA.
[0011] (С) Для всех следующих (в порядке декодирования) PU в кодированной видеопоследовательности уровня (CLVS, Coded Layer Video Sequence) ни список RefPicList[0], ни список RefPicListf [1] слайса в субизображении subpicA не должен включать в активной записи какое-либо изображение, предшествующее (в порядке декодирования) picA.
[0012] Для блоков NAL VCL любого отдельного изображения применяются следующие правила:
[0013] Если значение элемента синтаксиса mixed nalu_types_in_pic_flag равно 0, значение элемента синтаксиса nal_unit_type должно быть одинаковым для всех блоков NAL кодированного слайса изображения. Считается, что изображение или PU имеет тот же тип блока NAL, что и блоки NAL кодированного слайса изображения или PU. [0014] В противном случае (если значение элемента синтаксиса mixed_nalu_types_in_pic_flag равно 1), один или более блоков NAL VCL все должны иметь определенное значение параметра nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, а все остальные блоки NAL VCL должны иметь определенное значение параметра nal_unit_type в диапазоне от TRAIL_NUT до RSV VCL 6 включительно или равное GDR_NUT.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0015] В существующей концепции использования блоков NAL VCL смешанных типов, описанной выше в разделе «Уровень техники», могут присутствовать некоторые проблемы.
[0016] В некоторых случаях, когда изображение состоит из блоков NAL VCL смешанных типов, может быть сложно однозначно определить тип изображения.
[0017] Иногда, когда в одном PU (изображении) смешиваются блоки NAL разных типов, могут возникать конфликты с ограничениями временного идентификатора (например, Temporalld).
[0018] Например, в текущей спецификации VVC существуют следующие ограничения на Temporalld: Если значение элемента синтаксиса nal_unit_type находится в диапазоне от IDR_W_RADL до RSV IRAP12 включительно, то значение элемента синтаксиса Temporalld должно быть равно 0. Если значение элемента синтаксиса nal_unit_type равно STSA_NUT, значение элемента синтаксиса Temporalld должно быть равно 0.
[0019] В некоторых случаях, если элемент синтаксиса mixed_nalu_types_in_pic_flag передается в наборе PPS, то блоки NAL слайса в CLVS должны ссылаться по меньшей мере на две блока NAL PPS. Кроме того, при извлечении субизображения связанный с ним PPS должен быть перезаписан путем изменения значения элемента синтаксиса mixed nalu_types_in_pic_flag.
[0020] В некоторых случаях в существующей концепции может не поддерживаться одновременное существование опережающих декодируемых блоков NAL произвольного доступа (RADL, Random Access Decodable Leading) / опережающих пропускаемых блоков NAL произвольного доступа (RASL, Random Access Skipped Leading) с последующими изображениями (Trail pictures) в изображении (PU).
[0021] В некоторых случаях, когда изображение в уровне ссылается на другое изображение в другом уровне, элемент синтаксиса mixed_nalu_types_in_pic flag может быть не выровнен.
[0022] Варианты осуществления настоящего изобретения могут решать одну или более указанных выше проблем и/или другие проблемы.
[0023] Согласно одному или более вариантам осуществления предлагается способ, выполняемый по меньшей мере одним процессором. Согласно этому способу: принимают первый блок уровня сетевой абстракции (NAL) уровня видеокодирования (VCL) первого слайса кодированного изображения и второй блок NAL VCL второго слайса кодированного изображения, причем первый блок NAL VCL относится к первому типу блоков NAL VCL, а второй блок NAL VCL относится ко второму типу блоков NAL VCL, который отличается от первого типа блоков NAL VCL; и декодируют кодированное изображение, причем декодирование содержит определение типа кодированного изображения на основании первого типа блока NAL VCL и второго типа блока NAL VCL либо на основании индикатора, полученного по меньшей мере одним процессором, который указывает на то, что кодированное изображение содержит блоки NAL VCL разных типов.
[0024] Согласно одному из вариантов осуществления упомянутое определение содержит определение того, что кодированное изображение является последующим изображением (trailing picture), на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс последующего изображения, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL содержит кодированный слайс изображения мгновенного обновления декодирования (IDR, Instantaneous Decoding Refresh) или кодированный слайс изображения чистого произвольного доступа (CRA, Clean Random Access).
[0025] Согласно одному из вариантов осуществления упомянутое определение содержит определение того, что кодированное изображение является опережающим декодируемым изображением произвольного доступа (RADL), на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения RADL, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL содержит кодированный слайс изображения мгновенного обновления декодирования (IDR) или кодированный слайс изображения чистого произвольного доступа (CRA).
[0026] Согласно одному из вариантов осуществления упомянутое определение содержит определение того, что кодированное изображение является изображением пошагового доступа к временному подуровню (STSA, step-wise temporal sub-layer access), на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения STS А, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения мгновенного обновления декодирования (IDR).
[0027] Согласно одному из вариантов осуществления упомянутое определение содержит определение того, что кодированное изображение является последующим изображением, на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения пошагового доступа к временному подуровню (STSA), и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения чистого произвольного доступа (CRA).
[0028] Согласно одному из вариантов осуществления упомянутое определение содержит определение того, что кодированное изображение является последующим изображением, на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения постепенного обновления декодирования (GDR, Gradual Decoding Refresh), и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения мгновенного обновления декодирования (IDR) или кодированный слайс изображения чистого произвольного доступа (CRA).
[0029] Согласно одному из вариантов осуществления индикатор представляет собой флаг, при этом в процессе определения определяют, что кодированное изображение является последующим изображением, на основании флага, который указывает на то, что кодированное изображение содержит блоки NAL VCL смешанных типов.
[0030] Согласно одному из вариантов осуществления, индикатор представляет собой флаг, при этом в процессе декодирования кодированного изображения далее определяют, что идентификатор TemporallD кодированного изображения равен 0, на основании флага, который указывает на то, что кодированное изображение содержит блоки NAL VCL смешанных типов.
[0031] Согласно одному из вариантов осуществления индикатор представляет собой флаг, при этом в соответствии с предлагаемым способом флаг принимают в заголовке изображения или заголовке слайса.
[0032] Согласно одному из вариантов осуществления, индикатор представляет собой флаг, а кодированное изображение находится в первом уровне, и в соответствии с предлагаемым способом далее принимают флаг и определяют, что дополнительное кодированное изображение, находящееся во втором уровне, который является опорным уровнем первого уровня, содержит блоки NAL VCL смешанных типов, на основании флага, который указывает на то, что кодированное изображение содержит блоки NAL VCL смешанных типов.
[0033] Согласно одному или нескольким вариантам осуществления предлагается система, которая содержит: память, сконфигурированную для хранения компьютерного программного кода; и по меньшей мере один процессор, сконфигурированный для приема по меньшей мере одного кодированного видеопотока, доступа к компьютерному программному коду и выполнения операций в соответствии с инструкциями компьютерного программного кода. Компьютерный программный код содержит: код декодирования, сконфигурированный таким образом, чтобы по меньшей мере один процессор декодировал кодированное изображение из по меньшей мере одного кодированного видеопотока, при этом код декодирования содержит код определения, сконфигурированный таким образом, чтобы по меньшей мере один процессор определял тип кодированного изображения на основании первого типа блока NAL VCL первого слайса кодированного изображения и второго типа блока NAL VCL второго слайса кодированного изображения, или на основании индикатора, полученного по меньшей мере одним процессором, указывающего, что кодированное изображение содержит блоки NAL VCL смешанных типов, при этом первый тип блока NAL VCL отличается от второго типа блока NAL VCL.
[0034] Согласно одному из вариантов осуществления код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является последующим изображением, на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс последующего изображения, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL содержит кодированный слайс изображения мгновенного обновления декодирования (IDR) или кодированный слайс изображения чистого произвольного доступа (CRA).
[0035] Согласно одному из вариантов осуществления код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является опережающим декодируемым изображением произвольного доступа (RADL), на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения RADL, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL содержит кодированный слайс изображения мгновенного обновления декодирования (IDR) или кодированный слайс изображения чистого произвольного доступа (CRA).
[0036] Согласно одному из вариантов осуществления код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является изображением пошагового доступа к временному подуровню (STSA), на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения STSA, и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения мгновенного обновления декодирования (IDR).
[0037] Согласно одному из вариантов осуществления код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является последующим изображением, на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения пошагового доступа к временному подуровню (STSA), и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения чистого произвольного доступа (CRA).
[0038] Согласно одному из вариантов осуществления код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является последующим изображением, на основании первого типа блока NAL VCL, указывающего, что первый блок NAL VCL содержит кодированный слайс изображения с постепенным обновлением декодирования (GDR), и второго типа блока NAL VCL, указывающего, что второй блок NAL VCL не содержит кодированный слайс изображения мгновенного обновления декодирования (IDR) или кодированный слайс изображения чистого произвольного доступа (CRA).
[0039] Согласно одному из вариантов осуществления, индикатор представляет собой флаг, при этом код определения сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что кодированное изображение является последующим изображением, на основании флага, который указывает на то, что кодированное изображение содержит блоки NAL VCL смешанных типов.
[0040] Согласно одному из вариантов осуществления, индикатор представляет собой флаг, при этом код определения дополнительно сконфигурирован таким образом, чтобы по меньшей мере один процессор определял, что идентификатор TemporallD кодированного изображения равен 0, на основании флага, указывающего на то, что кодированное изображение содержит блоки NAL VCL смешанных типов.
[0041] Согласно одному из вариантов осуществления индикатор представляет собой флаг, при этом по меньшей мере один процессор сконфигурирован таким образом, чтобы приримать флаг в заголовке изображения или заголовке слайса.
[0042] Согласно одному или более вариантам предлагается машиночитаемый носитель, в котором хранятся компьютерные инструкции. При выполнении этих компьютерных инструкций по меньшей мере одним процессором последний: декодирует кодированное изображение из по меньшей мере одного кодированного видеопотока, при этом в процессе декодирования определяет тип кодированного изображения на основании первого типа блока NAL VCL первого слайса кодированного изображения и второго типа блока NAL VCL второго слайса кодированного изображения, или на основании индикатора, полученного по меньшей мере одним процессором, указывающего, что кодированное изображение содержит блоки NAL VCL смешанных типов, при этом первый тип блока NAL VCL отличается от второго типа блока NAL VCL.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0043] Другие признаки, характер и различные преимущества настоящего изобретения станут более понятными из последующего подробного описания и прилагаемых чертежей:
[0044] На фиг. 1 представлена упрощенная структурная схема системы связи в соответствии с одним из вариантов осуществления.
[0045] На фиг. 2 представлена упрощенная структурная схема системы связи в соответствии с одним из вариантов осуществления.
[0046] На фиг. 3 представлена упрощенная структурная схема декодера в соответствии с одним из вариантов осуществления.
[0047] На фиг. 4 представлена упрощенная структурная схема кодера в соответствии с одним из вариантов осуществления.
[0048] На фиг. 5 представлена блок-схема блоков NAL в соответствии с одним из вариантов осуществления.
[0049] На фиг. 6 представлена структурная схема декодера в соответствии с одним из вариантов осуществления.
[0050] На фиг. 7 представлена компьютерная система, подходящая для реализации вариантов осуществления.
ПОДРОБНОЕ ОПИСАНИЕ
[0051] На фиг. 1 представлена упрощенная структурная схема компьютерной системы (100) в соответствии с одним из вариантов осуществления настоящего изобретения. Система (100) может содержать по меньшей мере два терминала (110, 120), соединенных по сети (150). Для однонаправленной передачи данных первый терминал (110) может кодировать видеоданные в локальном режиме для передачи на другой терминал (120) по сети (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала по сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может широко использоваться в приложениях для мультимедийных сервисов и им подобных.
[0052] На фиг. 1 показана вторая пара терминалов (130, 140), предназначенных для поддержки двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференций. Для двунаправленной передачи данных первый терминал (130, 140) может кодировать видеоданные в локальном режиме для передачи на другой терминал по сети (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и отображать восстановленные видеоданные на локальном устройстве отображения.
[0053] Терминалы (110-140), представленные на фиг. 1, могут быть серверами, персональными компьютерами, смартфонами и/или терминалами любого другого типа. Например, терминалы (110-140) могут быть ноутбуками, планшетными компьютерами, медиаплеерами и/или специализированным оборудованием для видеоконференций. Сеть (150) представляет собой любую совокупность сетей, по которым передаются кодированные видеоданные между терминалами (110-140), в том числе, например, проводных и/или беспроводных сетей связи. Сеть связи (150) может осуществлять передачу данных в режиме коммутации каналов и/или коммутации пакетов. К числу используемых сетей принадлежат телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или сеть Интернет. Архитектура и топология сети (150) не имеют значения для реализации настоящего изобретения, если иное не оговорено ниже в настоящем документе.
[0054] На фиг. 2 показан пример реализации настоящего изобретения, в котором видеокодер и видеодекодер размещаются в среде потоковой передачи данных. Описываемое изобретение может в равной степени использоваться в других приложениях с поддержкой видео, в частности, видеоконференциях, цифровом телевидении, хранении сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и тому подобные устройства, и так далее.
[0055] Как показано на фиг. 2, система потоковой передачи (200) может содержать подсистему захвата (213), которая может состоять из источника видео (201) и кодера (203). Источник видео (201) может быть, например, цифровой камерой и может быть сконфигурирован таким образом, чтобы создавать поток отсчетов несжатого видео (202). Поток отсчетов несжатого видео (202) может создавать большой объем данных по сравнению с битовыми потоками кодированного видео и может обрабатываться кодером (203), подключенным к камере (201). Кодер (203) может содержать аппаратные средства, программное обеспечение или их комбинацию, позволяющие обеспечить или реализовать аспекты раскрываемого изобретения, как более подробно описывается ниже. Битовый поток кодированного видео (204) может содержать меньший объем данных по сравнению с потоком отсчетов и может храниться на сервере потоковой передачи (205) для последующего использования. Один или более клиентов потоковой передачи (206) могут обращаться к потоковому серверу (205), чтобы получать битовые потоки видео (209), которые могут быть копиями битового потока кодированного видео (204).
[0056] В вариантах осуществления сервер потоковой передачи (205) может также функционировать как сетевой элемент с поддержкой мультимедиа (MANE, Media-Aware Network Element). Например, сервер потоковой передачи (205) может быть сконфигурирован таким образом, чтобы ограничивать битовый поток кодированного видео (204) и подбирать потенциально различные битовые потоки для одного или более клиентов потоковой передачи (206). В некоторых вариантах осуществления MANE может быть реализован в системе потоковой передачи (200) отдельно от сервера потоковой передачи (205).
[0057] Клиенты потоковой передачи (206) могут содержать видеодекодер (210) и дисплей (212). Видеодекодер (210) может, например, декодировать битовый поток видео (209), который является входящей копией битового потока кодированного видео (204), и создавать исходящий поток отсчетов видео (211), который может воспроизводиться на дисплее (212) или другом устройстве воспроизведения (не показано). В некоторых системах потоковой передачи данных битовые потоки видео (204, 209) могут кодироваться по определенным стандартам кодирования/сжатия видео. Примером такого стандарта, в частности, может служить Рекомендация МСЭ-Т Н.265. В настоящее время разрабатывается стандарт кодирования видео, получивший неофициальное название Versatile Video Coding (VVC). Описываемые варианты осуществления могут использоваться в контексте стандарта VVC.
[0058] На фиг. 3 показан пример структурной схемы видеодекодера (210), подключенного к дисплею (212), в соответствии с одним из вариантов осуществления настоящего изобретения.
[0059] Видеодекодер (210) может содержать канал (312), приемник (310), буферную память (315), энтропийный декодер/анализатор (320), блок масштабирования / обратного преобразования (351), блок внутрикадрового предсказания (352), блок предсказания с компенсацией движения (353), агрегатор (355), блок петлевого фильтра (356), память опорных изображений (357) и память текущего изображения (358). По меньшей мере в одном варианте осуществления видеодекодер (210) может содержать интегральную схему, ряд интегральных схем и/или другие электронные схемы. Видеодекодер (210) также может быть частично или полностью реализован в виде программного обеспечения, работающего на одном или более процессорах с соответствующей памятью.
[0060] В настоящем и прочих вариантах осуществления приемник (310) может принимать одну или более кодированных видеопоследовательностей, которые должны декодироваться декодером (210) по одной кодированной видеопоследовательности в один момент времени, при этом декодирование каждой кодированной видеопоследовательности осуществляется независимо от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть получена из канала (312), который может быть аппаратно-программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные наряду с другими данными, например кодированными аудиоданными и/или вспомогательными данными, которые могут передаваться использующим их соответствующим объектам (не показаны). Приемник (310) может отделить кодированную видеопоследовательность от других данных. Для устранения влияния сетевого джиттера между приемником (310) и энтропийным декодером/анализатором (320) (далее - анализатор) может быть установлена буферная память (315). Если приемник (310) принимает данные от устройства хранения/передачи с достаточной пропускной способностью и возможностью управления или от изосинхронной сети, буферная память (315) может не использоваться или иметь небольшой объем. При использовании в пакетных сетях с негарантированной доставкой данных, таких как Интернет, может потребоваться буферная память (415), которая будет иметь относительно большой объем и может быть адаптивной.
[0061] Видеодекодер (210) может содержать анализатор (320) для восстановления символов (321) из видеопоследовательности, подвергшейся энтропийному кодированию. Категории этих символов содержат, например, информацию для управления работой декодера (210), а также, возможно, информацию для управления устройством воспроизведения, в частности дисплеем (212), которое может быть подключено к декодеру, как показано на фиг. 2. Управляющая информация для устройств(-а) воспроизведения может быть представлена, например, в виде сообщений информации для дополнительной оптимизации (SEI, Supplementary Enhancement Information) или фрагментов набора параметров информации об удобстве использования изображения (VUI, Video Usability Information) (не показано). Анализатор (320) может осуществлять анализ / энтропийное декодирование полученной кодированной видеопоследовательности. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать принципам, хорошо известным специалистам в данной области, в частности, кодированию с переменной длиной, кодированию Хаффмана, арифметическому кодированию с учетом или без учета контекста и т.д. Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. В подгруппы могут входить группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и т.д. Анализатор (320) может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0062] Анализатор (320) может выполнять операцию энтропийного декодирования / анализа видеопоследовательности, полученной из буферной памяти (315), для создания символов (321).
[0063] Восстановление символов (321) может использовать множество различных единиц в зависимости от типа кодированного видеоизображения или его частей (например, интер-изображение и интра-изображение, интер-блок и интра-блок) и других факторов. Состав и характер использования единиц может регулироваться управляющей информацией подгруппы, которая была извлечена анализатором (320) из кодированной видеопоследовательности. Поток такой управляющей информации подгруппы между анализатором (320) и различными блоками ниже для простоты не показан.
[0064] Помимо уже упомянутых функциональных блоков декодер 210 может быть концептуально разделен на ряд функциональных блоков, как описано ниже. На практике, в условиях коммерческих ограничений, многие из этих блоков тесно взаимодействуют друг с другом и могут, по меньшей мере частично, интегрироваться друг с другом. Однако при описании настоящего изобретения целесообразно использовать концептуальное деление на указанные ниже функциональные единицы.
[0065] Один блок представляет собой блок масштабирования / обратного преобразования (351). Блок масштабирования / обратного преобразования (351) может получать от анализатора (320) квантованный коэффициент преобразования, а также управляющую информацию в виде символа(-ов) (321), включая данные об используемом типе преобразования, размере блока, коэффициенте квантования, матрице масштабирования квантования и т.д. На выходе блока масштабирования / обратного преобразования (351) могут быть получены блоки, содержащие значения отсчетов, которые могут быть поданы в агрегатор (355).
[0066] В некоторых случаях выходные отсчеты блока масштабирования / обратного преобразования (351) могут относиться к блоку внутреннего кодирования, то есть блоку, который не использует информацию предсказания на основе ранее восстановленных изображений, но может использовать информацию предсказания на основе ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена блоком внутрикадрового предсказания (352). В некоторых случаях блок внутрикадрового предсказания (352) формирует блок таких же размера и формы, как и восстанавливаемый блок, используя информацию об уже восстановленных соседних блоках, извлеченную из текущего (частично восстановленного) изображения, находящегося в памяти текущего изображения (358). В некоторых случаях агрегатор (355) добавляет индивидуально для каждого отсчета информацию для предсказания, которую создает блок внутрикадрового предсказания (352), к информации выходного отсчета, поступающей от блока масштабирования / обратного преобразования (351).
[0067] В других случаях выходные отсчеты блока масштабирования / обратного преобразования (351) могут относиться к блоку межкадрового кодирования с возможной компенсацией движения. В этом случае блок предсказания с компенсацией движения (353) может обращаться к памяти опорных изображений (357) для получения отсчетов, используемых для предсказания. После компенсации движения полученных отсчетов в соответствии с символами (321), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (355) к выходу блока масштабирования / обратного преобразования (351) (в данном случае называемому остаточными отсчетами или остаточным сигналом), чтобы сформировать информацию о выходных отсчетах. Адреса в памяти опорных изображений (357), по которым блок предсказания с компенсацией движения (353) извлекает отсчеты предсказания, могут определяться векторами движения. Векторы движения могут быть доступны блоку предсказания с компенсацией движения (353) в виде символов (321), которые могут быть представлены, например, компонентами X, Y и опорным изображением. Компенсация движения также может предусматривать интерполяцию значений отсчетов, получаемых из памяти опорных изображений (357), когда используются точные векторы движения на уровне суботсчетов, механизмы предсказания вектора движения и т.д.
[0068] Выходные отсчеты агрегатора (355) могут подвергаться различным методам петлевой фильтрации в блоке петлевого фильтра (356). В технологиях сжатия видео могут использоваться технологии петлевой фильтрации под управлением параметров, содержащихся в битовом потоке кодированного видео и доступных блоку петлевого фильтра (356) в виде символов (321) от анализатора (320), но они также могут реагировать на метаинформацию, полученную в процессе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и прошедшие петлевую фильтрацию значения отсчетов.
[0069] На выходе блока петлевого фильтра (356) может присутствовать поток отсчетов, который может подаваться на устройство воспроизведения, например дисплей (212), а также сохраняться в памяти опорных изображений (357) с целью последующего использования для межкадрового предсказания.
[0070] Некоторые кодированные изображения после полной реконструкции могут служить в качестве опорных изображений для будущего предсказания. Когда кодированное изображение полностью восстановлено и идентифицировано как опорное изображение (например, анализатором (320)), текущее опорное изображение может стать частью памяти опорных изображений (357), при этом память текущего изображения может быть перераспределена под свежее изображение до начала восстановления следующего кодированного изображения.
[0071] Видеодекодер (210) может выполнять операции декодирования в соответствии с заранее заданной технологией сжатия видео, например, рекомендацией МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, установленному используемыми технологией или стандартом сжатия, в том смысле, что она соответствует как самому синтаксису технологии или стандарта сжатия видео, определенному в документации по технологии сжатия видео или стандарте, так и конкретным профилям, которые закреплены в этих документах. Для соответствия отдельным требованиям таких технологии или стандарта сжатия видео может также потребоваться, чтобы сложность кодированной видеопоследовательности не выходила за рамки, определяемые уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и так далее. Ограничения, определяемые уровнями, в некоторых случаях могут быть дополнительно сужены спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, которые передаются в кодированной видеопоследовательности.
[0072] В одном из вариантов осуществления приемник (310) может принимать дополнительные (избыточные) данные вместе с кодированным видео. Дополнительные данные могут быть частью кодированной(-ых) последовательности(-ей) видео. Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или более точного восстановления исходных видеоданных. Дополнительные данные могут быть представлены, например, в виде временных, пространственных слоев или слоев улучшения SNR, избыточных слайсов, избыточных изображений, кодов прямой коррекции ошибок и так далее.
[0073] На фиг. 4 показан пример структурной схемы видеокодера (203), подключенного к источнику видео (201), в соответствии с одним из вариантов осуществления настоящего изобретения.
[0074] Видеокодер (203) может содержать, например, кодер, представляющий собой кодер источника (430), механизм кодирования (432), (локальный) декодер (433), память опорных изображений (434), предсказатель (435), передатчик (440), энтропийный кодер (445), контроллер (450) и канал (460).
[0075] Видеокодер (203) может принимать отсчеты видео от источника видео (201) (не являющегося частью кодера), который может захватывать видеоизображение(-я), подлежащее(-ие) кодированию кодером (203).
[0076] Источник видео (201) может предоставить кодеру (203) для кодирования исходную видеопоследовательность в виде цифрового потока отсчетов видео, которые могут иметь любую подходящую разрядность (например 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например ВТ.601, Y CrCB, RGB, …), и любую подходящую структуру дискретизации (например Y CrCb 4:2:0, Y CrCb 4:4:4). В системах сервисов мультимедиа источником видео (201) может быть устройство хранения, в котором хранится предварительно подготовленное видео. В системе видеоконференцсвязи источником видео (203) может быть камера, которая захватывает локальное изображение в виде видеопоследовательности. Видеоданные могут предоставляться в виде множества отдельных изображений, которые передают движение при последовательном просмотре. Сами изображения могут быть представлены в виде пространственного массива пикселей, где каждый пиксель может состоять из одного или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области легко понять взаимосвязь между пикселями и отсчетами. В приведенном ниже описании фигурируют отсчеты.
[0077] Согласно одному из вариантов осуществления кодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в режиме реального времени или в условиях любых других временных ограничений, какие требует приложение. Обеспечение надлежащей скорости кодирования является одной из функций контроллера (450). Контроллер (450) может также управлять другими функциональными блоками, как описано ниже, и быть функционально связан с другими функциональными блоками. Для большей наглядности эти связи не изображены. В число параметров, устанавливаемых контроллером (450), могут входить параметры, относящиеся к управлению скоростью (пропуск изображений, квантователь, значение лямбда в методах оптимизации по критерию скорость-искажения,…), размер изображения, компоновка группы изображений (GOP), максимальный диапазон поиска вектора движения и так далее. Специалист в данной области может легко определить другие функции контроллера (450), которые могут относиться к видеокодеру (203), оптимизированному под определенную конструкцию системы.
[0078] Некоторые видеокодеры работают по схеме, которая известна специалистам в данной области как «петля кодирования». Если крайне упростить описание, то петля кодирования может состоять из кодирующей части кодера источника (430) (отвечающего, например, за создание символов на основе входного изображения, подлежащего кодированию, и опорного(-ых) изображения(-й)), и (локального) декодера (433) встроенного в кодер (203), который восстанавливает символы, чтобы создать отсчеты, которые также создавал бы (удаленный) декодер в некоторых технологиях сжатия видео, когда сжатие между символами и битовым потоком кодированного видео осуществляется без потерь. Поток восстановленных отсчетов может вводиться в память опорных изображений (434). Поскольку декодирование потока символов приводит к результатам с точностью до бита независимо от местоположения декодера (локального или удаленного), содержимое памяти опорных изображений локального и удаленного кодера также совпадает с точностью до бита. Другими словами, часть кодера, отвечающая за предсказание, «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые «видит» декодер при использовании предсказания в процессе декодирования. Этот фундаментальный принцип синхронности опорного изображения (и смещения, возникающего в том случае, когда невозможно поддерживать синхронность, например, из-за ошибок в канале) известен специалистам в данной области.
[0079] «Локальный» декодер (433) может функционировать так же, как и «удаленный» декодер (210), который уже был подробно рассмотрен выше при описании фиг. 3. Однако поскольку символы доступны, а кодирование и/или декодирование символов энтропийным кодером (445) и анализатором (320) в кодированную видеопоследовательность может быть выполнено без потерь, в локальном декодере (433) части декодера (210), связанные с энтропийным декодированием, в том числе канал (312), приемник (310), буферная память (315) и анализатор (320), могут быть реализованы не полностью.
[0080] Здесь следует оговориться, что любая технология декодирования, кроме анализа и/или энтропийного декодирования, которая применяется в декодере, может потребоваться и в соответствующем кодере в практически идентичном функциональном виде. По этой причине описание настоящего изобретения посвящено главным образом работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными по отношению к всесторонне описанным технологиям декодирования. Лишь некоторые аспекты требуют более подробного описания, которое приводится ниже.
[0081] Кодер источника (430) во время работы может выполнять предиктивное кодирование с компенсацией движения, когда входное изображение кодируется с предсказанием по одному или более кодированным ранее изображениям из видеопоследовательности, которые были определены как "опорные изображения". В этом случае механизм кодирования (432) кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения(-й), которые могут быть выбраны в качестве источника(-ов) предсказания для входного изображения.
[0082] Локальный видеодекодер (433) может декодировать кодированные
видеоданные изображений, которые могут быть определены как опорные изображения, на основании символов, создаваемых кодером источника (430). Процессы, выполняемые в механизме кодирования (432), преимущественно могут быть процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) воспроизводит процессы декодирования, которые могут быть выполнены видеодекодером для опорных изображений, и может обеспечить хранение восстановленных опорных изображений в памяти опорных изображений (434). Таким образом кодер (203) может локально хранить копии восстановленных опорных изображений, которые по содержанию идентичны восстановленным опорным изображениям, получаемым удаленным видеодекодером (в отсутствие ошибок при передаче).
[0083] Предсказатель (435) может выполнять поиск предсказаний для механизма кодирования (432). То есть для нового кодируемого изображения предсказатель (435) может искать в памяти опорных изображений (434) данные отсчета (в виде кандидатов в опорные блоки пикселей) или определенные метаданные, такие как векторы движения опорного изображения, формы блоков и так далее, которые могут служить подходящим источником предсказания для новых изображений. При поиске подходящих источников предсказания предсказатель (435) может оперировать соотношением между блоками отсчетов и блоками пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (435), источники предсказания для входного изображения могут быть получены из нескольких опорных изображений, хранящихся в памяти опорных изображений (434).
[0084] Контроллер (450) может управлять операциями кодирования видеокодера (430), в том числе, например, задавать параметры и параметры подгрупп, используемые для кодирования видеоданных.
[0085] Выходные данные всех упомянутых выше функциональных блоков могут быть подвергнуты энтропийному кодированию в энтропийном кодере (445).
Энтропийный кодер переводит символы, сформированные различными функциональными блоками, в кодированную видеопоследовательность, сжимая эти символы без потерь посредством технологий, известных специалистам в данной области, таких как кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.
[0086] Передатчик (440) может буферизировать кодированную(-ые) последовательность(-и) видео, созданную(-ые) энтропийным кодером (445), для подготовки к передаче по каналу связи (460), который может быть аппаратным/программным подключением к устройству хранения, где будут храниться кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные от видеокодера (430) с другими передаваемыми данными, например кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0087] Контроллер (450) может управлять работой кодера (203). В процессе кодирования контроллер (450) может присвоить каждому кодированному изображению определенный тип, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения могут часто быть отнесены к интракадру (изображение типа I), изображению с предсказанием (изображение типа Р) или изображению с двунаправленным предсказанием (изображение типа В).
[0088] Интра-кадр (изображение типа I) может кодироваться и декодироваться без использования любого другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы интракадров, включая, например, изображения мгновенного обновления декодера (IDR). Специалистам в данной области известны эти варианты изображений типа I и их соответствующие применения и признаки.
[0089] Изображение с предсказанием (изображение типа Р) может кодироваться и декодироваться с помощью внутрикадрового или межкадрового предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0090] Изображение с двунаправленным предсказанием (изображение типа В) может кодироваться и декодироваться с помощью внутрикадрового или межкадрового предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогичным образом, изображения с множественным предсказанием для восстановления одного блока могут использовать более двух опорных изображений и связанных с ними метаданных.
[0091] Исходные изображения обычно могут быть пространственно разбиты на множество блоков отсчетов (например, блоки размером 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодироваться поблочно. Блоки могут быть кодироваться с предсказанием по другим (уже кодированным) блокам согласно типу кодирования, применяемому к соответствующим изображениям блоков. Например, блоки изображений типа I могут кодироваться без предсказания или с предсказанием по уже кодированным блокам того же изображения (пространственное предсказание или внутрикадровое предсказание). Блоки пикселей изображений типа Р могут кодироваться без предсказания, с пространственным или временным предсказанием по одному ранее кодированному опорному изображению. Блоки изображений типа В могут кодироваться без предсказания, с пространственным или временным предсказанием по одному или двум ранее кодированным опорным изображениям.
[0092] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее заданным стандартом или технологией кодирования видео, например рекомендацией МСЭ-Т Н.265. Видеокодер (203) в процессе своей работы может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Таким образом, кодированные видеоданные могут соответствовать синтаксису, определенному используемыми технологией или стандартом кодирования видео.
[0093] В одном из вариантов осуществления передатчик (440) может передавать дополнительные данные вместе с кодированным видео. Видеокодер (430) может включать в себя такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут включать в себя временные, пространственные уровни и уровни улучшения SNR, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения информации дополнительного улучшения (SEI), фрагменты набора параметров информации об удобстве использования (VUI) и т.д.
[0094] Варианты осуществления настоящего изобретения могут модифицировать действующую спецификацию VVC и реализовывать коды и классы типов блоков NAL определенные в таблице 2 выше.
[0095] «Изображение внутренней точки произвольного доступа» (или «изображение IRAP») может быть изображением, которое для межкадрового предсказания в процессе декодирования не обращается ни к каким изображениям кроме себя самого и может быть изображением чистого произвольного доступа (CRA) или изображением мгновенного обновления декодирования (IDR). Первое (в порядке декодирования) изображение в битовом потоке может быть изображением IRAP или изображением с постепенным обновлением декодирования (GDR). При наличии в нужный момент необходимых наборов параметров, изображение IRAP и все следующие за ним (в порядке декодирования) изображения в кодированной видеопоследовательности (CVS), не являющиеся изображениями RASL, могут быть правильно декодированы без декодирования каких-либо изображений, предшествующих (в порядке декодирования) изображению IRAP.
[0096] «Последующее изображение» (trailing picture) может быть изображением, которое не является изображением IRAP и следует (в порядке вывода) за связанным с ним изображением IRAP, при этом оно не является изображением пошагового доступа к временному подуровню (STSA).
[0097] «Изображение пошагового доступа к временному подуровню» (или «изображение STSA») может быть изображением, которое не использует для внешнего предсказания изображения с тем же идентификатором Temporalld, что и изображение STSA. Изображения, следующие (в порядке декодирования) за изображением STSA с тем же идентификатором Temporalld, что и изображение STSA, не могут использовать для внешнего предсказания изображения, предшествующие (в порядке декодирования) изображению STSA, с тем же Temporalld, что и изображение STSA. Изображение STSA может обеспечить переключение вверх на подуровень, содержащий изображение STSA, с ближайшего нижнего подуровня. У изображений STSA идентификатор Temporalld может быть больше 0.
[0098] «Опережающее пропускаемое изображение произвольного доступа» (или «изображение RASL») может быть изображением, которое является опережающим изображением для связанного изображения CRA. Если у связанного изображения CRA значение флага NoIncorrectPicOutputFlag равно 1, изображение RASL не может выводиться и не может правильно декодироваться, поскольку изображение RASL может содержать ссылки на изображения, которые отсутствуют в битовом потоке. Изображения RASL не могут использоваться в качестве опорных изображений в процессе декодирования изображений, не являющихся изображениями RASL. Если изображения RASL присутствуют, все они могут предшествовать (в порядке декодирования) всем последующим изображениям того же самого связанного изображения CRA.
[0099] «Опережающее декодируемое изображение произвольного доступа» (или «изображение RADL») может быть опережающим изображением, которое не используется как опорное изображение в процессе декодирования последующих изображений того же самого связанного изображения IRAP. Если изображения RADL присутствуют, все они могут предшествовать (в порядке декодирования) всем последующим изображениям того же самого связанного изображения IRAP.
[0100] «Изображение мгновенного обновления декодирования» (или «изображение IDR») может быть изображением, с которым не связаны опережающие изображения, присутствующие в битовом потоке (например, со значением параметра nal_unit_type равным IDR_N_LP), или с которым не связаны изображения RASL, присутствующие в битовом потоке, но с которым могут быть связаны изображения RADL в битовом потоке (например, со значением параметра nal_unit_type равным IDR_W_RADL).
[0101] «Изображение чистого произвольного доступа» (или «изображение CRA») может быть изображением, которое для внешнего предсказания в процессе декодирования не обращается ни к каким изображениям кроме себя самого и может быть первым (в порядке декодирования) изображением в битовом потоке или может появляться в битовом потоке позже. С изображением CRA могут быть связаны изображения RADL или RASL. Если у изображения CRA значение флага NoIncorrectPicOutputFlag равно 1, связанные изображения RASL не могут выводиться декодером, поскольку они не могут правильно декодироваться, так как могут содержать ссылки на изображения, которые отсутствуют в битовом потоке.
[0102] Согласно одному или более вариантам осуществления, если элемент синтаксиса mixed nalu_types_in_pic_flag набора PPS, на который ссылается кодированное изображение, равен 1, то тип кодированного изображения определяется (например, декодером) следующим образом:
[0103] (А) Если параметр nal_unit_type блока NAL изображения равен TRAIL_NUT, а параметр nal_unit_type другого блока NAL изображения находится в диапазоне от IDR_W_RADL до CRA_NUT, то изображение определяется как последующее изображение.
[0104] (В) Если параметр nal_unit_type блока NAL изображения равен RADLJNUT, а параметр nal_unit_type другого блока NAL изображения находится в диапазоне от IDRWRADL до CRA_NUT, то изображение определяется как изображение RADL.
[0105] (С) Если параметр nal_unit_type блока NAL изображения равен STSA_NUT, а параметр nal_unit_type другого блока NAL изображения равен IDR_W_RADL или IDR_N_LP, то изображение определяется как изображение STSA.
[0106] (D) Если параметр nal_unit_type блока NAL изображения равен STSA_NUT, а параметр nal_unit_type другого блока NAL изображения равен CRA_NUT, то изображение определяется как последующее изображение.
[0107] (Е) Если параметр nal_unit_type блока NAL изображения равен GDR_NUT, а параметр nal_unit_type другого блока NAL изображения находится в диапазоне от IDR_W_RADL до CRA_NUT, то изображение определяется как последующее изображение.
[0108] Согласно одному или более вариантам осуществления, если элемент синтаксиса mixed_nalu_types_in_pic_flag набора PPS, на который ссылается кодированное изображение, равен 1, то тип кодированного изображения определяется (например, декодером) как последующее изображение.
[0109] Описанный выше аспект может обеспечить решение «проблемы 1», описанной выше в разделе «Сущность изобретения».
[0110] Согласно одному или нескольким вариантам осуществления смешивание блоков STSA NAL с блоками IRAP NAL может быть запрещено.
[0111] Например, для блоков NAL VCL любого отдельного изображения могут применяться следующие правила:
[0112] Если значение флага mixed_nalu_types_in_pic flag равно 0, значение параметра nal_unit_type должно быть (ими может быть определено) одинаковым для всех блоков NAL кодированных слайсов изображения. Считается, что изображение или PU имеет тот же тип блока NAL, что и блоки NAL кодированного слайса изображения или PU.
[0113] В противном случае (если значение флага mixed_nalu_types_in_pic_flag равно 1), то один или более блоков NAL VCL должны все иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, а все остальные блоки NAL VCL должны иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type в диапазоне от RADL_NUT до RSV_VCL_6 включительно, или равное GDR_NUT или TRAIL_NUT.
[0114] Согласно одному из вариантов осуществления кодер может быть сконфигурирован таким образом, чтобы применять вышеизложенные правила для предотвращения смешивания блоков STSA_NAL с блоками IRAP_NAL. Согласно одному из вариантов осуществления декодер может быть сконфигурирован таким образом, чтобы определять значения блоков типа NAL на основании вышеизложенных правил.
[0115] Согласно одному или более вариантам осуществления ограничение Temporalld на STSA_NUT действующего проекта спецификации VVC JVET-P2001 может быть удалено.
[0116] То есть, например, в варианте осуществления настоящего изобретения можно не реализовывать ограничение, согласно которому идентификатор Temporalld не должен быть равен 0, если параметр nal_unit_type имеет значение STSA_NUT. Однако вариант осуществления может по-прежнему реализовывать ограничение, согласно которому, идентификатор Temporalld должен быть (или может быть определен) равным 0, если параметр nal_unit_type имеет значение в диапазоне от IDR_W_RADL до RSV_IRAP_12 включительно.
[0117] Согласно одному или нескольким вариантам осуществления может быть реализовано ограничение, согласно которому идентификатор Temporalld изображения с флагом mixed nalu_types_in_pic flag, равным 1, должен быть равен 0. Например, кодер или декодер по настоящему изобретению может определить идентификатор TemporallD изображения равным 0 на основании того, что флаг mixed nalu_types_inj_pic flag равен 1.
[0118] Описанные выше аспекты могут обеспечить решение «проблемы 2», описанной выше в разделе «Сущность изобретения».
[0119] Согласно одному или более вариантам осуществления элемент синтаксиса mixed_nalu_types_in_pic_flag может присутствовать в заголовке изображения или заголовке слайса вместо присутствия в наборе PPS. Пример элемента синтаксиса mixed nalu_types_in_pic flag в заголовке изображения приведен в теблице 3 ниже.
[0120] Если значение элемента синтаксиса mixed_nalu_types_in_pic_flag равно 1, то это может означать, что у каждого изображения, связанного с РН, есть более одного блока NAL VCL, при этом значения параметров nal_unit_type блоков NAL VCL различаются и изображение не является изображением IRAP. Если значение элемента синтаксиса mixed nalu_types_in_pic flag равно 0, то это может означать, что у каждого изображения, связанного с РН, есть один или более блоков NAL VCL, при этом блоки NAL VCL каждого изображения, связанного с РН, имеют одинаковые значения параметра nal_unit_type.
[0121] Если значение элемента синтаксиса no_mixed_nalu_types_in_pic_constraint_flag равно 1, значение флага mixed_nalu_types_in_pic_flag должно быть (или может быть определено) равным 0.
[0122] Согласно одному или более вариантам осуществления элемент синтаксиса mixed nalu_types_inj_pic flag может присутствовать в заголовке изображения или заголовке слайса с флагом присутствия в SPS.
[0123] Пример SPS с флагом присутствия (sps_mixed_nalu_types_present_flag) приведен в таблице 4 ниже.
[0124] Пример заголовка изображения с элементом синтаксиса mixed_nalu_types_in_pic_flag приведен в таблице 5 ниже.
[0125] Если значение элемента синтаксиса sps_mixed_nalu_types_present flag равно 1, то это может означать, что у нуля или более изображений, ссылающихся на этот набор SPS, есть более одного блока NAL VCL, при этом значения параметров nal_unit_type блоков NAL VCL различаются и изображение не является изображением IRAP. Если значение элемента синтаксиса sps mixed nalu_types_jtresentflag равно 0, то это означает, что у каждого изображения, ссылающегося на этот набор SPS, есть один или более блоков NAL VCL, при этом блоки NAL VCL каждого изображения, ссылающегося на этот набор PPS, имеют одинаковые значения параметра nal_unit_type.
[0126] Если значение элемента синтаксиса no mixed nalu_types_in_pic constraint flag равно 1, значение элемента синтаксиса sps_mixed_nalu_types_present_flag должно быть (или может быть определено) равным 0.
[0127] Если значение элемента синтаксиса mixed_nalu_types_in_pic_flag равно 1, то это может означать, что у каждого изображения, связанного с РН, есть более одного блока NAL VCL, при этом значения параметров nal_unit_type блоков NAL VCL различаются и изображение не является изображением IRAP. Если значение элемента синтаксиса mixed nalu_types_in_pic flag равно 0, то это может означать, что у каждого изображения, связанного с РН, есть один или более блоков NAL VCL, при этом блоки NAL VCL каждого изображения, связанного с РН, имеют одинаковые значения параметра nal_unit_type. Если флаг mixed nalu_types_in_pic flag отсутствует, его значение можно принять (например, в декодере) равным 0.
[0128] Описанные выше аспекты могут обеспечить решение «проблемы 3», описанной выше в разделе «Сущность изобретения».
[0129] Согласно одному или более вариантам осуществления флаг mixed nalu_types_injtic flag может быть заменен индикатором mixed_nalu_types_in_pic_idc.
[0130] Пример набора параметров изображения с элементом синтаксиса mixed_nalu_types_in_pic_idc приведен в таблице 6 ниже.
[0131] Если значение элемента синтаксиса mixed_nalu_types_in_pic_idc равно 1 или 2, то это может означать, что у каждого изображения, ссылающегося на этот набор PPS, есть более одного блока NAL VCL, при этом значения параметров nal_unit_type блоков NAL VCL различаются и изображение не является изображением IRAP. Если значение элемента синтаксиса mixed_nalu_types_in_pic_idc равно 0, то это может означать, что у каждого изображения, ссылающегося на этот набор PPS, есть один или более блоков NAL VCL, при этом блоки NAL VCL каждого изображения, ссылающегося на этот набор PPS, имеют одинаковые значения параметра nal_unit_type. Другие значения элемента синтаксиса mixed nalu_types_injtic idc могут быть зарезервированы МСЭ-Т ИСО/МЭК для использования в будущем.
[0132] Если значение элемента синтаксиса no_mixed_nalu_types_in_pic_constraint_idc равно 1, значение индикатора mixed nalu_types_injtic_idc должно быть (или может быть определено, например, декодером) равным 0.
[0133] Для каждого слайса со значением параметра nal_unit_type nalUnitTypeA в диапазоне от IDR_W_RADL до CRA_NUT включительно, в изображении picA, которое также содержит один или более слайсов с другим значением параметра nal_unit_type (т.е. значение индикатора mixed_nalu_types_in_pic_idc для изображения picA равно 1), могут применяться следующие правила:
[0134] (А) Слайс должен принадлежать (или может быть определен принадлежащим) субизображению subpicA, для которого значение соответствующего флага subpic_treated_as_pic_flag[i] равно 1.
[0135] (В) Слайс не должен принадлежать (или может быть определен не принадлежащим) субизображению picA, содержащему блоки NAL VCL с элементом синтаксиса nal_unit_type, не равным nalUnitTypeA.
[0136] (С) Для всех следующих (в порядке декодирования) единиц PU в последовательности CLVS ни список RefPicListf 0], ни список RefPicListf 1] слайса в субизображении subpicA не должны включать в активной записи какое-либо изображение, предшествующее (в порядке декодирования) picA.
[0137] Список RefPicList[0] может быть списком опорных изображений, который используется для межкадрового предсказания слайса Р или первым списком опорных изображений, используемых для межкадрового предсказания слайса В.
Список RefPicList[l] может быть вторым списком опорных изображений, используемых для межкадрового предсказания слайса В.
[0138] Для блоков NAL VCL любого отдельного изображения могут применяться следующие правила:
[0139] (А) Если значение элемента синтаксиса mixed_nalu_types_in_pic_idc равно 1, один или более блоков NAL VCL все должны иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, а все остальные блоки NAL VCL должны иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type в диапазоне от TRAIL_NUT до RSV VCL 6 включительно или равное GDR_NUT.
[0140] (А) Если значение элемента синтаксиса mixed nalu_types_in_pic_idc равно 2, один или более блоков NAL VCL все должны иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type равное RASL_NUT или RADL_NUT включительно или равное GDR_NUT, а все остальные блоки NAL VCL должны иметь (или могут быть определены как имеющие) определенное значение параметра nal_unit_type в диапазоне от TRAIL_NUT до RSV VCL 6 включительно, или равное GDR_NUT, при этом одно значение nal_unit_type отличается от другого значения nal_unit_type.
[0141] (С) В противном случае (если значение mixed_nalu_types_in_pic_idc равно 0), значение параметра nal_unit_type должно быть (ими может быть определено) одинаковым для всех блоков NAL кодированных слайсов изображения. Считается, что изображение или PU имеет тот же тип блока NAL, что и блоки NAL кодированного слайса изображения или PU.
[0142] Если значение индикатора mixed_nalu_types_in_pic_idc в наборе PPS, на который ссылается кодированное изображение, равно 1 или 2, изображение может быть определено (например, декодером) как последующее изображение.
[0143] Описанные выше аспекты могут обеспечить решение «проблемы 4», описанной выше в разделе «Сущность изобретения».
[0144] Согласно одному или более вариантам осуществления, если элемент синтаксиса mixed nalu_types_injpic flag изображения в уровне А равен 1, флаг mixed nalu_types_in jtic flag изображения в уровне В, который является опорным уровнем для уровня А, должен быть (или может быть определен) равным 1 в том же AU.
[0145] Описанный выше аспект может обеспечить решение «проблемы 5», описанной выше в разделе «Сущность изобретения».
[0146] Согласно одному или более вариантам осуществления, один или более битовых потоков кодированных видеоданных и содержащиеся в них структуры и элементы синтаксиса (такие как описанные выше блоки NAL VCL и наборы параметров) могут приниматься декодерами, описанными в настоящем изобретении, для декодирования полученных видеоданных. Декодеры, описанные в настоящем изобретении, могут декодировать кодированное изображение видео на основе блоков NAL VCL (например блоков NAL VCL (500), показанных на фиг. 5) кодированного изображения со смешанными типами блоков NAL VCL в соответствии с вариантами осуществления настоящего изобретения.
[0147] Например, в соответствии с фиг. 6 декодер (600) может содержать код декодирования (610), сконфигурированный таким образом, чтобы по меньшей мере один процессор декодера (600) декодировал кодированное изображение на основании блоков NAL VCL. Согласно одному или более вариантам осуществления код декодирования (610) может включать в себя код определения (620), сконфигурированный таким образом, чтобы по меньшей мере один процессор декодера (600), как описано в вариантах осуществления настоящего изобретения, (а) определял или ограничивал тип блока NAL одного или более блоков NAL VCL кодированного изображения на основании типа блока NAL другого одного или более блоков NAL VCL кодированного изображения или на основании индикатора (например флага), (b) определял или ограничивал тип кодированного изображения на основании типа блока NAL одного или более блоков NAL VCL кодированного изображения или на основании индикатора (например флага), (с) определял или ограничивал идентификатор TemporallD кодированного изображения на основании типа блока NAL одного или более блоков NAL VCL кодированного изображения или на основании индикатора (например, флага), и/или (d) определял или ограничивал индикатор (например флаг), который указывает, имеет ли кодированное изображение множество блоков NAL VCL смешанных типов блока NAL, на основании другого индикатора (например флага), который получен или определен.
[0148] Варианты осуществления настоящего изобретения могут использоваться по отдельности или комбинироваться в любом порядке. Кроме того, каждый из способов, кодеров и декодеров согласно настоящему изобретению может быть реализован схемой обработки (например одним или несколькими процессорами или одной или несколькими интегральными схемами). В одном из примеров один или более процессоров выполняют программу, которая хранится на машиночитаемом носителе.
[0149] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически храниться на одном или более машиночитаемых носителях. На фиг. 7 представлен пример компьютерной системы (900), которая подходит для реализации вариантов осуществления настоящего изобретения.
[0150] Компьютерное программное обеспечение может быть закодировано с помощью любого подходящего машинного кода или компьютерного языка, который может быть подвергнут сборке, компиляции, объединению или аналогичным механизмам для создания кода, содержащего инструкции, которые могут быть выполнены непосредственно или посредством интерпретации, выполнения микрокода и тому подобных действий центральными процессорами (CPU), графическими процессорами (GPU) и другими подобными устройствами.
[0151] Инструкции могут выполняться на различных типах компьютеров или их компонентов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и другие подобные устройства.
[0152] Показанные на фиг. 7 компоненты компьютерной системы (900) приведены в качестве примера и не подразумевают каких-либо ограничений в отношении области применения или функциональности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Также не следует трактовать конфигурацию компонентов с точки зрения каких-либо зависимостей или требований, относящихся к любому из компонентов, показанных в примере осуществления компьютерной системы (900), или их комбинации.
[0153] Компьютерная система (900) может содержать определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод данных одним или более пользователями посредством, например, тактильного ввода (в частности нажатием клавиш, пролистыванием, движением информационных перчаток), звукового ввода (в частности голосом, хлопками), визуального ввода (в частности жестами), обонятельного ввода (не показан). Устройства человеко-машинного интерфейса могут также использоваться для захвата информации от определенных носителей, не обязательно непосредственно связанных с сознательным вводом данных человеком, например аудио (в частности речь, музыка, звуки окружающей среды), изображения (в частности сканированные изображения, фотографические изображения, полученные с помощью фотокамеры), видео (в частности двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[0154] Устройства ввода человеко-машинного интерфейса могут содержать одно или более (показано только по одному) из следующих устройств: клавиатура (901), мышь (902), трекпад (903), сенсорный экран (910), информационная перчатка, джойстик (905), микрофон (906), сканер (907), камера (908).
[0155] Компьютерная система (900) может также содержать определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать органы чувств одного или более пользователей, используя, например, тактильный вывод, звук, свет и запах/вкус. Такие устройства вывода человеко-машинного интерфейса могут содержать тактильные устройства вывода (в частности тактильная обратная связь посредством сенсорного экрана (910), информационной перчатки или джойстика (905), но также могут использоваться устройства тактильной обратной связи, которые не служат устройствами ввода). Например, такими устройствами могут быть устройства вывода звука (в частности динамики (909), наушники (не показаны)), устройства визуального вывода (в частности экраны (910), в том числе ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждый из которых может иметь или не иметь возможности сенсорного ввода, каждый из которых может иметь или не иметь возможности тактильной обратной связи, причем некоторые из них могут быть способны обеспечивать двухмерный визуальный вывод или более чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не показаны), голографические дисплеи и дымовые баки (не показаны)), а также принтеры (не показаны).
[0156] Компьютерная система (900) может также содержать доступные пользователю устройства хранения данных и связанные с ними носители, в частности, оптические носители, включая CD/DVD ROM/RW (920) с CD/DVD или подобные им носители (921), флеш-накопители (922), съемные жесткие диски или твердотельные накопители (923), устаревшие магнитные носители, например ленты и дискеты (не показаны), специализированные устройства на основе ПЗУ/ASIC/IUiy, например защитные ключи (не показаны), и тому подобные устройства.
[0157] Специалисты в данной области также должны понимать, что в контексте настоящего изобретения термин «машиночитаемый носитель» не охватывает среду передачи, электромагнитные волны или другие кратковременные сигналы.
[0158] Компьютерная система (900) может также содержать интерфейс для подключения к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того сети могут быть локальными, глобальными, городскими, транспортными и промышленными, работающими в режиме реального времени, устойчивыми к задержкам и т.д. Примерами сетей могут служить локальные сети, например Ethernet, беспроводные локальные сети, сотовые сети, например GSM, 3G, 4G, 5G, LTE и т.п., телевизионные проводные или беспроводные глобальные цифровые сети, в том числе кабельное телевидение, спутниковое телевидение и наземное вещательное телевидение, транспортные и промышленные сети, в том числе CANBus, и т.п. Для некоторых сетей обычно требуются внешние адаптеры сетевого интерфейса, которые подключаются к определенным портам данных общего назначения или периферийным шинам (949) (например порты USB компьютерной системы (900); другие обычно интегрируются в ядро компьютерной системы (900) путем подключения к системной шине, как описано ниже (например интерфейс Ethernet в компьютерной системе ПК или интерфейс сотовой сети в компьютерной системе смартфона). С помощью любой из этих сетей компьютерная система (900) может взаимодействовать с другими объектами. Такое взаимодействие может быть однонаправленным только для приема (например, вещательного телевидения), однонаправленным только для передачи (например определенным устройствам CANbus по шине CANbus) или двунаправленным, например с другими компьютерными системами с использованием локальных или глобальных цифровых сетей. Такое взаимодействие может включать в себя взаимодействие с облачной вычислительной средой (955). Для каждой из описанных выше сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов.
[0159] Упомянутые выше устройства человеко-машинного интерфейса, доступные пользователю устройства хранения данных и сетевые интерфейсы (954) могут быть подключены к ядру (940) компьютерной системы (900).
[0160] Ядро (940) может содержать один или более центральных процессоров (CPU) (941), графических процессоров (GPU) (942), специализированные программируемые блоки обработки в виде программируемых логических интегральных схем (FPGA) (943), аппаратные ускорители для определенных задач (944) и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (945), оперативным запоминающим устройством (ОЗУ) (946), внутренними устройствами хранения большой емкости, такими как недоступные пользователю внутренние жесткие диски, твердотельные накопители и тому подобные устройства (947), могут быть подключены через системную шину (948). В некоторых компьютерных системах системная шина (948) может быть доступна посредством одного или более физических разъемов для возможности расширения за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к системной шине ядра (948), либо через периферийную шину (949). Периферийная шина может быть построена на архитектуре PCI, USB и т.п. Графический адаптер 950 может входить в состав ядра 940.
[0161] CPU (941), GPU (942), FPGA (943) и ускорители (944) могут выполнять определенные инструкции, которые в совокупности могут образовывать вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (945) или ОЗУ (946). В ОЗУ (946) могут также храниться временные данные, тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве (947). Быстрое сохранение и извлечение в любом из запоминающих устройств может обеспечиваться за счет использования кеш-памяти, которая может быть тесно связана с одним или более CPU (941), GPU (942), запоминающим устройством (947), ПЗУ (945), ОЗУ (946) и т.п.
[0162] В машиночитаемом носителе может храниться компьютерный код для выполнения различных операций, реализуемых компьютером. Носитель и компьютерный код могут быть специально разработаны и сконструированы для целей настоящего изобретения или могут быть хорошо известны и доступны специалистам в области компьютерного программного обеспечения.
[0163] В качестве примера и не в целях ограничения, компьютерная система с архитектурой (900) и, в частности, ядро (940) могут обеспечивать функциональные возможности в результате того, что процессор(-ы) (включая CPU, GPU, FPGA, ускорители и т.п.) выполняет(-ют) программное обеспечение, записанное на одном или более физических машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступными пользователю запоминающими устройствами большой емкости, как было описано выше, а также определенными физическими запоминающими устройствами ядра (940), такими как внутреннее запоминающее устройство ядра (947) или ПЗУ (945). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (940). Машиночитаемый носитель может состоять из одного или более запоминающих устройств или микросхем в зависимости от конкретных потребностей. Под управлением программного обеспечения ядро (940) и, в частности, входящие в него процессоры (включая CPU, GPU, FPGA и т.п.) могут выполнять определенные процессы или отдельные части определенных процессов, описанные в настоящем документе, включая определение структур данных, хранящихся в ОЗУ (946), и модификацию таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы компьютерная система может обеспечивать функциональные возможности за счет аппаратной или иным образом реализованной в электрической схеме логики (например, ускоритель (944)), которая может работать вместо программного обеспечения или вместе с ним для выполнения отдельных процессов или отдельных частей отдельных процессов, описанных в настоящем документе. Под программным обеспечением может подразумеваться логика, и наоборот, когда это уместно. Под машиночитаемым носителем может пониматься схема (например интегральная схема (ИС)), в которой хранится программное обеспечение для выполнения, или схема, воплощающая логику для выполнения, или и то, и другое, когда это уместно. Настоящее изобретение распространяется на любую приемлемую комбинацию аппаратных средств и программного обеспечения.
[0164] Хотя выше описано несколько не накладывающих ограничений примеров осуществления, в объем изобретения также включаются возможные изменения, модификации и различные эквиваленты. Таким образом следует понимать, что специалисты в данной области смогут разработать многочисленные системы и способы, которые, несмотря на то, что они явно не представлены или не описаны в настоящем документе, реализуют принципы настоящего изобретения и, следовательно, соответствуют его сущности и объему.