СКАНИРОВАНИЕ КОЭФФИЦИЕНТОВ ПРИ КОДИРОВАНИИ ВИДЕО
COEFFICIENT SCANNING IN VIDEO CODING

[0001] Данная заявка притязает на приоритет по предварительной заявке на патент США № 61/509,522, поданной 19 июля 2011 года, предварительной заявке на патент США № 61/509,926, поданной 20 июля 2011 года, предварительной заявке на патент США № 61/550,829, поданной 24 октября 2011 года, и предварительной заявке на патент США № 61/554,292, поданной 01 ноября 2011 года, содержимое каждой из которых полностью содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие сущности относится к кодированию видео, а более конкретно, к методикам для сканирования и кодирования коэффициентов преобразования, сформированных посредством процессов кодирования видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающих в себя цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференц-связи и т.п. Цифровые видеоустройства реализуют такие методики сжатия видео, как методики, описанные в стандартах, заданных посредством разрабатываемых в настоящее время стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов, для того, чтобы более эффективно передавать, принимать и сохранять цифровую видеоинформацию.
[0004] Методики сжатия видео включают в себя пространственное прогнозирование и/или временное прогнозирование для того, чтобы уменьшать или удалять избыточность, присущую видеопоследовательностям. Для кодирования видео на основе блоков видеоизображение или вырезка может быть сегментировано на блоки. Каждый блок может быть дополнительно сегментирован. Блоки во внутренне кодированном (I-) кадре или вырезке кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном изображении или вырезке. Блоки во взаимно кодированном (P- или B-) кадре или вырезке последовательных макроблоков могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном изображении или вырезке либо временное прогнозирование относительно опорных выборок в других опорных изображениях. Пространственное или временное прогнозирование приводит в результате к прогнозному блоку для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между исходным блоком, который должен быть кодирован, и прогнозным блоком.
[0005] Взаимно кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих прогнозный блок, и остаточным данным, указывающим разность между кодированным блоком и прогнозным блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, первоначально размещаемые в двумерной матрице, могут быть сканированы в конкретном порядке для того, чтобы формировать одномерный вектор коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В общем, это раскрытие сущности описывает устройства и способы кодирования коэффициентов преобразования, ассоциированных с блоком остаточных видеоданных в процессе кодирования видео. В ходе кодирования блок коэффициентов преобразования может быть разделен на поднаборы, которые могут принимать форму множества субблоков. Субблоки затем могут быть сканированы и кодированы. Например, относительно видеокодера, двумерная матрица коэффициентов преобразования из субблоков может быть сканирована для того, чтобы формировать одномерную матрицу коэффициентов преобразования, которые затем кодируются. Относительно видеодекодера, одномерная матрица коэффициентов преобразования может быть принята и декодирована и затем использована для того, чтобы восстанавливать двумерные субблоки.
[0007] Методики этого раскрытия сущности, в общем, относятся к сканированию и кодированию субблоков коэффициентов преобразования. Например, как описано в данном документе, порядок сканирования коэффициентов может описывать порядок, в котором коэффициенты преобразования сканируются и кодируются в субблоках блока остаточных данных. Порядок сканирования субблоков может описывать порядок, в котором сканируются и кодируются сами субблоки. Согласно аспектам этого раскрытия сущности, порядок сканирования коэффициентов может иметь идентичную ориентацию с порядком сканирования субблоков, т.е. с порядком, в котором сканируются субблоки, чтобы затем сканировать коэффициенты в пределах каждого субблока, в блоке остаточных данных. Иными словами, согласно аспектам этого раскрытия сущности, шаблон/направление/порядок сканирования для порядка сканирования субблоков может совпадать с шаблоном сканирования для порядка сканирования коэффициентов в пределах каждого субблока. Дополнительно или альтернативно, методики этого раскрытия сущности включают в себя адаптивное определение порядка сканирования коэффициентов и/или порядка сканирования субблоков на основе множества критериев. Таким образом, в некоторых примерах, порядок сканирования коэффициентов может отличаться от порядка сканирования субблоков.
[0008] В примере, аспекты этого раскрытия сущности относятся к способу декодирования коэффициентов преобразования в процессе декодирования видео, содержащему декодирование одномерной матрицы коэффициентов преобразования; и выполнение сканирования для одномерной матрицы коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать блок коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый субблок из множества субблоков в блоке, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования, соответствующие каждому субблоку из множества субблоков.
[0009] В другом примере, аспекты этого раскрытия сущности относятся к устройству для декодирования коэффициентов преобразования в процессе декодирования видео, причем устройство содержит один или более процессоров, сконфигурированных с возможностью декодировать одномерную матрицу коэффициентов преобразования; и выполнять сканирование для одномерной матрицы коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать блок коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый субблок из множества субблоков в блоке, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования, соответствующие каждому субблоку из множества субблоков.
[0010] В другом примере, аспекты этого раскрытия сущности относятся к устройству для декодирования коэффициентов преобразования в процессе декодирования видео, причем устройство содержит средство для декодирования одномерной матрицы коэффициентов преобразования; и средство для выполнения сканирования для одномерной матрицы коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать блок коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый субблок из множества субблоков в блоке, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования, соответствующие каждому субблоку из множества субблоков.
[0011] В другом примере, аспекты этого раскрытия сущности относятся к компьютерно-читаемому носителю хранения данных, содержащему сохраненные на нем инструкции, которые при выполнении инструктируют одному или более процессоров декодировать одномерную матрицу коэффициентов преобразования; и выполнять сканирование для одномерной матрицы коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать блок коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый субблок из множества субблоков в блоке, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования, соответствующие каждому субблоку из множества субблоков.
[0012] В другом примере, аспекты этого раскрытия сущности относятся к способу кодирования коэффициентов преобразования в процессе кодирования видео, содержащему разделение блока коэффициентов преобразования на множество субблоков; выполнение сканирования для блока коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать одномерную матрицу коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый из множества субблоков, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования в пределах каждого из множества субблоков; и кодирование одномерной матрицы коэффициентов преобразования.
[0013] В другом примере, аспекты этого раскрытия сущности относятся к устройству для кодирования коэффициентов преобразования в процессе кодирования, причем устройство содержит один или более процессоров, сконфигурированных с возможностью разделять блок коэффициентов преобразования на множество субблоков; выполнять сканирование для блока коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать одномерную матрицу коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый из множества субблоков, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования в пределах каждого из множества субблоков; и кодировать одномерную матрицу коэффициентов преобразования.
[0014] В другом примере, аспекты этого раскрытия сущности относятся к устройству для кодирования коэффициентов преобразования в процессе кодирования видео, причем устройство содержит средство для разделения блока коэффициентов преобразования на множество субблоков; средство для выполнения сканирования для блока коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать одномерную матрицу коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый из множества субблоков, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования в пределах каждого из множества субблоков; и средство для кодирования одномерной матрицы коэффициентов преобразования.
[0015] В другом примере, аспекты этого раскрытия сущности относятся к компьютерно-читаемому носителю хранения данных, содержащему сохраненные на нем инструкции, которые при выполнении инструктируют одному или более процессоров разделять блок коэффициентов преобразования на множество субблоков; выполнять сканирование для блока коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать одномерную матрицу коэффициентов преобразования, при этом порядок сканирования субблоков содержит порядок, в котором сканируется каждый из множества субблоков, и при этом порядок сканирования коэффициентов содержит порядок, в котором сканируются коэффициенты преобразования в пределах каждого из множества субблоков; и кодировать одномерную матрицу коэффициентов преобразования.
[0016] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0017] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования видео, которая может быть сконфигурирована с возможностью осуществлять методики этого раскрытия сущности.
[0018] Фиг. 2 является блок-схемой, иллюстрирующей примерный видеокодер, который может быть сконфигурирован с возможностью осуществлять методики этого раскрытия сущности.
[0019] Фиг. 3 является блок-схемой, иллюстрирующей примерный видеодекодер, который может быть сконфигурирован с возможностью осуществлять методики этого раскрытия сущности.
[0020] Фиг. 4 является концептуальной схемой, иллюстрирующей процесс кодирования на основе карты значимости.
[0021] Фиг. 5A является концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0022] Фиг. 5B является другой концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0023] Фиг. 5C является другой концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0024] Фиг. 5D является другой концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0025] Фиг. 5E является другой концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0026] Фиг. 5F является другой концептуальной схемой, иллюстрирующей примерные шаблоны и направления сканирования для кодирования коэффициентов преобразования.
[0027] Фиг. 6 является концептуальной схемой, иллюстрирующей пример контекстно-адаптивного декодирования коэффициентов преобразования блока видеоданных.
[0028] Фиг. 7 является концептуальной схемой, иллюстрирующей пример разделения блока коэффициентов преобразования на субблоки.
[0029] Фиг. 8A является концептуальной схемой, иллюстрирующей примерный зигзагообразный порядок сканирования субблоков для блока коэффициентов преобразования, разделенных на субблоки.
[0030] Фиг. 8B является концептуальной схемой, иллюстрирующей примерный горизонтальный порядок сканирования субблоков для блока коэффициентов преобразования, разделенных на субблоки.
[0031] Фиг. 8C является концептуальной схемой, иллюстрирующей примерный вертикальный порядок сканирования субблоков для блока коэффициентов преобразования, разделенных на субблоки.
[0032] Фиг. 8D является концептуальной схемой, иллюстрирующей примерный диагональный порядок сканирования субблоков для блока коэффициентов преобразования, разделенных на субблоки.
[0033] Фиг. 8E является концептуальной схемой, иллюстрирующей примерный диагональный порядок сканирования субблоков для блока коэффициентов преобразования, разделенных на субблоки, который является обратным порядком по отношению к сканированию, показанному на фиг. 8D.
[0034] Фиг. 9A и 9B иллюстрируют примерный диагональный порядок сканирования коэффициентов для коэффициентов преобразования субблоков и диагональный порядок сканирования субблоков для субблоков.
[0035] Фиг. 10A и 10B иллюстрируют примерный обратный диагональный порядок сканирования коэффициентов для коэффициентов преобразования субблоков и обратный диагональный порядок сканирования субблоков для субблоков относительно сканирований, показанных на фиг. 9A и 9B.
[0036] Фиг. 11A и 11B иллюстрируют примерный обратный вертикальный порядок сканирования коэффициентов для коэффициентов преобразования субблоков и обратный вертикальный порядок сканирования субблоков для субблоков.
[0037] Фиг. 12A и 12B иллюстрируют примерный обратный горизонтальный порядок сканирования коэффициентов для коэффициентов преобразования субблоков и обратный горизонтальный порядок сканирования субблоков для субблоков.
[0038] Фиг. 13 является концептуальной схемой, иллюстрирующей пример контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных.
[0039] Фиг. 14 является концептуальной схемой, иллюстрирующей другой пример контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных.
[0040] Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей примерный процесс кодирования видео согласно методикам этого раскрытия сущности.
[0041] Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей примерный процесс декодирования видео согласно методикам этого раскрытия сущности.
[0042] Фиг. 17 является блок-схемой последовательности операций, иллюстрирующей примерный способ контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0043] Устройство кодирования видео может сжимать видеоданные посредством использования преимущества пространственной и временной избыточности. Например, видеокодер может использовать преимущество пространственной избыточности посредством кодирования блока видеоданных относительно соседних ранее кодированных блоков. Аналогично, видеокодер может использовать преимущество временной избыточности посредством кодирования блока видеоданных относительно видеоданных ранее кодированных изображений, также называемых "изображениями". В частности, видеокодер может прогнозировать текущий блок из данных пространственного соседнего узла или из данных ранее кодированного изображения. Видеокодер затем может вычислять остаток для блока в качестве разности между фактическими пиксельными значениями для блока и прогнозными пиксельными значениями для блока. Иными словами, остаток для блока может включать в себя попиксельные значения разностей в пиксельной (или пространственной) области.
[0044] Соответственно, для того чтобы кодировать блок (например, единицу прогнозирования видеоданных), сначала извлекается предиктор для блока. Предиктор, также называемый "прогнозным блоком", может извлекаться через внутреннее (I-) прогнозирование (т.е. пространственное прогнозирование) либо взаимное (P- или B-) прогнозирование (т.е. временное прогнозирование). Следовательно, некоторые единицы прогнозирования могут быть внутренне кодированы (I-) с использованием пространственного прогнозирования относительно опорных выборок в соседних опорных блоках в идентичном изображении (или вырезке), а другие единицы прогнозирования могут быть однонаправленно взаимно кодированы (P-) или двунаправленно взаимно кодированы (B-) относительно опорных блоков опорных выборок в других ранее кодированных изображениях (или вырезках). Опорные выборки могут включать в себя фактические пикселы в опорных блоках и/или синтезированные опорные выборки, сформированные, например, посредством интерполяции. В каждом случае, опорные выборки могут быть использованы для того, чтобы формировать прогнозный блок для блока, который должен быть кодирован.
[0045] Для того чтобы дополнительно сжимать остаточное значение блока, видеокодер может преобразовывать остаточные значения в набор коэффициентов преобразования, которые уплотняют максимально возможно объем данных (также называемых "энергией") в минимально возможное число коэффициентов. Преобразование преобразует остаточные значения из пиксельных уровней, например, уровней сигнала яркости и/или сигнала цветности, в пространственной области в коэффициенты преобразования в области преобразования, например, с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лоэва (K-L) или другого преобразования. Коэффициенты преобразования соответствуют двумерной матрице коэффициентов преобразования, которая обычно имеет размер, идентичный размеру исходного блока. Другими словами, типично предусмотрено столько же коэффициентов преобразования, сколько пикселов в исходном блоке. Тем не менее, вследствие преобразования многие коэффициенты преобразования могут иметь значения, равные нулю.
[0046] Видеокодер затем может квантовать коэффициенты преобразования, чтобы дополнительно сжимать видеоданные. Квантование, в общем, заключает в себе преобразование значений в относительно большом диапазоне в значения в относительно небольшом диапазоне, в силу этого уменьшая объем данных, требуемых для того, чтобы представлять квантованные коэффициенты преобразования. Видеокодер может квантовать коэффициенты преобразования посредством применения параметра квантования (QP) согласно предварительно заданному алгоритму. После квантования некоторые коэффициенты преобразования могут иметь значения в нуль. Помимо этого, в определенных режимах кодирования видео, таких как режим пропуска преобразования, преобразование может отсутствовать, и квантование может применяться непосредственно к остатку прогнозирования.
[0047] Энтропийный кодер затем применяет энтропийное кодирование, к примеру, контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с сегментированием на интервалы вероятности (PIPE) и т.п., к квантованным коэффициентам преобразования. Для того, чтобы энтропийно кодировать блок квантованных коэффициентов преобразования, процесс сканирования обычно выполняется таким образом, что двумерная матрица квантованных коэффициентов преобразования в блоке перекомпонуется, согласно конкретному порядку сканирования, в упорядоченную, одномерную матрицу, т.е. в вектор, коэффициентов преобразования. Энтропийное кодирование применяется к вектору коэффициентов преобразования. Сканирование квантованных коэффициентов преобразования преобразует в последовательную форму двумерную матрицу коэффициентов преобразования для энтропийного кодера.
[0048] Согласно некоторым примерам, позиции значимых коэффициентов (т.е. ненулевых коэффициентов преобразования) в видеоблоке могут быть кодированы до значений коэффициентов преобразования, которые могут упоминаться в качестве "уровней" коэффициентов преобразования. Процесс кодирования местоположений значимых коэффициентов может упоминаться в качестве кодирования на основе карты значимости. Карта значимости включает в себя двумерную матрицу двоичных значений, которые указывают местоположения значимых коэффициентов.
[0049] Например, карта значимости для блока видеоданных может включать в себя двумерную матрицу единиц и нулей, при этом единицы указывают позиции значимых коэффициентов преобразования в блоке, а нули указывают позиции незначимых (с нулевым значением) коэффициентов преобразования в блоке. Единицы и нули могут упоминаться в качестве "флагов значимых коэффициентов". Дополнительно, в некоторых примерах, карта значимости может включать в себя другую двумерную матрицу единиц и нулей, при этом единицы указывают позицию последнего значимого коэффициента в блоке согласно порядку сканирования, ассоциированному с блоком, а нули указывают позиции всех других коэффициентов в блоке. В этом случае, единицы и нули упоминаются в качестве "флагов последних значимых коэффициентов". В других примерах, такие флаги последних значимых коэффициентов не используются. Наоборот, последний значимый коэффициент в блоке может быть кодирован первым перед отправкой остальной части карты значимости. В любом случае, кодирование на основе карты значимости для блока видеоданных может использовать значительный процент скорости передачи видеобитов, используемой для того, чтобы кодировать блок.
[0050] После того, как сканируется и кодируется карта значимости, видеокодер может сканировать и кодировать уровень каждого коэффициента преобразования. Например, видеокодер может преобразовывать абсолютное значение, т.е. уровень, каждого ненулевого коэффициента преобразования в двоичную форму. Таким образом, уровень каждого ненулевого коэффициента преобразования может "преобразовываться в двоичную форму", например, с использованием унарного или другого кода, чтобы формировать один или более битов или "элементов выборки" для того, чтобы представлять коэффициент преобразования. Помимо этого, может включаться определенное число других преобразованных в двоичную форму элементов синтаксиса для того, чтобы давать возможность видеодекодеру декодировать видеоданные.
[0051] В некоторых примерах, порядок сканирования карты значимости может отличаться от порядка сканирования уровней коэффициентов. В других примерах, порядок сканирования коэффициентов преобразования может быть согласован таким образом, что сканирование уровней коэффициентов является идентичным сканированию карты значимости, т.е. по направлению сканирования и шаблону сканирования. Помимо этого, как отмечено выше, сканирование для уровней коэффициентов и значимых коэффициентов может выполняться в обратном порядке, т.е. в качестве обратного сканирования, которое продолжается от последнего значимого коэффициента в блоке к первому коэффициенту (DC-компоненту) в блоке. Для того, чтобы упрощать обратное сканирование, видеокодер может идентифицировать последний значимый коэффициент до сканирования. После того, как последний значимый коэффициент в блоке идентифицируется, затем порядок обратного сканирования может применяться как для карты значимости, так и для уровней коэффициентов.
[0052] После сканирования определенное число нулевых коэффициентов типично группируется на одном конце одномерной матрицы, в зависимости от направления сканирования, вследствие уменьшенной энергии в верхних частотах и вследствие эффектов квантования, что может приводить к тому, что некоторые ненулевые коэффициенты становятся коэффициентами с нулевым значением после уменьшения битовой глубины. Эти характеристики распределения коэффициентов в преобразованной в последовательную форму одномерной матрице могут быть использованы в схеме энтропийного кодера для того, чтобы повышать эффективность кодирования. Другими словами, если ненулевые коэффициенты могут эффективно размещаться в одной части одномерной матрицы через некоторый надлежащий порядок сканирования, более высокая эффективность кодирования может ожидаться вследствие схемы множества энтропийных кодеров. Например, энтропийное кодирование может кодировать серии коэффициентов с нулевым значением, предоставляя более эффективные символы для кодирования.
[0053] В качестве примера, когда DCT применяется к коэффициентам преобразования, зачастую существует более высокая вероятность ненулевых коэффициентов к верхнему левому углу (т.е. в области низких частот) двумерной единицы преобразования. Соответственно, может повышаться эффективность энтропийного кодирования, если коэффициенты преобразования сканируются с началом в верхнем левом углу, что может повышать вероятность группировки ненулевых коэффициентов в относительном начале преобразованной в последовательную форму серии коэффициентов. Помимо этого, коэффициенты с нулевым значением могут группироваться к этому концу преобразованной в последовательную форму матрицы, что может повышать эффективность энтропийного кодирования.
[0054] Диагональный (или волновой) порядок сканирования приспосабливается для использования в сканировании квантованных коэффициентов преобразования в предложенном HEVC-стандарте. Через преобразование и квантование, как упомянуто выше, ненулевые коэффициенты преобразования могут быть расположены в низкочастотной области к верхней левой области блока для примера, в котором преобразование представляет собой DCT. Как результат, после процесса диагонального сканирования, который может проходить сначала по верхней левой области, ненулевые коэффициенты преобразования могут с большей вероятностью располагаться в передней части одномерной матрицы. Для процесса диагонального сканирования, который проходит сначала от нижней правой области, ненулевые коэффициенты преобразования обычно с большей вероятностью располагаются в задней части одномерной матрицы.
[0055] Хотя вышеприведенный пример ссылается на диагональное сканирование, чтобы достигать цели размещения более ненулевых коэффициентов на одном конце одномерной матрицы, другие порядки сканирования могут быть использованы в видеокодере (например, в видеокодере или в видеодекодере) для того, чтобы кодировать коэффициенты преобразования. В некоторых случаях, может быть эффективным диагональное сканирование. В других случаях, могут быть более эффективными другие типы сканирования, такие как зигзагообразное, вертикальное или горизонтальное сканирование. Конкретное сканирование, которое реализуется, может зависеть от различных критериев, таких как показатель искажения в зависимости от скорости передачи.
[0056] Различные порядки сканирования могут формироваться множеством способов. Один пример заключается в том, что для каждого блока коэффициентов преобразования "наилучший" порядок сканирования может выбираться из числа доступных порядков сканирования. Видеокодер затем может предоставлять индикатор в декодер, для каждого блока, индекс наилучшего порядка сканирования из набора порядков сканирования, обозначаемых посредством соответствующих индексов. Выбор наилучшего порядка сканирования может быть определен посредством применения нескольких порядков сканирования и выбора того, который является самым эффективным при размещении ненулевых коэффициентов около начала или конца одномерного вектора, за счет этого способствуя эффективному энтропийному кодированию.
[0057] В другом примере, порядок сканирования для текущего блока может быть определен на основе различных факторов, связанных с кодированием применимой единицы прогнозирования, таких как режим прогнозирования (I-, B-, P-), размер блока, преобразование или другие факторы. В некоторых случаях, поскольку идентичная информация, например режим прогнозирования, может логически выводиться на стороне кодера и декодера, может не возникать необходимости предоставлять индикатор относительно индекса порядка сканирования в декодер. Вместо этого, видеодекодер может сохранять конфигурационные данные, которые указывают надлежащий порядок сканирования с учетом сведений по режиму прогнозирования для блока и одного или более критериев, которые преобразуют режим прогнозирования в конкретный порядок сканирования.
[0058] Для того, чтобы дополнительно повышать эффективность кодирования, доступные порядки сканирования могут не быть постоянными все время. Вместо этого, может обеспечиваться некоторая адаптация, так что порядок сканирования адаптивно регулируется, например, на основе коэффициентов, которые уже кодируются. В общем, адаптация порядка сканирования может выполняться таким образом, что согласно выбранному порядку сканирования, нулевые и ненулевые коэффициенты с большей вероятностью группируются между собой.
[0059] В некоторых видеокодерах начальные доступные порядки сканирования могут быть в сверхрегулярной форме, к примеру, чисто горизонтальное, вертикальное, диагональное или зигзагообразное сканирование. Альтернативно, порядки сканирования могут извлекаться через процесс обучения и, следовательно, могут казаться в определенной степени случайными. Процесс обучения может заключать в себе применение различных порядков сканирования к блоку или последовательности блоков для того, чтобы идентифицировать порядок сканирования, который приводит к требуемым результатам, например, с точки зрения эффективного размещения ненулевых коэффициентов и коэффициентов с нулевым значением, как упомянуто выше.
[0060] Если порядок сканирования извлекается из процесса обучения, или если может выбираться множество различных порядков сканирования, конкретные порядки сканирования могут быть сохранены на стороне кодера и декодера. Объем данных, указывающий такие порядки сканирования, может быть относительно существенным. Например, для блока преобразования 32x32, один порядок сканирования может содержать 1024 позиции коэффициентов преобразования. Поскольку могут быть блоки различного размера, и для каждого размера блока преобразования может быть предусмотрено определенное число различных порядков сканирования, общий объем данных, который должен быть сохранен, не является пренебрежимо малым.
[0061] Напротив, регулярные порядки сканирования, таки как диагональный, горизонтальный, вертикальный или зигзагообразный порядок, могут не требовать пространства хранения или могут требовать минимального пространства хранения. Тем не менее, регулярные сканирования, такие как прямое горизонтальное или вертикальное сканирование, сканируют одну строку/столбец слева или сверху вправо или вниз до конца, а затем обратно влево или вверх для следующей строки/столбца. Этот вид "строгой" ориентации для порядка сканирования может не быть эффективным для больших блоков, поскольку может быть слабая корреляция между коэффициентами преобразования в конце одной строки/столбца и в начале следующей строки/столбца.
[0062] В некоторых примерах, чтобы повышать эффективность и/или упрощать реализацию, блок коэффициентов преобразования может быть разделен на поднаборы, которые могут принимать форму множества субблоков. Например, для программного или аппаратного видеокодера может быть сложным (к примеру, вычислительно неэффективным) реализовывать зигзагообразное или диагональное сканирование для больших блоков, таких как 32x32. Соответственно, после разделения блока на субблоки, субблоки затем могут быть сканированы и кодированы. Относительно видеокодера двумерная матрица коэффициентов преобразования из субблоков может быть сканирована для того, чтобы формировать одномерную матрицу коэффициентов преобразования, которые затем кодируются. Относительно видеодекодера, может быть принята и декодирована одномерная матрица коэффициентов преобразования, которые затем используются для того, чтобы восстанавливать двумерные субблоки.
[0063] Методики этого раскрытия сущности, в общем, относятся к сканированию и кодированию субблоков коэффициентов преобразования. Например, как описано в данном документе, порядок сканирования коэффициентов может описывать порядок, в котором коэффициенты преобразования сканируются и кодируются в субблоках. Порядок сканирования субблоков может описывать порядок, в котором сканируются и кодируются сами субблоки. Согласно аспектам этого раскрытия сущности, порядок сканирования коэффициентов может иметь идентичную ориентацию с порядком сканирования субблоков. Например, как описано в данном документе, ориентация сканирования может, в общем, означать направление, шаблон сканирования или общий порядок сканирования. Иными словами, зигзагообразный шаблон (например, как показано и описано относительно фиг. 5A) может упоминаться как имеющий зигзагообразную ориентацию. Помимо этого, сканирование, которое имеет диагональное направление (например, как показано и описано относительно фиг. 5D-5F), может упоминаться как имеющее диагональную ориентацию. Согласно аспектам этого раскрытия сущности, ориентация порядка сканирования субблоков может совпадать с ориентацией порядка сканирования коэффициентов.
[0064] Например, согласно аспектам этого раскрытия сущности, видеокодер может подразделять блок, который больше предварительно определенного размера субблока, на субблоки. В некоторых примерах, видеокодер может разделять блок на субблоки 4x4, хотя также может использоваться множество других размеров субблоков (например, 2x2, 8x8, 16x16 и т.п.). Если видеокодер использует идентичный размер субблока для всех блоков изображения (или вырезки), выгоды могут достигаться в аппаратной реализации вследствие равномерности размеров субблоков. Тем не менее, равномерный размер субблока необязателен для того, чтобы осуществлять методики этого раскрытия сущности.
[0065] После разделения блока коэффициентов преобразования на субблоки видеокодер может сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов, а также сканировать сами субблоки в порядке сканирования субблоков. Согласно аспектам этого раскрытия сущности, порядок сканирования коэффициентов и порядок сканирования субблоков могут иметь идентичную ориентацию (например, идентичный шаблон, направление или порядок сканирования). Иными словами, например, видеокодер может диагонально сканировать каждый из коэффициентов преобразования (например, включающих в себя значимость, знак, уровень и т.п.) субблоков в порядке сканирования коэффициентов. Видеокодер также может диагонально сканировать между субблоками в порядке сканирования субблоков. В качестве иллюстрации, порядок, в котором сканируются субблоки, может указывать, что первыми сканируются коэффициенты в субблоке, после этого вторыми сканируются коэффициенты во втором субблоке и т.д., тогда как порядок сканирования коэффициентов указывает порядок, в котором сканируются коэффициенты в данном субблоке.
[0066] В других примерах, согласно аспектам этого раскрытия сущности, порядок сканирования коэффициентов может отличаться от порядка сканирования субблоков. Иными словами, например, видеокодер может выполнять диагональный порядок сканирования субблоков и зигзагообразный порядок сканирования коэффициентов. Как подробнее описано ниже, видеокодер может адаптивно определять порядки сканирования субблоков и коэффициентов на основе, например, показателя искажения в зависимости от скорости передачи.
[0067] В некоторых примерах, видеокодер может выполнять сканирования в обратном порядке. Помимо этого, согласно некоторым аспектам, видеокодер может сканировать и кодировать субблоки последовательно. Иными словами, видеокодер может сканировать и кодировать коэффициенты преобразования текущего субблока в порядке сканирования коэффициентов перед переходом к следующему субблоку в порядке сканирования субблоков.
[0068] Аспекты этого раскрытия сущности также относятся к использованию адаптивного порядка сканирования субблоков для того, чтобы выполнять сканирование для энтропийного кодирования (например, сканирование на основе карты значимости или сканирование на уровне коэффициентов в CABAC). В одном примере, адаптивный порядок сканирования субблоков может быть использован вместо строгих горизонтальных и вертикальных порядков сканирования, как описано выше, для относительно больших размеров блоков (например, размеров блоков 32x32 или 16x16). Тем не менее, следующие методики могут использоваться для блока любого размера, который может подразделяться. Как отмечено выше, адаптивные сканирования могут помогать группировать ненулевые коэффициенты преобразования блока.
[0069] В некоторых примерах, разделение блока коэффициентов преобразования на субблоки может создавать зависимость от контекста в субблоках (например, при энтропийном кодировании с использованием контекста). Например, при сканировании в субблоках с использованием диагонального сканирования, контекст для верхнего левого коэффициента в субблоке может зависеть от предыдущего обрабатываемого коэффициента (например, коэффициента преобразования, размещенного ниже текущего коэффициента преобразования). Зависимость от контекста может накладывать нежелательную задержку при энтропийном кодировании. Для того, чтобы не допускать этой зависимости и за счет этого повышать параллелизацию, аспекты этого раскрытия сущности относятся к модификации позиций, из которых может извлекаться контекст, что может упоминаться в качестве окружения поддержки контекста. Например, методики этого раскрытия сущности включают в себя определение окружения поддержки контекста, которое удаляет зависимость двух последовательных коэффициентов, давая возможность видеокодеру параллельно обрабатывать два элемента выборки. В некоторых примерах, удаление зависимости может быть увеличено с двух до трех, четырех или более последовательных коэффициентов. В этих случаях, окружение поддержки контекста в каждой позиции может быть модифицировано, чтобы удалять зависимости от контекста в окружении с учетом конкретного порядка сканирования.
[0070] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может быть сконфигурирована с возможностью использовать методики для кодирования коэффициентов преобразования в соответствии с примерами этого раскрытия сущности. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 14 через канал 16 связи. Кодированное видео также может быть сохранено на носителе 34 хранения данных или файловом сервере 36, и к нему может осуществляться доступ посредством целевого устройства 14 требуемым образом. Исходное устройство 12 и целевое устройство 14 могут содержать любое из широкого спектра устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, так называемые смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр и т.п. Во многих случаях, такие устройства могут иметь поддержку беспроводной связи.
[0071] Следовательно, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводных и проводных каналов, подходящих для передачи кодированных видеоданных, к примеру, радиочастотный (RF) спектр либо одну или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 16 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 14, включающих в себя любую надлежащую комбинацию проводных или беспроводных сред. Канал 16 связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть применимым для того, чтобы упрощать передачу из исходного устройства 12 в целевое устройство 14.
[0072] Методики для кодирования коэффициентов преобразования, в соответствии с примерами этого раскрытия сущности, могут применяться к кодированию видео для поддержки любых из множества мультимедийных приложений, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или к другим вариантам применения. В некоторых примерах, система 10 может быть сконфигурирована с возможностью поддерживать одностороннюю или двустороннюю передачу видео, чтобы поддерживать такие приложения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[0073] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор 22 и передающее устройство 24. В исходном устройстве 12 видеоисточник 18 может включать в себя такой источник, как устройство видеозахвата, к примеру, видеокамера, видеоархив, содержащий ранее захваченное видео, интерфейс прямых видеотрансляций, чтобы принимать видео от поставщика видеоконтента, и/или компьютерную графическую систему для формирования компьютерных графических данных в качестве исходного видео либо комбинацию таких источников. В качестве одного примера, если видеоисточником 18 является видеокамера, исходное устройство 12 и целевое устройство 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, методики, описанные в этом раскрытии сущности, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения.
[0074] Захваченное, предварительно захваченное или компьютерно-генерируемое видео может быть кодировано посредством видеокодера 20. Кодированная видеоинформация может быть модулирована посредством модема 22 согласно стандарту связи, такому как протокол беспроводной связи, и передана в целевое устройство 14 через передающее устройство 24. Модем 22 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью модуляции сигналов. Передающее устройство 24 может включать в себя схемы, спроектированные с возможностью передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0075] Захваченное, предварительно захваченное или компьютерно-генерируемое видео, которое кодируется посредством видеокодера 20, также может быть сохранено на носителе 34 хранения данных или файловом сервере 36 для последующего применения. Носитель 34 хранения данных может включать в себя Blu-Ray-диски, DVD, CD-ROM, флэш-память или любые другие подходящие цифровые носители хранения данных для сохранения кодированного видео. После этого, к кодированному видео, сохраненному на носителе 34 хранения данных, может осуществляться доступ посредством целевого устройства 14 для декодирования и воспроизведения.
[0076] Файловый сервер 36 может быть любым типом сервера, допускающего сохранение кодированного видео и передачу этого кодированного видео в целевое устройство 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства по протоколу системы хранения данных с подключением по сети (NAS), локальный накопитель на дисках или любой другой тип устройства, допускающего сохранение кодированных видеоданных и их передачу в целевое устройство. Передача кодированных видеоданных из файлового сервера 36 может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного. Доступ к файловому серверу 36 может осуществляться посредством целевого устройства 14 через любое стандартное соединение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем, Ethernet, USB и т.д.) или комбинацию вышеозначенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере.
[0077] Целевое устройство 14, в примере по фиг. 1, включает в себя приемное устройство 26, модем 28, видеодекодер 30 и устройство 32 отображения. Приемное устройство 26 целевого устройства 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию, чтобы формировать демодулированный поток битов для видеодекодера 30. Информация, передаваемая по каналу 16, может включать в себя множество синтаксической информации, сформированной посредством видеокодера 20 для использования посредством видеодекодера 30 при декодировании видеоданных. Такой синтаксис также может быть включен в кодированные видеоданные, сохраненные на носителе 34 хранения данных или файловом сервере 36.
[0078] Устройство 32 отображения может быть интегрированным или внешним для целевого устройства 14. В некоторых примерах, целевое устройство 14 может включать в себя интегрированное устройство отображения, а также выполнено с возможностью взаимодействовать с внешним устройством отображения. В других примерах, целевое устройство 14 может быть устройством отображения. В общем, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0079] Видеокодер 20 и видеодекодер 30 могут работать согласно такому стандарту кодирования видео, как стандарт высокоэффективного кодирования видео (HEVC), разрабатываемый в настоящее время, и могут соответствовать тестовой модели HEVC (HM). Последний рабочий проект (WD) HEVC, называемый "HEVC WD7" в дальнейшем в этом документе, доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v5.zip, при этом более новая версия доступна по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip, причем обе из них содержатся в данном документе по ссылке, как если полностью изложены в данном документе. Альтернативно, видеокодер 20 и видеодекодер 30 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт ITU-T H.264, альтернативно называемый "MPEG-4, часть 10, усовершенствованное кодирование видео (AVC)", или расширениям таких стандартов. Тем не менее, методики этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263.
[0080] Стандарт ITU H.264/MPEG-4 (AVC) сформулирован посредством Экспертной группы в области кодирования видео (VCEG) ITU-T совместно с Экспертной группой по движущимся изображениям (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как Объединенная группа по видеостандартам (JVT). В некоторых аспектах, методики, описанные в этом раскрытии сущности, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" от Исследовательской группы ITU-T и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC. Объединенная группа по видеостандартам (JVT) продолжает работать над дополнениями к H.264/MPEG-4 AVC.
[0081] JCT-VC проводит работы по разработке HEVC-стандарта. Работа по стандартизации HEVC основана на усовершенствованной модели устройства кодирования видео, называемой "тестовой моделью HEVC (HM)". HM предполагает несколько дополнительных возможностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 предоставляет девять режимов внутреннего прогнозирующего кодирования, HM может предоставлять целых тридцать три режима внутреннего прогнозирующего кодирования.
[0082] HEVC-стандарт ссылается на блок видеоданных в качестве единицы кодирования (CU). В общем, CU имеет назначение, аналогичное назначению макроблока, кодированному согласно H.264, за исключением того, что CU не имеет различия размера. Таким образом, CU может разбиваться на суб-CU. В общем, ссылки в этом раскрытии сущности на CU могут ссылаться на наибольшую единицу кодирования (LCU) изображения или суб-CU LCU. Например, синтаксические данные в потоке битов могут задавать LCU, которая является наибольшей единицей кодирования с точки зрения числа пикселов. LCU может разбиваться на суб-CU, и каждая суб-CU может разбиваться на суб-CU. Синтаксические данные для потока битов могут задавать максимальное число раз, которое LCU может разбиваться, что называется "максимальной CU-глубиной". Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU).
[0083] LCU может быть ассоциирована с иерархической структурой данных в виде дерева квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует LCU. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть заданы рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU.
[0084] CU, которая не разбивается, может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет всю или часть соответствующей CU и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего прогнозирования для PU. В качестве другого примера, когда PU кодируется во взаимном режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорное изображение, на которое указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для CU, задающей PU, также могут описывать, например, сегментирование CU на одну или более PU. Режимы секционирования могут отличаться между тем, является CU некодированной, кодированной в режиме внутреннего прогнозирования или кодированной в режиме взаимного прогнозирования.
[0085] CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). После прогнозирования с использованием PU, видеокодер может вычислять остаточное значение для части CU, соответствующей PU. Остаточное значение может быть преобразовано, квантовано и сканировано. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше соответствующих PU для идентичной CU. В некоторых примерах, максимальный размер TU может быть размером соответствующей CU. Это раскрытие сущности также использует термин "блок" для того, чтобы ссылаться на любую из CU, PU или TU.
[0086] Видеокодер 20 может реализовывать любые из методик этого раскрытия сущности для того, чтобы улучшать кодирование коэффициентов преобразования в процессе кодирования видео. Аналогично, видеодекодер 30 может реализовывать любые из этих методик для того, чтобы улучшать декодирование коэффициентов преобразования в процессе кодирования видео. Видеокодер, как описано в этом раскрытии сущности, может означать видеокодер или видеодекодер. Аналогично, модуль кодирования видео может означать видеокодер или видеодекодер. Аналогично, кодирование видео может означать кодирование видео или декодирование видео.
[0087] Согласно аспектам этого раскрытия сущности, видеокодер 20 и/или видеодекодер 30 могут обрабатывать коэффициенты преобразования блока (например, TU) во множестве субблоков. Субблоки могут иметь одинаковый или различный размер. Видеокодер 20 и/или видеодекодер 30 могут сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов и могут сканировать сами субблоки в порядке сканирования субблоков. Иными словами, порядок сканирования субблоков может указывать, что сканируются первыми коэффициенты в первом субблоке, вторыми сканируются коэффициенты во втором субблоке, третьими сканируются коэффициенты в третьем субблоке, и т.д. Порядок сканирования коэффициентов затем может указывать порядок, в котором сканируются коэффициенты в пределах каждого субблока. Согласно аспектам этого раскрытия сущности, видеокодер 20 и/или видеодекодер 30 могут использовать идентичную ориентацию (например, шаблон, направление или порядок сканирования) для порядка сканирования коэффициентов и порядка сканирования субблоков. Иными словами, согласно аспектам этого раскрытия сущности, ориентация порядка сканирования субблоков может совпадать с ориентацией порядка сканирования коэффициентов. В других примерах, порядок сканирования субблоков может отличаться от порядка сканирования коэффициентов (например, в примерах, в которых порядок сканирования субблоков и порядок сканирования коэффициентов адаптивно определяются).
[0088] Например, после разделения блока коэффициентов преобразования на субблоки (или приема субблоков коэффициентов преобразования), видеокодер 20 и/или видеодекодер 30 могут сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов, а также сканировать сами субблоки в порядке сканирования субблоков. Иными словами, например, видеокодер 20 и/или видеодекодер 30 могут диагонально сканировать каждый из коэффициентов преобразования субблоков в порядке сканирования коэффициентов. Видеокодер 20 и/или видеодекодер 30 также могут диагонально сканировать между субблоками в порядке сканирования субблоков. В некоторых примерах, видеокодер 20 и/или видеодекодер 30 могут выполнять сканирования в обратном порядке. Помимо этого, согласно некоторым аспектам, видеокодер 20 и/или видеодекодер 30 могут сканировать и кодировать субблоки последовательно. Иными словами, видеокодер 20 и/или видеодекодер 30 могут сканировать и кодировать коэффициенты преобразования (например, включающие в себя значимость, знак, уровень и т.п.) текущего субблока в порядке сканирования коэффициентов перед переходом к следующему субблоку в порядке сканирования субблоков.
[0089] Согласно некоторым аспектам, видеокодер 20 и/или видеодекодер 30 могут выполнять адаптивный порядок сканирования субблоков. В одном примере, адаптивный порядок сканирования субблоков может быть использован вместо строгих горизонтальных и вертикальных порядков сканирования, как описано выше, для относительно больших размеров блоков (например, размеров блоков 32x32 или 16x16). Видеокодер 20 и/или видеодекодер 30 могут адаптивно определять порядок сканирования субблоков и порядок сканирования коэффициентов для блока на основе размера блока, режима прогнозирования блока (например, режима внутреннего/взаимного прогнозирования), информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) и/или из решения на основе полного искажения в зависимости от скорости передачи в кодере и синтаксиса из кодированного потока битов в декодере.
[0090] Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио-кодером и декодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, в некоторых примерах блоки мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0091] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера, к примеру, один или более микропроцессоров, процессоры цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Когда методики реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом компьютерно-читаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять методики этого раскрытия сущности. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0092] Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера 20, который может использовать методики для кодирования коэффициентов преобразования, как описано в этом раскрытии сущности. Хотя конкретные аспекты видеокодера 20 могут быть описаны на фиг. 2 относительно предложенного HEVC-кодирования в целях иллюстрации, следует понимать, что методики этого раскрытия сущности могут быть выполнены без ограничения в отношении других стандартов или способов кодирования, которые могут требовать сканирования коэффициентов преобразования.
[0093] В примере по фиг. 2, видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего прогнозирования, буфер 64 опорных изображений, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 52 обработки преобразования, проиллюстрированный на фиг. 2, представляет собой модуль, который применяет фактическое преобразование к блоку остаточных данных, и не должен путаться с блоком коэффициентов преобразования, который может упоминаться в качестве единицы преобразования (TU) CU. Для восстановления видеоблоков видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 2) также может быть включен, чтобы фильтровать границы блоков для того, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 62.
[0094] В ходе процесса кодирования видеокодер 20 принимает видеоизображение или вырезку, которая должна быть кодирована. Изображение или вырезка может быть разделено на несколько видеоблоков, например, на наибольшие единицы кодирования (LCU). Модуль 42 оценки движения и модуль 44 компенсации движения выполняют взаимное прогнозирующее кодирование принимаемого видеоблока относительно одного или более блоков в одном или более опорных изображений, чтобы предоставлять временное сжатие. Модуль 46 внутреннего прогнозирования может выполнять внутреннее прогнозирующее кодирование принимаемого видеоблока относительно одного или более соседних блоков в идентичном изображении или вырезке, что и блок, который должен быть кодирован, чтобы предоставлять пространственное сжатие.
[0095] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренних или взаимных, например, на основе анализа искажения в зависимости от скорости передачи для каждого режима и предоставляет результирующий внутренне или взаимно кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного изображения. Некоторые видеоизображения могут обозначаться как I-кадры, при этом все блоки в I-кадре кодируются в режиме внутреннего прогнозирования. В некоторых случаях, модуль 46 внутреннего прогнозирования может выполнять внутреннее прогнозирующее кодирование блока в P- или B-кадре, например, когда поиск движения, выполняемый посредством модуля 42 оценки движения, не приводит к достаточному прогнозированию блока.
[0096] Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение единицы прогнозирования в текущем изображении относительно опорной выборки опорного изображения. Опорная выборка может быть блоком, для которого обнаруживается, что он практически совпадает с частью CU, включающей в себя кодируемую PU, с точки зрения пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей. Компенсация движения, выполняемая посредством модуля 44 компенсации движения, может заключать в себе выборку или формирование значений для единицы прогнозирования на основе вектора движения, определенного посредством оценки движения. С другой стороны, в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы.
[0097] Модуль 42 оценки движения вычисляет вектор движения для единицы прогнозирования взаимно кодированного изображения посредством сравнения единицы прогнозирования с опорными выборками опорного изображения, сохраненного в буфере 64 опорных изображений. В некоторых примерах, видеокодер 20 может вычислять значения для субцелопиксельных позиций опорных изображений, сохраненных в буфере 64 опорных изображений. Например, видеокодер 20 может вычислять значения позиций в одну четверть пиксела, позиций в одну восьмую пиксела или других дробнопиксельных позиций опорного изображения. Следовательно, модуль 42 оценки движения может выполнять поиск движения относительно полнопиксельных позиций и дробнопиксельных позиций и выводить вектор движения с дробнопиксельной точностью. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Часть опорного изображения, идентифицированного посредством вектора движения, может упоминаться в качестве опорной выборки. Опорная выборка может задавать пиксельные значения для использования при формировании прогнозирующих значений пикселов для текущего блока, который должен быть кодирован. Модуль 44 компенсации движения может вычислять прогнозное значение для единицы прогнозирования текущей CU, например, посредством извлечения опорной выборки, идентифицированной посредством вектора движения для PU.
[0098] Модуль 46 внутреннего прогнозирования может выполнять внутреннее прогнозирующее кодирование принимаемого блока, в качестве альтернативы взаимному прогнозированию, выполняемому посредством модуля 42 оценки движения и модуля 44 компенсации движения. Модуль 46 внутреннего прогнозирования может кодировать принимаемый блок относительно соседних ранее кодированных блоков, например, блоков выше, выше и справа, выше и слева или слева от текущего блока, при условии порядка кодирования слева направо, сверху вниз для блоков. Модуль 46 внутреннего прогнозирования может быть сконфигурирован с множеством различных режимов внутреннего прогнозирования. Например, модуль 46 внутреннего прогнозирования может быть сконфигурирован с определенным числом режимов направленного прогнозирования, например, с 33 режимами направленного прогнозирования на основе размера кодируемой CU.
[0099] Модуль 46 внутреннего прогнозирования может выбирать режим внутреннего прогнозирования, например, посредством вычисления значений ошибки для различных режимов внутреннего прогнозирования и выбора режима, который дает в результате наименьшее значение ошибки. Режимы направленного прогнозирования могут включать в себя функции для комбинирования значений пространственно соседних пикселов и применения комбинированных значений к одной или более пиксельных позиций в PU. После того, как вычислены значения для всех пиксельных позиций в PU, модуль 46 внутреннего прогнозирования может вычислять значение ошибки для режима прогнозирования на основе пиксельных разностей между PU и принимаемым блоком, который должен быть кодирован. Модуль 46 внутреннего прогнозирования может продолжать тестирование режимов внутреннего прогнозирования до тех пор, пока не будет обнаружен режим внутреннего прогнозирования, который дает в результате приемлемое значение ошибки. Модуль 46 внутреннего прогнозирования затем может отправлять PU в сумматор 50.
[0100] Видеокодер 20 формирует остаточный блок посредством вычитания прогнозирующих данных, вычисленных посредством модуля 44 компенсации движения или модуля 46 внутреннего прогнозирования, из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений пиксельных разностей, при этом число значений в остаточном блоке является идентичным числу пикселов в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, т.е. ошибке, между значениями совместно размещенных пикселов в PU и в исходном блоке, который должен быть кодирован. Разности могут представлять собой разности сигнала цветности или сигнала яркости в зависимости от типа блока, который кодируется.
[0101] Модуль 52 обработки преобразования может формировать одну или более единиц преобразования (TU) из остаточного блока. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), направленное преобразование или концептуально аналогичное преобразование, к TU, формируя видеоблок, содержащий коэффициенты преобразования. Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования в модуль 54 квантования. В определенных режимах кодирования видео, таких как режим пропуска преобразования, модуль 52 обработки преобразования может отправлять остаточный блок непосредственно в модуль 54 квантования без выполнения преобразования. В таких случаях, остаточные значения по-прежнему могут упоминаться в данном документе как "коэффициенты преобразования", несмотря на отсутствие фактического применения преобразования к остаточным значениям.
[0102] Модуль 54 квантования затем может квантовать коэффициенты преобразования. Модуль 56 энтропийного кодирования затем может выполнять сканирование квантованных коэффициентов преобразования в матрице согласно указанному порядку сканирования. Это раскрытие сущности описывает модуль 56 энтропийного кодирования как выполняющий сканирование. Тем не менее, следует понимать, что, в других примерах, другие модули обработки, такие как модуль 52 обработки преобразования, модуль 54 квантования или другой модуль, если видеокодер 20, могут выполнять сканирование.
[0103] Согласно аспектам этого раскрытия сущности, модуль 56 энтропийного кодирования может сканировать коэффициенты преобразования двумерной TU с использованием множества субблоков. Например, модуль 56 энтропийного кодирования может сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов и может сканировать сами субблоки в порядке сканирования субблоков. Согласно аспектам этого раскрытия сущности, модуль 56 энтропийного кодирования может использовать идентичную ориентацию (например, шаблон, направление или порядок сканирования) для порядка сканирования коэффициентов и порядка сканирования субблоков. Иными словами, согласно аспектам этого раскрытия сущности, ориентация порядка сканирования субблоков может совпадать с ориентацией порядка сканирования коэффициентов. В других примерах, порядок сканирования субблоков может отличаться от порядка сканирования коэффициентов (например, в примерах, в которых порядок сканирования субблоков и порядок сканирования коэффициентов адаптивно определяются).
[0104] Например, модуль 56 энтропийного кодирования может формировать TU коэффициентов преобразования. До сканирования TU, чтобы преобразовывать в последовательную форму TU, модуль 56 энтропийного кодирования может разделять TU на множество субблоков. Модуль 56 энтропийного кодирования затем может сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов, а также сканировать сами субблоки в порядке сканирования субблоков. Иными словами, в примере в целях иллюстрации модуль 56 энтропийного кодирования может диагонально сканировать каждый из коэффициентов преобразования субблоков в порядке сканирования коэффициентов. Модуль 56 энтропийного кодирования также может диагонально сканировать между субблоками (сканировать сами субблоки) в порядке сканирования субблоков. В некоторых примерах, модуль 56 энтропийного кодирования может выполнять сканирования в обратном порядке. Помимо этого, согласно некоторым аспектам, модуль 56 энтропийного кодирования может сканировать и кодировать субблоки последовательно. Иными словами, модуль 56 энтропийного кодирования может сканировать и кодировать все элементы выборки, ассоциированные с коэффициентами преобразования текущего субблока в порядке сканирования коэффициентов перед переходом к следующему субблоку в порядке сканирования субблоков. В других примерах, модуль 56 энтропийного кодирования может кодировать конкретный элемент выборки для всей TU (включающей в себя все субблоки) перед кодированием следующего элемента выборки.
[0105] Согласно некоторым аспектам, модуль 56 энтропийного кодирования может выполнять адаптивный порядок сканирования субблоков. В одном примере, адаптивный порядок сканирования субблоков может быть использован вместо строгих горизонтальных и вертикальных порядков сканирования, как описано выше, для относительно больших размеров блоков (например, размеров блоков 32x32 или 16x16). Модуль 56 энтропийного кодирования может адаптивно определять порядок сканирования субблоков и порядок сканирования коэффициентов для блока на основе размера блока, режима прогнозирования блока (например, режима внутреннего/взаимного прогнозирования), информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) и/или из решения на основе полного искажения в зависимости от скорости передачи в кодере и синтаксиса из кодированного потока битов в декодере.
[0106] После того, как коэффициенты преобразования сканируются (или во время сканирования), модуль 56 энтропийного кодирования может применять энтропийное кодирование, к примеру, CAVLC, PIPE или CABAC к коэффициентам. Помимо этого, модуль 56 энтропийного кодирования может кодировать информацию вектора движения (MV) и любые из множества других элементов синтаксиса, применимых при декодировании видеоданных в видеодекодере 30. Элементы синтаксиса могут включать в себя карту значимости с флагами значимых коэффициентов, которые указывают то, являются или нет конкретные коэффициенты значимыми (например, ненулевыми), и флаг последнего значимого коэффициента, который указывает то, является или нет конкретный коэффициент последним значимым коэффициентом (в некоторых примерах, позиция последнего значимого коэффициента может не кодироваться). Видеодекодер 30 может использовать эти элементы синтаксиса для того, чтобы восстанавливать кодированные видеоданные. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, результирующее кодированное видео может быть передано в другое устройство, к примеру, в видеодекодер 30 или заархивировано для последующей передачи или извлечения.
[0107] В некоторых примерах, разделение блока коэффициентов преобразования на субблоки может создавать зависимость от контекста в субблоках (например, при энтропийном кодировании с использованием контекстной информации). Например, при сканировании в субблоках с использованием диагонального сканирования, контекст для конкретного элемента выборки (к примеру, элементов выборки карты значимости) для верхнего левого коэффициента в субблоке может зависеть от предыдущего обрабатываемого коэффициента (например, коэффициента преобразования, размещенного ниже текущего коэффициента преобразования). Зависимость от контекста может накладывать нежелательную задержку при энтропийном кодировании. Для того, чтобы не допускать этой зависимости и за счет этого повышать параллелизацию, модуль 56 энтропийного кодирования может модифицировать окружение поддержки контекста. Например, модуль 56 энтропийного кодирования может определять окружение поддержки контекста, которое удаляет зависимость от контекста двух последовательных коэффициентов, давая возможность модулю 56 энтропийного кодирования кодировать два элемента выборки параллельно. Иными словами, согласно аспектам этого раскрытия сущности, одна или более позиций из набора позиций (т.е. окружение поддержки контекста), которые обычно используются для того, чтобы извлекать контекст, могут удаляться, в силу этого устанавливая сокращенный контекстный набор. В некоторых примерах, модуль 56 энтропийного кодирования может увеличивать удаление зависимости с двух до трех, четырех или более последовательных коэффициентов. В этих случаях, окружение поддержки контекста в каждой позиции может быть модифицировано, чтобы удалять зависимости от контекста в окружении с учетом конкретного порядка сканирования.
[0108] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельной области, к примеру, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока с прогнозным блоком одного из изображений буфера 64 опорных изображений. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять субцелопиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в буфере 64 опорных изображений. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы взаимно кодировать блок в последующем видеоизображении.
[0109] Фиг. 3 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере по фиг. 3, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных изображений и сумматор 80.
[0110] Энтропийное декодирование 70 энтропийно декодирует кодированное видео в процессе, который может быть обратным по отношению к процессу, используемому посредством модуля 56 энтропийного кодирования по фиг. 2. Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых из модуля 70 энтропийного декодирования. Модуль 74 внутреннего прогнозирования может формировать прогнозирующие данные для текущего блока текущего изображения на основе передаваемого в служебных сигналах режима внутреннего прогнозирования и данных из ранее декодированных блоков текущего изображения.
[0111] В некоторых примерах, модуль 70 энтропийного декодирования (или модуль 76 обратного квантования) может сканировать принятые значения с использованием сканирования, совпадающего с порядком сканирования, используемым посредством модуля 56 энтропийного кодирования (или модуля 54 квантования) видеокодера 20. Хотя сканирование коэффициентов может быть выполнено в модуле 76 обратного квантования, сканирование описывается в целях иллюстрации как выполняемое посредством модуля 70 энтропийного декодирования. Помимо этого, хотя показаны как отдельные функциональные модули для простоты иллюстрации, структура и функциональность модуля 70 энтропийного декодирования, модуля 76 обратного квантования и других единиц видеодекодера 30 могут иметь высокую степень интеграции друг с другом.
[0112] Видеодекодер 30 может принимать из кодированного потока битов, передачу в служебных сигналах, которая идентифицирует порядок сканирования, используемый посредством видеокодера 20. Дополнительно или альтернативно, порядок сканирования может логически выводиться посредством видеодекодера 30 на основе характеристик кодированного видео, таких как режим прогнозирования, размер блока, преобразование или другие характеристики. В качестве другого примера, видеокодер 20 и видеодекодер 30 могут использовать предварительно определенные порядки сканирования и контексты для всех вариантов использования, и, по сути, не требуется передача служебных сигналов в кодированном потоке битов.
[0113] В соответствии с методиками этого раскрытия сущности, порядок сканирования, определенный посредством видеодекодера 30, может включать в себя порядок сканирования субблоков и порядок сканирования коэффициентов, которые задают то, как коэффициенты преобразования из одномерного вектора сканируются в двумерный блок, разделенный на множество субблоков. Декодер может логически выводить число и/или размер субблоков для блока коэффициентов преобразования на основе размера двумерного блока. В других примерах, число и/или размер субблоков могут указываться в кодированном потоке видеобитов.
[0114] Независимо от того, как определяется порядок сканирования, модуль 70 энтропийного декодирования использует порядок сканирования, обратный по отношению к порядку сканирования, используемому посредством кодера, для того чтобы сканировать одномерный вектор в двумерную матрицу. В соответствии с методиками этого раскрытия сущности, модуль 70 энтропийного декодирования может выполнять процесс сканирования, который сканирует коэффициенты преобразования из секций одномерного вектора на множество субблоков двумерного блока. Этот процесс может быть процессом, обратным по отношению к процессу, описанному выше со ссылкой на фиг. 2.
[0115] Например, согласно аспектам этого раскрытия сущности, модуль 70 энтропийного декодирования может декодировать и обратно сканировать TU во множестве субблоков. Иными словами, модуль 70 энтропийного декодирования может сканировать коэффициенты преобразования субблоков в порядке сканирования коэффициентов и может сканировать сами субблоки в порядке сканирования субблоков. Согласно аспектам этого раскрытия сущности, модуль 70 энтропийного декодирования может использовать идентичную ориентацию (например, шаблон, направление или порядок сканирования) для порядка сканирования коэффициентов и порядка сканирования субблоков. Иными словами, согласно аспектам этого раскрытия сущности, ориентация порядка сканирования субблоков может совпадать с ориентацией порядка сканирования коэффициентов. В других примерах, порядок сканирования субблоков может отличаться от порядка сканирования коэффициентов (например, в примерах, в которых порядок сканирования субблоков и порядок сканирования коэффициентов адаптивно определяются).
[0116] Например, модуль 70 энтропийного декодирования может принимать преобразованную в последовательную форму матрицу коэффициентов преобразования, ассоциированных с TU. Модуль 70 энтропийного декодирования может сканировать коэффициенты преобразования в субблоках, чтобы восстанавливать двумерную TU. Иными словами, модуль 70 энтропийного декодирования может сканировать коэффициенты преобразования в порядке сканирования коэффициентов, а также сканировать сами субблоки в порядке сканирования субблоков. В примере в целях иллюстрации модуль 70 энтропийного декодирования может диагонально сканировать каждый из принимаемых коэффициентов преобразования в порядке сканирования коэффициентов для того, чтобы восстанавливать двумерный субблок.
[0117] Модуль 70 энтропийного декодирования также может диагонально сканировать восстановленные субблоки (по мере того, как формируются субблоки) в порядке сканирования субблоков для того, чтобы восстанавливать TU. В некоторых примерах, модуль 70 энтропийного декодирования может выполнять сканирования в обратном порядке. Помимо этого, согласно некоторым аспектам, модуль 70 энтропийного декодирования может сканировать и кодировать субблоки последовательно. Иными словами, модуль 70 энтропийного декодирования может сканировать и декодировать все элементы выборки, ассоциированные с коэффициентами преобразования текущего субблока в порядке сканирования коэффициентов перед переходом к следующему субблоку в порядке сканирования субблоков. В других примерах, модуль 70 энтропийного декодирования может декодировать конкретный элемент выборки для всей TU (включающей в себя все субблоки) перед декодированием следующего элемента выборки.
[0118] Согласно некоторым аспектам, модуль 70 энтропийного декодирования может выполнять адаптивный порядок сканирования субблоков. В одном примере, адаптивный порядок сканирования субблоков может быть использован вместо строгих горизонтальных и вертикальных порядков сканирования, как описано выше, для относительно больших размеров блоков (например, размеров блоков 32x32 или 16x16). Модуль 70 энтропийного декодирования может адаптивно определять порядок сканирования субблоков и порядок сканирования коэффициентов для блока на основе размера блока, режима прогнозирования блока (например, режима внутреннего/взаимного прогнозирования), информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) и/или из решения на основе полного искажения в зависимости от скорости передачи в кодере и синтаксиса из кодированного потока битов в декодере.
[0119] В некоторых примерах, разделение блока коэффициентов преобразования на субблоки может создавать зависимость от контекста в субблоках (например, при энтропийном кодировании с использованием контекстной информации). Например, при сканировании в субблоках с использованием диагонального сканирования, контекст для верхнего левого коэффициента в субблоке может зависеть от предыдущего обрабатываемого коэффициента (например, коэффициента преобразования, размещенного ниже текущего коэффициента преобразования). Зависимость от контекста может накладывать нежелательную задержку при энтропийном кодировании. Для того, чтобы не допускать этой зависимости и за счет этого повышать параллелизацию, модуль 70 энтропийного декодирования может использовать модифицированное окружение поддержки контекста. Например, модуль 70 энтропийного декодирования может использовать окружение поддержки контекста, которое удаляет зависимость от контекста двух последовательных коэффициентов, давая возможность модулю 70 энтропийного декодирования декодировать два элемента выборки параллельно. В некоторых примерах, модуль 70 энтропийного декодирования может увеличивать удаление зависимости с двух до трех, четырех или более последовательных коэффициентов. В этих случаях, окружение поддержки контекста в каждой позиции может быть модифицировано, чтобы удалять зависимости от контекста в окружении с учетом конкретного порядка сканирования.
[0120] Двумерная матрица коэффициентов преобразования, сформированных посредством модуля 70 энтропийного декодирования, может быть квантована и может, в общем, совпадать с двумерной матрицей коэффициентов преобразования, сканированных посредством модуля 56 энтропийного кодирования видеокодера 20, чтобы формировать одномерный вектор коэффициентов преобразования. Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, аналогичный процессам, предложенным для HEVC или заданным посредством стандарта декодирования H.264. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного посредством видеокодера 20 для CU, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться. Модуль 76 обратного квантования может обратно квантовать коэффициенты преобразования до или после того, как коэффициенты преобразуются из одномерного вектора в двумерную матрицу.
[0121] Модуль 58 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, обратное KLT, обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование. В некоторых примерах, модуль 78 обработки обратного преобразования может определять обратное преобразование на основе передачи служебных сигналов из видеокодера 20 или посредством логического вывода преобразования из одной или более характеристик кодирования, таких как размер блока, режим кодирования и т.п. В некоторых примерах, модуль 78 обработки обратного преобразования может определять преобразование, которое должно применяться к текущему блоку, на основе передаваемого в служебных сигналах преобразования в корневом узле дерева квадрантов для LCU, включающей в себя текущий блок. В некоторых примерах, модуль 78 обработки обратного преобразования может применять каскадное обратное преобразование. В примерах, в которых принятые коэффициенты кодированы с использованием так называемого режима пропуска, модуль 58 обратного преобразования может не применять преобразование.
[0122] Модуль 72 компенсации движения формирует блоки с компенсацией движения, возможно выполняя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны использоваться для оценки движения с субпиксельной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 в ходе кодирования видеоблока, чтобы вычислять интерполированные значения для субцелочисленных пикселов опорного блока. Модуль 72 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20 согласно принимаемой синтаксической информации, и использовать интерполяционные фильтры, чтобы формировать прогнозные блоки.
[0123] Модуль 72 компенсации движения и модуль 74 внутреннего прогнозирования, в примере HEVC, могут использовать часть синтаксической информации (например, предоставленной посредством дерева квадрантов) для того, чтобы определять размеры LCU, используемых для того, чтобы кодировать изображение(я) кодированной видеопоследовательности. Модуль 72 компенсации движения и модуль 74 внутреннего прогнозирования также могут использовать синтаксическую информацию, чтобы определять информацию разбиения, которая описывает то, как разбивается каждая CU изображения кодированной видеопоследовательности (и аналогично, то, как разбиваются суб-CU). Синтаксическая информация также может включать в себя режимы, указывающие то, как кодируется каждое разбиение (например, внутреннее или взаимное прогнозирование и для режима внутреннего прогнозирующего кодирования), одно или более опорных изображений (и/или опорных списков, содержащих идентификаторы для опорных изображений) для каждой взаимно кодированной PU и другую информацию для того, чтобы декодировать кодированную видеопоследовательность.
[0124] Сумматор 80 комбинирует остаточные блоки с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения или модуля 74 внутреннего прогнозирования, чтобы формировать декодированные блоки. Например, сумматор 80 может комбинировать прогнозирующее пиксельное значение (например, сигнал яркости и/или сигнал цветности) с остаточным значением пиксельной разности, чтобы восстанавливать пиксельное значение. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в буфере 82 опорных изображений, который предоставляет опорные блоки для последующей компенсации движения, а также формирует декодированное видео для представления на устройстве отображения (к примеру, на устройстве 32 отображения по фиг. 1).
[0125] Фиг. 4 является концептуальной схемой, которая, в общем, иллюстрирует кодирование карты значимости. Например, как отмечено выше, видеокодер (к примеру, видеокодер 20) может кодировать позиции значимых коэффициентов (т.е. ненулевых коэффициентов преобразования) в блоке преобразования (например, TU) до кодирования значений коэффициентов (уровней). Процесс кодирования карты значимости может упоминаться в качестве кодирования на основе карты значимости, которое требует относительно большого процента скорости передачи битов. Видеодекодер (к примеру, видеодекодер 30) может принимать карту значимости и определять местоположения значимых коэффициентов преобразования.
[0126] Пример по фиг. 4 показывает блок 4x4 квантованных коэффициентов 100 преобразования, имеющий три значимых коэффициента в первой строке, четыре значимых коэффициента во второй строке, два значимых коэффициента в третьей строке и не имеющий значимых коэффициентов в четвертой строке. Карта 102 значимости включает в себя (1) в каждом местоположении значимого коэффициента преобразования и (0) в каждом местоположении коэффициента преобразования с нулевым значением. В общем, после определения местоположений коэффициентов преобразования значимости, видеокодер 20 может преобразовывать в последовательную форму и кодировать карту 102 значимости. Аналогично, видеодекодер 30 может принимать преобразованную в последовательную форму карту 102 значимости, чтобы восстанавливать местоположения значимых коэффициентов.
[0127] Примерный процесс для кодирования карты значимости описывается в работе авторов D. Marpe, H. Schwarz и T. Wiegand "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", IEEE Trans. Circuits and Systems for Video Technology, издание 13, № 7, июль 2003 года. В этом процессе кодируется карта значимости, если существует, по меньшей мере, один значимый коэффициент в блоке, как указано посредством флага кодированного блока (CBF), который может задаваться следующим образом:
Флаг кодированного блока: coded_block_flag является однобитовым символом, который указывает то, имеются или нет значимые, т.е. ненулевые коэффициенты в одном блоке коэффициентов преобразования, для которых шаблон кодированного блока указывает ненулевые записи. Если coded_block_flag равен нулю, дополнительная информация не передается для связанного блока.
[0128] Если существуют значимые коэффициенты в блоке, карта значимости кодируется согласно порядку сканирования коэффициентов преобразования в блоке следующим образом:
Сканирование коэффициентов преобразования: двумерные матрицы уровней коэффициентов преобразования субблоков, для которых coded_block_flag указывает ненулевые записи, сначала преобразуются в одномерный список с использованием данного шаблона сканирования. Другими словами, субблоки со значимыми коэффициентами сканируются согласно шаблону сканирования.
[0129] С учетом шаблона сканирования, карта значимости может быть сканирована следующим образом:
Карта значимости: Если coded_block_flag указывает то, что блок имеет значимые коэффициенты, кодируется карта значимости с двоичным значением. Для каждого коэффициента преобразования в порядке сканирования передается однобитовый символ significant_coeff_flag. Если significant_coeff_flag символ равен единице, т.е. если ненулевой коэффициент существует в этой позиции сканирования, отправляется дополнительный однобитовый символ last_significant_coeff_flag. Этот символ указывает то, является текущий значимый коэффициент последним в блоке или далее идут дополнительные значимые коэффициенты. Если достигается последняя позиция сканирования, и кодирование на основе карты значимости еще не завершено посредством last_significant_coeff_flag со значением в единицу, очевидно, что последний коэффициент должен быть значимым.
[0130] Другие стандарты кодирования видео могут использовать отличный процесс для того, чтобы кодировать информацию значимости. Например, предложенный HEVC-стандарт использует процесс, аналогичный процессу, описанному выше, но не кодирует флаг последнего значимого коэффициента. Вместо этого, согласно HEVC, последний значимый коэффициент может быть идентифицирован, и сканирование может продолжаться от последнего значимого коэффициента до первого значимого коэффициента в обратном порядке.
[0131] Согласно аспектам этого раскрытия сущности, карта 102 значимости может составлять часть большей карты значимости. Иными словами, например, карта 102 значимости может быть субблоком флагов значимости для большего блока флагов значимости. В таких примерах, согласно аспектам этого раскрытия сущности, видеокодер может сканировать карту 102 значимости и большую карту значимости с использованием сканирования, имеющего идентичную ориентацию. В дополнение к карте 102 значимости, как подробнее описано ниже, множество других элементов выборки (например, знак, уровень и т.п.) также может быть сканировано в идентичных или различных ориентациях относительно карты 102 значимости.
[0132] Фиг. 5A-5F, в общем, иллюстрируют шаблоны и направления сканирования для кодирования коэффициентов преобразования. Например, шаблоны сканирования, показанные на фиг. 5A-5F, могут быть использованы посредством видеокодера (к примеру, видеокодера 20) в качестве порядков сканирования коэффициентов при преобразовании в последовательную форму двумерной матрицы коэффициентов преобразования (например, значимости, уровней, знака и т.п.). В другом примере, шаблоны сканирования могут быть использованы посредством видеодекодера (к примеру, видеодекодера 30) в качестве порядков сканирования коэффициентов при восстановлении блока коэффициентов преобразования из принимаемой преобразованной в последовательную форму матрицы кодированных коэффициентов преобразования.
[0133] В некоторых примерах, шаблоны и направления сканирования, показанные на фиг. 5A-5F, могут быть реализованы посредством видеокодера при сканировании карты значимости (к примеру, карты 102 значимости, показанной на фиг. 4), а также уровней коэффициентов преобразования. Например, фиг. 5A иллюстрирует прямой зигзагообразный шаблон 110 сканирования для сканирования коэффициентов преобразования блока видеоданных (например, коэффициентов преобразования, ассоциированных с TU). В общем, зигзагообразный шаблон 110 сканирования проходит по блоку под чередующимися углами в 45 градусов сверху справа блока вниз влево блока. Иными словами, в примере, показанном на фиг. 5A, первый коэффициент 112 является DC-компонентом, размещенным в верхнем левом углу блока, в то время как последний коэффициент 114, который должен быть сканирован, размещается в нижнем правом углу блока.
[0134] Фиг. 5B иллюстрирует прямой горизонтальный шаблон 120 сканирования для сканирования коэффициентов преобразования блока видеоданных. В общем, прямой горизонтальный шаблон 120 сканирования проходит по блоку слева направо и сверху вниз. Иными словами, в примере, показанном на фиг. 5B, первый коэффициент 122 является DC-компонентом, размещенным в верхнем левом углу блока, в то время как последний коэффициент 124, который должен быть сканирован, размещается в нижнем правом углу блока. Прямой горизонтальный шаблон 120 сканирования продолжается от первого коэффициента 122 по верху блока слева направо. Каждая следующая строка сканируется слева направо до достижения последнего коэффициента 124.
[0135] Фиг. 5C иллюстрирует прямой вертикальный шаблон 130 сканирования для сканирования коэффициентов преобразования блока видеоданных. В общем, прямой вертикальный шаблон 130 сканирования проходит по блоку сверху вниз и слева направо. Иными словами, в примере, показанном на фиг. 5C, первый коэффициент 132 является DC-компонентом, размещенным в верхнем левом углу блока, в то время как последний коэффициент 134, который должен быть сканирован, размещается в нижнем правом углу блока. Прямой вертикальный шаблон 130 сканирования продолжается от первого коэффициента 132 вниз к относительному низу блока. Каждый следующий столбец сканируется сверху вниз до достижения последнего коэффициента 134.
[0136] Фиг. 5D иллюстрирует диагональный шаблон 140 сканирования для сканирования коэффициентов преобразования блока видеоданных. В общем, диагональный шаблон 140 сканирования проходит по блоку под углом в 45 градусов сверху справа вниз влево (например, от верхнего левого угла блока к нижнему правому углу для блока). Иными словами, в примере, показанном на фиг. 5D, первый коэффициент 142 является DC-компонентом, размещенным в верхнем левом углу блока, в то время как последний коэффициент 144, который должен быть сканирован, размещается в нижнем правом углу блока. Каждая из диагональных линий в диагональном шаблоне 140 сканирования проходит по блоку под углом в 45 градусов от верхнего правого угла блока к нижнему левому углу блока.
[0137] Фиг. 5E иллюстрирует другой диагональный шаблон 150 сканирования для сканирования коэффициентов преобразования блока видеоданных. В общем, диагональный шаблон 150 сканирования проходит по блоку под углом в 45 градусов сверху справа вниз влево (например, от верхнего левого угла блока к нижнему правому углу блока). Иными словами, в примере, показанном на фиг. 5E, первый коэффициент 152 является DC-компонентом, размещенным в верхнем левом углу блока, в то время как последний коэффициент 154, который должен быть сканирован, размещается в нижнем правом углу блока. Тем не менее, диагональный шаблон 150 сканирования продолжается в противоположном направлении по отношению к диагональному шаблону 140 сканирования. Каждая из диагональных линий в диагональном шаблоне 150 сканирования проходит по блоку под углом в 45 градусов от нижнего левого угла блока к верхнему правому углу блока.
[0138] Каждое из сканирований, показанных на фиг. 5A-5E, продолжается в прямом направлении, т.е. от меньших коэффициентов преобразования частоты в верхнем левом углу блока преобразования к большим коэффициентам преобразования частоты в нижнем правом углу блока преобразования. Альтернативно, каждое из сканирований может продолжаться в обратном направлении (т.е. от нижнего правого угла блока к верхнему левому углу). В данном примере, как отмечено выше, коэффициенты преобразования с нулевым значением могут быть размещены в начале преобразованной в последовательную форму матрицы.
[0139] Например, фиг. 5F иллюстрирует обратный диагональный шаблон сканирования, как показано на фиг. 5E. Иными словами, фиг. 5F иллюстрирует обратный диагональный шаблон 160 сканирования для сканирования коэффициентов преобразования блока видеоданных (например, коэффициентов преобразования, ассоциированных с TU). В общем, обратный диагональный шаблон 160 сканирования проходит по блоку под углом в 45 градусов справа налево и снизу вверх. Иными словами, в примере, показанном на фиг. 5F, первый коэффициент 162 размещается в нижнем правом углу блока, в то время как последний коэффициент 164, который должен быть сканирован, размещается в верхнем левом углу блока. Другими словами, каждая из диагональных линий в диагональном шаблоне 160 сканирования проходит по блоку под углом в 45 градусов от верхнего правого угла блока к нижнему левому углу блока. DC-коэффициент может оставаться в верхнем левом углу блока с высокочастотными коэффициентами в нижнем правом углу блока.
[0140] Следует понимать, что шаблон сканирования, показанный на фиг. 5A-5F, предоставляется только в целях иллюстрации. Помимо этого, различные компоненты, ассоциированные с коэффициентами преобразования (например, значимость, знак, уровень и т.п.), могут быть сканированы с использованием сканирований различных ориентаций. Уровень коэффициентов может быть сканирован и кодирован с элементами синтаксиса, указывающими то, имеет или нет коэффициент уровень, превышающий единицу, и уровень, превышающий два, а также оставшийся уровень, например, превышающий два. В некоторых случаях, информация значимости (например, флаги значимости) может быть сканирована в противоположном направлении по отношению к уровням коэффициентов преобразования (например, один или более элементов синтаксиса, ассоциированных с уровнями коэффициентов). В других случаях, унифицированный шаблон сканирования может быть реализован таким образом, что информация значимости и уровни коэффициентов преобразования сканируются и кодируются в идентичном направлении.
[0141] Хотя сканирования, показанные на фиг. 5A-5F, в общем, иллюстрируются как выполняемые для всего блока, согласно аспектам этого раскрытия сущности и как подробнее описано ниже, такие сканирования могут быть использованы внутри и между субблоками коэффициентов преобразования. Иными словами, в качестве примера, обратный диагональный шаблон 160 сканирования, показанный на фиг. 5F, может быть использован в качестве порядка сканирования коэффициентов для сканирования коэффициентов преобразования в субблоках, а также порядка сканирования субблоков для сканирования самих субблоков.
[0142] Фиг. 6 является концептуальной схемой, иллюстрирующей пример окружения поддержки контекста для диагонально ориентированного тракта сканирования. Например, фиг. 6 иллюстрирует блок коэффициентов 170 преобразования и диагонально ориентированной линии 171 сканирования, проходящей через позицию 172 коэффициента преобразования, в данный момент кодируемую. Помимо этого, пример по фиг. 6 показывает окружение 174A-174E поддержки контекста (совместно, окружение 174 поддержки контекста), имеющее пять элементов.
[0143] Например, как отмечено выше, каждый элемент выборки для блока видеоданных, соответствующий либо уровню остаточных коэффициентов преобразования, либо информации карты значимости для блока, может быть кодирован с использованием оценок вероятности для элемента выборки, которые указывают вероятность того, что элемент выборки имеет данное значение (например, 0 или 1). Оценки вероятности включаются в вероятностную модель, также называемую "контекстной моделью". Вероятностная модель выбирается посредством определения контекста для элемента выборки, который может быть идентифицирован посредством окружения поддержки контекста. Иными словами, окружение поддержки контекста может идентифицировать относительные позиции элементов синтаксиса, которые могут использоваться для энтропийного кодирования конкретного символа или флага, ассоциированного с коэффициентом преобразования. Контекст, например, фактические значения, расположенные в позициях окружения контекста, определяет вероятностную модель.
[0144] В примере, показанном на фиг. 6, любой из коэффициентов преобразования вдоль линии 171 шаблона сканирования может быть кодирован параллельно. Такой шаблон сканирования может упоминаться как "параллельно-ориентированный". Иными словами, позиции вдоль линии 171 сканирования могут быть кодированы параллельно, поскольку ни одна позиция в линии 171 сканирования не включает в себя окружение поддержки контекста, которое зависит от другой позиции в линии 171 сканирования. Соответственно, линия 171 сканирования обеспечивает возможность параллельного вычисления контекста множества флагов значимости, в силу этого обеспечивая упреждающую выборку контекста для кодирования на основе флагов значимости. Такая линия сканирования также может упрощать кодирование нескольких флагов значимости с использованием ориентировочного вычисления.
[0145] Тем не менее, как подробнее описано ниже относительно фиг. 11 и 12, в некоторых примерах, разделение блока коэффициентов преобразования на субблоки может создавать зависимость от контекста в субблоках (например, при энтропийном кодировании с использованием контекста). Иными словами, окружение поддержки контекста для некоторых позиций в субблоке может основываться на предыдущих коэффициентах в порядке сканирования из субблока. Соответственно, аспекты этого раскрытия сущности относятся к определению окружения поддержки контекста для сканирования субблоков, которое обеспечивает возможность параллельного кодирования нескольких флагов значимости (например, контекст может быть упреждающе выбран для нескольких позиций в субблоке).
[0146] Фиг. 7, в общем, иллюстрирует разделение блока коэффициентов 180 преобразования на поднаборы в форме субблоков 184A-184P (совместно, субблоков 184). Например, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может разделять блок 180 на субблоки 184 при сканировании и энтропийном кодировании блока 180.
[0147] Согласно аспектам этого раскрытия сущности, как подробнее описано ниже, коэффициенты преобразования в субблоках 184 могут быть сканированы в порядке сканирования коэффициентов. Помимо этого, каждый из субблоков 184 может быть сканирован в порядке сканирования субблоков. В некоторых примерах, согласно аспектам этого раскрытия сущности, порядок сканирования коэффициентов может совпадать с порядком сканирования субблоков.
[0148] В некоторых примерах, видеокодер может кодировать информацию значимости и уровни коэффициентов субблоков 184 в нескольких проходах. Например, видеокодер может выполнять первый проход, чтобы кодировать информацию значимости. Видеокодер затем может выполнять еще один проход, чтобы кодировать элемент 1 выборки (например, превышающий единицу) уровней коэффициентов преобразования, еще один проход, чтобы кодировать элемент 2 выборки (например, превышающий 2) уровней коэффициентов преобразования, еще один проход, чтобы кодировать оставшиеся элементы выборки (например, оставшийся уровень) уровней коэффициентов преобразования, и еще один проход, чтобы кодировать знак уровней коэффициентов преобразования. Тем не менее, пять проходов, описанных выше, предоставляются только для примера, и может использоваться другая система кодирования.
[0149] Согласно некоторым аспектам этого раскрытия сущности, видеокодер может кодировать каждый из субблоков 184 последовательно. Иными словами, видеокодер может выполнять пять проходов кодирования, описанных выше для субблока 184A, в порядке сканирования коэффициентов преобразования. Видеокодер затем может переходить к следующему субблоку в порядке сканирования субблоков и выполнять идентичные пять проходов кодирования в порядке сканирования коэффициентов преобразования. В других примерах, проход кодирования может быть выполнен для всего блока 180 перед переходом к следующему проходу кодирования. Иными словами, видеокодер может выполнять первый проход кодирования для блока 180 для всех коэффициентов преобразования субблоков 184 в порядке сканирования коэффициентов преобразования и для всех субблоков 184 в порядке сканирования субблоков. Видеокодер затем может выполнять следующий проход кодирования для блока 180 аналогичным образом до тех пор, пока все проходы кодирования не будут завершены.
[0150] В некоторых примерах, видеокодер может использовать унифицированное сканирование для сканирования коэффициентов преобразования субблоков 184. Например, видеокодер может сканировать информацию значимости и уровни коэффициентов с использованием сканирования, имеющего идентичную ориентацию (например, диагонального сканирования). В других примерах, видеокодер может сканировать компоненты коэффициентов преобразования (например, значимость, знак, уровни и т.п.) с использованием обратных сканирований или сканирований, имеющих другие ориентации. Например, видеокодер может первоначально сканировать информацию карты значимости при прямом сканировании. Видеокодер затем может сканировать один или более элементов выборки уровня коэффициентов при обратном сканировании.
[0151] Хотя в примере, показанном на фиг. 7, блок 180 имеет размер 16x16 коэффициентов преобразования, следует понимать, что большие или меньшие блоки могут быть аналогично разделены. Кроме того, хотя субблоки 184 имеют размер 4x4, следует понимать, что могут использоваться большие или меньшие субблоки. Иными словами, в других примерах, размер субблоков может составлять 2x2, 8x8, 16x16 или nxn при условии, что размер субблока меньше или равен исходному размеру блока. То, как подразделяется конкретный блок коэффициентов преобразования, может быть предварительно определено на основе размера блока. В связи с этим, видеодекодер может логически выводить то, как подразделять блок, на основе его размера. В других примерах, число и/или размер субблоков могут указываться в кодированном потоке видеобитов посредством кодера.
[0152] Фиг. 8A-8E, в общем, иллюстрируют шаблоны и направления сканирования для кодирования субблоков коэффициентов преобразования. Например, шаблоны сканирования, показанные на фиг. 8A-8E, могут быть использованы посредством видеокодера (к примеру, видеокодера 20) в качестве порядков сканирования субблоков при преобразовании в последовательную форму двумерной матрицы коэффициентов преобразования (например, значимости, уровней, знака и т.п.). В другом примере, шаблоны сканирования могут быть использованы посредством видеодекодера (к примеру, видеодекодера 30) в качестве порядков сканирования субблоков при восстановлении блока коэффициентов преобразования из принимаемой преобразованной в последовательную форму матрицы кодированных коэффициентов преобразования.
[0153] Например, фиг. 8A, в общем, иллюстрирует прямой зигзагообразный порядок 190 сканирования субблоков для сканирования между субблоками (субблоками 4x4, показанными с помощью более жирной рамки) блока коэффициентов преобразования. В общем, прямой зигзагообразный порядок 190 сканирования субблоков проходит по каждому из субблоков от относительного первого субблока 192 в верхнем левом углу блока к последнему субблоку 194 в нижнем правом углу блока под чередующимися углами в 45 градусов относительно сверху для блока относительно вниз для блока.
[0154] Фиг. 8B, в общем, иллюстрирует прямой горизонтальный порядок 196 сканирования субблоков для сканирования между субблоками (субблоками 4x4, показанными с помощью более жирной рамки) блока коэффициентов преобразования. В общем, прямой горизонтальный порядок 196 сканирования субблоков проходит по каждому из субблоков от относительного первого субблока 198 в верхнем левом углу блока к последнему субблоку 200 в нижнем правом углу в последовательности горизонтальных линий слева направо и сверху вниз. Иными словами, в примере, показанном на фиг. 8B, прямой горизонтальный порядок сканирования субблоков продолжается от первого субблока 198 по верху блока слева направо. Каждая следующая строка затем сканируется слева направо до достижения последнего субблока 200.
[0155] Фиг. 8C иллюстрирует прямой вертикальный порядок 204 сканирования субблоков для сканирования между субблоками (субблоками 4x4, показанными с помощью более жирной рамки) блока коэффициентов преобразования. В общем, прямой вертикальный порядок 204 сканирования субблоков проходит по каждому из субблоков от относительного первого субблока 206 в верхнем левом углу блока к последнему субблоку 208 в нижнем правом углу в последовательности вертикальных линий сверху вниз и слева направо. Иными словами, в примере, показанном на фиг. 8C, прямой вертикальный порядок сканирования субблоков продолжается от первого субблока 206 вниз к относительному низу блока. Каждый следующий столбец сканируется сверху вниз до достижения последнего субблока 208.
[0156] Фиг. 8D, в общем, иллюстрирует диагональный порядок 210 сканирования субблоков для сканирования между субблоками (субблоками 4x4, показанными с помощью более жирной рамки) блока коэффициентов преобразования. В общем, диагональный порядок 210 сканирования субблоков проходит по каждому из субблоков от относительного первого субблока 212 в верхнем левом углу блока к последнему субблоку 214 в нижнем правом углу блока под углом в 45 градусов слева направо и снизу вверх. Иными словами, в примере, показанном на фиг. 8D, диагональный порядок 210 сканирования субблоков проходит по блоку под углом в 45 градусов от нижнего левого угла блока к верхнему правому углу блока в последовательных диагональных линиях от первого субблока 212 к последнему субблоку 214.
[0157] Каждое из сканирований субблоков, показанных на фиг. 8A-8D, продолжается в прямом направлении, т.е. от меньших коэффициентов преобразования частоты в верхнем левом углу блока преобразования к большим коэффициентам преобразования частоты в нижнем правом углу блока преобразования. Альтернативно, каждое из сканирований может продолжаться в обратном направлении (т.е. от нижнего правого угла блока к верхнему левому углу). В данном примере, как отмечено выше, коэффициенты преобразования с нулевым значением могут быть размещены в начале преобразованной в последовательную форму матрицы. Если позиция последнего коэффициента кодируется явно в потоке битов, обратное сканирование субблоков может начинаться с субблока, который содержит последний значимый коэффициент относительно прямого сканирования. Кроме того, в этом субблоке сканирование может начинаться с последнего значимого коэффициента (для кодирования уровней) или коэффициента после последнего значимого коэффициента в обратном порядке сканирования. Альтернативно, все субблоки и все коэффициенты могут всегда сканироваться, но коэффициенты, которые находятся после последнего значимого коэффициента относительно прямого сканирования, могут логически выводиться равными нулю.
[0158] Например, фиг. 8E, в общем, иллюстрирует обратный диагональный порядок 216 сканирования субблоков для сканирования между субблоками (субблоками 4x4, показанными с помощью более жирной рамки) блока коэффициентов преобразования в обратном порядке по отношению к порядку сканирования субблоков, показанному на фиг. 8D. В общем, обратный диагональный порядок 216 сканирования субблоков проходит по каждому из субблоков от относительного первого субблока 217 в нижнем правом углу блока к последнему субблоку 218 в верхнем левом углу блока под углом в 45 градусов справа налево и сверху вниз. Иными словами, в примере, показанном на фиг. 8E, обратный диагональный порядок 216 сканирования субблоков проходит по блоку под углом в 45 градусов от верхнего правого угла блока к нижнему левому углу блока в последовательных диагональных линиях от первого субблока 217 к последнему субблоку 218.
[0159] Следует понимать, что порядки сканирования субблоков, показанные на фиг. 8A-8E, предоставляются только в целях иллюстрации. Помимо этого, различные компоненты, ассоциированные с коэффициентами преобразования (например, значимость, знак, уровень и т.п.), могут быть сканированы с использованием сканирований различных ориентаций. Например, в некоторых случаях, информация значимости (например, флаги значимости) может быть сканирована в противоположном направлении по отношению к уровням коэффициентов преобразования. В других случаях, унифицированный шаблон сканирования может быть реализован таким образом, что информация значимости и уровни коэффициентов преобразования сканируются в идентичном направлении.
[0160] Согласно аспектам этого раскрытия сущности, порядки сканирования субблоков, показанные на фиг. 8A-8E, могут совпадать с соответствующими порядками сканирования коэффициентов, используемыми для того, чтобы сканировать коэффициенты преобразования в пределах каждого из субблоков. Иными словами, порядок сканирования коэффициентов для сканирования коэффициентов в пределах каждого из субблоков может быть идентичным порядкам сканирования субблоков для сканирования самих субблоков.
[0161] Согласно другим аспектам этого раскрытия сущности, порядок сканирования коэффициентов и/или порядок сканирования субблоков может быть адаптивным. Иными словами, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может выбирать порядок сканирования субблоков и/или порядок сканирования коэффициентов для блока на основе размера блока, режима внутреннего/взаимного прогнозирования, информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) или других характеристик кодирования видео. В другом примере, порядок сканирования субблоков и порядок сканирования коэффициентов могут быть определены из анализа искажения в зависимости от скорости передачи в видеокодере 20. В этом случае, синтаксис (например, индекс сканирования блоков из таблицы 1, показанной ниже), указывающий порядок сканирования субблоков и порядок сканирования коэффициентов, может быть передан в служебных сигналах в кодированном потоке видеобитов для использования в декодере.
[0162] Соответственно, коэффициенты преобразования в пределах каждого субблока, показанного на фиг. 8A-8E, могут быть сканированы согласно идентичным или различным порядкам сканирования. Иными словами, зигзагообразные, горизонтальные, диагональные или вертикальные порядки сканирования могут быть использованы для того, чтобы сканировать коэффициенты преобразования в пределах каждого субблока. С другой стороны, каждый из этих порядков сканирования может быть в прямом или обратном направлении. Порядок сканирования коэффициентов может отличаться или быть идентичным порядку сканирования субблоков. Помимо этого, порядок сканирования коэффициентов может быть идентичным для каждого субблока в блоке коэффициентов преобразования, или порядок сканирования коэффициентов для каждого субблока может выбираться отдельно. Например, если как порядок сканирования субблоков, так и порядок сканирования коэффициентов используют три сканирования (т.е. диагональное, горизонтальное и вертикальное), как показано в таблице 1 ниже, общее число потенциальных сканирования для блока составляет 3×3=9.
Таблица 1
Комбинации порядков сканирования
Индекс сканирования блоков
Сканирование субблоков
Сканирование коэффициентов
0
Диагональное
Диагональное
1
Диагональное
Горизонтальное
2
Диагональное
Вертикальное
3
Горизонтальное
Диагональное
4
Горизонтальное
Горизонтальное
5
Горизонтальное
Вертикальное
6
Вертикальное
Диагональное
7
Вертикальное
Горизонтальное
8
Вертикальное
Вертикальное
[0163] Следует понимать, что таблица 1 предоставляется только для примера, и что другие сканирования могут быть доступными для выбора во время определения адаптивного сканирования. Например, зигзагообразное сканирование, обратные сканирования относительных любых или всех из вышеуказанных сканирования либо сканирования других ориентаций также могут быть доступными для выбора. Как упомянуто в другом месте, методики сканирования этого раскрытия сущности могут быть применимыми для процессов сканирования, используемых для CAVLC, CABAC или других методик энтропийного кодирования. Например, вышеуказанные методики сканирования могут быть применимыми для использования при сканировании на основе карты значимости и на уровне коэффициентов для CABAC.
[0164] Фиг. 9A и 9B, в общем, более подробно иллюстрируют сканирование коэффициентов преобразования множества субблоков в порядке сканирования коэффициентов, а также сканирование множества субблоков в порядке сканирования субблоков. Например, относительно фиг. 9A, согласно аспектам этого раскрытия сущности, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может разделять блок 220 на субблоки 222A, 222B, 222C и 222D (совместно, субблоки 222) при кодировании блока 220. Иными словами, видеокодер 20 может разделять блок 220 на субблоки 222 при преобразовании в последовательную форму коэффициентов преобразования блока 220. Альтернативно, видеодекодер 30 может восстанавливать коэффициенты преобразования блока 220 с использованием субблоков 222.
[0165] В любом случае, пример, показанный на фиг. 9A, в общем, иллюстрирует диагональный порядок сканирования коэффициентов для сканирования коэффициентов преобразования блока 220, в то время как фиг. 9B, в общем, иллюстрирует аналогично ориентированный диагональный порядок сканирования субблоков для сканирования субблоков 222. Соответственно, как показано на фиг. 9A и 9B, видеокодер может сканировать коэффициенты преобразования, ассоциированные с первым субблоком 222A, размещенным в верхнем левом углу блока 220. Видеокодер затем может сканировать коэффициенты преобразования, ассоциированные со вторым субблоком 222B, размещенным в нижнем левом углу блока 220, после этого с третьим субблоком 222C, размещенным в верхнем правом углу блока 220, и с четвертым субблоком 222D, размещенным в нижнем правом углу блока 220.
[0166] Как отмечено выше, в некоторых примерах, видеокодер может кодировать информацию значимости и уровни коэффициентов субблоков 222 в нескольких проходах. Согласно некоторым аспектам этого раскрытия сущности, видеокодер может кодировать каждый из субблоков 222 последовательно. Иными словами, видеокодер может выполнять все проходы кодирования для субблока 222A в порядке сканирования коэффициентов преобразования. Видеокодер затем может переходить к субблоку 222B, а после этого к субблоку 222C и субблоку 222D, заканчивая кодирование коэффициентов в одном субблоке перед переходом к следующему субблоку.
[0167] В других примерах, один проход кодирования из множества проходов кодирования может быть выполнен для всего блока 220 перед переходом к следующему проходу кодирования. Иными словами, видеокодер может выполнять первый проход кодирования для блока 220 для всех коэффициентов преобразования субблоков 222 в порядке сканирования коэффициентов преобразования и для всех субблоков 222 в порядке сканирования субблоков. Видеокодер затем может выполнять следующий проход кодирования для блока 222 аналогичным образом до тех пор, пока все проходы кодирования не будут завершены.
[0168] В некоторых примерах, видеокодер может использовать унифицированное сканирование для сканирования коэффициентов преобразования субблоков 222. Например, видеокодер может сканировать информацию значимости (например, флаги значимости) и уровни коэффициентов с использованием сканирования, имеющего диагональную ориентацию, показанную на фиг. 9A и 9B. В других примерах, видеокодер может сканировать компоненты коэффициентов преобразования (например, значимость, знак, уровни и т.п.) блока 222 с использованием обратных сканирований или сканирований, имеющих другие ориентации. Например, видеокодер может первоначально сканировать информацию карты значимости при прямом сканировании. Видеокодер затем может сканировать один или более элементов выборки уровня коэффициентов при обратном сканировании.
[0169] Хотя примеры, показанные на фиг. 9A и 9B, в общем, иллюстрируют диагональный шаблон сканирования, как отмечено выше относительно фиг. 5A и 5B, может использоваться множество других шаблонов сканирования, таких как зигзагообразный шаблон, адаптивный порядок сканирования, горизонтальный шаблон, вертикальный шаблон и т.п. Помимо этого, в то время как примеры, показанные на фиг. 9A и 9B, иллюстрируют блоки 8x8 коэффициентов преобразования с субблоками 4x4, следует понимать, что методики этого раскрытия сущности могут применяться к блокам других размеров, а также к субблокам других размеров. Например, субблок может включать в себя любой блок nxn (или блок nxm, в случаях, в которых субблоки не являются квадратными) коэффициентов преобразования единицы преобразования (TU), где nxn меньше или равен размеру TU. Помимо этого, субблоки равных размеров, как показано на фиг. 9A и 9B, могут помогать достигать аппаратной эффективности (например, аппаратные средства могут быть оптимизированы с возможностью работать со статическим размером субблока). Тем не менее, в других примерах, методики этого раскрытия сущности могут применяться к субблокам, имеющим другие размеры.
[0170] Фиг. 10A и 10B также, в общем, более подробно иллюстрируют сканирование коэффициентов преобразования множества субблоков в порядке сканирования коэффициентов, а также сканирование множества субблоков в порядке сканирования субблоков. Например, относительно фиг. 10A, согласно аспектам этого раскрытия сущности, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может разделять блок 224 на субблоки 226A, 226B, 226C и 226D (совместно, субблоки 226) при кодировании блока 224. Иными словами, видеокодер 20 может разделять блок 224 на субблоки 226 при преобразовании в последовательную форму коэффициентов преобразования блока 224. Альтернативно, видеодекодер 30 может восстанавливать коэффициенты преобразования блока 224 с использованием субблоков 226.
[0171] Пример, показанный на фиг. 10A, в общем, иллюстрирует обратный диагональный порядок сканирования коэффициентов для сканирования коэффициентов преобразования блока 224 (относительно порядка диагонального сканирования, показанного на фиг. 9A), в то время как фиг. 10B, в общем, иллюстрирует аналогично ориентированный обратный диагональный порядок сканирования субблоков для сканирования субблоков 222 (относительно порядка диагонального сканирования, показанного на фиг. 9B). Соответственно, как показано на фиг. 10A и 10B, видеокодер может первоначально сканировать коэффициенты преобразования, ассоциированные с первым субблоком 226A, размещенным в нижнем правом углу блока 224. Видеокодер затем может сканировать коэффициенты преобразования, ассоциированные со вторым субблоком 226B, размещенным в верхнем правом углу блока 224, после этого с третьим субблоком 226C, размещенным в нижнем левом углу блока 224, и с четвертым субблоком 226D, размещенным в верхнем левом углу блока 224.
[0172] Фиг. 11A и 11B также, в общем, более подробно иллюстрируют сканирование коэффициентов преобразования множества субблоков в порядке сканирования коэффициентов, а также сканирование множества субблоков в порядке сканирования субблоков. Например, относительно фиг. 11A, согласно аспектам этого раскрытия сущности, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может разделять блок 228 на субблоки 230A, 230B, 230C и 230D (совместно, субблоки 230) при кодировании блока 228. Иными словами, видеокодер 20 может разделять блок 228 на субблоки 230 при преобразовании в последовательную форму коэффициентов преобразования блока 228. Альтернативно, видеодекодер 30 может восстанавливать коэффициенты преобразования блока 228 с использованием субблоков 230.
[0173] Пример, показанный на фиг. 11A, в общем, иллюстрирует обратный вертикальный порядок сканирования коэффициентов для сканирования коэффициентов преобразования блока 228, в то время как фиг. 11B, в общем, иллюстрирует аналогично ориентированный обратный вертикальный порядок сканирования субблоков для сканирования субблоков 230. Соответственно, как показано на фиг. 11A и 11B, видеокодер может первоначально сканировать коэффициенты преобразования, ассоциированные с первым субблоком 230A, размещенным в нижнем правом углу блока 228. Видеокодер затем может сканировать коэффициенты преобразования, ассоциированные со вторым субблоком 230B, размещенным в верхнем правом углу блока 228, после этого с третьим субблоком 230C, размещенным в нижнем левом углу блока 228, и с четвертым субблоком 230D, размещенным в верхнем левом углу блока 228.
[0174] Соответственно, пример, показанный на фиг. 11A и 11B, включает в себя ориентацию сканирования, имеющую обратную вертикальную ориентацию, так что выполнение сканирования для блока 228 включает в себя вертикальное сканирование коэффициентов преобразования каждого из множества субблоков 230 в порядке сканирования коэффициентов снизу вверх и справа налево в пределах каждого из множества субблоков и вертикальное сканирование через каждый из множества субблоков в порядке сканирования субблоков снизу вверх и справа налево блока 228.
[0175] Фиг. 12A и 12B также, в общем, более подробно иллюстрируют сканирование коэффициентов преобразования множества субблоков в порядке сканирования коэффициентов, а также сканирование множества субблоков в порядке сканирования субблоков. Например, относительно фиг. 12A, согласно аспектам этого раскрытия сущности, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может разделять блок 234 на субблоки 236A, 236B, 236C и 236D (совместно, субблоки 236) при кодировании блока 234. Иными словами, видеокодер 20 может разделять блок 234 на субблоки 236 при преобразовании в последовательную форму коэффициентов преобразования блока 234. Альтернативно, видеодекодер 30 может восстанавливать коэффициенты преобразования блока 234 с использованием субблоков 236.
[0176] Пример, показанный на фиг. 12A, в общем, иллюстрирует обратный горизонтальный порядок сканирования коэффициентов для сканирования коэффициентов преобразования блока 234, в то время как фиг. 12B, в общем, иллюстрирует аналогично ориентированный обратный вертикальный порядок сканирования субблоков для сканирования субблоков 236. Соответственно, как показано на фиг. 12A и 12B, видеокодер может первоначально сканировать коэффициенты преобразования, ассоциированные с первым субблоком 236A, размещенным в нижнем правом углу блока 234. Видеокодер затем может сканировать коэффициенты преобразования, ассоциированные со вторым субблоком 236B, размещенным в верхнем правом углу блока 234, после этого с третьим субблоком 236C, размещенным в нижнем левом углу блока 234, и с четвертым субблоком 236D, размещенным в верхнем левом углу блока 234.
[0177] Соответственно, пример, показанный на фиг. 12A и 12B, включает в себя ориентацию сканирования, имеющую обратную горизонтальную ориентацию, так что выполнение сканирования для блока 234 содержит горизонтальное сканирование коэффициентов преобразования каждого из множества субблоков 236 в порядке сканирования коэффициентов справа налево и снизу вверх в пределах каждого из множества субблоков 236 и горизонтальное сканирование через каждый из множества субблоков в порядке сканирования субблоков справа налево и снизу вверх блока 234.
[0178] Для того, чтобы упрощать обратное сканирование, показанное на фиг. 10A-12B, в некоторых примерах, видеокодер может сначала идентифицировать последний значимый коэффициент соответствующего блока, а также последний значимый коэффициент каждого соответствующего субблока. Иными словами, в то время как примеры, показанные на фиг. 10A-12B, в общем, иллюстрируют все сканируемые позиции коэффициентов преобразования, как описано выше, видеокодер может только сканировать значимые коэффициенты. Соответственно, видеокодер может определять последний значимый коэффициент в пределах каждого из субблоков и сканировать каждый из субблоков в порядке сканирования коэффициентов от последнего значимого коэффициента каждого субблока к относительному первому значимому коэффициенту (например, DC-коэффициенту) каждого субблока. Помимо этого, видеокодер может определять последний значимый коэффициент блока и сканировать субблоки в порядке сканирования субблоков от последнего значимого коэффициента блока к относительному первому значимому коэффициенту в блоке (например, DC-коэффициенту). Соответственно, если один или более субблоков не содержат значимые коэффициенты, такие коэффициенты преобразования и/или субблоки не могут быть сканированы.
[0179] Фиг. 13 является концептуальной схемой, иллюстрирующей пример контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных. Например, фиг. 13 иллюстрирует блок коэффициентов 240 преобразования, который разделен на множество субблоков (субблоков 4x4, показанных с помощью более жирной рамки), и диагонально ориентированный порядок сканирования коэффициентов в субблоках, проходящих через позицию 244 коэффициента преобразования, в данный момент кодируемую (сплошной блок). Пример, показанный на фиг. 13, включает в себя окружение 246 поддержки контекста, имеющее четыре элемента поддержки контекста (заштрихованные блоки). Относительно окружения поддержки контекста, показанного на фиг. 6, окружение 246 поддержки контекста имеет удаленную позицию 248. Иными словами, например, контекст для кодирования флага значимости для коэффициента 244 преобразования, в данный момент кодируемого, не включает в себя данные из удаленной позиции 248.
[0180] Как отмечено выше, каждый элемент выборки для блока видеоданных, соответствующий либо уровню остаточных коэффициентов преобразования, либо информации значимости для блока, может быть кодирован с использованием оценок вероятности для элемента выборки, которые указывают вероятность того, что элемент выборки имеет данное значение (например, 0 или 1). Вероятностная модель выбирается посредством определения контекста для элемента выборки, который может быть идентифицирован посредством окружения поддержки контекста. Иными словами, окружение поддержки контекста может идентифицировать относительные позиции ранее кодированных элементов синтаксиса, используемых для того, чтобы извлекать контекст для энтропийного кодирования конкретного символа или флага, ассоциированного с коэффициентом преобразования. Контекст, например, фактические значения элементов синтаксиса, расположенных в позициях окружения контекста, определяет вероятностную модель.
[0181] В примере, показанном на фиг. 6, любой из коэффициентов преобразования вдоль линии 171 шаблона сканирования может быть кодирован параллельно, поскольку ни одна позиция в линии 171 сканирования не включает в себя окружение поддержки контекста, которое зависит от другой позиции в линии 171 сканирования (при условии, что идентичное окружение поддержки контекста используется для всех позиций). Соответственно, линия 171 сканирования обеспечивает возможность параллельного вычисления контекстов множества флагов значимости, в силу этого обеспечивая упреждающую выборку контекста для кодирования на основе флагов значимости.
[0182] Тем не менее, когда зигзагообразное или диагональное сканирование применяется к относительно большим блокам (к примеру, к блоку, показанному на фиг. 6), несколько коэффициентов могут выбираться одновременно, в силу этого увеличивая нагрузку в аппаратной реализации. Иными словами, коэффициенты преобразования, которые обрабатываются до и после коэффициента преобразования, в данный момент кодируемого, вдоль линии 171 сканирования, не размещаются в столбце или строке, идентичном столбцу или строке коэффициента преобразования, в данный момент кодируемого. Традиционно, коэффициенты преобразования упорядочиваются и сохраняются посредством столбца и строки. Соответственно, чтобы иметь возможность извлекать смежные данные, несколько диагональных линий коэффициентов преобразования, возможно, должны быть обработаны. В некоторых случаях, программные реализации с одним потоком инструкций и несколькими потоками данных (SIMD) могут сталкиваться с аналогичными проблемами при параллелизации этих больших сканирований. Введение локальности субблоков может помогать облегчать эту проблему. Иными словами, меньшие субблоки могут обеспечивать возможность более эффективного извлечения данных.
[0183] Хотя разделение блока коэффициентов преобразования на субблоки может помогать облегчать проблему, описанную выше, субблоки также могут создавать зависимость от контекста в субблоках (например, при энтропийном кодировании с использованием контекста). Иными словами, окружение поддержки контекста для некоторых позиций в субблоке может основываться на других позициях в субблоке. В качестве примера в целях иллюстрации и как показано на фиг. 13, при сканировании в субблоках с использованием зигзагообразного или прямого диагонального порядка сканирования коэффициентов, окружение поддержки контекста для первой позиции коэффициента преобразования (т.е. позиции 244, в данный момент кодируемой в верхнем левом углу блока) типично может включать в себя позицию непосредственно ниже позиции 244, в данный момент кодируемой (например, с использованием окружения поддержки контекста из пяти позиций, показанного на фиг. 6). Тем не менее, эта зависимость может накладывать нежелательную задержку при энтропийном кодировании. Иными словами, коэффициент преобразования субблока, который размещается непосредственно перед позицией 244, в данный момент кодируемой, вероятно, должен быть кодирован, чтобы извлекать контекст для позиции, в данный момент кодируемой. Для того, чтобы не допускать этой зависимости и за счет этого повышать параллелизацию, аспекты этого раскрытия сущности относятся к модификации позиций, из которых контекст извлекается в субблоках, т.е. окружения поддержки контекста для позиций в субблоках.
[0184] Согласно аспектам этого раскрытия сущности, одна или более позиций могут удаляться из окружения поддержки контекста для определенных позиций в субблоках. Иными словами, в примере, показанном на фиг. 13, видеокодер может удалять удаленную позицию 248 из окружения поддержки контекста при кодировании текущей позиции 244, в силу этого предоставляя уменьшенное окружение поддержки контекста. Удаленная позиция 248 размещается непосредственно перед текущей позицией 244 в порядке сканирования коэффициентов. Посредством невыполнения извлечения данных, ассоциированных с удаленной позицией 248 в ходе кодирования, исключается зависимость, описанная выше. Соответственно, видеокодер может кодировать как текущую позицию 244, так и удаленную позицию 248 параллельно (например, контекст может быть упреждающе выбран для нескольких позиций в субблоке). Методика удаления окружения поддержки контекста, показанная и описанная относительно фиг. 13, может быть расширена с двух позиций до трех или более позиций, в зависимости от числа коэффициентов преобразования, которые сканируются и кодируются параллельно. Иными словами, например, если три коэффициента преобразования кодируются параллельно, видеокодер может удалять удаленную позицию 248, а также позицию непосредственно перед удаленной позицией в порядке сканирования (например, позицию непосредственно справа от текущей позиции 244).
[0185] В некоторых примерах, чтобы выполнять аспекты этого раскрытия сущности, видеокодер может извлекать позицию в порядке сканирования коэффициента с учетом позиции на основе блоков коэффициента. Один процесс, который может быть использован для того, чтобы определять позицию, приводится ниже (например, в C-коде для случая субблока 8x8 и диагонального сканирования):
UInt uiScanPosLast=0;
UInt sWidth=uiWidth>>3;
UInt sX=uiPosLastX>>3;
UInt sY=uiPosLastY>>3;
UInt uiDs=sX+sY;
if(uiDs<sWidth){
uiScanPosLast+=sX+((uiDs*(uiDs+1))>>1);
}
else{
UInt uiDI=((sWidth-1)<<1)-uiDs;
uiScanPosLast+=sWidth*(sWidth-1)-(uiDI*(uiDI+1)>>1)+sX
}
uiPosLastX-=sX<<3;
uiPosLastY-=sY<<3;
uiScanPosLast<<=6;
UInt uiD=uiPosLastY+uiPosLastX;
if(uiD<8){
uiScanPosLast+=uiPosLastX+((uiD*(uiD+1))>>1);
}
else{
UInt uiDI=14-uiD;
uiScanPosLast+=56-(uiDI*(uiDI+1)>>1)+uiPosLastX;
},
где uiPosLastX и uiPosLastX являются вводом для местоположения X и Y коэффициента преобразования в блоке, uiWidth является шириной и высотой блока (при допущении в целях примера, что блок является квадратным), и uiScanPosLast является выводом, который идентифицирует позицию коэффициента в порядке сканирования субблоков. После того, как позиция коэффициента преобразования известна, видеокодер может определять то, существуют или нет какие-либо зависимости от контекста. Если такие зависимости от контекста существуют, видеокодер может удалять одну или более позиций из окружения поддержки контекста, как описано выше.
[0186] Согласно аспектам этого раскрытия сущности, некоторые позиции окружения поддержки контекста не могут удаляться. Например, DC-позиция (например, в верхнем левом углу блока) по-прежнему может использовать позицию контекста, которая удалена из примера, показанного на фиг. 13. Определение в отношении того, следует или нет удалять позицию из окружения поддержки контекста, может быть основано на обеспечении баланса между эффективностью кодирования, полученной посредством включения всех позиций в окружение поддержки контекста (например, вследствие более точной оценки того, что текущая позиция равна 1 или 0), и задержкой, введенной посредством включения всех позиций. Кроме того, как описано относительно фиг. 14 ниже, не все позиции субблоков испытывают идентичную проблему задержки, описанную относительно фиг. 13.
[0187] Фиг. 14 является концептуальной схемой, иллюстрирующей другой пример контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных. Например, фиг. 14 иллюстрирует блок коэффициентов 250 преобразования, который разделен на множество субблоков (субблоков 4x4, показанных с помощью более жирной рамки), и диагонально ориентированный порядок сканирования коэффициентов в субблоках, проходящих через позицию 254 коэффициента преобразования, в данный момент кодируемую (сплошной черный блок). Пример, показанный на фиг. 14, включает в себя окружение 256 поддержки контекста, имеющее пять элементов поддержки контекста (заштрихованные блоки). Иными словами, окружение поддержки контекста на фиг. 14 включает в себя все пять позиций.
[0188] Окружение 254 поддержки контекста, показанное на фиг. 14, может включать в себя все пять позиций окружения поддержки контекста, поскольку проблема зависимости от контекста, описанная относительно фиг. 13, больше не присутствует. Например, позиция, которая сканируется и кодируется непосредственно перед текущей позицией 254, не включается в окружение 256 поддержки контекста. Соответственно, проблема зависимости от контекста и ассоциированная задержка в контуре, описанная выше, не присутствует. Таким образом, в некоторых примерах, как отмечено выше, видеокодер может определять позицию коэффициента преобразования, в данный момент кодируемого, до удаления позиций из окружения поддержки контекста.
[0189] Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей примерный процесс кодирования видео для кодирования коэффициентов преобразования. Этот способ может осуществляться посредством видеокодера 20 по фиг. 1 и 2. Хотя описаны относительно видеокодера 20, следует понимать, что методики, описанные относительно фиг. 15, могут быть выполнены посредством множества других процессоров, модулей обработки, аппаратных модулей кодирования, таких как кодеры/декодеры (кодеки) и т.п.
[0190] Видеокодер 20 может разделять блок коэффициентов преобразования на множество субблоков (280). В некоторых примерах, субблоки могут иметь размер 4x4 коэффициентов преобразования. В других примерах, видеокодер 20 может формировать большие или меньшие субблоки. Иными словами, в других примерах, размер субблоков может составлять 2x2, 8x8, 16x16 или nxn при условии, что размер субблока меньше или равен исходному размеру блока. Видеокодер 20 может определять способ, которым разделяется блок, на основе размера блока. В этом примере, видеодекодер (к примеру, видеодекодер 30) может логически выводить то, как подразделять блок, на основе его размера. В других примерах, видеокодер 20 может указывать число и/или размер субблоков в кодированном потоке битов (например, в заголовке, наборе параметров и т.п.).
[0191] Видеокодер 20 также может определять порядок сканирования субблоков для множества субблоков и порядок сканирования коэффициентов для коэффициентов преобразования в пределах каждого из множества субблоков (282). В общем, порядок сканирования субблоков может быть порядком, в котором сканируется каждый из множества субблоков. Порядок сканирования коэффициентов может быть порядком, в котором сканируются коэффициенты преобразования в пределах каждого из множества субблоков. Порядок сканирования субблоков и порядок сканирования коэффициентов могут включать в себя как шаблон сканирования, так и направление сканирования (например, диагональный шаблон сканирования, имеющий конкретное направление). Например, порядок сканирования субблоков может представлять собой один из прямого зигзагообразного сканирования, прямого горизонтального сканирования, прямого вертикального сканирования, прямого диагонального сканирования, обратного зигзагообразного сканирования, обратного горизонтального сканирования, обратного вертикального сканирования и обратного диагонального сканирования. Аналогично, порядок сканирования коэффициентов может представлять собой один из прямого зигзагообразного сканирования, прямого горизонтального сканирования, прямого вертикального сканирования, прямого диагонального сканирования, обратного зигзагообразного сканирования, обратного горизонтального сканирования, обратного вертикального сканирования и обратного диагонального сканирования.
[0192] Согласно аспектам этого раскрытия сущности, видеокодер 20 может определять порядок сканирования субблоков, который совпадает с порядками сканирования коэффициентов, используемыми для того, чтобы сканировать коэффициенты преобразования в пределах каждого из субблоков. Иными словами, видеокодер 20 может использовать порядок сканирования коэффициентов для сканирования коэффициентов в пределах каждого из субблоков, который является идентичным порядкам сканирования субблоков для сканирования самих субблоков. В примере в целях иллюстрации, как описано относительно фиг 10A и 10B, видеокодер 20 может определять обратную диагональную ориентацию для порядка сканирования субблоков и порядка сканирования коэффициентов. В этом примере, сканирование проходит между субблоками в порядке сканирования коэффициентов от нижнего правого угла субблока к верхнему левому углу субблоков и диагонально сканирует между каждым из субблоков в порядке сканирования субблоков от нижнего правого субблока блока к верхнему левому субблоку блока.
[0193] Согласно другим аспектам этого раскрытия сущности, видеокодер 20 может адаптивно определять порядок сканирования коэффициентов и/или порядок сканирования субблоков. Иными словами, видеокодер 20 может выбирать порядок сканирования субблоков и/или порядок сканирования коэффициентов для блока на основе размера блока, режима внутреннего/взаимного прогнозирования, информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) или других характеристик кодирования видео. В другом примере, видеокодер 20 может определять порядок сканирования субблоков и порядок сканирования коэффициентов на основе анализа искажения в зависимости от скорости передачи. В этом случае, видеокодер 20 может включать в себя синтаксис (например, индекс сканирования блоков, к примеру, показанный в вышеприведенной таблице 1) в кодированном потоке битов, указывающий порядок сканирования субблоков и порядок сканирования коэффициентов для использования в декодере.
[0194] Видеокодер 20 также может выполнять сканирование для блока коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать одномерную матрицу коэффициентов преобразования (284). Видеокодер 20 также может кодировать одномерную матрицу коэффициентов преобразования (286). В некоторых примерах, сканирование и кодирование коэффициентов преобразования может перемежаться. Иными словами, коэффициенты преобразования могут быть кодированы по мере того, как они сканируются (например, вместо сканирования всех коэффициентов преобразования блока до кодирования).
[0195] Также следует понимать, что этапы, показанные и описанные относительно фиг. 15, предоставляются в качестве только одного примера. Иными словами, этапы способа по фиг. 15 не обязательно должны выполняться в порядке, показанном на фиг. 15, и могут выполняться меньшее число, дополнительные или альтернативные этапы.
[0196] Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей примерный процесс декодирования видео. Способ по фиг. 16, в некоторых примерах, может осуществляться посредством видеодекодера 30 фиг. 1 и 3. Хотя описаны относительно видеодекодера 30, следует понимать, что методики, описанные относительно фиг. 16, могут быть выполнены посредством множества других процессоров, модулей обработки, аппаратных модулей кодирования, таких как кодеры/декодеры (кодеки) и т.п.
[0197] Видеодекодер 30 может принимать одномерную матрицу коэффициентов преобразования (300). Согласно некоторым примерам, матрица коэффициентов преобразования может быть кодирована согласно множеству субблоков. Например, субблоки могут иметь размер 4x4 коэффициентов преобразования. В других примерах, субблоки могут быть 2x2, 8x8, 16x16 или nxn при условии, что размер субблока меньше или равен исходному размеру блока. В некоторых примерах, видеодекодер 30 может логически выводить размер субблоков на основе размера принимаемого блока (например, на основе принимаемого синтаксиса, указывающего размер блока). В других примерах, видеодекодер 30 может принимать индикатор, связанный с числом и/или размером субблоков, в кодированном потоке битов (например, в заголовке, наборе параметров и т.п.).
[0198] В любом случае, видеодекодер 30 может определять порядок сканирования субблоков для множества субблоков и порядок сканирования коэффициентов для коэффициентов преобразования в пределах каждого из множества субблоков (302). Порядок сканирования субблоков и порядок сканирования коэффициентов могут включать в себя как шаблон сканирования, так и направление сканирования (например, диагональный шаблон сканирования, имеющий конкретное направление). Например, порядок сканирования субблоков может представлять собой один из прямого зигзагообразного сканирования, прямого горизонтального сканирования, прямого вертикального сканирования, прямого диагонального сканирования, обратного зигзагообразного сканирования, обратного горизонтального сканирования, обратного вертикального сканирования и обратного диагонального сканирования. Аналогично, порядок сканирования коэффициентов может представлять собой один из прямого зигзагообразного сканирования, прямого горизонтального сканирования, прямого вертикального сканирования, прямого диагонального сканирования, обратного зигзагообразного сканирования, обратного горизонтального сканирования, обратного вертикального сканирования и обратного диагонального сканирования.
[0199] Согласно аспектам этого раскрытия сущности, видеодекодер 30 может определять порядок сканирования субблоков, который совпадает с порядками сканирования коэффициентов, используемыми для того, чтобы сканировать коэффициенты преобразования в пределах каждого из субблоков. Иными словами, видеодекодер 30 может использовать порядок сканирования коэффициентов для сканирования коэффициентов в пределах каждого из субблоков, который является идентичным порядкам сканирования субблоков для сканирования самих субблоков, к примеру, по шаблону и направлению. В примере в целях иллюстрации, как описано относительно фиг 10A и 10B, видеодекодер 30 может определять обратную диагональную ориентацию для порядка сканирования субблоков и порядка сканирования коэффициентов. В этом примере, сканирование проходит между субблоками в порядке сканирования коэффициентов от нижнего правого угла субблока к верхнему левому углу субблоков и диагонально сканирует между каждым из субблоков в порядке сканирования субблоков от нижнего правого субблока блока к верхнему левому субблоку блока.
[0200] Согласно другим аспектам этого раскрытия сущности, видеодекодер 30 может адаптивно определять порядок сканирования коэффициентов и/или порядок сканирования субблоков. Иными словами, видеодекодер 30 может выбирать порядок сканирования субблоков и/или порядок сканирования коэффициентов для блока на основе размера блока, режима внутреннего/взаимного прогнозирования, информации соседнего блока (режима прогнозирования, информации движения, индекса сканирования) или других характеристик кодирования видео. В другом примере, видеодекодер 30 может принимать один или более элементов синтаксиса в кодированном потоке битов, указывающих порядок сканирования субблоков и порядок сканирования коэффициентов.
[0201] Видеодекодер 30 также может выполнять сканирование для одномерной матрицы коэффициентов преобразования согласно порядку сканирования субблоков и порядку сканирования коэффициентов для того, чтобы формировать блок коэффициентов преобразования (304). Иными словами, видеодекодер может сканировать принятые коэффициенты преобразования в порядке сканирования коэффициентов для того, чтобы восстанавливать субблоки, и сами субблоки в порядке сканирования субблоков для того, чтобы восстанавливать двумерный блок коэффициентов преобразования, кодированных посредством видеокодера. Затем, видеодекодер 30 может обратно квантовать и применять обратное преобразование к двумерному блоку коэффициентов преобразования, чтобы формировать остаточные значения. Видеодекодер затем может суммировать остаточные значения с прогнозирующими значениями, чтобы восстанавливать пикселы кодированного блока.
[0202] Также следует понимать, что этапы, показанные и описанные относительно фиг. 16, предоставляются в качестве только одного примера. Иными словами, этапы способа по фиг. 16 не обязательно должны выполняться в порядке, показанном на фиг. 16, и могут выполняться меньшее число, дополнительные или альтернативные этапы.
[0203] Фиг. 17 иллюстрирует примерный способ контекстно-адаптивного кодирования коэффициентов преобразования субблока видеоданных. В примере, показанном на фиг. 17, видеокодер (к примеру, видеокодер 20 или видеодекодер 30) может первоначально определять позицию коэффициента преобразования, в данный момент кодируемого, в порядке сканирования субблоков (320). Иными словами, видеокодер может определять относительную позицию коэффициента преобразования, в данный момент кодируемого, а также конкретную ориентацию сканирования, используемого для того, чтобы сканировать коэффициент преобразования.
[0204] На основе позиции и ориентации порядка сканирования, видеокодер может определять то, существуют или нет какие-либо зависимости от контекста в окружении поддержки контекста для контекстного кодирования коэффициента преобразования, в данный момент кодируемого (322). Например, как описано выше относительно фиг. 11 и 12 выше, в некоторых случаях, окружение поддержки контекста для позиции коэффициента преобразования в субблоке может основываться на позиции, кодированной непосредственно перед коэффициентом преобразования, в данный момент кодируемым.
[0205] Согласно аспектам этого раскрытия сущности, видеокодер может удалять зависимости от контекста на основе параметров параллельного вычисления контекстов (например, числа коэффициентов преобразования, которые кодируются параллельно) (324). Иными словами, как показано в примере по фиг. 13 выше, видеокодер может удалять позицию непосредственно перед коэффициентом преобразования, в данный момент кодируемым, из окружения поддержки контекста в случаях, в которых два коэффициента преобразования кодируются параллельно. В других примерах, три или более позиции могут удаляться из окружения поддержки контекста. Видеокодер затем может энтропийно кодировать коэффициент преобразования, в данный момент кодируемый, с использованием определенного окружения поддержки контекста (с удаленными зависимостями от контекста) (326).
[0206] Также следует понимать, что этапы, показанные и описанные относительно фиг. 17, предоставляются в качестве только одного примера. Иными словами, этапы способа по фиг. 17 не обязательно должны выполняться в порядке, показанном на фиг. 17, и могут выполняться меньшее число, дополнительные или альтернативные этапы.
[0207] Более того, следует понимать, что в зависимости от примера, определенные этапы или события любого из способов, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации способа). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно. Помимо этого, хотя конкретные аспекты этого раскрытия сущности описываются как выполняемые посредством одного модуля или блока для понятности, следует понимать, что методики этого раскрытия сущности могут выполняться посредством комбинации блоков или модулей, ассоциированных с видеокодером.
[0208] В одном или более примеров, функции, описанные в этом раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть выполнены посредством аппаратного модуля обработки, к примеру, одного или более процессоров, которые выполняют программное обеспечение в форме компьютерно-читаемых инструкций или кода. Такие инструкции или код могут быть сохранены или переданы с помощью компьютерно-читаемого носителя и выполнены посредством аппаратного модуля обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители хранения данных, которые соответствуют материальному энергонезависимому носителю, такие как носители хранения данных или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители, в общем, могут соответствовать (1) материальному компьютерно-читаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации методик, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0209] В качестве примера, а не ограничения, такие компьютерно-читаемые носители хранения данных могут содержать RAM, ROM, EEPROM, флэш-память, CD-ROM либо любые другие полупроводниковые, оптические или магнитные носители хранения данных, включающие в себя устройства хранения на оптических дисках, устройства хранения данных на магнитных дисках или другие магнитные устройства хранения данных, либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому может осуществляться доступ посредством компьютера. Так же, любое подключение корректно называть компьютерно-читаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые, включаются в определение носителя. Тем не менее, следует понимать, что материальные компьютерно-читаемые носители хранения и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения. Термин «диск» при использовании в данном документе включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом магнитные диски обычно воспроизводят данные магнитно, тогда как оптические диски обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в объем компьютерно-читаемых носителей.
[0210] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации методик, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схем или логических элементов.
[0211] Методики этого раскрытия сущности могут быть выполнены посредством широкого спектра устройств или аппаратов, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, так называемые смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр и т.п. Во многих случаях, такие устройства могут быть иметь поддержку беспроводной связи. Помимо этого, такие методики могут быть реализованы посредством интегральной схемы (IC) или набора IC (например, набора микросхем). Устройство, сконфигурированное с возможностью осуществлять методики этого раскрытия сущности, может включать в себя любое из упомянутых выше устройств и, в некоторых случаях, может быть видеокодером или видеодекодером либо комбинированным видеокодером-декодером, т.е. видеокодеком, который может формироваться посредством комбинации аппаратных средств, программного обеспечения и микропрограммного обеспечения. Различные компоненты, модули или блоки могут описываться в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые методики, но не обязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0212] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.