Порядки сканирования для кодирования без преобразования

Иллюстрации

Показать все

Изобретение относится к кодированию без преобразования блоков видеоконтента в соответствии с оптимальным порядком сканирования. Техническим результатом является уменьшение количества дублирующей информации, чтобы уменьшить количество битов, используемых для кодирования с предсказанием. Предложено непреобразованные блоки видеоконтента кодировать путем избирательного изменения порядка сканирования. Кодер или декодер может выполнять процесс сканирования над блоком в соответствии с порядком сканирования. Если блок не был преобразован, кодер или декодер может избирательно изменять порядок сканирования на другой порядок. Например, если блок ассоциирован с конкретным типом предсказания, порядок сканирования может быть изменен на другой порядок. В другом примере, если непреобразованный блок имеет размер, который меньше, чем заданный размер, порядок сканирования может быть изменен на другой порядок. 3 н. и 7 з.п. ф-лы, 5 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

[0001] Методы сжатия видео используются для эффективной доставки и хранения видеоконтента. Эти методы, как правило, направлены на уменьшение объема данных, который представляет видеоконтент. В одном примере, видеокадр делится на блоки пикселов (например, единицы кодирования), которые подвергаются различным методам кодирования, таким как кодирование с предсказанием, преобразованием, квантованием и энтропийное кодирование. Во время кодирования блока пикселов процесс сканирования может выполняться на двумерном массиве данных, ассоциированных с блоком (например, коэффициентов преобразования), чтобы переупорядочить данные в одномерный массив, который подвергается энтропийному кодированию. Процесс сканирования может выполняться в соответствии с конкретным порядком (например, горизонтальное, зигзагообразное, вертикальное и т.д.), чтобы упорядочить конкретные данные (например, ненулевые коэффициенты) на одном конце одномерного массива.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0002] Настоящее изобретение относится к кодированию без преобразования блоков видеоконтента в соответствии с оптимальным порядком сканирования. В некоторых реализациях, кодер или декодер может выполнять процесс сканирования во время кодирования, чтобы изменять двумерный массив данных, ассоциированных с блоком пикселов, в одномерный массив данных, или наоборот. Процесс сканирования может выполняться в соответствии с порядком (например, горизонтальным, вертикальным, зигзагообразным и т.д.), чтобы переупорядочивать данные для энтропийного кодирования. Когда блок кодирования, который был преобразован, подлежит кодированию, кодер или декодер может использовать конкретный порядок сканирования. Когда блок, который не был преобразован, подлежит кодированию (например, непреобразованный блок, блок, ассоциированный с кодированием без преобразования, и т.д.), кодер или декодер или может избирательно изменять конкретный порядок сканирования на другой порядок. Например, если непреобразованный блок ассоциирован с конкретным типом предсказания, порядок сканирования может быть изменен на другой порядок. В другом примере, если непреобразованный блок имеет размер, который меньше, чем заданный размер (например, блок 8×8, блок 16×16 и т.д.), порядок сканирования может быть изменен на другой порядок.

[0003] Настоящая сущность изобретения предоставлена для введения выбора понятий в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Эта сущность не предназначена для идентификации ключевых или существенных признаков заявленной сущности изобретения, а также не предназначена для использования, чтобы ограничивать объем заявленной сущности изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0004] Подробное описание изложено со ссылкой на прилагаемые чертежи. На чертежах самая левая цифра ссылочной позиции идентифицирует фигуру, на которой впервые появляется ссылочная позиция. Использование одних и тех же ссылочных позиций на различных чертежах указывает подобные или идентичные элементы или признаки.

[0005] Фиг. 1 иллюстрирует примерную архитектуру для кодирования без преобразования блоков видеоконтента путем избирательного изменения порядка сканирования.

[0006] Фиг. 2 иллюстрирует примерные детали кодера по фиг. 1.

[0007] Фиг. 3 иллюстрирует примерные детали декодера по фиг. 1.

[0008] Фиг. 4A-4B иллюстрируют примерные порядки сканирования, которые могут быть использованы для сканирования блока.

[0009] Фиг. 5 иллюстрирует примерный процесс кодирования непреобразованных блоков видеоконтента путем избирательного изменения порядка сканирования.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

