КОДИРОВАНИЕ ФЛАГОВ КОДИРОВАННЫХ БЛОКОВ
CODING FLAGS OF CODED BLOCKS

[0001] Данная заявка испрашивает приоритет предварительной заявки на патент США № 61/620,765, поданной 5 апреля 2012 года, содержимое которой полностью содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие относится к кодированию и сжатию видео и, в частности, к кодированию флагов кодированных блоков.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающих в себя цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференц-связи и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видео, как технологии, описанные в стандартах, заданных посредством разрабатываемых в настоящее время стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов, для того, чтобы более эффективно передавать, принимать и сохранять цифровую видеоинформацию.
[0004] Технологии сжатия видео выполняют пространственное (внутри изображения) прогнозирование и/или временное (между изображениями) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеослайс (вырезка) может быть сегментирован на видеоблоки, которые также могут называться "древовидными блоками", "единицами кодирования (CU) и/или "узлами кодирования". Видеоблоки во внутренне-кодируемом (I) слайсе изображения кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном изображении. Видеоблоки во внешне-кодируемом (P- или B-) слайсе изображения могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном изображении или временное прогнозирование относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] В общем, это раскрытие описывает технологии для сигнализирования присутствия значимых блоков коэффициентов. Значимый блок коэффициентов может представлять собой блок коэффициентов, который включает в себя один или более ненулевых коэффициентов. Более конкретно, видеокодер может генерировать поток битов, который включает в себя данные, которые представляют остаточное дерево квадрантов (RQT) для единицы кодирования (CU), которая больше максимально допустимого размера единицы преобразования (TU). RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с флагом кодированного блока (CBF) для компоненты цветности. CBF для компоненты цветности может указывать то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов, который основан на выборках конкретной компоненты цветности. Видеодекодер может принимать поток битов и может определять, на основе CBF, то, ассоциирован или нет какой-либо из концевых узлов со значимым блоком коэффициентов для компоненты цветности.
[0006] В одном аспекте, способ для кодирования видеоданных содержит генерирование данных, которые представляют остаточное RQT для CU, причем CU больше максимально допустимого размера TU. RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, причем CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов цветности, который основан на выборках конкретной компоненты цветности. Способ также содержит вывод потока битов, который включает в себя RQT для CU.
[0007] В другом аспекте, способ для декодирования видеоданных содержит синтаксический анализ из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU. Пиксельный блок CU больше максимально допустимого размера TU. Способ также содержит, если CBF имеет первое значение, синтаксический анализ, из потока битов, блока коэффициентов цветности, ассоциированного с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0008] В другом аспекте, устройство кодирования видео кодирует видеоданные. Устройство кодирования видео содержит один или более процессоров, сконфигурированных с возможностью генерировать данные, которые представляют RQT для CU, причем CU больше максимально допустимого размера TU, при этом RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, причем CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов цветности, который основан на выборках конкретной компоненты цветности.
[0009] В другом аспекте, устройство декодирования видео декодирует видеоданные. Устройство декодирования видео содержит один или более процессоров, сконфигурированных с возможностью синтаксически анализировать из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU. Пиксельный блок CU больше максимально допустимого размера TU. Один или более процессоров сконфигурированы с возможностью синтаксически анализировать, если CBF имеет первое значение, из потока битов, блок коэффициентов цветности, ассоциированный с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0010] В другом аспекте, устройство кодирования видео кодирует видеоданные. Устройство кодирования видео содержит средство для генерирования данных, которые представляют RQT для CU, причем CU больше максимально допустимого размера TU, при этом RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, причем CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов цветности, который основан на выборках конкретной компоненты цветности.
[0011] В другом аспекте, устройство декодирования видео декодирует видеоданные. Устройство декодирования видео содержит средство для синтаксического анализа из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU. Пиксельный блок CU больше максимально допустимого размера TU. Устройство декодирования видео также содержит средство для синтаксического анализа, если CBF имеет первое значение, из потока битов, блока коэффициентов цветности, ассоциированного с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0012] В другом аспекте, считываемый компьютером носитель данных хранит инструкции, которые, при исполнении посредством одного или более процессоров устройства кодирования видео, конфигурируют устройство кодирования видео с возможностью генерировать данные, которые представляют RQT для CU, при этом RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, причем CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов цветности, который основан на выборках конкретной компоненты цветности.
[0013] В другом аспекте, считываемый компьютером носитель данных хранит инструкции, которые, при исполнении посредством одного или более процессоров устройства декодирования видео, конфигурируют устройство кодирования видео с возможностью синтаксически анализировать из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU. Пиксельный блок CU больше максимально допустимого размера TU. Инструкции также конфигурируют один или более процессоров с возможностью синтаксически анализировать, если CBF имеет первое значение, из потока битов, блок коэффициентов цветности, ассоциированный с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0014] Подробности одного или более примеров данного раскрытия изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0015] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования видео, которая может использовать технологии этого раскрытия.
[0016] Фиг. 2A является концептуальной схемой, иллюстрирующей примерное разложение на дерево квадрантов остаточного пиксельного блока, ассоциированного с единицей кодирования (CU).
[0017] Фиг. 2B является концептуальной схемой, иллюстрирующей схему разложения с преобразованием по фиг. 2A, описанную с использованием дерева.
[0018] Фиг. 3 является концептуальной схемой, иллюстрирующей примерное остаточное дерево квадрантов (RQT).
[0019] Фиг. 4A является концептуальной схемой, иллюстрирующей примерный блок остаточных выборок яркости CU 64×64.
[0020] Фиг. 4B является концептуальной схемой, иллюстрирующей примерный блок остаточных выборок цветности CU 64×64.
[0021] Фиг. 5 является блок-схемой, иллюстрирующей примерный видеокодер, который может реализовывать технологии этого раскрытия.
[0022] Фиг. 6 является блок-схемой, иллюстрирующей примерный видеодекодер, который может реализовывать технологии этого раскрытия.
[0023] Фиг. 7 является концептуальной схемой, иллюстрирующей примерное остаточное дерево квадрантов (RQT), в соответствии с одной или более технологий этого раскрытия.
[0024] Фиг. 8 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеокодера, в соответствии с одной или более технологий этого раскрытия.
[0025] Фиг. 9 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеодекодера, в соответствии с одной или более технологий этого раскрытия.
[0026] Фиг. 10A является блок-схемой последовательности операций способа, иллюстрирующей примерную работу для того, чтобы синтаксически анализировать элементы синтаксиса узла RQT, в соответствии с одной или более технологий этого раскрытия.
[0027] Фиг. 10B является блок-схемой последовательности операций способа, иллюстрирующей продолжение примерной работы по фиг. 10A, в соответствии с одной или более технологий этого раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0028] Видеокодер разлагает остаточный пиксельный блок единицы кодирования (CU) на один или более меньших остаточных пиксельных блоков, каждый из которых ассоциирован с единицей преобразования (TU) CU. Каждый пиксел остаточных пиксельных блоков включает в себя выборку яркости (Y) и также может включать в себя две выборки цветности, U и V. Выборка U может указывать разность между компонентой синего цвета пиксела и выборкой Y для пиксела. По этой причине, выборка U также может упоминаться в качестве выборки Cb. Выборка V может указывать разность между выборкой красного цвета пиксела и выборкой Y для пиксела. По этой причине, выборка V также может упоминаться в качестве выборки Cr.
[0029] Поскольку каждый остаточный пиксел включает в себя выборку Y и также может включать в себя выборку U и выборку V, каждая из TU может быть ассоциирована с блоком остаточных выборок Y (т.е. блоком остаточных выборок Y), блоком остаточных выборок U (т.е. блоком остаточных выборок U) и блоком остаточных выборок V (т.е. блоком остаточных выборок V). Видеокодер может применять одно или более преобразований к каждому из блоков остаточных выборок для того, чтобы генерировать блоки коэффициентов, которые соответствуют блокам остаточных выборок. Некоторые блоки коэффициентов не включают в себя ненулевые коэффициенты, что означает то, что эти блоки коэффициентов включают в себя только нулевые коэффициенты. Для простоты пояснения, это раскрытие может называть блок коэффициентов "значимым блоком коэффициентов", если блок коэффициентов включает в себя один или более ненулевых коэффициентов. Если блок коэффициентов не включает в себя ненулевые коэффициенты (т.е. блок коэффициентов включает в себя только коэффициенты с нулевым значением), для видеокодера может быть более эффективным генерировать флаг, который указывает то, что блок коэффициентов не включает в себя ненулевые коэффициенты, чем сигнализировать каждый из коэффициентов с нулевым значением блока коэффициентов.
[0030] Видеокодер может генерировать данные, которые представляют остаточное дерево квадрантов (RQT) для CU. RQT также может упоминаться в качестве дерева преобразования. RQT для CU содержит набор узлов. Каждый из узлов соответствует блоку остаточных выборок. Корневой узел RQT соответствует остаточному пиксельному блоку CU. Концевые узлы RQT соответствуют остаточным пиксельным блокам TU из CU. Узлы RQT могут быть ассоциированы с флагами разбиения. Флаг разбиения узла может указывать то, имеет или нет узел множество дочерних узлов RQT.
[0031] Кроме того, в дополнение к ассоциированию с флагами разбиения, каждый концевой узел RQT ассоциирован с флагом кодированного блока (CBF) яркости, который указывает то, ассоциирован или нет концевой узел со значимым блоком коэффициентов яркости. В этом раскрытии, CBF яркости также может упоминаться в качестве CBF Y, и блок коэффициентов яркости может упоминаться в качестве блока коэффициентов Y. Блок коэффициентов Y представляет собой блок коэффициентов на основе блока остаточных выборок Y. В дополнение к флагам разбиения и CBF яркости, узлы RQT также могут быть ассоциированы с CBF U и CBF V. CBF U узла указывает то, ассоциирован или нет узел либо какой-либо узел-потомок узла со значимым блоком коэффициентов U. Блок коэффициентов U представляет собой блок коэффициентов на основе блока остаточных выборок U. Первый узел может представлять собой узел-потомок второго узла, если второй узел представляет собой корневой узел RQT или существует путь через RQT из первого узла в корневой узел, который проходит через второй узел и не проходит через какой-либо узел более одного раза. Если CBF U узла указывает то, что узел и каждый узел-потомок узла не ассоциированы со значимым блоком коэффициентов U, ни один узел-потомок узла не ассоциирован с CBF U. CBF V узла указывает то, ассоциирован или нет узел либо какой-либо узел-потомок узла со значимым блоком коэффициентов V. Блок коэффициентов V представляет собой блок коэффициентов на основе блока остаточных выборок V. Если CBF V узла указывает то, что узел и каждый узел-потомок узла не ассоциированы со значимым блоком коэффициентов V, ни один узел-потомок узла не ассоциирован с CBF V. Если узел соответствует блоку остаточных выборок, который больше максимально допустимого размера TU, узел не ассоциирован с CBF U или CBF V.
[0032] Может возникать несколько проблем в этой системе. Во-первых, предусмотрены различные способы для сигнализирования того, ассоциированы или нет узлы RQT с блоками значимых коэффициентов яркости и блоками значимых коэффициентов U и V. Иными словами, CBF Y кодируются только в концевых узлах RQT, в то время как CBF U и V могут кодироваться в неконцевых узлах RQT. Во-вторых, иерархическое кодирование CBF U и V применимо только к некоторым уровням RQT. Например, видеокодер не сигнализирует CBF U и V в узлах, которые соответствуют остаточным пиксельным блокам, превышающим максимально допустимый размер TU. Эти проблемы могут повышать сложность видеокодеров и видеодекодеров.
[0033] В соответствии с технологиями этого раскрытия, видеокодер может генерировать данные, которые представляют RQT для CU. CU может быть больше максимально допустимого размера TU (т.е. пиксельный блок, ассоциированный с CU, может быть больше максимально допустимого размера TU). Максимально допустимый размер TU может быть наибольшим допустимым размером пиксельного блока, ассоциированного с TU. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, причем CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов, который основан на выборках конкретной компоненты цветности. Конкретная компонента цветности может представлять собой компоненту U или компоненту V. Аналогично, видеодекодер может синтаксически анализировать из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU, при этом пиксельный блок CU больше максимально допустимого размера TU. Если CBF имеет первое значение, видеодекодер может синтаксически анализировать, из потока битов, блок коэффициентов цветности, ассоциированный с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0034] Технологии этого раскрытия могут предоставлять несколько преимуществ. Например, если CBF цветности (например, CBF для конкретной компоненты цветности) не сигнализируется в корневом узле, CBF цветности сигнализируется в каждом узле на первом уровне RQT, который соответствует TU, меньшим максимально допустимого размера TU. Напротив, если CBF цветности сигнализируется в корневом узле RQT, видеокодер, возможно, не должен сигнализировать CBF цветности в каждом узле первого уровня RQT, который соответствует TU, меньшим максимально допустимого размера TU, в частности, если CBF в корневом узле имеет второе значение. Таким образом, технологии этого раскрытия могут сокращать число сигнализируемых CBF и, следовательно, повышать эффективность кодирования.
[0035] Прилагаемые чертежи иллюстрируют примеры. Элементы, указываемые посредством ссылок с номерами на прилагаемых чертежах, соответствуют элементам, указываемым посредством аналогичных ссылок с номерами в нижеприведенном описании. В этом раскрытии, элементы, имеющие названия, которые начинаются с слов порядкового числительного (например, "первый", "второй", "третий" и т.д.), не обязательно подразумевают, что элементы имеют конкретный порядок. Наоборот, такие порядковые слова используются просто для того, чтобы означать различные элементы идентичного или аналогичного типа.
[0036] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования видео, которая может использовать технологии этого раскрытия. Как описано в данном документе, термин "видеокодер" относится обобщенно к видеокодерам и видеодекодерам. В этом раскрытии, термины "кодирование (coding) видео" или "кодирование" (coding) могут относиться обобщенно к кодированию (encoding) видео или декодированию видео.
[0037] Как показано на фиг. 1, система 10 кодирования видео включает в себя устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 генерирует закодированные видеоданные. Соответственно, устройство-источник 12 может упоминаться в качестве устройства кодирования видео или аппарата кодирования видео. Устройство-адресат 14 может декодировать закодированные видеоданные, сгенерированные посредством устройства-источника 12. Соответственно, устройство-адресат 14 может упоминаться в качестве устройства декодирования видео или аппарата декодирования видео. Устройство-источник 12 и устройство-адресат 14 могут быть примерами устройств кодирования видео или аппаратов кодирования видео.
[0038] Устройство-источник 12 и устройство-адресат 14 могут содержать широкий диапазон устройств, включающих в себя настольные компьютеры, мобильные вычислительные устройства, ноутбуки (например, переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, так называемые смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, встроенные в автомобиль компьютеры и т.п.
[0039] Устройство-адресат 14 может принимать закодированные видеоданные из устройства-источника 12 через канал 16. Канал 16 может содержать одну или более сред или устройств, допускающих перемещение закодированных видеоданных из устройства-источника 12 в устройство-адресат 14. В одном примере, канал 16 может содержать одну или более сред связи, которые предоставляют возможность устройству-источнику 12 передавать закодированные видеоданные непосредственно в устройство-адресат 14 в реальном времени. В этом примере, устройство-источник 12 может модулировать закодированные видеоданные согласно стандарту связи, такому как протокол беспроводной связи, и может передавать модулированные видеоданные в устройство-адресат 14. Одна или более сред связи могут включать в себя беспроводные среды связи и/или проводные среды связи, к примеру, радиочастотный (RF) спектр или одну или более физических линий передачи. Одна или более сред связи могут составлять часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть или глобальная сеть (например, Интернет). Канал 16 может включать в себя различные типы устройств, к примеру, маршрутизаторы, коммутаторы, базовые станции или другое оборудование, которые упрощают передачу из устройства-источника 12 в устройство-адресат 14.
[0040] В другом примере, канал 16 может включать в себя носитель данных, который хранит закодированные видеоданные, сгенерированные посредством устройства-источника 12. В этом примере, устройство-адресат 14 может осуществлять доступ к носителю данных через доступ к диску или доступ по карте. Носитель данных может включать в себя множество локально доступных носителей данных, таких как Blu-Ray-диски, DVD, CD-ROM, флэш-память или другие подходящие цифровые носители данных для сохранения закодированных видеоданных.
[0041] В дополнительном примере, канал 16 может включать в себя файловый сервер или другое промежуточное устройство хранения, которое хранит закодированные видеоданные, сгенерированные посредством устройства-источника 12. В этом примере, устройство-адресат 14 может осуществлять доступ к закодированным видеоданным, сохраненным на файловом сервере или другом промежуточном устройстве хранения через потоковую передачу или загрузку. Файловый сервер может представлять собой тип сервера, допускающего сохранение закодированных видеоданных и передачу закодированных видеоданных в устройство-адресат 14. Примерные файловые серверы включают в себя веб-серверы (например, для веб-узла), серверы по протоколу передачи файлов (FTP), устройства по протоколу системы хранения данных с подключением по сети (NAS) и локальные накопители на дисках.
[0042] Устройство-адресат 14 может осуществлять доступ к закодированным видеоданным через стандартное подключение для передачи данных, к примеру, Интернет-подключение. Типы примера соединений для передачи данных могут включать в себя беспроводные каналы (например, Wi-Fi-подключения), проводные подключения (например, DSL, кабельный модем и т.д.) или их комбинации, которые являются подходящими для осуществления доступа к закодированным видеоданным, сохраненным на файловом сервере. Передача закодированных видеоданных из файлового сервера может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного.
[0043] Технологии этого раскрытия не ограничены приложениями или настройками беспроводной связи. Технологии могут применяться к кодированию видео в поддержку множества мультимедийных приложений, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео, например, через Интернет, кодирование видеоданных для хранения на носителе данных, декодирование видеоданных, сохраненных на носителе данных, или другие приложения. В некоторых примерах, система 10 кодирования видео может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу видео, чтобы поддерживать такие приложения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[0044] В примере по фиг. 1, устройство-источник 12 включает в себя видеоисточник 18, видеокодер 20 и интерфейс 22 вывода. В некоторых примерах, интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. Видеоисточник 18 может включать в себя устройство видеозахвата, например, видеокамеру, видеоархив, содержащий ранее захваченные видеоданные, интерфейс прямых видеотрансляций, чтобы принимать видеоданные от поставщика видеоконтента, и/или компьютерную графическую систему для генерирования видеоданных либо комбинацию таких источников видеоданных.
[0045] Видеокодер 20 может кодировать видеоданные из видеоисточника 18. В некоторых примерах, устройство-источник 12 непосредственно передает кодированные видеоданные в устройство-адресат 14 через интерфейс 22 вывода. В других примерах, закодированные видеоданные также могут быть сохранены на носитель данных или файловый сервер для последующего доступа посредством устройства-адресата 14 для декодирования и/или воспроизведения.
[0046] В примере по фиг. 1, устройство-адресат 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В некоторых примерах, интерфейс 28 ввода включает в себя приемник и/или модем. Интерфейс 28 ввода может принимать закодированные видеоданные по каналу 16. Устройство 32 отображения может быть интегрировано или может быть внешним относительно устройства-адресата 14. В общем, устройство 32 отображения отображает декодированные видеоданные. Устройство 32 отображения может содержать множество устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0047] В некоторых примерах, видеокодер 20 и видеодекодер 30 работают согласно такому стандарту сжатия видео, как ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), в том числе и согласно его расширениям масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). В других примерах, видеокодер 20 и видеодекодер 30 могут работать согласно другим стандартам сжатия видео, включающим в себя стандарт высокоэффективного кодирования видео (HEVC), разрабатываемый в настоящее время. Проект предстоящего стандарта HEVC, называемого "HEVC Working Draft 9", описывается в работе авторов Bross и др. "High Efficiency Video Coding (HEVC) text specification draft 9", Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 11th Meeting: Шанхай, Китай, октябрь 2012 года, которую, с 7 ноября 2012 года, можно загрузить по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v8.zip, содержимое которой полностью содержится в данном документе по ссылке. Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом или технологией кодирования.
[0048] Фиг. 1 является просто примером, и технологии этого раскрытия могут применяться к настройкам кодирования видео (например, кодирования видео или декодирования видео), которые не обязательно включают в себя передачу данных между устройствами кодирования видео и декодирования видео. В других примерах, данные извлекаются из локального запоминающего устройства, передаются в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в запоминающем устройстве, и/или устройство декодирования видео может извлекать и декодировать данные из запоминающего устройства. Во многих примерах, кодирование и декодирование видео выполняется посредством устройств, которые не обмениваются данными друг с другом, а просто кодируют данные в запоминающее устройство и/или извлекают и декодируют данные из запоминающего устройства.
[0049] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем, к примеру, один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, аппаратные средства либо любые их комбинации. Если технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия. Любое из вышеозначенного (включающее в себя аппаратные средства, программное обеспечение, комбинацию аппаратных средств и программного обеспечения и т.д.) может рассматриваться в качестве одного или более процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0050] Это раскрытие может, в общем, означать видеокодер 20, "сигнализирующий" некоторую информацию. Термин "сигнализирование" может, в общем, означать передачу элементов синтаксиса и/или других данных, используемых для того, чтобы декодировать сжатые видеоданные. Эта передача может осуществляться в реальном или практически в реальном времени. Альтернативно, эта передача может осуществляться в промежутке времени, к примеру, может осуществляться при сохранении элементов синтаксиса на считываемом компьютером носителе данных в закодированном потоке битов во время кодирования, которые устройство декодирования видео затем может извлекать в любое время после сохранения на этом носителе.
[0051] Как вкратце упомянуто выше, видеокодер 20 кодирует видеоданные. Видеоданные могут содержать одно или более изображений. Каждое из изображений представляет собой неподвижное изображение, составляющее часть видео. Когда видеокодер 20 кодирует видеоданные, видеокодер 20 может генерировать поток битов. Поток битов может включать в себя последовательность битов, которые формируют закодированное представление видеоданных. Поток битов может включать в себя кодированные изображения и ассоциированные данные. Кодированное изображение представляет собой кодированное представление изображения. Ассоциированные данные могут включать в себя наборы параметров последовательности (SPS), наборы параметров изображения (PPS) и другие синтаксические структуры. SPS может содержать параметры, применимые к нулю или более последовательностям изображений. PPS может содержать параметры, применимые к нулю или более изображениям.
[0052] Чтобы генерировать закодированное представление изображения, видеокодер 20 может сегментировать изображение на сетку блоков дерева кодирования (CTB). В некоторых случаях, CTB может упоминаться в качестве "древовидного блока", "наибольшей единицы кодирования" (LCU) или "единицы дерева кодирования". CTB HEVC могут в широком смысле быть аналогичными макроблокам других стандартов, таких как H.264/AVC. Тем не менее, CTB не обязательно ограничивается конкретным размером и может включать в себя одну или более единиц кодирования (CU).
[0053] Каждый из CTB может быть ассоциирован с различным блоком пикселов одинакового размера в изображении. Каждый пиксел может содержать выборку сигнала яркости (яркости) и также может содержать две выборки сигнала цветности (цветности). Таким образом, каждый CTB может быть ассоциирован с блоком выборок яркости и двумя блоками выборок цветности. Для простоты пояснения, это раскрытие может ссылаться на двумерный массив пикселов в качестве пиксельного блока и может ссылаться на двумерный массив выборок в качестве блока выборок. Видеокодер 20 может использовать сегментацию дерева квадрантов, чтобы сегментировать пиксельный блок, ассоциированный с CTB, на пиксельные блоки, ассоциированные с CU, отсюда и название "блоки дерева кодирования".
[0054] CTB изображения могут быть сгруппированы в один или более слайсов. В некоторых примерах, каждый из слайсов включает в себя целое число CTB. В качестве части кодирования изображения, видеокодер 20 может генерировать закодированные представления каждого слайса изображения (т.е. кодированные слайсы). Чтобы генерировать кодированный слайс, видеокодер 20 может закодировать каждый CTB слайса, чтобы генерировать закодированные представления каждого из CTB слайса (т.е. кодированные CTB).
[0055] Чтобы генерировать кодированный CTB, видеокодер 20 может рекурсивно выполнять сегментацию дерева квадрантов над пиксельным блоком, ассоциированным с CTB, чтобы разделять пиксельный блок на постепенно меньшие пиксельные блоки. Каждый из меньших пиксельных блоков может быть ассоциирован с CU. Сегментированная CU может представлять собой CU, пиксельный блок которой сегментируется на пиксельные блоки, ассоциированные с другими CU. Несегментированная CU может представлять собой CU, пиксельный блок которой не сегментируется на пиксельные блоки, ассоциированные с другими CU.
[0056] Видеокодер 20 может генерировать одну или более единиц прогнозирования (PU) для каждой несегментированной CU. Каждая из PU из CU может быть ассоциирована с различным пиксельным блоком в пиксельном блоке CU. Видеокодер 20 может генерировать прогнозные пиксельные блоки для каждой PU из CU. Прогнозный пиксельный блок PU может представлять собой блок пикселов.
[0057] Видеокодер 20 может использовать внутреннее (интра-) прогнозирование или внешнее (интер-) прогнозирование для того, чтобы генерировать прогнозный пиксельный блок для PU. Если видеокодер 20 использует внутреннее прогнозирование для того, чтобы генерировать прогнозный пиксельный блок PU, видеокодер 20 может генерировать прогнозный пиксельный блок PU на основе декодированных пикселов изображения, ассоциированного с PU. Если видеокодер 20 использует внешнее прогнозирование для того, чтобы генерировать прогнозный пиксельный блок PU, видеокодер 20 может генерировать прогнозный пиксельный блок PU на основе декодированных пикселов одного или более изображений, за исключением изображения, ассоциированного с PU.
[0058] После того, как видеокодер 20 генерирует прогнозированные пиксельные блоки для одной или более PU из CU, видеокодер 20 может генерировать остаточные данные для CU на основе прогнозных пиксельных блоков для PU из CU. Остаточные данные для CU могут указывать разности между выборками в прогнозных пиксельных блоках для PU из CU и исходном пиксельном блоке CU.
[0059] Каждый пиксел в остаточном пиксельном блоке CU может включать в себя выборку Y, выборку U и выборку V. Таким образом, остаточный пиксельный блок CU может содержать блок остаточных выборок Y, который включает в себя выборки Y остаточного пиксельного блока CU, блок остаточных выборок U, который включает в себя выборки U остаточного пиксельного блока CU, и блок остаточных выборок V, который включает в себя выборки V остаточного пиксельного блока CU.
[0060] Кроме того, в качестве части выполнения операции кодирования над несегментированной CU, видеокодер 20 может использовать сегментацию дерева квадрантов, чтобы разлагать CU на одну или более единиц преобразования (TU). Каждая из TU может быть ассоциирована с блоком остаточных выборок Y, блоком остаточных выборок U и блоком остаточных выборок V. Блок остаточных выборок Y, ассоциированный с TU, может представлять собой субблок блока остаточных выборок Y CU. Блок остаточных выборок U может представлять собой субблок блока остаточных выборок U CU. Блок остаточных выборок V может представлять собой субблок блока остаточных выборок V CU.
[0061] Видеокодер 20 может использовать остаточное дерево квадрантов (RQT) для того, чтобы сигнализировать то, как CU сегментируется на TU. Другими словами, видеокодер 20 может включать, в поток битов, данные, которые представляют RQT, которое указывает то, как CU сегментируется на TU. RQT может содержать иерархию узлов. Концевые узлы RQT могут соответствовать TU из CU. Каждый узел RQT может быть ассоциирован с флагом разбиения. Если флаг разбиения узла равен 1, узел имеет четыре дочерних узла. Если флаг разбиения узла равен 0, узел не имеет дочерних узлов. Первый узел может представлять собой дочерний узел второго узла, если первый и второй узел связываются в RQT, и первый узел находится на один уровень ниже в RQT, чем второй узел. Уровни RQT могут быть пронумерованы от 0 вверх, причем уровень 0 соответствует корневому узлу, уровень 1 соответствует дочерним узлам корневого узла, уровень 2 соответствует внучатым узлам корневого узла, и т.д.
[0062] Фиг. 2A является концептуальной схемой, иллюстрирующей примерное разложение (декомпозицию) дерева квадрантов остаточного пиксельного блока 38, ассоциированного с CU. В примере по фиг. 2A, остаточный пиксельный блок 38сегментируется на верхний левый остаточный пиксельный блок, верхний правый остаточный пиксельный блок, нижний левый остаточный пиксельный блок и нижний правый остаточный пиксельный блок. Внутренние линии на фиг. 2A указывают один примерный результат разложения на блоки преобразования согласно структуре в виде дерева квадрантов. Этот результат представляет собой всего одно из множества возможных разложений. В примере по фиг. 2A, предусмотрено три уровня разложений преобразования. На уровне 0 (т.е. на глубине 0), остаточный пиксельный блок 38 разбивается на четыре блока с размером в одну четверть. Затем, на уровне 1 (т.е. на глубине 1), первый блок преобразования с размером в одну четверть дополнительно разбивается на четыре блока преобразования с размером в 1/16 (разбиение=1). Другими словами, верхний левый остаточный пиксельный блок дополнительно сегментируется на четыре меньших остаточных пиксельных блока, помеченные 40, 42, 44 и 46. Не предусмотрено дополнительного разбиения для субблоков 40, 42, 44 и 46. В примере по фиг. 2A, верхний правый остаточный пиксельный блок помечается 48, нижний левый остаточный пиксельный блок помечается 50, и нижний правый остаточный пиксельный блок помечается 52. Не предусмотрено дополнительного разбиения для субблоков 48, 50 и 52.
[0063] Фиг. 2B является концептуальной схемой, иллюстрирующей схему разложения на дерево квадрантов по фиг. 2A, описанную с использованием RQT 54. В примере по фиг. 2B, каждый круг соответствует узлу RQT 54. Каждый узел ассоциирован с флагом разбиения, который указывает то, разбивается или нет остаточный пиксельный блок, ассоциированный с узлом, на четыре меньших остаточных пиксельных блока. Концевые узлы RQT 54 соответствуют помеченным остаточным пиксельным блокам по фиг. 2A. На практике определение того, разбивать или нет блок преобразования, может быть основано на оптимизации искажения в зависимости от скорости.
[0064] Видеокодер 20 может выполнять операции преобразования над блоками остаточных выборок Y, U и V, ассоциированными с TU из CU. Когда видеокодер 20 выполняет операцию преобразования над блоком остаточных выборок Y, видеокодер 20 может применять одно или более преобразований к блоку остаточных выборок Y для того, чтобы генерировать блок коэффициентов Y. Когда видеокодер 20 выполняет операцию преобразования над блоком остаточных выборок U, видеокодер 20 может применять одно или более преобразований к блоку остаточных выборок U для того, чтобы генерировать блок коэффициентов U. Когда видеокодер 20 выполняет операцию преобразования над блоком остаточных выборок V, видеокодер 20 может применять одно или более преобразований к блоку остаточных выборок V для того, чтобы генерировать блок коэффициентов V. Концептуально, блок коэффициентов может представлять собой двумерный массив коэффициентов.
[0065] После генерирования блока коэффициентов видеокодер 20 может квантовать блок коэффициентов. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. После того, как видеокодер 20 квантует блок коэффициентов, видеокодер 20 может выполнять операцию энтропийного кодирования над блоком коэффициентов. Например, видеокодер 20 может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) над данными в блоках коэффициентов.
[0066] Когда видеокодер 20 выполняет операцию CABAC над элементом синтаксиса, видеокодер может преобразовывать элемент синтаксиса в двоичный код. Другими словами, видеокодер 20 может преобразовывать в двоичную форму элемент синтаксиса. Помимо этого, видеокодер 20 может выбирать контекст кодирования из нескольких доступных контекстов кодирования. Контекст кодирования может указывать ожидаемую вероятность "бина" (ячейки) преобразованного в двоичную форму элемента синтаксиса. Бин может представлять собой один бит преобразованного в двоичную форму элемента синтаксиса. Видеокодер 20 может использовать выбранный контекст кодирования для того, чтобы генерировать число, которое представляет элемент синтаксиса. Видеокодер 20 может выводить это число, вместе с другими закодированными элементами синтаксиса, в потоке битов. Поток битов может включать в себя закодированную версию видеоданных.
[0067] Видеодекодер 30 может принимать поток битов, сгенерированный посредством видеокодера 20. Помимо этого, видеодекодер 30 может синтаксически анализировать поток битов, чтобы извлекать элементы синтаксиса из потока битов. Видеодекодер 30 может восстанавливать изображения видеоданных на основе элементов синтаксиса, извлеченных из потока битов. Процесс для того, чтобы восстанавливать видеоданные на основе элементов синтаксиса может быть, в общем, взаимно-обратным по отношению процессу, выполняемому посредством видеокодера 20 для того, чтобы генерировать элементы синтаксиса.
[0068] Видеодекодер 30 может генерировать прогнозированные пиксельные блоки для PU из CU, основываясь, по меньшей мере, частично на элементах синтаксиса, ассоциированных с CU. Помимо этого, видеодекодер 30 может обратно квантовать блоки коэффициентов, ассоциированные с TU из CU. Видеодекодер 30 может выполнять обратные преобразования над блоками коэффициентов для того, чтобы восстанавливать блоки остаточных выборок, ассоциированные с TU из CU. Видеодекодер 30 может восстанавливать пиксельный блок CU на основе прогнозных пиксельных блоков и остаточных пиксельных блоков.
[0069] В некоторых случаях, в блоке коэффициентов может не быть ненулевых коэффициентов. Другими словами, все коэффициенты в блоке коэффициентов могут быть равными нулю. Если отсутствуют ненулевые коэффициенты в блоке коэффициентов, для видеокодера 20 может не быть необходимости сигнализировать значения коэффициентов в блоке коэффициентов. Это раскрытие может использовать термин "значимый блок коэффициентов", чтобы означать блок коэффициентов, который включает в себя по меньшей мере один ненулевой коэффициент.
[0070] Соответственно, видеокодер 20 может ассоциировать CBF Y с концевыми узлами RQT для CU. Для каждого соответствующего концевого узла RQT, если CBF Y соответствующего концевого узла равен 1, блок коэффициентов Y, ассоциированный с соответствующим концевым узлом, включает в себя по меньшей мере один ненулевой коэффициент. Если CBF Y соответствующего концевого узла равен 0, блок коэффициентов Y, ассоциированный с соответствующим концевым узлом, не включает в себя ненулевые коэффициенты. Неконцевые узлы RQT не ассоциированы с CBF Y.
[0071] Видеокодер 20 может кодировать CBF U и CBF V иерархическим способом. Если CBF U конкретного узла равен 0, и конкретный узел представляет собой концевой узел, конкретный узел не ассоциирован со значимым блоком коэффициентов U. Если CBF U конкретного узла равен 0, и конкретный узел не представляет собой концевой узел, ни один узел-потомок конкретного узла не ассоциирован со значимым блоком коэффициентов U. Поскольку видеодекодер 30 может определять, на основе равенства CBF U конкретного узла 0, то, что ни один узел-потомок конкретного узла не ассоциирован со значимым блоком коэффициентов U, для видеокодера 20 может быть необязательным сигнализировать CBF U для узлов-потомков конкретного узла.
[0072] С другой стороны, если CBF U конкретного узла равен 1, и конкретный узел представляет собой концевой узел, конкретный узел ассоциирован со значимым блоком коэффициентов U. Если CBF U конкретного узла равен 1, и конкретный узел не представляет собой концевой узел по меньшей мере один узел-потомок конкретного узла ассоциирован со значимым блоком коэффициентов U. Поскольку по меньшей мере один узел-потомок конкретного узла ассоциирован со значимым блоком коэффициентов U, каждый дочерний узел конкретного узла может быть ассоциирован с CBF U.
[0073] Если CBF V конкретного узла равен 0, и конкретный узел представляет собой концевой узел, конкретный узел не ассоциирован со значимым блоком коэффициентов V. Если CBF V конкретного узла равен 0, и конкретный узел не представляет собой концевой узел, ни один узел-потомок конкретного узла не ассоциирован со значимым блоком коэффициентов V. Поскольку видеодекодер 30 может определять, на основе равенства CBF V 0, то, что ни один узел-потомок конкретного узла не ассоциирован со значимым блоком коэффициентов V, для видеокодера 20 может быть необязательным сигнализировать CBF V для узлов-потомков конкретного узла.
[0074] С другой стороны, если CBF V конкретного узла равен 1, и конкретный узел представляет собой концевой узел, конкретный узел ассоциирован со значимым блоком коэффициентов V. Если CBF V конкретного узла равен 1, и конкретный узел не представляет собой концевой узел по меньшей мере один узел-потомок конкретного узла ассоциирован со значимым блоком коэффициентов V. Поскольку по меньшей мере один узел-потомок конкретного узла ассоциирован со значимым блоком коэффициентов V, каждый дочерний узел конкретного узла может быть ассоциирован с CBF V.
[0075] В некоторых случаях, остаточный пиксельный блок CU может быть больше максимально допустимого размера TU. Например, остаточный пиксельный блок CU может составлять 64x64, в то время как максимально допустимый размер TU может составлять 32x32. Когда остаточный пиксельный блок CU больше максимально допустимого размера TU, видеодекодер 30 может автоматически определять то, что CU сегментируется на по меньшей мере четыре TU, которые имеют максимально допустимый размер TU или меньше. Поскольку видеодекодер 30 может автоматически определять то, что CU сегментируется на по меньшей мере четыре TU, для видеокодера 20 может быть необязательным ассоциировать флаг разбиения с корневым узлом RQT CU. Кроме того, видеокодер 20 не ассоциирует CBF U или CBF V с корневым узлом RQT CU.
[0076] Фиг. 3 является концептуальной схемой, которая иллюстрирует кодирование примерного остаточного дерева 56 квадрантов (RQT). В этом примере по фиг. 3, каждый узел RQT 56 представляется как круг. Для каждого узла (т.е. на каждом уровне), видеокодер 20 кодирует флаг разбиения. В примере по фиг. 3, если флаг разбиения равен 1, узел имеет четыре дочерних узла, и остаточный пиксельный блок, ассоциированный с узлом, разбивается на четыре остаточных пиксельных блока (субблока) равного размера. Если флаг разбиения узла равен 0, узел не имеет дочерних узлов, и остаточный пиксельный блок, ассоциированный с узлом, не разбивается на меньшие остаточные пиксельные блоки. Каждый узел RQT 56 может быть ассоциирован с CBF U и CBF V, как описано выше. Другими словами, на каждом уровне, могут передаваться два других элемента синтаксиса. Один из них представляет собой cbfU (флаг кодированного блока для компоненты U), а другой представляет собой cbfV (флаг кодированного блока для компоненты V). Эти два элемента синтаксиса могут быть кодированы иерархическим способом. Если cbfU=0, отсутствуют ненулевые коэффициенты преобразования U в текущем блоке преобразования (если он не разбивается) или во всех меньших блоках преобразования (если текущий блок преобразования разбивается на меньшие блоки). Во втором случае (т.е. текущий блок преобразования дополнительно разбивается), cbfU, возможно, не должны быть переданы для этих дополнительно разбитых блоков. Процесс кодирования cbfV может быть идентичным.
[0077] Если для одного блока передаваемый флаг разбиения имеет значение 0, этот блок является "концевым узлом" в RQT. В концевом узле CBF Y передается, и CBF U и CBF V также может передаваться (в зависимости от значения CBF U и CBF V в верхних уровнях RQT, т.е. если CBF U/CBF V верхнего уровня равен 0, то может не быть необходимости передавать на этом нижнем уровне). Как проиллюстрировано в примере по фиг. 3, каждый концевой узел может быть ассоциирован с CBF Y. CBF Y узла указывает то, ассоциирован или нет узел со значимым блоком коэффициентов Y. Кроме того, если концевой узел ассоциирован с блоками значимых коэффициентов Y, U и/или V, концевой узел может быть ассоциирован с элементами синтаксиса, которые представляют блоки значимых коэффициентов Y, U и/или V. Другими словами, в концевом узле, коэффициенты преобразования кодируются для компонент Y, U, V (CoeffY, CoeffU, CoeffV), если соответствующий флаг (cbfY, cbfU, cbfV) не равен нулю.
[0078] В некоторых случаях, видеодекодер 30 может определять (т.е. логически выводить) значение элемента синтаксиса узла из одного или более уже декодированных элементов синтаксиса на идентичном уровне RQT с узлом или на верхнем уровне RQT, большем уровня узла. Определение значений элементов синтаксиса таким способом позволяет повышать эффективность кодирования. Например, если CBF U (или CBF V) узла на уровне k равен 0, то видеодекодер 30 может определять то, что все CBF U (или CBF V) на уровне k+1 и всех нижних уровнях равны нулю. В другом примере, если узел ассоциирован с остаточным пиксельным блоком, который больше максимально допустимого размера TU, видеодекодер 30 может определять то, что флаг разбиения узла равен 1. В другом примере, видеодекодер 30 может определять то, что флаг разбиения корневого узла равен 1, если CU, ассоциированная с корневым узлом, сегментируется на четыре PU и кодируется с использованием внутреннего прогнозирования (т.е. CU является внутренней CU N×N). В другом примере, видеодекодер 30 может определять то, что флаг разбиения узла равен 0, если размер остаточного пиксельного блока, ассоциированного с узлом, равен минимально допустимому (минимальному доступному) размеру TU. В другом примере, видеодекодер 30 может определять то, что флаг разбиения узла равен 0, если глубина в RQT равна максимальной разрешенной глубине для размера CU, ассоциированной с RQT. В другом примере, если CU внешне прогнозируется, видеодекодер 30 может определять то, что CBF Y четвертого (т.е. последнего) узла на уровне k RQT равен 1, если первые три узла (субблоки блока с разбиением в одну четверть) на уровне k RQT имеют CBF Y, CBF U и CBF V, равные 0. Максимальный размер CU и максимальный размер TU могут определяться посредством ввода параметров кодирования в видеокодер 20. Аналогично, видеодекодер 30 может определять максимальный размер CU и максимально допустимый размер TU на основе параметров кодирования, вводимых в видеодекодер 30. В некоторых примерах, максимально допустимый размер CU больше максимально допустимого размера TU.
[0079] Фиг. 4A является концептуальной схемой, которая иллюстрирует примерный блок 60 остаточных выборок яркости (Y) CU 64x64. Фиг. 4B является концептуальной схемой, которая иллюстрирует примерный блок 62 остаточных выборок цветности CU 64×64. Видеокодер 20 может осуществлять понижающую дискретизацию выборок цветности CU на коэффициент 2:1, получая в результате блок остаточных выборок цветности для CU, который имеет половину ширины и половину высоты соответствующего блока остаточных выборок Y для идентичной CU. Поскольку зрительная система человека является менее чувствительной к изменениям в сигнале цветности, чем к изменениям в сигнале яркости, такая понижающая дискретизация не обязательно снижает визуальное качество.
[0080] В примере фиг. 4A и 4B, максимальный размер CU предположительно составляет 64×64, и максимально допустимый размер TU предположительно составляет 32×32. Поскольку CU больше максимально допустимого размера TU, видеокодер 20 разбивает блок 60 остаточных выборок Y на четыре меньших блока остаточных выборок, Y0, …, Y3. Хотя не показано в примерах по фиг. 4A и 4B, видеокодер 20 может дополнительно разбивать блоки Y0, …, Y3 остаточных выборок.
[0081] Видеокодер 20 может разбивать блок 62 выборок цветности (размера 32×32) таким же образом, как видеокодер 20 разбивает блок выборок Y. Иными словами, блок цветности разбивается с яркостью. Например, если видеокодер 20 разбивает блок остаточных выборок Y на четыре меньших блока остаточных выборок Y, видеокодер 20 также разбивает соответствующие блоки остаточных выборок цветности на четыре меньших блока остаточных выборок цветности. Как показано в примере фиг. 4A, видеокодер 20 разбивает блок 60 остаточных выборок Y на четыре меньших блока остаточных выборок Y. Следовательно, в примере по фиг. 4B, видеокодер 20 разбивает блок 62 остаточных выборок цветности на четыре меньших блока остаточных выборок цветности.
[0082] Поскольку блок 60 остаточных выборок Y больше максимально допустимого размера TU, видеокодер 20 не ассоциирован с CBF U или CBF V корневого узла RQT для CU. Другими словами, кодирование CBF цветности не начинается с корневого уровня CU (т.е. на глубине 0 RQT). Вместо этого, видеокодер 20 может начинать ассоциирование CBF U и CBF V с узлами на уровне RQT, которое соответствует максимально допустимому размеру TU. Другими словами, кодирование CBF цветности начинается с уровня, который соответствует максимальному размеру TU. В примере фиг. 4A и 4B, блок 60 остаточных выборок Y составляет 64×64, а максимально допустимый размер TU составляет 32x32. Следовательно, уровень 1 RQT CU соответствует максимально допустимому размеру TU. Как результат, в примерах по фиг. 4A и 4B, видеокодер 20 может начинать кодирование CBF цветности (т.е. CBF U и CBF V) в узлах на уровне 1 RQT CU. Как результат, видеокодер 20 кодирует CBF U для U0 и CBF U своих субблоков (т.е. субблоков верхней левой четверти целой CU) иерархическим способом и затем CBF U для U1 и CBF U своих субблоков и т.д.
[0083] Реализация видеокодера 20, описанного выше, может использовать другой способ кодирования для CBF Y и CBF цветности (т.е. CBF U и CBF V). Кроме того, реализация видеокодера 20, описанного выше, применяет иерархическое кодирование CBF цветности только на некоторых уровнях RQT. Это может повышать сложность видеокодера 20.
[0084] Технологии этого раскрытия могут исправлять эти проблемы и улучшать кодирование CBF. В соответствии с технологиями этого раскрытия, сигнализирование CBF цветности может начинаться в корневом узле остаточного дерева квадрантов, ассоциированного с текущей CU, даже если текущая CU больше максимально допустимого размера TU. Текущая CU может представлять собой CU, которая в данный момент кодируется. Сигнализирование CBF цветности таким способом позволяет упрощать реализации видеокодера 20 и видеодекодера 30.
[0085] Например, в предыдущих видеокодеках, таких как HEVC, иерархическое кодирование CBF цветности начинается с наибольших допустимых преобразований, maxTransSize. Если на уровне k размер блока превышает maxTransSize, CBF цветности не кодируются на уровне k. Например, максимально допустимый размер TU (maxTransSize) может составлять 32×32, и размер текущей CU может составлять 64×64. В этом примере, видеокодер может автоматически разбивать блок, поскольку самый большой размер преобразования меньше размера текущего блока, и видеодекодер может логически выводить, что флаг разбиения равен 1. Затем, на следующем уровне, т.е. в блоке 32×32, CBF цветности (например, CBF U) кодируется для каждого блока 32×32. В соответствии с технологиями этого раскрытия, кодирование CBF цветности может всегда начинаться с корневого узла RQT CU (т.е. на глубине 0 RQT). Например, максимальный размер преобразования составляет 32×32, и текущая CU составляет 64×64. В этом примере, видеокодер 20 может сигнализировать значение CBF U для целой CU 64×64 (т.е. это сигнализирование соответствует корневому уровню CU). Другими словами, корневой узел RQT (т.е. узел, который соответствует CU 64×64 в целом) может быть ассоциирован с CBF U, который указывает то, ассоциированы или нет какие-либо TU текущей CU со значимым блоком коэффициентов U. CBFU=1 может указывать то, что имеется по меньшей мере один ненулевой коэффициент в субблоках, и CBFU может быть передан для каждого из четырех субблоков 32×32. CBF U=0 может указывать то, что все коэффициенты в этих четырех субблоках равны нулю, и в силу этого CBFU, возможно, не должны передаваться. То же самое может применяться к CBFV. Иными словами, корневой узел RQT может быть ассоциирован с CBF V, который указывает то, ассоциированы или нет какие-либо TU текущей CU со значимым блоком коэффициентов V.
[0086] Поскольку CBF U или CBF V сигнализируется иерархическим способом для каждого соответствующего узла в RQT, соответствующий узел не включает в себя CBF U, если соответствующий узел не представляет собой корневой узел, или CBF U родительского узла соответствующего узла не указывает то, что узел-потомок родительского узла ассоциирован со значимым блоком цветности U. Соответствующий узел не включает в себя CBF V, если соответствующий узел не представляет собой корневой узел, или CBF V родительского узла соответствующего узла не указывает то, что узел-потомок родительского узла ассоциирован со значимым блоком цветности V.
[0087] Таким образом, в соответствии с технологиями этого раскрытия, для каждого соответствующего узла RQT, если соответствующий узел имеет CBF для конкретной компоненты цветности, и CBF для конкретной компоненты цветности имеет первое значение, соответствующий узел или узел-потомок соответствующего узла ассоциирован со значимым блоком коэффициентов, который основан на выборках конкретной компоненты цветности. Как указано выше, это раскрытие может использовать термин "значимый блок коэффициентов", чтобы означать блок коэффициентов, который включает в себя по меньшей мере один ненулевой коэффициент. Если соответствующий узел имеет CBF для конкретной компоненты цветности, и CBF для конкретной компоненты цветности имеет второе значение, ни TU, которая соответствует соответствующему узлу, ни любая TU, которая соответствует любому узлу-потомку соответствующего узла, не ассоциирована со значимым блоком коэффициентов, который основан на выборках конкретной компоненты цветности. Если соответствующий узел имеет CBF для конкретной компоненты цветности, и CBF для конкретной компоненты цветности имеет второе значение, ни один узел-потомок соответствующего узла не ассоциирован с CBF для конкретной компоненты цветности.
[0088] В некоторых существующих видеокодеках, таких как HEVC, CBF цветности (т.е. CBF U и CBF V) кодируются иерархическим способом, и CBF яркости (т.е. CBF Y) кодируются только в концевых узлах. Напротив, в соответствии с технологиями этого раскрытия, CBF Y могут быть сигнализированы, на каждом уровне, иерархическим способом, аналогично CBF U и V. Например, видеокодер 20 может, на каждом уровне, сигнализировать CBF U и CBF V. Если CBF U находится на уровне 0 (т.е. на уровне корневого узла в RQT текущего блока), отсутствуют ненулевые коэффициенты в блоках коэффициентов U текущего блока дополнительно разбитых блоков текущего блока, и в силу этого более CBF U, возможно, не должны быть переданы для дополнительно разбитых блоков. То же самое применимо к CBF V. Кроме того, видеокодер 20 может сигнализировать CBF Y иерархическим способом, идентичным иерархическому способу CBF U и V. Таким образом, кодирование CBF для яркости и цветности может быть унифицированным. Иными словами, для каждого соответствующего узла RQT, если CBF Y соответствующего узла равен 1, блок коэффициентов Y, ассоциированный с соответствующим узлом, или блок коэффициентов Y, ассоциированный с узлом-потомком соответствующего узла, включает в себя по меньшей мере один ненулевой коэффициент. Если CBF Y соответствующего узла равен 0, соответствующий узел не ассоциирован со значимым блоком коэффициентов Y, или ни один из узлов-потомков соответствующих узлов не ассоциирован со значимым блоком коэффициентов Y. Если CBF Y соответствующего узла равен 0, ни один из узлов-потомков соответствующего узла не ассоциирован с CBF Y. Другими словами, если CBF Y соответствующего узла равен 0, видеокодер 20 не сигнализирует CBF Y ни для одного из узлов-потомков (т.е. блоков разбиения) соответствующего узла. Таким образом, узлы могут быть ассоциированы с CBF Y способом, аналогичным способу для CBF U и V. Технологии этого раскрытия, описанные выше, связанные с передачей в служебных сигналах CBF цветности в корневом узле RQT, также могут применяться к CBF Y.
[0089] В некоторых примерах, видеокодер 20 может сигнализировать остаточный флаг (например, "cbf_root_flag") в корневом узле RQT CU. Если остаточный флаг равен 0, видеодекодер 30 может автоматически определять (например, логически выводить), что ни один из блоков коэффициентов Y, U или V, ассоциированных с CU, не является значимым (т.е. все коэффициенты Y, U и V равны 0). Если остаточный флаг равен 1 по меньшей мере один блок коэффициентов Y, U или V, ассоциированный с CU, является значимым. Кроме того, если остаточный флаг равен 1, и CBF U и CBF V корневого узла равны 0, видеодекодер 30 может автоматически определять (например, логически выводить), что имеется по меньшей мере один блок значимых коэффициентов Y, ассоциированный с CU. Другими словами, видеодекодер 30 может логически выводить значение 1 для CBF Y в этом случае. Соответственно, в некоторых примерах, если остаточный флаг равен 1, и CBF U и CBF V корневого узла равны 0, видеокодер 20 не сигнализирует CBF Y для корневого узла.
[0090] Для любого узла RQT на каждом уровне RQT, если CBF Y, CBF U и CBF V узла равны 0, видеодекодер 30 может автоматически определять (т.е. логически выводить), что узел не имеет каких-либо дочерних узлов. Другими словами, если CBF Y, CBF U и CBF V узла равны 0, видеодекодер 30 может логически выводить значение 0 для флага разбиения узла. Соответственно, если CBF Y, CBF U и CBF V узла равны 0, видеокодер 20 не сигнализирует флаг разбиения узла.
[0091] Кроме того, видеокодер 20 может выполнять кодирование с помощью CABAC над флагами разбиения узлов. Чтобы выполнять кодирование с помощью CABAC над флагом разбиения, видеокодер 20 может выбирать контекст кодирования для флага разбиения и затем использовать контекст кодирования для того, чтобы закодировать с помощью CABAC флаг разбиения. В соответствии с технологиями этого раскрытия, видеокодер 20 может выбирать контекст кодирования для флага разбиения узла, основываясь, по меньшей мере, частично на значений CBF Y, CBF U и/или CBF V узла. В другом примере, если CBF Y равен 0, видеокодер (например, видеокодер 20 или видеодекодер 30) может выбирать первый контекст кодирования для того, чтобы кодировать флаг разбиения. В этом примере, если CBF Y равен 1, видеокодер может использовать второй контекст кодирования для того, чтобы кодировать флаг разбиения. В другом примере, видеокодер может выбирать контекст кодирования для флага разбиения на основе того, CU внутренне прогнозируется или взаимно прогнозируется. В этом примере, видеокодер может определять индекс контекста для контекста кодирования для кодирования флага разбиения посредством вычисления CBF Y+2*blocktype, где тип блока (blocktype) равен 0 для внутренне прогнозированной CU, и тип блока равен 1 для внешне прогнозированной CU.
[0092] Видеокодер (например, видеокодер 20 или видеодекодер 30) может выполнять CABAC над CBF Y, CBF U и CBF V узла RQT. В соответствии с технологиями этого раскрытия, видеокодер может, в некоторых примерах, использовать идентичный контекст кодирования при выполнении CABAC над CBF Y, CBF U и CBF V узла. Использование того же самого контекста кодирования при выполнении CABAC над CBF Y CBF U и CBF V узла позволяет упрощать процесс CABAC и позволяет ускорять кодирование видео. В некоторых примерах, видеокодер может выбирать контекст кодирования на основе глубины узла RQT. Например, видеокодер может выбирать первый контекст кодирования, если узел находится на уровне 0 RQT, второй контекст кодирования, если узел находится на уровне 1 RQT, и т.д. В таких примерах, видеокодер может использовать следующее уравнение для того, чтобы определять индекс ctx_idx контекста, который идентифицирует контекст кодирования:
ctx_idx=transform_depth
В других примерах, видеокодер может выбирать контекст кодирования на основе того, представляет собой или нет узел корневой узел RQT. Например, видеокодер может использовать следующее уравнение для того, чтобы определять индекс ctx_idx контекста, который идентифицирует контекст кодирования:
ctx_idx=transform_depth==0? 0: 1
[0093] Фиг. 5 является блок-схемой, которая иллюстрирует примерный видеокодер 20, который выполнен с возможностью реализовывать технологии этого раскрытия. Фиг. 5 предоставляется для целей пояснения и не должна считаться ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии. Для целей пояснения, это раскрытие описывает видеокодер 20 в контексте кодирования HEVC. Тем не менее, технологии этого раскрытия могут быть применимыми к другим стандартам или способам кодирования.
[0094] В примере по фиг. 5, видеокодер 20 включает в себя процессор 100 прогнозирования, модуль 102 генерирования остатка, процессор 104 преобразования, модуль 106 квантования, модуль 108 обратного квантования, процессор 110 обратного преобразования, модуль 112 восстановления, модуль 113 фильтрации, буфер 114 декодированных изображений и модуль 116 энтропийного кодирования. Процессор 100 прогнозирования включает в себя процессор 121 внешнего прогнозирования и процессор 126 внутреннего прогнозирования. Процессор 121 внешнего прогнозирования включает в себя модуль 122 оценки движения и модуль 124 компенсации движения. В других примерах, видеокодер 20 может включать в себя большее число, меньшее число или другие функциональные компоненты.
[0095] Видеокодер 20 может принимать видеоданные. Чтобы закодировать видеоданные, видеокодер 20 может закодировать каждый слайс каждого изображения видеоданных. В качестве части кодирования слайса, видеокодер 20 может закодировать каждый CTB в слайсе. В качестве части кодирования CTB, процессор 100 прогнозирования может выполнять сегментацию дерева квадрантов над пиксельным блоком, ассоциированным с CTB, чтобы разделять пиксельный блок на постепенно меньшие пиксельные блоки. Меньшие пиксельные блоки могут быть ассоциированы с CU. Например, процессор 100 прогнозирования может сегментировать пиксельный блок CTB на четыре субблока одинакового размера, сегментировать один или более субблоков на четыре субсубблока одинакового размера и т.д.
[0096] Видеокодер 20 может кодировать CU CTB, чтобы генерировать закодированные представления CU (т.е. кодированные CU). В качестве части кодирования CU, процессор 100 прогнозирования может сегментировать пиксельный блок CU из одной или более PU из CU. Видеокодер 20 и видеодекодер 30 могут поддерживать различные размеры PU. При условии, что размер конкретной CU составляет 2N×2N, видеокодер 20 и видеодекодер 30 могут поддерживать размеры PU 2N×2N или N×N для внутреннего прогнозирования и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для внешнего прогнозирования. Видеокодер 20 и видеодекодер 30 также могут поддерживать асимметричное сегментирование для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для внешнего прогнозирования.
[0097] Процессор 121 внешнего прогнозирования может генерировать прогнозирующие данные для PU посредством выполнения внешнего прогнозирования над каждой PU из CU. Прогнозирующие данные для PU могут включать в себя прогнозный пиксельный блок, который соответствует PU, и информацию движения для PU. Слайсы могут представлять собой I-слайсы, P-слайсы или B-слайсы. Модуль 121 внешнего прогнозирования может выполнять различные операции для PU из CU в зависимости от того, находится PU в I-слайсе, P-слайсе или B-слайсе. В I-слайсе все PU внутренне прогнозируются. Следовательно, если PU находится в I-слайсе, модуль 121 внешнего прогнозирования не выполняет внешнее прогнозирование над PU.
[0098] Если PU находится в P-слайсе, модуль 122 оценки движения может выполнять поиск в опорных изображениях в списке опорных изображений (например, в "списке 0") на предмет опорного блока для PU. Опорный блок PU может представлять собой пиксельный блок, который наиболее близко соответствует пиксельному блоку PU. Модуль 122 оценки движения может генерировать индекс опорного изображения, который указывает опорное изображение в списке 0, содержащее опорный блок PU, и вектор движения, который указывает пространственное смещение между пиксельным блоком PU и опорным блоком. Модуль 122 оценки движения может выводить индекс опорного изображения и вектор движения в качестве информации движения PU. Модуль 124 компенсации движения может генерировать прогнозный пиксельный блок PU на основе опорного блока, указываемого посредством информации движения PU.
[0099] Если PU находится в B-слайсе, модуль 122 оценки движения может выполнять однонаправленное внешнее прогнозирование или двунаправленное внешнее прогнозирование для PU. Чтобы выполнять однонаправленное внешнее прогнозирование для PU, модуль 122 оценки движения может выполнять поиск в опорных изображениях первого списка опорных изображений ("списка 0") или второго списка опорных изображений ("списка 1") на предмет опорного блока для PU. Модуль 122 оценки движения может выводить, в качестве информации движения PU, индекс опорного изображения, который указывает позицию в списке 0 или списке 1 опорного изображения, которое содержит опорный блок, вектор движения, который указывает пространственное смещение между пиксельным блоком PU и опорным блоком, и индикатор направления прогнозирования, который указывает то, находится опорное изображение в списке 0 или списке 1.
[0100] Чтобы выполнять двунаправленное внешнее прогнозирование для PU, модуль 122 оценки движения может выполнять поиск в опорных изображениях в списке 0 на предмет опорного блока для PU, а также может выполнять поиск в опорных изображениях в списке 1 на предмет другого опорного блока для PU. Модуль 122 оценки движения может генерировать индексы опорных изображений, которые указывают позиции в списке 0 и списке 1 опорных изображений, которые содержат опорные блоки. Помимо этого, модуль 122 оценки движения может генерировать векторы движения, которые указывают пространственные смещения между опорными блоками и пиксельным блоком PU. Информация движения PU может включать в себя индексы опорных изображений и векторы движения PU. Модуль 124 компенсации движения может генерировать прогнозный пиксельный блок PU на основе опорных блоков, указываемых посредством информации движения PU.
[0101] Процессор 126 внутреннего прогнозирования может генерировать прогнозирующие данные для PU посредством выполнения внутреннего прогнозирования над PU. Прогнозирующие данные для PU могут включать в себя прогнозный пиксельный блок для PU и различные элементы синтаксиса. Процессор 126 внутреннего прогнозирования может выполнять внутреннее прогнозирование над PU в I-слайсах, P-слайсах и B-слайсах.
[0102] Чтобы выполнять внутреннее прогнозирование над PU, процессор 126 внутреннего прогнозирования может использовать несколько режимов внутреннего прогнозирования для того, чтобы генерировать несколько наборов прогнозирующих данных для PU. Чтобы использовать режим внутреннего прогнозирования для того, чтобы генерировать набор прогнозирующих данных для PU, процессор 126 внутреннего прогнозирования может расширять выборки из блоков выборок соседних PU через блоки выборок PU в направлении, ассоциированном с режимом внутреннего прогнозирования. Соседние PU могут располагаться выше, выше и справа, выше и слева или слева от PU, при условии порядка кодирования слева направо, сверху вниз для PU, CU и CTB. Процессор 126 внутреннего прогнозирования может использовать различные числа режимов внутреннего прогнозирования, например, 33 режима направленного внутреннего прогнозирования. В некоторых примерах, число режимов внутреннего прогнозирования может зависеть от размера пиксельного блока PU.
[0103] Процессор 100 прогнозирования может выбирать прогнозирующие данные для PU из CU из числа прогнозирующих данных, сгенерированных посредством процессора 121 внешнего прогнозирования для PU, или прогнозирующих данных, сгенерированных посредством процессора 126 внутреннего прогнозирования для PU. В некоторых примерах, процессор 100 прогнозирования выбирает прогнозирующие данные для PU из CU на основе показателей искажения в зависимости от скорости для наборов прогнозирующих данных. Прогнозные пиксельные блоки выбранных прогнозирующих данных могут упоминаться в данном документе как выбранные прогнозные пиксельные блоки.
[0104] Модуль 102 генерирования остатка может генерировать, на основе пиксельного блока CU и выбранных прогнозных пиксельных блоков PU из CU, остаточный пиксельный блок CU. Например, модуль 102 генерирования остатка может генерировать остаточный пиксельный блок CU таким образом, что каждая выборка в остаточном пиксельном блоке имеет значение, равное разности между выборкой в пиксельном блоке CU и соответствующей выборкой в выбранном прогнозном пиксельном блоке PU из CU.
[0105] Процессор 104 преобразования может выполнять сегментацию дерева квадрантов, чтобы сегментировать остаточный пиксельный блок CU на субблоки. Каждый неразделенный остаточный пиксельный блок может быть ассоциирован с различной TU из CU. Размеры и позиции остаточных пиксельных блоков, ассоциированных с TU из CU, могут быть основаны или не быть основаны на размерах и позициях пиксельных блоков, ассоциированных с PU из CU. Структура в виде дерева квадрантов, известная как "остаточное дерево квадрантов" (RQT), может включать в себя узлы, ассоциированные с каждым из остаточных пиксельных блоков. TU из CU могут соответствовать концевым узлам RQT.
[0106] Поскольку пикселы остаточных пиксельных блоков TU могут содержать выборку Y, выборку U и выборку V, каждая из TU может быть ассоциирована с блоком выборок Y, блоком выборок U и блоком выборок V. Процессор 104 преобразования может генерировать блоки коэффициентов для каждой TU из CU посредством применения одного или более преобразований к блокам остаточных выборок, ассоциированным с TU. Процессор 104 преобразования может применять различные преобразования к блоку остаточных выборок, ассоциированному с TU. Например, процессор 104 преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование или концептуально аналогичное преобразование к блоку остаточных выборок.
[0107] В соответствии с технологиями этого раскрытия, процессор 104 преобразования может генерировать данные, которые представляют RQT для CU. RQT может включать в себя иерархию узлов. Корневой узел RQT может быть ассоциирован с CBF U и CBF V, независимо от того, больше или нет остаточный пиксельный блок CU, чем максимально допустимый размер TU. Кроме того, в некоторых примерах, любой узел RQT может быть ассоциирован с CBF Y.
[0108] Процессор 104 преобразования может определять преобразование, которое должно применяться, на основе размера блока остаточных выборок, к которому должно применяться преобразование. Например, процессор 104 преобразования может применять различные преобразования в зависимости от того, имеет блок остаточных выборок 4x4, 8x8, 16x16 или другой размер. В некоторых примерах, процессор 104 преобразования может применять преобразования к блокам остаточных выборок прямоугольной формы, к примеру, к блокам остаточных выборок, которые составляют 16×4, 32×8 и т.д.
[0109] Модуль 106 квантования может квантовать коэффициенты в блоке коэффициентов, ассоциированном с TU. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовый коэффициент может округляться в меньшую сторону до m-битового коэффициента во время квантования, где n превышает m. Модуль 106 квантования может квантовать блок коэффициентов, ассоциированный с TU из CU, на основе значения параметра квантования (QP), ассоциированного с CU. Видеокодер 20 может регулировать степень квантования, применяемую к блокам коэффициентов, ассоциированным с CU, посредством регулирования значения QP, ассоциированного с CU.
[0110] Модуль 108 обратного квантования и процессор 110 обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов, соответственно, для того чтобы восстанавливать блок остаточных выборок из блока коэффициентов. Модуль 112 восстановления может суммировать восстановленный блок остаточных выборок с соответствующими выборками из одного или более прогнозных блоков выборок, сгенерированных посредством процессора 100 прогнозирования, для того чтобы генерировать восстановленный блок выборок, ассоциированный с TU. Посредством восстановления блоков выборок для каждой TU из CU таким способом, видеокодер 20 может восстанавливать пиксельный блок CU.
[0111] Модуль 113 фильтрации может выполнять операцию удаления блочности для того, чтобы уменьшать артефакты блочности в пиксельном блоке, ассоциированном с CU. Буфер 114 декодированных изображений может сохранять восстановленные пиксельные блоки после того, как модуль 113 фильтрации выполняет одну или более операций удаления блочности над восстановленными пиксельными блоками. Модуль 121 внешнего прогнозирования может использовать опорное изображение, которое содержит восстановленные пиксельные блоки, чтобы выполнять внешнее прогнозирование над PU других изображений. Помимо этого, процессор 126 внутреннего прогнозирования может использовать восстановленные пиксельные блоки в буфере 114 декодированных изображений, чтобы выполнять внутреннее прогнозирование над другими PU в изображении, идентичном изображению CU.
[0112] Модуль 116 энтропийного кодирования может принимать данные из других функциональных компонентов видеокодера 20. Например, модуль 116 энтропийного кодирования может принимать блоки коэффициентов из модуля 106 квантования и может принимать элементы синтаксиса из процессора 100 прогнозирования. Модуль 116 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для данных, чтобы генерировать энтропийно кодированные данные. Например, модуль 116 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования с переменно-переменной (V2V) длиной слова, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию экспоненциального кодирования кодом Голомба или другой тип операции энтропийного кодирования над данными. Видеокодер 20 может выводить поток битов, который включает в себя энтропийно кодированные данные, сгенерированные посредством модуля 116 энтропийного кодирования. Например, поток битов может включать в себя данные, которые представляют RQT для CU.
[0113] Фиг. 6 является блок-схемой, иллюстрирующей примерный видеодекодер 30, который выполнен с возможностью реализовывать технологии этого раскрытия. Фиг. 6 предоставляется для целей пояснения и не является ограничением технологий, как проиллюстрировано и описано в общих чертах в этом раскрытии. Для целей пояснения, это раскрытие описывает видеодекодер 30 в контексте кодирования HEVC. Тем не менее, технологии этого раскрытия могут быть применимыми к другим стандартам или способам кодирования.
[0114] В примере по фиг. 6, видеодекодер 30 включает в себя модуль 150 энтропийного декодирования, процессор 152 прогнозирования, модуль 154 обратного квантования, процессор 156 обратного преобразования, модуль 158 восстановления, модуль 159 фильтра и буфер 160 декодированных изображений. Процессор 152 прогнозирования включает в себя модуль 162 компенсации движения и процессор 164 внутреннего прогнозирования. В других примерах, видеодекодер 30 может включать в себя большее число, меньше число или другие функциональные компоненты.
[0115] Видеодекодер 30 может принимать поток битов. Модуль 150 энтропийного декодирования может синтаксически анализировать поток битов, чтобы извлекать элементы синтаксиса из потока битов. В качестве части синтаксического анализа потока битов, модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные элементы синтаксиса в потоке битов. Процессор 152 прогнозирования, модуль 154 обратного квантования, процессор 156 обратного преобразования, модуль 158 восстановления и модуль 159 фильтра могут генерировать декодированные видеоданные на основе элементов синтаксиса, извлеченных из потока битов.
[0116] Поток битов может содержать последовательность единиц NAL. Единицы NAL потока битов могут включать в себя единицы NAL кодированных слайсов. В качестве части синтаксического анализа потока битов, модуль 150 энтропийного декодирования может извлекать и энтропийно декодировать элементы синтаксиса из единиц NAL кодированных слайсов. Каждый из кодированных слайсов может включать в себя заголовок слайса и данные слайса. Заголовок слайса может содержать элементы синтаксиса, связанные со слайсом. Элементы синтаксиса в заголовке слайса могут включать в себя элемент синтаксиса, который идентифицирует PPS, ассоциированный с изображением, которое содержит слайс.
[0117] В соответствии с технологиями этого раскрытия, модуль 150 энтропийного декодирования может синтаксически анализировать, из потока битов, CBF корневого узла RQT CU, независимо от того, больше или нет остаточный пиксельный блок CU, чем максимально допустимый размер TU. Кроме того, если CBF имеет первое значение, модуль 150 энтропийного декодирования может синтаксически анализировать, из потока битов, блок коэффициентов цветности (например, блок коэффициентов U или блок коэффициентов V), ассоциированный с концевым узлом RQT. Если CBF имеет второе значение, которое отличается от первого значения, модуль 150 энтропийного декодирования не анализирует синтаксически блок коэффициентов цветности из потока битов.
[0118] Помимо этого, видеодекодер 30 может выполнять операцию восстановления для несегментированной CU. Чтобы выполнять операцию восстановления для несегментированной CU, видеодекодер 30 может выполнять операцию восстановления для каждой TU из CU. Посредством выполнения операции восстановления для каждой TU из CU видеодекодер 30 может восстанавливать остаточный пиксельный блок, ассоциированный с CU.
[0119] В качестве части выполнения операции восстановления над TU из CU, модуль 154 обратного квантования может обратно квантовать, т.е. деквантовать, блоки коэффициентов, ассоциированные с TU. Модуль 154 обратного квантования может использовать значение QP, ассоциированное с CU из TU, для того чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 154 обратного квантования, которую следует применять.
[0120] После того, как модуль 154 обратного квантования обратно квантует блок коэффициентов, процессор 156 обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов, чтобы генерировать блок остаточных выборок, ассоциированный с TU. Например, процессор 156 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0121] Если PU кодируется с использованием внутреннего прогнозирования, процессор 164 внутреннего прогнозирования может выполнять внутреннее прогнозирование для того, чтобы генерировать прогнозный блок выборок для PU. Процессор 164 внутреннего прогнозирования может использовать режим внутреннего прогнозирования для того, чтобы генерировать прогнозный пиксельный блок для PU на основе пиксельных блоков пространственно соседних PU. Процессор 164 внутреннего прогнозирования может определять режим внутреннего прогнозирования для PU на основе одного или более элементов синтаксиса, синтаксически проанализированных из потока битов.
[0122] Модуль 162 компенсации движения может составлять первый список опорных изображений (список 0) и второй список опорных изображений (список 1) на основе элементов синтаксиса, извлеченных из потока битов. Кроме того, если PU кодируется с использованием внешнего прогнозирования, модуль 150 энтропийного декодирования может извлекать информацию движения для PU. Модуль 162 компенсации движения может определять, на основе информации движения PU, один или более опорных блоков для PU. Модуль 162 компенсации движения может генерировать, на основе одного или более опорных блоков для PU, прогнозный пиксельный блок для PU.
[0123] Модуль 158 восстановления может использовать остаточные пиксельные блоки, ассоциированные с TU из CU, и прогнозные пиксельные блоки PU из CU, т.е. либо данные внутреннего прогнозирования, либо данные внешнего прогнозирования, при соответствующих условиях для того, чтобы восстанавливать пиксельный блок CU. В частности, модуль 158 восстановления может суммировать выборки остаточных пиксельных блоков с соответствующими выборками прогнозных пиксельных блоков для того, чтобы восстанавливать пиксельный блок CU.
[0124] Модуль 159 фильтра может выполнять операцию удаления блочности для того, чтобы уменьшать артефакты блочности, ассоциированные с пиксельным блоком CU. Видеодекодер 30 может сохранять пиксельный блок CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может предоставлять опорные изображения для последующей компенсации движения, внутреннего прогнозирования и представления на устройстве отображения, к примеру, на устройстве 32 отображения по фиг. 1. Например, видеодекодер 30 может выполнять, на основе пиксельных блоков в буфере 160 декодированных изображений, операции внутреннего прогнозирования или внешнего прогнозирования для PU других CU.
[0125] Фиг. 7 является концептуальной схемой, иллюстрирующей примерное RQT 200, в соответствии с одной или более технологий этого раскрытия. RQT 200 включает в себя узлы 202-218. Узел 202 представляет собой корневой узел RQT 200. Узел 202 может соответствовать CU. Узлы 204-210 находятся на втором уровне (уровне 1) RQT 200, и узлы 212-218 находятся на третьем уровне (уровне 2) RQT 200. Узлы 206, 208, 210, 212, 214, 216 и 218 представляют собой концевые узлы RQT 200 и, следовательно, могут представлять собой TU из CU. Как указано посредством пунктирной линии в примере по фиг. 7, остаточный пиксельный блок, ассоциированный с корневым узлом 202, может быть больше максимально допустимого размера TU.
[0126] В соответствии с технологиями этого раскрытия, видеокодер 20 может генерировать поток битов, который включает в себя, для корневого узла 202, флаг разбиения, CBF Y, CBF U и CBF V. Как проиллюстрировано в примере по фиг. 7, флаг разбиения, CBF Y, CBF U и CBF V равны 1. Поскольку CBF Y, CBF U и CBF V корневого узла 202 равны 1, каждый дочерний узел корневого узла 202 (т.е. узлы 204, 206, 208 и 210) ассоциирован с флагом разбиения, CBF Y, CBF U и CBF V. В примере по фиг. 7, CBF Y и CBF V узла 204 равны 0. Следовательно, дочерние узлы узла 204 (т.е. узлы 212, 214, 216 и 218) не ассоциированы с блоками значимых коэффициентов Y или блоками значимых коэффициентов V и не ассоциированы с CBF Y или CBF V.
[0127] Фиг. 8 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу 250 видеокодера 20, в соответствии с технологиями этого раскрытия. Блок-схема последовательности операций способа по фиг. 8 и блок-схемы последовательности операций способа следующих чертежей предоставляются в качестве примеров. В других примерах, блок-схемы последовательности операций способа могут включать в себя большее число, меньшее число или другие этапы.
[0128] В примере по фиг. 8, видеокодер 20 генерирует данные, которые представляют RQT для CU (252). CU больше максимально допустимого размера TU. RQT включает в себя иерархию узлов. Корневой узел RQT соответствует CU в целом, и концевые узлы RQT соответствуют TU из CU. Корневой узел ассоциирован с CBF для конкретной компоненты цветности, например, U или V. CBF для конкретной компоненты цветности указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов цветности. Видеокодер 20 выводит поток битов, который включает в себя данные, которые представляют RQT для CU (254).
[0129] Фиг. 9 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу 300 видеодекодера 30, в соответствии с технологиями этого раскрытия. В примере по фиг. 9, видеодекодер 30 синтаксически анализирует, из потока битов, который включает в себя закодированное представление видеоданных, CBF корневого узла RQT CU (302). Пиксельный блок CU больше максимально допустимого размера единицы преобразования (TU). Если CBF имеет первое значение, видеодекодер 30 может синтаксически анализировать, из потока битов, блок коэффициентов цветности, ассоциированный с концевым узлом RQT (304). Если CBF имеет второе значение, которое отличается от первого значения, блок коэффициентов цветности, ассоциированный с концевым узлом, не анализируется синтаксически из потока битов.
[0130] Фиг. 10A является блок-схемой последовательности операций способа, иллюстрирующей примерную работу 340 для того, чтобы синтаксически анализировать элементы синтаксиса узла RQT, в соответствии с технологиями этого раскрытия. Работа 340 может быть расширенной версией работы 300 по фиг. 9. В примере по фиг. 10, модуль 150 энтропийного декодирования видеодекодера 30 может определять то, представляет собой или нет текущий узел RQT корневой узел RQT (342). В некоторых примерах, модуль 150 энтропийного декодирования может определять то, что текущий узел представляет собой корневой узел, если глубина текущего узла RQT равна 0.
[0131] В ответ на определение того, что текущий узел представляет собой корневой узел RQT ("Да", 342), модуль 150 энтропийного декодирования может синтаксически анализировать остаточный флаг из потока битов (344). Остаточный флаг может указывать то, имеется или нет концевой узел RQT, который ассоциирован со значимым блоком коэффициентов. Если остаточный флаг указывает то, что ни один концевой узел RQT не ассоциирован со значимым блоком коэффициентов, ни один узел RQT не ассоциирован с CBF. После синтаксического анализа остаточного флага модуль 150 энтропийного декодирования может определять то, равен или нет остаточный флаг 0 (346).
[0132] В ответ на определение того, что остаточный флаг равен 0 ("Да", 346), модуль 150 энтропийного декодирования, возможно, завершает синтаксический анализ элементов синтаксиса текущего узла RQT. С другой стороны, в ответ на определение того, что остаточный флаг равен 1 ("Нет", 346), модуль 150 энтропийного декодирования может синтаксически анализировать CBF Y, CBF U и CBF V текущего узла из потока битов (354). CBF Y корневого узла может указывать то, ассоциирован или нет какой-либо концевой узел RQT со значимым блоком коэффициентов яркости.
[0133] В ответ на определение того, что текущий узел не представляет собой корневой узел RQT ("Нет", 342), модуль 150 энтропийного декодирования может определять то, равен или нет CBF Y родительского узла текущего узла 1 (356). Если родительский узел текущего узла не имеет CBF Y, модуль 150 энтропийного декодирования может определять то, что CBF Y родительского узла текущего узла равен 0. В ответ на определение того, что CBF Y родительского узла текущего узла равен 1 ("Да", 356), модуль 150 энтропийного декодирования может синтаксически анализировать CBF Y из потока битов (358). Таким образом, корневой узел ассоциирован с CBF Y, который указывает то, ассоциированы или нет какие-либо из TU из CU со значимым блоком коэффициентов яркости. Другими словами, CBF Y может указывать то, ассоциирована или нет какая-либо TU, которая соответствует текущему узлу или узлу-потомку текущего узла, со значимым блоком коэффициентов Y.
[0134] После синтаксического анализа CBF Y или после определения того, что CBF Y родительского узла текущего узла не равен 1 ("Нет", 356), модуль 150 энтропийного декодирования может определять то, равен или нет CBF U родительского узла текущего узла 1 (360). Если родительский узел текущего узла не имеет CBF U, модуль 150 энтропийного декодирования может определять то, что CBF U родительского узла текущего узла равен 0. В ответ на определение того, что CBF U родительского узла текущего узла равен 1 ("Да", 360), модуль 150 энтропийного декодирования может синтаксически анализировать CBF U из потока битов (362). CBF U может указывать то, ассоциирован или нет текущий узел либо какой-либо узел-потомок текущего узла со значимым блоком коэффициентов U.
[0135] После синтаксического анализа CBF U или после определения того, что CBF U родительского узла текущего узла не равен 1 ("Нет", 360), модуль 150 энтропийного декодирования может определять то, равен или нет CBF V родительского узла текущего узла 1 (364). Если родительский узел текущего узла не имеет CBF V, модуль 150 энтропийного декодирования может определять то, что CBF V родительского узла текущего узла равен 0. В ответ на определение того, что CBF V родительского узла текущего узла равен 1 ("Да", 364), модуль 150 энтропийного декодирования может синтаксически анализировать CBF V из потока битов (366). CBF V может указывать то, ассоциирован или нет текущий узел либо узел-потомок текущего узла со значимым блоком коэффициентов V.
[0136] Как упомянуто выше, модуль 150 энтропийного декодирования может выполнять CABAC при синтаксическом анализе некоторых элементов синтаксиса из потока битов. В некоторых примерах, видеокодер 20 может выполнять, на основе того же самого контекста кодирования, кодирование с помощью CABAC над CBF Y, CBF U и CBF V текущего узла RQT. В таких примерах, когда модуль 150 энтропийного декодирования синтаксически анализирует CBF Y, CBF U и CBF V, модуль 150 энтропийного декодирования может выполнять, на основе того же самого контекста кодирования, декодирование с помощью CABAC для CBF Y, CBF U и CBF V текущего узла RQT.
[0137] Кроме того, в некоторых примерах, видеокодер 20 может выбирать, на основе глубин узлов RQT, контексты кодирования для CBF Y, CBF U и CBF V, точно определяемых посредством узлов RQT. В некоторых примерах, значение индекса выбранного контекста кодирования равно глубине узла RQT. Например, если глубина узла равна 2, значение индекса выбранного контекста кодирования равно 2. Видеокодер 20 может выполнять, на основе контекстов кодирования, выбранных для CBF Y, U и V, операции энтропийного кодирования над CBF Y, U и V. Аналогично, когда модуль 150 энтропийного декодирования синтаксически анализирует CBF Y, U и V, модуль 150 энтропийного декодирования может выбирать, на основе глубин узлов RQT, контексты кодирования для CBF Y, U и V, точно определяемых посредством узлов RQT. Модуль 150 энтропийного декодирования может выполнять, на основе контекстов кодирования, выбранных для CBF Y, U и V, операции энтропийного декодирования над CBF Y, U и V.
[0138] После синтаксического анализа CBF V, после определения того, что CBF V родительского узла текущего узла не равен 1 ("Нет", 364), или после синтаксического анализа CBF Y, CBF U и CBF V на этапе 354, модуль 150 энтропийного декодирования может определять то, больше или нет остаточный пиксельный блок, ассоциированный с текущим узлом, чем максимально допустимый размер TU (368). В ответ на определение того, что остаточный пиксельный блок, ассоциированный с текущим узлом, не больше максимально допустимого размера TU ("Нет", 368), модуль 150 энтропийного декодирования может определять то, имеет или нет остаточный пиксельный блок, ассоциированный с текущим узлом, минимально допустимый размер TU (370).
[0139] В ответ на определение того, что остаточный пиксельный блок текущего узла не имеет минимально допустимый размер TU ("Нет", 370), модуль 150 энтропийного декодирования может определять то, равны или нет каждый из CBF Y, CBF U и CBF V текущего узла 0 (371). Если каждый из CBF Y, CBF U и CBF V текущего узла равны 0, модуль 150 энтропийного декодирования может определять то, что текущий узел представляет собой концевой узел, который не ассоциирован ни с одним значимым блоком коэффициентов. Соответственно, если каждый из CBF Y, CBF U и CBF V текущего узла равны 0 ("Да", 371), модуль 150 энтропийного декодирования, возможно, завершает синтаксический анализ текущего узла. Таким образом, если CBF Y узла, CBF U узла и CBF V узла все имеют первое значение (например, 0), узел не ассоциирован с флагом разбиения, причем флаг разбиения указывает то, имеет или нет узел множество дочерних узлов.
[0140] В ответ на определение того, что элементы синтаксиса CBF Y, CBF U и CBF V текущего узла все не равны 0 ("Нет", 371), модуль 150 энтропийного декодирования может синтаксически анализировать флаг разбиения из потока битов (372). Флаг разбиения может указывать то, имеет или нет текущий узел множество дочерних узлов. Таким образом, если по меньшей мере один из CBF Y текущего узла, CBF U текущего узла и CBF V текущего узла имеет второе значение (например, 1), которое отличается от первого значения (например, 0), текущий узел ассоциирован с флагом разбиения. Таким образом, модуль 150 энтропийного декодирования может выполнять, на основе CBF Y узла RQT, CBF U узла и CBF V узла, определение для того, чтобы синтаксически анализировать флаг разбиения узла RQT.
[0141] В некоторых примерах, видеокодер 20 может выполнять кодирование с помощью CABAC над флагом разбиения. Когда видеокодер 20 выполняет кодирование с помощью CABAC над флагом разбиения, видеокодер 20 может выбирать контекст кодирования для флага разбиения. В некоторых примерах, видеокодер 20 может выбирать контекст кодирования на основе CBF (например, CBF Y, CBF U и/или CBF V) текущего узла. Кроме того, в некоторых примерах, видеокодер 20 может выбирать контекст кодирования на основе CBF Y, CBF U и CBF V текущего узла. Видеокодер 20 может выполнять, на основе выбранного контекста кодирования, кодирование с помощью CABAC над флагом разбиения текущего узла. Аналогично, когда модуль 150 энтропийного декодирования синтаксически анализирует флаг разбиения из потока битов, модуль 150 энтропийного декодирования может выбирать (например, на основе CBF текущего узла) контекст кодирования. В некоторых примерах, модуль 150 энтропийного декодирования может выбирать контекст кодирования на основе CBF Y, CBF U и/или CBF V текущего узла. Модуль 150 энтропийного декодирования может выполнять, на основе выбранного контекста кодирования, декодирование с помощью CABAC для флага разбиения текущего узла.
[0142] Модуль 150 энтропийного декодирования может определять то, равен или нет флаг разбиения 1 (374). В ответ на определение того, что флаг разбиения равен 1 ("Да", 374), или в ответ на определение того, что остаточный пиксельный блок, ассоциированный с текущим узлом, больше максимально допустимого размера TU ("Да", 368), модуль 150 энтропийного декодирования может синтаксически анализировать дочерние узлы текущего узла (376). Таким образом, модуль 150 энтропийного декодирования, в ответ на выполнение определения для того, чтобы синтаксически анализировать флаг разбиения из потока битов, может определять, на основе флага разбиения текущего узла, то, следует или нет синтаксически анализировать из потока битов множество дочерних узлов текущего узла. Модуль 150 энтропийного декодирования может синтаксически анализировать дочерние узлы посредством выполнения операции 340 для каждого из дочерних узлов. В ответ на определение того, что остаточный пиксельный блок текущего узла составляет минимально допустимый размер TU ("Да", 370) или в ответ на определение того, что флаг разбиения не равен 1 ("Нет", 374), модуль 150 энтропийного декодирования может выполнять часть операции 340, проиллюстрированной в примере по фиг. 10B.
[0143] Фиг. 10B является блок-схемой последовательности операций способа, иллюстрирующей продолжение примерной работы 340 по фиг. 10A, в соответствии с одной или более технологий этого раскрытия. В примере по фиг. 10B, модуль 150 энтропийного декодирования может определять то, равен или нет CBF Y текущего узла 1 (378). В ответ на определение того, что CBF Y текущего узла равен 1 ("Да", 378), модуль 150 энтропийного декодирования может синтаксически анализировать блок коэффициентов Y из потока битов (380). Кроме того, в ответ на определение того, что CBF Y текущего узла не равен 1 ("Нет", 378), или после синтаксического анализа блока коэффициентов Y из потока битов (380), модуль 150 энтропийного декодирования может определять то, равен или нет CBF U текущего узла 1 (382).
[0144] В ответ на определение того, что CBF U текущего узла равен 1 ("Да", 382), модуль 150 энтропийного декодирования может синтаксически анализировать блок коэффициентов U из потока битов (384). Кроме того, в ответ на определение того, что CBF U текущего узла не равен 1 ("Нет", 382), или после синтаксического анализа блока коэффициентов U из потока битов (384), модуль 150 энтропийного декодирования может определять то, равен или нет CBF V текущего узла 1 (386).
[0145] В ответ на определение того, что CBF V текущего узла равен 1 ("Да", 386), модуль 150 энтропийного декодирования может синтаксически анализировать блок коэффициентов V из потока битов (388). Кроме того, в ответ на определение того, что CBF V текущего узла не равен 1 ("Нет", 386), или после синтаксического анализа блока коэффициентов V из потока битов (388), модуль 150 энтропийного декодирования, возможно, завершает синтаксический анализ текущего узла. Хотя вышеприведенное пояснение описывает конкретные режимы работы, когда конкретные элементы синтаксиса имеют конкретные значения (например, 0 или 1), технологии этого раскрытия могут быть применимыми, когда конкретные элементы синтаксиса имеют значения, отличные от значений, описанных выше.
[0146] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и исполнены посредством аппаратного процессора. Считываемые компьютером носители могут включать в себя считываемые компьютером носители данных, которые соответствуют материальному носителю, такие как носители данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0147] В качестве примера, а не ограничения, эти считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.
[0148] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0149] Технологии этого раскрытия могут быть реализованы в широком спектре устройств или аппаратов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0150] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.