СПОСОБ И УСТРОЙСТВО ДЛЯ РАЗДЕЛЕНИЯ ИЗОБРАЖЕНИЯ
METHOD AND DEVICE FOR IMAGE SEPARATION

Область техники, к которой относится изобретение
Настоящее изобретение относится к области видеокодирования, а точнее, к способу и устройству для разделения изображения (picture partition).
Уровень техники
В настоящее время интернет-технологии непрерывно усовершенствуются, материальная и духовная культура людей все больше обогащается, возрастает потребность в приложениях видео, особенно видео высокой четкости, в интернете. Однако видео высокой четкости содержит довольно большой объем данных. Для передачи видео высокой четкости в интернете с ограниченной полосой пропускания, необходимо сначала решить техническую задачу, связанную с кодированием и декодированием видео. Кодирование видео используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат и видеоконференцсвязь, диски DVD и Blu-ray, системы сбора и редактирования контента видео и приложения для видеокамер безопасности.
Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Например, блок предсказания генерируется посредством пространственного (внутреннее изображение) предсказания и/или временного (внешнего) предсказания. Соответственно, режим предсказания может включать в себя режим внутреннего предсказания (пространственное предсказание) и режим внешнего предсказания (временное предсказание). Набор режимов внутреннего предсказания может включать в себя 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усредненный) и планарный режим, или направленные режимы, определенные в H.265; или может включать в себя 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усредненный) и планарный режим, или направленные режимы, определенные в H.266, находящемся в стадии разработки. Набор режимов внешнего предсказания зависит от доступного опорного изображения и другого параметра внешнего предсказания, например, в зависимости от использования всего опорного изображения или только части опорного изображения.
Используемое в настоящее время видео, как правило, является цветным видео и включает в себя компонент цветности в дополнение к компоненту яркости. Следовательно, помимо кодирования и декодирования компонента яркости, необходимо также кодировать и декодировать компонент цветности. Однако эффективность кодирования и декодирования в традиционной технологии сравнительно невысока.
Сущность изобретения
Варианты осуществления настоящего изобретения (или этого раскрытия) предоставляют устройство и способ разделения изображения.
Согласно первому аспекту вариант осуществления настоящего изобретения относится к способу разделения изображения. Способ выполняется устройством для декодирования или кодирования видеопотока. Способ включает в себя: определение режима разделения текущего узла, где текущий узел включает в себя блок яркости и блок цветности; определение, на основании режима разделения текущего узла и размера текущего узла, что блок цветности текущего узла дополнительно не разделяется; и, когда блок цветности текущего узла больше не разделяется, разделение блока яркости текущего узла на основании режима разделения текущего узла.
Согласно способу в первом аспекте, когда блок цветности текущего узла дополнительно не разделяется, можно разделить только блок яркости текущего узла, тем самым, повышая эффективность кодирования и декодирования, снижая максимальную пропускную способность кодека и облегчая реализацию кодека.
Согласно второму аспекту вариант осуществления настоящего изобретения относится к устройству для декодирования видеопотока, включающее в себя процессор и память. В памяти хранится инструкция, и инструкция позволяет процессору выполнять способ согласно первому аспекту.
Согласно третьему аспекту вариант осуществления настоящего изобретения относится к устройству для кодирования видеопотока, включающее в себя процессор и память. В памяти хранится инструкция, и инструкция позволяет процессору выполнять способ согласно первому аспекту.
Согласно четвертому аспекту предлагается машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию; и когда инструкция выполняется, один или несколько процессоры выполнены с возможностью кодировать видеоданные. Инструкция позволяет одному или нескольким процессорам выполнять способ согласно любому возможному варианту осуществления первого аспекта.
Согласно пятому аспекту вариант осуществления настоящего изобретения относится к компьютерной программе, включающей в себя программный код. Когда программный код выполняется на компьютере, выполняется способ согласно любому возможному варианту осуществления первого аспекта.
На прилагаемых чертежах и в нижеследующих описаниях приведены подробности одного или более вариантов осуществления. Другие признаки, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
Для более четкого описания технических решений в вариантах осуществления настоящего изобретения или уровня техники, ниже описаны сопроводительные чертежи для описания вариантов осуществления настоящего изобретения или уровня техники.
Фиг. 1A является блок-схемой примера системы кодирования видео для реализации варианта осуществления настоящего изобретения;
фиг. 1B является блок-схемой примера системы кодирования видео, включающей в себя один или два кодера 20 на фиг. 2 и декодер 30 на фиг. 3;
фиг. 2 является блок-схемой, показывающей примерную структуру видеокодера для реализации варианта осуществления настоящего изобретения;
фиг. 3 является блок-схемой, показывающей примерную структуру видеодекодера для реализации варианта осуществления настоящего изобретения;
фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
фиг. 5 является блок-схемой, иллюстрирующей пример другого устройства кодирования или другого устройства декодирования;
фиг. 6 показывает пример примерной сетки в YUV формате;
фиг. 7А-фиг. 7E показывают пять различных типов разделения;
фиг. 8 показывает режим разделения дерева квадрантов плюс двоичного дерева;
фиг. 9 является блок-схемой алгоритма способа согласно первому варианту осуществления настоящего изобретения;
фиг. 10 является блок-схемой алгоритма этапа 906 в варианте 1 осуществления настоящего изобретения; и
фиг. 11 показывает блок-схему алгоритма способа согласно третьему варианту осуществления настоящего изобретения.
В дальнейшем идентичные ссылочные позиции представляют идентичные или, по меньшей мере, функционально эквивалентные признаки, если не указано иное.
Описание вариантов осуществления
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. В области видеокодирования термины «изображение (picture)», «кадр (frame)» и «изображение (image)» могут использоваться как синонимы. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает на кодирование видео или декодирование видео. Кодирование видео выполняется на стороне источника, например, путем обработки (например, путем сжатия) необработанных видеоизображений, чтобы уменьшить объем данных, требуемых для представления видеоизображений, для более эффективного хранения и/или передачи. Декодирование видео выполняется на стороне назначения и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоизображений. «Кодирование» видеоизображений в вариантах осуществления следует понимать как «кодирование» или «декодирование» видеопоследовательности. Комбинация компонентов кодирования и компонентов декодирования также называется кодеком (кодирование и декодирование).
Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, на стороне кодера видео обычно обрабатывается, то есть, кодируется на уровне блока (который также называется блоком изображения или видеоблоком), например, с использованием пространственного (внутреннего изображения) предсказание и/или временного (внешнего изображения) предсказания для генерирования блока предсказания, вычитания блока предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразования остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты). На стороне декодера к закодированному или сжатому блоку применяется обратная обработка по сравнению с кодером для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер генерируют идентичные предсказания (например, внутренние предсказания и внешние предсказания) и/или восстановление для обработки, то есть, кодирования последующих блоков.
Термин «блок» может быть частью изображения или кадра. Ключевые термины определены в настоящем изобретении следующим образом:
Текущий блок является блоком, который обрабатывается. Например, при кодировании текущий блок является блоком, который в настоящее время кодируется; при декодировании текущий блок является блоком, который декодируется. Если обрабатываемый в данный момент блок является блоком компонента цветности, обрабатываемый в данный момент блок называется текущим блоком цветности. Блок яркости, соответствующий текущему блоку цветности, может называться текущим блоком яркости.
CTU является сокращением блока дерева кодирования (coding tree unit). Изображение включает в себя множество CTUs, и один CTU обычно соответствует одной квадратной области изображения и включает в себя выборки яркости и выборки цветности в области изображения (или может включать только выборки яркости или могут включать только выборки цветности). CTU дополнительно включает в себя элементы синтаксиса. Эти элементы синтаксиса указывают способ разделения CTU, по меньшей мере, на один блок кодирования (coding unit, CU) и декодирования каждого блока кодирования для получения восстановленного изображения.
CU является сокращением блока кодирования. CU обычно соответствует прямоугольной области AxB и включает в себя выборки яркости AxB и выборки цветности, соответствующие выборкам яркости, где A является шириной прямоугольника, B является высотой прямоугольника, и A может быть такой же, как или отличаться от B. Значения A и B обычно являются целыми степенями 2, например 256, 128, 64, 32, 16, 8 и 4. Блок кодирования может быть декодирован посредством обработки декодирования для получения восстановленного изображения области прямоугольника AxB. Обработка декодирования обычно включает в себя выполнение такой обработки, как предсказание, деквантование и обратное преобразование, для генерирования предсказанного изображения и остатка. Восстановленное изображение получается путем наложения предсказанного изображения и остатка.
Ниже описаны варианты осуществления кодера 20, декодера 30 и системы 10 кодирования со ссылкой на фиг. 1А-фиг. 3.
Фиг. 1A является концептуальной или блок-схемой, иллюстрирующей пример системы 10 кодирования, например, системы 10 кодирования видео, которая может использовать технологии настоящего изобретения (этого раскрытия). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью выполнять внутреннее предсказание в соответствии с различными примерами, описанными в настоящем изобретении. Как показано на фиг. 1A, система 10 кодирования включает в себя устройство 12 источника, выполненное с возможностью предоставлять закодированные данные 13, например, закодированного изображения 13, в устройство 14 назначения для декодирования закодированных данных 13.
Устройство 12 источника включает в себя кодер 20 и может дополнительно или возможно включать в себя источник 16 изображения, блок 18 предварительной обработки, например, блок 18 предварительной обработки изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может включать в себя или быть устройством захвата изображения любого типа, например, для захвата реального изображения, и/или устройством любого типа для генерирования изображения или комментария (для кодирования содержимого экрана текст на экране также рассматривается как часть подлежащего кодированию изображения или изображения), например, процессор компьютерной графики для формирования компьютерного анимированного изображения или любое другое устройство для получения и/или предоставления изображения реального мира, компьютерное анимированное изображение (например, содержимое экрана или изображение виртуальной реальности (virtual reality, VR)) и/или любая их комбинация (например, изображение дополненной реальности (augmented reality, AR)).
Изображение можно рассматривать как двумерный массив или матрицу выборок со значениями яркости. Выборка в массиве также может упоминаться как пиксель (pixel) (сокращенная форма элемента изображения (picture element)) или пиксель. Количество выборок в горизонтальном и вертикальном направлениях (или осях) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, в частности, изображение может быть представлено в виде трех массивов выборок или может их включать в себя. В формате RBG или цветовом пространстве изображение включает в себя соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве. Например, YCbCr, который включает в себя компонент яркости, обозначенный Y (иногда вместо него используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (который для краткости представляет собой яркость) представляет собой яркость или интенсивность уровня серого (например, как в изображении с оттенками серого), в то время как два компонента цветности (которые для краткости являются цветностью) Cb и Cr представляют собой цветность или компоненты информации о цвете. Соответственно, изображение в формате YCbCr включает в себя массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы или конвертированы в формат YCbCr и наоборот, и этот процесс также известен как преобразование цвета или преобразование. Если изображение является монохромным, оно может включать в себя только массив выборок яркости.
Источник 16 изображения (например, источник 16 видео) может быть, например, камерой для захвата изображения, памятью, такой как память изображений, включающей в себя или хранящей ранее захваченное или сгенерированное изображение, и/или любой тип (внутренний или внешний) интерфейс для получения изображения. Камера может быть, например, локальной камерой или интегрированной камерой, интегрированной в устройство источника, и память может быть локальной памятью или интегрированной памятью, например, интегрированной в устройство источника. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео. Внешний видеоисточник представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство формирования изображения. Внешнее устройство формирования изображения представляет собой, например, внешний процессор компьютерной графики, компьютер или сервер. Интерфейс может быть интерфейсом любого типа, например, проводным или беспроводным интерфейсом или оптическим интерфейсом, в соответствии с любым частным или стандартизованным протоколом интерфейса. Интерфейс для получения данных 17 изображения может быть тем же интерфейсом, что и интерфейс 22 связи, или может быть частью интерфейса 22 связи.
В отличие от блока 18 предварительной обработки и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения (например, видеоданные 16) также могут называться необработанным изображением или данными 17 исходного изображения.
Блок 18 предварительной обработки выполнен с возможностью: принимать (необработанные) данные 17 изображения и предварительно обработанные данные 17 изображения для получения предварительно обработанного изображения 19 или данных 19 предварительно обработанного изображения. Например, предварительная обработка, выполняемая блоком 18 предварительной обработки, может включать в себя обрезку, преобразование цветового формата (например, преобразование из RGB в YCbCr), настройку цвета и шумоподавление. Очевидно, что блок 18 предварительной обработки может быть возможным компонентом.
Кодер 20 (например, видеокодер 20) выполнен с возможностью принимать данные 19 предварительно обработанного изображения и предоставлять данные 21 закодированного изображения (подробности дополнительно описаны ниже, например, со ссылкой на фиг. 2 или фиг. 4). В одном примере кодер 20 может быть выполнен с возможностью реализации вариантов 1-3 осуществления.
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью: принимать данные 21 закодированного изображения и передавать данные 21 закодированного изображения другому устройству, например, устройству 14 назначения или любому другому устройству, для хранения или прямого восстановления или может быть выполнен с возможностью обрабатывать данные 21 закодированного изображения перед соответствующим сохранением закодированных данных 13 и/или передачей закодированных данных 13 в другое устройство, где другое устройство является, например, устройством 14 назначения или любым другим устройством. для декодирования или хранения.
Устройство 14 назначения включает в себя декодер 30 (например, видеодекодер 30) и может дополнительно, то есть, возможно, включать в себя интерфейс связи или блок 28 связи, блок 32 постобработки и устройство 34 отображения.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 кодированного изображения или кодированные данные 13, например, непосредственно из устройства 12 источника или из любого другого источника. Любой другой источник представляет собой, например, устройство хранения, такое как устройство хранения данных закодированного изображения.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передавать или принимать данные 21 закодированного изображения или закодированных данных 13 по прямой линии связи между устройством 12 источника и устройством 14 назначения или по сети любого типа. Прямая линия связи представляет собой, например, прямое проводное или беспроводное соединение, и любой тип сети представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, или любой тип частных и общедоступных сетей, или любую их комбинацию.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковывать данные 21 закодированного изображения в соответствующий формат, например пакеты, для передачи по каналу связи или сети связи.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть выполнен с возможностью, например, распаковывать закодированные данные 13 для получения данных 21 закодированного изображения.
И интерфейс 22 связи, и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как указано стрелкой для кодированных данных 13 от устройства 12 источника к устройству 14 назначения на фиг. 1A, или может быть сконфигурирован как двунаправленный интерфейс связи и может выполнен с возможностью, например, отправлять и принимать сообщения для установления соединения, а также подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, такой как передаче закодированных данных изображения.
Декодер 30 выполнен с возможностью принимать данные 21 кодированного изображения и предоставлять данные 31 декодированного изображения или декодированного изображения 31 (подробности дополнительно описаны ниже, например, со ссылкой фиг. 3 или фиг. 5). В одном примере декодер 30 может быть выполнен с возможностью реализации вариантов 1-3 осуществления.
Постпроцессор 32 устройства 14 назначения выполнен с возможностью пост-обработки данных 31 декодированного изображения (которые также называются данными восстановленного изображения), например, декодированного изображения 131, для получения изображения после обработки данных 33, таких как постобработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может включать в себя, например, преобразование цветового формата (например, преобразование из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку или любую другую обработку, например, для подготовки данных 31 декодированного изображения для отображения устройством 34 отображения.
Устройство 34 отображения устройства 14 назначения выполнено с возможностью принимать данные 33 изображения после обработки, для отображения изображения пользователю, зрителю или т.п. Устройство 34 отображения может быть или включать в себя любой тип дисплея для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Например, дисплей может включать в себя жидкокристаллический дисплей (liquid crystal display, LCD), дисплей с органическим светоизлучающим диодом (organic light emitting diode, OLED), плазменный дисплей, проектор, микро-светодиодный дисплей, жидкокристаллический дисплей на кремний (liquid crystal on silicon, LCoS), цифровой световой процессор (digital light processor, DLP) или любой другой дисплей.
Хотя фиг. 1A изображает устройство 12 источника и устройство 14 назначения как отдельные устройства, вариант осуществления устройства может альтернативно включать в себя как устройство 12 источника, так и устройство 14 назначения или функциональные возможности как исходного устройства 12, так и целевого устройства 14, то есть, устройство 12 источника или соответствующая функция и устройство 14 назначение или соответствующая функция. В таком варианте осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста в данной области на основании описаний, (точное) разделение функциональных возможностей различных блоков или функций устройства 12 источника и/или устройства 14 назначения, показанных на фиг. 1A, может отличаться в зависимости от фактического устройства и приложения.
Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) могут быть реализованы как любая из различных надлежащих схем, например, один или несколько микропроцессоров, цифровой сигнальный процессор (digital signal processor, DSP), специализированная интегральная схема (application-specific integrated circuit, ASIC), программируемая пользователем вентильная матрица (field-programmable gate array, FPGA), дискретная логика, оборудование или любая их комбинация. Если технологии реализуются частично с использованием программного обеспечения, устройство может хранить программную инструкцию на надлежащем постоянном машиночитаемом носителе данных и может выполнять инструкцию с использованием аппаратного обеспечения, такого как один или несколько процессоров, для реализации технологий настоящего изобретения. Любое из вышеуказанного контента (включающие в себя оборудование, программное обеспечение, комбинацию аппаратного и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров. Видеокодер 20 и видеодекодер 30 каждый может содержаться в одном или нескольких кодеров или декодеров, и либо кодер, либо декодер могут быть интегрированы в часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
Устройство 12 источника может называться устройством кодирования видео или приспособлением для кодирования видео. Устройство 14 назначения может называться устройством декодирования видео или приспособлением для декодирования видео. Устройство 12 источника и устройство 14 назначения могут быть примерами устройства кодирования видео или устройства кодирования видео.
Устройство 12 источника и устройство 14 назначения могут включать в себя любое из широкого диапазона устройств, включающие в себя любой тип портативного или стационарного устройства, например, ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, камера, настольный компьютер, телеприставка, телевизор, устройство отображения, цифровой медиаплеер, игровая консоль, устройство потокового видео (например, сервер службы контента или сервер доставки контента), устройство приемника вещания или устройство передатчика вещания и может использовать или не использовать операционную систему любого типа.
В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Следовательно, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, показанная на фиг. 1A, является просто примером, и технологии настоящего изобретения применимы к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя какой-либо обмен данными между устройствами кодирования и декодирования. В другом примере данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство для кодирования видео может кодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают данные из памяти и декодируют данные.
Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть выполнен с возможностью выполнять обратный процесс. Что касается элементов синтаксиса сигнализации, видеодекодер 30 может быть выполнен с возможностью принимать и анализировать эти элементы синтаксиса и декодировать соответствующие видеоданные. В некоторых примерах видеокодер 20 может энтропийно кодировать элементы синтаксиса в кодированный битовый поток видео. В этих примерах видеодекодер 30 может анализировать эти элементы синтаксиса и соответственно декодировать соответствующие видеоданные.
Фиг. B является иллюстративной схемой примера системы 40 видеокодирования, включающей в себя кодер 20 на фиг. 2 и/или декодер 30 на фиг. 3 согласно примерному варианту осуществления. Система 40 может реализовывать комбинацию различных технологий настоящего изобретения. В проиллюстрированной реализации система 40 видеокодирования может включать в себя устройство 41 формирования изображения, видеокодер 20, видеодекодер 30 (и/или видеокодер/декодер, реализованный логической схемой 47 блока 46 обработки), антенну 42, один или несколько процессоров 43, одно или несколько памяти 44 и/или устройство 45 отображения.
Как показано на чертеже, устройство 41 формирования изображения, антенна 42, блок 46 обработки, логическая схема 47, видеокодер 20, видеодекодер 30, процессор 43, память 44 и/или устройство 45 отображения могут взаимодействовать друг с другом. Как описано, хотя система 40 видеокодирования проиллюстрирована с использованием видеокодера 20 и видеодекодера 30, в другом примере система 40 видеокодирования может включать в себя только видеокодер 20 или только видеодекодер 30.
В некоторых примерах, как показано на чертеже, система 40 видеокодирования может включать в себя антенну 42. Например, антенна 42 может быть выполнена с возможностью передавать или принимать видеоданные закодированного битового потока. Кроме того, в некоторых примерах система 40 видеокодирования может включать в себя устройство 45 отображения. Устройство 45 отображения может быть выполнено с возможностью представлять видеоданные. В некоторых примерах, как показано на чертеже, логическая схема 47 может быть реализована блоком 46 обработки. Блок 46 обработки может включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. Система 40 видеокодирования может также включать в себя дополнительный процессор 43. Дополнительный процессор 43 может аналогичным образом включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована аппаратными средствами, например, специализированным оборудованием для кодирования видео, а процессор 43 может быть реализован программным обеспечением общего назначения, операционной системой и т.п. Дополнительно, память 44 может быть любым типом памяти, например, энергозависимой памятью (например, статической памятью с произвольным доступом (Static Random Access Memory, SRAM) или динамической памятью с произвольным доступом (Dynamic Random Access Memory, DRAM) или энергонезависимой памяти (например, флэш-памятью). В неограничивающем примере память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок 46 обработки могут включать в себя память (например, кэш) для реализации буфера изображений и т.п.
В некоторых примерах видеокодер 20, реализованный логической схемой, может включать в себя буфер изображения (который, например, реализуется блоком 46 обработки или памятью 44) и блок обработки графики (который, например, реализуемый блоком 46 обработки). Блок обработки графики может быть коммуникативно соединен с буфером изображения. Блок обработки графики может включать в себя видеокодер 20, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 2 и/или любую другую систему или подсистему кодера, описанную в этой спецификации. Логическая схема может быть выполнена с возможностью выполнять различные операции, описанные в этой спецификации.
Видеодекодер 30 может быть реализован аналогично тому, как это реализовано логической схемой 47, для воплощения различных модулей, как описано в отношении декодера 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации. В некоторых примерах видеодекодер 30, реализованный логической схемой, может включать в себя буфер изображения (который, например, реализован блоком 2820 обработки или памятью 44) и блок обработки графики (который, например, реализован посредством блока 46 обработки). Блок обработки графики может быть коммуникативно соединен с буфером изображения. Блок обработки графики может включать в себя видеодекодер 30, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации.
В некоторых примерах антенна 42 системы 40 видеокодирования может быть выполнена с возможностью принимать видеоданные закодированного битового потока. Как описано, кодированный битовый поток может включать в себя данные, индикатор, значение индекса, данные выбора режима и т.п., которые относятся к кодированию видеокадров и которые описаны в этой спецификации, например, данные, относящиеся к разделению кодирования (например, коэффициент преобразования или квантованный коэффициент преобразования, возможный индикатор (как описано) и/или данные, определяющие разделение кодирования). Система 40 видеокодирования может дополнительно включать в себя видеодекодер 30, который подключен к антенне 42 и выполнен с возможностью декодировать кодированный битовый поток. Устройство 45 отображения выполнено с возможностью представлять видеокадр.
Кодер & способ кодирования
Фиг. 2 является схематической/концептуальной блок-схемой примера видеокодера 20, выполненного с возможностью реализации технологии (раскрытой) в настоящем изобретении. В примере на фиг. 2, видеокодер 20 включает в себя блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB), блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (который не показан на схеме). Видеокодер 20, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером на основании гибридного видеокодека.
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой сигнальный тракт кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (decoded picture buffer, DPB) и блок 260 обработки предсказания формируют обратный сигнальный тракт кодера, где обратный сигнальный тракт видеокодера соответствует тракту сигнала декодера (см. декодер 30 на фиг. 3).
Кодер 20 принимает, например, через вход 202 изображение 201 или блок 203 изображения 201, например, изображение в последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения может также называться текущим блоком изображения или блоком изображения, который должен быть закодирован, и изображение 201 может упоминаться как текущее изображение или изображение, которое должно быть кодировано (в частности, при кодировании видео, для отличия текущего изображения от других изображений, например, ранее кодированных и/или декодированных изображений в одной и той же видеопоследовательности, а именно, видеопоследовательности, которая также включает в себя текущее изображение).
Разделение
В варианте осуществления кодер 20 может включать в себя блок разделения (который не показан на фиг. 2), выполненный с возможностью разделять изображение 201 на множество блоков, таких как блоки 203. Изображение 201 обычно разделяется на множество неперекрывающихся блоков. Блок разделения может быть выполнен с возможностью: использовать тот же размер блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменять размер блока между изображениями, или подмножествами, или группами изображений, и разделять каждое изображение на соответствующие блоки.
В одном примере блок 260 обработки предсказания видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию вышеупомянутых технологий разделения.
Подобно изображению 201, блок 203 также является или может рассматриваться как двумерный массив или матрица выборок со значениями яркости (sample values), хотя размер блока 203 меньше размера изображения 201. Другими словами, блок 203 может включать в себя, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или осях) блока 203 определяет размер блока 203.
Кодер 20, показанный на фиг. 2, выполнен с возможностью кодировать изображение 201 блок за блоком, например, кодировать и предсказывать каждый блок 203.
Вычисление остатка
Блок 204 вычисления остатка выполнен с возможностью вычислять остаточный блок 205 на основании блока 203 изображения и блока 265 предсказания (подробности о блоке 265 предсказания дополнительно предоставлены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборки блока 203 изображения выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.
Преобразование
Блок 206 обработки преобразования выполнен с возможностью применять преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретное синусоидальное преобразование (discrete sine transform, DST) к значениям выборки остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования также могут называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, такие как преобразования, указанные в HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается с использованием прямого и обратного преобразований, применяется дополнительный коэффициент масштабирования как часть процесса преобразования. Коэффициент масштабирования обычно выбирается на основании некоторых ограничений, например, коэффициент масштабирования является степенью два для операции сдвига, битовой глубиной коэффициентов преобразования и компромиссом между точностью и затратами на реализацию. Например, конкретный коэффициент масштабирования задается для обратного преобразования, например, блоком 212 обработки обратного преобразования на стороне декодера 30 (и соответствующее обратное преобразование, например, блоком 212 обработки обратного преобразования на стороне сторона кодера 20) и, соответственно, соответствующий масштабный коэффициент может быть указан для прямого преобразования блоком 206 обработки преобразования на стороне кодера 20.
Квантование
Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования могут также называться квантованными остаточными коэффициентами 209. Процесс квантования может уменьшить глубину в битах, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньший размер шага квантования соответствует более тонкому квантованию и больший размер шага квантования соответствует более грубому квантованию. Соответствующий размер шага квантования может быть указан параметром квантования (quantization parameter, QP). Например, параметр квантования может быть индексом для заданного набора подходящих размеров шага квантования. Например, меньший параметр квантования может соответствовать более тонкому квантованию (меньшему размеру шага квантования) и больший параметр квантования может соответствовать более грубому квантованию (большему размеру шага квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования и соответствующее квантование или обратное квантование, например, выполняемое блоком 210 обратного квантования, или может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, таким как HEVC, могут использовать параметр квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Для восстановления нормы остаточного блока могут быть введены дополнительные коэффициенты масштабирования для квантования и деквантования, которые могут быть изменены из-за масштабирования, используемого в аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантования могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и передаваться из кодера к декодеру, например, в потоке битов. Квантование является операцией с потерями, при которой потери возрастают с увеличением размера шага квантования.
Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, применять, на основании или с использованием того же размера шага квантования, что и блок 208 квантования, обратную схему квантования, применяемую блоком 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствуют коэффициентам 207 преобразования, хотя обычно не идентичны коэффициентам преобразования из-за потерь, вызванных квантованием.
Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, применяемого блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (discrete cosine transform, DCT) или обратное дискретное синусное преобразование (discrete sine transform, DST), чтобы получить блок 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться деквантованным блоком 213 обратного преобразования или остаточным блоком 213 обратного преобразования.
Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавлять блок 213 обратного преобразования (то есть, восстановленный остаточный блок 213) к блоку 265 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 213 и значения выборки блока 265 предсказания, чтобы получить восстановленный блок 215 в области выборки.
Возможно, блок 216 буфера (или «буфер» 216 для краткости), например, линейный буфер 216, выполнен с возможностью буферизации или хранения восстановленного блока 215 и соответствующего значения выборки, например, для внутреннего предсказания. В других вариантах осуществления кодер может быть выполнен с возможностью использовать нефильтрованный восстановленный блок и/или соответствующее значение выборки, хранящееся в блоке 216 буфера, для любого типа оценки и/или предсказания, например, внутреннего предсказания.
Например, в варианте осуществления кодер 20 может быть выполнен с возможностью для блока 216 буфера не только хранить восстановленный блок 215 для внутреннего предсказания 254, но также используется для блока 220 контурного фильтра (который не показан на фиг. 2), и/или так, что, например, блок 216 буфера и блок 230 буфера декодированного изображения образуют один буфер. В других вариантах осуществления фильтрованные блоки 221 и/или блоки или выборки из буфера 230 декодированных изображений (блоки или выборки не показаны на фиг. 2) используются в качестве входных данных или основы для внутреннего предсказания 254.
Блок 220 контурного фильтра (или «контурный фильтр» 220 для краткости) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221, сглаживания переходов пикселей или улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением к выборке (sample-adaptive offset, SAO) или другой фильтр, такой как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или коллективный фильтр. Хотя блок 220 контурного фильтра показан на фиг. 2, в другой конфигурации блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221. Буфер 230 декодированного изображения может хранить восстановленные кодированные блоки после того, как блок 220 контурного фильтра выполняет операции фильтрации на восстановленных кодированных блоках.
В варианте осуществления кодер 20 (соответственно, блок 220 контурного фильтра) может быть выполнен с возможностью выводить параметры контурного фильтра (такие как выборочная информация адаптивного смещения), например, непосредственно или после энтропийного кодирования, выполняемого блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что, например, декодер 30 может принимать одни и те же параметры контурного фильтра и применять те же параметры контурного фильтра для декодирования.
Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных видеокодером 20. DPB 230 может быть сформирован любым из множества устройств памяти, таких как динамическая память с произвольным доступом (dynamic random access memory, DRAM) (включающую в себя синхронную DRAM (synchronous DRAM, SDRAM), магниторезистивную RAM (magneto resistive RAM, MRAM), резистивную RAM (resistive RAM, RRAM)) или другие типы запоминающих устройств. DPB 230 и буфер 216 могут быть предоставлены одной и той же памятью или отдельными запоминающими устройствами. В примере буфер 230 декодированного изображения (decoded picture buffer, DPB) выполнен с возможностью хранить отфильтрованный блок 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленных и отфильтрованных блоков 221, одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может предоставлять полностью ранее восстановленные изображения, то есть, декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующее опорные блоки и выборки), например, для внешнего предсказания. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированного изображения (decoded picture buffer, DPB) выполнен с возможностью хранить восстановленный блок 215.
Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью принимать или получать блок 203 изображения (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорной выборки одного и того же (текущее) изображения из буфера 216 и/или данные 231 опорного изображения из одного или более ранее декодированных изображений из буфера 230 декодированного изображения и обрабатывать эти данные для предсказания, чтобы быть конкретными, чтобы обеспечить блок 265 предсказания, который может быть блоком 245 внешнего предсказания или блоком 255 внутреннего предсказания.
Блок 262 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, режим внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания, для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
В варианте осуществления блок 262 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, из режимов предсказания, поддерживаемых блоком 260 обработки предсказания). Режим предсказания обеспечивает наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или обеспечивает минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или учитывает или уравновешивает оба. Блок 262 выбора режима может быть выполнен с возможностью определять режим предсказания на основании оптимизации скорости-искажения (rate distortion optimization, RDO), то есть, выбирать режим предсказания, который обеспечивает минимальную оптимизацию скорости-искажения, или выбирать режим предсказания, для которого соответствующая скорость искажение, по меньшей мере, удовлетворяет критерию выбора режима предсказания.
Дополнительно приведено подробное описание процесса обработки предсказания, выполняемой (например, с использованием блока 260 обработки предсказания), и выбора режима, выполняемого (например, с использованием блока 262 выбора режима) с помощью примера кодера 20.
Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший режим предсказания или оптимальный режим предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может включать в себя, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Набор режимов внутреннего предсказания может включать в себя 35 различных режимов внутреннего предсказания, или может включать в себя 67 различных режимов внутреннего предсказания, или может включать в себя разрабатываемый режим внутреннего предсказания, определенный в H.266.
Множество взаимосвязанных режимов предсказания зависит от доступного опорного кадра (то есть, по меньшей мере, часть декодированного изображения, сохраненного в DBP 230) и другого параметра внешнего предсказания, например, в зависимости от того, используются ли все опорные изображения или только часть опорного изображения, например, окно поиска области вокруг области текущего блока, для поиска наилучшего соответствия опорного блока и/или в зависимости, например, от того, применяется ли интерполяция пикселя, такая как полупиксельная и/или четверть-пиксельная интерполяция.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 260 обработки предсказания может быть дополнительно выполнен с возможностью разделять блок 203 на более мелкие разделы блока или подблоки, например, путем итеративного использования разделения дерева квадрантов (quad-tree, QT), двоичного дерева (binary-tree, BT), разделение на тройное дерево (triple-tree, TT) или любую их комбинацию, а также для выполнения, например, предсказания для каждого из разделов блоков или подблоков. Выбор режима включает в себя выбор древовидной структуры разделенного блока 203 и выбор режима предсказания, применяемого к каждому из разделов блока или подблоков.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (motion estimation, ME) (который не показан на фиг. 2) и блок компенсации движения (motion compensation, MC) (который не показан на фиг. 2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (текущий блок 203 изображения текущего изображения 201) и декодированное изображение 231 или, по меньшей мере, один или нескольких ранее восстановленных блоков, например, один или нескольких восстановленных блоков других/различных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может включать в себя текущее изображение и ранее декодированные изображения 31. Другими словами, текущее изображение и ранее декодированные изображения 31 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Так, например, кодер 20 может быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одного и того же изображения или различных изображений из множества других изображений и поставлять в блок оценки движения (который не показан фиг. 2) опорное изображение и/или смещение (пространственное смещение) между положением (координаты X и Y) опорного блока и положением текущего блока в качестве параметра внешнего предсказания. Это смещение также называется вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получать, например, принимать параметры внешнего предсказания и выполнять внешнее предсказания на основании или с использованием параметров внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения (который не показан на фиг. 2) может включать в себя выборку или генерацию блока предсказания на основании вектора движения/блока, определенного посредством оценки движения (возможно, посредством выполнения интерполяции с точностью до субпикселя). Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, тем самым, потенциально увеличивая количество кандидатов блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения также может генерировать элементы синтаксиса, связанные с блоками и сегментами видео, для использования видеодекодером 30 при декодировании блоков изображения сегмента видео.
Блок 254 внутреннего предсказания выполнен с возможностью получать, например, принимать блок 203 изображения (текущего блока изображения) и одного или нескольких ранее восстановленных блоков, например, восстановленных соседних блоков, одного и того же изображения для внутренней оценки. Кодер 20 может быть, например, выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.
В варианте осуществления кодер 20 может быть выполнен с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, на основании минимального остатка (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, который наиболее подходит текущему блоку 203 изображения) или искажения с минимальной скоростью.
Блок 254 внутреннего предсказания дополнительно выполнен с возможностью определять блок 255 внутреннего предсказания на основании, например, параметров внутреннего предсказания в выбранном режиме внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания блока, блок 254 внутреннего предсказания дополнительно выполнен с возможностью предоставлять параметры внутреннего предсказания, то есть, информацию, указывающую выбранный режим внутреннего предсказания блока, в блок 270 энтропийного кодирования. Например, блок 254 внутреннего предсказания может быть выполнен с возможностью выполнять любую, описанную ниже комбинацию технологий внутреннего предсказания.
Блок 270 энтропийного кодирования выполнен с возможностью применять (или не применять) алгоритм или схемы энтропийного кодирования (например, схему кодирования с переменной длиной (variable length coding, VLC), схему контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схема арифметического кодирования, контекстно-адаптивное двоичное арифметическое кодирование (context adaptive binary arithmetic coding, CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (syntax-based context-adaptive binary arithmetic coding, SBAC), энтропийное кодирование разделение интервалов вероятности (probability interval partitioning entropy, PIPE) или другой способ или технология энтропийного кодирования) к одному или всем квантованным остаточным коэффициентам 209, параметрам внешнего предсказания, параметрам внутреннего предсказания и/или параметрам контурного фильтра для получения данных 21 кодированного изображения, которые могут выводиться через выход 272, например, в форме кодированного битового потока 21. Закодированный битовый поток может быть передан на видеодекодер 30, или сохранен для последующей передачи или поиска видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования других элементов синтаксиса для текущего кодируемого сегмента видео.
Для кодирования видеопотока могут использоваться другие структурные вариации видеокодера 20. Например, для некоторых блоков или кадров кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Фиг. 3 показывает пример видеодекодера 30, выполненного с возможностью реализации технологии настоящего изобретения. Видеодекодер 30 выполнен с возможностью принимать данные 21 кодированного изображения (например, закодированного битового потока), закодированного, например, кодером 20, для получения декодированного изображения 231. В процессе декодирования видеодекодер 30 принимает видеоданные от видеокодера 20, например, кодированный битовый поток видео, который представляет блок изображения кодированного сегмента видео и связанные с ним элементы синтаксиса.
В примере на фиг. 3, декодер 30 включает в себя блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированного изображения и блок 360 обработки предсказания. Блок 360 обработки предсказания может включать в себя блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. В некоторых примерах видеодекодер 30 может выполнять процесс декодирования в целом обратный процессу кодирования, описанному со ссылкой на видеокодер 20 на фиг. 2.
Блок 304 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование данных 21 кодированного изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (которые не показаны на фиг. 3), например, любой один или все параметры внешнего предсказания, параметры внутреннего предсказания, параметры контурного фильтра и/или другие элементы синтаксиса (которые декодируются). Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылать параметры внешнего предсказания, параметры внутреннего предсказания и/или другие элементы синтаксиса в блок 360 обработки предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне видеоблока.
Блок 310 обратного квантования может иметь ту же функцию, что и блок 110 обратного квантования, блок 312 обработки обратного преобразования может иметь ту же функцию, что и блок 212 обработки обратного преобразования, блок 314 восстановления может иметь ту же функцию, что и блок 214 восстановления, буфер 316 может иметь ту же функцию, что и буфер 216, контурный фильтр 320 может иметь ту же функцию, что и контурный фильтр 220 и буфер 330 декодированного изображения может иметь ту же функцию, что и буфер 230 декодированного изображения.
Блок 360 обработки предсказания может включать в себя блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть аналогичен блоку 244 внешнего предсказания по функциям и блок 354 внутреннего предсказания может быть аналогичен блоку 254 внутреннего предсказания по функциям. Блок 360 обработки предсказания обычно выполнен с возможностью выполнять предсказания блока и/или получать блок 365 предсказания из закодированных данных 21, а также принимать или получать (явно или неявно) параметры, связанные с предсказанием, и/или информацию о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
Когда сегмент видео кодируется как сегмент с внутренним кодированием (I), блок 354 внутреннего предсказания блока 360 обработки предсказания выполнен с возможностью генерировать блок 365 предсказания для блока изображения текущего сегмента видео на основании сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется как внешне кодируемый (то есть, B или P) сегмент, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 обработки предсказания выполнен с возможностью генерировать блок 365 предсказания для видеоблока текущего сегмента видео на основании вектора движения и других элементов синтаксиса, принятых из блока 304 энтропийного декодирования. Для внешнего предсказания блок предсказания может быть сгенерирован из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, список 0 и список 1, используя технологии построения по умолчанию на основании опорных изображений, хранящихся в DPB 330.
Блок 360 обработки предсказания выполнен с возможностью определять информацию предсказания для видеоблока текущего сегмента видео путем анализа вектора движения и других элементов синтаксиса и использования информации предсказания для генерирования блока предсказания для текущего декодированного видеоблока. Например, блок 360 обработки предсказания использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информация о структуре одного или нескольких списков опорных изображений для сегмента, векторы движения для каждого внешне кодированного видеоблока сегмента, статус внешнего предсказания для каждого внешне кодированного видеоблока сегмента и другую информацию для декодирования видеоблоков в текущем сегменте.
Блок 310 обратного квантования может быть выполнен с возможностью обратного квантования (то есть, деквантования) квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных блоком 304 энтропийного декодирования. Процесс обратного квантования может включать в себя: использование параметров квантования, вычисленных посредством видеокодера 20 для каждого видеоблока в сегменте видео для определения степени квантования, которая должна применяться, и аналогично степень обратного квантования, которая должна применяться.
Блок 312 обработки обратного преобразования выполнен с возможностью применять обратное преобразование (например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования) для преобразования коэффициентов для генерирования остаточного блока в области пикселей.
Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (а именно, блок 313 восстановленного остатка) к блоку 365 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 313 и значения выборки блока 365 предсказания, чтобы получить восстановленный блок 315 в области выборки.
Блок 320 контурной фильтрации (в контуре кодирования или после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, сглаживания переходов пикселей или улучшения качества видео. В одном примере блок 320 контурного фильтра может быть выполнен с возможностью выполнять любую комбинацию технологий фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением к выборке (sample-adaptive offset, SAO) или другой фильтр, такой как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или коллективный фильтр. Хотя блок 320 контурного фильтра показан на фиг. 3, в другой конфигурации блок 320 контурного фильтра может быть реализован как пост-контурный фильтр.
Декодированные видеоблоки 321 в данном кадре или изображении затем сохраняются в буфере 330 декодированных изображений, в котором хранятся опорные изображения, используемые для последующей компенсации движения.
Декодер 30 выполнен с возможностью, например, выводить декодированное изображение 31 через выход 332 для представления пользователю или просмотра пользователем.
Другие варианты видеодекодера 30 могут быть сконфигурированы для декодирования сжатого битового потока. Например, декодер 30 может генерировать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30 без преобразования может обратно квантовать остаточный сигнал напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один модуль.
Фиг. 4 является схематической структурной схемой устройства 400 видеокодирования (например, устройства 400 видеокодирования или устройства 400 видеодекодирования) согласно варианту осуществления настоящего изобретения. Устройство 400 видеокодирования подходит для реализации вариантов осуществления, описанных в этой спецификации. В варианте осуществления устройство 400 видеокодирования может быть видеодекодером (например, видеодекодером 30 на фиг. 1A) или видеокодером (например, видеокодером 20 на фиг. 1A).). В другом варианте осуществления устройство 400 видеокодирования может быть одним или несколькими компонентами в видеодекодере 30 на фиг. 1A или видеокодере 20 на фиг. 1А.
Устройство 400 видеокодирования включает в себя входные порты 410 и блок 420 приемника (Rx), которые предназначены для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блок 440 передатчика (Tx) и выходные порты 450, которые предназначены для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также включать в себя оптико-электрические компоненты и электрические-оптические (EO) компоненты, которые подключены к входным портам 410, блоку 420 приемника, блоку 440 передатчика и выходным портам 450 для вывода или ввода оптических или электрических сигналов.
Процессор 430 реализован аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован как одна или несколько микросхем CPU, ядер (например, многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 обменивается данными с входными портами 410, блоком 420 приемника, блоком 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 включает в себя модуль 470 кодирования (например, модуль 470 кодирования или модуль 470 декодирования). Модуль 470 кодирования/декодирования реализует вышеупомянутые раскрытые варианты осуществления. Например, модуль 470 кодирования/декодирования выполняет, обрабатывает или предоставляет различные операции кодирования. Следовательно, модуль 470 кодирования/декодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и влияет на преобразование устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования/декодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 включает в себя один или несколько дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда эти программы выбраны для выполнения, и для хранения инструкций и данных, которые читаются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), памятью с произвольным доступом (RAM), троичной памятью с адресацией по содержанию (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или два из устройства 12 источника и устройства 14 назначения на фиг. 1A согласно примерному варианту осуществления. Устройство 500 может реализовывать технологию настоящего изобретения. Устройство 500 для реализации разделения изображения может быть выполнено в форме вычислительной системы, включающей в себя множество вычислительных устройств, или в форме одного вычислительного устройства, такого как мобильный телефон, планшетный компьютер, портативный компьютер или настольный компьютер.
Процессор 502 устройства 500 может быть центральным процессором. В качестве альтернативы процессор 502 может быть устройством любого другого типа или множеством устройств, которые могут управлять или обрабатывать информацию и которые применяются в настоящее время или будут разработаны в будущем. Как показано на чертеже, хотя раскрытые реализации могут быть реализованы с одним процессором, таким как процессор 502, за счет использования более чем одного процессора могут быть достигнуты преимущества в скорости и эффективности.
В реализации, память 504 устройства 500 может быть постоянным запоминающим устройством (Read Only Memory, ROM) или устройством оперативной памяти (random access memory, RAM). В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы. 510. Прикладные программы 510 включают в себя, по меньшей мере, одну программу, которая позволяет процессору 502 выполнять способы, описанные в этой спецификации. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, приложения с 1 по N дополнительно включают в себя приложение кодирования видео, которое выполняет способ, описанный в этой спецификации. Устройство 500 также может включать в себя дополнительную память в форме вторичного хранилища 514. Вторичное хранилище 514 может быть, например, картой памяти, используемой с мобильным вычислительным устройством. Поскольку сеансы видеосвязи могут содержать большой объем информации, эта информация может быть сохранена полностью или частично во вторичном хранилище 514 и загружена в память 504 по мере необходимости для обработки.
Устройство 500 также может включать в себя одно или несколько устройств вывода, таких как дисплей 518. В примере дисплей 518 может быть сенсорным дисплеем, который сочетает в себе дисплей с сенсорным элементом, который выполнен с возможностью воспринимать сенсорные вводы. Дисплей 518 может быть соединен с процессором 502 с помощью шины 512. В дополнение или в качестве альтернативы дисплею 518 могут быть предоставлены другие устройства вывода, которые позволяют пользователю программировать или иным образом использовать устройство 500. Когда устройство вывода представляет собой или включает в себя дисплей, дисплей может быть реализован различными способами, в том числе с помощью жидкокристаллического дисплея (liquid crystal display, LCD), дисплея с электронно-лучевой трубкой (cathode-ray tube, CRT), плазменным дисплеем или диодным светоизлучающим дисплеем (light emitting diode, LED), дисплеем, таким как органический LED (organic LED, OLED) дисплей.
Устройство 500 может также включать в себя устройство 520 формирования изображения или быть подключено к нему. Устройство 520 формирования изображения представляет собой, например, камеру или любое другое устройство 520 формирования изображения, которое может воспринимать изображение и которое используется в настоящее время или будет разработан в будущем. Изображение представляет собой, например, изображение пользователя, который использует устройство 500. Устройство 520 считывания изображения может быть размещено непосредственно перед пользователем, который запускает устройство 500. В примере положение и оптическая ось считывания изображения устройство 520 может быть сконфигурировано так, что поле зрения устройства 520 формирования изображения включает в себя область, близко прилегающую к дисплею 518, и дисплей 518 может быть виден из этой области.
Устройство 500 может также включать в себя устройство 522 обнаружения звука или взаимодействовать с ним, например, микрофон или любое другое звуковое устройство, которое используется в настоящее время или будет разработано в будущем, и которое может воспринимать звуки рядом с устройством 500. Устройство 522 обнаружения звука может быть размещено непосредственно перед пользователем, который запускает устройство 500, и может быть выполнено с возможностью принимать звук, например, голос или другой звук, издаваемый пользователем при запуске устройства 500.
Хотя фиг. 5 изображает процессор 502 и память 504 устройства 500 как интегрированные в единый блок, могут использоваться другие конфигурации. Работа процессора 502 может быть распределена между множеством машин (каждая машина включает в себя один или несколько процессоров), которые могут быть напрямую связаны или распределены в локальной области или другой сети. Память 504 может быть распределена по множеству машин, таких как сетевая память или память во множестве машин, на которых работает устройство 500. Хотя здесь изображена как одна шина, шина 512 устройства 500 может включать в себя множество шин. Дополнительно, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно по сети и может включать в себя один интегрированный блок, такой как карта памяти, или множество блоков, например, множество карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.
Как описано выше в настоящем изобретении, помимо использования компонента яркости (Y), цветное видео дополнительно включает в себя компоненты цветности (U, V). Следовательно, помимо кодирования компонента яркости, необходимо также кодировать компоненты цветности. В соответствии с различными способами выборки компонента яркости и компонентов цветности в цветном видео обычно используются YUV4:4:4, YUV4:2:2 и YUV4:2:0. Как показано на фиг. 6 крестик представляет выборку компонента яркости, а кружок представляет выборку компонента цветности.
Формат 4:4:4 указывает, что компонент цветности не подвергается пониженной дискретизации.
Формат 4:2:2 указывает, что по отношению к компоненту яркости для компонента цветности выполняется горизонтальная понижающая дискретизация 2:1 и вертикальная понижающая дискретизация не выполняется для компонента цветности. Для каждых двух выборок U или V каждая строка включает в себя четыре выборки Y.
Формат 4:2:0 указывает, что по отношению к компоненту яркости для компонента цветности выполняется горизонтальная понижающая дискретизация 2:1 и для компонента цветности выполняется вертикальная понижающая дискретизация 2:1.
Видеодекодер может быть выполнен с возможностью разделять видеоблок согласно трем различным структурам разделения (QT, BT и TT) с использованием пяти различных типов разделения, разрешенных на каждой глубине. Типы разделения включают в себя разделение дерева квадрантов (QT split structure), разделение горизонтального двоичного дерева (BT split structure), разделение вертикального двоичного дерева (BT split structure) и горизонтальное разделение троичного дерева по центру (TT split structure), и вертикальное разделение троичного дерева по центру (TT split structure), как показано на фиг. 7А-фиг. 7E.
Пять типов разделения определены следующим образом: следует отметить, что квадрат рассматривается как частный случай прямоугольника.
Разделение дерева квадрантов (Quad-tree, QT): блок дополнительно разделяется на четыре прямоугольных блока одинакового размера. Фиг. 7A показывает пример разделения дерева квадрантов. Согласно способу разделения CTU на основании дерева квадрантов QT, CTU используется в качестве корневого узла (root) дерева квадрантов. CTU рекурсивно разбивается на несколько листовых узлов (leaf node) на основании режима разделения дерева квадрантов. Один узел соответствует одной области изображения. Если узел не разделен, узел называется листовым узлом, и область изображения, соответствующая узлу, становится CU. Если узел разделен, область изображения, соответствующая узлу, разделяется на четыре области изображения одинакового размера (длина и ширина четырех областей составляют соответственно половину длины и ширины области разделения), и каждая область соответствует одному узлу. Отдельно определяют, будут ли эти узлы дополнительно разделены. Должен ли узел быть разделен, указывается флагом split_cu_flag разделения, который находится в битовом потоке и соответствует узлу. Глубина (qtDepth) дерева квадрантов корневого узла равна 0 и глубина дерева квадрантов дочернего узла равна глубине дерева квадрантов родительского узла плюс 1. Для краткости описания размер и форма узла в настоящем изобретении имеют размер и форму области изображения, соответствующей узлу, то есть, узел является прямоугольной областью в изображении. Узел, полученный путем разделения узла (node) в дереве кодирования, может называться дочерним узлом (child node) узла, который для краткости является дочерним узлом.
Более конкретно, 64x64 узел CTU (с глубиной дерева квадрантов, равной 0) не может быть разделен на основании split_cu_flag, соответствующего узлу CTU, и становится CU 64x64; или может быть разбит на четыре узла 32x32 (с глубиной дерева квадрантов равной 1). Каждый из четырех узлов 32x32 может быть дополнительно разделен или не разделен на основании split_cu_flag, соответствующего узлу. Если узел 32x32 продолжает разделяться, генерируются четыре узла 16x16 (с глубиной дерева квадрантов равной 2). Остальное можно вывести по аналогии, пока ни один узел не будет разделен. Таким образом, один CTU разбивается на одну группу CUs. Минимальный размер (size) CU указан в SPS. Например, 8x8 является минимальным размером CU. В вышеупомянутом процессе рекурсивного разделения, если размер узла равен минимальному размеру CU (minimum CU size), узел не должен быть дополнительно разбит по умолчанию, и флаг разделения узла не нужно добавлять в битовый поток.
После того, как посредством синтаксического анализа стало известно, что узел является листовым узлом, и листовой узел является CU, информация кодирования (включающая в себя такую информацию, как режим предсказания и коэффициент преобразования CU, например, структура синтаксиса coding_unit () в H.266), соответствующий CU, анализируется дополнительно. Затем на CU выполняется обработка декодирования, такая как предсказание, обратное квантование, обратное преобразование и контурная фильтрация, на основании информации кодирования для генерирования восстановленного изображения, соответствующего CU. В структуре дерева квадрантов (Quadtree, QT) CTU может быть разделен на группу CUs соответствующих размеров на основании признака локального изображения. Например, плоская область разбивается на более крупные CUs, в то время как богато текстурированная область разбивается на более мелкие CUs.
Режим разделения CTU на группу CUs соответствует дереву кодирования (coding tree). Конкретное дерево кодирования, которое должно использоваться CTU, обычно определяется с помощью технологии кодера оптимизации скорости-искажения (rate distorting optimization, RDO). Кодер рассматривает множество режимов разделения CTU и каждый режим разделения соответствует одной стоимости искажения скорости (RD cost). Кодер сравнивает RD стоимости для режимов разделения, которые предпринимаются, для нахождения режима разделения с минимальной RD стоимостью в качестве оптимального режима разделения CTU для фактического кодирования CTU. Все режимы разделения CTU, проверенные кодером, должны соответствовать правилу разделения, заданному декодером, чтобы режимы разделения CTU могли быть правильно идентифицированы декодером.
Разделение по вертикальному двоичному дереву (binary tree, BT): блок вертикально разбивается на два прямоугольных блока одинакового размера. Фиг. 7B показывает пример вертикального разбиения двоичного дерева.
Горизонтальное разделение двоичного дерева: блок горизонтально разбивается на два прямоугольных блока одинакового размера. Фиг. 7C показывает пример горизонтального разбиения двоичного дерева.
Вертикальное разделение троичного дерева по центру (TT): блок вертикально разделен на три прямоугольных блока, так что два боковых блока имеют одинаковый размер и размер центрального блока является суммой размеров двух боковых блоков. Фиг. 7D является примером вертикального разделения троичного дерева по центру.
Горизонтальное разделение троичного дерева по центру: блок по горизонтали разбивается на три прямоугольных блока, так что два боковых блока имеют одинаковый размер и размер центрального блока является суммой размеров двух боковых блоков. Фиг. 7E показывает пример горизонтального разделения троичного дерева по центру.
Конкретные способы разделения на фиг. 7B-фиг. 7E аналогичны описаниям на фиг. 7A, и подробности здесь снова не описываются. Кроме того, может использоваться режим разделения каскадирования QT и BT/TT, который для краткости называется QT-BTT. То есть, узел в дереве кодирования уровня 1 может быть разделен на дочерние узлы только посредством Q и листовой узел в дереве кодирования уровня 1 является корневым узлом дерева кодирования уровня 2; узел в дереве кодирования уровня 2 может быть разделен на дочерние узлы с использованием одного из следующих четырех режимов разделения: горизонтальное двоичное разделение, вертикальное двоичное разделение, горизонтальное тройное разделение и вертикальное тройное разделение; листовой узел дерева кодирования уровня 2 является блоком кодирования. В частности, разделение двоичного дерева и разделение дерева квадрантов выполняется каскадным способом, который для краткости, может быть режимом разделения QTBT. Например, CTU сначала разделяется посредством QT и листовой узел QT может дополнительно разделяться посредством BT, как показано на фиг. 8. В правой части фиг. 8 каждая конечная точка представляет один узел. Один узел, соединенный с четырьмя сплошными линиями, представляет разделение дерева квадрантов и один узел, соединяющийся с двумя пунктирными линиями, представляет разделение двоичного дерева. Узел, полученный после разделения, может называться дочерним узлом узла, который для краткости является дочерним узлом. Среди дочерних узлов от a до m находятся 13 листовых узлов, и каждый листовой узел представляет один CU. На узле двоичного дерева 1 представляет вертикальное разделение и 0 представляет горизонтальное разделение. CTU разделен на 13 CUs: от a до m, как показано в левой части фиг. 8. В режиме разделения QTBT каждый CU имеет глубину QT (Quad-tree depth, QT depth) и глубину BT (Binary tree depth, BT depth). Глубина QT представляет собой глубину QT листового узла QT, которому принадлежит CU, и глубина BT представляет глубину BT листового узла BT, которому принадлежит CU. Например, на фиг. 8, глубины QT a и b равны 1, глубины BT a и b равны 2; глубины QT для c, d и e равны 1, глубины BT для c, d и e равны 1; глубины QT для f, k и l равны 2, глубины BT для f, k и l равны 1; глубины QT i и j равны 2, глубины BT i и j равны 0; глубины QT для g и h равны 2, глубины BT для g и h равны 2; глубина QT m равна 1, глубина BT m равна 0. Если CTU разделен только на один CU, глубина QT CU равна 0 и глубина BT CU равна 0.
Для блока, ассоциированного с конкретной глубиной, кодер 20 определяет, какой тип разделения (включающий в себя отсутствие дополнительного разделения) используется, и явно или неявно (например, тип разделения может быть получен из заранее определенного правила) сигнализирует об определенном типе разделения в декодер 30. Кодер 20 может определять используемый тип разделения на основании стоимости искажения скорости для проверки другого типа разделения для блока.
Если блок цветности 2xM, в частности, блок цветности 2x2, 2x4 или 2x8, генерируется путем разделения узла, эффективность кодирования и декодирования цветности сравнительно низкая, и затраты на обработку аппаратного декодера сравнительно высоки. Это неблагоприятно для реализации аппаратного декодера. Когда блок цветности текущего узла не разделяется дополнительно, в этом варианте осуществления настоящего изобретения может быть разделен только блок яркости текущего узла, тем самым, повышая эффективность кодирования и декодирования, снижая максимальную пропускную способность кодека и облегчая реализацию. кодека. В частности, в этом варианте осуществления настоящего изобретения, когда дочерние узлы, сгенерированные путем разделения узла с использованием режима разделения, включают в себя блок цветности, длина стороны которого является первым пороговым значением (или включает в себя блок цветности, длина стороны которого меньше второго порогового значения), блок яркости, содержащийся в узле, разделяется с использованием этого режима разделения, блок цветности, включенный в узел, дополнительно не разделяется. В этом режиме можно избежать генерирования блока цветности, длина стороны которого является первым пороговым значением (или длина стороны меньше второго порогового значения). В конкретной реализации первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4. Нижеследующее предоставляет подробные описания со ссылкой на варианты 1-3 осуществления. В этом варианте осуществления настоящего изобретения описания предоставляются с использованием формата видеоданных YUV4:2:0 и аналогичный способ может быть использован для данных YUV4:2:2.
В расширенном стандарте SCC HEVC принят инструмент кодирования внутреннего копирования блока (Intra Block Copy, IBC) и, в основном, используется для повышения эффективности кодирования видео контента экрана. Режим IBC представляет собой режим кодирования на уровне блоков. На стороне кодера используется способ сопоставления блоков (block matching, BM) для поиска оптимального вектора блока (block vector) или вектора движения (motion vector) для каждого CU. Вектор движения в данном документе, в основном, используется для представления смещения от текущего блока к опорному блоку, а также упоминается как вектор смещения (displacement vector). Опорный блок является восстановленным блоком в текущем изображении. Режим IBC можно рассматривать как третий режим предсказания, отличный от режима внутреннего предсказания или режима внешнего предсказания. Для экономии пространства для хранения и упрощения декодера, режим IBC в VTM4 позволяет использовать для предсказания только восстановленную часть предварительно определенной области текущего CTU.
В VTM на уровне CU используется флаг для указания, используется ли режим IBC для текущего CU. Режим IBC подразделяется на режим IBC AMVP, режим пропуска IBC или режим слияния IBC.
Вариант 1 осуществления
Фиг. 9 является блок-схемой алгоритма способа 900 согласно варианту 1 осуществления настоящего изобретения.
Этап 901: определить, нужно ли разделять текущий узел, если текущий узел включает в себя блок яркости и блок цветности.
Если текущий узел дополнительно не разделяется на дочерние узлы, текущий узел является блоком кодирования (coding unit, CU), и этап 910 выполняется для получения информации о блоке кодирования посредством синтаксического анализа; или, если текущий узел необходимо разделить, выполняется этап 902.
Вариант 1 осуществления настоящего изобретения может быть реализован устройством декодирования видео, а именно, устройством, описанным на любом из фиг. 3 - фиг. 5.
Вариант 1 осуществления настоящего изобретения в качестве альтернативы может быть реализован устройством кодирования видео, а именно, устройством, описанным на любом из фиг. 2, фиг. 4 и фиг. 5.
Когда вариант 1 осуществления реализуется устройством декодирования видео, этап 902: устройство декодирования видео анализирует поток битов, чтобы определить режим разделения текущего узла. Режим разделения текущего узла может быть как минимум одним из разделения квадрантов (QT), горизонтальное двоичное разделение (horizontal BT), горизонтального тройного разделение (horizontal TT), вертикальное двоичное разделение (Vertical BT) и вертикальное тройное разделение (Vertical TT) или может быть другим режимом разделения. Это не ограничивается данным вариантом осуществления настоящего изобретения. Информация о режиме разделения текущего узла обычно передается в потоке битов и режим разделения текущего узла может быть получен путем анализа соответствующего элемента синтаксиса в потоке битов.
Когда вариант 1 осуществления реализуется устройством кодирования видео, этап 902: определить способ разделения текущего узла.
Этап 904: определить на основании режима разделения текущего узла и размера текущего узла, нужно ли разбивать блок цветности текущего узла; и, когда блок цветности текущего узла больше не разделяется, выполнить этап 906; или, когда блок цветности текущего узла необходимо разделить, выполнить этап 908.
В частности, в реализации может быть определено, генерируется ли блок цветности, длина стороны которого является первым пороговым значением (или блок цветности, длина стороны которого меньше второго порогового значения), путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, длина стороны которого является первым пороговым значением (или включает в себя блок цветности, длина стороны которого меньше второго порогового значения), блок цветности текущего узла дополнительно не разделяется. Например, первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4.
В этом варианте осуществления настоящего изобретения блок цветности, длина стороны которого является первым пороговым значением, является блоком цветности, ширина или высота которого является первым пороговым значением.
В другой реализации, например, когда любое из условий 1 - условия 5 истинно, может быть определено, что блок цветности текущего узла дополнительно не разделяется; в противном случае определяется, что блок цветности текущего узла необходимо разделить:
условие 1: ширина текущего узла равна удвоенному второму пороговому значению и режим разделения текущего узла представляет собой вертикальное двоичное разделение;
условие 2: высота текущего узла равна удвоенному второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное двоичное разделение;
условие 3: ширина текущего узла равна четырехкратному второму пороговому значению и режим разделения текущего узла представляет собой вертикальное тройное разделение.
условие 4: высота текущего узла равна четырехкратному второму пороговому значению и режим разделения текущего узла представляет собой горизонтальное тройное разделение; или
условие 5: ширина текущего узла равна удвоенному второму пороговому значению и режим разделения текущего узла представляет собой четырехкратное разделение.
Обычно ширина текущего узла является шириной блока яркости, соответствующего текущему узлу, и высота текущего узла является высотой блока яркости, соответствующего текущему узлу. В конкретной реализации, например, второе пороговое значение может быть равно 4.
В третьей реализации может быть определено, генерируется ли блок цветности, ширина которого является первым пороговым значением (или блок цветности, ширина которого меньше второго порогового значения), путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, ширина которого является первым пороговым значением (или включает в себя блок цветности, ширина которого меньше второго порогового значения), блок цветности текущего узла дополнительным не разделяется. Например, первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4.
В четвертой реализации может быть определено, генерируется ли блок цветности, количество выборок цветности которого меньше третьего порогового значения, путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, количество выборок цветности которого меньше третьего порогового значения, блок цветности текущего узла дополнительно не разделяется. Например, третье пороговое значение может быть 16. В этом случае блок цветности, количество выборок цветности которого меньше 16, включает, но не ограничивается, 2x2 блок цветности, 2x4 блок цветности и 4x2 блок цветности. Третье пороговое значение может быть равно 8. В этом случае блок цветности, количество выборок цветности которого меньше 8, включает в себя, но не ограничивается, 2x2 блок цветности.
В частности, если условие 1 или условие 2 истинно, может быть определено, что блок цветности, количество выборок цветности которого меньше третьего порогового значения, генерируется путем разделения текущего узла на основании режима разделения текущего узла; в противном случае может быть определено, что никакой блок цветности, количество выборок цветности которого меньше третьего порогового значения, не генерируется путем разделения текущего узла на основании режима разделения текущего узла:
условие 1: произведение ширины и высоты текущего узла меньше 128, и режим разделения текущего узла представляет собой вертикальное двоичное разделение или горизонтальное двоичное разделение; или
условие 2: произведение ширины и высоты текущего узла меньше 256, и режим разделения текущего узла представляет собой вертикальное тройное разделение, горизонтальное тройное разделение или квадро разделение.
В частности, в другой реализации, если выполняется либо условие 3, либо условие 4, может быть определено, что блок цветности, количество выборок цветности которого меньше третьего порогового значения, генерируется путем разделения текущего узла на основании режима разделения текущего узла; в противном случае может быть определено, что никакой блок цветности, количество выборок цветности которого меньше третьего порогового значения, не генерируется путем разделения текущего узла на основании режима разделения текущего узла:
условие 3: произведение ширины и высоты текущего узла равно 64 и режим разделения текущего узла представляет собой вертикальное двоичное разделение, горизонтальное двоичное разделение, квадро разделение, горизонтальное тройное разделение или вертикальное тройное разделение; или
условие 4: произведение ширины и высоты текущего узла равно 128, и режим разделения текущего узла представляет собой вертикальное тройное разделение или горизонтальное тройное разделение.
В пятой реализации может быть определено, генерируется ли блок цветности, высота которого является первым пороговым значением (или блок цветности, высота которого меньше второго порогового значения), путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, высота которого является первым пороговым значением (или блок цветности, высота которого меньше второго порогового значения), блок цветности текущего узла дополнительно не разделяется. Например, первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4.
Этап 906: разделить блок яркости (luma block) текущего узла на основании режима разделения текущего узла для получения дочерних узлов (которые также могут называться дочерними узлами блока яркости, узлами яркости для краткости) текущего узла. Каждый дочерний узел включает в себя только блок яркости. Блок цветности (chroma block) текущего узла дополнительно не разделяется и становится блоком кодирования, включающим в себя только блок цветности.
Возможно, как показано на фиг. 10, этап 906 может дополнительно включать в себя этап 9062: проанализировать блок яркости текущего узла для получения информации предсказания и остаточной информации каждой из подобластей в блоке яркости текущего узла, где каждая подобласть соответствует одному дочернему узлу.
В частности, этап 9062 может быть реализован с использованием любого из следующих способов:
Способ 1: дополнительно не разделять каждый дочерний узел блока яркости по умолчанию (то есть, каждый узел яркости является блоком кодирования и один дочерний узел блока яркости соответствует одному блоку кодирования, включающему в себя только блок яркости) и последовательно проанализировать данные блока кодирования для дочерних узлов блока яркости для получения информации предсказания и остаточной информации каждого блока яркости. Блок яркости узла яркости является подобластью в блоке яркости текущего узла и блоки яркости узлов яркости составляют блок яркости текущего узла.
Способ 2: определить, нужно ли продолжать дополнительное последовательное разделение дочерних узлов блока яркости; и, когда дочерние узлы необходимо дополнительно разделить, проанализировать режим разделения дочерних узлов и соответствующие данные блока кодирования. Более конкретно, если узел яркости не разделяется дополнительно, анализируются данные блока кодирования, соответствующие узлу яркости, для получения информации предсказания и остаточной информации, которые соответствуют блоку яркости узла яркости; или, если узел яркости продолжает разделяться, определить, необходимо ли разделять дочерние узлы (следует отметить, что дочерний узел все еще включает в себя только блок яркости) узла яркости, до тех пор, пока не будет определена информация предсказания и остаточная информация каждой подобластей блока яркости текущего узла.
Информация предсказания включает в себя, но не ограничивается этим, режим предсказания (указывающий режим внутреннего предсказания или режим внешнего предсказания), режим внутреннего предсказания, информацию о движении и/или тому подобное. Режим внутреннего предсказания блока яркости может быть одним из планарный режим (Planar Mode), DC режим (DC Mode), угловой режим (angular Mode) и полученный режим цветности (chroma derived mode, DM). Информация о движении может включать в себя информацию, такую как направление предсказания (вперед, назад или двунаправленное), опорный индекс (reference index) и/или вектор движения (motion vector).
Остаточная информация включает в себя флаг кодированного блока (coded block flag, CBF), коэффициент преобразования и/или тип преобразования (например, DCT-2, DST-7 или DCT-8) и т.п.
Возможно, как показано на фиг. 10, этап 906 может дополнительно включать в себя этап 9064: получить информацию предсказания и/или остаточную информацию блока цветности.
В частности, этап 9064 может включать в себя этап 90642 и этап 90644. Этап 90642 может быть этапом 90642A или этапом 90642B.
Этап 90642A, в частности, включает в себя:
Получить режим предсказания для заданного положения блока яркости текущего узла в качестве режима предсказания блока цветности текущего узла. Положение верхнего левого угла блока яркости текущего узла может быть выражено как (x0, y0) и его размер равен WxH. В этом случае заданного положение может включать в себя, но не ограничивается, верхний левый угол, нижний правый угол (x0 + W - 1, y0 + H - 1), центр (x0 + W/2, y0 + H/2), (x0 + W/2, 0) или (0, y0 + H/2) блока яркости или тому подобное. Режим предсказания указывает, выполняется ли внутреннее предсказание или внешнее предсказание для пикселя в заданном положении, например информация, указанная синтаксическим элементом pred_mode_flag в HEVC. Например, в VTM может быть определено, является ли режим предсказания для заданного положения режимом IBC, на основании информации, указанной синтаксическим элементом pred_mode_ibc_flag.
Если режимом предсказания для заданного положения является внешнее предсказание, для определения режима предсказания блока цветности используется один из следующих способов:
Способ 1. Выполнить внешнее предсказание для блока цветности для получения информации о движении для заданного положения в качестве информации о движении для блока цветности.
Способ 2: выполнить внешнее предсказание для блока цветности и разделить блок цветности на подблоки предсказания цветности (где размер подблока предсказания цветности составляет, например, две выборки цветности по ширине и две выборки цветности по высоте) и получить информацию о движении субблоков предсказания цветности следующим образом:
Если внешнее предсказание выполняется для блоков яркости на позициях изображения яркости, соответствующих субблокам предсказания цветности, информация движения на позициях изображения яркости, соответствующих субблокам предсказания цветности, используется в качестве информации движения субблока предсказания цветности; в противном случае информация о движении для заданного положения получается как информация о движении субблоков предсказания цветности.
Для изображения YUV4:2:0 координаты субблока предсказания цветности в изображении цветности обозначаются как (xC, yC). В этом случае координаты положения изображения яркости, соответствующего субблоку предсказания цветности, равны (xC << 1, yC << 1).
Способ 3: анализировать флаг pred_mode_flag для определения, выполняется ли внутреннее или внешнее предсказание для блока цветности; и, если внутреннее предсказание выполняется для блока цветности, анализировать режим внутреннего предсказания из битового потока как режим внутреннего предсказания блока цветности; или, если внешнее предсказание выполняется для блока цветности, получить информацию о движении для заданного положения в качестве информации о движении для блока цветности.
Способ 4. Анализировать флаг pred_mode_flag для определения, выполняется ли внутреннее или внешнее предсказание для блока цветности; и, если выполняется внутреннее предсказание в блоке цветности, анализировать режим внутреннего предсказания из потока битов как режим внутреннего предсказания блока цветности, где режим внутреннего предсказания может быть одним из режима линейной модели между компонентами и режима DM, и режим внутреннего предсказания яркости, соответствующий режиму DM, устанавливается на планарный режим; или, если внешнее предсказание выполняется в блоке цветности, разделить блок цветности на субблоки предсказания цветности, где информация о движении субблоков предсказания цветности получается следующим образом:
Если внешнее предсказание выполняется для блоков яркости на позициях изображения яркости, соответствующих субблокам предсказания цветности, информация движения на позициях изображения яркости, соответствующих субблокам предсказания цветности, используется в качестве информации движения субблока предсказания цветности; в противном случае информация о движении для заданного положения получается как информация о движении субблоков предсказания цветности.
Контекстная модель, используемая для анализа флага pred_mode_flag, является заданной моделью, например, с номером 2 модели.
Если режимом предсказания для заданного положения является внутреннее предсказание, выполняется внутреннее предсказание для блока цветности, и режим внутреннего предсказания анализируется из потока битов как режим внутреннего предсказания блока цветности. В качестве альтернативы, непосредственно определяется, что режим внутреннего предсказания блока цветности является одним из режима DC, планарного режима, углового режима, режима кросс-компонентной линейной модели или режима DM.
Если режим предсказания для заданного положения является режимом IBC, блок цветности предсказывается в режиме IBC для получения информации о векторе смещения (displacement vector) для заданного положения в качестве информации вектора смещения блока цветности; или
если режим предсказания для заданного положения является режимом IBC, режим предсказания блока цветности определяется на основании флага pred_mode_ibc_flag:
1) если pred_mode_ibc_flag равно 1, используется режим IBC для блока цветности; более конкретно, способ предсказания IBC для блока цветности может быть способом в VTM 4.0, то есть, блок цветности разделяется на субблоки 2x2, и вектор смещения каждого субблока равен вектору смещения области яркости, соответствующей субблоку; или
2) если pred_mode_ibc_flag равен 0, для блока цветности используется режим внутреннего предсказания или режим внешнего предсказания.
Когда используется режим внутреннего предсказания, анализируется синтаксический элемент из потока битов для определения режима внутреннего предсказания цветности. В качестве альтернативы, непосредственно определяется, что режим внутреннего предсказания блока цветности принадлежит набору режимов внутреннего предсказания цветности. Набор режимов внутреннего предсказания цветности включает в себя DC режим, планарный режим, угловой режим, режим кросс-компонентной линейной модели и режим DM.
Когда используется режим внешнего предсказания, информация о движении для заданного положения может быть получена как информация о движении блока цветности.
Следует отметить, что, когда в потоке битов нет pred_mode_ibc_flag, если тип изображения, в котором расположен текущий узел, является I-кадром / I-сегментом, и режим IBC разрешен для использования, pred_mode_ibc_flag по умолчанию 1, то есть, используется режим IBC для блока цветности по умолчанию; или, если тип изображения, в котором расположен текущий узел, является P/B-кадром/сегментом, pred_mode_ibc_flag по умолчанию равен 0.
В VTM может быть определено, является ли режим предсказания для заданного положения режимом IBC, на основании информации, указанной синтаксическим элементом pred_mode_ibc_flag. Например, если pred_mode_ibc_flag равен 1, это указывает, что используется режим предсказания IBC; или, если pred_mode_ibc_flag равен 0, это указывает, что режим IBC не используется. Когда в битовом потоке отсутствует pred_mode_ibc_flag, если в I-кадре/I-сегменте значение pred_mode_ibc_flag равно значению sps_ibc_enabled_flag; если в Р-кадр/сегменте или B-кадр/сегменте pred_mode_ibc_flag равно 0. Когда sps_ibc_enabled_flag равен 1, это указывает на то, что текущее изображение разрешено использовать в качестве опорного изображения в процессе декодирования текущего изображения; или, когда sps_ibc_enabled_flag равен 0, то это означает, что текущий кадр не разрешается использовать в качестве опорного изображения в процессе декодирования текущего изображения.
Режим внутреннего предсказания блока цветности может быть одним из DC режим, планарный режим, угловой режим, режим кросс-компонентной линейной модели (cross-component liner model, CCLM) и полученный режим цветности. (chroma derived mode, DM), например, DC режим, планарный режим, угловой режим, режим кросс-компонентной линейной модели и полученный режим цветности в VTM.
Этап 90642B, в частности, включает в себя:
Получить режимы предсказания для множества блоков яркости текущего узла и определить режим предсказания блока цветности, соответствующего текущему узлу, используя следующий способ:
Если выполняется внутреннее предсказание для всего множества блоков яркости, внутреннее предсказание выполняется для блока цветности, и режим внутреннего предсказания анализируется из потока битов как режим внутреннего предсказания блока цветности.
Если выполняется внешнее предсказание для всего множества блоков яркости, для определения режима предсказания цветности используется один из следующих способов:
Способ 1: выполнить внешнее предсказание для блока цветности для получения информации о движении для заданного положения в качестве информации о движении для блока цветности. Заданное положение имеет то же значение, что и в варианте 1 осуществления.
Способ 2: проанализировать флаг pred_mode_flag для определения, выполняется ли внутреннее или внешнее предсказание для блока цветности; и, если выполняется внутреннее предсказание для блока цветности, анализировать режим внутреннего предсказания из битового потока как режим внутреннего предсказания блока цветности; или, если выполняется внешнее предсказание для блока цветности, получить информацию о движении для заданного положения в качестве информации о движении для блока цветности.
Если внешнее предсказание и внутреннее предсказание применяются для множества блоков яркости, информация о режиме блока цветности может быть определена одним из следующих способов:
(1) если режимом предсказания для заданного положения является внешнее предсказание, выполняется внешнее предсказание для блока цветности для получения информации о движении для заданного положения в качестве информации о движении блока цветности;
(2) если режимом предсказания для заданного положения является внутреннее предсказание, внутреннее предсказание выполняется для блока цветности, и режим внутреннего предсказания анализируется из потока битов как режим внутреннего предсказания блока цветности; или непосредственно определяется, что режим внутреннего предсказания блока цветности является одним из DC режима, планарного режима, углового режима, режима кросс-компонентной линейной модели или режима DM;
(3) если режим предсказания для заданного положения является режимом IBC, блок цветности предсказывается в режиме IBC для получения информации вектора смещения для заданного положения в качестве информации вектора смещения блока цветности; и
(4) режим предсказания цветности напрямую указан как один режим в наборе режимов, где набор режимов включает в себя режим AMVP, режим IBC, режим пропуска, DC режим, планарный режим, угловой режим, режим кросс-компонентной линейной модели и режим DM.
Этап 90644: анализировать остаточную информацию блока цветности. Остаточная информация блока цветности содержится в блоке преобразования. Тип преобразования по умолчанию может быть DCT-2.
Этап 908: разделить текущий узел на дочерние узлы, где каждый дочерний узел включает в себя блок яркости и блок цветности. Этап 901 выполняется на каждом дочернем узле, и синтаксический анализ продолжается для режима разделения дочернего узла для определения, должен ли дочерний узел (который также упоминается, как узел) дополнительно разделен.
После получения режима разделения подобласти блока яркости и информации предсказания и остаточной информации каждой из подобластей, для каждой подобласти может выполняться обработка внешнего предсказания или обработка внутреннего предсказания на основании соответствующего режима предсказания подобласти, чтобы получить изображение с внешним предсказанием или изображение с внутренним предсказанием для подобласти. Затем выполняются деквантование и обработка обратного преобразования коэффициента преобразования на основании остаточной информации каждой подобласти для получения остаточного изображения, и остаточное изображение накладывается на предсказанное изображение в соответствующей подобласти для генерирования восстановленного изображения блока яркости.
После получения информации предсказания и остаточной информации блока цветности, над блоком цветности может выполняться обработка внешнего предсказания или обработка внутреннего предсказания на основании режима предсказания блока цветности для получения изображения, предсказанное внешним предсказанием, или внутреннее предсказание изображения блока цветности. Затем выполняются деквантование и обработка обратного преобразования коэффициента преобразования на основании остаточной информации блока цветности, чтобы получить остаточное изображение, и остаточное изображение накладывается на предсказанное изображение блока цветности для генерирования восстановленного изображения блока цветности.
В варианте 1 осуществления настоящего изобретения, когда блок цветности текущего узла не разделяется дополнительно, способ может использоваться для разделения только блока яркости текущего узла, тем самым, повышая эффективность кодирования и декодирования, уменьшая максимальную пропускную способность кодека и упрощая его реализацию.
Вариант 2 осуществления
По сравнению с вариантом 1 осуществления к этапу 9062 добавляется следующее ограничение: для узлов яркости (то есть, дочерних узлов блоков яркости) используется один и тот же режим предсказания, то есть, выполняется внутреннее предсказание или внешнее предсказание на каждом узле яркости. Другие этапы аналогичны этапам в варианте 1 осуществления, и подробности снова не описываются.
Для использования одного и того же режима предсказания для узлов яркости может использоваться любой из следующих способов:
Способ 1: если текущий кадр является I-кадром, на всех дочерних узлах текущего узла по умолчанию выполняется внутреннее предсказание; или, если текущий кадр является P-кадром или B-кадром, анализируется первый узел (который может быть первым дочерним узлом для краткости), на котором выполняется обработка синтаксического анализа, для получения режима предсказания первого узла, и режим предсказания оставшегося дочернего узла (который для краткости является узлом яркости) по умолчанию является режимом предсказания первого узла, на котором выполняется обработка синтаксического анализа; или
способ 2: если текущий кадр является I-кадром, выполняется внутреннее предсказание на всех дочерних узлах текущего узла по умолчанию; или, если текущий кадр является P-кадром или B-кадром, выполняется внешнее предсказание на всех дочерних узлах текущего узла по умолчанию.
Вариант 3 реализации
Фиг. 11 является блок-схемой 1100 способа согласно варианту 3 осуществления настоящего изобретения. Вариант 3 осуществления аналогичен варианту 1 осуществления, за исключением этапа 1104.
Этап 1104: определить на основании режима разделения текущего узла размер текущего узла и режим предсказания первого узла, на котором выполняется обработка синтаксического анализа (который может быть первым дочерним узлом для краткости) в текущем узле, следует ли разделить блок цветности текущего узла, где первый дочерний узел включает в себя только блок яркости. Один и тот же режим предсказания выполняется для множества дочерних узлов текущего узла. Каждый дочерний узел включает в себя только блок яркости.
Следует ли определить режим разделения текущего узла и размер текущего узла, или сначала определяется режим предсказания первого дочернего узла, не ограничивается в этом варианте осуществления настоящего изобретения.
На основании варианта1 или 2 осуществления в варианте 3 осуществления определяется режим разделения блока цветности текущего узла, соответствующий режиму синтаксического анализа информации предсказания и соответствующий режиму синтаксического анализа остаточной информации, со ссылкой на режим предсказания первого дочернего узла текущего узла.
В реализации, на основании режима разделения текущего узла и размера текущего узла определяется, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, длина стороны которого равна первому пороговому значению, или длина стороны которого меньше второго порогового значения и режим предсказания первого дочернего узла является внутренним предсказанием; в этом случае блок цветности текущего узла не разделяется. Подобно варианту 1 осуществления, например, первое пороговое значение может быть 2 и второе пороговое значение может быть 4.
В этом варианте осуществления настоящего изобретения блок цветности, длина стороны которого является первым пороговым значением, является блоком цветности, ширина или высота которого является первым пороговым значением.
В другой реализации, когда режим предсказания первого дочернего узла является внутренним предсказанием и выполняется любое из условий 1-5:
условие 1: ширина текущего узла равна удвоенному второму пороговому значению, и режим разделения текущего узла представляет собой вертикальное двоичное разделение;
условие 2: высота текущего узла равна удвоенному второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное двоичное разделение;
условие 3: ширина текущего узла в четыре раза больше второго порогового значения, и режим разделения текущего узла представляет собой вертикальное тройное разделение;
условие 4: высота текущего узла равна четырехкратному второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное тройное разделение; или
условие 5: если ширина текущего узла равна удвоенному второму пороговому значению и режим разделения текущего узла представляет собой четырехкратное разделение, блок цветности текущего узла дополнительно не разделяется.
Обычно ширина текущего узла является шириной блока яркости, соответствующего текущему узлу, и высота текущего узла является высотой блока яркости, соответствующего текущему узлу. В конкретной реализации, например, второе пороговое значение может быть равно 4.
Когда режим предсказания первого дочернего узла является внутренним предсказанием, аналогичным первому варианту осуществления, в третьей реализации, может быть определено, генерируется ли блок цветности, ширина которого является первым пороговым значением (или блоком цветности, ширина которого меньше чем второе пороговое значением) путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, ширина которого является первым пороговым значением (или блок цветности, ширина которого меньше второго порогового значением) и режим предсказания первого дочернего узла является внутренним предсказанием, блок цветности текущего узла дополнительно не разделяется. Например, первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4.
Когда режим предсказания первого дочернего узла является внутренним предсказанием, аналогичным первому варианту осуществления, в четвертой реализации, может быть определено, генерируется ли блок цветности, количество выборок цветности которого меньше третьего порогового значением, путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, количество выборок цветности которого меньше третьего порогового значения, и режим предсказания первого дочернего узла является внутренним предсказанием, блок цветности текущего узла дополнительно не разделяется. Например, третье пороговое значение может быть 16. В этом случае блок цветности, количество выборок цветности которого меньше 16, включает в себя, но не ограничивается, блок цветности 2x2, блок цветности 2x4 и блок цветности 4x2. Третье пороговое значение может быть равно 8. В этом случае блок цветности, количество выборок цветности которого меньше 8, включает в себя, но не ограничивается, блок цветности 2x2.
В частности, если истинно либо условие 1, либо условие 2, может быть определено, что блок цветности, количество выборок цветности которого меньше третьего порогового значения, генерируется путем разделения текущего узла на основании режима разделения текущего узла; в противном случае может быть определено, что никакой блок цветности, количество выборок цветности которого меньше третьего порогового значения, не генерируется путем разделения текущего узла на основании режима разделения текущего узла:
условие 1: произведение ширины и высоты текущего узла меньше 128, и режим разделения текущего узла представляет собой вертикальное двоичное разделение или горизонтальное двоичное разделение; или
условие 2: произведение ширины и высоты текущего узла меньше 256, и режим разделения текущего узла представляет собой вертикальное тройное разделение, горизонтальное тройное разделение или четырехкратное разделение.
В частности, в другой реализации, если выполняется либо условие 3, либо условие 4, может быть определено, что блок цветности, количество выборок цветности которого меньше третьего порогового значения, генерируется путем разделения текущего узла на основании режима разделения текущего узла; в противном случае может быть определено, что никакой блок цветности, количество выборок цветности которого меньше третьего порогового значения, не генерируется путем разделения текущего узла на основании режима разделения текущего узла:
условие 3: произведение ширины и высоты текущего узла равно 64, и режим разделения текущего узла представляет собой вертикальное двоичное разделение, горизонтальное двоичное разделение, четырехкратное разделение, горизонтальное тройное разделение или вертикальное тройное разделение; или
условие 4: произведение ширины и высоты текущего узла равно 128, и режим разделения текущего узла представляет собой вертикальное тройное разделение или горизонтальное тройное разделение.
Когда режим предсказания первого дочернего узла является внутренним предсказанием, аналогичным первому варианту осуществления, в пятой реализации, может быть определено, генерируется ли блок цветности, высота которого является первым пороговым значением (или блок цветности, высота которого меньше чем второе пороговое значение) путем разделения текущего узла на основании режима разделения текущего узла. Если определено, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, высота которого является первым пороговым значением (или блок цветности, высота которого меньше второго порогового значения), и режим предсказания первого дочернего узла является внутренним предсказанием, блок цветности текущего узла дополнительно не разделяется. Например, первое пороговое значение может быть равно 2 и второе пороговое значение может быть равно 4.
Если блок цветности текущего узла дополнительно не разделяется, блок цветности текущего узла становится блоком кодирования, включающим в себя только блок цветности. Способ 1100 может дополнительно включать в себя: получение информации предсказания и/или остаточной информации блока цветности.
В другой реализации на основании режима разделения текущего узла и размера текущего узла определяется, что дочерний узел, сгенерированный путем разделения текущего узла, включает в себя блок цветности, длина стороны которого меньше порогового значения. Если режим предсказания первого дочернего узла является внешним предсказанием, блок цветности текущего узла разделяется на основании режима разделения текущего узла. Возможно, информация о движении соответствующего дочернего узла блока цветности определяется на основании информации о движении дочернего узла текущего узла. Например, информация о движении дочернего узла блока цветности текущего узла может быть установлена как информация о движении соответствующего узла яркости (то есть, информацию о движении каждого дочернего узла блока цветности не нужно анализировать из битового потока). Дочерние узлы блока цветности анализируются для получения остаточной информации о дочерних узлах блока цветности.
Когда режим предсказания первого дочернего узла является внешним предсказанием, и выполняется любое из следующих условий:
условие 1: ширина текущего узла равна удвоенному второму пороговому значению, и режим разделения текущего узла представляет собой вертикальное двоичное разделение;
условие 2: высота текущего узла равна удвоенному второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное двоичное разделение;
условие 3: ширина текущего узла в четыре раза больше второго порогового значения и режим разделения текущего узла представляет собой вертикальное тройное разделение;
условие 4: высота текущего узла равна четырехкратному второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное тройное разделение; или
условие 5: если ширина текущего узла равна удвоенному второму пороговому значению и режим разделения текущего узла представляет собой четырехкратное разделение, блок цветности текущего узла все еще необходимо разделить.
Обычно ширина текущего узла является шириной блока яркости, соответствующего текущему узлу, и высота текущего узла является высотой блока яркости, соответствующего текущему узлу. В конкретной реализации, например, второе пороговое значение может быть равно 4.
В варианте 3 осуществления, режим разделения блока цветности, соответствующий режиму синтаксического анализа информации предсказания и соответствующий режиму синтаксического анализа остаточной информации также могут быть определены на основании режима предсказания узла яркости. Таким образом достигается более высокая гибкость. Кроме того, когда режимом предсказания узла яркости является внутреннее предсказание, блок цветности текущего узла дополнительно не разделяется, тем самым, повышая эффективность кодирования и декодирования цветности, уменьшая максимальную пропускную способность кодека и облегчая реализацию кодека.
В таблице 1 показаны некоторые синтаксические структуры на уровне CU. Если текущий узел не разделяется дополнительно на дочерние узлы, текущий узел является блоком кодирования и блок предсказания блока кодирования анализируется в соответствии со следующими синтаксическими структурами.
skip_flag является флагом, представляющий режим пропуска. Когда значение skip_flag равно 1, это указывает, что для текущего CU используется режим пропуска; или когда значение skip_flag равно 0, это указывает, что для текущего CU режим пропуска не используется.
merge_flag является флагом, представляющий прямой режим. Когда значение merge_flag равно 1, это указывает, что для текущего CU используется режим слияния; или когда значение merge_flag равно 0, это указывает, что режим слияния не используется.
cu_pred_mode является флагом, представляющий режим предсказания блока кодирования. Когда значение cu_pred_mode равно 1, это указывает, что для текущего блока кодирования используется режим внутреннего предсказания; или, когда значение cu_pred_mode равно 0, это указывает, что для текущего блока кодирования используется общий режим внешнего предсказания.
Таблица 1
В таблице 2 показан некоторый синтаксический анализ на уровне CU. Таблица 2 является просто примером. В таблице 2 значение skip_flag такое же, как у skip_flag в таблице 1, и значение pred_mode_flag такое же, как у cu_pred_mode в таблице 1.
cu_skip_flag является флагом, представляющий режим пропуска. Когда значение cu_skip_flag равно 1, это указывает, что для текущего CU используется режим пропуска; или, когда значение cu_skip_flag равно 0, это указывает, что для текущего CU режим пропуска не используется.
merge_flag является флагом, представляющий прямой режим. Когда значение merge_flag равно 1, это указывает, что для текущего CU используется режим слияния; или, когда значение merge_flag равно 0, это указывает, что режим слияния не используется.
pred_mode_flag является флагом, представляющий режим предсказания блока кодирования. Когда значение pred_mode_flag равно 1, это указывает, что режим внутреннего предсказания используется для текущего блока предсказания; или, когда значение pred_mode_flag равно 0, это указывает, что для текущего блока предсказания используется общий режим внешнего предсказания. Если значение pred_mode_flag равно 1, значением CuPredMode [x0] [y0] является MODE_INTRA; или, если значение pred_mode_flag равно 0, значением CuPredMode [x0] [y0] является MODE_INTER.
Таблица 2
В режиме вертикального двоичного разделения (или горизонтального двоичного разделения) узел размером 8xM (или Mx8) разделяется на два дочерних узла размером 4xM (или Mx4). Точно так же разделяется узел размером 16xM (или Mx16) на четыре дочерних узла размером 4xM (или Mx4) и один дочерний узел размером 8xN (или Nx8) в вертикальном расширенном четырехкратном разделении (или горизонтальном расширенном четырехкратном разделении). Точно так же разделяется узел размером 16xM (или Mx16) в режиме вертикального троичного разделения (или горизонтального тройного разделения) для генерирования дочерних узлов размером два 4xM (или Mx4) и одного дочернего узла размером 8xM (или Mx8). Для формата данных YUV4:2:0 разрешение составляющей цветности составляет 1/2 от составляющей яркости. То есть, узел 4xM включает в себя один блок яркости 4xM и два блока цветности 2x (M/2). Для аппаратного декодера затраты на обработку небольших блоков (особенно с размером 2x2, 2x4 и 2x8) сравнительно высоки. Однако в этом режиме разделения генерируются небольшие блоки размером 2x2, 2x4 и т.п., что неблагоприятно для реализации аппаратного декодера. Для аппаратного декодера сложность обработки небольших блоков сравнительно высока, что конкретно воплощено в следующих трех аспектах.
(1) Технические задачи внутреннего предсказания: в конструкции оборудования для повышения скорости обработки обычно одновременно обрабатываются 16 пикселей один раз для внутреннего предсказания, и небольшой блок размером 2x2, 2x4, 4x2 или тому подобное включает в себя менее 16 пикселей, что снижает производительность обработки внутреннего предсказания.
(2) Технические задачи кодирования коэффициентов: в HEVC кодирование коэффициентов преобразования основано на группе коэффициентов (группа коэффициентов, CG), включающая в себя 16 коэффициентов, но небольшой блок размером 2x2, 2x4, 4x2 или тому подобное включает в себя четыре или восемь коэффициентов преобразования. В результате для поддержки кодирования коэффициентов этих небольших блоков должны быть добавлены группы коэффициентов, включающие в себя четыре коэффициента и восемь коэффициентов; следовательно, увеличивается сложность реализации.
(3) Технические задачи внешнего предсказания: внешнее предсказание для небольшого блока предъявляет сравнительно высокие требования к полосе пропускания данных, а также влияет на скорость обработки декодирования.
Когда узел дополнительно разделяется на основании режима разделения, и один из сгенерированных дочерних узлов включает в себя блок цветности, длина стороны которого равна 2, блок яркости, включенный в дочерний узел, продолжает дополнительно разделяться в этом режиме разделения, и блок цветности, включенный в дочерний узел, дополнительно не разделяется. Этот режим может избежать генерирования блока цветности, длина стороны которого равна 2, снизить максимальную пропускную способность декодера и облегчить реализацию декодера. Дополнительно, предлагается способ определения режима предсказания блока цветности на основании режима предсказания блока яркости, эффективно повышающий эффективность кодирования.
Способ, предусмотренный в настоящем изобретении, может быть применен к видеокодеку в вышеупомянутом варианте осуществления.
Вариант 4 реализации
Этот вариант осуществления относится к режиму разделения блоков при декодировании видео. Формат видеоданных в этом варианте осуществления является форматом YUV4:2:0. Аналогичный режим можно использовать для данных YUV4:2:2.
Этап 1: анализировать режим разделения S узла A, где, если узел A продолжает разделяться, выполняется этап 2; или, если текущий узел дополнительно не разделяется на дочерние узлы, текущий узел соответствует одному блоку кодирования, и информация о блоке кодирования получается посредством синтаксического анализа.
Режим разделения узла A может быть, по меньшей мере, одним из разделением дерева квадрантов, вертикальным двоичным разделением, горизонтальным двоичным разделением, вертикальным тройным разделением и горизонтальным тройным разделением, или может быть другим режимом разделения. Режим разделения узла A не ограничивается настоящим изобретением. Информация о режиме разделения текущего узла может быть передана в битовом потоке и режим разделения текущего узла может быть получен путем анализа соответствующего элемента синтаксиса в битовом потоке. В качестве альтернативы режим разделения текущего узла может быть определен в соответствии с заранее установленным правилом и не ограничивается настоящим изобретением.
Этап 2: определить, является ли блок цветности, по меньшей мере, одного дочернего узла B в дочерних узлах, полученный путем разделения узла A на основании режима S разделения, небольшим блоком (или имеет ли ширина, высота и/или режим разделения узла A и/или ширина и высота узла B удовлетворяют, по меньшей мере, одному из условий). Если блок цветности, по меньшей мере, одного дочернего узла B в дочерних узлах, полученный путем разделения узла A, является небольшим блоком, выполняются этапы с 3 по 6.
В частности, один из следующих способов может использоваться для определения того, является ли блок цветности, по меньшей мере, одного дочернего узла B узла A субблоком:
(1) Если блок цветности, по меньшей мере, одного дочернего узла B узла A имеет размер 2x2, 2x4 или 4x2, блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком;
(2) если ширина или высота блока цветности, по меньшей мере, одного дочернего узла B узла A равна 2, блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком;
(3) если узел A включает в себя 128 выборок яркости и выполняется разделение троичного дерева на узле A, или узел A включает в себя 64 выборки яркости и выполняется разделение двоичного дерева на узле A, режим разделения дерева квадрантов или режим разделения троичного дерева, блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком;
(4) если узел A включает в себя 256 выборок яркости и узел разбивается в режиме разделения троичного дерева или в режиме разделения дерева квадрантов, или узел A включает в себя 128 выборок яркости, узел разбивается в режиме разделения двоичного дерева, блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком;
(5) если узел A включает в себя N1 выборок яркости и разделение троичного дерева выполняется на узле A, где N1 равно 64, 128 или 256;
(6) если узел A включает в себя N2 выборок яркости и выполняется разделение дерева квадрантов на узле A, где N2 равно 64 или 256; или
(7) если узел A включает в себя N3 выборок яркости и узел A разделен в режиме разделения двоичного дерева, где N3 равно 64, 128 или 256.
Следует отметить, что то, что узел A включает в себя 128 выборок яркости, также может быть описано как то, что область текущего узла равна 128, или произведение ширины и высоты узла A равно 128. Подробности не описаны.
Этап 3: ограничить выполнение внутреннего предсказания или внешнего предсказания для всех блоков кодирования в области покрытия узла A. Для внутреннего предсказания и внешнего предсказания для всех блоков кодирования параллельная обработка небольших блоков может быть реализована аппаратным обеспечением, тем самым, повышая производительность кодирования и декодирования.
Один из следующих способов может использоваться для определения выполнения внутреннего предсказания или внешнего предсказания для всех блоков кодирования в области покрытия узла A.
Способ 1: определение выполняется на основании флага в таблице синтаксиса.
Если блок цветности, по меньшей мере, одного дочернего узла B, полученный путем разделения узла A на основании режима S разделения, является небольшим блоком (и блок цветности узла A не является небольшим блоком), флаг cons_pred_mode_flag анализируется из битового потока. Когда значение cons_pred_mode_flag равно 0, это указывает, что внешнее предсказание выполняется для всех блоков кодирования в области покрытия узла A; или, когда значение cons_pred_mode_flag равно 1, это указывает, что внутреннее предсказание выполняется для всех блоков кодирования в области покрытия узла A. cons_pred_mode_flag может быть элементом синтаксиса, который необходимо проанализировать в процессе разделения блока. Когда синтаксический элемент анализируется, cu_pred_mode блока кодирования в области покрытия узла A может больше не анализироваться, и значение cu_pred_mode является значением по умолчанию, соответствующим значению cons_pred_mode_flag.
Следует отметить, что, если только режим внутреннего предсказания может использоваться для дочерних узлов узла A, например, узел A находится во внутреннем изображении (то есть, тип изображения, в котором узел A является внутренним типом или I-типом), или узел A находится во внутреннем изображении, и технология IBC не используется для последовательности, значение cons_pred_mode_flag по умолчанию равно 1, cons_pred_mode_flag отсутствует в битовом потоке. Технология IBC может принадлежать к внешнему предсказанию или может принадлежать к внутреннему предсказанию.
Способ 2: определение выполняется на основании режима предсказания первого узла в области узла A.
Анализируется режим предсказания первого блока кодирования B0 (где режим предсказания первого блока кодирования B0 не ограничен) в области узла A. Если режим предсказания B0 является внутренним предсказанием, внутреннее предсказание выполняется для всех блоков кодирования в области покрытия узла A; или, если режимом предсказания B0 является внешнее предсказание, внешнее предсказание выполняется для всех блоков кодирования в области покрытия узла A.
Этап 4: определить режим разделения блока цветности и режим разделения блока яркости узла A на основании режима предсказания, используемого для блоков кодирования в области покрытия узла A.
Если режим внутреннего предсказания используется для всех блоков кодирования в области покрытия узла A, блок яркости узла A разделяется на основании режима S разделения, чтобы получить N узлов дерева кодирования яркости; и блок цветности узла A не разделяется и соответствует одному блоку кодирования цветности (который для краткости является CB цветности). N узлов дерева кодирования яркости могут не ограничиваться дополнительным разделением или могут не ограничиваться. Если дочерний узел яркости продолжает разделяться, выполняется анализ режима разделения дочернего узла яркости для выполнения рекурсивного разделения. Когда узел дерева кодирования яркости не разделяется дополнительно, узел дерева кодирования яркости соответствует блоку кодирования яркости (который для краткости является CB яркости). Блок преобразования цветности, соответствующий CB сигнала цветности, и блок кодирования цветности имеют одинаковый размер, и блок предсказания цветности и блок кодирования цветности имеют одинаковый размер.
Если режим внешнего предсказания используется для всех блоков кодирования в области покрытия узла A, блок яркости и блок цветности узла A дополнительно разделяются на N узлов дерева кодирования, включающие в себя блок яркости и блок цветности на основании режима S разделения, и N узлов дерева кодирования могут продолжать разделяться или могут не разделяться и соответствовать блокам кодирования, включающие в себя блок яркости и блок цветности.
Этап 5: анализировать информацию предсказания и остаточную информацию CU, полученную путем разделения узла A.
Информация предсказания включает в себя режим предсказания (указывающий режим внутреннего предсказания или режим не внутреннего предсказания), режим внутреннего предсказания, режим внешнего предсказания, информацию о движении и т.п. Информация о движении может включать в себя такую информацию, как направление предсказания (вперед, назад или двунаправленное), опорный индекс (reference index) и вектор движения (motion vector).
Остаточная информация включает в себя флаг кодированного блока (coded block flag, CBF), коэффициент преобразования, тип преобразования (например, DCT-2, DST-7, DCT-8) и т.п. Тип преобразования по умолчанию может быть DCT-2.
Если ограничено, что только внутреннее предсказание может выполняться для каждого CU, полученного разделением узла A, синтаксический анализ блока предсказания CB яркости, полученного разделением узла A, включает в себя: skip_flag, merge_flag и cu_pred_mode устанавливаются соответственно равными 0, 0 и 1 (то есть, ни один из skip_flag, merge_flag и cu_pred_mode не присутствует в потоке битов), или skip_flag и cu_pred_mode установлены соответственно на 0 и 1 по умолчанию (то есть, ни один из skip_flag и cu_pred_mode отсутствуют в потоке битов), и анализируется информация о режиме внутреннего предсказания CB яркости; анализ блока предсказания CB цветности, полученного путем разделения узла A, включает в себя: анализ режима внутреннего предсказания CB цветности. Способ синтаксического анализа режима внутреннего предсказания CB цветности может быть: (1) синтаксическим анализом элемента синтаксиса из битового потока для получения режима внутреннего предсказания CB цветности; и (2) непосредственно устанавливают режим внутреннего предсказания CB цветности в один режим предсказания в наборе режима внутреннего предсказания цветности, например, один из режима линейной модели между компонентами, режима DM (chroma derived mode, DM), или IBC режим.
Если ограничено, что может выполняться только внешнее предсказание для каждого CU, полученного разделением узла A, синтаксический анализ режима предсказания CU, полученного разделением узла A, включает в себя: анализ skip_flag или/и merge_flag, установку cu_pred_mode равным 0 по умолчанию и получение посредством синтаксического анализа блока внешнего предсказания, такого как индекс слияния (merge index), направление внешнего предсказания (inter dir), опорный индекс (reference index), индекс предиктора вектора движения (motion vector predictor index) и разность векторов движения (motion vector difference).
skip_flag является флагом, представляющий режим пропуска. Когда значение skip_flag равно 1, это указывает, что для текущего CU используется режим пропуска; или когда значение skip_flag равно 0, это указывает, что для текущего CU не используется режим пропуска. merge_flag является флагом, представляющий режим слияния. Когда значение merge_flag равно 1, это указывает, что для текущего CU используется режим слияния; или когда значение merge_flag равно 0, это указывает, что режим слияния не используется. cu_pred_mode является флагом, представляющий режим предсказания блока кодирования. Когда значение cu_pred_mode равно 1, это указывает, что внутреннее предсказание выполняется для текущего блока предсказания; или, когда значение cu_pred_mode равно 0, это указывает, что общее внешнее предсказание выполняется для текущего блока предсказания (такая информация, как направление внешнего предсказания, опорный индекс, индекс предиктора вектора движения и компонент разности векторов движения идентифицируется в битовом потоке).
Следует отметить, что в этом варианте осуществления режим внутреннего предсказания является режимом предсказания для генерирования предиктора блока кодирования с использованием пространственного опорного пикселя изображения, в котором расположен блок кодирования, например, прямой текущий режим (direct current mode, DC), планарный режим (planar mode) или угловой режим (angular mode) или может включать в себя режим сопоставления с шаблоном (template matching mode) и режим IBC.
Режим внешнего предсказания является режимом предсказания для генерирования предиктора блока кодирования с использованием временного опорного пикселя в опорном изображении блока кодирования, например, режим пропуска (skip mode), режим слияния (merge mode), режим AMVP (advanced motion vector prediction), общий внешний режим или режим IBC.
Этап 6: декодировать каждый CU для получения восстановленного блока изображения, соответствующего узлу A.
Например, блок предсказания каждого CU выполняет обработку внешнего предсказания или обработку внутреннего предсказания CU для получения изображения с внешним предсказанием или изображение с внутренним предсказанием для CU. Затем деквантование и обработка обратного преобразования выполняются для коэффициента преобразования на основании остаточной информации каждого CU, чтобы получить остаточное изображение, и остаточное изображение накладывается на предсказанное изображение в соответствующей области для генерирования восстановленного изображения.
Согласно режиму разделения в варианте 4 осуществления, генерируется большой блок цветности, на котором выполняется внутреннее предсказание, тем самым, решая техническую задачу внутреннего предсказания малых блоков.
Вариант 5 реализации
Этап 1, этап 2, этап 3 и этап 6 в этом варианте осуществления такие же, как и в варианте 4 осуществления.
Этап 4: определить режим разделения блока цветности и режим разделения блока яркости узла A.
Блок яркости узла A продолжает разделяться на основании режима S разделения, чтобы генерировать N узлов дерева кодирования яркости. Блок цветности узла A дополнительно не разделяется и соответствует одному блоку кодирования цветности (CB chroma). Блок преобразования цветности, соответствующий CB цветности, и блок кода цветности имеют одинаковый размер. [Примечание: по сравнению с вариантом 4 осуществления, в этом варианте осуществления, независимо от того, используется ли режим внешнего предсказания или режим внутреннего предсказания, используется ограничение, что блок цветности всегда не разделяется, и блок яркости всегда разделяется на основании режима S разделения независимо от режима предсказания для области покрытия узла A.]
Этап 5: анализировать блок предсказания и остаточную информацию CU, полученную путем разделения узла A.
Если ограничено, что может выполняться только внутреннее предсказание для каждого CU, полученного путем разделения узла A, процесс обработки является таким же, как и в варианте 4 осуществления.
Если ограничено, что может выполняться только внешнее предсказание для каждого CU, полученного разделением узла A, синтаксический анализ режима предсказания CB яркости, полученного разделением узла A, включает в себя: анализ skip_flag или/и merge_flag, установку cu_pred_mode равным 0 по умолчанию, и получение посредством синтаксического анализа блока внешнего предсказания, такого как индекса слияния (merge index), направление внешнего предсказания (inter dir), опорный индекс (reference index), индекс предиктора вектора движения (motion vector predictor index) и разность векторов движения (motion vector difference). Информация о движении каждого субблока 4x4 в яркости CB выводится из блока внешнего предсказания, полученного посредством синтаксического анализа.
Если ограничено, что может выполняться только внешнее предсказание для каждого CU, полученного путем разделения узла A, блок предсказания CB цветности, полученный путем разделения узла A, не нужно анализировать, и CB цветности разделяется на подблоки цветности 2x2 (где режим разделения может быть режимом S разделения). Информация о движении каждого субблока цветности 2x2 является информацией движения области яркости 4x4, соответствующей субблоку цветности 2x2.
Согласно режиму разделения в варианте 5 осуществления, не генерируется ни малый блок цветности, на котором выполняется внутреннее предсказание, ни блок преобразования менее 16 пикселей. Следовательно, в варианте 5 осуществления решены вышеупомянутые технические задачи внутреннего предсказания и кодирования коэффициентов.
Вариант 6 осуществления
Этап 1, этап 2, этап 3, этап 4 и этап 6 в этом варианте осуществления такие же, как и в варианте 5 осуществления.
Этап 5: анализировать блок предсказания и остаточную информацию CU, полученную путем разделения узла A.
Если ограничено, что может выполняться только внутреннее предсказание для каждого CU, полученного путем разделения узла A, обработка такая же, как и в варианте 5 осуществления.
Если ограничено, что может выполняться только внешнее предсказание для каждого CU, полученного путем разделения узла A, синтаксический анализ блока предсказания CB яркости, полученного путем разделения узла A, является таким же, как в варианте 5 осуществления.
Если ограничено, что может выполняться только внешнее предсказание для каждого CU, полученного путем разделения узла A, блок предсказания CB цветности, полученный путем разделения узла A, не нуждается в синтаксическом анализе, блок предсказания цветности и блоки кодирования цветности имеют одинаковый размер, и информация о движении CB цветности представляет собой информацию о движении для конкретной заданной позиции в области яркости, соответствующей цвету CB (например, центр, нижний правый угол или верхний левый угол области яркости).
Согласно режиму разделения в варианте 6 осуществления, не генерируется ни малый блок цветности, на котором выполняется внутреннее предсказание, ни блок преобразования малого блока, ни малый блок цветности, на котором генерируется внешнее предсказание.
Вариант 7 осуществления
Этап 1: этап 1 аналогичен этапу 1 в варианте 4 осуществления.
Этап 2: определить, является ли блок яркости, по меньшей мере, одного дочернего блока B в дочерних узлах, полученный путем разделения узла A на основании режима S разделения, блоком яркости 4x4 (будь то ширина, высота и/или режим разделения узла A и/или ширина и высота узла B удовлетворяют, по меньшей мере, одному из условий в случае 1).
Если размер (то есть ширина и высота) узла A и/или режим S разделения удовлетворяет/удовлетворяют, по меньшей мере, одному из условий в случае 1, ограничивается, что внутреннее предсказание выполняется для всех блоков кодирования в области покрытия узла A; в противном случае определяется, является ли блок цветности, по меньшей мере, одного дочернего узла B в дочерних узлах, полученный путем разделения узла A на основании режима S разделения, небольшим блоком (независимо от того, удовлетворяют ли размер и/или режим S разделения узла A и/или ширина и высота узла B, по меньшей мере, одному из условий в случае 2, если да, выполняются этапы с 3 по этап 6.
В частности, рассматривают следующие два случая для способа определения, что блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком.
Случай 1:
Если выполняется одно или несколько из следующих предварительно установленных условий, узел A разделяется на основании режима S разделения для получения блока яркости 4x4:
(1) узел A включает в себя M1 пикселей, и режим разделения узла A представляет собой разделение дерева квадрантов. Например, M1 равен 64;
(2) узел A включает в себя M2 пикселей и режим разделения узла A представляет собой разделение троичного дерева. Например, M2 равен 64;
(3) узел A включает в себя M3 пикселей и режим разделения узла A представляет собой разделение двоичного дерева. Например, M3 равен 32;
(4) ширина узла A равна четырехкратному второму пороговому значению, высота узла A равна второму пороговому значению и режим разделения узла A представляет собой вертикальное разделение троичного дерева;
(5) ширина узла A равна второму пороговому значению, высота узла A равна четырехкратному второму пороговому значению, и режим разделения узла A представляет собой горизонтальное разделение троичного дерева;
(6) ширина узла A равна удвоенному второму пороговому значению, высота узла A равна второму пороговому значению, и режим разделения текущего узла представляет собой вертикальное двоичное разделение;
(7) высота узла A равна удвоенному второму пороговому значению, ширина узла A равна второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное двоичное разделение; или
(8) ширина или/и высота узла A в два раза превышает второе пороговое значение, и режим разделения узла A представляет собой разделение дерева квадрантов.
Размер может быть шириной и высотой области изображения, соответствующей узлу A, или количеством выборок яркости, включенных в область изображения, соответствующую узлу A, или область изображения, соответствующей узлу А.
Обычно ширина текущего узла является шириной блока яркости, соответствующего текущему узлу и высота текущего узла является высотой блока яркости, соответствующего текущему узлу. В конкретной реализации, например, второе пороговое значение может быть равно 4.
Случай 2:
(1) блок цветности, по меньшей мере, одного дочернего узла B узла A имеет размер 2x4 или 4x2;
(2) ширина или высота блока цветности, по меньшей мере, одного дочернего узла B узла A равна 2;
(3) узел A включает в себя 128 выборок яркости, и разделение троичного дерева выполняется на узле A, или узел A включает в себя 64 выборки яркости, и на узле А выполняется разделение двоичного дерева, разделение дерева квадрантов или разделение троичного дерева;
(4) узел A включает в себя 256 выборок яркости, и разделение троичного дерева или разделение дерева квадрантов выполняется на узле, или узел A включает в себя 128 выборок яркости, и на узле выполняется разделение двоичного дерева;
(5) узел A включает в себя N1 выборок яркости, и на узле A выполняется разделение троичного дерева, где N1 равно 64, 128 или 256;
(6) узел A включает в себя N2 выборок яркости, и на узле A выполняется разделение дерева квадрантов, где N2 равно 64 или 256; или
(7) узел A включает в себя N3 выборок яркости, и на узле A выполняется разделение двоичного дерева, где N3 равно 64, 128 или 256.
Следует отметить, что то, что узел A включает в себя 128 выборок яркости, также может быть описано как то, что область текущего узла равна 128, или произведение ширины и высоты узла A равно 128. Подробности не описаны.
Этап 3: этап 3 такой же, как этап 3 в варианте 4 осуществления.
Этап 4: определить режим разделения блока цветности и режим разделения блока яркости узла A на основании режима предсказания, используемого для блоков кодирования в области покрытия узла A.
Если режим внешнего предсказания используется для всех блоков кодирования в области покрытия узла A, блок яркости и блок цветности узла A разделяются на основании режима S разделения для получения дочерних узлов узел A и/или дочерних узлов в области покрытия узла A. Если генерируется блок яркости 4x4 на основании режима разделения дочернего узла A и/или дочернего узла в области покрытия узла A, режим разделения дочернего узла не разрешен или дополнительное разделение дочернего узла не может быть выполнено. Например, если генерируются узел A имеет размер 8x8 и два узла 8x4 (или два 4x8) путем разделения узла A в режиме горизонтального разделения двоичного дерева (или вертикального разделения двоичного дерева), то режим 8x4 (или 4x8) узел продолжает разделяться на блок 4x4; в этом случае узел 8x4 (или 4x8) не может быть дополнительно разделен.
Если режим внутреннего предсказания используется для всех блоков кодирования в области покрытия узла A, способы в вариантах 4, 5 и 6 осуществления могут использоваться как способы реализации, и подробности здесь снова не описываются. Например, блок яркости узла A разделяется и блок цветности узла A не разделяется.
Этап 5: анализировать блок предсказания и остаточную информацию CU, полученную путем разделения узла A.
Этот этап аналогичен этапу 5 в варианте 4 осуществления, и подробности здесь снова не описываются.
Этап 6: декодировать каждый CU для получения восстановленного сигнала блока изображения, соответствующего узлу A.
Этап 6 может быть реализован аналогично этапу 6 в варианте 4 осуществления и дополнительно здесь не описывается.
Вариант 8 осуществления
Этап 1: этап 1 аналогичен этапу 1 в варианте 4 осуществления.
Этап 2: определить, является ли блок яркости, по меньшей мере, одного дочернего блока B в дочерних узлах, полученный путем разделения узла A на основании режима S разделения, блоком яркости 4x4 (будь то ширина, высота и/или режим разделения узла A и/или ширина и высота узла B удовлетворяют, по меньшей мере, одному из условий в случае 1). Если размер (то есть, ширина и высота) узла A и/или режима S разделения удовлетворяет/удовлетворяют, по меньшей мере, одному из условий в случае 1, ограничивается, что выполняется внутреннее предсказание для всех блоков кодирования в области покрытия узла A; или
определяется, является ли блок цветности, по меньшей мере, одного дочернего узла B в дочерних узлах, полученный путем разделения узла A на основании режима S разделения, небольшим блоком (или размер и/или режим S разделения узла A, и/или ширина и высота узла B удовлетворяют, по меньшей мере, одному из условий в случае 2, выполняются этапы с 3 по этап 6.
В частности, рассматривают следующие два случая для способа определения, что блок цветности, по меньшей мере, одного дочернего узла B узла A является небольшим блоком.
Случай 1:
Если одно или несколько из следующих заданных условий истинны, узел A разделяется на основании режима S разделения для получения блока яркости 4x4:
(1) узел A включает в себя M1 пикселей и режим разделения узла A представляет собой разделение дерева квадрантов. Например, M1 равен 64;
(2) узел A включает в себя M2 пикселей и режим разделения узла A представляет собой разделение троичного дерева. Например, M2 равен 128;
(3) узел A включает в себя M3 пикселей и режим разделения узла A представляет собой разделение двоичного дерева. Например, M3 равен 32;
(4) ширина узла A равна четырехкратному второму пороговому значению, высота узла A равна второму пороговому значению, и режим разделения узла A представляет собой вертикальное разделение троичного дерева;
(5) ширина узла A равна второму пороговому значению, высота узла A равна четырехкратному второму пороговому значению, и режим разделения узла A представляет собой горизонтальное разделение троичного дерева;
(6) ширина узла A равна удвоенному второму пороговому значения, высота узла A равна второму пороговому значению, и режим разделения текущего узла представляет собой вертикальное двоичное разделение;
(7) высота узла A равна удвоенному второму пороговому значению, ширина узла A равна второму пороговому значению, и режим разделения текущего узла представляет собой горизонтальное двоичное разделение; или
(8) ширина и/или высота узла A в два раза превышает второе пороговое значение, и режим разделения узла A представляет собой разделение дерева квадрантов.
Размер может быть шириной и высотой области изображения, соответствующей узлу A, или количеством выборок яркости, включенных в область изображения, соответствующую узлу A, или областью области изображения, соответствующей узлу. А.
Обычно ширина текущего узла является шириной блока яркости, соответствующей текущему узлу, и высота текущего узла является высотой блока яркости, соответствующего текущему узлу. В конкретной реализации, например, второе пороговое значение может быть равно 4.
Случай 2:
(1) блок цветности, по меньшей мере, одного дочернего узла B узла A имеет размер 2x4 или 4x2;
(2) ширина или высота блока цветности, по меньшей мере, одного дочернего узла B узла A равна 2;
(3) узел A включает в себя 128 выборок яркости, и выполняется разделение троичного дерева на узле A, или узел A включает в себя 64 выборки яркости, и на узле А выполняется разделение двоичного дерева, разделение дерева квадрантов или разделение троичного дерева;
(4) узел A включает в себя 256 выборок яркости, и на узле выполняется разделение троичного дерева или разделение дерева квадрантов, или узел A включает в себя 128 выборок яркости, и на узле выполняется разделение двоичного дерева;
(5) узел A включает в себя N1 выборок яркости, и на узле A выполняется разделение троичного дерева, где N1 равно 64, 128 или 256;
(6) узел A включает в себя N2 выборок яркости, и разделение дерева квадрантов выполняется на узле A, где N2 равно 64 или 256; или
(7) узел A включает в себя N3 выборок яркости, и на узле A выполняется разделение двоичного дерева, где N3 равно 64, 128 или 256.
Следует отметить, что то, что узел A включает в себя 128 выборок яркости, также может быть описано как то, что область текущего узла равна 128, или произведение ширины и высоты узла A равно 128. Подробности не описаны.
Этап 3: этап 3 такой же, как этап 3 в варианте 4 осуществления.
Этап 4: определить режим разделения блока цветности и режим разделения блока яркости узла A на основании режима предсказания, используемого для блоков кодирования в области покрытия узла A.
Если для всех блоков кодирования в области покрытия узла A используется режим внешнего предсказания, блок яркости и блок цветности узла A разделяются на основании режима S разделения для получения дочерних узлов узла A и/или дочерних узлов в области покрытия узла A. Если блок яркости 4x4 генерируется на основании режима разделения дочернего узла A и/или дочернего узла в области покрытия узла A, режим разделения дочернего узла не разрешен или дочерний узел дополнительно не разделяется. Например, если узел A имеет размер 8x8 и два узла 8x4 (или два 4x8) генерируются путем разделения узла A в режиме горизонтального разделения двоичного дерева (или вертикального разделения двоичного дерева), то режим 8x4 (или 4x8) узел продолжает разбиваться на блок 4x4; в этом случае узел 8x4 (или 4x8) не может быть разделен.
Если для всех блоков кодирования в области покрытия узла A используется режим внутреннего предсказания, способы в вариантах 4, 5 и 6 осуществления могут использоваться как способы реализации, и подробности здесь снова не описываются. Например, блок яркости узла A разделяется и блок цветности узла A не разделяется.
Этап 5: анализировать блок предсказания и остаточную информацию CU, полученную путем разделения узла A.
Этот этап аналогичен этапу 5 в варианте 4 осуществления, и подробности здесь снова не описываются.
Этап 6: декодировать каждый CU для получения восстановленного сигнала блока изображения, соответствующего узлу A.
Этап 6 может быть реализован аналогично этапу 6 в варианте 4 осуществления и дополнительно здесь не описывается.
Вариант 9 осуществления
Если текущая область разделяется один раз для генерирования блока яркости 4x4 (например, 64 выборки яркости разделяются в режиме QT или 128 выборок яркости разделяются в режиме TT), ограничивается только, что внутренний режим по умолчанию может использоваться для текущего региона;
в противном случае передается флаг, указывающий, что для текущей области можно использовать только внешний режим или только внутренний режим.
Если ограничено, что для текущей области может использоваться только внешний режим, яркость и цветность разделяются совместно. Если узел в текущей области разбивается для генерирования блока яркости 4x4, такое разделение не допускается. Например, если текущий узел 8x8 и разделен в режиме HBT (или VBT) для генерирования двух узлов 8x4. Если эти узлы по-прежнему разделяются для генерирования CU 4x4, эти узлы 8x4 не могут и дополнительно разделяться.
Если ограничено, что для области может использоваться только внутренний режим, эта реализация такая же, как и исходная реализация (яркость разделяется, но цветность не разделяется).
Этот вариант осуществления настоящего изобретения обеспечивает способ разделения блоков, чтобы избежать использования режима внутреннего предсказания для блока цветности сравнительно небольшой областью и облегчить конвейерную обработку оборудования и реализацию декодера. Дополнительно, при внешнем предсказании процессы синтаксического анализа элементов синтаксиса для некоторых режимов предсказания могут быть пропущены, тем самым, снижая сложность кодирования.
Таким образом решаются технические задачи кодирования коэффициентов и снижается сложность кодирования.
Способ разделения блоков может быть следующим:
Анализируется режим разделения узла A.
Определяется, получен ли блок цветности, по меньшей мере, одного дочернего узла B как небольшой блок после того, как узел A разделен на основании режима S разделения. (Определяется, удовлетворяют ли ширина, высота и/или режим разделения узла A и/или ширина и высота узла B, по меньшей мере, одному из вышеуказанных условий.)
Если определено, что блок цветности, по меньшей мере, одного дочернего узла B получен как небольшой блок после того, как узел A разделен на основании режима S разделения, режим внутреннего предсказания или режим внешнего предсказания используется для всех блоков кодирования в области покрытия узла A.
Определяется, продолжать ли разделять блок цветности и блок яркости узла A.
Если внутреннее предсказание выполняется для всех блоков кодирования в области покрытия узла A, блок яркости узла A дополнительно разделяться на основании режима S разделения, и блок цветности узла A дополнительно не разделяется. Если выполняется внешнее предсказание для всех блоков кодирования в области покрытия узла A, блок яркости и блок цветности узла A продолжают разделяться на основании режима S разделения на N узлов дерева кодирования, включающие в себя блок яркости и блок цветности.
Блок яркости узла A продолжает разделяться на основании режима S разделения, и блок цветности узла A больше не разделяется. Блок преобразования цветности и блок кодирования цветности имеют одинаковый размер.
Когда выполняется внутреннее предсказание для всех блоков кодирования в области покрытия узла A, блок предсказания цветности и блок кодирования цветности имеют одинаковый размер; или, когда выполняется внешнее предсказание для всех блоков кодирования в области покрытия узла A, блок предсказания цветности разделяется на субблоки (где субблоки меньше, чем блок кодирования цветности), и вектор движения каждого субблока является вектором движения в области яркости, соответствующей субблоку.
Блок яркости узла A дополнительно разделяется на основании режима S разделения. Блок цветности узла A дополнительно не разделяется. Блок преобразования цветности, соответствующий блоку кодирования цветности и блоку кодирования цветности, имеют одинаковый размер, блок предсказания цветности и блок кодирования цветности имеют одинаковый размер, и информация движения CB цветности является информацией движения для конкретной заданной позиции в области яркости, соответствующая цветности CB.
Например, следует понимать, что раскрытый контент со ссылкой на описанный способ также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнять способ, и наоборот. Например, если описан один или несколько конкретных этапов способа, соответствующее устройство может включать в себя один или несколько блоков, таких как функциональные блоки, для выполнения описанных одного или нескольких этапов способа (например, один блок, выполняющий один или несколько этапов; или множество блоков, каждый из которых выполняет один или несколько из множества этапов) даже, если такой один или несколько блоков явно не описаны или не проиллюстрированы на сопроводительных чертежах. Дополнительно, например, если конкретное устройство описывается на основании одного или нескольких блоков, таких как функциональные блоки, соответствующий способ может включать в себя один этап для выполнения функций одного или нескольких блоков (например, один этап для выполнения функций одного или нескольких блоков) один или несколько блоков или множество этапов, каждый из которых используется для выполнения функций одного или нескольких из множества блоков), даже если такой один или несколько этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Дополнительно, следует понимать, что признаки примерных вариантов осуществления и/или аспектов, описанных в этом описании, могут быть объединены друг с другом, если специально не указано иное.
В одном или нескольких примерах описанные функции могут быть реализованы аппаратными средствами, программным обеспечением, встроенным программным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или нескольких инструкций или кода на машиночитаемом носителе и выполняться аппаратным процессором. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например носителю данных, или носителю связи, включающий в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом. Таким образом, машиночитаемый носитель обычно может соответствовать (1) энергонезависимому материальному машиночитаемому носителю данных или (2) среде связи, такой как сигнал или несущая волна. Носитель данных может быть любым доступным носителем, к которому может получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в настоящем изобретении. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
В качестве примера, но не ограничения, такой тип машиночитаемого носителя данных может включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другое магнитное запоминающее устройство, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и к которому может иметь доступ компьютер. Дополнительно, любое соединение уместно называется машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (digital subscriber line, DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновый диапазон, коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый диапазон содержаться в определение среды. Однако следует понимать, что машиночитаемый носитель данных и носитель данных не включают в себя соединение, несущую волну, сигнал или другой временный носитель, и фактически направлены на энергонезависимые материальные носители данных. Как используется в этой спецификации, диск и оптический диск включают в себя компакт-диск (compact disc, CD), лазерный диск, оптический диск, цифровой универсальный диск (digital versatile disc, DVD), мягкий диск и Blu-ray диск. Диск обычно воспроизводит данные магнитным способом, тогда как оптический диск воспроизводит данные оптически с помощью лазера. Комбинация вышеперечисленного также должна быть включена в объем машиночитаемых носителей.
Инструкции могут выполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (digital signal processor, DSP), микропроцессоры общего назначения, специализированные интегральные схемы (application specific integrated circuit, ASIC), программируемые пользователем вентильные матрицы (field programmable logic array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Следовательно, термин «процессор», используемый в этой спецификации, может представлять любую из вышеупомянутых структур или другую структуру, которая применима для реализации технологий, описанных в этой спецификации. Кроме того, в некоторых аспектах функциональные возможности, описанные в этой спецификации, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или содержавшиеся в комбинированный кодек. Дополнительно, все технологии могут быть реализованы в одной или нескольких схемах или логических элементах.
Технологии настоящего изобретения могут быть реализованы в большом количестве устройств или приспособлений, включающие в себя беспроводной телефон, интегральную схему (integrated circuit, IC) или набор ICs (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки для описания функциональных аспектов устройств, выполненных с возможностью выполнять раскрытые технологии, но не обязательно требующих выполнения различными аппаратными блоками. Точно, как описано выше, блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включающие в себя один или несколько процессоров, как описано выше, вместе с соответствующим программным обеспечением и/или встроенным программным обеспечением.