[0010] Видеоконтент обычно включает в себя серию кадров с дублирующей информацией в одном кадре или в нескольких кадрах. Для того чтобы уменьшить количество дублирующей информации, могут быть реализованы различные методы кодирования (например, сжатия), чтобы уменьшить количество битов, используемых для представления видеоконтента, такие как кодирование с предсказанием, преобразованием, квантованием и энтропийное кодирование. При выполнении методов кодирования (например, до или во время энтропийного кодирования) может выполняться процесс сканирования, чтобы изменять двумерный массив данных, ассоциированных с блоком пикселов, в одномерный массив данных, или наоборот. Процесс сканирования может выполняться в соответствии с конкретным порядком (например, горизонтальным, вертикальным, зигзагообразным и т.д.) в попытке упорядочить конкретные типы данных (например, ненулевые коэффициенты преобразования) на одном конце одномерного массива. Однако равномерный порядок сканирования для всех типов блоков может привести к нежелательным результатам, например, спорадическому распределению отдельных видов данных в одномерном массиве.

[0011] Настоящее раскрытие направлено на кодирование непреобразованных блоков видеоконтента в соответствии с оптимальным порядком сканирования. В некоторых случаях, порядок сканирования, который в противном случае может быть использован для сканирования непреобразованного блока, может быть избирательно изменен на другой порядок на основе информации, ассоциированной с непреобразованным блоком (например, режима предсказания и/или размера блока). Это может позволить эффективно упорядочивать конкретные типы данных, ассоциированных с блоком, при сканировании и/или избегать нежелательного введения сложности вследствие изменения порядка сканирования.

[0012] В некоторых реализациях кодер или декодер может кодировать блок посредством предсказания, квантования и/или энтропийного кодирования без преобразования блока. Этот тип блока может упоминаться как “непреобразованный блок”. В таких случаях, кодер или декодер может определять, следует ли изменять порядок сканирования процесса сканирования, который выполняется во время кодирования. Например, кодер или декодер может определять, следует ли сканировать непреобразованный блок в соответствии с порядком сканирования, который используется для блоков, которые были преобразованы (упоминаемых как “преобразованные блоки”), или следует ли сканировать непреобразованный блок в соответствии с другим порядком.

[0013] В качестве иллюстрации, если непреобразованный блок ассоциирован с конкретным типом предсказания (например, внутреннего (интра-) предсказания), непреобразованный блок может сканироваться в соответствии с другим порядком, чем тот, который использован для сканирования преобразованных блоков. В другом примере, если непреобразованный блок имеет размер, который меньше, чем заданный размер (например, блок 8×8, блок 16×16 и т.д.), непреобразованный блок может сканироваться в соответствии с другим порядком, чем тот, который используется для сканирования преобразованных блоков.

[0014] В любом случае, непреобразованный блок может сканироваться в соответствии с оптимальным порядком сканирования. Например, двумерный массив данных непреобразованного блока (например, остаточная информация) может сканироваться в конкретном порядке, чтобы генерировать одномерный массив данных. Одномерный массив может затем подвергаться энтропийному кодированию.

[0015] В то время как многие из методов кодирования описаны здесь в контексте стандарта Высокоэффективного видеокодирования (HEVC), эти методы могут аналогичным образом применяться к другим стандартам, таким как стандарт Усовершенствованного видеокодирования (AVC) и т.д.

[0016] Это краткое введение предоставлено для удобства читателя и не предназначено для ограничения объема ни формулы изобретения, ни следующих разделов. Кроме того, методы, описанные подробно ниже, могут быть реализованы в ряде способов и в различных контекстах. Одна примерная реализация и контекст представлены со ссылкой на следующие чертежи, как описано ниже более подробно. Следует понимать, однако, что нижеследующая реализация и контекст являются лишь одними из многих.

ПРИМЕРНАЯ АРХИТЕКТУРА

