Устройство, способ и компьютерная программа для кодирования и декодирования видео
DEVICE METHOD AND COMPUTER PROGRAM FOR ENCODING AND DECODING VIDEO

Область техники
[0001] Настоящее изобретение относится к устройству, способу и компьютерной программе для видеокодирования и видеодекодирования.
Предпосылки создания изобретения
[0002] При кодировании видео неподвижные изображения и изображения в видеопоследовательности, как правило, разбивают на менее крупные блоки отсчетов и сжимают их до требуемого размера файла, битрейта или требуемого качества. Затем каждый из блоков предсказывают с помощью пространственного или временного предсказания, а остаточную ошибку между предсказанными блоками и соответствующими блоками исходного изображения кодируют при помощи средств кодирования остатка. Для кодирования и декодирования изображение, как правило, разбивают на пакеты кодирования, которые определяют общую сегментацию для предсказания и кодирования остатка. Пакеты кодирования могут дополнительно подразбиваться на один или более пакетов предсказания, включающих информацию, связанную с предсказанием отсчетов, для всего пакета кодирования или различных его частей. Аналогичным образом, пакет кодирования может подразбиваться на один или более пакетов преобразования, или блоков преобразования, содержащих информацию, связанную с кодированием остатка (или преобразования), для некоторой области, или составной части, пакета кодирования.
[0003] Средства кодирования остатка, как правило, включают преобразование блока остатка в частотную форму, квантование результирующих коэффициентов преобразования и энтропийное кодирование квантованных коэффициентов. В качестве первичного преобразования может применяться, например, дискретное косинусное преобразование (Discrete Cosine Transform, DCT) или производные от него методы.
[0004] Также могут применяться так называемые вторичные преобразования, позволяющие повысить эффективность кодирования. Входными данными вторичного преобразования являются выходные данные первичного преобразования (например, DCT), при этом оно обеспечивает дополнительное преобразование низкочастотных коэффициентов первичного преобразования. В этом случае окончательный набор коэффициентов преобразования состоит из низкочастотных коэффициентов, которые были преобразованы дважды, и высокочастотных коэффициентов, которые были преобразованы с помощью одного преобразования. В некоторых реализациях, когда для блока преобразования используют вторичное преобразование, высокочастотные коэффициенты могут быть опущены, и сигнализироваться могут только дважды преобразованные коэффициенты. В качестве вторичного преобразования может применяться, например, низкочастотное неразделимое преобразование (Low-Frequency Non-Separable Transform, LFNST) или производные от него методы.
[0005] Выбор и сигнализацию первичного преобразования, как правило, выполняют для каждого отдельного пакета преобразования или блока преобразования, тогда как выбор и сигнализацию вторичного преобразования обычно выполняют для пакета кодирования в целом. Доступность вторичного преобразования для пакета кодирования при этом обычно зависит от того, достигают ли коэффициенты преобразования, внутри всего пакета кодирования, некоторого уровня частоты, чтобы исключить излишнюю сигнализацию вторичного преобразования для пакетов кодирования с низкой активностью. Такие подходы накладывают ограничения и создают зависимости между различными блоками преобразования внутри пакета кодирования и могут приводить к увеличению задержек на стороне кодера и декодера, а также к неоптимальной эффективности кодирования.
Сущность изобретения
[0006] Далее будут описаны улучшенные способы указания и определения режимов преобразования в кодерах и декодерах, призванные по меньшей мере частично решить описанные выше проблемы.
[0007] Предложен механизм сигнализации преобразования, в котором сигнализация первичного преобразования может быть выполнена на основе использования вторичного преобразования. Сигнализация может быть выполнена после того, как в блоке преобразования сигнализирована позиция последнего коэффициента преобразования, и до сигнализации коэффициентов в этом блоке преобразования. Такая конфигурация позволяет видеодекодеру определять как тип первичного преобразования, так и тип вторичного преобразования, перед декодированием коэффициентов в блоке преобразования и пропускать декодирование областей коэффициентов, которые не применимы для выбранного первичного преобразования или выбранной пары первичного и вторичного преобразований
[0008] Устройство, в соответствии с первым аспектом настоящего изобретения, включает по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
получение блока коэффициентов преобразования;
поиск позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
выбор режима вторичного преобразования на основе позиции последнего ненулевого коэффициента и кодирование первых синтаксических элементов, указывающих на выбранный режим вторичного преобразования;
выбор режима первичного преобразования на основе выбранного режима вторичного преобразования и кодирование вторых синтаксических элементов, указывающих на выбранный режим первичного преобразования; и
кодирование третьих синтаксических элементов, определяющих коэффициенты преобразования внутри блока.
[0009] В соответствии со вторым аспектом настоящего изобретения способ включает:
получение блока коэффициентов преобразования;
поиск позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
выбор режима вторичного преобразования на основе позиции последнего ненулевого коэффициента и кодирование первых синтаксических элементов, указывающих на выбранный режим вторичного преобразования;
выбор режима первичного преобразования на основе выбранного режима вторичного преобразования и кодирование вторых синтаксических элементов, указывающих на выбранный режим первичного преобразования; и
кодирование третьих синтаксических элементов, определяющих коэффициенты преобразования внутри блока.
[0010] Устройство, в соответствии с третьим аспектом настоящего изобретения, включает по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
декодирование, из битового потока, позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
использование позиции упомянутого последнего коэффициента для определения, присутствует ли в битовом потоке указание на режим вторичного преобразования;
если в битовом потоке присутствует указание на режим вторичного преобразования, определение режима вторичного преобразования при помощи декодирования первых синтаксических элементов, указывающих на режим вторичного преобразования;
использование режима вторичного преобразования, который был определен, для определения, присутствует ли в битовом потоке указание на режим первичного преобразования;
если в битовом потоке присутствует указание на режим первичного преобразования, определение режима первичного преобразования при помощи декодирования вторых синтаксических элементов, указывающих на режим первичного преобразования;
декодирование коэффициентов преобразования; и
применение режимов преобразования, которые были определены, для выбора преобразований и применение преобразований, если таковые будут, к коэффициентам преобразования.
[0011] В соответствии с четвертым аспектом настоящего изобретения способ включает:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
декодирование, из битового потока, позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
использование результата поиска для определения, были ли коэффициенты блока, кодированного в битовом потоке, преобразованы при помощи вторичного преобразования, и если это так, определение режима вторичного преобразования;
поиск, в битовом потоке, указания на режим первичного преобразования;
использование позиции упомянутого последнего коэффициента для определения, присутствует ли в битовом потоке указание на режим вторичного преобразования;
если в битовом потоке присутствует указание на режим вторичного преобразования, определение режима вторичного преобразования при помощи декодирования первых синтаксических элементов, указывающих на режим вторичного преобразования;
использование режима вторичного преобразования, который был определен, для определения, присутствует ли в битовом потоке указание на режим первичного преобразования;
если в битовом потоке присутствует указание на режим первичного преобразования, определение режима первичного преобразования при помощи декодирования вторых синтаксических элементов, указывающих на режим первичного преобразования;
декодирование коэффициентов преобразования; и
применение режимов преобразования, которые были определены, для выбора преобразований и применение преобразований, если таковые будут, к коэффициентам преобразования.
[0012] В соответствии с пятым аспектом настоящего изобретения устройство включает средства выполнения следующего:
получение блока коэффициентов преобразования;
поиск позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
выбор режима вторичного преобразования на основе позиции последнего ненулевого коэффициента и кодирование первых синтаксических элементов, указывающих на выбранный режим вторичного преобразования;
выбор режима первичного преобразования на основе выбранного режима вторичного преобразования и кодирование вторых синтаксических элементов, указывающих на выбранный режим первичного преобразования; и
кодирование третьих синтаксических элементов, определяющих коэффициенты преобразования внутри блока.
[0013] B соответствии с шестым аспектом настоящего изобретения устройство включает средства выполнения следующего:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
декодирование, из битового потока, позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
использование позиции упомянутого последнего коэффициента для определения, присутствует ли в битовом потоке указание на режим вторичного преобразования;
если в битовом потоке присутствует указание на режим вторичного преобразования, определение режима вторичного преобразования при помощи декодирования первых синтаксических элементов, указывающих на режим вторичного преобразования;
использование режима вторичного преобразования, который был определен, для определения, присутствует ли в битовом потоке указание на режим первичного преобразования;
если в битовом потоке присутствует указание на режим первичного преобразования, определение режима первичного преобразования при помощи декодирования вторых синтаксических элементов, указывающих на режим первичного преобразования;
декодирование коэффициентов преобразования; и
применение режимов преобразования, которые были определены, для выбора преобразований и применение преобразований, если таковые будут, к коэффициентам преобразования.
[0014] В соответствии с седьмым аспектом настоящего изобретения машиночитаемый носитель данных включает код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
получение блока коэффициентов преобразования;
поиск позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
выбор режима вторичного преобразования на основе позиции последнего ненулевого коэффициента и кодирование первых синтаксических элементов, указывающих на выбранный режим вторичного преобразования;
выбор режима первичного преобразования на основе выбранного режима вторичного преобразования и кодирование вторых синтаксических элементов, указывающих на выбранный режим первичного преобразования; и
кодирование третьих синтаксических элементов, определяющих коэффициенты преобразования внутри блока.
[0015] В соответствии с восьмым аспектом настоящего изобретения машиночитаемый носитель данных включает код для использования устройством, который при исполнении процессором обеспечивает выполнение этим устройством следующего:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
декодирование, из битового потока, позиции последнего ненулевого коэффициента в порядке сканирования в блоке коэффициентов преобразования;
использование позиции упомянутого последнего коэффициента для определения, присутствует ли в битовом потоке указание на режим вторичного преобразования;
если в битовом потоке присутствует указание на режим вторичного преобразования, определение режима вторичного преобразования при помощи декодирования первых синтаксических элементов, указывающих на режим вторичного преобразования;
использование режима вторичного преобразования, который был определен, для определения, присутствует ли в битовом потоке указание на режим первичного преобразования;
если в битовом потоке присутствует указание на режим первичного преобразования, определение режима первичного преобразования при помощи декодирования вторых синтаксических элементов, указывающих на режим первичного преобразования;
декодирование коэффициентов преобразования; и
применение режимов преобразования, которые были определены, для выбора преобразований и применение преобразований, если таковые будут, к коэффициентам преобразования.
[0016] В соответствии с девятым аспектом настоящего изобретения способ включает:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
определение, является ли блок коэффициентов преобразования первым блоком коэффициентов преобразования в пакете кодирования;
в ответ на то, что блок коэффициентов преобразования является первым блоком коэффициентов преобразования в пакете кодирования, декодирование режима вторичного преобразования из битового потока;
применение режима вторичного преобразования, который был определен, для выбора преобразований для всех блоков коэффициентов преобразования в пакете кодирования.
[0017] В соответствии с десятым аспектом настоящего изобретения способ включает:
прием битового потока, включающего кодированную информацию, относящуюся к блоку коэффициентов преобразования;
определение, является ли блок коэффициентов преобразования первым блоком с одним или более ненулевыми коэффициентами преобразования в пакете кодирования;
в ответ на то, что блок коэффициентов преобразования является первым блоком с одним или более ненулевыми коэффициентами преобразования в пакете кодирования, декодирование режима вторичного преобразования из битового потока;
применение режима вторичного преобразования, который был определен, для выбора преобразований для всех блоков с одним или более ненулевыми коэффициентами преобразования в пакете кодирования.
[0018] Устройства и машиночитаемые носители данных с хранимым на них кодом, описанные выше, сконфигурированы, соответственно, для реализации описанных выше способов, а также одного или более вариантов осуществления настоящего изобретения, связанных с ними.
Краткое описание чертежей
[0019] Для более детального понимания настоящего изобретения оно будет описано далее с помощью примеров на приложенных чертежах, где:
[0020] на фиг. 1 эскизно проиллюстрировано электронное устройство, в котором применяются варианты осуществления настоящего изобретения;
[0021] на фиг. 2 эскизно проиллюстрировано пользовательское оборудование, подходящее для применения в вариантах осуществления настоящего изобретения;
[0022] на фиг. 3 также эскизно проиллюстрированы электронные устройства, в которых применяются варианты осуществления настоящего изобретения и которые соединены при помощи проводных и беспроводных сетевых соединений;
[0023] на фиг. 4 эскизно проиллюстрирован кодер, подходящий для реализации некоторых из вариантов осуществления настоящего изобретения;
[0024] на фиг. 5 показан пример структуры кодера и декодера, которая может применяться для кодирования и декодирования видео и изображений с использованием первичных и вторичных преобразований в соответствии с одним из вариантов осуществления настоящего изобретения;
[0025] на фиг. 6 показана процедура двойного преобразования, как в направлении кодирования, так и в направлении декодирования;
[0026] на фиг. 7 показана процедура двойного преобразования с неполным, или частичным, вторичным преобразованием;
[0027] на фиг. 8 показана блок-схема алгоритма для способа кодирования в соответствии с одним из вариантов осуществления настоящего изобретения;
[0028] на фиг. 9 показана блок-схема алгоритма для способа декодирования в соответствии с одним из вариантов осуществления настоящего изобретения;
[0029] на фиг. 10 показан пример блока преобразования размером 8×8, и а также пример порядка сканирования;
[0030] на фиг. 11 показана эскизная блок-схема декодера, подходящего для реализации вариантов осуществления настоящего изобретения; и
[0031] на фиг. 12 показана эскизная блок-схема типовой мультимедийной системы связи, в которой могут быть реализованы различные варианты осуществления настоящего изобретения.
Подробное описание некоторых примеров осуществления изобретения
[0032] Ниже подробно описаны устройство и возможные механизмы двойного преобразования, а также обратного двойного преобразования. Обратимся сначала к фиг. 1 и 2. На фиг. 1 показана блок-схема системы видеокодирования в соответствии с одним из вариантов осуществления настоящего изобретения, имеющая вид блок-схемы типовой аппаратуры или электронного устройства 50, которое может включать в свой состав кодек, соответствующий одному из вариантов осуществления настоящего изобретения. На фиг. 2 показана схема устройства в соответствии с одним из примеров осуществления настоящего изобретения. Далее будут описаны элементы фиг. 1 и 2.
[0033] Электронное устройство 50 может, например, быть мобильным терминалом или пользовательским оборудованием системы беспроводной связи. Однако нужно понимать, что варианты осуществления настоящего изобретения могут быть реализованы в любом электронном устройстве или аппаратуре, где требуется кодирование и декодирование, или только кодирование, или же только декодирование видеоизображений.
[0034] Устройство 50 может иметь в своем составе корпус 30 для размещения и защиты устройства. Устройство 50 может также включать дисплей 32 в форме дисплея на жидких кристаллах. В других вариантах осуществления настоящего изобретения упомянутый дисплей может быть выполнен по любой технологии, подходящей для отображения изображений или видеоинформации. Устройство 50 может также включать клавиатуру 34. В других вариантах осуществления настоящего изобретения может применяться любой подходящий интерфейс обмена данными или пользовательский интерфейс. К примеру, пользовательский интерфейс может быть реализован в виде виртуальной клавиатуры или системы ввода данных, являющейся частью сенсорного дисплея.
[0035] Устройство может включать микрофон 36 или любое другое подходящее устройство ввода аудиоинформации, которое может быть устройством ввода цифрового или аналогового сигнала. Устройство 50 может также включать устройство вывода аудиоинформации, которое в вариантах осуществления настоящего изобретения может представлять собой любое из следующего: головной телефон 38, громкоговоритель или же аналоговое или цифровое соединение для вывода аудиоинформации. Устройство 50 может также иметь в своем составе аккумулятор (или в других вариантах осуществления настоящего изобретения устройство может снабжаться электроэнергией от любого подходящего мобильного энергетического устройства, например, солнечной батареи, топливной батареи или заводного генератора). Устройство может дополнительно включать камеру, способную записывать, или захватывать, изображения и/или видеоинформацию. Устройство 50 может также включать инфракрасный порт для связи с другими устройствами в ближней зоне прямой видимости. В других вариантах осуществления настоящего изобретения устройство 50 может включать любые подходящие решения связи малой дальности, например, беспроводное соединение Bluetooth или проводное соединение USB/Firewire.
[0036] Устройство 50 может включать контроллер 56, процессор или схемы обработки данных для управления устройством 50. Контроллер 56 может быть соединен с памятью 58, которая в различных вариантах осуществления настоящего изобретения может хранить данные, одновременно в форме видеоинформации и аудиоинформации, и/или может также хранить инструкции для исполнения в контроллере 56. Контроллер 56 может быть также соединен со схемами 54 кодека, способными осуществлять кодирование и декодирование аудио- и/или видеоданных или являться вспомогательным средством при кодировании и декодировании, выполняемом контроллером.
[0037] Устройство 50 может также включать устройство 48 чтения карт и смарт-карту 46, например, карту UICC и устройство чтения UICC-карт для предоставления информации об абоненте, и для обеспечения возможности предоставления аутентификационной информации с целью аутентификации и авторизации абонента в сети.
[0038] Устройство 50 может включать схемы 52 радиоинтерфейса, связанные с контроллером, которые могут использоваться для формирования сигналов беспроводной связи, например, для связи с сетью сотовой связи, системой беспроводной связи или беспроводной локальной вычислительной сетью. Устройство 50 может также включать антенну 44, связанную со схемами 52 радиоинтерфейса, для передачи радиочастотных сигналов, формируемых в схемах 52 радиоинтерфейса, в другое устройство (или устройства), а также для приема радиочастотных сигналов от другого устройства (или устройств).
[0039] Устройство 50 может включать камеру, способную записывать или регистрировать отдельные кадры, которые затем передают в кодек 54 или контроллер для обработки. Устройство может принимать от другого устройства данные видеоизображений для обработки перед их передачей и/или хранением. Устройство 50 может также принимать изображение для кодирования/декодирования либо беспроводным способом, либо по проводному соединению. Структурные элементы устройства 50, описанные выше, представляют собой примеры средств выполнения соответствующих функций.
[0040] На фиг. 3 проиллюстрирован один из примеров системы, в которой могут использоваться различные варианты осуществления настоящего изобретения. Система 10 включает несколько устройств связи, способных осуществлять связь при помощи одной или нескольких сетей. В состав системы 10 может входить любая комбинация проводных и беспроводных сетей, включая, без ограничения перечисленным, беспроводную сотовую телефонную сеть (например, сеть GSM, UMTS, CDMA и т.п.), беспроводную локальную вычислительную сеть (wireless local area network, WLAN), например, в соответствии с определением в любом из стандартов IEEE 802.x, персональную сеть Bluetooth, локальную вычислительную сеть Ethernet, локальную вычислительную сеть типа «маркерное кольцо» глобальную сеть и Интернет.
[0041] Система 10 может включать как проводные, так и беспроводные устройства связи, и/или устройство 50, подходящее для реализации вариантов осуществления настоящего изобретения.
[0042] В качестве примера на фиг. 3 показана мобильная телефонная сеть 11 и сеть Интернет 28. Соединение с Интернетом 28 может включать, без ограничения перечисленным, беспроводные соединения с большим радиусом действия, беспроводные соединения с малым радиусом действия, а также различные проводные соединения, включая, без ограничения перечисленным, телефонные линии, кабельные линии, линии электропередач и аналогичные каналы связи.
[0043] Примерами устройств связи в системе 10 могут служить, без ограничения перечисленным, электронная устройство или устройство 50, комбинация карманного персонального компьютера (personal digital assistant, PDA) и мобильного телефона 14, PDA 16, интегрированное устройство 18 обмена сообщениями (integrated messaging device, IMD), настольный компьютер 20, ноутбук 22. Устройство 50 может быть стационарным или подвижным, когда переносится движущимся оператором. Устройство 50 может также размещаться на транспортном средстве, включая, без ограничения перечисленным, автомобиль, грузовик, такси, автобус, поезд, судно, самолет, велосипед, мотоцикл или любое аналогичное подходящее транспортное средство.
[0044] Варианты осуществления настоящего изобретения могут также быть реализованы в абонентской телеприставке, т.е. в приемнике цифрового телевидения, который, опционально, может обладать функциональностью отображения видеоинформации и беспроводной связи, в планшетных или (портативных) персональных компьютерах (ПК), которые включают аппаратную или программную (или комбинированную) реализацию кодера и/или декодера, в различных операционных системах, в чипсетах (микросхемных наборах), процессорах, DSP-процессорах и/или во встраиваемых системах, обеспечивающих аппаратное и/или программное кодирование.
[0045] Некоторые из подобных или других устройств могут как посылать, так и принимать вызовы и сообщения, а также осуществлять связь с операторами связи при помощи беспроводного соединения 25 с базовой станцией 24. Базовая станция 24 может быть соединена с сетевым сервером 26, обеспечивающим связь между средствами 11 связи и Интернетом 28. Система может включать дополнительные устройства связи, а также устройства связи других типов.
[0046] Устройства связи могут осуществлять связь с использованием различных технологий передачи данных, включая, без ограничения перечисленным, множественный доступ с кодовым разделением (Code Division Multiple Access, CDMA), глобальную систему мобильной связи (Global System for Mobile Communications, GSM), универсальную систему мобильной связи (Universal Mobile Telecommunication System, UMTS), множественный доступ с разделением по времени (Time Division Multiple Access, TDMA), множественный доступ с разделением по частоте (Frequency Division Multiple Access, FDMA), протокол управления передачей/протокол Интернета (Transmission Control Protocol/Internet Protocol, TCP-IP), службу коротких сообщений (Short Messaging Service, SMS), службу мультимедийных сообщений (Multimedia Messaging Service, MMS), электронную почту, сервис мгновенной передачи сообщений (Instant Messaging Service, IMS), Bluetooth, IEEE 802.11, и любые аналогичные технологии беспроводной связи. Устройство связи, используемое при реализации различных вариантов осуществления настоящего изобретения, может осуществлять связь с использованием различных сред передачи данных, включая, без ограничения, радиосоединения, инфракрасные, лазерные, кабельные соединения или любые другие подходящие соединения.
[0047] В телекоммуникационных сетях и в сетях передачи данных под «каналом» может пониматься как физический, так логический канал. Физическим каналом может быть любая физическая среда передачи, например, провод, тогда как логическим каналом может быть логическое соединение по мультиплексируемой среде передачи, способной обеспечивать передачу нескольких логических каналов. Канал может применяться для передачи информационного сигнала, например, битового потока, от одного или нескольких отправителей (или передатчиков) на один или несколько приемников.
[0048] Транспортный поток (transport stream, TS) MPEG-2, определенный в документе ISO/IEC 13818-1, или, эквивалентно, в Рекомендации Н.222.0 ITU-T, представляет собой формат для передачи аудио-, видео- и других медиаданных, а также метаданных программ или иных метаданных, в мультиплексированном потоке. Для идентификации элементарных потоков (также называемых, пакетированными элементарными потоками) используются идентификаторы пакетов (packet identifier, PID). Следовательно, можно считать, что каждый логический канал в потоке MPEG-2 TS соответствует конкретному значению PID.
[0049] Существующие стандарты для форматов медиафайлов включают базовый формат медиафайлов ISO (ISO/IEC 14496-12, сокращенно обозначаемый ISOBMFF) и формат файлов для видеоданных, структурированных NAL-пакетами (ISO/IEC 14496-15), являющийся производным от ISOBMFF.
[0050] Видеокодек состоит из кодера, при помощи которого входные видеоданные преобразуют в сжатое представление, подходящее для хранения и передачи, а также декодера, при помощи которого сжатое представление видеоданных распаковывают, возвращая их к форме, пригодной для просмотра пользователем. Видеокодер и/или видеодекодер могут быть также независимыми друг от друга, т.е. не обязательно образовывать кодек. Как правило, в кодере часть информации исходной видеопоследовательности отбрасывается с целью представления видеоинформации в более компактной форме (т.е. с меньшим битрейтом).
[0051] Типовые гибридные видеокодеры, например, многие из реализаций кодеров, соответствующие стандартам ITU-T Н.263 и Н.264, кодируют видеоинформацию в два этапа. Сначала предсказывают значения пикселей в определенной области изображения (или «блоке пикселей»), например, с использованием механизмов компенсации движения (нахождение области в одном из предварительно кодированных видеокадров, которая близко соответствует кодируемому в текущий момент блоку пикселей, и указание на эту область) или с использованием средств пространственного предсказания (использование, заданным образом, значений пикселей вокруг кодируемого блока пикселей). Затем кодируют ошибку предсказания, т.е. разность между предсказанным блоком пикселей и исходным блоком пикселей. Как правило, это выполняется при помощи преобразования разности пиксельных значений с использованием заданного преобразования (например, дискретного косинусного преобразования (Discrete Cosine Transform, DCT), или его варианта), квантования его коэффициентов и энтропийного кодирования квантованных коэффициентов. Регулируя степень детализации в процедуре квантования, кодер может управлять балансом между точностью представления пикселей (качеством изображения) и размером результирующей кодированной видеорепрезентации (размером файла или битрейтом).
[0052] Источником информации для внешнего предсказания являются ранее декодированные изображения (называемые опорными изображениями). При внутреннем копировании блоков (intra block copy, IBC), которое также называют «предсказанием на основе внутреннего копирования блоков», предсказание выполняют аналогично временному предсказанию, однако опорным изображением в таком случае является само текущее изображение, при этом в процессе декодирования ссылки допускаются только на уже декодированные ранее отсчеты. Межуровневое или межракурсное предсказание может выполняться аналогично временному предсказанию, однако в этом случае опорным будет, соответственно, декодированное изображение из другого масштабируемого уровня или из другого ракурса. В некоторых случаях под внешним предсказанием понимают исключительно временное предсказание, однако в других случаях внешнее предсказание может обобщенно обозначать как временное предсказание, так и любые другие типы предсказания, а именно, внутреннее копирование блоков, межуровневое и межракурсное предсказание, если их выполняют с помощью той же процедуры, что и временное предсказание, или аналогичной процедуры. Внешнее предсказание или временное предсказание иногда называют компенсацией движения или предсказанием с компенсацией движения.
[0053] Компенсация движения может выполняться как с точностью до отдельных отсчетов, так и с точностью до долей отсчетов (дробнопиксельной). В случае компенсации движения с точностью до отсчета, движение может быть представлено вектором движения с целочисленными значениями для горизонтального и вертикального смещений, при этом процедура компенсации движения, по сути, копирует отсчеты из опорного изображения опорного изображения с использованием этих смещений. В случае компенсации движения с точностью до долей отсчета, векторы движения представлены дробными значениями, или значениями после запятой, горизонтальной и вертикальной составляющей вектора движения. В случае, когда вектор движения ссылается на нецелочисленную позицию в опорном изображении, как правило, вызывают процедуру интерполяции дробных отсчетов для вычисления предсказанных значений отсчетов на основе опорных отсчетов и выбранной позиции дробного отсчета. Процедура интерполяции дробных отсчетов, как правило, включает горизонтальную фильтрацию, которая компенсирует смещения по горизонтали относительно позиций целых отсчетов, за чем следует вертикальная фильтрация, которая компенсирует смещения по вертикали относительно позиций целых отсчетов. Однако в некоторых окружениях вертикальная фильтрация может выполняться перед горизонтальной.
[0054] Внешнее предсказание, которое может также называться временным предсказанием, компенсацией движения или предсказанием с компенсацией движения, позволяет понизить временную избыточность. Источником информации для внешнего предсказания являются ранее декодированные изображения. Для внешнего предсказания используют тот факт, что смежные пиксели в одном изображении с большой вероятностью являются коррелированными. Внутреннее предсказание может быть либо пространственным, либо относиться собственно к преобразованию, т.е. могут предсказываться либо значения элементов изображения, либо коэффициенты преобразования. Внутреннее предсказание обычно применяют при внутреннем кодировании, когда внешнее предсказание не применяется.
[0055] Одним из результатов процедуры кодирования является набор параметров кодирования, таких как векторы движения и коэффициенты преобразования. Энтропийное кодирование множества параметров может быть более эффективным, если сначала выполнить их предсказание, на основе пространственно-смежных или соседних по времени параметров. Например, вектор движения может предсказываться на основе пространственно смежных векторов движения, при этом кодироваться может только разность относительно предсказания вектора движения. Предсказание параметров кодирования и внутреннее предсказание совместно могут называться внутрикадровым предсказанием.
[0056] На фиг. 4 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 4 проиллюстрирован кодер для двух уровней, однако нужно понимать, что проиллюстрированный кодер может быть расширен и выполнять кодирование более чем двух уровней. На фиг. 4 проиллюстрирован один вариантов осуществления видеокодера, включающий первый сегмент 500 кодера для базового уровня (кодирования) и второй сегмент 502 кодера для уточняющего уровня. Каждый из сегментов, первый сегмент 500 кодера и второй сегмент 502 кодера, могут включать аналогичные элементы для кодирования поступающих изображений. Сегменты 500, 502 кодера могут включать устройство 302, 402 предсказания пикселей, кодер 303, 403 ошибки предсказания и декодер 304, 404 ошибки предсказания. Также, на фиг. 4 показан один из вариантов осуществления устройства 302, 402 предсказания пикселей, включающего устройство 306, 406 внешнего предсказания, устройство 308, 408 внутреннего предсказания, селектор 310, 410 режима, фильтр 316, 416 и память 318, 418 опорных кадров. Устройство 302 предсказания пикселей в первом сегменте 500 кодера принимает изображения 300 базового уровня кодируемого видеопотока одновременно в устройстве 306 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 318 компенсации движения) и в устройстве 308 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 310 режима. Устройство 308 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 310 режима. В селектор 310 режима передается также копия изображения 300 базового уровня. Соответственно, устройство 402 предсказания пикселей во втором сегменте 502 кодера принимает изображения 400 уточняющего уровня кодируемого видеопотока одновременно в устройстве 406 внешнего предсказания (которое определяет разницу между этим изображением и опорным кадром 418 компенсации движения) и в устройстве 408 внутреннего предсказания (которое определяет предсказание для блока пикселей изображения, исходя только из уже обработанных частей текущего кадра или изображения). Выходные данные из устройства внешнего предсказания и из устройства внутреннего предсказания передают в селектор 410 режима. Устройство 408 внутреннего предсказания может иметь более одного режима внутреннего предсказания. Следовательно, в каждом из режимов может выполняться внутреннее предсказание, и предсказанный сигнал может быть предоставлен в селектор 410 режима. В селектор 410 режима передается также копия изображения 400 уточняющего уровня.
[0057] В зависимости от режима кодирования выбранного для кодирования текущего блока пикселей, на выход селектора 310, 410 режима передают выходные данные устройства 306, 406 внешнего предсказания, выходные данные одного из опциональных режимов внутреннего предсказания или выходные данные поверхностного кодера из состава селектора режима. Выходные данные селектора режима передают в первое суммирующее устройство 321, 421. Первое суммирующее устройство может вычитать выходные данные устройства 302, 402 предсказания пикселей из изображения 300 базового уровня, или изображения 400 уточняющего уровня, соответственно, с формированием первого сигнала 320, 420 ошибки предсказания, который подают на вход кодера 303, 403 ошибки предсказания.
[0058] Также устройство 302, 402 предсказания пикселей принимает от устройства 339, 439 предварительного восстановления комбинацию предсказанного представления блока 312, 418 изображения и выходные данные 338, 438 кодера 304, 404 ошибки предсказания. Предварительно восстановленное изображение 314, 414 может быть передано в устройство 308, 408 внутреннего предсказания и фильтр 316, 416. В фильтре 316, 416, где принимается это предварительное представление, может выполняться его фильтрация и вывод окончательного восстановленного изображения 340, 440, которое может быть сохранено в память 318, 418 опорных кадров. Память 318 опорных кадров может иметь соединение с устройством 306 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 300 базового уровня при выполнении операций внешнего предсказания. При условии, что базовый уровень выбран в качестве источника для межуровневого предсказания отсчетов и/или для межуровневого предсказания информации о движении уточняющего уровня, и если на это также выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, память 318 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и может использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания. При этом память 418 опорных кадров может иметь соединение с устройством 406 внешнего предсказания и использоваться в качестве опорного изображения, с которым сравнивают будущее изображение 400 уточняющего уровня при выполнении операций внешнего предсказания.
[0059] При условии, что базовый уровень выбран в качестве источника для предсказания параметров фильтрации уточняющего уровня, и на это выполнено соответствующее указание, в соответствии с некоторыми из вариантов осуществления настоящего изобретения, параметры фильтрации из фильтра 316 первого сегмента 500 кодера могут передаваться во второй сегмент 502 кодера.
[0060] Кодер 303, 403 ошибки предсказания включает блок 342, 442 преобразования и квантователь 344, 444. Блок 342 преобразования преобразует первый сигнал 320, 420 ошибки предсказания в домен преобразования. Таким преобразованием является, к примеру, преобразование DCT. Квантователь 344, 444 квантует сигнал, например, коэффициенты DCT, в домене преобразования и формирует квантованные коэффициенты.
[0061] Декодер 304, 404 ошибки предсказания принимает выходные данные из кодера 303, 403 ошибки предсказания и выполняет процедуры, обратные процедурам кодера 303, 403 ошибки предсказания, в результате чего получают декодированный сигнал 338, 438 ошибки предсказания, который при комбинировании с предсказанным представлением блока 312, 412 изображения во втором суммирующем устройстве 339, 439 дает предварительное восстановленное изображение 314, 414. Декодер ошибки предсказания можно рассматривать как имеющий в своем составе деквантователь 361, 461, который деквантует квантованные значения коэффициентов, например, коэффициентов DCT, и восстанавливает преобразованный сигнал, а также как включающий блок 363, 463 обратного преобразования, который выполняет обратное преобразование над восстановленным сигналом преобразования, при этом выходные данные блока 363, 463 обратного преобразования содержат восстановленный блок (или блоки). Декодер ошибки предсказания может также включать фильтр блоков, который может выполнять фильтрацию восстановленного блока (или блоков) в соответствии с дополнительной декодированной информацией и параметрами фильтрации.
[0062] Энтропийный кодер 330, 430 принимает выходные данные из кодера 303, 403 ошибки предсказания и может выполнять соответствующее кодирование переменной длины и/или энтропийное кодирование сигнала для обеспечения возможности обнаружения и исправления ошибок. Выходные данные энтропийных кодеров 330, 430 могут быть введены в битовый поток, например, при помощи мультиплексора 508.
[0063] Энтропийное кодирование/декодирование может выполняться множеством различных способов. К примеру, может применяться контекстно-зависимое кодирование/декодирование, при котором и кодер, и декодер, меняют контекстное состояние параметров кодирования в зависимости от ранее кодированных/декодированных параметров кодирования. Примерами контекстно-зависимого кодирования являются контекстно-зависимое двоичное арифметическое кодирование (context adaptive binary arithmetic coding, CABAC), контекстно-зависимое кодирование с переменной длиной кодового слова (context-based variable length coding, CAVLC) или любое аналогичное энтропийное кодирование. Энтропийное кодирование/декодирование, альтернативно или в дополнение, может выполняться при помощи схем кодирования с переменной длиной кодового слова, например, кодирования/декодирования методом Хаффмана или кодирования/декодирования методом экспоненциального кодирования Голомба. Декодирование параметров кодирования из энтропийно-кодированного битового потока, или из кодовых слов, может называться синтаксическим анализом.
[0064] Стандарт H.264/AVC был разработан объединенной командой по видео (Joint Video Team, JVT) из состава группы экспертов по видеокодированию (Video Coding Experts Group (VCEG) сектора стандартизации телекоммуникаций Международного союза электросвязи (International Telecommunication Union, ITU-T) и группой экспертов по движущемуся изображению (Moving Picture Experts Group, MPEG) Международной организации по стандартизации (International Organization for Standardization, ISO) / Международной электротехнической комиссии (International Electrotechnical Commission, IEC). Стандарт H.264/AVC был опубликован обеими родительскими организациями по стандартизации и получил наименование Рекомендации Н.264 ITU-T и Международного стандарта ISO/IEC 14496-10, известного также как улучшенное видеокодирование (Advanced Video Coding, AVC), 10-ая часть MPEG-4. Были выпущены несколько версий стандарта H.264/AVC, в спецификацию каждой из которых добавлялись новые расширения или элементы. В число этих расширений вошли масштабируемое видеокодирование (Scalable Video Coding, SVC) и многоракурсное видекодирование (Multiview Video Coding, MVC).
[0065] Объединенной командой по видеокодированию (Joint Collaborative Team-Video Coding, JCT-VC) групп VCEG и MPEG была создана первая версия (version 1) стандарта высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC), Н.265. Стандарт был опубликован обеими родительскими стандартизующими организациями и в текущий момент имеет наименование Рекомендации Н.265 ITU-T и Международного стандарта ISO/IEC 23008-2, известного также как высокоэффективное видеокодирование (HEVC), 2-ая часть MPEG-H. В более поздние версии стандарта H.265/HEVC вошли расширения масштабируемого, многоракурсного кодирования, расширения диапазона точности, трехмерного кодирования и кодирования экранного контента, которые сокращенно обозначаются, соответственно, SHVC, MV-HEVC, REXT, 3D-HEVC и SCC.
[0066] Для расширений SHVC, MV-HEVC и 3D-HEVC используется общая базовая спецификация, описанная в приложении F второй версии стандарта HEVC. Эта общая база включает, например, высокоуровневые синтаксис и семантику, к примеру, определяющие часть характеристик уровней битового потока, такие как межуровневые зависимости, а также процедуры декодирования, такие как построение списка опорных изображений, включающего опорные изображения межуровневого предсказания, а также вычисление порядковых номеров изображений для многоуровневых потоков. Приложение F может применяться и в последующих многоуровневых расширениях HEVC, которые могут появиться позднее. В приведенном ниже описании видеокодер, видеодекодер, способы кодирования, способы декодирования, структуры битового потока и/или варианты осуществления настоящего изобретения могут быть рассмотрены на примере конкретных расширений, таких как SHVC и/или MV-HEVC, однако нужно понимать, что они, в общем случае, применимы также для многоуровневых расширений HEVC, а также, в еще более общем случае, к любой многоуровневой схеме видеокодирования.
[0067] Универсальное видеокодирование (Versatile Video Coding, VVC) (MPEG-I Part 3), также известное под обозначением ITU-T Н.266, это стандарт видеокодирования, разрабатываемый Объединенной командой экспертов по видео (Joint Video Experts Team, JVET) из состава группы экспертов по движущемуся изображению (Moving Picture Experts Group, MPEG) и группы экспертов по видеокодированию (Video Coding Experts Group, VCEG) Международного союза электросвязи (International Telecommunication Union, ITU) и призванный прийти на смену стандарту HEVC/H.265.
[0068] В настоящем разделе приведены ключевые определения, описана структура битового потока и кодирования, а также основные понятия стандартов H.264/AVC и HEVC, в качестве примера видеокодера, видеодекодера, способа кодирования, способа декодирования и структуры битового потока, в которых могут быть реализованы варианты осуществления настоящего изобретения. Часть ключевых определений, структур битового потока и кодирования, а также основных понятий стандарта H.264/AVC совпадают с проектом стандарта HEVC, в этом случае они описаны ниже совместно. Аспекты настоящего изобретения не ограничены стандартами H.264/AVC или HEVC, напротив, данное описание приведено в качестве одного из примеров базы для частичной или полной реализации настоящего изобретения.
[0069] Аналогично многим предшествующим стандартам видеокодирования, в стандартах Н.264/AVC и HEVC определены синтаксис и семантика битового потока, а также процесс декодирования безошибочных битовых потоков. Процедура кодирования стандартом не определена, однако кодеры должны формировать битовые потоки, соответствующие стандарту. Соответствие битового потока и декодера стандарту может быть проверено с помощью гипотетического опорного декодера (Hypothetical Reference Decoder, HRD). Стандарт включает в себя инструменты кодирования, помогающие справиться с ошибками и потерями при передаче, однако использование этих инструментов при кодировании не является обязательным, а процесс декодирования для битовых потоков с ошибками не определен.
[0070] Элементарной единицей для ввода в декодер Н.264/AVC или HEVC и вывода из декодера H.264/AVC или HEVC, соответственно, является изображение. Изображение, передаваемое в качестве входных данных в кодер, может называться исходным изображением, а изображение, декодированное декодером, может называться декодированным изображением.
[0071] Исходное и декодированное изображения, каждое, состоят из одного или более массивов отсчетов, например, одного или более следующих наборов массивов отсчетов:
- Только составляющая яркости (Y) (монохромное изображение).
- Составляющая яркости и две составляющие цветности (YCbCr или YCgCo).
- Составляющие зеленого, синего и красного (GBR или RGB).
- Массивы, представляющие другие неспецифицированные монохромные или трехкомпонентные цветовые отсчеты (например, YZX, которые также называют XYZ).
[0072] В случае стандартов H.264/AVC и HEVC изображение может представлять собой кадр или поле. Кадр включает в себя матрицу отсчетов яркости, и возможно также, соответствующих отсчетов цветности. Поле представляет собой множество чередующихся строк отсчетов в кадре и может использоваться в качестве входных данных для кодера в случае, когда исходный сигнал является чересстрочным. Массивы отсчетов цветности могут отсутствовать (и, следовательно, могут применяться монохромные значения) или массивы отсчетов цветности могут иметь пониженное разрешение по сравнению с массивами отсчетов яркости. Форматы представления цветности могут быть, в общем, описаны следующим образом:
- При дискретизации в монохромном формате имеется только один массив отсчетов, который, по определению, считают массивом яркости.
- При дискретизации с форматом 4:2:0 каждый из двух массивов цветности имеет половину высоты массива яркости и половину его ширины.
- При дискретизации с форматом 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту с массивом яркости, но половину ширины.
- При дискретизации с форматом 4:4:4, если не используются отдельные цветовые плоскости, каждый из двух массивов цветности ту же высоту и ширину, что и массив яркости.
[0073] В стандартах Н.264/AVC и HEVC массивы отсчетов могут кодироваться в виде отдельных цветовых плоскостей в битовом потоке, и соответственно, может выполняться декодирование отдельно кодированных цветовых плоскостей из битового потока. Если применяются отдельные цветовые плоскости, каждую из них обрабатывают отдельно (в кодере и/или декодере) как изображение с монохромным представлением.
[0074] Разбиением называют такое разделение множества на подмножества, при котором каждый из элементов множества находится только в одном из подмножеств.
[0075] При описании операций кодирования и/или декодирования в стандарте HEVC могут использоваться термины, описанные ниже. Блок кодирования (coding block) - это блок отсчетов размером N×N, для некоторого значения N, такого, что разделение блока кодового дерева на блоки кодирования является разбиением. Блок кодового дерева (coding tree block, СТВ) - это блок отсчетов размером N×N, для некоторого значения N, такого, что разделение составляющей изображения на блоки кодового дерева будет разбиением. Пакет кодового дерева (coding tree unit, CTU) это блок кодового дерева из отсчетов яркости, два соответствующих блока кодового дерева из отсчетов цветности в случае изображения, имеющего три массива отсчетов, или блок кодового дерева в монохромном изображении, или изображении, которое кодируют с использованием трех отдельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов. Пакет кодирования (coding unit, CU) - это блок кодирования из отсчетов яркости, два соответствующих блока кодирования из отсчетов цветности для изображения, имеющего три массива значений, блок кодирования из отсчетов монохромного изображения, или изображения, которое кодируют с использованием трех отдельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов. Пакет кодирования, CU, максимально допустимого размера, как правило, называется LCU (largest coding unit, наибольший пакет кодирования) или пакетом кодового дерева (CTU), при этом изображение в видео разбивается на неперекрывающиеся блоки LCU.
[0076] Каждый из кодовых пакетов состоит из одного или более пакетов предсказания (prediction unit, PU), определяющих процедуру предсказания отсчетов в пакете кодирования, а также одного или более пакетов преобразования (transform units, TU), определяющих процедуру кодирования ошибки предсказания для отсчетов в пакете кодирования. Как правило, пакет кодирования, CU, состоит из квадратного блока отсчетов, размер которого выбирают из заранее заданного множества допустимых размеров кодового пакета. Каждый блок преобразования и блок преобразования могут быть разбиты на менее крупные блоки предсказания и блоки преобразования с целью повышения детализации процедур предсказания и кодирования ошибки предсказания соответственно. Каждый пакет предсказания, PU, имеет связанную с ним информацию предсказания, которая определяет, предсказание какого типа должно применяться к пикселям данного пакета предсказания (например, информацию вектора движения в случае пакета предсказания с внешним предсказанием, или информацию направления внутреннего предсказания в случае внутренне предсказываемого пакета предсказания).
[0077] Аналогично, каждый пакет преобразования может быть связан с информацией, описывающей процедуру декодирования ошибки предсказания для значений в данном пакете преобразования (включая, например, информацию о коэффициентах DCT-преобразования). Информация о том, применяется ли кодирование ошибки предсказания для каждого кодового пакета, CU, или нет, как правило, сигнализируется в синтаксических элементах на уровне пакета кодирования. Если остатка или ошибки предсказания, связанного с пакетом кодирования, CU, нет, то можно считать, что для данного пакета кодирования пакеты преобразования, TU, отсутствуют. Информация о разделении изображения на пакеты кодирования, CU, и о разделении пакетов кодирования на пакеты предсказания, PU, и пакеты преобразования, TU, сигнализируемая, как правило, в битовом потоке, позволяет декодеру воспроизводить заданную структуру этих пакетов.
[0078] В стандарте HEVC изображение может быть разбито на тайлы, которые имеют прямоугольную форму и содержат целое число пакетов LCU. В стандарте HEVC разбиение на тайлы дает регулярную сетку, в которой максимальная разность между высотой и шириной тайлов равна одному LCU. В стандарте HEVC слайс определен как целое количество пакетов кодового дерева, содержащихся в одном независимом сегменте слайса и во всех последующих зависимых сегментах слайса (если они присутствуют), которые предшествуют следующему независимому сегменту слайса (если он существует) внутри одного пакета доступа. В стандарте HEVC сегмент слайса определяют как целое количество пакетов кодового дерева, организованных в виде последовательности, в порядке сканирования тайла, и содержащихся в одном пакете NAL. Разделение каждого из изображений на сегменты слайса является разбиением. В стандарте HEVC независимый сегмент слайса определен как сегмент слайса, для которого значения синтаксических элементов в заголовке сегмента слайса не получают на основе значений предыдущего сегмента слайса, а зависимый сегмент слайса определен как сегмент слайса, для которого значения некоторых из синтаксических элементов в заголовке сегмента слайса получают на основе значений для предыдущего независимого сегмента слайса в порядке декодирования. В стандарте HEVC заголовок слайса определен как заголовок независимого сегмента слайса, который является текущим, или как заголовок независимого сегмента слайса, который предшествует текущему зависимому сегменту слайса, и при этом заголовок сегмента слайса определен как часть кодированного сегмента слайса, включающего элементы данных, которые относятся к первому пакету (или ко всем пакетам) кодового дерева, представленному (или представленным) в сегменте слайса. Пакеты кодирования, CU, сканируют в порядке сканирования растра LCU в тайлах или в изображении в целом, если тайлы не используются. В LCU пакеты кодирования, CU, могут иметь заданный порядок сканирования.
[0079] Декодер восстанавливает выходную видеоинформацию, применяя средства предсказания, аналогично кодеру, для формирования предсказанного представления блоков пикселей (с использованием информации о движении или пространственной информации, созданной кодером и хранимой в сжатом представлении) и декодирования ошибки предсказания (операция, обратная кодированию ошибки предсказания, для восстановления квантованного сигнала ошибки предсказания, относящегося к пространственному расположению пикселей). После применения средств декодирования предсказания и ошибки предсказания пикселей в декодере выполняется суммирование сигналов (пиксельных значений) предсказания и ошибки предсказания с формированием выходного видеокадра. В декодере (и кодере) могут также применяться дополнительные средства фильтрации, имеющие целью повышение качества выходного видеоизображения перед передачей его на отображение и/или хранение в качестве опорного для предсказания последующих кадров видеопоследовательности.
[0080] Фильтрация, например, может включать одно или более из следующего: деблокирующую фильтрацию, адаптивное смещение отсчетов (sample adaptive offset, SAO), и/или адаптивную петлевую фильтрацию (adaptive loop filtering, ALF). Стандарт H.264/AVC включает деблокирование, тогда как стандарт HEVC включает и деблокирование, и SAO.
[0081] В типовых видеокодеках на информацию о движении указывают при помощи векторов движения, связанных с каждым из блоков пикселей изображения, для которых используется компенсация движения, например, это могут быть пакеты предсказания. Каждый из таких векторов движения является представлением смещения блока пикселей в кодируемом изображении (в кодере) или декодируемом изображении (в декодере) и блока пикселей, являющегося исходным для предсказания, в одном из ранее кодированных иди декодированных изображениях. С целью эффективного представления векторов движения, как правило, применяют их разностное кодирование относительно вектора движения, предсказанного для конкретного блока. Как правило, в видеокодеках предсказанные векторы движения формируются заранее заданным способом, например, при помощи вычисления среднего вектора движения двух смежных кодируемых или декодируемых пикселей. Другим способом создания предсказаний векторов движения является формирование списка кандидатных предсказаний на основе соседних блоков и/или сорасположенных блоков в опорных изображениях временного предсказания и сигнализация выбранного кандидата в качестве предсказания вектора движения. В дополнение к предсказанию значений векторов движения может также выполняться предсказание, какое опорное изображение (или изображения) будет применяться для предсказания с компенсацией движения, и такая информация предсказания может быть представлена, например, порядковым номером опорного изображения, который указывает на ранее кодированное или декодированное изображение. Порядковый номер опорного изображения, как правило, предсказывается на основе соседних блоков и/или сорасположенных блоков в опорном изображении временного предсказания. При этом, обычно, в кодеках стандарта высокоэффективного видеокодирования применяют дополнительный механизм кодирования/декодирования информации о движении, часто называемый режимом слияния, в котором вся информация поля движения, включающая вектор движения и указатель на соответствующее опорное изображение для каждого имеющегося списка опорных изображений, является предсказываемой и применяется без какого-либо изменения или коррекции. Аналогично, предсказание информации поля движения выполняют с использованием информации поля движения соседних блоков и/или сорасположенных блоков в опорных изображениях временного предсказания, а использованную информацию поля движения сигнализируют в списке кандидатных полей движения вместе с информацией поля движения имеющихся смежных и/или сорасположенных блоков.
[0082] В типовых видеокодеках остаток предсказания после компенсации движения сначала преобразуют с помощью ядра преобразования (например, DCT), и только затем кодируют. Причиной тому является частое наличие остаточной корреляции в остатке предсказания, а преобразование во многих случаях позволяет снизить эту корреляцию и дает в результате более эффективное кодирование.
[0083] В типовых видеокодерах для поиска оптимальных режимов кодирования, например, необходимого режима кодирования для блоков и связанных с ними векторов движения, используется функция стоимости Лагранжа. В функции стоимости такого типа используется весовой коэффициент, или λ, связывающий (точное или предполагаемое) значение искажения изображения в результате кодирования с потерями и (точное или предполагаемое) количество информации, необходимое для представления значений пикселей в некоторой области изображения:
C=D+λR, (1)
где С - оптимизируемое значение функции Лагранжа, D - искажение изображения (например, среднеквадратическая ошибка) с учетом режима и его параметров, a R - количество битов, необходимое для представления данных, требуемых для восстановления блока изображения в декодере (включая количество данных для представления кандидатных векторов движения).
[0084] Стандарт и спецификации видеокодирования могут разрешать разделение, в кодере, кодированного изображения на кодированные слайсы или аналогичные элементы. Предсказание внутри изображения с пересечением границ слайсов, как правило, не допускается. Следовательно, слайсы можно считать способом разделения кодированного изображения на независимо декодируемые части. В стандартах H.264/AVC и HEVC предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Соответственно, слайсы можно считать способом деления кодированного изображения на независимо декодируемые части, и, следовательно, слайсы часто считаются элементарными единицами передачи. Во многих случаях кодеры могут указывать в битовом потоке, какие типы внутреннего предсказания с переходом между границами слайсов запрещены, при этом декодер учитывает данную информацию при своей работе, например, делая вывод о доступных источниках предсказания. Например, отсчеты из смежных пакетов кодирования могут считаться недоступными для внутреннего предсказания, если эти пакеты кодирования расположены в различных слайсах.
[0085] Элементарной единицей для вывода из кодера Н.264/AVC или HEVC и ввода в декодер H.264/AVC или HEVC, соответственно, является пакет уровня сетевой абстракции (Network Abstraction Layer, NAL). С целью передачи по сетям пакетной передачи данных или хранения в структурированных файлах NAL-пакеты могут инкапсулироваться в пакеты или в аналогичные структуры. Формат битового потока определен в стандартах H.264/AVC и HEVC для сред передачи или хранения, не обеспечивающих структуру кадров. В формате битового потока NAL-пакеты отделяются друг от друга при помощи прикрепления стартового кода перед каждым NAL-пакетом. Чтобы исключить ложное обнаружение границ NAL-пакетов в кодерах исполняется байтовый алгоритм предотвращения эмуляции стартового кода, который добавляет байт предотвращения эмуляции к полезной нагрузке NAL-пакета, если в противном случае в ней будет присутствовать стартовый код. Для обеспечения прозрачного шлюзового взаимодействия между системами пакетной и потоковой передачи данных, предотвращение эмуляции стартового кода должно выполняться в любом случае, независимо от того, применяется формат битового потока или нет. NAL-пакет это синтаксическая структура, содержащая указание на тип данных, следующих за ней, и байты, содержащие эти данные в форме RBSP, чередующиеся, при необходимости, с байтами предотвращения эмуляции. Последовательность исходных байтов полезной нагрузки (raw byte sequence payload, RBSP) может быть определена как синтаксическая структура, включающая целое число байт и инкапсулированная в NAL-пакете. Последовательность RBSP может быть либо пустой, либо иметь форму строки информационных бит, содержащих синтаксические элементы, за которыми следует стоп-бит RBSP и ноль или более последующих бит, равных 0.
[0086] NAL-пакеты состоят из заголовка и полезной нагрузки. В стандартах H.264/AVC и HEVC в заголовке NAL-пакета имеется указание на тип NAL-пакета.
[0087] В стандарта HEVC для всех определенных типов NAL-пакетов используется двухбайтный заголовок NAL-пакета. Заголовок NAL-блока содержит один зарезервированный бит, шестибитный индикатор типа NAL-блока, трехбитный индикатор nuh_temporal_id_plus 1 временного уровня (может предъявляться требования, чтобы он был большим либо равным 1) и шестибитное зарезервированное поле (имеющее наименование nuh_layer_id). Синтаксический элемент temporal_id_plus1 можно считать временным идентификатором NAL-блока, при этом отсчитываемая от нуля переменная Temporalid может быть вычислена следующим образом: TemporalId = temporal_id_plus1 - 1. Вместо переменной TemporalId эквивалентно может
использоваться сокращенное обозначение TID. TemporalId, равный нулю, соответствует самому нижнему временному уровню. Значение temporal_id_plus1 должно быть ненулевым, чтобы не возникала эмуляция стартового кода, в который входит два байта заголовка NAL-блока. Битовый поток, формируемый исключением всех NAL-блоков VCL, чей TemporalId больше или равен выбранному значению, и включением всех остальных NAL-блоков VCL, остается соответствующим стандарту. Следовательно, для изображений с TemporalId, равным некоторому значению tid_value, в качестве опорных для предсказания не используются изображения с TemporalId, большим tid_value. Подуровень или временной подуровень может быть определен как уровень временного масштабирования (или временной уровень (temporal layer, TL)) или битовый поток с временным масштабированием, состоящий из NAL-блоков VCL с конкретным значением переменной TemporalId, а также из соответствующих NAL-блоков, не являющихся блоками VCL. Значение nuh_layer_id можно трактовать как идентификатор уровня масштабирования.
[0088] NAL-пакеты могут быть разделены на две категории: NAL-пакеты уровня видеокодирования (Video Coding Layer, VCL) и NAL-пакеты, не относящиеся к VCL. NAL-пакеты VCL представляют собой NAL-пакеты со стандартным кодированием слайсов. В стандарте HEVC NAL-пакеты VCL содержат синтаксические элементы, представляющие собой один или более кодовых пакетов.
[0089] NAL-пакет, не относящийся к VCL, может, например, иметь один из следующих типов: набор параметров последовательности, набор параметров изображения, NAL-пакет дополнительной уточняющей информации (supplemental enhancement information, SEI), разделитель пакета доступа, конец последовательности NAL-пакетов, конец битового потока NAL-пакетов или NAL-пакет с данными фильтрации. Набор параметров может быть необходим для восстановления декодированных изображений, при этом многие из остальных типов NAL-пакетов, не относящихся к VCL, не являются необходимыми для восстановления декодированных изображений.
[0090] В набор параметров последовательности могут включаться параметры, которые остаются неизменными на протяжении всей кодированной видеопоследовательности. В дополнение к параметрам, которые могут быть необходимы в процессе декодирования, набор параметров последовательности опционально может включать информацию по используемости видео (video usability information, VUI), включающую параметры, важные для буферизации, синхронизации вывода изображения, отрисовки и резервирования ресурсов. В стандарте HEVC RBSP набора параметров последовательности включает в себя параметры, на которые могут выполняться ссылки в RBSP одного или более наборов параметров последовательности или в одном или более NAL-пакетов SEI, содержащих сообщение SEI с периодом буферизации. Набор параметров изображения содержит параметры, которые с большой вероятностью будут неизменными для нескольких кодированных изображений. RBSP набора параметров изображения может включать в себя параметры, на которые могут выполняться ссылки из NAL-пакетов кодированного слайса или из одного или более кодированных изображений.
[0091] В стандарте HEVC набор видеопараметров (video parameter set, VPS) определен как синтаксическая структура, содержащая синтаксические элементы, применимые к нулю или более полным кодированным видеопоследовательностям, в зависимости от содержимого синтаксического элемента, находящегося в наборе SPS, на который ссылается синтаксический элемент в наборе PPS, на который, в свою очередь, ссылается синтаксический элемент в заголовке сегмента слайса.
[0092] RBSP набора видеопараметров может включать в себя параметры, ссылки на которые могут осуществляться в RBSP одной или более наборов параметров последовательности.
[0093] Ниже описаны взаимоотношения и иерархия набора видеопараметров (VPS), набора параметров последовательности (SPS) и набора параметров изображения (SPS). Набор VPS располагается на один уровень выше набора SPS в иерархии наборов параметров и в контексте масштабируемости и/или 3D. Набор VPS может включать в себя параметры, являющиеся общими для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом. Набор SPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне (масштабируемости или ракурсов) кодированной видеопоследовательности в целом, которые при этом могут быть также общими для нескольких уровней (масштабируемости или ракурсов). Набор PPS включает в себя параметры, являющиеся общими для всех слайсов в данном уровне представления (представления уровня масштабируемости или ракурса в одном пакете доступа) и которые с большой вероятностью являются общими для всех слайсов в нескольких представлениях уровня кодирования.
[0094] Набор VPS может предоставлять информацию о отношениях зависимости уровней кодирования в битовом потоке, а также множество другой информации, применимой для всех слайсов во всех уровнях (масштабируемости или ракурсов) кодированной видеопоследовательности в целом. Набор VPS можно рассматривать как состоящий из двух частей, базовый VPS и VPS расширения при этом наличие VPS расширения может быть опциональным.
[0095] Передача, сигнализация или хранение данных вне основной полосы частот, в дополнение или альтернативно, может применяться в иных целях, а не только для повышения устойчивости к ошибкам передачи, например, для упрощения доступа или для установления сеанса. К примеру, наборы параметров в файле, отвечающем базовому формату медиафайлов ISO, могут быть включены в запись с информацией о отсчетах трека, тогда как кодированные данные битового потока хранят в другом месте этого файла или в другом файле. Выражение «параллельно битовому потоку» (например, «указание параллельно битовому потоку») или «параллельно пакету кодирования битового потока» (например, «указание параллельно кодированному тайлу») может пониматься, в пунктах формулы изобретения и в описании вариантов осуществления настоящего изобретения как передача, сигнализация или хранение данных вне основной полосы частот, таким образом, чтобы данные, не принадлежащие основной полосе частот, оставались связанными с битовым потоком или кодовым пакетом, соответственно. Выражение «декодирование параллельно битовому потоку», или «параллельно пакету кодирования битового потока», или аналогичные выражения, могут обозначать декодирование данных, поступающих вне основной полосы частот, на которые осуществляют ссылки (и которые могут быть получены за счет передачи, сигнализации или хранения данных вне основной полосы частоты) и которые связаны с битовым потоком или кодовым пакетом, соответственно.
[0096] NAL-пакеты SEI могут содержать одно или более сообщений SEI, которые не требуются для декодирования выходных изображений, но могут быть полезными в связанных с этим процедурах, например, синхронизации вывода изображения, отрисовки, обнаружения ошибок, скрытия ошибок и резервирования ресурсов.
[0097] Кодированное изображение - это кодовое представление изображения.
[0098] В стандарте HEVC кодированное изображение может быть определено как кодированное представление изображения, содержащее все блоки кодового дерева этого изображения. В стандарте HEVC блок доступа (AU) может быть определен как набор NAL-блоков, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат максимум одно изображение с конкретным значением nuh_layer_id. Помимо NAL-пакетов VCL кодированного изображения, пакет доступа может содержать также NAL-пакеты, не относящиеся к VCL. Упомянутое заданное правило классификации, например, позволяет объединять в один пакет доступа изображения, имеющие идентичное время вывода, или идентичное значение счетчика вывода изображений.
[0099] Битовый поток - это последовательность битов, в форме потока NAL-пакетов или байтового потока, который позволяет получить представление кодированных изображений и связанных с ними данных в форме одной или более кодированных видеопоследовательностей. В одном логическом канале, например, в одном файле или по одному соединению протокола связи за первым битовым потоком может следовать второй битовый поток. Элементарный поток (в контексте видеокодирования) - это последовательность из одного или более битовых потоков. Конец первого битового потока может быть означен специальным NAL-пакетом, который может называться NAL-пакетом конца битового потока (end of bitstream, ЕОВ), и который является последним NAL-пакетом битового потока. В стандарте HEVC и в имеющихся на сегодняшний день проектах его расширений NAL-блок ЕОВ должен иметь nuh_layer_id равный 0.
[0100] В стандарте H.264/AVC кодированная видеопоследовательность определена как ряд последовательных пакетов доступа в порядке декодирования от пакета доступа IDR включительно до следующего пакета доступа IDR исключительно или до конца битового потока, - в зависимости от того, что появляется раньше.
[0101] В стандарте HEVC кодированная видеопоследовательность (coded video sequence, CVS) может быть определена, например, как последовательность пакетов доступа, которые состоят, в порядке декодирования: из пакета доступа IRAP-изображения с флагом NoRaslOutputFlag, равным 1, за которым следуют ноль или более пакетов доступа, не являющихся блоками доступа IRAP-изображения и имеющих флаг NoRaslOutputFlag, равный 1, включая все последующие пакеты доступа вплоть до (не включительно) первого последующего пакета доступа, который является блоком доступа IRAP-изображения с флагом NoRaslOutputFlag, равным 1. Пакет доступа IRAP-изображения это пакет доступа, в котором изображение базового уровня является IRAP-изображением. Для всех IDR-изображений, всех BLA-изображений и всех IRAP-изображений, являющихся первыми изображениями в данном конкретном уровне битового потока, IRAP-изображений, идущих первым после окончания последовательности NAL-блоков, имеющих такое же значение nuh_layer_id, в порядке декодирования, значение NoRaslOutputFlag равно 1. Возможна передача значения флага HandleCraAsBlaFlag в декодер из внешнего объекта, например, проигрывателя или приемника, осуществляющего управление декодером. Флаг HandleCraAsBlaFlag может быть установлен в 1, например, проигрывателем, который осуществляет поиск новой позиции в битовом потоке или подключается к трансляции и начинает декодирование, и в этом случае он будет начинать декодирование с CRA-изображения. Когда для CRA-изображения флаг HandleCraAsBlaFlag равен 1, это CRA-изображение обрабатывают и декодируют так, как если бы оно было BLA-изображением.
[0102] В стандарте HEVC, дополнительно или альтеративно (к описанной выше спецификации), может быть определено, что кодированная видеопоследовательность оканчивается, когда конкретный в битовом потоке встречается специальный NAL-блок, который может называться NAL-блоком конца последовательности (end of sequence, EOS) и имеет nuh layer id, равным 0.
[0103] Далее приведено определение и характеристики группы изображений (group of pictures, GOP). Группа GOP может быть декодирована независимо от того, были ли декодированы какие-либо предшествующие ей изображения или нет. Открытая группа изображений - это группа изображений, в которой изображения, предшествующие первому внутренне предсказываемому изображению в порядке вывода, могут не быть декодированы корректно, если декодирование начинается с упомянутого первого внутренне предсказываемого изображения открытой группы изображений. Другими словами, изображения в открытой GOP могут ссылаться (для внутреннего предсказания) на изображения из предшествующей GOP. Декодер, соответствующий стандарту HEVC, способен распознавать внутренне предсказываемое изображение в начале открытой GOP благодаря специальному типу NAL-пакетов, CRA, который может использоваться для кодируемых слайсов этого изображения. Закрытая группа изображений - это группа изображений, в которой все изображения могут быть декодированы корректно, если декодирование начинается с первого внутренне предсказываемого изображения закрытой группы изображений. Другими словами, ни одно из изображений в закрытой GOP не ссылается ни на одно изображение из предшествующих GOP. В стандартах H.264/AVC и HEVC закрытая группа GOP может начинаться с IDR-изображения. В стандарте HEVC закрытая группа изображений, GOP, может также начинаться с изображения BLA_W_RADL или BLA_N_LP. Структура кодирования с открытыми GOP дает потенциально более эффективное сжатие, по сравнению со структурой кодирования с закрытыми GOP, благодаря большей гибкости при выборе опорных изображений.
[0104] В кодере и/или декодере может применяться буфер декодированных изображений (Decoded Picture Buffer, DPB). Декодированные изображения буферизуют по двум причинам: для использования в качестве опорных при внешнем предсказании и для изменения порядка декодированных изображений в выходной последовательности. Стандарты H.264/AVC и HEVC дают значительную гибкость как для маркировки опорных изображений, так и для переупорядочивания выходной последовательности, однако содержание отдельных буферов для опорных изображений и для изображений выходной последовательности не является оптимальным с точки зрения расхода ресурсов памяти. Следовательно, буфер DPB может включать унифицированную процедуру буферизации опорных изображений и переупорядочивания выходной последовательности. Декодированное изображение может удаляться из буфера DPB, когда оно больше не используется в качестве опорного и не требуется для вывода.
[0105] Во многих режимах кодирования стандартов Н.264/AVC и HEVC, на опорное изображение внешнего предсказания указывают с помощью указателя на список опорных изображений. Указатель может кодироваться с использованием кодирования переменной длины (неравномерного кодирования), что обычно дает более короткие значения указателей с меньшим числовым значением для соответствующих синтаксических элементов. В стандартах Н.264/AVC и HEVC формируются два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) для каждого двунаправленно предсказываемого слайса (В-слайса), и один список опорных изображений (список 0 опорных изображений) для каждого слайса, кодируемого с внешним предсказанием (Р-слайса).
[0106] Во многих стандартах кодирования, включая H.264/AVC и HEVC, процедура декодирования может давать на выходе указатель на опорное изображение в списке опорных изображений, который может применяться для указания, какое из нескольких опорных изображений необходимо использовать для внешнего предсказания определенного блока пикселей. Указатель на опорное изображение в некоторых режимах кодирования с внешним предсказанием может кодироваться кодером в битовый поток, или, в других режимах кодирования с внешним предсказанием, может вычисляться (например, кодером и декодером), например, с использованием соседних блоков.
[0107] Информация о движении, может относиться, без ограничения перечисленным, к одному или более из следующих типов:
- указание на тип предсказания (например, внутреннее предсказание, однонаправленное предсказание, двунаправленное предсказание) и/или на количество опорных изображений;
- указание на направление предсказания, например, внешнее (также называемое временным) предсказание, межуровневое предсказание, межракурсное предсказание, предсказание на основе синтеза ракурсов (view synthesis prediction, VSP), межкомпонентное предсказание (указание на которое может быть выполнено для конкретного опорного изображения или для конкретного типа предсказания, и при этом в некоторых из вариантов осуществления настоящего изобретения межвидовое предсказание и предсказание на основе синтаксиса ракурсов может считаться одним направлением предсказания) и/или
- указание на тип опорных изображений, например, краткосрочное опорное изображение и/или долгосрочное опорное изображение, и/или опорное изображение межуровневого предсказания (при этом указание может выполняться, например, для каждого опорного изображения);
- указатель на список опорных изображений и/или любой другой идентификатор, указывающий на опорные изображения (при этом указание может выполняться, например, для каждого типа опорного изображения, тип которого может зависеть от направления предсказания и/или от типа опорного изображения, и которое при этом может сопровождаться другими соответствующими фрагментами информации, например, информацией о списке опорных изображений или аналогичной структуре, к которой относится указатель на опорные изображения);
- горизонтальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.);
- вертикальная составляющая вектора движения (она может указываться для каждого блока предсказания, для каждого указателя на опорные изображения и т.п.);
- один или более параметров, таких как разность порядковых номеров изображений и/или относительное расстояние между камерами, для изображений, содержащих параметры движения и соответствующее опорное изображение, или связанных с ними, которые могут применяться для масштабирования горизонтальной составляющей вектора движения и/или вертикальной составляющей вектора движения в процессе предсказания одного или более векторов движения (при этом упомянутые один или более параметров могут быть указаны, например, для каждого опорного изображения, для каждого указателя на опорные изображения и т.п.);
- координаты блока пикселей, к которому применимы параметры движения и/или информация о движении, например, координаты верхнего левого отсчета в блоке пикселей для блоков отсчетов яркости;
- размеры (например, ширина и длина) блока пикселей, к которому применимы параметры движения и/или информация о движении.
[0108] Масштабируемым видеокодированием может называться такая схема кодирования, в которой один битовый поток может содержать несколько представлений видеоданных (контента), например, с различным битрейтом, разрешением и/или частотой смены кадров. При такой схеме приемник может получать необходимое представление контента в зависимости от своих характеристик (например, разрешение, наиболее подходящее для дисплейного устройства). Альтернативно, сервер или сетевой элемент может извлекать части битового потока для передачи в приемник в зависимости, например, от характеристик сети или вычислительных возможностей приемника. Корректное декодированное представление может быть получено, даже если декодируются только определенные части масштабируемого битового потока. Масштабируемый битовый поток состоит, как правило, из «базового уровня», обеспечивающего наименьшее из доступных качество видеоинформации, а также из одного или более уточняющих уровней, которые повышают качество видео при их приеме и декодировании вместе с нижними уровнями. Чтобы повысить эффективность кодирования уточняющих уровней их кодированные представления, как правило, предсказывают на основе нижних уровней. Например, информация о движении и режиме уточняющего уровня может предсказываться на основе низлежащих уровней. Аналогично, данные пикселей нижних уровней могут применяться для формирования предсказания уточняющего уровня.
[0109] В некоторых из схем масштабируемого видеокодирования видеосигнал может кодироваться в базовый уровень и в один или более уточняющих уровней. Уточняющий уровень, например, может повышать временное разрешение (т.е. частоту смены кадров), пространственное разрешение или просто качество видеоконтента, представленного в другом уровне, или его части. Каждый уровень вместе со всеми зависимыми уровнями является одним из представлений видеосигнала, например, с определенным пространственным разрешением, временным разрешением и уровнем качества. В данном документе масштабируемый уровень вместе со всеми зависимыми уровнями называется «репрезентацией масштабируемого уровня». Часть масштабируемого битового потока, соответствующая репрезентации масштабируемого уровня, может быть извлечена и декодирована, в результате чего получают представление исходного сигнала с определенной точностью.
[0110] Режимы масштабирования, или масштабируемые величины, могут включать, без ограничения перечисленным, описанные ниже режимы.
- Масштабируемость качества: изображения базового уровня кодируют с меньшим качеством, чем изображения уточняющих уровней, что может быть реализовано, например, за счет использования более высокого значения параметра квантования (т.е. большего размера шага квантования коэффициентов преобразования) в базовом уровне, по сравнению с уточняющим уровнем. Масштабируемость качества может, в свою очередь, подразделяться на мелкозернистую или мелко гранулярную масштабируемость (fine-grain или fine-granularity scalability, FGS), среднезернистую или среднегранулярную масштабируемость (medium-grain или medium-granularity scalability, MGS) и/или крупнозернистую или крупногранулярную масштабируемость (coarse-grain или coarse-granularity scalability, CGS) которые будут описаны ниже.
- Пространственная масштабируемость: изображения базового уровня кодируют с меньшим разрешением (т.е. имеют меньше количество отсчетов), чем изображения уточняющих уровней. Пространственную масштабируемость и масштабируемость качества, особенно ее крупногранулярный тип, иногда относят к одному типу масштабируемости.
- Масштабируемость битовой глубины: изображения базового уровня кодирования кодируют с меньшей битовой глубиной (например, 8 бит), чем изображения уточняющих уровней (например, 10 или 12 бит).
- Масштабируемость динамического диапазона: Масштабируемые уровни представляют собой различные динамические диапазоны и/или изображения, полученные с использованием различных функций тональной компрессии и/или различных частотно-контрастных характеристик.
- Масштабируемость формата цветности: изображения базового уровня кодирования обеспечивают меньшее пространственное разрешение в массивах отсчетов цветности (например, кодированы в формате цветности 4:2:0), чем изображения уточняющих уровней (например, формат 4:4:4).
- Масштабируемость цветового охвата: изображения уточняющего уровня имеют более емкий, или широкий, диапазон представления цвета, чем изображения базового уровня, например, уточняющий уровень может иметь цветовой охват по стандарту UHDTV (ITU-R ВТ.2020), а базовый уровень может иметь цветовой охват по стандарту ITU-R ВТ.709.
- Масштабируемость ракурсов, которая может также называться многоракурсным кодированием. Базовый уровень представляет собой первый ракурс, тогда как уточняющий уровень является вторым ракурсом. Ракурс - это последовательность изображений, представляющих одну камеру или одну точку зрения. Можно считать, что при стереоскопическом, или двухракурсном, видео одну видеопоследовательность, или ракурс, отображают для левого глаза, тогда как параллельный ракурс отображают для правого глаза.
- Масштабируемость глубины, которая может также называться кодированием с уточнением глубины. Один или несколько уровней в битовом потоке могут представлять собой ракурс (или ракурсы) текстуры, тогда как другой уровень, или уровни, могут представлять собой ракурс (или ракурсы) глубины.
- Масштабируемость областей интереса (описана ниже).
- Чересстрочно-прогрессивная масштабируемость (также называемая масштабируемостью поле-кадр): исходные кодированные чересстрочные данные базового уровня уточняют с использованием уточняющего уровня, который представляет прогрессивные исходные данные. Кодированные чересстрочные видеоданные в базовом уровне могут содержать кодированные поля, кодированные кадры, представляющие пары полей, или их комбинацию. При чересстрочно-прогрессивной масштабируемости разрешение изображения базового уровня может быть изменено таким образом, чтобы оно подходило в качестве опорного изображения для одного или более изображений уточняющего уровня.
- Масштабируемость с гибридным кодеком (также называемая масштабируемостью стандартов кодирования): при масштабируемости с гибридным кодеком синтаксис, семантика и процедура декодирования для базового уровня и уточняющего уровня могут определяться различными стандартами видеокодирования. Таким образом, изображения базового уровня кодируют согласно стандарту или формату кодирования, отличающемуся от кодирования изображений уточняющего уровня. К примеру, базовый уровень может кодироваться с использованием стандарта H.264/AVC, а уточняющий уровень может быть кодирован с использованием многоуровневого расширения HEVC.
[0111] Нужно понимать, что многие из типов масштабируемости могут комбинироваться и применяться совместно. К примеру, могут совместно применяться масштабируемость цветового охвата и масштабируемость битовой глубины.
[0112] Термин «уровень» может использоваться в контексте любых типов масштабируемости, включая масштабируемость ракурсов и уточнение глубины. Уточняющий уровень может иметь отношение к любому типу уточнения, например, повышению соотношения сигнал-шум, уточнению пространственного разрешения, многоракурсному уточнению, уточнению глубины, битовой глубины, формата цветности и/или и/или увеличению цветового охвата. Базовый уровень может относиться к любому типу базовой видеопоследовательности, например, к базовому ракурсу, базовому уровню пространственной масштабируемости или масштабируемости отношения сигнал-шум, или к базовому ракурсу текстуры для видеокодирования с уточнением глубины.
[0113] Как было описано выше, неподвижные изображения и изображения видеопоследовательности, как правило, разбивают на менее крупные блоки отсчетов, которые предсказывают при помощи средств временного или пространственного предсказания, а остаточную ошибку между предсказанным блоком и соответствующим блоком в исходном изображении кодируют при помощи средств кодирования остатка. Средства кодирования остатка, как правило, включают преобразование блока остатка в частотную форму (например, с помощью дискретного косинусного преобразования (DCT) или производных от него методов в качестве первичного преобразования), квантование результирующих коэффициентов преобразования и энтропийное кодирование квантованных коэффициентов.
[0114] Также могут применяться так называемые вторичные преобразования, позволяющие повысить эффективность кодирования. Входными данными вторичного преобразования являются выходные данные первичного преобразования (например, DCT), при этом оно обеспечивает дополнительное преобразование низкочастотных коэффициентов первичного преобразования. На фиг. 5 показан пример структуры кодера 530 и декодера 540, которая может применяться для кодирования и декодирования видео и изображений с использованием первичных и вторичных преобразований в соответствии с одним из вариантов осуществления настоящего изобретения. В кодере 530 может быть реализована логика для выбора требуемых режимов преобразования: mts_idx для первичного преобразования и lfhst_idx для вторичного преобразования. Эти режимы кодируют в битовый поток. Затем декодер 540 может декодировать эти же режимы преобразования из представления в битовом потоке и применять выбранные вторичное и первичное преобразования к декодированным коэффициентам преобразования. Режим вторичного преобразования lfhst_idx, равный нулю, может обозначать пропуск ("обход") вторичного преобразования и выполнение только первичного преобразования для коэффициентов преобразования. Первичное преобразование в видеокодеке также может пропускаться. Это может быть указано либо при помощи передачи отдельного флага для активации подобного режима пропуска преобразования, либо это указание может быть внедрено в сигнализацию индекса mts_idx первичного преобразования с использованием одного из его значений в качестве указания на режим пропуска преобразования.
[0115] Вернемся к фиг. 4, проиллюстрированные пакеты 342, 442 преобразования могут рассматриваться как включающие пакет 531 первичного преобразования и пакет 532 вторичного преобразования в кодере 530 с двойным преобразованием на фиг. 5. Аналогично, пакеты 362, 462 обратного преобразования на фиг. 4 могут рассматриваться как включающие пакет 543 обратного вторичного преобразования и пакет 544 обратного первичного преобразования в декодере 540 с двойным преобразованием на фиг. 5.
[0116] Входные данные в кодер 530 с двойным преобразованием, как правило, состоят из значений отсчетов остатка, определяющих разность между предсказанными и исходными значениями отсчетов в видеокодере или кодере изображений. Эти значения пропускают через две процедуры преобразования, называемые первичным преобразованием 531 и вторичным преобразованием 532. Результирующие коэффициенты преобразования могут быть квантованы 533 до требуемой точности, энтропийно кодированы 534 и выведены в битовый поток 536 или в файл. Декодер 540 с двойным преобразованием, как правило, считывает кодированные символы из битового потока, выполняет их энтропийное декодирование 541 и деквантует 542 их, получая коэффициенты преобразования, затем выполняет обратное вторичное преобразование 543 и обратное первичное преобразование 544. Первичное преобразование может быть, например, двумерным DCT- или DST-преобразованием, а вторичное преобразование может быть, например, неразделимым двумерным преобразованием.
[0117] Селектор 535 преобразования может выполнять выбор режима основного преобразования и выбор режима вторичного преобразования, а также подготавливать указания выбранных режимов преобразования для сигнализации в декодер. Далее будет рассмотрено функционирование селектора 535 преобразования в соответствии с некоторыми из вариантов осуществления настоящего изобретения.
[0118] Будут представлены новые усовершенствованные способы для процедур двойного преобразования и обратного двойного преобразования.
[0119] На фиг. 8 показан пример работы кодера 530 в соответствии с одним из вариантов осуществления настоящего изобретения. Способ кодирования включает ввод (800) блока отсчетов остатка; определение (801) позиции последнего ненулевого коэффициента в порядке сканирования; определение (802) режима вторичного преобразования на основе позиции последнего ненулевого коэффициента; определение (803) режима первичного преобразования на основе режима вторичного преобразования; определение (804) коэффициентов преобразования; и выполнение (805) первичного и вторичного преобразований.
[0120] На фиг. 9 показан пример работы декодера 540 в соответствии с одним из вариантов осуществления настоящего изобретения. Способ декодирования включает прием (900) битового потока и декодирование (901) синтаксического элемента last_pos для определения позиции последнего коэффициента в блоке преобразования. Найденную позицию последнего коэффициента в блоке преобразования используют для проверки (902), указывает ли позиция последнего коэффициента на то, что синтаксический элемент lfnst_idx сигнализирован в битовом потоке. Если синтаксический элемент last_tos находится в определенном диапазоне, синтаксический элемент lfnst idx декодируют (903), и режим вторичного преобразования определяют на основе декодированного синтаксического элемента lfnst_idx. Если last_pos не находится в упомянутом определенном диапазоне, синтаксический элемент lfnst_idx устанавливают (904) равным нулю или другому заранее заданному значению, указывающему на то, что синтаксический элемент lfnst_idx не сигнализируют в битовом потоке, и определяют, что режим вторичного преобразования отсутствует. Декодированное (903) или установленное (904) значение синтаксического элемента lfnst_idx также проверяют (905), чтобы определить, указывает ли синтаксический элемент lfnst_idx на сигнализацию mts_idx. Если проверка показывает, что синтаксический элемент lfnst_idx указывает на сигнализацию mts_idx, синтаксический элемент mts_idx декодируют (906), и режим первичного преобразования определяют на основе режима вторичного преобразования. Если lfnst_idx не находится в упомянутом определенном диапазоне, lfnst_idx устанавливают (907) равным 0 или иному заранее заданному значению, указывающему на то, что определено, что режим первичного преобразования отсутствует. Затем декодируют (908) коэффициенты преобразования, и выполняют (909) выбранные (существующие) первичное и вторичное преобразования.
[0121] Ниже будут более подробно рассмотрены некоторые из вариантов осуществления настоящего изобретения, относящиеся к сигнализации режимов первичного и вторичного преобразования, в связи с кодеком, кодером или декодером видео или изображений.
[0122] Кодер 530 получает блок преобразования, включающий отсчеты остатка, для обработки. Селектор 535 преобразования определяет (находит) позицию последнего коэффициента в блоке преобразования. Определение позиции последнего коэффициента может выполняться в кодере при помощи сканирования коэффициентов а заранее заданном порядке и проверки, где находится позиция последнего ненулевого коэффициента или иного коэффициента, удовлетворяющего заданному критерию активности, в блоке преобразования, в упомянутом порядке сканирования. Это определение может выполняться, например, таким образом, что значения отсчетов в блоке преобразования анализируют, начиная, например, с последнего коэффициента в блоке преобразования, и, если значение отсчета равно нулю, проверяют значение предшествующего коэффициента, в порядке, обратном сканированию, чтобы определить, равен он нулю или нет. Этот шаг повторяют до тех пор, пока не будет найден первый ненулевой коэффициент. Местоположение этого коэффициента в блоке преобразования используют в качестве указания на последний ненулевой коэффициент. Это местоположение может быть указано, например, в виде координат (строка и столбец местоположения последнего коэффициента, или в виде порядкового номера коэффициента в порядке сканирования, или иным образом). В различных применениях на практике могут использоваться различные варианты диагонального сканирования, поскольку они, в сочетании с сигнализацией последнего ненулевого коэффициента в блоке, в значительной степени точно отражают типовое распределение коэффициентов внутри блоков преобразования, где они чаще всего упакованы в область начала сканирования и в левом верхнем углу блоков преобразования. Пример подобного сканирования показан на рис. 10. В этом примере сканирование определено для блока 1200 коэффициентов преобразования, имеющего размер 8×8, на основе групп коэффициентов размером 4×4, при этом порядок сканирования групп определен как диагональ от верхней правой к нижней левой, и порядок сканирования внутри групп коэффициентов определен идентично, в том же общем направлении. В данном примере номера внутри блока 1200 преобразования, иллюстрирующие порядок сканирования отчетов, начинаются от 0 и увеличиваются до 63. В данном примере порядок сканирования соответствует диагональному сканированию блоков от верхнего правого к нижнему левому, обозначенному стрелкой 1201. Внутри блоков порядок сканирования может быть тем же, как это видно из примера на фиг. 10 (обозначено стрелкой 1202). Другими словами, сначала коэффициенты в верхнем левом блоке сканируют по диагонали от верхнего правого к нижнему левому, затем коэффициенты в верхнем правом блоке сканируют по диагонали от верхнего правого к нижнему левому, затем сканируют коэффициенты нижнего левого блока, и наконец - нижнего правого блока. Упомянутый выше обратный порядок сканирования, как следует из его названия, является обратным описанному выше порядку сканирования. В примере, показанном на фиг. 10, последний коэффициент имеет номер 63, предшествующий ему - номер 62 и т.д.
[0123] Вместо ненулевого значения коэффициента упомянутый выше критерий активности может быть также любой иной мерой активности. Например, он может быть пороговым значением, при этом вместо поиска первого ненулевого значения, как описано выше, поиск может включать в себя поиск первого коэффициента, имеющего значение (или абсолютное значение, возможны отрицательные значения), превышающее пороговое. Мерой активности также может быть, например, общее количество ненулевых коэффициентов или сумма абсолютных значений коэффициентов.
[0124] Кодер, после определения местоположения последнего ненулевого коэффициента, может кодировать синтаксические элементы, описывающие координаты его позиции, и выводить их в битовый поток. Соответствующий декодер может затем декодировать эти координаты и начинать декодирование ненулевых коэффициентов для блока преобразования с упомянутого местоположения, в обратном порядке сканирования, по направлению к началу сканирования. То есть, декодер может декодировать последний ненулевой коэффициент и значения других коэффициентов блока преобразования, предшествующих последнему ненулевому коэффициенту.
[0125] Когда позиция последнего ненулевого коэффициента в блоке преобразования будет определена, эту позицию можно использовать для определения режима вторичного преобразования. Может быть несколько вариантов того, как позиция влияет на режим вторичного преобразования. Некоторые соответствующие примеры будут рассмотрены ниже.
[0126] Затем режим вторичного преобразования, который был определен, можно использовать для выбора режима первичного преобразования. Может быть несколько вариантов того, как режим вторичного преобразования влияет на режим первичного преобразования. Некоторые соответствующие примеры будут рассмотрены ниже.
[0127] Когда вторичный режим преобразования и первый режим преобразования выбраны, могут быть определены коэффициенты преобразования для блока преобразования, и может быть выполнена операция преобразования на основе упомянутых коэффициентов преобразования, упомянутого первичного режима преобразования и упомянутого вторичного режима преобразования.
[0128] В видеокодере или кодере изображений определение режима вторичного преобразования может выполняться, например, с помощью применения различных кандидатных преобразований к предсказаниям остатка и выбора кандидатного преобразования, которое минимизирует заданную функцию стоимости. Подобная функция стоимости может включать выражение, зависящие от точного или оценочного количества битов, необходимого для представления блока преобразования, пакета преобразования или пакета кодирования с использованием кандидата; и член, который зависит от меры точной или оценочной ошибки восстановления блока отсчетов.
[0129] В видеодекодере или декодере изображений определение режима вторичного преобразования может быть выполнено путем анализа синтаксических элементов, указывающих на режим вторичного преобразования.
[0130] Определение режима вторичного преобразования может включать различные проверки доступности, как в кодере, так и в декодере; при этом сигнализация и анализ режима вторичного преобразования могут быть опущены при некоторых условиях. Например, можно быть задано, что последний коэффициент в блоке преобразования должен находиться в определенном диапазоне в порядке сканирования, чтобы сигнализация вторичного преобразования присутствовала в битовом потоке. В случае, когда сигнализация опущена, может быть определено, что режим вторичного преобразования представлен нулевым значением, или иным указанием, которые могут применяться для указания на то, что вторичное предсказания для данного блока преобразования, пакета преобразования или пакета кодирования отключено.
[0131] Выбор режима первичного преобразования в видеокодере или кодере изображений может выполняться при помощи подхода, аналогичного выбору режима вторичного преобразования, включая тестирование различных режимов первичного преобразования и вычисление функции стоимости, и выбор режима, минимизирующего выбранную функцию стоимости.
[0132] В одном из вариантов осуществления настоящего изобретения определение режима первичного преобразования выполняют на основе режима вторичного преобразования, который был определен. Это может включать, например, пропуск сигнализации части или всех синтаксических элементов, относящихся к режиму первичного преобразования, в случае, когда ненулевой режим вторичного преобразования включен в битовый поток. Сигнализация режима первичного преобразования в битовом потоке может быть также разделена на две или более части. Например, сигнализация так называемого режима пропуска преобразования, в котором пропускают и первичное, и вторичное преобразования, может выполняться до сигнализации позиции последнего коэффициента в блоке преобразования, тогда как сигнализация режима вторичного преобразования может выполняться после сигнализации позиции последнего коэффициента, за которой следует сигнализация первичного преобразования, в том случае, когда сигнализировано, что для блока преобразования вторичное преобразование отключено.
[0133] Определение коэффициентов преобразования для блока преобразования может быть выполнено различными способами. Они могут, например, сигнализироваться в конкретном порядке сканирования, или обратном порядке сканирования, с помощью основанного на контексте арифметического кодирования. Квантованные коэффициенты, сигнализированные в битовом потоке, могут быть деквантованы и масштабированы с помощью различных методов перед выполнением операций обратного первичного и/или вторичного преобразований.
[0134] Операции преобразования также могут выполняться различными способами. Преобразование или обратное преобразование может выполняться, например, с использованием операций умножения матриц, операций умножения и сложения, или операций сдвига и сложения, или их комбинации. Выбор матрицы преобразования может включать, помимо синтаксического анализа режима вторичного преобразования и режима первичного преобразования, например, операции и условия для проверки размеров блока преобразования, канала яркости/цветности блока преобразования или режима внутреннего предсказания, связанного с блоком преобразования, пакетом преобразования или пакетом кодирования.
[0135] Под первичным преобразованием может пониматься преобразование, которое применяют к декодированным коэффициентам преобразования, или к набору коэффициентов преобразования, которые являются выходными данными вторичного преобразования в декодере. Под вторичным преобразованием может пониматься преобразование, которое применяют к декодированным коэффициентам преобразования и выходные данные которого подают в качестве входных данных в первичное преобразование. Примеры первичных преобразований включают семейство преобразований, относящихся к дискретному косинусному преобразованию (DCT) и дискретному синусному преобразованию (DST), которые применяют, например, в проекте стандарта VVC и сигнализируют с использованием синтаксического элемента tu_mts_idx. Проект стандарта VVC включает также вторичное преобразование, называемое низкочастотным неразделимым преобразованием (low-frequency non-separable transform, LFNST). Активацию и сигнализацию режима вторичного преобразования LFNST выполняют с помощью синтаксического элемента lfnst_idx, в коде, который реализуют в соответствии с данным проектом стандарта.
[0136] В одном из вариантов осуществления настоящего изобретения сигнализацию или декодирование первичного преобразования выполняют на основе использования вторичного преобразования. Упомянутые сигнализацию или декодирование выполняют, предпочтительно, после сигнализации или декодирования позиции последнего коэффициента преобразования в блоке преобразования и до сигнализации или декодирования коэффициентов в этом блоке преобразования. Такая конфигурация позволяет видеодекодеру определять как тип первичного преобразования, так и тип вторичного преобразования, перед декодированием коэффициентов в блоке преобразования и пропускать декодирование областей коэффициентов, которые не применимы для выбранного первичного преобразования или выбранной пары первичного и вторичного преобразований
[0137] Сигнализация и декодирование как первичного преобразования, так и вторичного преобразования, на уровне блоков преобразования и определение режима первичного преобразования в зависимости от знания выбранного режима вторичного преобразования позволяют получить ряд преимуществ. Во-первых, сигнализация режима вторичного преобразования на уровне пакета кодирования после кодирования или декодирования пакета кодирования в целом в различных реализациях может вносить дополнительные задержки. Например, в кодере критерии доступности вторичного преобразования в компоненте яркости могут считаться выполненными только после кодирования также компонента цветности пакета кодирования. Это может усложнить конструкцию кодера и делает необходимой буферизацию в нем информации, которая может так и остаться нерелевантной. Аналогично, в декодере, преобразование яркости может быть определено только после декодирования синтаксических элементов для всех блоков преобразования цветности в одном пакете кодирования. Во-вторых, в одном из сценариев применения более эффективным с точки зрения кодирования может быть сначала получить представление режима вторичного преобразования, и иметь возможность опустить сигнализацию режима первичного преобразования, особенно, когда выбор вторичного преобразования ограничен подмножеством первых преобразований.
[0138] Для определения, присутствует ли некоторый синтаксический элемент в битовом потоке или нет, могут применяться различные пороговые значения и диапазоны значений синтаксических элементов. Также, при принятии решения о декодировании или кодировании режима первичного преобразования или вторичного преобразования могут использоваться и другие параметры, например, использование некоторых режимов внутреннего или внешнего предсказания для пакета кодирования, пакета предсказания, блока или пакета преобразования. В качестве примера, синтаксис битового потока может быть представлен с помощью следующей синтаксической структуры:
[0139] Общие условия для указания на вторичное преобразование, lfnstGenericConditions, могут включать, например, сравнение размеров блока преобразования с пороговыми значениями. Например, они могут включать сравнение минимума из ширины и высоты блока преобразования со значением 4, или 2. Помимо упомянутых общих условий, условия для анализа режима вторичного преобразования, lfnst_idx, могут включать проверку позиции последнего коэффициента в блоке преобразования. Один из таких примеров приведен также в синтаксической таблице путем определения переменной lfnstLastPosConditions, которую вычисляют на основе последней позиции сканирования lastScanPos для блока преобразования. Эти условия, по отдельности или вместе, могут называться условиями доступности вторичного преобразования.
[0140] Аналогично, условие декодирования режима первичного преобразования, mts_idx, может включать общие условия, mtsGenericConditions, например, минимальный или максимальный размер блока преобразования. Помимо общих условий в проверке доступности синтаксического элемента mts_idx может участвовать указываемый lfnst_idx. В рассмотренном выше примере lfnst_idx должен быть равен нулю, чтобы анализ mts_idx был разрешен.
[0141] Эти условия, по отдельности или вместе, могут называться условиями указания на первичное преобразование.
[0142] Указание на режим вторичного преобразования, lfnst_idx, может выполняться внутри одного блока преобразования, однако действие этого указания может охватывать несколько блоков преобразования. К примеру, в случае одного пакета кодового дерева, включающего блоки преобразования как для яркости, так и для яркости, lfnst_idx для блока преобразования яркости может быть определен с использованием условий доступности вторичного преобразования для этого блока преобразования яркости. Указанный Lfnst_idx может затем использоваться в качестве режима вторичного преобразования также и для блоков преобразования цветности, внутри того же пакета кодирования или пакета преобразования.
[0143] В случае кодирования с двойным деревом, при котором составляющую яркости выделяют в одну структуру кодирования, а составляющие цветности в другую, lfnst_idx для блока преобразования цветности может быть определен в зависимости от условий доступности вторичного преобразования для этого блока яркости. В отношении блоков преобразования цветности, может быть указан совместный lfnst_idx для двух блоков цветности, при помощи включения условий доступности вторичного преобразования в первый блок преобразования цветности с ненулевыми коэффициентами преобразования. Это может быть реализовано, например, с помощью следующего дополнительного условия в общих условиях доступности вторичного преобразования, LfnstGenericConditions:
[0144] Где cIdx, равный нулю, относится к блоку преобразования яркости, cIdx, равный единице, относится к первому блоку преобразования цветности, treeType, равный DUAL_TREE_CHROMA, относится к кодированию с двойным деревом, с отдельными деревьями яркости и цветности, и блоку преобразования, принадлежащему дереву цветности, a tu_cbf_cb, равный 0, относится к первому блоку преобразования цветности, имеющему коэффициенты с исключительно нулевыми значениями.
[0145] Режим вторичного преобразования, lfnst_idx, и режим первичного преобразования, mts_idx, могут быть также указаны на уровне пакета кодирования. В этом случае для условий доступности указания на вторичное преобразование может использоваться только указание на позицию последнего коэффициента, lastScanPos, блока преобразования яркости или блоков яркости в этом пакете кодирования, при этом указания на позицию последнего коэффициента блоков преобразования цветности могут быть опущены, как в случае кодирования с единственным деревом, так и в случае кодирования яркости с двойным деревом. В случае кодирования цветности с двойным деревом, условия доступности вторичного преобразования могут включать указание на позицию последнего коэффициента, lastScanPos, для первого блока преобразования цветности с ненулевыми коэффициентами.
[0146] Порядок кодирования и декодирования различных синтаксических элементов может зависеть от сигнализации более высокого уровня, присутствующей в битовом потоке. Такая сигнализация может размещаться, например, в различных наборах параметров или в заголовках, как внутри битового потока видео, так и вне его, при этом она может включать активацию или деактивацию всех (или части) режимов первичного преобразования и вторичного преобразования. Например, в зависимости от подобной сигнализации указание на первичное преобразование может декодироваться до указания на последний коэффициент, если вторичные преобразования были деактивированы для всего битового потока или его части; или после указания на вторичное преобразование, если вторичные преобразования были активированы для всего битового потока или его части.
[0147] На фиг. 6 проиллюстрирована процедура двойного преобразования в соответствии с одним из возможных подходов. Блок А изображает блок отсчетов остатка. Блок В изображает блок коэффициентов преобразования на базе первичного преобразования (после первичного преобразования в направлении кодирования и до первичного преобразования в направлении декодирования). Блок С изображает блок коэффициентов преобразования на базе вторичного преобразования (после вторичного преобразования в направлении кодирования и до вторичного преобразования в направлении декодирования). Вторичное преобразование обычно применяют к верхнему левому углу коэффициентов преобразования, который, как правило, соответствует низкочастотному содержимому входного сигнала. Область D в блоке С изображает такую дважды преобразованную область, или область с двойным преобразованием. При этом область S в блоке С изображает область, которая подверглась только одному этапу преобразования. Под первичным и вторичным преобразованиями здесь понимаются как прямые, так и инверсные варианты преобразований, в зависимости от направления обработки.
0
1
0
1
[0148] На фиг. 7 показана процедура двойного преобразования с неполным или частичным вторичным преобразованием. В этом случае вторичное преобразование, при его применении в прямом направлении, получает на вход коэффициенты первичного преобразования в областях, помеченных D, Z и Z, и выводит ненулевые значения в области D. Когда это вторичное преобразование применяют в инверсном направлении, коэффициенты из области D используют в качестве входных данных, при этом инверсное вторичное преобразование может выводить коэффициенты во всех областях, D, Z и Z, и таким образом, заполнять область первичного преобразования.
[0149] Вторичные преобразования применяют при кодировании остатка, например, в объединенной исследовательской модели JEM (зависящее от режима неразделимое вторичное преобразование (mode-dependent non-separable secondary transform, MDNSST)), описанной в документе JVET-G1001 «Описание алгоритма тестовой объединенной исследовательской модели 7 (JEM 7)» ("Algorithm Description of Joint Exploration Test Model 7 (JEM 7)"), Турин, Италия, июль 2017 года, и в эталонной реализации VTM проекта стандарта (низкочастотное неразделимое преобразование (Low Frequency Non-Separable Transform, LFNST), описанной в документе JVET-N1001 «Универсальное видеокодирование (проект версии 5)» ("Versatile Video Coding (Draft 5)"), Женева, Швейцария, апрель 2019 года.
[0150] В этих случаях вторичные преобразования применяют либо внутри низкочастотной области размером 4×4 или 8×8 после первичного преобразования в кодере, и аналогично, перед первичным преобразованием в декодере. В обоих случаях окончательный набор коэффициентов преобразования состоит из низкочастотных коэффициентов, которые были преобразованы дважды, и высокочастотных коэффициентов, которые были преобразованы с помощью одного преобразования. Подобный выбор может не быть идеальным для всех возможных сценарием.
[0151] Предложенные способы и соответствующие варианты осуществления настоящего изобретения могут быть реализованы различными методами. Например, описанный выше порядок операций может быть изменен, или операции могут чередоваться различным образом. Также на различных этапах обработки могут применяться дополнительные операции. Например, может выполняться дополнительная фильтрация, масштабирование, отображение или иная обработка, применяемая к окончательному или промежуточному результату описанных операций. Окончательные или промежуточные результаты операций, описанных выше, могут также комбинироваться с результатами других операций.
[0152] На фиг. 11 проиллюстрирована блок-схема видеодекодера, подходящего для применения вариантов осуществления настоящего изобретения. На фиг. 11 показана структура двухуровневого декодера, однако нужно понимать, что те же операции декодирования могут аналогичным образом применяться в одноуровневом декодере.
-1
-1
-1
[0153] Видеодекодер 550 включает первую секцию 552 декодера для базового уровня и вторую секцию 554 декодера для предсказываемого уровня. Блок 556 иллюстрирует демультиплексор, предназначенный для предоставления информации об изображениях базового уровня в первую секцию 552 декодера, а также для предоставления информации об изображениях предсказываемого уровня во вторую секцию 554 декодера. P'n обозначены предсказанные представления блока пикселей изображения. D'n обозначены восстановленные сигналы ошибки предсказания. Блоки 704, 804 иллюстрируют предварительно восстановленные изображения (I'n). R'n обозначено окончательное восстановленное изображение. Блоками 703, 803 проиллюстрированное обратное преобразование (Т). Блоками 702, 802 проиллюстрировано обратное квантование (Q). Блоками 701, 801 проиллюстрировано энтропийное декодирование (Е). Блоками 705, 805 проиллюстрирована память опорных кадров (reference frame memory, RFM). Блоками 706, 806 проиллюстрировано предсказание (P) (либо внутреннее, либо внешнее предсказание). Блоками 707, 807 проиллюстрирована фильтрация (F). Блоки 708, 808 могут использоваться для комбинирования декодированной информации ошибки предсказания с предсказанными изображениями базового или предсказываемого уровня, в результате чего получают предварительно восстановленные изображения (I'n). Предварительно восстановленные и прошедшие фильтрацию изображения базового уровня могут выводиться (709) из первой секции 552 декодера, а предварительно восстановленные и прошедшие фильтрацию изображения предсказываемого ракурса могут выводиться (809) из второй секции 554 декодера.
[0154] Здесь под декодером понимают любой функциональный блок, способный выполнять операции декодирования, например, это может быть проигрыватель, приемник, шлюз, демультиплексор и/или декодер.
[0155] В соответствии с еще одним из аспектов настоящего изобретения предложено устройство, включающее: по меньшей мере один процессор и по меньшей мере одну память, при этом в упомянутой по меньшей мере одной памяти хранят код, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает выполнение устройством по меньшей мере следующего: декодирование набора коэффициентов преобразования, связанного с блоком преобразования; определение, применяют ли двойное преобразование к упомянутому блоку преобразования, и если это так; выполнение первого преобразования над набором декодированных коэффициентов преобразования и формирование первого набора выходных значений; выполнение второго преобразования с использованием упомянутого первого набора выходных значений в качестве входных данных для упомянутого второго преобразования и формирование второго набора выходных значений; и использование второго набора выходных значений в качестве выходных данных двойного преобразования.
[0156] Упомянутое устройство также включает код, хранимый в упомянутой по меньшей мере одной памяти, который при исполнении упомянутым по меньшей мере одним процессором обеспечивает также выполнение этим устройством одного или более из вариантов осуществления настоящего изобретения, рассмотренных в данном документе.
[0157] Фиг. 12 является графическим представлением типовой системы мультимедийной связи, в которой могут быть реализованы различные варианты осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 8, источник 1510 данных предоставляет исходный сигнал в аналоговом, несжатом цифровом или сжатом цифровом формате, или в любой комбинации из этих форматов. Кодер 1520 может иметь в своем составе средства предварительной обработки, например, средства преобразования формата данных и/или средства фильтрации исходного сигнала, или может иметь соединение с такими средствами. Кодер 1520 кодирует исходный сигнал в кодированный битовый поток медиаданных. Следует отметить, что кодируемый битовый поток может приниматься, напрямую или опосредованно, от удаленного устройства, расположенного в сети практически любого типа. Также битовый поток может приниматься от локального аппаратного или программного обеспечения. Кодер 1520 может быть способен кодировать более одного типа медиаданных, например, аудио- и видеоданные, или могут требоваться более одного кодера 1520 для кодирования различных типов исходного сигнала. Кодер 1520 может также получать входные данные, полученные при помощи синтеза, такие как графику или текст, или может быть способен формировать кодированные битовые потоки синтезированных медиаданных. Ниже, для простоты описания, будет рассмотрена обработка только одного кодированного битового потока, содержащего однотипные мультимедийные данные. Однако нужно отметить, что обычно сервисы вещания реального времени включают несколько потоков (как правило, по меньшей мере один аудиопоток, видеопоток и текстовый поток субтитров). Также, нужно отметить, что система может включать множество кодеров, однако на фиг. 8, для простоты описания, без потери общности, показан только один кодер 1520. Описание и примеры в настоящем документы описывают именно процедуру кодирования, однако при этом специалисты в данной области техники должны понимать, что те же самые принципы и идеи применимы и для соответствующей процедуры декодирования, и наоборот.
[0158] Кодированный битовый поток медиаданных может быть передан в хранилище 1530. Хранилище 1530 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока медиаданных. Формат кодированного битового потока медиаданных в хранилище 1530 может быть элементарным автономным форматом битового потока, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл, или кодированные медиаданные могут быть инкапсулированы в формат сегмента (Segment), подходящего для DASH или аналогичной системы потоковой передачи), и храниться в виде последовательности сегментов. Если один или более битовых потоков медиаданных инкапсулируют в контейнерный файл, может применяться формирователь файлов (не показан на чертеже) для сохранения одного или более битовых потоков медиаданных в файл и для формирования метаданных формата файла, которые также сохраняют в файл. Кодер 1520 и/или хранилище 1530 могут включать формирователь файлов, или же формирователь файлов может быть функционально связан кодером 1520 и/или хранилищем 1530. Некоторые системы работают «на лету», то есть не используют память и передают кодированный битовый поток медиаданных из кодера 1520 непосредственно в передатчик 1540. Затем кодированный битовый поток медиаданных передают, когда это необходимо, в передатчик 1540, также именуемый сервером. Формат, используемый при передаче, может быть элементарным автономным форматом битового потока, пакетным форматом потока, форматом сегментов (Segment), подходящих для DASH или аналогичной системы потоковой передачи, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл. Кодер 1520, хранилище 1530 и передатчик 1540 могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств. Кодер 1520 и сервер 1540 могут работать с данными реального времени, и в этом случае кодированный битовый поток медиаданных, как правило, не хранят на постоянной основе, а буферизуют в течение небольших промежутков времени в кодере 1520 видеоданных и/или на сервере 230 для сглаживания колебаний задержек на обработку, задержек на передачу и битрейта кодированных медиаданных.
[0159] Сервер 1540 передает кодированный битовый поток медиаданных с использованием стека протоколов связи. Стек может включать, без ограничения перечисленным, одно или более из следующего: протокол передачи в реальном времени (RTP), протокол пользовательских датаграмм (UDP), протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP), протокол управления передачей (Transmission Control Protocol, TCP) и протокол Интернета (IP). Когда стек протоколов связи является пакетным, сервер 1540 инкапсулирует кодированный битовый поток медиаданных в пакеты. Например, когда используется протокол RTP, сервер 1540 инкапсулирует кодированный битовый поток медиаданных в пакеты RTP согласно формату полезной нагрузки протокола RTP. Как правило, каждый тип медиаданных имеет отдельный формат полезной нагрузки RTP. Следует еще раз отметить, что система может содержать более одного сервера 1540, но для простоты в последующем описании рассмотрен только один сервер 1540.
[0160] Если мультимедийные данные инкапсулированы в контейнерный файл для хранилища 1530 или для ввода данных в передатчик 1540, передатчик 1540 может иметь в своем составе «анализатор передаваемого файла» (не показан на чертеже) или может быть функционально связан с подобным элементом. В частности, если контейнерный файл сам по себе не передают, но по меньшей мере один содержащийся в нем кодированный битовый поток медиаданных инкапсулируют для передачи по протоколу связи, анализатор передаваемого файла находит соответствующие фрагменты кодированного битового потока медиаданных, подлежащие передаче по протоколу связи. Анализатор передаваемого файла может также быть полезен при создании корректного формата для протокола связи, например, заголовков и полезной нагрузки пакетов. Мультимедийный контейнерный файл может содержать инструкции по инкапсуляции, такие как треки указаний в ISOBMFF, используемые для инкапсуляции по меньшей мере одного кодированного битового потока медиаданных в протокол связи.
[0161] Сервер 1540, опционально, может быть соединен со шлюзом 1550 по сети связи, которая может представлять собой, например, комбинацию из CDN, Интернета и/или одной или более сетей доступа. В дополнение или альтернативно, шлюз может называться промежуточным узлом. В случае DASH шлюз может быть пограничным сервером (сети CDN) или веб-прокси-сервером. Следует отметить, что в общем случае система может включать любое количество шлюзов или аналогичных элементов, однако для простоты в приведенном ниже описании рассмотрен только один шлюз 1550. Шлюз 1550 может выполнять функции различных типов, например, трансляцию потока пакетов, соответствующую одному стеку протоколов связи, в другой стек протоколов связи, слияние и разветвление потоков данных и манипуляцию потоками данных согласно возможностям нисходящей линии связи и/или приемника, например, управление битовой скоростью передачи данных перенаправляемого потока согласно превалирующим сетевым условиям в нисходящей линии связи. Шлюз 1550 в различных вариантах осуществления настоящего изобретения может быть серверным объектом.
[0162] Система включает один или более приемников 1560, которые, в общем случае, способны принимать, демодулировать и/или декапсулировать переданный сигнал с получением кодированного битового потока мультимедийных данных. Кодированный битовый поток медиаданных может быть передан в записывающее хранилище 1570. Записывающее хранилище 1570 может включать любой тип запоминающего устройства большой емкости для хранения кодированного битового потока медиаданных. Записывающие хранилище 1570 может, дополнительно или альтернативно, включать вычислительную память, например, память с произвольным доступом. Формат кодированного битового потока медиаданных в записывающем хранилище 1570 может быть элементарным автономны форматом битового потока, или один или более кодированных битовых потоков медиаданных могут быть инкапсулированы в контейнерный файл. Если имеются несколько кодированных битовых потоков медиаданных, например, аудиопоток и видеопоток, связанные друг с другом, то, как правило, применяют контейнерный файл, и при этом приемник 1560 содержит формирователь контейнерного файла (или связан с подобным формирователем), формирующий контейнерный файл на основе входных потоков. Некоторые системы работают «на лету», то есть передают кодированный битовый поток медиаданных из приемника 1560 непосредственно в декодер 1580, без использования записывающего хранилища 1570. В некоторых системах в записывающем хранилище 1570 хранят только последнюю по времени часть записанного потока, например, последний 10-минутный фрагмент записанного потока, тогда как все ранее записанные данные удаляют из записывающего хранилища 1570.
[0163] Кодированный битовый поток медиаданных из записывающего хранилища 1570 может быть передан в декодер 1580. Если имеются несколько кодированных битовых потоков медиаданных, например, аудиопоток и видеопоток, связанные друг с другом и инкапсулированные в контейнерный файл, или один битовый поток, который инкапсулирован в контейнерный файл, например, для более простого доступа, то применяют анализатор файлов (не показан на чертеже) для декапсуляции всех кодированных битовых потоков медиаданных из контейнерного файла. Записывающее хранилище 1570 или декодер 1580 могут иметь анализатор файлов в своем составе, или анализатор файлов может быть связан с записывающим хранилищем 1570, или с декодером 1580. Также, нужно отметить, что система может включать множество декодеров, однако в данном документе, для простоты описания, без потери общности, показан только один кодер 1570.
[0164] Кодированный битовый поток медиаданных может далее обрабатываться декодером 1570, на выходе которого получают один или более несжатых потоков медиаданных. Наконец, рендерер 1590 может воспроизводить несжатые потоки медиаданных, например, с помощью громкоговорителя или дисплея. Приемник 1560, записывающее хранилище 1570, декодер 1570 и рендерер 1590 могут располагаться в одном и том же физическом устройстве, или же они могут входить в состав отдельных устройств.
[0165] Передатчик 1540 и/или шлюз 1550 могут быть сконфигурированы для выполнения переключения между различными репрезентациями, например, для переключения между различными портами просмотра 360-градусного видеоконтента, переключения ракурсов, сшивки ракурсов, адаптации битрейта и/или быстрого запуска, и/или передатчик и/или шлюз 1550 могут быть сконфигурирован для выбора передаваемых репрезентаций. Переключение между различными репрезентациями может выполняться по множеству различных причин, например, в ответ на запрос от приемника 1560 или в зависимости от превалирующих условий в сети, по которой передают битовый поток, к примеру, ее пропускной способности. Другими словами, переключение между репрезентациями может быть инициировано приемником 1560. Запросом от приемника может быть, например, запрос сегмента или подсегмента из другой репрезентации, отличающейся от предыдущей, запрос на изменение передаваемых масштабируемых уровней и/или подуровней, или переключение на устройство воспроизведения, которое имеет отличающиеся, по сравнению с предыдущим, возможности. Запросом сегмента может быть запрос GET протокола HTTP. Запросом подсегмента может быть запрос GET протокола HTTP с некоторым байтовым диапазоном. В дополнение или альтернативно, коррекция битрейта или адаптация битрейта может применяться, например, для обеспечения так называемого быстрого запуска в сервисах потоковой передачи данных, где битрейт передаваемого потока ниже, чем битрейт канала после запуска или произвольного доступа к потоку, что позволяет мгновенно запустить воспроизведение и обеспечить лучший уровень заполнения буфера, допускающего случайные задержки и/или повторные передачи пакетов. Адаптация битрейта может включать операции переключения между различными репрезентациями или уровнями с повышением качества или переключения между различными репрезентациями или уровнями с понижением качества, выполняемые в различном порядке.
[0166] Декодер 1540 может быть сконфигурирован для выполнения переключения между различными репрезентациями, например, для переключения между различными портами просмотра 360-градусного видеоконтента, переключения ракурсов, сшивки ракурсов, адаптации битрейта и/или быстрого запуска, и/или декодер 1580 могут быть сконфигурирован для выбора передаваемых репрезентаций. Переключение между различными репрезентациями может выполняться по множеству различных причин, например, для ускорения операции декодирования или для адаптации передаваемого битового потока, например, по битрейту, в зависимости от превалирующих условий в сети, по которой передают битовый поток, к примеру, ее пропускной способности. Повышение быстродействия операции декодирования может быть необходимо, например, если устройство, в состав которого входит декодер 1580, является многозадачным, и использует вычислительные ресурсы для других целей, а не только для декодирования битового потока видеоданных. В другом примере повышение быстродействия операции декодирования может быть необходимо, когда воспроизведение видеоданных выполняют с увеличенной скоростью (по сравнению с нормальной скоростью воспроизведения), например, в два или три раза быстрее, чем обычная скорость воспроизведения.
[0167] Выше часть вариантов осуществления настоящего изобретения была описана на примере стандарта HEVC и/или с использованием соответствующей терминологии. Нужно понимать, что варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с любым видеокодерами и/или видеодекодерами.
[0168] В приведенном выше описании, там, где примеры осуществления настоящего изобретения были описаны со ссылками на кодер, нужно понимать, что результирующий поток и декодер также могут включать соответствующие элементы. Аналогично, там, где примеры осуществления настоящего изобретения были описаны со ссылками на декодер, нужно понимать, что кодер может иметь структуру и/или компьютерную программу для формирования битового потока, декодируемого декодером. К примеру, часть вариантов осуществления настоящего изобретения была описана в связи с формированием пакета предсказания как части кодирования. Варианты осуществления настоящего изобретения могут быть аналогичным образом реализованы с формированием блока предсказания как части декодирования, с той разницей, что параметры кодирования, такие как горизонтальное смещение и вертикальное смещение, декодируют из битового потока, а не определяются кодером.
[0169] В рассмотренных выше вариантах осуществления настоящего изобретения кодек описан на примере отдельных устройств кодирования и декодирования для упрощения понимания применяемых процедур. Однако нужно понимать, что устройство, структуры и операции могут быть реализованы в виде единого устройства/структуры/операции кодирования-декодирования. Также допускается, что кодер и декодер могут совместно использовать часть общих элементов, или что всех элементы могут быть общими.
[0170] Рассмотренные выше примеры описывают работу вариантов осуществления настоящего изобретения в кодеке электронного устройства, однако нужно понимать, что настоящее изобретение, определенное приложенной формулой изобретения, может быть реализовано как часть любого видеокодека. Так, например, варианты осуществления настоящего изобретения могут быть реализованы в видеокодеке, в котором видеокодирование может быть реализовано по фиксированным или проводным каналам связи.
[0171] Соответственно, пользовательское оборудование может включать в свой состав видеокодек, например, аналогичный рассмотренным в приведенном выше описании настоящего изобретения. Нужно понимать, что выражение «пользовательское оборудование» используется как охватывающие любые подходящие типы беспроводного пользовательского оборудования, например, мобильные телефоны, портативные устройства обработки данных или портативные веб-браузеры.
[0172] При этом элементы наземной сети мобильной связи общего пользования (public land mobile network, PLMN) также могут включать видеокодеки в соответствии с предшествующим описанием.
[0173] В общем случае различные варианты осуществления настоящего изобретения могут быть реализованы в виде аппаратного обеспечения или схем специального назначения, программного обеспечения, логики или какой-либо их комбинации. К примеру, некоторые из аспектов могут быть реализованы в виде аппаратного обеспечения, тогда как другие аспекты могут быть реализованы в виде микропрограммного или программного обеспечения, которое может исполняться контроллером, микропроцессором или иным вычислительным устройством, без ограничения настоящего изобретения перечисленным. Различные аспекты настоящего изобретения допускают иллюстрацию и описание в виде блок-схем, блок-схем алгоритмов или с помощью некоторых других наглядных представлений, но при этом нужно понимать, что блоки, устройства, системы, методы или способы, описанные в настоящем документе, могут быть реализованы, в качестве неограничивающих примеров, в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, схем или логики специального назначения, аппаратного обеспечения или контроллера общего назначения, или же иных вычислительных устройств, или некоторой их комбинации.
[0174] Варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения, исполняемого процессором данных мобильного устройства, например, процессорным элементом, или с помощью аппаратного обеспечения, или с помощью комбинации программного и аппаратного обеспечения. Также в этом отношении следует отметить, что любые блоки последовательностей логических операций, проиллюстрированные на чертежах, могут представлять собой шаги программы или взаимосвязанные логические схемы, блоки и функции, или комбинацию программных шагов и логических схем, блоков и функций. Программное обеспечение может храниться на таких физических носителях, как микросхемы памяти или блоки памяти, реализованные внутри процессора, магнитные носители, например, жесткий диск или гибкий диск, и оптические носители, например, DVD и их варианты для хранения данных, CD.
[0175] Память может относиться к любому типу, соответствующему локальному техническому окружению, при этом она может быть реализована с использованием любой подходящей технологии хранения данных, например, запоминающие устройства на полупроводниках, магнитные запоминающие устройства и системы, оптические запоминающие устройства и системы, несъемная или съемная память. Процессоры данных могут относиться к любому типу, соответствующему локальному техническому окружению и могут включать одно или более из следующего: компьютеры общего назначения, компьютеры специального назначения, микропроцессоры, цифровые сигнальные процессоры (digital signal processor, DSP), процессоры на основе многоядерной архитектуры, в качестве неограничивающих примеров.
[0176] Варианты осуществления настоящего изобретения могут применяться на практике в различных компонентах, например, в модулях интегральных схем. Процесс разработки интегральных схем, в целом, в высокой степени автоматизирован. Существуют сложные и мощные программные инструменты для преобразования проектов логического уровня в конструкции полупроводниковых схем, готовые для вытравливания и формовки на полупроводниковой подложке.
[0177] Программы, подобные поставляемой фирмой Synopsys, Inc (Маунтин-Вью, Калифорния) или фирмой Cadence Design (Сан-Хосе, Калифорния), осуществляют автоматическую разводку проводников и позиционирование компонентов на полупроводниковом кристалле с использованием общепринятых правил разработки, а также с использованием библиотек заранее сохраненных модулей проектов. По завершении разработки полупроводниковой схемы результирующая конструкция, в стандартизированном электронном формате (например, Opus, GDSII и т.п.) может быть передана на полупроводниковое производство для изготовления микросхемы.
[0178] В предшествующем изложении с помощью иллюстративных и неограничивающих примеров было представлено полное и информативное описание одного из примеров осуществления настоящего изобретения. Однако в свете предшествующего описания, рассматриваемого в сочетании с приложенными чертежами, специалистам в соответствующих областях техники могут стать очевидны различные модификации и доработки. Тем не менее, любые такие или аналогичные им модификации концепции настоящего изобретения остаются в его объеме.