СИГНАЛИЗАЦИЯ ЭЛЕМЕНТОВ СИНТАКСИСА ДЛЯ КОЭФФИЦИЕНТОВ ПРЕОБРАЗОВАНИЯ ДЛЯ ПОДНАБОРОВ ЕДИНИЦЫ КОДИРОВАНИЯ НА УРОВНЕ ЛИСТЬЕВ
SIGNALLING SYNTAX ELEMENTS FOR TRANSFORM COEFFICIENTS FOR SUB-SETS OF LEAF-LEVEL CODING UNIT

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/503,541, поданной 30 июня 2011, и предварительной заявки на патент США № 61/552,341, поданной 27 октября 2011, все содержимое каждой из которых включено здесь по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию и сжатию видео. Более конкретно, настоящее раскрытие направлено на способы для того, чтобы сканировать квантованные коэффициенты преобразования.
УРОВЕНЬ ТЕХНИКИ
[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), портативные или настольные компьютеры, планшетные компьютеры, считыватели электронных книг, цифровые камеры, цифровые устройства регистрации, цифровые медиа плееры, видео игровые устройства, пульты видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны," устройства организации видео телеконференций, устройства потоковой передачи видео и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарта высокоэффективного кодирования видео (HEVC), развивающегося в настоящее время, и расширениях таких стандартов. Видео устройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видео информацию более эффективно, реализуя такие способы сжатия видео.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоках кодирования видео вырезка видео (то есть, видео кадр или часть видео кадра) может быть разделена на видео блоки, которые могут также упоминаться как блоки дерева, единицы кодирования (CU) и/или узлы кодирования. Видео блоки во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Видео блоки во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть сканированы, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено, чтобы достигнуть еще большей степени сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] При кодировании видео, чтобы сжать объем данных, используемых для представления видео данных, видео кодер может выполнять энтропийное кодирование видео данных. Согласно способам, описанным в настоящем описании, в качестве части энтропийного кодирования, видео кодер делит единицу уровня листьев (концевого уровня) видео данных на множество поднаборов коэффициентов преобразования. Единица уровня листьев, как описано здесь, относится к неразделенной единице структуры данных видео, одним примером которой является оконечный, неразделенный дочерний узел структуры данных квадродерева, как описано более подробно ниже.
[0007] Для по меньшей мере одного из поднаборов кодер генерирует элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты в качестве части энтропийно кодированного битового потока. Кодер определяет, сигнализировать ли элемент синтаксиса для поднабора из множества поднаборов коэффициентов преобразования. Например, кодер может определить, сигнализировать ли элемент синтаксиса, на основании количества потенциальных ненулевых коэффициентов в пределах поднабора, или на основании среднего количества ненулевых коэффициентов для поднабора, на основании статистики для одной или более ранее кодированных единиц уровня листьев видео данных.
[0008] Декодер может считывать энтропийно кодированный битовый поток и определять, декодировать ли коэффициенты преобразования поднабора, на основании элемента синтаксиса. В некоторых примерах декодер может определить, декодировать ли поднабор коэффициентов преобразования, на основании того, включает ли энтропийно кодированный битовый поток в себя элемент синтаксиса, ассоциированный с поднабором. Например, если поднабор не включает в себя ассоциированный элемент синтаксиса, декодер декодирует поднабор. Однако, если поднабор действительно включает в себя ассоциированный элемент синтаксиса, декодер определяет, декодировать ли поднабор, на основании значения элемента синтаксиса. Например, если элемент синтаксиса имеет первое значение, декодер декодирует поднабор, но если элемент синтаксиса имеет второе, отличное значение, декодер не декодирует поднабор.
[0009] В некоторых примерах способы настоящего раскрытия могут повысить эффективность кодирования кодера или декодера. Например, способы, описанные здесь, могут уменьшить количество битов, используемых кодером, чтобы генерировать энтропийно кодированный битовый поток, который представляет видео данные.
[0010] В одном примере способ кодирования блока видео данных содержит деление единицы уровня листьев видео данных на множество поднаборов коэффициентов преобразования, и генерирование, для поднабора из множества поднаборов коэффициентов преобразования, элемента синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты.
[0011] В другом примере устройство может быть сконфигурировано, чтобы кодировать по меньшей мере одну единицу уровня листьев видео данных. Устройство может содержать процессор, сконфигурированный, чтобы разделить единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования, и генерировать, для поднабора из множества поднаборов коэффициентов преобразования, элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты.
[0012] В другом примере устройство может быть сконфигурировано, чтобы кодировать по меньшей мере одну единицу уровня листьев видео данных, причем устройство содержит средство для деления единицы уровня листьев видео данных на множество поднаборов коэффициентов преобразования, и средство для генерирования, для поднабора из множества поднаборов коэффициентов преобразования, элемента синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты.
[0013] В другом примере способ декодирования блока видео данных содержит деление единицы уровня листьев видео данных на множество поднаборов коэффициентов преобразования, определение, для поднабора из множества поднаборов коэффициентов преобразования, включает ли в себя упомянутый поднабор ассоциированный элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты, определение, на основании элемента синтаксиса, декодировать ли поднабор.
[0014] В другом примере устройство может быть сконфигурировано, чтобы декодировать блок видео данных, причем устройство содержит процессор, сконфигурированный, чтобы разделить единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования, определять, для поднабора из множества поднаборов коэффициентов преобразования, включает ли в себя упомянутый поднабор ассоциированный элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты, и определять, на основании элемента синтаксиса, декодировать ли поднабор.
[0015] В другом примере устройство может быть сконфигурировано, чтобы декодировать блок видео данных, причем устройство содержит средство для деления единицы уровня листьев видео данных на множество поднаборов коэффициентов преобразования, средство для определения, для поднабора из множества поднаборов коэффициентов преобразования, включает ли в себя упомянутый поднабор элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты, и средство для определения, на основании элемента синтаксиса, декодировать ли поднабор.
[0016] Способы, описанные в настоящем раскрытии, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Например, различные способы могут быть реализованы или выполнены одним или более процессорами. Как используется здесь, процессор может относиться к микропроцессору, специализированной интегральной схеме (ASIC), программируемой пользователем вентильной матрице (FPGA), цифровому сигнальному процессору (DSP), или другой эквивалентной интегральной или дискретной логической схеме. Программное обеспечение может быть выполнено одним или более процессорами. Программное обеспечение, содержащее инструкции для выполнения способов, может быть первоначально сохранено в считываемом компьютером носителе и загружено и выполнено процессором.
[0017] Соответственно, настоящее раскрытие также рассматривает считываемые компьютером носители данных, содержащие инструкции, чтобы заставить процессор (или другое вычислительное устройство) выполнять любые способы, описанные в настоящем раскрытии. В некоторых случаях считываемый компьютером носитель данных может являться частью компьютерного продукта, хранящего программу, который может быть продан изготовителям и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, и в некоторых случаях может также включать в себя упаковочные материалы.
[0018] В одном примере настоящее раскрытие описывает считываемый компьютером носитель данных, который хранит инструкции, которые, когда выполняются, заставляют вычислительное устройство делить единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования, и генерировать, для поднабора из множества поднаборов коэффициентов преобразования, элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты.
[0019] В другом примере настоящее раскрытие описывает считываемый компьютером носитель данных, который хранит инструкции, которые, когда выполняются, заставляют вычислительное устройство делить единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования, определять, для поднабора из множества поднаборов коэффициентов преобразования, включает ли в себя упомянутый поднабор ассоциированный элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты, и определять, на основании элемента синтаксиса, декодировать ли поднабор.
[0020] Детали одного или более примеров сформулированы в прилагаемых чертежах и описании ниже. Другие признаки, объекты, и преимущества изобретения будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0021] ФИГ. 1 является блок-схемой, которая иллюстрирует один пример системы кодирования и декодирования видео, сконфигурированная, чтобы работать согласно способам настоящего раскрытия.
[0022] ФИГ. 2 является блок-схемой, которая иллюстрирует один пример видео кодера, сконфигурированного, чтобы работать согласно способам настоящего раскрытия.
[0023] ФИГ. 3 является блок-схемой, которая иллюстрирует один пример видео декодера, сконфигурированного, чтобы работать согласно способам настоящего раскрытия.
[0024] ФИГ. 4 является концептуальной диаграммой, которая иллюстрирует один пример единицы уровня листьев видео данных, разделенной на множество поднаборов коэффициентов преобразования, совместимых с одним или более аспектами настоящего раскрытия.
[0025] ФИГ. 5 является блок-схемой, которая иллюстрирует один пример способа кодирования единицы уровня листьев видео данных, совместимого с одним или более аспектами настоящего раскрытия.
[0026] ФИГ. 6 является блок-схемой, которая иллюстрирует другой пример способа кодирования единицы уровня листьев видео данных, совместимого с одним или более аспектами настоящего раскрытия.
[0027] ФИГ. 7 является блок-схемой, которая иллюстрирует другой пример способа кодирования единицы уровня листьев видео данных, совместимого с одним или более аспектами настоящего раскрытия.
[0028] ФИГ. 8 является блок-схемой, которая иллюстрирует один пример способа декодирования единицы уровня листьев видео данных, совместимого с одним или более аспектами настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0029] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое генерирует кодированные видео данные, которые должны быть декодированы в более позднее время устройством 14 назначения. Устройство-источник 12 и устройство 14 назначения могут содержать любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (то есть, ноутбуки), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые "смартфоны”, так называемые "интеллектуальные" клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиа плееры, пульты видеоигр, устройство потоковой передачи видео, или подобные. В некоторых случаях устройство-источник 12 и устройство 14 назначения могут быть оборудованы для беспроводной связи.
[0030] Устройство 14 назначения может принимать кодированные видео данные, которые должны быть декодированы, по линии 16 связи. Линия 16 связи может содержать любой тип носителя или устройства, способного передавать кодированные видео данные от устройства-источника 12 на устройство 14 назначения. В одном примере, линия 16 связи может содержать коммуникационный носитель, чтобы позволить устройству-источнику 12 передавать кодированные видео данные непосредственно на устройство 14 назначения в реальном времени. Закодированные видео данные могут быть модулированы согласно стандарту связи, такому как протокол беспроводной связи, и переданы на устройство 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотного (РЧ) спектра или одну или более физические линии передачи. Коммуникационный носитель может являться частью на основании пакетной передаче сети, такой как локальная сеть, региональная сеть или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, переключателей, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от устройства-источника 12 на устройство 14 назначения.
[0031] Альтернативно, кодированные данные могут быть выведены из интерфейса 22 вывода на устройство 32 хранения. Аналогично, к закодированным данным можно получить доступ от устройства 32 хранения с помощью интерфейса 28 ввода. Устройство 32 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые носители данных для того, чтобы хранить закодированные видео данные. В другом примере устройство 32 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может хранить закодированное видео, сгенерированное исходным устройством 12. Устройство 14 назначения может получить доступ к сохраненным видео данным из устройства 32 хранения с помощью передачи в виде потока или загрузки. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти кодированные видео данные на устройство 14 назначения. Примерные файловые серверы включают в себя сетевой сервер (например, для вебсайта), FTP-сервер, устройства сетевых хранилищ данных (NAS), или локальный дисковый накопитель. Устройство 14 назначения может получить доступ к кодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которое является подходящим для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача кодированных видео данных от устройства 32 хранения может быть потоковой передачей, передачей загрузки или комбинацией обоих.
[0032] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Эти способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как радиовещания телевизионных передач, передач кабельного телевидения, передач спутникового телевидения, потоковых передач видео, например, через Интернет, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или другие приложения. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двухстороннюю видео передачу, чтобы поддерживать приложения, такие как передача в виде потока видео, воспроизведение видео, вещание видео и/или видео телефония.
[0033] В примере согласно фиг. 1 устройство-источник 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. В некоторых случаях интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 видео источник 18 может включать в себя источник, такой как видео устройство захвата, например, видео камера, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принимать видео от поставщика видео контента, и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве исходного видео или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, устройство-источник 12 и устройство 14 назначения могут сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в настоящем раскрытии, могут быть применимы к кодированию видео обычно и могут быть применены к беспроводным и/или проводным приложениям.
[0034] Захваченное, предварительно захваченное или компьютерно-генерируемое видео может быть закодировано видео кодером 20. Закодированные видео данные могут быть переданы непосредственно на устройство 14 назначения через интерфейс 22 вывода из устройства-источника 12. Закодированные видео данные могут также (или альтернативно) сохраняться на устройстве 32 хранения для более позднего доступа посредством устройства 14 назначения или других устройств, для декодирования и/или воспроизведения.
[0035] Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30 и устройство 32 отображения. В некоторых случаях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода из устройства 14 назначения принимает закодированные видео данные по линии 16 связи. Закодированные видео данные, переданные по линии 16 связи, или предоставленные на устройстве 32 хранения, могут включать в себя множество элементов синтаксиса, генерируемых видео кодером 20 для использования видео декодером, таким как видео декодер 30, при декодировании видео данных. Такие элементы синтаксиса могут быть включены с закодированными видео данными, переданными на коммуникационном носителе, сохранены на носителе данных или сохранены на файловом сервере.
[0036] Устройство 32 отображения может быть интегрированным с или внешним к устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также быть конфигурированным, чтобы взаимодействовать с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Обычно устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.
[0037] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт кодирование видео высокой производительности (HEVC), находящемся сейчас в развитии, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно называемый MPEG-4, Part 10, Advanced Video Coding (AVC), или расширениям таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0038] Хотя не показано на фиг. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров-демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0039] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Когда способы реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый видео кодер 20 и видео декодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0040] JCT-VC работает над развитием стандарта HEVC. Усилия по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой Тестовая Модель HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео перед существующими устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать три режима кодирования с внутренним предсказанием.
[0041] Обычно рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркости так и цветности. Блок дерева имеет аналогичную цель, что и макроблок стандарта H.264. Вырезка включает в себя несколько последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CUs) согласно квадродереву. Например, блок дерева, как узел корня квадродерева, может быть разделен на четыре дочерних узла, и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен еще на четыре дочерних узла. Оконечный неразделенный дочерний узел, в качестве узла листа квадродерева, содержит узел кодирования, то есть, кодированный видео блок. Такой оконечный неразделенный дочерний узел структуры данных видео упоминается здесь как единица уровня листьев. Данные синтаксиса, ассоциированные с кодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, и могут также определять минимальный размер узлов кодирования.
[0042] CU включает в себя узел кодирования и единицы предсказания (PUs) и блоки преобразования (TUs), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер единицы CU может изменяться от 8x8 пикселей до размера блока дерева с максимумом 64x64 пикселями или больше. Каждая CU может содержать одну или более PU и одну или более TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU в одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU кодированной в режиме пропуска или прямом режиме, кодированной в режиме внутреннего предсказания или кодированной в режиме внешнего предсказания. PU могут быть разделены, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU в одну или более TU согласно квадродереву. TU может быть квадратной или неквадратной по форме.
[0043] Стандарт HEVC учитывает преобразования согласно единицам TU, которые могут быть различными для различных CU. TU типично имеют размеры на основании размеров PU в пределах заданной CU, определенной для разделенной LCU, хотя это может не всегда иметь место. TU типично имеют тот же размер или меньший, чем PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие единицы, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листовые узлы RQT могут упоминаться как единицы преобразования (TUs). Такой листовой узел TU является одним примером единицы уровня листьев, как описано здесь. Значения пиксельных разностей, ассоциированные с TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.
[0044] Обычно PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU является кодированной во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU является кодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0, Список 1, или Список C) для вектора движения.
[0045] Обычно TU используется для процессов квантования и преобразования. Заданная CU, имеющая одну или более PU, может также включать в себя одну или более единиц преобразования (TU). Вслед за предсказанием видео кодер 20 может вычислить остаточные значения, соответствующие этой PU. Остаточные значения содержат значения пиксельной разности, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы с использованием единиц TU, чтобы сформировать преобразованные в последовательную форму коэффициенты преобразования для энтропийного кодирования. Настоящее раскрытие типично использует термин "видео блок", чтобы ссылаться на узел кодирования в CU. В некоторых конкретных случаях настоящее раскрытие может также использовать термин "видео блок", чтобы ссылаться на блок дерева, то есть, LCU, или CU, который включает в себя узел кодирования и единицы PU и единицы TU.
[0046] Видео последовательность типично включает в себя ряд видео кадров или картинок. Группа картинок (GOP) обычно содержит последовательность из одной или более видео картинок. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одной или более картинок GOP или в другом месте, которое описывает несколько картинок, включенных в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над видео блоками в пределах индивидуальных вырезок видео, чтобы кодировать видео данные. Видео блок может соответствовать узлу кодирования в пределах CU. Видео блоки могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования.
[0047] В качестве примера HM поддерживает предсказание в PU различных размеров. Предполагая, что размер конкретной CU равен 2Nx2N, HM поддерживает внутреннее предсказание в размерах PU, равных 2Nx2N или NxN, и внешнее предсказание в симметричных размерах PU, равных 2Nx2N, 2NxN, Nx2N или NxN. HM также поддерживает асимметричное разделение для внешнего предсказания в размерах PU, равных 2NxnU, 2NxnD, nLx2N, и nRx2N. При асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, указывается посредством "n", сопровождаемым индикацией "Верхняя" (Up), "Левая" (Left), или "Правая" (Right). Таким образом, например, "2NxnU" относится к CU размером 2Nx2N, которая разделена горизонтально с PU 2Nx0,5N сверху и PU 2Nx1,5N внизу.
[0048] В настоящем описании "NxN" и "N на N" могут использоваться взаимозаменяемо, чтобы ссылаться на пиксельные размерности блока в терминах вертикального и горизонтального измерений, например, 16x16 пикселей или 16 на 16 пикселей. Обычно блок 16x16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в строках и колонках. Кроме того, блоки не должны обязательно иметь одинаковое количество пикселей в горизонтальном направлении как в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где М не обязательно равно N.
[0049] После кодирования с внутренним предсказанием или с внешним предсказанием, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные для единиц TU в CU. Единицы PU могут содержать пиксельные данные в пространственной области (также называемой пиксельной областью), и единицы TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет преобразования, или концептуально подобного преобразования к остаточным видео данным. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания, соответствующими единицам PU. Видео кодер 20 может сформировать единицы TU, включая остаточные данные для CU, и затем преобразовать единицы TU, чтобы сформировать коэффициенты преобразования для этой CU.
[0050] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, используемых, чтобы представить коэффициенты, обеспечивающие дальнейшее сжатие. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами. Например, значение n-бит может быть округлено в меньшую сторону до значения m-бит во время квантования, где n больше чем m.
[0051] В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно адаптивному кодированию с переменной длиной кода (CAVLC), контекстно адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию с разделением интервала вероятности (PIPE) или другим методикам энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными для использования видео декодером 30 при декодировании видео данных.
[0052] Чтобы выполнить CABAC, видео кодер 20 может присвоить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относиться к тому, например, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигать экономии битов, например, при использовании кодовых слов равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0053] В соответствии с этим раскрытием, видео кодер 20 из устройства-источника 12 может сканировать коэффициенты преобразования единицы уровня листьев видео данных (например, листовой узел квадродерева или другой структуры данных), которая включает в себя двумерную матрицу коэффициентов преобразования (например, где каждый соответствует пикселям отображенного изображения) в одномерный вектор, который представляет коэффициенты преобразования. Согласно способам, описанным в настоящем описании, выполняя такое сканирование, видео кодер 20 может разделить единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования. Для каждого из поднаборов единицы уровня листьев кодер 20 может определить, сигнализировать ли к декодеру в качестве части энтропийно кодированного битового потока элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты. Кодер 20 может определить, сигнализировать ли элемент синтаксиса для конкретного поднабора, на основании определения, улучшит ли сигнализация элемента синтаксиса эффективность кодирования. Чтобы определить, улучшит ли сигнализация элемента синтаксиса эффективность кодирования, кодер 20 может применить одно или более правил, как описано более подробно ниже. Кодер 20 может вывести энтропийно кодированный битовый поток, который включает в себя блок видео данных. Энтропийно кодированный битовый поток может затем быть считан и декодирован декодером, чтобы восстановить двумерную матрицу, которая представляет единицу уровня листьев видео данных.
[0054] Обратное декодирование коэффициентов преобразования может также быть выполнено видео декодером 30 из устройства 14 назначения. Таким образом, видео декодер 30 может отобразить коэффициенты одномерного вектора коэффициентов преобразования, которые представляют блок видео данных, в позиции в двумерной матрице коэффициентов преобразования, чтобы восстановить двумерную матрицу коэффициентов преобразования. Согласно способам, описанным в настоящем описании, декодер 30 может считать одномерную матрицу, которая представляет единицу уровня листьев видео данных, и разделить эту единицу уровня листьев на множество поднаборов коэффициентов преобразования. Для каждого из поднаборов декодер 30 может определить, декодировать ли коэффициенты преобразования поднабора. Например, если декодер 30 не считывает в энтропийно кодированном битовом потоке элемент синтаксиса, который указывает, имеет ли конкретный поднабор ненулевые коэффициенты, то декодер 30 декодирует коэффициенты поднабора. Однако, если декодер 30 считывает такой элемент синтаксиса, ассоциированный с конкретным поднабором, декодер 30 может определить, декодировать ли коэффициенты преобразования этого поднабора, на основании значения элемента синтаксиса. Например, если элемент синтаксиса указывает, что поднабор включает в себя коэффициенты, отличные от нуля, декодер 30 декодирует коэффициенты преобразования этого поднабора. Однако, если элемент синтаксиса указывает, что поднабор не включает в себя ненулевых коэффициентов, декодер 30 не декодирует коэффициенты преобразования этого поднабора.
[0055] Способы, описанные здесь, могут повысить эффективность кодирования видео. Например, разделение блока видео данных на множество поднаборов коэффициентов преобразования и сигнализация элементов синтаксиса, которые указывают, включают ли поднаборы в себя ненулевые коэффициенты, как описано здесь, может уменьшить количество битов, необходимых для представления видео данных, что может повысить уровень эффективности кодера/декодера.
[0056] Фиг. 2 является блок-схемой, иллюстрирующей примерный видео кодер 20, который может реализовать способы внешнего предсказания, описанные в настоящем раскрытии. Видео кодер 20 может выполнить внутреннее и внешнее кодирование видео блоков в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (I режим) может ссылаться на любой из нескольких основанных на пространственном сжатии режимов. Внешние режимы, такие как однонаправленное предсказание (P режим) или двунаправленное предсказание (B режим), могут ссылаться на любой из нескольких основанных на временном сжатии режимов.
[0057] В примере согласно фиг. 2 видео кодер 20 включает в себя блок 35 разделения, блок 41 предсказания, память 64 опорных картинок, сумматор 50, модуль 52 преобразования, блок 54 квантования, и блок 56 энтропийного кодирования. Блок 41 предсказания включает в себя блок 42 оценки движения, блок 44 компенсации движения, и модуль 46 внутреннего предсказания. Для реконструкции видео блока видео кодер 20 также включает в себя блок 58 обратного квантования, модуль 60 инверсного преобразования и сумматор 62. Фильтр удаления блочности (не показанный на фиг. 2) может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично фильтрует выходные данные сумматора 62. Дополнительные фильтры контура (в контуре или после контура) могут также использоваться в дополнение к фильтру удаления блочности.
[0058] Как показано на фиг. 2, видео кодер 20 принимает видео данные, и блок 35 разделения разделяет данные на видео блоки. Это разделение может также включать в себя разделение на вырезки, мозаичные элементы или другие большие блоки, а также разделение видео блока, например, согласно структуре квадродерева единиц LCU и CU. Видео кодер 20 в целом иллюстрирует компоненты, которые кодируют видео блоки в пределах вырезки видео, которая должна быть закодирована. Вырезка может быть разделена на множественные видео блоки (и возможно на наборы видео блоков, названных мозаичными элементами). Блок 41 предсказания может выбрать одон из множества возможных режимов кодирования, таких как один из множества режимов внутреннего кодирования или один из множества режимов внешнего кодирования, для текущего видео блока на основании результатов ошибки (например, скорости кодирования и уровня искажения). Блок 41 предсказания может выдать результирующий внутренне или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорной картинки.
[0059] Модуль 46 внутреннего предсказания в пределах модуля 41 предсказания может выполнить внутреннее предсказывающее кодирование текущего видео блока относительно одного или более соседних блоков в том же самом кадре или вырезке, что и текущий блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Блок 42 оценки движения и блок 44 компенсации движения в пределах модуля 41 предсказания выполняют внешнее предсказывающее кодирование текущего видео блока относительно одного или более предсказывающих блоков в одной или более опорных картинках, чтобы обеспечить временное сжатие.
[0060] Блок 42 оценки движения может быть сконфигурирован, чтобы определить режим внешнего предсказания для вырезки видео согласно заранее определенному шаблону для видео последовательности. Заранее определенный шаблон может определять вырезки видео в последовательности как P вырезки, B вырезки или вырезки GPB. Блок 42 оценки движения и блок 44 компенсации движения могут быть высоко интегрированы, но иллюстрированы по отдельности в концептуальных целях. Оценка движения, выполненная блоком 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать смещение PU видео блока в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорной картинки.
[0061] Предсказывающий блок является блоком, который обнаружен как близко соответствующий PU видео блока, который должен быть кодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками различия. В некоторых примерах видео кодер 20 может вычислять значения для субцелочисленных пиксельных позиций опорных картинок, сохраненных в памяти 64 опорных картинок. Например, видео кодер 20 может интерполировать значения пиксельных позиций в одну четверть, пиксельных позиций в одну восьмую, или других фракционных пиксельных позиций опорной картинки. Поэтому блок 42 оценки движения может выполнять поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0062] Блок 42 оценки движения вычисляет вектор движения для PU видео блока во внешне кодированной вырезке, сравнивая позицию PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицируют одну или более опорных картинок, сохраненных в памяти 64 опорных картинок. Блок 42 оценки движения посылает вычисленный вектор движения в блок 56 энтропийного кодирования и блок 44 компенсации движения.
[0063] Компенсация движения, выполненная блоком 44 компенсации движения, может вовлекать выборку или генерирование предсказывающего блока, на основании вектора движения, определенного посредством оценки движения, возможно выполняя интерполяцию к субпиксельной точности. После приема вектора движения для PU текущего видео блока блок 44 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок. Видео кодер 20 формирует остаточный видео блок, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего кодированного блока видео, формируя значения пиксельных разностей. Значения пиксельных разностей формируют остаточные данные для блока, и могут включать в себя компоненты разности и яркости и цветности. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Блок 44 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с видео блоками и видео вырезкой, для использования видео декодером 30 при декодировании видео блоков вырезки видео.
[0064] После того как блок 44 компенсации движения генерирует предсказывающий блок для текущего видео блока, видео кодер 20 формирует остаточный видео блок, вычитая предсказывающий блок из текущего видео блока. Остаточные видео данные в остаточном блоке могут быть включены в одну или более TU и поданы к модулю 52 преобразования. Модуль 52 преобразования преобразует остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такие как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 52 преобразования может преобразовать остаточные видео данные из пиксельной области к области преобразования, такой как частотная область.
[0065] Модуль 52 преобразования может послать получающиеся коэффициенты преобразования в блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить частоту следования битов. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена, регулируя параметр квантования.
[0066] Вслед за квантованием блок 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, блок 56 энтропийного кодирования может выполнить контекстно адаптивное кодирование с переменной длиной кода (CAVLC), контекстно адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другой способ энтропийного кодирования или методику. После энтропийного кодирования посредством блока 56 энтропийного кодирования кодированный поток битов может быть передан к видео декодеру 30, или заархивирован для более поздней передачи или поиска видео декодером 30. Блок 56 энтропийного кодирования может также энтропийно кодировать вектора движения и другие элементы синтаксиса для текущей закодированной вырезки видео. В некоторых примерах блок 56 энтропийного кодирования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования, чтобы генерировать одномерный вектор коэффициентов преобразования энтропийно кодированного битового потока.
[0067] Согласно способам настоящего раскрытия при сканировании матрицы коэффициентов преобразования, чтобы генерировать одномерный вектор, блок 56 энтропийного кодирования может разделить единицу уровня листьев видео данных, такая как неразделенный дочерний узел структуры квадродерева, как описано выше, на множество поднаборов коэффициентов преобразования, которые меньше чем единица уровня листьев. Например, блок 56 энтропийного кодирования может разделить единицу уровня листьев видео данных на множество поднаборов, где каждый имеет геометрическую форму в пределах единицы уровня листьев. В некоторых примерах блок 56 энтропийного кодирования может разделить коэффициенты преобразования единицы уровня листьев в меньшие компоновки прямоугольной формы видео данных. В других примерах блок 56 энтропийного кодирования может разделить коэффициенты преобразования единицы уровня листьев в поднаборы треугольной формы коэффициентов преобразования. В еще других примерах блок 56 энтропийного кодирования может разделить коэффициенты преобразования единицы уровня листьев в поднаборы, имеющие другие формы, или даже поднаборы, которые не соответствуют никакой конкретной геометрической форме. Вместо этого блок 56 энтропийного кодирования может разделить множество коэффициентов преобразования единицы уровня листьев согласно порядку сканирования коэффициентов преобразования, который может быть фиксированным или адаптивным. Например, блок 56 энтропийного кодирования может разделить множество коэффициентов преобразования единиц уровня листьев на множество поднаборов коэффициентов преобразования, на основании порядка сканирования (например, адаптивном или фиксированном порядке сканирования) коэффициентов преобразования. Поднаборы могут иметь подобные или различные количества коэффициентов в различных примерах.
[0068] Согласно способам, описанным в настоящем описании, как только единица уровня листьев коэффициентов преобразования была разделена на множество поднаборов, блок 56 энтропийного кодирования может генерировать, для по меньшей мере некоторых из множества поднаборов, элемент синтаксиса, который указывает, включает ли в себя соответствующий поднабор какие-либо ненулевые коэффициенты. В некоторых примерах блок 56 энтропийного кодирования может генерировать такой элемент синтаксиса для каждого поднабора из множества поднаборов коэффициентов преобразования. В других примерах блок 56 энтропийного кодирования может выборочно определить, генерировать ли такой элемент синтаксиса для каждого поднабора из множества поднаборов. Решение, генерировать ли такой элемент синтаксиса, может быть основано на том, предусматривает ли такая сигнализация дополнительное сжатие или улучшенную эффективность кодирования. Если да, элемент синтаксиса может генерироваться, но в противном случае и кодер 20 и декодер 30 могут быть запрограммированы, чтобы знать, что индикация не сигнализируется в этом случае.
[0069] Согласно способам настоящего раскрытия, чтобы определить, улучшит ли генерирование такого элемента синтаксиса эффективность сжатия или кодирования, блок 56 энтропийного кодирования может применить одно или более правил, как описано более подробно ниже. В качестве одного примера блок 56 энтропийного кодирования может определить, генерировать ли элемент синтаксиса для конкретного поднабора, на основании количества потенциальных ненулевых коэффициентов этого поднабора. Например, блок 56 энтропийного кодирования может определить, генерировать ли элемент синтаксиса, на основании сравнения многих потенциальных отличных от нуля коэффициентов этого поднабора с порогом.
[0070] В качестве одного примера такого способа, чтобы определить количество потенциальных ненулевых коэффициентов поднабора, блок 56 энтропийного кодирования определяет количество коэффициентов поднабора, которые имеют более раннюю позицию, чем последний ненулевой коэффициент этой единицы уровня листьев, и сравнивают определенное количество коэффициентов с порогом thNoCoeff, как показано в примере согласно фиг. 6 и описано более подробно ниже. Согласно этому примеру, если определенное количество потенциальных ненулевых коэффициентов больше, чем порог thNoCoeff, блок 56 энтропийного кодирования генерирует элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты. Однако, если определенное количество потенциальных ненулевых коэффициентов меньше чем или равно порогу thNoCoeff, блок 56 энтропийного кодирования может не генерировать элемент синтаксиса. В качестве одного примера, блок 56 энтропийного кодирования определяет, сигнализировать ли элемент синтаксиса, который указывает, включает ли в себя конкретный поднабор какие-либо ненулевые коэффициенты, на основании псевдо кода Примера 1 ниже:
Пример 1
noCoeff[xS][yS]>thNoCoeff,
где noCoeff[xS][yS] указывает количество потенциальных ненулевых коэффициентов поднабора, и thNoCoeff является пороговым значением.
[0071] В других примерах блок 56 энтропийного кодирования может определить, сигнализировать ли элемент синтаксиса, который указывает, включает ли в себя поднабор коэффициентов преобразования какие-либо ненулевые коэффициенты, на основании других правил. Например, блок 56 энтропийного кодирования может определить, сигнализировать ли элемент синтаксиса для поднабора, на основании среднего количества ненулевых коэффициентов поднабора, как описано более подробно ниже относительно примера согласно фиг. 7. Согласно этому примеру, когда единицы уровня листьев видео данных кодируются, блок 56 энтропийного кодирования может собрать и сохранить статистику, которые указывают, как часто коэффициенты в позициях в пределах каждого поднабора являются ненулевыми. На основании такой сохраненной статистики блок 56 энтропийного кодирования может определить, генерировать ли элемент синтаксиса. Например, блок 56 энтропийного кодирования может сравнить среднее количество ненулевых коэффициентов для поднабора с порогом tfiAvrgCoeff. Если среднее количество ненулевых коэффициентов поднабора меньше чем порог, блок 56 энтропийного кодирования генерирует элемент синтаксиса. Однако, если среднее количество ненулевых коэффициентов поднабора больше чем или равно порогу tfiAvrgCoeff, блок 56 энтропийного кодирования не генерирует элемент синтаксиса на основании предположения, что в этом случае очень вероятно, что поднабор содержит по меньшей мере один ненулевой коэффициент.
[0072] В качестве другого примера для поднабора, который содержит последний ненулевой коэффициент (относительно зигзагообразного сканирования, первый ненулевой коэффициент при обратном зигзагообразном сканировании) единицы уровня листьев, тот факт, что этот поднабор содержит последний ненулевой коэффициент, означает, что это поднабор должен включать в себя по меньшей мере один ненулевой коэффициент, и поэтому можно предположить, что любой поднабор, который включает в себя последний ненулевой коэффициент, должен включать в себя по меньшей мере один ненулевой коэффициент. Соответственно, нет необходимости генерировать элемент синтаксиса для поднабора, который включает в себя последний ненулевой коэффициент, так как этот поднабор, как можно предположить, включает в себя по меньшей мере один ненулевой коэффициент.
[0073] В качестве одного примера, блок 56 энтропийного кодирования может определить, сигнализировать ли элемент синтаксиса, который указывает, включает ли конкретный поднабор в себя какие-либо ненулевые коэффициенты, на основании псевдокода Примера 2 ниже:
Пример 2
(noCodedCoeff[xS][yS]+noSubBlks[xS][yS]/2)/noSubBlks<tbAvrgCoeff
Здесь noCodedCoeff[xS][yS] указывает количество ненулевых коэффициентов в поднаборе. Согласно псевдокоду из Примера 1, блок 56 энтропийного кодирования инициализирует значения в массиве переменных noCoeff[xS][yS] в 0 прежде, чем кодировать единицу уровня листьев видео блока данных и присвоить значения этому массиву, на основании значения элемента синтаксиса lastPos, который указывает позицию последнего ненулевого коэффициенты в пределах единицы уровня листьев видео данных:
for (pos=0; pos<=lastPos; pos++){
xC=ScanOrder [0][pos];
yC=ScanOrder [l][pos];
noCoeff[xC/M][yC/M]++;
}
Согласно псевдокоду Примера 2, после того, как единица уровня листьев закодирована, блок 56 энтропийного кодирования может обновить массив переменных noSubBlks и noCodedCoeff следующим образом:
for (pos=0; pos<=lastPos; pos++){
xC=ScanOrder [0][pos];
yC=ScanOrder [l][pos];
if (transCoeffLevel[xC][yC]!=0){
noCodedCoeff[xC/M][yC/M]++;
}
}
for (xS=0; xS<N/M; xS++){
for (yS=0; yS<N/M; yS++){
if (noCoeff[xS][yS]>0){
noSubBlks[xS][yS]++;
}
}
}
[0074] При использовании псевдо кода из Примера 2 выше, блок 56 энтропийного кодирования может определить, сигнализировать ли элемент синтаксиса, который указывает, включает ли в себя поднабор коэффициентов преобразования единицы уровня листьев какие-либо ненулевые коэффициенты, на основании среднего количества ненулевых коэффициентов поднабора для ранее закодированных единиц уровня листьев видео данных.
[0075] Блок 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования в качестве опорного блока опорной картинки. Блок 44 компенсации движения может вычислить опорный блок посредством суммирования остаточного блока к предсказывающему блоку одной из опорных картинок в пределах одного из списков опорных картинок. Блок 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить субцелочисленные пиксельные значения для использования в оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсацией движения, сформированному блоком 44 компенсации движения, чтобы сформировать опорный блок для хранения в памяти 64 опорных картинок. Опорный блок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения как опорный блок, чтобы внешне предсказать блок в последующем видео кадре или картинке.
[0076] Фиг. 3 является блок-схемой, иллюстрирующей примерный видео декодер 30, который может реализовать способы внешнего предсказания, описанные в настоящем раскрытии. В примере согласно фиг. 3 видео декодер 30 включает в себя блок 80 энтропийного декодирования модуль 81 предсказания, блок 86 обратного квантования, блок 88 обратного преобразования, сумматор 90 и память 92 опорных картинок. Модуль 81 предсказания включает в себя блок 82 компенсации движения и модуль 84 внутреннего предсказания. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, в целом обратный проходу кодирования, описанному относительно видео кодера 20 на фиг. 2.
[0077] Во время процесса декодирования видео декодер 30 принимает кодированный видео поток битов, который представляет видео блоки кодированной вырезки видео и ассоциированные элементы синтаксиса от видео кодера 20. Блок 80 энтропийного декодирования видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения, и другие элементы синтаксиса. Блок 80 энтропийного декодирования направляет вектора движения и другие элементы синтаксиса к модулю 81 предсказания. Видео декодер 30 может принять элементы синтаксиса на уровне вырезки видео и/или уровне блока видео.
[0078] Блок 80 энтропийного декодирования может считывать одномерный вектор коэффициентов преобразования, декодированных блоком энтропийного декодирования, и восстановить двумерную матрицу коэффициентов преобразования из одномерного вектора. Согласно способам, описанным в настоящем описании, блок 80 энтропийного декодирования может считывать одномерную матрицу, которая представляет единицу уровня листьев видео данных, и разделить эту единицу уровня листьев на множество поднаборов коэффициентов преобразования. Поднаборы коэффициентов преобразования могут иметь прямоугольную, треугольную или любую другую форму или компоновку. Для каждого из поднаборов блок 80 обратного энтропийного декодирования определяет, декодировать ли коэффициенты преобразования поднабора. Например, если блок 80 энтропийного декодирования не считывает элемент синтаксиса, который указывает, имеет ли конкретный поднабор ненулевые коэффициенты, то блок 86 обратного квантования декодирует коэффициенты поднабора. Однако, если блок 80 энтропийного декодирования считывает такой элемент синтаксиса, ассоциированный с конкретным поднабором, блок 80 энтропийного декодирования может определить, декодировать ли коэффициенты преобразования поднабора, на основании значения элемента синтаксиса. Например, если элемент синтаксиса указывает, что поднабор включает в себя ненулевые коэффициенты, блок 80 энтропийного декодирования декодирует коэффициенты преобразования поднабора. Однако, если элемент синтаксиса указывает, что поднабор не включает в себя ненулевых коэффициентов, блок 80 энтропийного декодирования не декодирует коэффициенты преобразования этого поднабора.
[0079] Когда видео вырезка кодирована как внутренне кодированная (I) вырезка, модуль 84 внутреннего предсказания из модуля 81 предсказания может генерировать данные предсказания для видео блока текущей вырезки видео на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр кодирован как внешне кодированная (то есть, B, P или GPB) вырезка, блок 82 компенсации движения модуля 81 предсказания формирует предсказывающие блоки для видео блока текущей вырезки видео на основании векторов движения и других элементов синтаксиса, принятых от блока 80 энтропийного декодирования. Предсказывающие блоки могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя способы конструирования по умолчанию, на основании опорных картинках, сохраненных в памяти 92 опорных картинок.
[0080] Блок 82 компенсации движения определяет информацию предсказания для видео блока текущей вырезки видео, посредством синтаксического разбора вектора движения и других элементов синтаксиса, и использует эту информацию предсказания, чтобы сформировать предсказывающие блоки для текущего видео декодируемого блока. Например, блок 82 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), используемый для кодирования видео блоков вырезки видео, тип вырезки с внешним предсказанием (например, B вырезка, P вырезка, или вырезка GPB), информацию конструирования для одного или более из списков опорных картинок для вырезки, векторов движения для каждого внешне кодированного видео блока этой вырезки, статуса внешнего предсказания для каждого внешне кодированного видео блока этой вырезки, и другой информации, чтобы декодировать видео блоки в текущей вырезке видео.
[0081] Блок 82 компенсации движения может также выполнить интерполяцию, основанную на фильтрах интерполяции. Блок 82 компенсации движения может использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования видео блоков, чтобы вычислить интерполированные значения для субцелочисленных пикселей опорных блоков. В этом случае блок 82 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, из принятых элементов синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки. Блок 86 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные блоком 80 энтропийного декодирования.
[0082] В некоторых примерах процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видео кодером 20 для каждого видео блока в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 88 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0083] После того, как блок 82 компенсации движения генерирует предсказывающий блок для текущего видео блока, на основании векторов движения и других элементов синтаксиса, видео декодер 30 формирует декодированный видео блок посредством суммирования остаточных блоков от модуля 88 обратного преобразования с соответствующими предсказывающими блоками, генерируемыми блоком 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Другие фильтры контура (или в контуре кодирования или после контура кодирования) могут также использоваться, чтобы сгладить пиксельные переходы, или иначе улучшить качество видео. Декодированные видео блоки в заданном кадре или картинке затем сохраняются в памяти 92 опорных картинок, которая хранит опорные картинки, используемые для последующей компенсации движения. Память 92 опорных картинок также хранит декодированное видео для более позднего представления на устройстве отображения, такого как устройство 32 отображения из фиг. 1.
[0084] Фиг. 4 является концептуальной диаграммой, которая изображает один пример единицы 410 уровня листьев, разделенной на множество поднаборов коэффициентов преобразования, совместимых со способами, описанными в настоящем описании. Единица 410 уровня листьев, изображенная на фиг. 4, может содержать неразделенный дочерний узел видео данных, например, листовой узел структуры квадродерева (RQT). Как показано на фиг. 4, каждое множество поднаборов 420 включает в себя множество коэффициентов преобразования 412 (шестнадцать коэффициентов преобразования в примере на фиг. 1), которые могут быть или могут не быть ненулевыми коэффициентами с амплитудой, больше чем ноль. Как также показано на фиг. 4, последний ненулевой коэффициент (относительно зигзагообразного сканирования, первый ненулевой коэффициент обратного зигзагообразного сканирования) единицы 410 уровня листьев имеет позицию (7, 7) в пределах поднабора (1,1) единицы 410 уровня листьев.
[0085] Как описано выше, как только видео кодер 20 разделил единицу 410 уровня листьев на множество поднаборов 420 коэффициентов преобразования, видео кодер 20 может определить, генерировать ли элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты. Например, видео кодер 20 может определить, генерировать ли элемент синтаксиса, ассоциированный с конкретным блоком, на основании количества потенциальных ненулевых коэффициентов в блоке.
[0086] Согласно примеру на фиг. 4 коэффициент в позиции (7, 7) является последним ненулевым коэффициентом единицы 420 уровня листьев, означая, что все коэффициенты преобразования после позиции (7, 7) согласно зигзагообразному порядку сканирования (незатемненные коэффициенты в примере на фиг. 4) имеют амплитуду ноль. Согласно одному примеру видео кодер 20 может определить количество потенциальных ненулевых коэффициентов в поднаборе на основании последней позиции ненулевого коэффициента в пределах единицы 410 уровня листьев.
[0087] Видео кодер 20 может, для каждого соответствующего поднабора единицы 410 уровня листьев, определить потенциальное количество ненулевых коэффициентов (например, коэффициенты обратного зигзагообразного сканирования, которые следуют за последним ненулевым коэффициентом сканирования в местоположении (7, 7) поднабора). Например, видео кодер 20 может определить, что все шестнадцать коэффициентов каждого из поднаборов (0, 0), (0, 1), (1, 0), (1, 1) и (2, 0), изображенных на фиг. 4, являются потенциально ненулевыми коэффициентами, так как все коэффициенты поднаборов находятся перед последним ненулевым коэффициентом в этом сканировании. Видео кодер может также определить, что пятнадцать коэффициентов поднабора (0, 2) могут потенциально быть ненулевыми коэффициентами, шесть коэффициентов каждого из поднаборов (2, 1) и (3, 0) могут потенциально быть ненулевыми коэффициентами, и три коэффициента поднаборов (1, 1) и (0, 3) могут потенциально быть ненулевыми коэффициентами.
[0088] Кодер 20 может определить, генерировать ли элемент синтаксиса для поднаборов 420, изображенных на фиг. 4, на основании определенного количества потенциальных ненулевых коэффициентов для каждого поднабора. Например, кодер 20 может сравнить определенное количество потенциальных ненулевых коэффициентов для каждого поднабора с порогом thNoCoeff. Если определенное количество потенциальных ненулевых коэффициентов больше, чем порог, кодер 20 может генерировать элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор ненулевые коэффициенты. Однако, если определенное количество потенциальных ненулевых коэффициентов меньше чем или равно порогу, кодер 20 может не генерировать элемент синтаксиса.
[0089] Согласно одному конкретному примеру, порог thNoCoeff может иметь значение пять (5). Со ссылкой на пример на фиг. 4 кодер 20 может сигнализировать элемент синтаксиса, который указывает, включают ли в себя поднаборы (0, 0), (0, 1), (1, 0), (1, 1), (0, 2), (2, 0), (2, 1), и (3, 0) ненулевые коэффициенты, так как каждый из этих поднаборов 420 включает в себя больше потенциальных ненулевых коэффициентов, чем значение порог thNoCoeff пять. Однако, для поднаборов (1,2), (0,3), (3,1), (2,2), (1,3), (3,2), (2,3), и (3,3), видео кодер 20 может не генерировать элемент синтаксиса, так как эти поднаборы включают в себя меньше, чем пять потенциальных ненулевых коэффициентов. Например, видео кодер 20 может кодировать коэффициенты преобразования поднаборов (1, 1) и (0, 2) и определить, включают ли в себя эти поднаборы какие-либо ненулевые коэффициенты. Если видео кодер 20 определяет, что любой из поднаборов (1, 2) и (0, 3) включают в себя какие-либо ненулевые коэффициенты, видео кодер может генерировать элемент синтаксиса со значением один (1), ассоциированным с этим поднабором. Иначе, если видео кодер 20 определяет, что любой из поднаборов (1, 1) и (0, 2) не включают в себя отличный от нуля, видео кодер 20 может также генерировать элемент синтаксиса со значением ноль (0), ассоциированным с этим поднабором. Видео кодер 20 может также генерировать элемент синтаксиса со значением (0) или (1), ассоциированным с каждым из поднаборов (0, 0), (0, 1), (1, 0), (2, 0), (2, 1), и (3, 0).
[0090] Элементы синтаксиса, которые указывают, имеют ли поднаборы (0, 0), (0, 1), (1, 0), (1, 1), (0, 2), (2, 0), (2, 1), и (3, 0) ненулевые коэффициенты (например, отдельные элементы синтаксиса, определенные для каждого соответствующего поднабора), могут быть выведены видео кодером 20 в качестве части энтропийно кодированного битового потока, и считаны декодером 30. Как часть восстановления единицы 410 уровня листьев, декодер 30 может разделить данные, представляющие блок 410, на множество суб-блоков. Для каждого суб-блока декодер 30 может определить, включает ли в себя энтропийно кодированный битовый поток элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор ненулевые коэффициенты. Если декодер 30 считывает суб-блок, который не включает в себя такой элемент синтаксиса, декодер 30 декодирует коэффициенты поднабора. Однако, если декодер 30 считывает такой элемент синтаксиса, ассоциированный с поднабором, декодер 30 может использовать значение элемента синтаксиса, чтобы определить, декодировать ли коэффициенты поднабора. Например, согласно примеру, сформулированному выше, если декодер 30 считывает значение элемента синтаксиса единица (1) для поднабора (1, 1), декодер может декодировать этот поднабор. Однако, если декодер 30 считывает значение элемента синтаксиса ноль (0) для поднабора (1, 1), декодер 30 не декодирует коэффициенты преобразования этого суб-блока.
[0091] Фиг. 5 является блок-схемой, которая иллюстрирует один пример способа кодирования видео данных, совместимых с одним или более аспектами настоящего раскрытия. Способ согласно фиг. 5 описан как выполняемый кодером 20, изображенным на фиг. 1 и 2, однако любое другое устройство может использоваться, чтобы выполнить способ согласно фиг. 5.
[0092] Как показано на фиг. 5, кодер 20 делит листовой блок видео данных на множество поднаборов, где каждый включает в себя множественные коэффициенты преобразования (501). В качестве одного примера, множество поднаборов может содержать поднаборы прямоугольной формы, как изображено в примере на фиг. 4, или любой другой геометрической формы или шаблона. Единица уровня листьев видео данных может содержать единицу кодирования самого низкого уровня из стандарта кодирования видео, такую как неразделенный дочерний узел структуры квадродерева, как описано выше.
[0093] Как также показано на фиг. 5, кодер 20 генерирует для по меньшей мере одного из множества поднаборов элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор ненулевые коэффициенты (502). В некоторых примерах кодер 20 может генерировать такой элемент синтаксиса, ассоциированный с каждым из множества поднаборов. В других примерах кодер 20 может выборочно определить, генерировать ли такой элемент синтаксиса для каждого из поднаборов. Например, кодер 20 может выборочно определить, генерировать ли элемент синтаксиса, на основании того, улучшит ли генерирование элемента синтаксиса эффективность кодирования и/или сжатие. Служебные расходы, ассоциированные с указанием, что конкретный поднабор фактически включает в себя ненулевые коэффициенты, может ухудшить сжатие в некоторых случаях, и в этих случаях такой излишней сигнализации можно избежать, и кодер и декодер могут кодировать/декодировать поднабор без какого-либо определения того, включает ли в себя упомянутый поднабор ненулевые коэффициенты.
[0094] В некоторых примерах кодер 20 может определить, генерировать ли элемент синтаксиса, что улучшит эффективность кодирования, на основании количества потенциальных ненулевых коэффициентов в поднаборе, как описано более подробно ниже относительно фиг. 6, или на основании среднего количества коэффициентов каждого поднабора как описано более подробно ниже, как описано более подробно ниже относительно фиг. 7. Если кодер 20 генерирует элемент синтаксиса, ассоциированный с поднабором, кодер 20 может вывести элемент синтаксиса в качестве части энтропийно кодированного битового потока. Энтропийно кодированный битовый поток может быть считан декодером 30, как изображено на фиг. 3, и элемент синтаксиса может использоваться декодером 30, чтобы декодировать единицу уровня листьев, как описано более подробно относительно фиг. 8 ниже.
[0095] Фиг. 6 является блок-схемой, которая иллюстрирует один пример способа кодирования видео данных, совместимого с одним или более аспектами настоящего раскрытия. Способ согласно фиг. 6 описан как выполняемый кодером 20, изображенным на фиг. 2, однако любое устройство может использоваться, чтобы выполнить способы согласно фиг. 6. Согласно примеру на фиг. 6 кодер 20 определяет, улучшит ли генерирование элемента синтаксиса, ассоциированного с поднабором коэффициентов преобразования, эффективность кодирования, на основании количества потенциальных ненулевых коэффициентах для этого поднабора.
[0096] Как показано в примере на фиг. 6, кодер 20 делит единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования (601). В качестве одного примера, множество поднаборов может содержать поднаборы прямоугольной формы, как изображено в примере на фиг. 4, или любую другую геометрическую форму или шаблон. Единица уровня листьев видео данных может содержать единицу кодирования самого низкого уровня для стандарта кодирования видео, такую как неразделенный дочерний узел структуры квадродерева, как описано выше.
[0097] Согласно примеру на фиг. 6 видео кодер 20 определяет, генерировать ли элемент синтаксиса, ассоциированный с каждым из множества поднаборов, на основании количества потенциальных ненулевых коэффициентов каждого поднабора. Например, как показано на фиг. 6, кодер 20 определяет для каждого поднабора, количество потенциальных ненулевых коэффициентов поднабора (602). Чтобы определить количество потенциальных ненулевых коэффициентов, кодер 20 может определить, сколько коэффициентов каждого поднабора имеют позицию перед последним ненулевым коэффициентом единицы уровня листьев, как описано выше относительно примера на фиг. 4.
[0098] Как также показано на фиг. 6, кодер 20 может сравнить определенное количество потенциальных ненулевых коэффициентов с пороговым значением thNoCoeff (603). Как также показано на фиг. 6, если определенное количество потенциальных ненулевых коэффициентов больше, чем пороговое значение thNoCoeff, кодер 20 генерирует элемент синтаксиса, ассоциированный с поднабором (604). Однако, если определенное количество потенциальных ненулевых коэффициентов меньше чем или равно пороговому значению thNoCoeff, кодер 20 не генерирует элемент синтаксиса, ассоциированный с поднабором (605). Согласно этим примерам, если количество потенциальных ненулевых коэффициентов меньше чем или равно пороговому значению thNoCoeff, можно предположить, что кодирование/декодирование декодирования поднабора должно быть выполнено. В этом способе элемент синтаксиса не генерируется для тех поднаборов, которые включают в себя очень мало потенциальных ненулевых коэффициентов, которые могут уменьшить количество битов информации, сообщенной кодером 20, чтобы представить единицу уровня листьев видео данных. Это имеет место потому, что, когда поднабор содержит очень мало потенциальных ненулевых коэффициентов, количество битов, необходимых для того, чтобы сигнализировать эти ненулевые коэффициенты, является относительно малым, что в свою очередь приводит к относительно большим служебным расходам в сигнализации элемента синтаксиса, которая указывает, имеет ли поднабор ненулевые коэффициенты. В результате лучше не сигнализировать элемент синтаксиса и вместо этого кодировать коэффициенты поднабора непосредственно, когда поднабор содержит очень мало потенциальных ненулевых коэффициентов (то есть, меньше чем thNoCoeff).
[0099] Фиг. 7 является блок-схемой, которая иллюстрирует другой пример способа кодирования видео данных, совместимых с одним или более аспектами настоящего раскрытия. Способ согласно фиг. 7 описан как выполняемый кодером 20, изображенным на фиг. 2, однако любое устройство может использоваться, чтобы выполнить способы согласно фиг. 7. Согласно примеру на фиг. 7, кодер 20 определяет, улучшит ли генерирование элемента синтаксиса эффективность кодирования, на основании среднего количества ненулевых коэффициентов для каждого поднабора.
[0100] Как показано на фиг. 7, кодер 20 делит единицу уровня листьев видео данных на множество поднаборов коэффициентов преобразования (701). Как также показано на фиг. 7, для каждого поднабора кодер 20 определяет среднее количество ненулевых коэффициентов для поднабора. Для кодера 20 может быть сконфигурировано собирать статистики, которые указывают, как часто коэффициенты в позициях в пределах каждого поднабора ранее закодированных единиц уровня листьев видео данных включают в себя ненулевые коэффициенты. Например, кодер 20 может поддерживать один или более считчиков, которые подсчитывают, когда блоки уровня листьев кодируются, как часто коэффициенты в пределах каждого поднабора являются ненулевыми, и/или сколько коэффициентов каждого поднабора являются ненулевыми. Согласно этому примеру, когда кодер 20 кодирует новую единицу уровня листьев видео данных, кодер 20 может получить доступ к такому счетчику, чтобы определить среднее количество ненулевых коэффициентов для каждого поднабора. В некоторых примерах счетчик может быть сброшен для каждого поднабора (например, инициализирован) периодически, например, с каждым видео кадром или вырезкой.
[0101] Как также показано на фиг. 7, кодер 20 сравнивает определенное среднее количество ненулевых коэффициентов с порогом thAvrgCoeff (703). Как также показано на фиг. 7, если определенное среднее количество ненулевых коэффициентов меньше, чем порог thAvrgCoeff, кодер 20 генерирует элемент синтаксиса, ассоциированный с поднабором (704). Однако, если определенное среднее количество ненулевых коэффициентов больше чем или равно порогу, кодер 20 не генерирует элемент синтаксиса, ассоциированный с поднабором (705).
[0102] Как описано выше, кодер 20 может генерировать энтропийно кодированный битовый поток, который включает в себя по меньшей мере один элемент синтаксиса, который указывает, включает ли в себя поднабор коэффициентов преобразования какие-либо ненулевые коэффициенты. Кодер 20 может определить, генерировать ли элемент синтаксиса, на основании количества потенциальных ненулевых коэффициентов поднабора, как показано на фиг. 6, или на основании среднего количества ненулевых коэффициентов, как показано на фиг. 7. Декодер 30 может считывать энтропийно кодированный битовый поток, включая по меньшей мере один элемент синтаксиса, и использовать этот по меньшей мере один элемент синтаксиса, чтобы декодировать энтропийно кодированный битовый поток.
[0103] Фиг. 8 является блок-схемой, которая иллюстрирует один пример способа, который может быть выполнен декодером, совместимым с одним или более аспектами настоящего раскрытия. Способ согласно фиг. 8 описан как выполняемый декодером 30, изображенным на фиг. 3, однако любое устройство может использоваться, чтобы выполнить способ согласно фиг. 8.
[0104] Как показано на фиг. 8, декодер 30 может разделить единицу уровня листьев видео данных на множество поднаборов, где каждый включает в себя множественные коэффициенты преобразования (801). В качестве одного примера, множество поднаборов может содержать поднаборы прямоугольной формы, как изображено в примере на фиг. 4, или любой другой геометрической формы или шаблона. Единица уровня листьев видео данных может содержать единицу кодирования самого низкого уровня для стандарта кодирования видео, такую как неразделенный дочерний узел структуры квадродерева, как описано выше. Единица уровня листьев данных представлена энтропийно кодированным битовым потоком, который включает в себя по меньшей мере один элемент синтаксиса, который указывает, включает ли в себя поднабор из множества поднаборов какие-либо ненулевые коэффициенты.
[0105] Как также показано на фиг. 8, для каждого из поднаборов декодер 30 определяет, включает ли в себя энтропийно кодированный битовый поток элемент синтаксиса, ассоциированный с поднабором (802). Как также показано на фиг. 8, если поднабор не включает в себя такой ассоциированный элемент синтаксиса, декодер 30 декодирует поднабор (например, коэффициенты преобразования поднабора) (803). Как также показано на фиг. 8, если поднабор включает в себя такой ассоциированный элемент синтаксиса, декодер 30 может использовать ассоциированный элемент синтаксиса, чтобы определить, декодировать ли поднабор (804). Например, если элемент синтаксиса имеет первое значение (например, один (1)), декодер 30 декодирует поднабор. Однако, если элемент синтаксиса имеет второе значение (например, ноль (0)), декодер 30 не декодирует поднабор.
[0106] В одном или более примерах функции, описанные здесь, могут быть реализованы по меньшей мере частично в аппаратном обеспечении, таком как специализированные компоненты аппаратного обеспечения или процессор. Более широко, способы могут быть реализованы в аппаратном обеспечении, процессорах, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы как одна или более инструкций или код по считываемому компьютером носителю и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером носители данных, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включающие в себя любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. Таким образом считываемый компьютером носитель в целом может соответствовать (1) материальному считываемому компьютером носитель данных, который является невременным или (2) коммуникационному носителю, такой как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0107] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такой как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0108] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0109] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0110] Были описаны различные примеры. Эти и другие примеры находятся в рамках ниже следующей формулы изобретения.