[0017] Фиг. 1 иллюстрирует примерную архитектуру 100 для кодирования непреобразованного блока в соответствии с конкретным порядком сканирования. Здесь методы кодирования описаны в контексте источника 102 видеоконтента, который кодирует (например, сжимает) видеоконтент и посылает кодированный видеоконтент на устройство 104. Например, источник 102 видеоконтента может кодировать видеоконтент путем избирательного изменения порядка сканирования, используемого для сканирования блоков. Кодированное видео может посылаться на устройство 104 по сети(ям) 106, где видеоконтент декодируется посредством избирательного изменения порядка сканирования. Хотя методы кодирования и декодирования видео обсуждаются в данном документе как выполняемые на отдельных устройствах (например, источнике 102 видеоконтента и устройстве 104), кодирование и/или декодирование могут выполняться на том же устройстве или распределяться между устройствами в распределенной вычислительной среде.

[0018] Источник 102 видеоконтента и/или устройство 104 могут быть реализованы как любой тип вычислительного устройства, такой как сервер, портативный компьютер, настольный компьютер, смартфон, электронное устройство считывания, мобильный телефон, персональный цифровой помощник (PDA), портативный прибор навигации, портативное игровое устройство, игровая консоль, планшетный компьютер, смарт-часы, портативный медиа-плеер, телеприставка и тому подобное. В одном примере, источник 102 контента и/или устройство 104 сконфигурировано в кластере, центре обработки данных, облачной вычислительной среде или их комбинации. В качестве иллюстрации, источник 102 видеоконтента может работать как облачное вычислительное устройство, которое обеспечивает облачные сервисы, такие как хранение, обработка и т.д. Облачная среда может содержать сетевую распределенную среду, которая включает в себя один или более типов вычислительных ресурсов (например, вычислительные устройства, сетевые устройства и/или устройства хранения).

[0019] Источник 102 видеоконтента может быть оснащен одним или более сетевыми интерфейсами 108, один или более процессорами 110 и памятью 112. Один или более процессоров 110 могут включать в себя центральный процессор (CPU), блок обработки графики (GPU), микропроцессор, процессор цифровых сигналов и т.д. Память 112 может быть сконфигурирована, чтобы хранить один или более программных и/или программно-аппаратных модулей, которые являются исполняемыми на одном или более процессорах 110 для осуществления различных функций. Термин “модуль” предназначен для представления примерных подразделений программного обеспечения для целей обсуждения и не предназначен для представления какого-либо типа требования или необходимого метода, способа или организации. Соответственно, хотя описываются различные “модули”, их функциональность и/или подобная функциональность могут быть организованы по-другому (например, объединены в меньшее количество модулей, разбиты на большее количество модулей и т.д.). Кроме того, хотя некоторые функции и модули описаны здесь как реализуемые с помощью программного обеспечения и/или программно-аппаратных средств, исполняемых на процессоре, в других вариантах осуществления любые или все модули могут быть реализованы полностью или частично аппаратными средствами (например, как ASIC, специализированный блок обработки и т.д.), чтобы выполнять описанные функции.

[0020] Как показано на фиг. 1, память 112 может включать в себя кодер 114 (например, модуль кодера), сконфигурированный для кодирования (например, сжатия) видеоконтента 116. Кодер 114 может применять различные методы кодирования, такие как предсказание, преобразование, квантование и/или энтропийное кодирование, чтобы генерировать битовый поток, который представляет видеоконтента. При выполнении методов кодирования (например, до или во время энтропийного кодирования), процесс сканирования может выполняться в соответствии с порядком сканирования в попытке упорядочить данные, которые представляет блок пикселов, в определенном порядке. Кодер 114 может изменять порядок сканирования для непреобразованных блоков, которые удовлетворяют одному или более критериев, например, являются ассоциированными с конкретным типом предсказания (например, внутренним предсказанием) и/или имеют определенный размер (например, размер, который меньше, чем блок 8×8, блок 16×16, блок 32×32 и т.д.). Например, для того, чтобы сканировать конкретный непреобразованный блок, кодер 114 может изменить порядок сканирования с первого порядка 118 сканирования, который ассоциирован с преобразованными блоками, на второй порядок 120 сканирования. Дальнейшие детали кодера 114 обсуждаются ниже со ссылкой на фиг. 2. Хотя на фиг. 1 не показано, память 112 также может включать в себя декодер, сконфигурированный для декодирования видео.

