ПОРЯДКИ СКАНИРОВАНИЯ ДЛЯ КОДИРОВАНИЯ БЕЗ ПРЕОБРАЗОВАНИЯ
SCAN ORDERS FOR NON-CONVERSION ENCODING

УРОВЕНЬ ТЕХНИКИ
[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 энтропийного кодирования может избирательно изменять порядок сканирования, который используется для сканирования битового потока 304. Например, если другой порядок сканирования был использован для кодирования блока (например, отличающийся от предопределенного или установленного по умолчанию порядка сканирования, используемого для другого блока), компонент 302 энтропийного кодирования может переключиться на другой порядок сканирования для этого блока. Как отмечено выше, другой порядок сканирования может быть использован, когда, например, непреобразованный блок ассоциирован с конкретным типом предсказания (например, внутренним предсказанием) и/или имеет размер, который меньше, чем заданный размер. Компонент 302 энтропийного кодирования может включать в себя функции, подобные тем, которые обсуждались выше со ссылкой на компонент 208 энтропийного кодирования по фиг. 2.
[0045] Декодер 128 может также включать в себя компонент 314 обратного квантования, компонент 316 обратного преобразования и компонент 318 предсказания. Компоненты 314-318 в общем случае могут включать в себя признаки, подобные признакам компонентов 202-206 по фиг. 2, чтобы выполнять операции, обратные операциям компонентов 202-206. Например, компонент 314 обратного квантования может выполнять обратное квантование над блоком (например, квантованными коэффициентами или квантованной остаточной информацией), компонент 316 обратного преобразования может выполнять обратное преобразование над блоком (например, коэффициентами преобразования), и компонент 318 предсказания может выполнять предсказание над блоком (например, остаточной информацией). В тех случаях, когда блок не был преобразован, компонент 316 обратного преобразования может воздерживаться от применения обратного преобразования. Таким образом, декодер 128 может выводить один или более блоков 320 кодирования, которые представляют декодированный видеоконтент.
[0046] Хотя в приведенном выше обсуждении примерного декодера 128 процесс сканирования выполняется компонентом 302 энтропийного кодирования, процесс сканирования может выполняться другим компонентом, таким как компонент 314 обратного квантования или любой другой компонент. В одном примере компонент 314 обратного квантования может обратно квантовать данные перед или после того, как данные изменены с одномерного массива на двумерный массив.
ПРИМЕРНЫЕ ПОРЯДКИ СКАНИРОВАНИЯ
[0047] Фиг. 4A и 4B иллюстрируют примерные порядки 400-410 сканирования, которые могут быть использованы для сканирования блока. Порядки 406-410 сканирования могут содержать обратные порядки сканирования по отношению к порядкам 400-404 сканирования, соответственно. В некоторых случаях, порядки 400-404 сканирования могут содержать установленные по умолчанию порядки сканирования, которые обычно применяются, в то время как порядки 406-410 сканирования могут содержать альтернативные порядки сканирования, которые могут быть применены к непреобразованным блокам, которые включают конкретные характеристики, такие как конкретный размер и/или режим предсказания. Если несколько установленных по умолчанию порядков сканирования используются в некоторой реализации, то установленный по умолчанию порядок сканирования может быть выбран для блока на основе размера блока, режима предсказания, который был использован на блоке, типа блока (например, яркости или цветности) и т.д. На фиг. 4A и 4B порядки 400-410 сканирования могут, в общем, предусматривать сканирование вдоль сплошных линий и перемещение для следующего сканирования вдоль пунктирных линий.
[0048] Хотя на фиг. 4А и 4В показаны порядки 400-410 сканирования, другие типы порядков сканирования могут быть использованы для процесса сканирования. Кроме того, хотя порядки 400-410 сканирования описаны как установленные по умолчанию порядки сканирования, другие порядки сканирования могут быть установленными по умолчанию порядками сканирования, такими как порядки 400-410 сканирования, любой один из порядков 400-410 сканирования или любая комбинация порядков 400-410 сканирования.
[0049] Порядок 400 сканирования может включать в себя диагональное сканирование, которое начинается в суб-единице 412 блока и сканирует блок вдоль сплошных линий, чтобы достичь суб-единицу 414. Порядок 402 сканирования может включать в себя вертикальное сканирование, который начинается в суб-единице 416 блока и сканирует блок вдоль сплошных линий, чтобы достичь суб-единицу 418. Порядок 404 сканирования может содержать горизонтальное сканирование, которое начинается в суб-единице 420 блока и сканирует блок вдоль сплошных линий, чтобы достичь суб-единицу 422.
[0050] Между тем, порядки 406-410 сканирования включают в себя обратные порядки сканирования относительно порядков 400-404 сканирования, соответственно. В частности, порядок 406 сканирования содержит обратное диагональное сканирование, которое начинается в суб-единице 424 и заканчивается в суб-единице 426, порядок 408 сканирования содержит обратное вертикальное сканирование, которое начинается в суб-единице 428 и заканчивается в суб-единице 430, и порядок 410 сканирования может содержать обратное горизонтальное сканирование, которое начинается в суб-единице 432 и заканчивается в суб-единице 434.
[0051] В некоторых реализациях, если определено использовать другой порядок сканирования, отличный от установленного по умолчанию порядка сканирования, может быть использован обратный порядок сканирования по отношению к установленному по умолчанию порядку. В качестве иллюстрации, если при кодировании в соответствии с порядком 402 сканирования (например, вертикальное сканирование) определено использовать альтернативный порядок сканирования для блока, то может быть использован порядок 408 сканирования (например, обратное вертикальное сканирование). Альтернативный порядок сканирования может быть использован для непреобразованных блоков, которые включают в себя конкретные характеристики, таких как непреобразованные блоки, которые ассоциированы с внутренним предсказанием и/или имеют размер, который меньше, чем заданный размер.
ПРИМЕРНЫЙ ПРОЦЕСС
[0052] Фиг. 5 иллюстрирует примерный процесс 500 для применения способов, описанных в данном документе. Для простоты иллюстрации процесс 500 описан как выполняемый с помощью компонента кодирования. Например, одна или более отдельных операций процесса 500 могут быть выполнены кодером 114 и/или декодером 128 архитектуры 100 по фиг. 1. Однако процесс 500 может быть выполнен в других архитектурах. Кроме того, архитектура 100 может быть использована для выполнения других процессов.
[0053] Процесс 500 (а также каждый процесс, описанный в данном документе) показан в виде логического потокового графа, каждая операция которого представляет собой последовательность операций, которые могут быть реализованы в аппаратных средствах, программном обеспечении или их комбинации. В контексте программного обеспечения, операции представляют исполняемые компьютером инструкции, сохраненные на одном или более считываемых компьютером носителей хранения данных, которые, при исполнении одним или более процессорами, выполняют указанные операции. Как правило, исполняемые компьютером инструкции включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные функции или реализуют конкретные абстрактные типы данных. Порядок, в котором описаны операции, не предназначен, чтобы толковаться как ограничение, и любое число описанных операций могут быть объединены в любом порядке и/или параллельно для реализации процесса. Кроме того, любая из операций может быть опущена.
[0054] На этапе 502 компонент кодирования (например, кодер или декодер) может идентифицировать порядок сканирования, используемый для сканирования первого блока, который ассоциирован с режимом кодирования с преобразованием. Первый блок может упоминаться как преобразованный блок, указывая, что первый блок был преобразован. Порядок сканирования первого блока может содержать установленный по умолчанию порядок сканирования для блоков, которые ассоциированы с режимом предсказания первого блока, размером первого блока и т.д.
[0055] На этапе 504 компонент кодирования может идентифицировать второй блок, который ассоциирован с режимом кодирования без преобразования. Второй блок может упоминаться как непреобразованный блок, указывая, что второй блок не был преобразован (например, ассоциирован с кодированием без преобразования). Второй блок может иметь по меньшей мере одну характеристику, которая является той же самой, что и характеристика первого блока, такую как размер, режим предсказания, тип блока (например, является ли блок блоком яркости (компонентом, представляющим яркость в черном и белом) или блоком цветности (компонентом, представляющим цвет)) и т.д. Кроме того, второй блок и первый блок могут быть частью того же изображения (например, кадра).
[0056] На этапе 506 компонент кодирования может определить, удовлетворяются ли один или несколько критериев для второго блока. Например, компонент кодирования может определить, является ли режим предсказания второго блока конкретным режимом предсказания, таким, как внутреннее предсказание. Здесь компонент кодирования может идентифицировать режим предсказания, который был применен для второго блока (например, внутреннее (интра-) предсказание или межкадровое (интер-) предсказание). В качестве альтернативы или дополнения, компонент кодирования может определить, является ли размер второго блока меньшим, чем заданный размер.
[0057] Когда один или несколько критериев удовлетворены на этапе 506 (например, ветвь ДА), компонент кодирования может выполнять процесс сканирования на этапе 508 на втором блоке в соответствии с порядком сканирования иным, чем тот, который был использован для первого блока. Например, процесс сканирования может использовать инверсию порядка сканирования, который был использован на первом блоке. В одном примере компонент кодирования может использовать порядок сканирования иной, чем установленный по умолчанию порядок сканирования, в котором в противном случае сканировался бы второй блок. Альтернативно, когда один или несколько критериев не удовлетворены на этапе 506 (например, ветвь НЕТ), компонент кодирования может выполнять процесс кодирования на этапе 510 на втором блоке в соответствии с порядком сканирования, который был использован для первого блока. Таким образом, определение на этапе 506 может определить, следует ли сканировать второй блок в соответствии с порядком сканирования первого блока или сканировать второй блок в соответствии с другим порядком сканирования.
[0058] В любом случае выполнения процесса сканирования на этапе 508 или 510, способ может включать в себя сканирование двумерного массива остаточной информации второго блока, чтобы генерировать одномерный массив остаточной информации. То есть, процесс сканирования может преобразовывать в последовательную форму данные второго блока.
[0059] На этапе 512 компонент кодирования может выполнять энтропийное кодирование над вторым блоком. Это может включать в себя энтропийное кодирование одномерного массива остаточной информации (например, квантованной остаточной информации), которая представляет второй блок. Если на этапе 508 выполнялся процесс сканирования, то одномерный массив может включать в себя суб-единицы второго блока (например, фрагменты остаточной информации), которые упорядочены в соответствии с другим порядком, чем тот, который используется для энтропийного кодирования первого блока (например, преобразованных блоков).
ВЫВОД
[0060] Хотя варианты осуществления были описаны в терминологии, специфической для структурных признаков и/или методологических действий, должно быть понятно, что настоящее раскрытие не обязательно ограничено конкретными признаками или описанными действиями. Скорее, конкретные признаки и действия раскрыты в данном документе в качестве иллюстративных форм реализации вариантов осуществления.
[0061] Все способы и процессы, описанные выше, могут быть воплощены и полностью автоматизированы посредством кодовых модулей программного обеспечения, исполняемых одним или более компьютерами общего назначения или процессорами. Кодовые модули могут храниться на считываемом компьютером носителе хранения данных любого типа или другом компьютерном запоминающем устройстве. Некоторые или все из способов могут альтернативно быть воплощены в специализированных компьютерных аппаратных средствах.
[0062] Условные термины, такие как, среди прочих, “может”, “могло бы”, “имеет возможность” или “было бы вероятным”, если специально не указано иное, понятны в контексте и представляют, что некоторые варианты осуществления включают в себя, в то время как другие варианты осуществления не включают в себя некоторые признаки, элементы и/или этапы. Таким образом, такая условная терминология обычно не подразумевает, что определенные признаки, элементы и/или этапы в любом случае требуются для одного или более вариантов осуществления, или что один или более вариантов осуществления обязательно включают в себя логику для принятия решения, с пользовательским вводом или запросом или без него, включены ли или должны ли выполняться определенные признаки, элементы и/или этапы в любом конкретном варианте осуществления.
[0063] Конъюнктивная терминология, такая как фраза “по меньшей мере одно из X, Y или Z”, если специально не указано иное, должна пониматься как представляющая, что элемент, условие и т.д., могут быть либо X, Y или Z, либо их сочетанием.
[0064] Все процедурные описания, элементы или блоки в блок-схеме, описанные здесь и/или изображенные на приложенных чертежах, следует понимать как потенциально представляющие модули, сегменты или части кода, которые включают в себя одну или более исполняемых инструкций для реализации конкретных логических функций или элементов в процедуре. Альтернативные реализации включены в объем описанных вариантов осуществления, в которых элементы или функции могут быть удалены или могут исполняться в порядке, отличающемся от показанного или обсужденного, в том числе, по существу, синхронно или в обратном порядке, в зависимости от используемой функциональности, как должно быть понятно специалистам в данной области.
[0065] Следует отметить, что многие изменения и модификации могут быть выполнены в описанных выше вариантах осуществления, элементы которых следует понимать как одни из других приемлемых примеров. Все такие модификации и изменения подразумеваются включенными в настоящий документ в объеме настоящего раскрытия и защищенными прилагаемой формулой изобретения.