[0021] Устройство 104 оснащено одним или более сетевыми интерфейсами 122, одним или более процессорами 124 и памятью 126. Один или более процессоров 124 могут включать в себя центральный процессор (CPU), графический процессор (GPU), микропроцессор, цифровой процессор сигналов и т.д. Память 126 может быть сконфигурирована для хранения одного или более программных и/или программно-аппаратных модулей, которые являются исполняемыми на одном или более процессорах 124 для реализации различных функций. Например, память 126 может включать в себя декодер 128 (например, модуль декодера), выполненный для декодирования видеоконтента 130, который получен от источника 102 видеоконтента и/или другого источника. Декодер 128 может, в общем, декодировать битовый поток, представляющий видеоконтент, путем выполнения операций, которые являются, по существу, обратными операциям кодирования. Во время декодирования видеоконтента, декодер 128 может изменять порядок сканирования для непреобразованных блоков, которые удовлетворяют одному или более критериям, например, являются ассоциированными с конкретным типом предсказания (например, внутреннего предсказания) и/или имеют определенный размер (например, размер, который меньше, чем блок 8×8). Хотя на фиг. 1 не показано, память 126 может также включать в себя кодер, сконфигурированный для кодирования видеоконтента.

[0022] Кодер 114 и/или декодер 128 может, в общем, выполнять методы кодирования над единицей кодирования (CU) (также называемой блоком кодирования (CB)), макроблоком или другим типом структуры кодирования. Для простоты обсуждения, методы кодирования могут быть рассмотрены в контексте единиц кодирования. Каждая единица кодирования может соответствовать блоку пикселов изображения. Единица кодирования может иметь предопределенную пиксельную размерность (например, 4×4, 8×8, 16×16, 32×32, 64×64 и т.д.) и/или может быть определена стандартом сжатия видео, таким как H.264/Усовершенствованное видеокодирование (AVC) или Высокоэффективное видеокодирование (HEVC). В некоторых случаях единица кодирования представлена как одна или более единиц предсказания или одна или боле единиц преобразования, когда единица кодирования кодируется. То есть, когда выполняется предсказание, единица кодирования может быть представлена одной или несколькими единицами предсказания (PU) (также называемых блоками предсказания). Между тем, когда выполняется преобразование, единица кодирования может быть представлена одной или более единицами преобразования (TU) (также называемыми блоками преобразования). Единица предсказания и/или единица преобразования может быть суб-единицей единицы кодирования. Таким образом, в некоторых случаях единица кодирования может быть разделена на суб-единицы, и операции кодирования могут быть выполнены на суб-единицах по отдельности (например, процесс сканирования может быть выполнен над единицей преобразования, которая является суб-единицей единицы кодирования).

[0023] Хотя кодер 114 и декодер 128 показаны на фиг. 1 реализованными как модули, кодер 114 и/или декодер 128 или любая ассоциированная операция, могут быть реализованы как один или более аппаратных логических компонентов, таких как программируемые пользователем вентильные матрицы (FPGA), специализированные интегральные схемы (ASIC), программно-ориентированные стандартные продукты (ASSP), системы типа однокристальной системы (SOC), комплексные программируемые логические устройства (CPLD) и т.д. В некоторых случаях кодер 114 и/или декодер 128 могут быть интегрированы с аудио кодером/декодером и включают в себя соответствующие блоки мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение, чтобы обрабатывать кодирование/декодирование аудио и видео в общем потоке данных или отдельных потоках данных. Альтернативно или дополнительно, кодер 114 и/или декодер 128 могут быть включены в качестве части одного или более процессоров 110 (например, CPU, GPU, микропроцессора и т.д.). Кроме того, в некоторых случаях кодер 114 и/или декодер 128 могут быть включены в операционную систему или другое приложение. Кодер 114 и/или декодер 128 могут работать в соответствии со стандартом сжатия видео, таким как MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264/AVC, HEVC и т.д.

[0024] Хотя памяти 112 и 126 изображены на фиг. 1 в виде отдельных блоков, памяти 112 и/или 126 (и все другие памяти, описанные здесь) могут включать в себя один или комбинацию считываемых компьютером носителей. Считываемые компьютером носители могут включать в себя компьютерные носители хранения данных и/или коммуникационные среды. Компьютерные носители хранения данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Компьютерные носители хранения данных включают в себя, без ограничения указанным, память на фазовых переходах (PRAM), статическую оперативную память (SRAM), динамическую оперативную память (DRAM), другие типы оперативной памяти (RAM), постоянную память (RAM), электрически стираемую программируемую постоянную память (EEPROM), флэш-память или другую технологию памяти, постоянную память на компакт-диске (CD-ROM), цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель или другие магнитные запоминающие устройства, или любой другой носитель отсутствия передачи, который может использоваться для хранения информации для доступа вычислительным устройством.

[0025] В противоположность этому, коммуникационные среды могут воплощать считываемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой механизм передачи. Как определено здесь, компьютерные носители хранения данных не включают в себя коммуникационные среды.

[0026] Как было отмечено выше, источник 102 видеоконтента и устройство 104 могут осуществлять связь через сеть(и) 106. Сеть(и) 106 может (могут) включать в себя любую одну или сочетание нескольких различных типов сетей, таких как сотовые сети, беспроводные сети, локальные сети (LAN), глобальные сети (WAN) и Интернет.

ПРИМЕРНЫЕ КОМПОНЕНТЫ КОДИРОВАНИЯ

[0027] Фиг. 2 иллюстрирует примерные детали кодера 114 по фиг. 1. Как отмечалось выше, блок кодирования (например, единица) кодируется кодером 114. Блок кодирования может быть представлен в виде одного или более блоков предсказания при предсказании и одного или более блоков преобразования при преобразовании. Таким образом, операции предсказания могут быть выполнены на отдельных блоках предсказания, в то время как операции преобразования могут быть выполнены на отдельных блоках преобразования. Для простоты иллюстрации, методы кодирования, обсужденные со ссылкой на фиг. 2 и в других местах в описании, будут, в общем, ссылаться на “блок”. Этот блок будет содержать блок предсказания на этапе предсказания и блок преобразования на этапе преобразования.

[0028] Кодер 114 может включать в себя компонент 202 предсказания (например, модуль, аппаратное средство и т.д.), чтобы выполнять предсказание на блоке (например, блоке предсказания). Компонент 202 предсказания может выполнять различные режимы предсказания на блоке, такие как внутрикадровое (например, пространственное) или межкадровое (например, временное) предсказание. При внутрикадровом предсказании, компонент 202 предсказания может определять опорный блок в том же кадре как блок, который наилучшим образом согласуется с данным блоком. То есть опорный блок может иметь наибольшее сходство с данным блоком (например, в соответствии с пиксельными значениями) из числа блоков пикселов кадра. При межкадровом предсказании, компонент 202 предсказания может определить опорный блок в кадре, соседнем по времени к кадру блока, который наилучшим образом согласуется с данным блоком. Здесь опорный блок может иметь наибольшее сходство с данным блоком (например, в соответствии с пиксельными значениями) из числа блоков пикселов в соседнем кадре. В любом случае, когда опорный блок не точно согласуется с данным блоком, компонент 202 предсказания может определить разницу между пиксельными значениями опорного блока и данного блока. Эта разница называется “остаточной информацией” (также известной как “остаток” или “остаточное значение”). Компонент 202 предсказания может выводить двумерный массив остаточной информации (например, блок, который включает в себя остаточную информацию для каждого пиксельного значения блока предсказания).

[0029] Кодер 114 может также включать в себя компонент 204 преобразования, который может применять преобразование к блоку (например, остаточной информации блока предсказания). Преобразование может содержать дискретное косинусное преобразование (DCT), дискретное вейвлет-преобразование, целочисленное преобразование или любой другой, как правило, известный метод для преобразования информации. Преобразование может избирательно применяться компонентом 204 преобразования. То есть, в некоторых случаях преобразование применяется (например, выводятся коэффициенты преобразования), в то время как в других случаях преобразование не применяется (например, остаточная информация выводится без преобразования). В качестве иллюстрации, компонент 204 преобразование может воздерживаться от выполнения преобразования, когда разность между наивысшими пиксельными значениями и самыми низкими пиксельными значениями блока выше предопределенного значения или когда удовлетворяется ограничение по скорости-искажению (например, стоимость скорости-искажения в случае не преобразования блока меньше, чем в случае преобразования блока), и т.д. В некоторых реализациях, преобразование избирательно применяется в соответствии с методами, обсуждаемыми в патентной заявке США 13/593,214, поданной 23 августа 2012, озаглавленной "Non-Transform Coding”, которая включена в настоящий документ посредством ссылки.

[0030] Когда преобразование выполняется, компонент 204 преобразования может выводить множество коэффициентов преобразования, которые соответствуют остаточной информации блока. Альтернативно, когда преобразование не выполняется, компонент 204 преобразования может выводить остаточную информацию, которая была введена в компонент 204 преобразования. Как используется здесь, “непреобразованный блок” может относиться к блоку, который не был преобразован, даже если блок мог пройти через компонент 204 преобразования. В любом случае, компонент 204 преобразования может выводить двумерный массив данных (например, коэффициенты преобразования или остаточную информацию).

[0031] Кодер 114 может также включать в себя компонент 206 квантования для квантования блока (например, остаточной информации непреобразованного блока или коэффициентов преобразования преобразованного блока). В случаях, когда блок был преобразован, коэффициенты блока могут квантоваться. В случаях, когда блок не был преобразован, остаточная информация блока может квантоваться. Компонент 206 квантования может выводить двумерный массив данных (например, квантованную остаточную информацию или квантованные коэффициенты).

[0032] Кодер 114 может также включать в себя компонент 208 энтропийного кодирования для энтропийного кодирования блока (например, квантованной остаточной информации или квантованных коэффициентов). Для энтропийного кодирования блока, процесс сканирования может выполняться над блоком, чтобы создать одномерный массив данных. Например, процесс сканирования может сканировать двумерный массив данных, который представляет блок (например, квантованную остаточную информацию или квантованные коэффициенты), для генерации одномерного массива данных. То есть, процесс сканирования может преобразовывать в последовательную форму данные двумерного массива.

[0033] Фиг. 2 иллюстрирует пример процесса сканирования, который может быть выполнен с помощью компонента 208 энтропийного кодирования. Здесь суб-единицы двумерного массива 210 (например, “а1”–“а16”) могут представлять квантованную остаточную информацию или квантованные коэффициенты преобразования, в зависимости от того, выполнялось ли преобразование, или нет. Как показано, процесс сканирования может начаться в суб-единице “а16” и переходить по сплошной линии к суб-единице “а4”, затем сканировать следующий столбец, начиная с суб-единицы “а15”, и продолжать аналогичным образом, чтобы сканировать оставшиеся столбцы. При выполнении сканирования, компонент 208 энтропийного кодирования может сформировать одномерный массив 212 данных.

[0034] Компонент 208 энтропийного кодирования может выполнять процесс сканирования в соответствии с порядком сканирования в попытке сгруппировать конкретные типы данных вместе. В некоторых случаях может иметь место более высокая вероятность того, что ненулевые данные (например, ненулевые коэффициенты или остаточная информация) упорядочены в двумерном массиве в конкретной области. Например, возвращаясь к двумерному массиву 210 на фиг. 2, ненулевые коэффициенты (иногда упоминаются как энергии) могут быть сгруппированы в верхнем левом углу массива 210 (например, в направлении к суб-единице “a1”). Чтобы эффективно выполнять энтропийное кодирование, суб-единицы двумерного массива 210 могут сканироваться в соответствии с диагональным сканированием (обсуждаемым подробно со ссылкой на фиг. 4), так что двумерный массив 210 упорядочивается в одномерный массив 212 с ненулевыми коэффициентами, сгруппированными на одном конце. Однако равномерный порядок сканирования, который применяется ко всем типам блоков, может не привести к такой группировке.

[0035] Соответственно, компонент 208 энтропийного кодирования может избирательно изменять порядок сканирования для разных типов блоков. То есть, компонент 208 энтропийного кодирования может определить, следует ли или нет перейти от одного или более предопределенных или установленных по умолчанию порядков сканирования к другому. Например, для преобразованных блоков, один или более предопределенных или установленных по умолчанию порядков сканирования могут быть использованы для сканирования блоков (например, на основе режима предсказания блоков, размера блоков и т.д.). Между тем, для непреобразованных блоков, компонент 208 энтропийного кодирования может избирательно переходить от одного или более предопределенных или установленных по умолчанию порядков сканирования, которые используются для преобразованных блоков, на основе характеристик непреобразованных блоков.

[0036] В качестве иллюстрации, при сканировании преобразованного блока конкретного режима предсказания и размера, может быть использован первый порядок сканирования. Между тем, при сканировании непреобразованного блока того же режима предсказания и/или размера, что и у преобразованного блока, компонент 208 энтропийного кодирования может определять, следует ли использовать первый порядок сканирования или второй порядок сканирования. Если, например, непреобразованный блок ассоциирован с конкретным типом предсказания (например, непреобразованный блок был подвергнут внутреннему предсказанию), может быть использован второй порядок сканирования. В качестве альтернативы, если непреобразованный блок не ассоциирован с конкретным типом предсказания (например, непреобразованный блок был подвергнут межкадровому предсказанию), может быть использован первый порядок сканирования. В другом примере, если непреобразованный блок имеет размер, который меньше, чем заданный размер (например, непреобразованный блок является блоком 4×4 или 8×8), то может быть использован второй порядок сканирования. В то же время, если непреобразованный блок имеет размер, который равен или больше, чем заданный размер (например, непреобразованный блок является блоком 8×8 или больше), то может быть использован первый порядок сканирования.

[0037] В еще одном примере, компонент 208 энтропийного кодирования может определить, следует ли или нет перейти от заданного по умолчанию порядка сканирования, ассоциированного с преобразованными блоками, к другому порядку, на основе взвешенного значения режима предсказания непреобразованного блока и значения веса размера непреобразованного блока. Например, если размер двумерного массива больше, чем заданный размер на конкретную величину, то размер может быть взвешен в большей степени в направлении поддержания текущего порядка сканирования. Альтернативно или дополнительно, размер или режим предсказания может быть выбран, чтобы взвешиваться в большей степени, чем другое (например, режим предсказания будет иметь большее влияние на решение, чем размер блока).

[0038] В примере по фиг. 2, компонент 208 энтропийного кодирования может определить, следует ли перейти от одного из предопределенных или установленных по умолчанию порядков 214 сканирования к одному из порядков 216 сканирования. В данном случае предопределенные порядки 214 сканирования могут выполняться, как правило, за исключением случаев, когда блок включает в себя конкретные характеристики, как обсуждалось выше (например, непреобразованный блок имеет конкретный размер и/или ассоциирован с конкретным режимом предсказания). Между тем, порядки 216 сканирования могут соответствовать обратным порядкам сканирования по отношению к предопределенным порядкам 214 сканирования. Таким образом, в некоторых примерах компонент 208 энтропийного кодирования может определить, следует ли перейти от предопределенного порядка сканирования к обратному порядку относительно предопределенного порядка сканирования. Однако в других примерах порядки 216 сканирования могут включать в себя другие типы порядков сканирования, кроме обратных порядков сканирования.

[0039] В некоторых реализациях, путем избирательного изменения порядка сканирования от одного или более предопределенных или установленных по умолчанию порядков сканирования, эти методы могут позволить эффективно упорядочить конкретные типы данных, ассоциированных с блоком, и/или избежать излишнего введения сложности вследствие изменения порядка сканирования. Например, поскольку непреобразованные блоки, ассоциированные с внутренним предсказанием, могут, как правило, включать в себя ненулевые значения (например, остаточную информацию) в противоположной области по сравнению с преобразованным блоком (например, в нижней правой стороне по сравнению с верхней правой стороной), эти методы могут эффективно упорядочить ненулевые значения на одном конце одномерного массива для эффективного энтропийного кодирования путем изменения порядка сканирования для непреобразованных блоков, которые ассоциированы с внутренним предсказанием. Кроме того, поскольку изменение в порядке сканирования может увеличить сложность сканирования блока (например, по сравнению с поддержанием порядка сканирования), эти методы могут позволить избежать введения дополнительной сложности в сканирование, когда изменение не может создать какой-либо дополнительной выгоды, путем изменения порядка сканирования для непреобразованных блоков, которые меньше, чем заданный размер.

[0040] Хотя процессы сканирования описаны как выполняемые компонентом 208 энтропийного кодирования, другие компоненты также могут выполнять процессы сканирования, например, компонент 206 квантования или другой компонент. В по меньшей мере одном примере, компонент 206 квантования выполняет процесс сканирования и выводит одномерный массив данных, который вводится в компонент 208 энтропийного кодирования.

[0041] Компонент 208 энтропийного кодирования может выполнять энтропийное кодирование на одномерном массиве данных, являющемся результатом процесса сканирования. Энтропийное кодирование может включать в себя выполнение контекстно-адаптивного двоичного арифметического кодирования (CABAC), контекстно-адаптивного кодирования с переменной длиной (CAVLC), вероятностного энтропийного кодирования (PIPE) и т.д. Энтропийное кодирование может генерировать битовый поток, который по меньшей мере частично представляет видеоконтент. Как показано на фиг. 2, ввод одного или более блоков 224 кодирования в кодер 114 может привести к выводу битового потока 226.

[0042] Кодер 114 может также включать в себя компонент 218 обратного квантования для выполнения обратного квантования блока, который должен в текущий момент кодироваться. После этого компонент 220 обратного преобразования может избирательно применять обратное преобразование к блоку. Если блок был преобразован в компоненте 204 преобразования, то обратное преобразование может быть выполнено на этом блоке. Однако если блок не был преобразован в компоненте 204 преобразования, то затем обратное преобразование не может быть выполнено. В любом случае блок может быть реконструирован с помощью компонента 222 реконструкции на основе информации из компонента 202 предсказания. Эта информация может указывать опорный блок, используемый для формирования остаточной информации для блока. Реконструированный блок может быть использован для кодирования другого блока, такого как другой блок в том же или другом кадре, что и данный блок.

[0043] Хотя на фиг. 2 не показано, кодер 114 может включать в себя другие типы компонентов, таких как деблокирующий фильтр для сглаживания краев между границами блоков или любой другой компонент.

[0044] Фиг. 3 иллюстрирует примерные детали декодера 128 по фиг. 1. Декодер 128 может выполнять, как правило, операции, обратные операциям кодера 114. Декодер 128 может включать в себя компонент 302 энтропийного кодирования для выполнения обратного энтропийного кодирования над битовым потоком 304. Энтропийное кодирование может включать в себя сканирование данных битового потока 304 в соответствии с конкретным порядком сканирования (например, порядком сканирования, который использовался компонентом 208 энтропийного кодирования). Порядок сканирования может быть задан в битовом потоке 304 или в другом месте, определен на основе характеристик блока (например, размера блока, режима предсказания, режима преобразования и т.д.), определен заранее и т.д. Например, процесс сканирования может выбрать порядок сканирования среди предопределенных или установленных по умолчанию порядков 306 сканирования и обратных порядков 308 сканирования для выполнения обратного энтропийного кодирования над битовым потоком 304. В одном примере, как показано на фиг. 3, процесс сканирования может сканировать одномерный массив 310 (например, битовый поток 304) в двумерный массив 312 в соответствии с конкретным порядком сканирования. Если процесс сканирования начинается на левой стороне одномерного массива 310 (например, в суб-единице “a16”), суб-единицы “a16”, “a12”, “a8” и “a4” могут быть отсканированы в двумерный массив 312 как столбец двумерного массива 312. Затем, следующий набор суб-единицы одномерного массива 310 (например, “a15”, “a11”, “а7” и “a3”) могут быть отсканированы в другой столбец двумерного массива 312 и т.д. Кроме того, в некоторых случаях, если процесс сканирования начинается на правой стороне одномерного массива 310, может выполняться обратное сканирование (например, обратное сканированию, которое выполнялось для кодирования данных). Как обсуждалось выше аналогично по отношению к компоненту 208 энтропийного кодирования по фиг. 2, компонент 302 энтропийног