ОПРЕДЕЛЕНИЕ КОНТЕКСТОВ ДЛЯ КОДИРОВАНИЯ ДАННЫХ КОЭФФИЦИЕНТОВ ПРЕОБРАЗОВАНИЯ ПРИ КОДИРОВАНИИ ВИДЕО
DETERMINING CONTEXTS FOR CODING TRANSFORM COEFFICIENT DATA IN VIDEO CODING

[0001] Данная заявка испрашивает приоритет предварительной заявки на патент (США) порядковый номер 61/586668, поданной 13 января 2012 года, предварительной заявки на патент (США) порядковый номер 61/588595, поданной 19 января 2012 года, и предварительной заявки на патент (США) порядковый номер 61/597097, поданной 9 февраля 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] Пространственное или временное прогнозирование приводит в результате к прогнозному блоку для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между исходным блоком, который должен быть кодирован, и прогнозным блоком. Внешне кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих прогнозный блок, и остаточным данным, указывающим разность между кодированным блоком и прогнозным блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, первоначально размещаемые в двумерном массиве, могут сканироваться для того, чтобы формировать одномерный вектор коэффициентов преобразования, и может применяться энтропийное кодирование с тем, чтобы достигать еще большего сжатия.
Сущность изобретения
[0006] В общем, это раскрытие сущности описывает технологии, связанные с определением контекстов для энтропийного кодирования, например, с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC), видеоданных. CABAC-кодирование, в общем, заключает в себе определение контекста при кодировании преобразованных в двоичную форму представлений различных элементов синтаксиса. Примеры элементов синтаксиса включают в себя данные для коэффициентов преобразования, к примеру, данные, указывающие то, являются или нет коэффициенты преобразования значимыми, знаки коэффициентов преобразования, которые являются значимыми, и значения уровня для коэффициентов преобразования, которые являются значимыми. Коэффициенты преобразования, в общем, соответствуют коэффициентам блока преобразования, такого как единица преобразования (TU). Это раскрытие сущности описывает технологии для определения контекстов для кодирования коэффициентов преобразования основываясь на областях блока преобразования, в которых возникают коэффициенты преобразования.
[0007] В одном примере, способ кодирования видеоданных включает в себя определение контекста для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийное кодирование коэффициента преобразования с использованием определенного контекста.
[0008] В другом примере, устройство для кодирования видеоданных включает в себя видеокодер, сконфигурированный с возможностью определять контекст для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0009] В другом примере, устройство для кодирования видеоданных включает в себя средство для определения контекста для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и средство для энтропийного кодирования коэффициента преобразования с использованием определенного контекста.
[0010] В другом примере, считываемый компьютером носитель данных имеет сохраненные инструкции, которые при исполнении побуждают процессор определять контекст для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0011] В другом примере, способ декодирования видеоданных включает в себя определение того, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определение контекста для декодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и энтропийное декодирование коэффициента преобразования с использованием определенного контекста.
[0012] В другом примере, устройство для декодирования видеоданных включает в себя видеодекодер, сконфигурированный с возможностью определять то, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определять контекст для декодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока и энтропийно декодировать коэффициент преобразования с использованием определенного контекста.
[0013] В другом примере, устройство для декодирования видеоданных включает в себя средство для определения того, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, средство для определения, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, контекста для декодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и средство для энтропийного декодирования коэффициента преобразования с использованием определенного контекста.
[0014] В другом примере, считываемый компьютером носитель данных имеет сохраненные инструкции, которые при исполнении побуждают процессор определять то, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определять контекст для декодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и энтропийно декодировать коэффициент преобразования с использованием определенного контекста.
[0015] В другом примере, способ кодирования видеоданных включает в себя определение того, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определение контекста для кодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и энтропийное кодирование коэффициента преобразования с использованием определенного контекста.
[0016] В другом примере, устройство для кодирования видеоданных включает в себя видеокодер, сконфигурированный с возможностью определять то, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определять контекст для кодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0017] В другом примере, устройство для кодирования видеоданных включает в себя средство для определения того, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, средство для определения, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, контекста для кодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и средство для энтропийного кодирования коэффициента преобразования с использованием определенного контекста.
[0018] В другом примере, считываемый компьютером носитель данных имеет сохраненные инструкции, которые при исполнении побуждают процессор определять то, представляет собой или нет коэффициент преобразования видеоблока DC-коэффициент преобразования, когда определяется то, что коэффициент преобразования представляет собой DC-коэффициент преобразования видеоблока, определять контекст для кодирования коэффициента преобразования на основе того, что коэффициент преобразования представляет собой DC-коэффициент преобразования, без учета размера видеоблока, и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0019] В другом примере, способ декодирования видеоданных включает в себя определение значений для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, определение контекста для декодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков и энтропийное декодирование коэффициента преобразования с использованием определенного контекста.
[0020] В другом примере, устройство для декодирования видеоданных включает в себя видеодекодер, сконфигурированный с возможностью определять значения для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, определять контекст для декодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков и энтропийно декодировать коэффициент преобразования с использованием определенного контекста.
[0021] В другом примере, устройство для декодирования видеоданных включает в себя средство для определения значений для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, средство для определения контекста для декодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков, и средство для энтропийного декодирования коэффициента преобразования с использованием определенного контекста.
[0022] В другом примере, считываемый компьютером носитель данных имеет сохраненные инструкции, которые при исполнении побуждают процессор определять значения для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, определять контекст для декодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков и энтропийно декодировать коэффициент преобразования с использованием определенного контекста.
[0023] В другом примере, способ кодирования видеоданных включает в себя определение значений для флагов кодированных субблоков одного или более соседних субблоков относительно текущего× субблока, определение контекста для кодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков, и энтропийное кодирование коэффициента преобразования с использованием определенного контекста.
[0024] В другом примере, устройство для кодирования видеоданных включает в себя видеокодер, сконфигурированный с возможностью определять значения для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, определять контекст для кодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0025] В другом примере, устройство для кодирования видеоданных включает в себя средство для определения значений для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, средство для определения контекста для кодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков, и средство для энтропийного кодирования коэффициента преобразования с использованием определенного контекста.
[0026] В другом примере, считываемый компьютером носитель данных имеет сохраненные инструкции, которые при исполнении побуждают процессор определять значения для флагов кодированных субблоков одного или более соседних субблоков относительно текущего субблока, определять контекст для кодирования коэффициента преобразования текущего субблока на основе значений для флагов кодированных субблоков и энтропийно кодировать коэффициент преобразования с использованием определенного контекста.
[0027] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[0028] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии внешнего прогнозирования, описанные в этом раскрытии сущности.
[0029] Фиг. 2 является блок-схемой, иллюстрирующей примерный видеокодер, который может реализовывать технологии внешнего прогнозирования, описанные в этом раскрытии сущности.
[0030] Фиг. 3 является блок-схемой, иллюстрирующей примерный видеодекодер, который может реализовывать технологии, описанные в этом раскрытии сущности.
[0031] Фиг. 4 является концептуальной схемой, которая иллюстрирует взаимосвязь между коэффициентами преобразования в видеоблоке и карте значимости, ассоциированной с видеоблоком.
[0032] Фиг. 5A-5D являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, сканированных с использованием зигзагообразного порядка сканирования, горизонтального порядка сканирования, вертикального порядка сканирования и диагонального порядка сканирования.
[0033] Фиг. 6 является концептуальной схемой, которая иллюстрирует примерный видеоблок, разделенный на субблоки для кодирования коэффициентов преобразования.
[0034] Фиг. 7 является концептуальной схемой, которая иллюстрирует примерную пятиточечную поддержку, используемую для того, чтобы задавать контекстную модель для карты значимости коэффициентов в видеоблоке, сканированном с использованием обратного диагонального порядка сканирования.
[0035] Фиг. 8A и 8B являются концептуальными схемами, которые иллюстрируют зависимость от контекста в пятиточечной поддержке.
[0036] Фиг. 9A и 9B являются концептуальными схемами, которые иллюстрируют примерные разделения видеоблока на две или более областей.
[0037] Фиг. 10 является концептуальной схемой, которая иллюстрирует примерное назначение контекстов на основе окружения или позиции для каждой области видеоблока.
[0038] Фиг. 11 является концептуальной схемой, которая иллюстрирует примерное назначение смещений контекста для каждой области видеоблока.
[0039] Фиг. 12 является концептуальной схемой, которая иллюстрирует примерное встроенное разделение видеоблока на две или более областей на основе TU-размеров, которые коррелируются с существующими контекстными моделями.
[0040] Фиг. 13A и 13B являются концептуальными схемами, которые иллюстрируют примерные разделения видеоблока на две или более областей.
[0041] Фиг. 14A и 14B являются концептуальными схемами, которые иллюстрируют примерное назначение смещений контекста для каждой области видеоблока.
[0042] Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока.
[0043] Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных.
Подробное описание изобретения
[0044] В общем, это раскрытие сущности описывает технологии, связанные с определением контекстов для энтропийного кодирования, например, с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC), видеоданных. CABAC-кодирование, в общем, заключает в себе определение контекста при кодировании преобразованных в двоичную форму представлений различных элементов синтаксиса. Элементы синтаксиса включают в себя, например, данные для коэффициентов преобразования, к примеру, данные, указывающие то, являются или нет коэффициенты преобразования значимыми, знаки коэффициентов преобразования, которые являются значимыми, и значения уровня для коэффициентов преобразования, которые являются значимыми. Коэффициенты преобразования, в общем, соответствуют коэффициентам блока преобразования, такого как единица преобразования (TU). Это раскрытие сущности описывает технологии для определения контекстов для кодирования коэффициентов преобразования основываясь на областях блока преобразования, в которых возникают коэффициенты преобразования.
[0045] В общем, в соответствии с технологиями этого раскрытия сущности, видеокодер может быть сконфигурирован с возможностью определять контекст для кодирования коэффициента преобразования основываясь на области, в которой возникает коэффициент преобразования, и затем энтропийно кодировать коэффициент преобразования с использованием определенного контекста. Видеоблок может быть разделен на области множеством способов. Фиг. 9A и 11 иллюстрируют примеры, в которых видеоблок разделяется на первую область, включающую в себя один или более верхних левых субблоков (например, субблоков 4×4), и вторую область, включающую в себя субблоки за пределами первой области. Фиг. 9B иллюстрирует пример, в котором видеоблок разделяется на области вдоль диагонального направления. Фиг. 10 иллюстрирует пример, в котором видеоблок разделяется на квартили, и верхний левый квартиль дополнительно разделяется на первую подобласть, включающую в себя субблоки верхней левой части верхнего левого квартиля, и вторую подобласть, включающую в себя субблоки верхнего левого квартиля, внешнего для первой подобласти. Фиг. 12 иллюстрирует пример, в котором видеоблок разделяется на области, которые соответствуют размерам видеоблоков (например, 4×4, 8×8, 16×16 и 32×32). Фиг. 13A иллюстрирует пример, в котором видеоблок разделяется на горизонтальные прямоугольные области. Фиг. 13B иллюстрирует пример, в котором видеоблок разделяется на вертикальные прямоугольные области. Эти чертежи подробнее описываются ниже.
[0046] В различных примерах, видеокодер может быть сконфигурирован с возможностью определять контекст для кодирования коэффициента преобразования различными способами, например, основываясь на области, в которой возникает коэффициент преобразования. Например, видеокодер может быть сконфигурирован с возможностью определять контекст с использованием контекстной информации на основе позиции для некоторых областей или контекстной информации на основе окружения для других областей. В некоторых примерах, все коэффициенты преобразования в конкретной области могут быть кодированы с использованием идентичного контекста, определенного основываясь на области. В других примерах, контексты для коэффициентов преобразования в области могут быть определены на основе окружения контекста. В еще одних других примерах, видеокодер может определять смещение, которое должно применяться к контексту, основываясь на области, в которой возникает коэффициент преобразования. Иными словами, каждая из областей может быть ассоциирована с конкретным смещением, которое должно применяться к контексту.
[0047] Технологии этого раскрытия сущности могут уменьшать потребление полосы пропускания, приводя к экономии битов при кодировании элементов синтаксиса для коэффициентов преобразования. Такие элементы синтаксиса могут включать в себя любое из флага значимого коэффициента (который указывает то, является или нет соответствующий коэффициент преобразования значимым, т.е. ненулевым), знака значимых коэффициентов, индикатора относительно того, имеет или нет значимый коэффициент абсолютное значение, превышающее 1, индикатора относительно того, имеет или нет значимый коэффициент с абсолютным значением, превышающим 1, абсолютное значение, превышающее 2, и/или оставшееся значения уровня для коэффициентов, имеющих абсолютные значения, превышающие 2.
[0048] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать технологии, описанные в этом раскрытии сущности. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое формирует кодированные видеоданные, которые должны быть декодированы впоследствии посредством устройства-адресата 14. Устройство-источник 12 и устройство-адресат 14 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, так называемые смартфоны, так называемые интеллектуальные сенсорные панели, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройства потоковой передачи видео и т.п. В некоторых случаях, устройство-источник 12 и устройство-адресат 14 могут быть оснащены возможностями беспроводной связи.
[0049] Устройство-адресат 14 может принимать кодированные видеоданные, которые должны быть декодированы, через линию 16 связи. Линия 16 связи может содержать любой тип носителя или устройства, допускающего перемещение кодированных видеоданных из устройства-источника 12 в устройство-адресат 14. В одном примере, линия 16 связи может содержать среду связи, чтобы обеспечивать возможность устройству-источнику 12 передавать кодированные видеоданные непосредственно в устройство-адресат 14 в реальном времени. Кодированные видеоданные могут быть модулированы согласно стандарту связи, такому как протокол беспроводной связи, и переданы в устройство-адресат 14. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из устройства-источника 12 в устройство-адресат 14.
[0050] Альтернативно, кодированные данные могут выводиться из интерфейса 22 вывода в устройство 34 хранения данных. Аналогично, к кодированным данным может осуществляться доступ из устройства 34 хранения данных посредством интерфейса ввода. Устройство 34 хранения данных может включать в себя любые из множества носителей хранения данных с распределенным или локальным доступом, такие как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство или любые другие подходящие цифровые носители данных для сохранения кодированных видеоданных. В дополнительном примере, устройство 34 хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может хранить кодированное видео, сформированное посредством устройства-источника 12. Устройство-адресат 14 может осуществлять доступ к сохраненным видеоданным из устройства 34 хранения данных через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в устройство-адресат 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Устройство-адресат 14 может осуществлять доступ к кодированным видеоданным через любое стандартное подключение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем и т.д.) или комбинацию означенного, которая является подходящей для того, чтобы осуществлять доступ к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из устройства 34 хранения данных может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного.
[0051] Технологии этого раскрытия сущности не обязательно ограничены приложениями или настройками беспроводной связи. Технологии могут применяться к кодированию видео в поддержку любых из множества мультимедийных приложений, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие приложения. В некоторых примерах, система 10 может быть сконфигурирована с возможностью поддерживать одностороннюю или двустороннюю передачу видео, чтобы поддерживать такие приложения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[0052] В примере по фиг. 1, устройство-источник 12 включает в себя видеоисточник 18, видеокодер 20 и интерфейс 22 вывода. В некоторых случаях, интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передающее устройство. В устройстве-источнике 12 видеоисточник 18 может включать в себя источник, такой как устройство видеозахвата, например, видеокамера, видеоархив, содержащий ранее захваченное видео, интерфейс прямых видеотрансляций, чтобы принимать видео от поставщика видеоконтента, и/или компьютерную графическую систему для формирования компьютерных графических данных в качестве исходного видео, либо комбинацию таких источников. В качестве одного примера, если видеоисточником 18 является видеокамера, устройство-источник 12 и устройство-адресат 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, технологии, описанные в этом раскрытии сущности, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения.
[0053] Захваченное, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 20. Кодированные видеоданные могут быть переданы непосредственно в устройство-адресат 14 через интерфейс 22 вывода устройства-источника 12. Кодированные видеоданные также (или альтернативно) могут сохраняться на устройство 34 хранения данных для последующего доступа посредством устройства-адресата 14 или других устройств для декодирования и/или воспроизведения.
[0054] Устройство-адресат 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В некоторых случаях, интерфейс 28 ввода может включать в себя приемное устройство и/или модем. Интерфейс 28 ввода устройства-адресата 14 принимает кодированные видеоданные по линии 16 связи. Кодированные видеоданные, передаваемые по линии 16 связи или предоставленные на устройстве 34 хранения данных, могут включать в себя множество элементов синтаксиса, сформированных посредством видеокодера 20 для использования посредством видеодекодера, такого как видеодекодер 30, при декодировании видеоданных. Такие элементы синтаксиса могут быть включены с кодированными видеоданными, передаваемыми на среде связи, сохраненными на носителе хранения данных или сохраненными на файловом сервере.
[0055] Устройство 32 отображения может быть интегрированным или внешним для устройства-адресата 14. В некоторых примерах, устройство-адресат 14 может включать в себя интегрированное устройство отображения, а также сконфигурировано с возможностью взаимодействовать с внешним устройством отображения. В других примерах, устройство-адресат 14 может быть устройством отображения. В общем, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0056] Видеокодер 20 и видеодекодер 30 могут работать согласно такому стандарту сжатия видео, как стандарт высокоэффективного кодирования видео (HEVC), разрабатываемый в настоящее время, и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видеокодер 20 и видеодекодер 30 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт ITU-T H.264, альтернативно называемый "MPEG-4, часть 10, усовершенствованное кодирование видео (AVC)″, или расширениям таких стандартов. Расширения стандартов включают в себя, например, масштабируемое кодирование видео (SVC), кодирование многовидового видео (MVC), трехмерный (трехмерный), к примеру, кодирование информации глубины и т.п. Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом или расширением стандарта кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.
[0057] Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио-кодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, в некоторых примерах блоки мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0058] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера, к примеру, один или более микропроцессоров, процессоры цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом считываемом компьютером носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0059] JCT-VC проводит работы по разработке HEVC-стандарта. Работа по стандартизации HEVC основана на усовершенствованной модели устройства кодирования видео, называемой "тестовой моделью HEVC (HM)". HM предполагает несколько дополнительных возможностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 предоставляет девять режимов внутреннего прогнозирующего кодирования, HM может предоставлять целых тридцать три режима внутреннего прогнозирующего кодирования.
[0060] В общем, рабочая модель HM описывает, что видеокадр или изображение может быть разделено на последовательность древовидных блоков или наибольших единиц кодирования (LCU), которые включают в себя выборки как сигнала яркости, так и сигнала цветности. Древовидный блок имеет назначение, аналогичное назначению макроблока по стандарту H.264. Слайс включает в себя определенное число последовательных древовидных блоков в порядке кодирования. Видеокадр или изображение может быть сегментировано на один или более слайсов. Каждый древовидный блок может разбиваться на единицы кодирования (CU) согласно дереву квадрантов. Например, древовидный блок, в качестве корневого узла дерева квадрантов, может разбиваться на четыре дочерних узла, и каждый дочерний узел, в свою очередь, может быть родительским узлом и разбиваться еще на четыре дочерних узла. Конечный, неразбитый дочерний узел, в качестве концевого узла дерева квадрантов, содержит узел кодирования, т.е. кодированный видеоблок. Синтаксические данные, ассоциированные с кодированным потоком битов, могут задавать максимальное число раз, которое может разбиваться древовидный блок, и также может задавать минимальный размер узлов кодирования.
[0061] CU включает в себя узел кодирования и единицы прогнозирования (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен иметь квадратную форму. Размер CU может колебаться от 8×8 пикселов вплоть до размера древовидного блока максимум в 64×64 пикселов или более. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, сегментирование CU на одну или более PU. Режимы сегментирования могут отличаться между тем, является CU кодированной в режиме пропуска или прямом режиме, кодированной в режиме внутреннего прогнозирования или кодированной в режиме внешнего прогнозирования. PU могут быть сегментированы таким образом, что они имеют неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, сегментирование CU на одну или более TU согласно дереву квадрантов. TU может иметь квадратную или неквадратную форму.
[0062] HEVC-стандарт обеспечивает возможность преобразований согласно TU, которые могут отличаться для различных CU. Размеры NU типично задаются на основе размера PU в данной CU, заданного для сегментированной LCU, хотя это может не всегда иметь место. TU типично имеет идентичный размер или меньше, чем PU. В некоторых примерах, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры в виде дерева квадрантов, известной как "остаточное дерево квадрантов" (RQT). Концевые узлы RQT могут называться "единицами преобразования (TU)". Значения пиксельных разностей, ассоциированные с TU, могут быть преобразованы, чтобы формировать коэффициенты преобразования, которые могут быть квантованы.
[0063] В общем, PU включает в себя данные, связанные с процессом прогнозирования. Например, когда PU кодируется во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего прогнозирования для PU. В качестве другого примера, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений для вектора движения.
[0064] В общем, TU используется для процессов преобразования и квантования. Данная CU, имеющая одну или более PU, также может включать в себя одну или более TU. После прогнозирования видеокодер 20 может вычислять остаточные значения, соответствующие PU. Остаточные значения содержат значения пиксельных разностей, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы с использованием TU, чтобы формировать преобразованные в последовательную форму коэффициенты преобразования для энтропийного кодирования. Это раскрытие сущности типично использует термин "видеоблок" для того, чтобы означать узел кодирования CU. В некоторых конкретных случаях это раскрытие сущности также может использовать термин "видеоблок" для того, чтобы означать древовидный блок, т.е. LCU или CU, которая включает в себя узел кодирования и PU и TU.
[0065] Видеопоследовательность типично включает в себя серии видеокадров или изображений. Группа изображений (GOP), в общем, содержит последовательность из одного или более видеоизображений. GOP может включать в себя в заголовке GOP, в заголовке одного или более изображений или в другом месте синтаксические данные, которые описывают число изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 типично оперирует с видеоблоками в пределах отдельных слайсов, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или варьирующиеся размеры и могут отличаться по размеру согласно указанному стандарту кодирования.
[0066] В качестве примера, HM поддерживает прогнозирование для различных PU-размеров. При условии, что размер конкретной CU составляет 2N×2N, HM поддерживает внутреннее прогнозирование для PU-размеров 2N×2N или N×N и внешнее прогнозирование для симметричных PU-размеров 2N×2N, 2N×N, N×2N или N×N. HM также поддерживает асимметричное сегментирование для внешнего прогнозирования для PU-размеров 2N×nU, 2N×nD, nL×2N и nR×2N. При асимметричном сегментировании одно направление CU не сегментируется, в то время как другое направление сегментируется на 25% и 75%. Часть CU, соответствующая 25%-ому сегменту, указывается посредством "n", после чего идет индикатор относительно "вверх (Up)", "вниз (Down)", "влево (Left)" или "вправо (Right)". Таким образом, например, "2N×nU" ссылается на CU 2N×2N, которая сегментируется горизонтально с PU 2N×0,5N вверху и PU 2N×1,5N внизу.
[0067] В этом раскрытии сущности, "N×N" и "N на N" могут быть использованы взаимозаменяемо для того, чтобы означать размеры в пикселах видеоблока с точки зрения размеров по вертикали и горизонтали, например, 16×16 пикселов, или 16 на 16 пикселов. В общем, блок 16×16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок N×N, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать N×M пикселов, причем M не обязательно равно N.
[0068] После внутреннего прогнозирующего кодирования или внешнего прогнозирующего кодирования с использованием PU CU, видеокодер 20 может вычислять остаточные данные для TU CU. PU могут содержать пиксельные данные в пространственной области (также называемой "пиксельной областью"), и TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования или концептуально аналогичного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселами некодированного изображения и прогнозными значениями, соответствующими PU. Видеокодер 20 может формировать TU, включающую в себя остаточные данные для CU, и затем преобразовывать TU таким образом, чтобы формировать коэффициенты преобразования для CU.
[0069] После преобразований, чтобы формировать коэффициенты преобразования, видеокодер 20 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[0070] В некоторых примерах, видеокодер 20 и видеодекодер 30 могут использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, так чтобы формировать преобразованный в последовательную форму вектор, который может энтропийно кодироваться. В других примерах, видеокодер 20 и видеодекодер 30 могут выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, или в ходе сканирования, видеокодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), синтаксическому контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию на основе сегментирования на интервалы вероятности (PIPE) или другой технологии энтропийного кодирования. Видеодекодер 30 может энтропийно декодировать коэффициенты, выполнять процесс обратного квантования и процесс обратного преобразования, чтобы воспроизводить остаточные данные, и комбинировать остаточные данные с прогнозирующими данными, чтобы формировать декодированные видеоданные. Видеокодер 20 также может энтропийно кодировать элементы синтаксиса, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 30 при декодировании видеоданных.
[0071] Чтобы выполнять CABAC, видеокодер 20 и видеодекодер 30 могут назначать контекст в контекстной модели символу, который должен быть кодирован. Контекст может быть связан, например, с тем, являются соседние значения символа ненулевыми или нет. В соответствии с технологиями этого раскрытия сущности, видеокодер 20 и/или видеодекодер 30 могут быть сконфигурированы с возможностью определять контекст для энтропийного кодирования (например, энтропийного кодирования или энтропийного декодирования) коэффициента преобразования основываясь на области видеоблока, в которой возникает коэффициент преобразования.
[0072] Видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с заданиями различных областей для видеоблоков (например, единиц преобразования). Например, видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с заданиями областей для различных размеров видеоблоков. В некоторых примерах, видеокодер 20 может определять способ, посредством которого можно разделять видеоблок на области и кодировать данные, представляющие то, как должен быть разделен блок. Каждая из областей может быть ассоциирована с соответствующим значением и/или технологией для определения контекста для коэффициентов преобразования, возникающих в соответствующей области.
[0073] Например, конкретная область видеоблока может быть ассоциирована со схемой определения контекстов на основе окружения, в то время как другая область видеоблока может быть ассоциирована со схемой определения контекстов на основе позиции. В качестве другого примера, область видеоблока может быть ассоциирована со смещением, которое должно применяться к контексту, определенному для коэффициентов преобразования, расположенных в этой области. Различные области идентичного видеоблока могут быть ассоциированы с различными значениями смещения и/или различными технологиями для вычисления контекста.
[0074] В качестве одного примера, видеоблок может включать в себя две различных области: первую область, включающую в себя один или более субблоков (например, субблоков коэффициентов преобразования 4×4) в верхнем левом углу видеоблока, и вторую область, включающую в себя другие субблоки видеоблока, которые не включаются в первую область. Более конкретно, видеокодер 20 и видеодекодер 30 могут определять координату X и Y субблока и определять то, находится субблок в первой области или во второй области, посредством сравнения суммы X и Y с пороговым значением. Если сумма X и Y меньше порогового значения, видеокодер 20 и видеодекодер 30 могут определять то, что субблок находится в первой области, а в противном случае, видеокодер 20 и видеодекодер 30 могут определять то, что субблок находится во второй области. Видеокодер 20 и видеодекодер 30 могут определять контекст для коэффициентов видеоблока на основе того, находятся коэффициенты в субблоке первой области или субблоке второй области.
[0075] Например, в некоторых областях, контекст может быть фиксированным контекстом, в котором видеокодер 20 и видеодекодер 30 кодируют коэффициенты преобразования в таких областях с использованием фиксированного контекста. Иными словами, видеокодер 20 и видеодекодер 30 могут применять идентичный контекст ко всем коэффициентам преобразования в области. Альтернативно, каждый из субблоков в области может быть ассоциирован с идентичным способом определения контекста (например, способом на основе фиксированных контекстов), но различные субблоки в области могут иметь различные фиксированные контексты. Видеокодер 20 и видеодекодер 30 могут определять фиксированный контекст для субблока на основе позиции субблока в области. В качестве еще одного другого примера, фиксированные контексты могут назначаться отдельным позициям коэффициентов преобразования в области. Иными словами, видеокодер 20 и видеодекодер 30 могут определять контекст для кодирования коэффициента преобразования в области на основе позиции коэффициента преобразования в видеоблоке, субблоке и/или области.
[0076] В качестве другого примера, в некоторых областях, контекстная модель может быть задана согласно соседним субблокам. Например, видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с наборами контекстов для каждого субблока в конкретной области. Иными словами, каждый субблок в области может быть ассоциирован с соответствующим набором контекстов. Видеокодер 20 и видеодекодер 30 могут выбирать надлежащий контекст из набора контекстов для каждого коэффициента преобразования в соответствующем субблоке. Набор контекстов для одного субблока может отличаться от набора контекстов для другого субблока.
[0077] В качестве еще одного другого примера, для каждого субблока в области могут быть кодированы отдельные флаги, представляющие то, существуют или нет какие-либо значимые (т.е. ненулевые) коэффициенты в соответствующем субблоке. Эти флаги могут упоминаться как "флаги кодированных субблоков". Такие флаги могут быть использованы для выбора контекста для кодирования коэффициентов преобразования в субблоках. Например, видеокодер 20 и видеодекодер 30 могут определять контекст для кодирования коэффициентов преобразования в субблоке на основе значений флагов одного или более соседних субблоков. Например, флаги могут иметь двоичные значения в 0 или 1, и видеокодер 20 и видеодекодер 30 могут определять контекст для кодирования коэффициентов преобразования в текущем субблоке на основе суммы значений флага для правого соседнего субблока и нижнего соседнего субблока (также называемого "нижним соседним субблоком"). Другие формулы также могут быть использованы для вычисления контекста для субблока.
[0078] Видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью реализовывать любые из технологий этого раскрытия сущности, отдельно или в любой комбинации. Одна примерная комбинация этих технологий заключается в том, что видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью разделять единицу преобразования на субблоки (например, пиксельные субблоки 4×4) и затем определять контекст для кодирования данных конкретного коэффициента преобразования субблока как на основе позиции коэффициента преобразования в субблоке, так и на основе флагов кодированных блоков для одного или более соседних субблоков, например, левого соседнего субблока и нижнего соседнего субблока.
[0079] Видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью кодировать один или более элементов синтаксиса, представляющих коэффициенты преобразования с использованием контекстов, определенных в этих различных примерах. Коэффициенты преобразования могут включать в себя различные типы элементов синтаксиса. Например, коэффициент преобразования может включать в себя флаг значимого коэффициента (significant_coeff_flag), указывающий то, имеет или нет коэффициент преобразования ненулевое значение (т.е. является или нет значимым). Если коэффициент преобразования является значимым, коэффициент преобразования может включать в себя значение знака (например, coeff_sign_flag), указывающее то, значение коэффициента преобразования больше или меньше 0, и значение, указывающее то, превышает или нет абсолютное значение коэффициента преобразования 1 (например, coeff_abs_level_greater1_flag). Если коэффициент преобразования имеет абсолютное значение, превышающее 1, коэффициент преобразования может включать в себя значение, указывающее то, имеет или нет коэффициент преобразования абсолютное значение, превышающее 2 (например, coeff_abs_level_greater2_flag). Если коэффициент преобразования имеет абсолютное значение, превышающее 2, коэффициент преобразования может включать в себя значение, указывающее абсолютное значение коэффициента преобразования минус два (например, coeff_abs_level_remaining).
[0080] CABAC-кодер видеокодера 20 и видеодекодера 30 может кодировать любые из этих значений с использованием контекстов, определенных в соответствии с технологиями этого раскрытия сущности. Помимо этого или в альтернативе, видеокодер 20 и видеодекодер 30 могут кодировать данные, указывающие позицию последнего значимого коэффициента (например, last_significant_coeff_x_prefix, last_significant_coeff_x_suffix, last_significant_coeff_y_prefix и last_significant_coeff_y_suffix) с использованием контекста, определенного в соответствии с технологиями этого раскрытия сущности.
[0081] Видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью осуществлять любую одну или более технологий, описанных в этом раскрытии сущности, отдельно или в любой комбинации. Ниже описываются различные технологии для определения контекста для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийного кодирования коэффициента преобразования с использованием определенного контекста. Примеры таких технологий описываются относительно фиг. 9-14 ниже. В общем, кодирование коэффициента преобразования с использованием определенного контекста включает в себя кодирование одного или более элементов синтаксиса коэффициента преобразования с использованием определенного контекста. Определение контекста, в общем, включает в себя определение области, в которой возникает коэффициент преобразования, и определение контекста основываясь на области. Например, область может быть ассоциирована с конкретным контекстом или набором контекстов и/или ассоциирована с одной или более технологий для определения контекста.
[0082] Фиг. 2 является блок-схемой, иллюстрирующей примерный видеокодер 20, который может реализовывать технологии, описанные в этом раскрытии сущности. Видеокодер 20 может выполнять внутреннее и внешнее кодирование видеоблоков в слайсах. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре или изображении. Внешнее кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах или изображениях видеопоследовательности. Внутренний режим (I-режим) может означать любой из нескольких режимов пространственного сжатия. Внешние режимы, к примеру, однонаправленное прогнозирование (P-режим) или бипрогнозирование (B-режим), могут означать любой из нескольких режимов временного сжатия.
[0083] В примере по фиг. 2, видеокодер 20 включает в себя модуль 35 выбора режима, процессор 41 прогнозирования, запоминающее устройство 64 опорных изображений, сумматор 50, процессор 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Процессор 41 прогнозирования включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 внутреннего прогнозирования. Для восстановления видеоблоков видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 2) также может быть включен с возможностью фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 62. Дополнительные контурные фильтры (внутриконтурные или постконтурные) также могут быть использованы в дополнение к фильтру удаления блочности.
[0084] Как показано на фиг. 2, видеокодер 20 принимает видеоданные, и модуль 35 выбора режима сегментирует данные на видеоблоки. Это сегментирование также может включать в себя сегментирование на слайсы, плитки или другие большие единицы, а также сегментирование видеоблока, например, согласно структуре в виде дерева квадрантов LCU и CU. Видеокодер 20, в общем, иллюстрирует компоненты, которые кодируют видеоблоки в видео слайсе, который должен быть кодирован. Слайс может быть разделен на несколько видеоблоков (и возможно на наборы видеоблоков, называемых "плитками"). Процессор 41 прогнозирования может выбирать один из множества возможных режимов кодирования, к примеру, один из множества режимов внутреннего кодирования или один из множества режимов внешнего кодирования, для текущего видеоблока на основе результатов ошибки (например, скорости кодирования и уровня искажения). Процессор 41 прогнозирования может предоставлять результирующий внутренне или внешне кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного изображения.
[0085] Модуль 46 внутреннего прогнозирования в процессоре 41 прогнозирования может выполнять внутреннее прогнозирующее кодирование текущего видеоблока относительно одного или более соседних блоков в кадре или слайсе, идентичном кадру или слайсу текущего блока, который должен быть кодирован, чтобы предоставлять пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в процессоре 41 прогнозирования выполняют внешнее прогнозирующее кодирование текущего видеоблока относительно одного или более прогнозных блоков в одном или более опорных изображений, чтобы предоставлять временное сжатие.
[0086] Модуль 42 оценки движения может быть сконфигурирован с возможностью определять режим внешнего прогнозирования для видео слайса согласно предварительно определенному шаблону для видеопоследовательности. Предварительно определенный шаблон может обозначать слайсы в последовательности в качестве P-слайсов, B-слайсов или GPB-слайсов. Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения, выполняемая посредством модуля 42 оценки движения, является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре или изображении относительно прогнозного блока в опорном изображении.
[0087] Прогнозный блок является блоком, для которого обнаруживается, что он практически совпадает с видеоблоком, который должен быть кодирован, с точки зрения пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей. В некоторых примерах, видеокодер 20 может вычислять значения для субцелочисленнопиксельных позиций опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Например, видеокодер 20 может интерполировать значения позиций в одну четверть пиксела, позиций в одну восьмую пиксела или других дробнопиксельных позиций опорного изображения. Следовательно, модуль 42 оценки движения может выполнять поиск движения относительно полнопиксельных позиций и дробнопиксельных позиций и выводить вектор движения с дробнопиксельной точностью.
[0088] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока во внешне кодированном слайсе посредством сравнения позиции PU с позицией прогнозного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (списка 0) или второго списка опорных изображений (списка 1), каждый из которых идентифицируют одно или более опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0089] Компенсация движения, выполняемая посредством модуля 44 компенсации движения, может заключать в себе выборку или формирование прогнозного блока на основе вектора движения, определенного посредством оценки движения, возможно выполнение интерполяции в субпиксельную точность. При приеме вектора движения для PU текущего видеоблока модуль 44 компенсации движения может находить прогнозный блок, на который указывает вектор движения в одном из списков опорных изображений. Модуль 44 компенсации движения также может формировать элементы синтаксиса, ассоциированные с видеоблоками и видео слайсом, для использования посредством видеодекодера 30 при декодировании видеоблоков видео слайса.
[0090] Модуль 46 внутреннего прогнозирования может внутренне прогнозировать текущий блок, в качестве альтернативы внешнему прогнозированию, выполняемому посредством модуля 42 оценки движения и модуля 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего прогнозирования может определять режим внутреннего прогнозирования для использования для того, чтобы кодировать текущий блок. В некоторых примерах, модуль 46 внутреннего прогнозирования может кодировать текущий блок с использованием различных режимов внутреннего прогнозирования, например, во время отдельных проходов кодирования, и модуль 46 внутреннего прогнозирования (либо модуль 35 выбора режима в некоторых примерах) может выбирать надлежащий режим внутреннего прогнозирования для использования из тестированных режимов. Например, модуль 46 внутреннего прогнозирования может вычислять значения искажения в зависимости от скорости передачи с использованием анализа искажения в зависимости от скорости передачи для различных тестированных режимов внутреннего прогнозирования и выбирать режим внутреннего прогнозирования, имеющий наилучшие характеристики искажения в зависимости от скорости передачи, из тестированных режимов. Анализ искажения в зависимости от скорости передачи, в общем, определяет величину искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который кодирован для того, чтобы формировать кодированный блок, а также скорость передачи битов (т.е. число битов), используемую для того, чтобы формировать кодированный блок. Модуль 46 внутреннего прогнозирования может вычислять отношения из искажений и скоростей для различных кодированных блоков, чтобы определять то, какой режим внутреннего прогнозирования демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0091] В любом случае, после выбора режима внутреннего прогнозирования для блока, модуль 46 внутреннего прогнозирования может предоставлять информацию, указывающую выбранный режим внутреннего прогнозирования для блока, в модуль 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего прогнозирования, в соответствии с технологиями этого раскрытия сущности. Видеокодер 20 может включать в передаваемый поток битов конфигурационные данные, которые могут включать в себя множество индексных таблиц режима внутреннего прогнозирования и множество модифицированных индексных таблиц режима внутреннего прогнозирования (также называемых "таблицами отображения кодовых слов"), определения контекстов кодирования для различных блоков и индикаторы относительно наиболее вероятного режима внутреннего прогнозирования, индексной таблицы режима внутреннего прогнозирования и модифицированной индексной таблицы режима внутреннего прогнозирования, которые следует использовать для каждого из контекстов.
[0092] После того, как процессор 41 прогнозирования формирует прогнозный блок для текущего видеоблока через внешнее прогнозирование или внутреннее прогнозирование, видеокодер 20 формирует остаточный видеоблок посредством вычитания прогнозного блока из текущего видеоблока. Сумматор 50 представляет модуль, который выполняет это вычисление. Остаточные видеоданные в остаточном блоке могут включаться в одну или более TU и применяться к процессору 52 преобразования. Процессор 52 преобразования, в общем, преобразует остаточные видеоданные из пиксельной области в область преобразования, к примеру, в частотную область. Процессор 52 преобразования может преобразовывать остаточные видеоданные в остаточные коэффициенты преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование. Альтернативно, процессор 52 преобразования может применять двумерное (двумерное) преобразование (в горизонтальном и вертикальном направлении) к остаточным данным в TU.
[0093] Процессор 52 преобразования может отправлять результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования.
[0094] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование на основе сегментирования на интервалы вероятности (PIPE) или другую технологию энтропийного кодирования. Такое энтропийное кодирование, в общем, включает в себя сканирование квантованных коэффициентов преобразования (в общем, называемых в данном документе просто "коэффициентами преобразования" для краткости) один или более раз и энтропийное кодирование элементов синтаксиса для коэффициентов преобразования в ходе каждого сканирования, к примеру, элементов синтаксиса, указывающих то, являются или нет соответствующие коэффициенты преобразования значимыми, имеют абсолютное значение, превышающее 1 или 2, абсолютное значение (или его часть, например, часть, превышающую 2) и знак значимых коэффициентов.
[0095] В соответствии с технологиями этого раскрытия сущности, модуль 56 энтропийного кодирования может определять контекст для кодирования (т.е. энтропийного кодирования) коэффициента преобразования видеоблока (например, единицы преобразования) основываясь на области видеоблока, в которой возникает коэффициент преобразования. Например, в ходе сканирования, модуль 56 энтропийного кодирования может определять позицию коэффициента преобразования в видеоблоке и определять то, в какой области возникает позиция. Помимо этого, модуль 56 энтропийного кодирования может включать в себя области задания конфигурационных данных для видеоблока.
[0096] Например, модуль 56 энтропийного кодирования может быть сконфигурирован с пороговым значением. В этом примере, модуль 56 энтропийного кодирования может определять то, имеют или нет координаты X и Y, задающие позицию коэффициента преобразования, сумму (т.е. X+Y), которая превышает пороговое значение. Первая область, в этом примере, соответствует коэффициентам преобразования, для которых сумма значений координаты X и Y меньше порогового значения, и вторая область соответствует коэффициентам преобразования, для которых сумма значений координаты X и Y превышает или равна пороговому значению. Альтернативно, несколько пороговых значений могут быть использованы для того, чтобы задавать несколько областей. Пример областей, заданных таким образом, показывается на фиг. 9B, который подробнее описывается ниже.
[0097] В качестве другого примера, модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью определять позицию субблока, включающего в себя коэффициент преобразования, в видеоблоке. Субблок может соответствовать субблоку коэффициентов преобразования 4×4. Иными словами, видеоблок может включать в себя множество неперекрывающихся субблоков, имеющих идентичный размер, например, коэффициентов преобразования 4×4. Чтобы определять область для субблока, модуль 56 энтропийного кодирования может сравнивать сумму координаты X и Y субблока (например, конкретный коэффициент преобразования субблока, к примеру, верхний левый коэффициент преобразования субблока) с пороговым значением. То, меньше или нет сумма координат X и Y порогового значения, может служить признаком того, включаются коэффициенты преобразования субблока в первую область или во вторую область.
[0098] Например, пусть Cij представляет позицию субблока, имеющего верхний левый коэффициент преобразования в позиции (i, j), где x=i и y=j. Дополнительно, пусть T задает пороговое значение. Модуль 56 энтропийного кодирования может определять область, в которой возникают коэффициенты преобразования субблока, с использованием следующего псевдокода:
(i+j<T)? region1: region2.
[0099] В этом примере, когда i+j меньше T (т.е. сумма координат X и Y субблока меньше порогового значения), модуль 56 энтропийного кодирования определяет то, что все коэффициенты преобразования субблока возникают в области 1, тогда как когда i+j превышает или равно T (т.е. сумма координат X и Y субблока превышает или равна пороговому значению), модуль 56 энтропийного кодирования определяет то, что все коэффициенты преобразования субблока возникают в области 2. Эти и другие примеры областей описываются подробнее ниже относительно фиг. 9-14.
[0100] Модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью определять контексты основываясь на областях различными способами. Например, модуль 56 энтропийного кодирования может определять контекст для кодирования коэффициента преобразования основываясь на области, в которой возникает коэффициент преобразования, с использованием местоположения коэффициента преобразования в видеоблоке или позиции субблока 4×4, в котором возникает коэффициент преобразования.
[0101] Альтернативно, контекстная модель может быть задана согласно соседним субблокам 4×4. Например, модуль 56 энтропийного кодирования может назначать каждому субблоку 4×4 соответствующий набор доступных контекстов и выбирать один из контекстов для текущего коэффициента преобразования, который должен быть кодирован в субблоке, например, на основе позиции коэффициента преобразования в субблоке. Наборы контекстов могут назначаться соответствующим субблокам, так что каждый субблок может иметь различный набор доступных контекстов. В качестве еще одного другого примера, модуль 56 энтропийного кодирования может вычислять контекст в качестве ctx=Right4×4SubBlockFlag+Bottom4×4SubBlockFlag. В этом случае, Right4×4SubBlockFlag представляет флаг кодированного субблока для правого соседнего субблока, в то время как Bottom4×4SubBlockFlag представляет флаг кодированного субблока для флага нижнего соседнего кодированного субблока.
[0102] В некоторых примерах, модуль 56 энтропийного кодирования может применять смещение к определенному контексту для энтропийного кодирования коэффициента преобразования и дополнительно может определять смещение, которое должно применяться, основываясь на области, в которой возникает коэффициент преобразования. Иными словами, модуль 56 энтропийного кодирования может вычислять базовый контекст идентичным общим способом для коэффициентов двух или более областей, но различные области могут иметь различные соответствующие значения смещения. Таким образом, модуль 56 энтропийного кодирования может применять смещение к вычисленному значению контекста на основе смещения, в которое отображается область (т.е. смещение, с которым ассоциирована область).
[0103] Модуль 56 энтропийного кодирования может определять то, представляет собой или нет коэффициент преобразования коэффициент преобразования DC (постоянного тока) (типично представленный в верхнем левом углу блока преобразования), и выбирать контекст для кодирования коэффициента преобразования основываясь на области, в которой возникает коэффициент преобразования, а также того, представляет собой или нет коэффициент преобразования DC-коэффициент преобразования. Например, модуль 56 энтропийного кодирования может определять контексты для коэффициентов преобразования с использованием совместно используемых контекстов для выделенных позиций. Иными словами, совместно используемый контекст может содержать идентичный контекст, который применяется ко всем коэффициентам преобразования, возникающим в конкретной позиции, например, в верхнем левом углу субблока. Таким образом, совместно используемый контекст дополнительно может включать в себя индикатор относительно конкретного контекста, который должен применяться при кодировании DC-коэффициента преобразования, в противоположность не-DC-коэффициентам преобразования, возникающим в верхней левой позиции других субблоков.
[0104] Дополнительно или альтернативно, совместно используемый контекст может содержать совместно используемые контексты для различных размеров блоков для коэффициентов преобразования, возникающих в конкретных позициях блоков. Например, модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью применять идентичный контекст при кодировании DC-коэффициентов преобразования видеоблоков (например, TU) любого размера, например, 4×4, 8×8, 16×16 и т.п. Иными словами, модуль 56 энтропийного кодирования может включать в себя данные, которые отображают DC-коэффициент преобразования, для блоков любого размера, в идентичные контекстные данные для кодирования DC-коэффициента преобразования. Другими словами, модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью кодировать DC-коэффициент преобразования с использованием контекста, определенного для DC-коэффициента преобразования, без учета размера текущего кодируемого видеоблока. Типично, DC-коэффициент преобразования является верхним левым коэффициентом видеоблока.
[0105] После энтропийного кодирования посредством модуля 56 энтропийного кодирования кодированный поток битов может быть передан в видеодекодер 30 или заархивирован для последующей передачи или извлечения посредством видеодекодера 30. Модуль 56 энтропийного кодирования также может энтропийно кодировать векторы движения, индикаторы внутреннего режима и другие элементы синтаксиса для текущего кодируемого видео слайса.
[0106] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельной области для последующего использования в качестве опорного блока опорного изображения. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока с прогнозным блоком одного из опорных изображений в одном из списков опорных изображений. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять субцелочисленнопиксельные значения для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать опорный блок для хранения в запоминающем устройстве 64 опорных изображений. Опорный блок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы внешне прогнозировать блок в последующем видеокадре или изображении.
[0107] Таким образом, видеокодер 20 представляет пример видеокодера, сконфигурированного с возможностью определять контекст для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийно кодировать коэффициент преобразования с использованием определенного контекста. Область может содержать одну из первой области, содержащей один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, и второй области, содержащей коэффициенты преобразования видеоблока за пределами первой области.
[0108] Фиг. 3 является блок-схемой, иллюстрирующей примерный видеодекодер 30, который может реализовывать технологии, описанные в этом раскрытии сущности. В примере по фиг. 3, видеодекодер 30 включает в себя модуль 80 энтропийного декодирования, процессор 81 прогнозирования, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90 и запоминающее устройство 92 опорных изображений. Процессор 81 прогнозирования включает в себя модуль 82 компенсации движения и модуль 84 внутреннего прогнозирования. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в общем, взаимно-обратный относительно прохода кодирования, описанного относительно видеокодера 20 на фиг. 2.
[0109] В ходе процесса декодирования, видеодекодер 30 принимает кодированный поток видеобитов, который представляет видеоблоки кодированного видео слайса, и ассоциированные элементы синтаксиса из видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 энтропийно декодирует поток битов, чтобы формировать квантованные коэффициенты, векторы движения и другие элементы синтаксиса. Модуль 80 энтропийного декодирования перенаправляет векторы движения, индикаторы внутреннего режима и другие связанные с прогнозированием элементы синтаксиса в процессор 81 прогнозирования. Модуль 80 энтропийного декодирования перенаправляет квантованные коэффициенты в форме блока (например, TU) в модуль 86 обратного квантования. Видеодекодер 30 может принимать элементы синтаксиса на уровне видео слайса и/или уровне видеоблока.
[0110] В частности, в соответствии с технологиями этого раскрытия сущности, модуль 80 энтропийного декодирования может определять контекст для энтропийного декодирования коэффициентов преобразования основываясь на области блока, в которой возникают коэффициенты преобразования. В частности, модуль 80 энтропийного декодирования может определять контекст основываясь на области блока, в которой возникает коэффициент преобразования, когда коэффициент преобразования размещается в блоке. Модуль 80 энтропийного декодирования может быть сконфигурирован с возможностью определять области, как пояснено относительно фиг. 9-14 ниже, или другие такие области. Например, как показано на фиг. 9A, модуль 80 энтропийного декодирования может быть сконфигурирован с возможностью определять то, возникает коэффициент преобразования в первой области, включающей в себя один или более субблоков в верхнем левом углу блока, или во второй области, включающей в себя субблоки за пределами первой области, и определять контекст на основе того, возникает коэффициент преобразования в первой области или во второй области.
[0111] Аналогично, модуль 80 энтропийного декодирования может определять контекст основываясь на области, при этом модуль 80 энтропийного декодирования может быть сконфигурирован с одной или более различных технологий для вычисления или определения контекста, ассоциированного с коэффициентами в каждой области. Иными словами, каждая область может быть ассоциирована с одной или более технологий для вычисления или определения контекста. Например, область может быть ассоциирована с контекстом, который совместно используется одним или более коэффициентов преобразования. В качестве другого примера, область может быть ассоциирована с контекстами, которые совместно используются субблоками области. В качестве еще одного другого примера, область может быть ассоциирована со значением смещения, которое должно применяться к значению контекста, вычисленному для коэффициента преобразования в области. Модуль 80 энтропийного декодирования может быть сконфигурирован с возможностью определять контекст для декодирования коэффициента преобразования с использованием их или других технологий, как описано в данном документе, основываясь на области, в которой возникает коэффициент преобразования. Модуль 80 энтропийного декодирования затем может энтропийно декодировать коэффициент преобразования с использованием определенного контекста.
[0112] Дополнительно или альтернативно, совместно используемый контекст может содержать совместно используемые контексты для различных размеров блоков для коэффициентов преобразования, возникающих в конкретных позициях блоков. Например, модуль 80 энтропийного декодирования может быть сконфигурирован с возможностью применять идентичный контекст при кодировании DC-коэффициентов преобразования видеоблоков (например, TU) любого размера, например, 4×4, 8×8, 16×16 и т.п. Иными словами, модуль 80 энтропийного декодирования может включать в себя данные, которые отображают DC-коэффициент преобразования, для блоков любого размера, в идентичные контекстные данные для кодирования DC-коэффициента преобразования. Другими словами, модуль 80 энтропийного декодирования может быть сконфигурирован с возможностью кодировать DC-коэффициент преобразования с использованием контекста, определенного для DC-коэффициента преобразования, без учета размера текущего кодируемого видеоблока. Типично, DC-коэффициент преобразования является верхним левым коэффициентом видеоблока.
[0113] Когда слайс кодируется в качестве внутренне кодированного (I) слайса, модуль 84 внутреннего прогнозирования процессора 81 прогнозирования может формировать прогнозирующие данные для видеоблока текущего видео слайса на основе передаваемого в служебных сигналах режима внутреннего прогнозирования и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в качестве внешне кодированного (т.е. B, P или GPB) слайса, модуль 82 компенсации движения процессора 81 прогнозирования формирует прогнозные блоки для видеоблока текущего видео слайса на основе векторов движения и других элементов синтаксиса, принимаемых из модуля 80 энтропийного декодирования. Прогнозные блоки могут формироваться из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, список 0 и список 1, с использованием технологий составления по умолчанию на основе опорных изображений, сохраненных в запоминающем устройстве 92 опорных изображений.
[0114] Модуль 82 компенсации движения определяет информацию прогнозирования для видеоблока текущего видео слайса посредством синтаксического анализа векторов движения и других элементов синтаксиса и использует информацию прогнозирования для того, чтобы формировать прогнозные блоки для текущего декодируемого видеоблока. Например, модуль 82 компенсации движения использует некоторые из принимаемых элементов синтаксиса для того, чтобы определять режим прогнозирования (например, внутреннее или внешнее прогнозирование), используемый для того, чтобы кодировать видеоблоки видео слайса, тип слайса внешнего прогнозирования (например, B-слайс, P-слайс или GPB-слайс), информацию составления для одного или более списков опорных изображений для слайса, векторы движения для каждого внешне кодированного видеоблока слайса, состояние внешнего прогнозирования для каждого внешне кодированного видеоблока слайса и другую информацию для того, чтобы декодировать видеоблоки в текущем видео слайсе.
[0115] Модуль 82 компенсации движения также может выполнять интерполяцию на основе интерполяционных фильтров. Модуль 82 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 в ходе кодирования видеоблоков, для того чтобы вычислять интерполированные значения для субцелочисленных пикселов опорных блоков. В этом случае, модуль 82 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20, из принимаемых элементов синтаксиса и использовать интерполяционные фильтры для того, чтобы формировать прогнозные блоки.
[0116] Модуль 86 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные посредством модуля 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного посредством видеокодера 20 для каждого видеоблока в видео слайсе, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться. Модуль 88 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельной области.
[0117] В некоторых случаях, модуль 88 обратного преобразования может применять двумерное обратное преобразование (в горизонтальном и вертикальном направлении) к коэффициентам. Согласно технологиям этого раскрытия сущности, модуль 88 обратного преобразования вместо этого может применять горизонтальное одномерное (одномерное) обратное преобразование, вертикальное одномерное обратное преобразование или отсутствие преобразования к остаточным данным в каждой из TU. Тип преобразования, применяемого к остаточным данным в видеокодере 20, может быть передан в служебных сигналах в видеодекодер 30, чтобы применять надлежащий тип обратного преобразования к коэффициентам преобразования.
[0118] После того, как модуль 82 компенсации движения формирует прогнозный блок для текущего видеоблока на основе векторов движения и других элементов синтаксиса, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков из модуля 88 обратного преобразования с соответствующими прогнозными блоками, сформированными посредством модуля 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Другие контурные фильтры (в контуре кодирования или после контура кодирования) также могут быть использованы для того, чтобы сглаживать пиксельные переходы или иным образом повышать качество видео. Декодированные видеоблоки в данном кадре или изображении затем сохраняются в запоминающем устройстве 92 опорных изображений, которое сохраняет опорные изображения, используемые для последующей компенсации движения. Запоминающее устройство 92 опорных изображений также сохраняет декодированное видео для последующего представления на устройстве отображения, таком как устройство 32 отображения по фиг. 1.
[0119] Таким образом, видеодекодер 30 представляет пример видеокодера, сконфигурированного с возможностью определять контекст для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийно кодировать коэффициент преобразования с использованием определенного контекста. Область может содержать одну из первой области, содержащей один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, и второй области, содержащей коэффициенты преобразования видеоблока за пределами первой области.
[0120] Фиг. 4 является концептуальной схемой, которая иллюстрирует взаимосвязь между коэффициентами преобразования в видеоблоке и карте значимости, ассоциированной с видеоблоком. Как проиллюстрировано на фиг. 4, карта значимости включает в себя 1, чтобы указывать каждый экземпляр значения значимого коэффициента, т.е. значение, превышающее нуль, в видеоблоке. Карта значимости может быть передана в служебных сигналах в потоке битов, который является декодируемым посредством видеодекодера, к примеру, видеодекодера 30, чтобы определять местоположение значимых, т.е. превышающих нуль коэффициентов в видеоблоке, который должен быть декодирован. Более конкретно, позиция последнего ненулевого коэффициента в видеоблоке может быть передана в служебных сигналах в потоке битов. Позиция последнего ненулевого коэффициента в видеоблоке зависит от порядка сканирования, используемого для видеоблока. Дополнительные элементы синтаксиса могут быть переданы в служебных сигналах, чтобы указывать другие значимые коэффициенты относительно последнего ненулевого коэффициента согласно известному или узнаваемому порядку сканирования.
[0121] Фиг. 5A-5D являются концептуальными схемами, которые иллюстрируют примеры блоков видеоданных, сканированных с использованием зигзагообразного порядка сканирования, горизонтального порядка сканирования, вертикального порядка сканирования и диагонального порядка сканирования. Как показано на фиг. 5A-5D, бок 8×8 видеоданных, например, TU для CU, может включать в себя шестьдесят четыре коэффициента преобразования в соответствующих позициях блоков, обозначаемых с помощью кругов. В этом примере, блоки 100, 102, 104 и 106 имеют размер 8×8 и, как следствие, включают в себя шестьдесят четыре коэффициента преобразования, сформированные с использованием вышеописанных технологий прогнозирования.
[0122] Согласно технологиям, описанным в этом раскрытии сущности, шестьдесят четыре коэффициента преобразования в каждом из блоков 100, 102, 104 и 106, возможно, преобразованы или могут быть обратно преобразованы с использованием одного из двумерного преобразования, горизонтального одномерного преобразования и вертикального одномерного преобразования, либо коэффициенты преобразования могут не быть преобразованы вообще. Преобразованы или нет, коэффициенты в каждом из видеоблоков 100, 102, 104 и 106 сканируются при подготовке к энтропийному кодированию с использованием одного из зигзагообразного порядка сканирования, горизонтального порядка сканирования, вертикального порядка сканирования и диагонального порядка сканирования.
[0123] Как показано на фиг. 5A, порядок сканирования, ассоциированный с блоком 100, представляет собой зигзагообразный порядок сканирования. Зигзагообразный порядок сканирования побуждает видеокодер, к примеру, видеокодер 20 или видеодекодер 30 сканировать квантованные коэффициенты преобразования блока 100 диагональным способом, как указано посредством стрелок на фиг. 5A. Аналогично на фиг. 5D, диагональный порядок сканирования побуждает видеокодер сканировать квантованные коэффициенты преобразования блока 106 диагональным способом, как указано посредством стрелок на фиг. 5D. Как показано на фиг. 5B и 5C, порядки сканирования, ассоциированные с блоками 102 и 104, представляют собой горизонтальный порядок сканирования и вертикальный порядок сканирования, соответственно. Горизонтальный порядок сканирования побуждает видеокодер сканировать квантованные коэффициенты преобразования блока 102 горизонтальным построчным или "растровым" способом, в то время как вертикальный порядок сканирования побуждает видеокодер сканировать квантованные коэффициенты преобразования блока 104 вертикальным построчным или "циклически сдвинутым растровым" способом, как также указано посредством стрелок на фиг. 5B и 5C.
[0124] В других примерах, как описано выше, блок может иметь размер, который меньше или более размера блоков 100, 102, 104 и 106, и может включать в себя больше или меньше квантованных коэффициентов преобразования и соответствующих позиций блоков. В этих примерах, порядок сканирования, ассоциированный с конкретным блоком, может побуждать видеокодер сканировать квантованные коэффициенты преобразования блока практически аналогичным способом, как показано в примерах блоков 8×8 по фиг. 5A-5D, например, блок 4×4 или блок 16×16 может сканироваться согласно любому из вышеописанных порядков сканирования.
[0125] Хотя направление сканирований на фиг. 5A-5D, в общем, показано как идущее от низкочастотных коэффициентов к высокочастотным коэффициентам, в других примерах, видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью осуществлять обратный порядок сканирования, в котором сканирование может идти от высокочастотных коэффициентов к низкочастотным коэффициентам. Иными словами, видеокодер 20 и видеодекодер 30 могут сканировать коэффициенты в обратном порядке относительно порядка, показанного на фиг. 5A-5D.
[0126] Фиг. 6 является концептуальной схемой, которая иллюстрирует примерный видеоблок 110, разделенный на субблоки для кодирования коэффициентов преобразования. В текущей HM, понятие субблока используется для кодирования коэффициентов преобразования. Видеокодер может подразделять любую единицу преобразования (TU), которая превышает определенный размер субблока, на субблоки. Например, видеоблок 110 разделяется на четыре субблока 4×4.
[0127] В проиллюстрированном примере по фиг. 6, видеокодер разделяет видеоблок 110 на субблоки 4×4. В других примерах, видеокодер может разделять видеоблоки на субблоки других размеров, например, 8×8, 16×16 и т.п. Если видеокодер использует идентичный размер субблока для всех TU кадра или слайса, выгоды могут достигаться в аппаратной реализации вследствие достигнутой равномерности размеров субблоков. Например, вся обработка может разбиваться на такие субблоки независимо от TU-размера. Тем не менее, равномерный размер субблока является необязательным для того, чтобы осуществлять технологии этого раскрытия сущности.
[0128] Для кодирования коэффициентов видеокодер может сканировать каждый субблок 4×4 видеоблока 110 с использованием диагонального порядка сканирования, как показано на фиг. 6. В некоторых примерах, видеокодер может использовать унифицированное сканирование для сканирования коэффициентов преобразования каждого субблока. В этом случае, идентичный порядок сканирования используется для информации значимости, т.е. карты значимости, уровней коэффициентов, знака и т.п. В первом примере, как показано на фиг. 6, видеокодер может сканировать коэффициенты преобразования с использованием диагонального сканирования. В другом примере, видеокодер может сканировать коэффициенты преобразования в порядке, который является противоположным порядку, показанному на фиг. 6, например, обратное диагональное сканирование, которое начинается в нижнем правом углу и переходит к верхнему левому углу. В других примерах, видеокодер может сканировать коэффициенты преобразования с использованием зигзагообразного, горизонтального или вертикального сканирования. Другие направления/ориентации сканирования также являются возможными.
[0129] Для простоты пояснения, это раскрытие сущности описывает субблоки видеоблока как субблоки 4×4. Тем не менее, технологии этого раскрытия сущности также могут применяться относительно субблоков других размеров, например, 8×8, 16×16 и т.п. Для каждого блока 4×4 кодируется significant_coeffgroup_flag, и если существует по меньшей мере один ненулевой коэффициент в субблоке, этот флаг задается равным единице, в противном случае он равен нулю. Если significant_coeffgroup_flag является ненулевым для данного субблока, субблок 4×4 сканируется в обратном диагональном порядке, и significant_coeff_flag кодируется для каждого коэффициента субблока, чтобы указывать значимость коэффициента. Группа этих флагов может упоминаться как "карта значимости" для видеоблока. В некотором примере, вместо явной передачи в служебных сигналах карты значимости, significant_coeffgroup_flag может неявно извлекаться с использованием флагов соседних субблоков 4×4, либо когда субблок 4×4 содержит последний коэффициент или DC-коэффициент. Также кодируются абсолютные значения коэффициентов, т.е. уровни коэффициентов.
[0130] Хотя направление сканирования на фиг. 6, в общем, показано как идущее от низкочастотных коэффициентов к высокочастотным коэффициентам, в других примерах, видеокодер 20 и видеодекодер 30 могут быть сконфигурированы с возможностью осуществлять обратный порядок сканирования, в котором сканирование может идти от высокочастотных коэффициентов к низкочастотным коэффициентам. Иными словами, видеокодер 20 и видеодекодер 30 могут сканировать коэффициенты в обратном порядке относительно порядка, показанного на фиг. 6.
[0131] Фиг. 7 является концептуальной схемой, которая иллюстрирует примерное окружение пятиточечной поддержки, используемое для того, чтобы задавать контекстную модель для выбора контекстов для карты значимости коэффициентов в видеоблоке 112, сканированном с использованием обратного диагонального порядка сканирования. Как отмечено выше, для контекстно-адаптивного декодирования, коэффициенты преобразования могут быть кодированы на основе контекстной модели, которая описывает вероятности коэффициента преобразования, имеющего значение 0 или значение 1. Относительно кодирования на основе карты значимости контекстная модель описывает вероятности того, является или нет конкретный коэффициент преобразования значимым, т.е. ненулевым.
[0132] Для кодирования на основе карты значимости пятиточечная поддержка S может быть использована для того, чтобы задавать контекстную модель, чтобы кодировать карту значимости коэффициентов преобразования видеоблока 112. Пятиточечная поддержка может упоминаться как "окружение поддержки контекста", или просто "окружение поддержки". Иными словами, видеокодер может рассматривать поддержку, чтобы определять вероятность равенства значимости текущей позиции единице или нулю. Окружение поддержки контекста задает соседние коэффициенты (например, которые могут включать в себя информацию значимости), которые могут быть использованы в качестве контекстов для кодирования текущего коэффициента. Согласно некоторым примерам этого раскрытия сущности, окружение поддержки контекста может отличаться для различных позиций коэффициентов в блоке или в субблоке.
[0133] В примере, показанном на фиг. 7, пятиточечная поддержка S представляется посредством точки, обведенной квадратом, относительно текущей или "целевой" позиции, представленной посредством точки, обведенной кругом. Контекстная модель Ctx (уравнение (1) ниже) может задаваться как сумма флагов значимости в каждой точке поддержки, при этом флаг значимости может задаваться равным 1, если соответствующий коэффициент преобразования является ненулевым, и задаваться равным 0 в противном случае.
<mrow><mi>C</mi><mi>t</mi><mi>x</mi><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>p</mi><mo>∈</mo><mi>S</mi></mrow></munder><mrow><mo stretchy="false">(</mo><mi>c</mi><mi>o</mi><mi>e</mi><msub><mi>f</mi><mi>p</mi></msub><mo>!</mo><mo>=</mo><mn>0</mn><mo stretchy="false">)</mo></mrow></mstyle></mrow>
(1)
Соответственно, значение счетчика флага значимости может быть меньше или равно числу элементов поддержки. Значение Ctx необязательно является необработанным значением контекста, но может применяться к базовому значению контекста, в форме смещения, чтобы извлекать контекст, который должен быть использован для того, чтобы кодировать данные для конкретного коэффициента.
[0134] Тем не менее, поддержка S, показанная на фиг. 7, может не быть надлежащей при параллельном вычислении контекста для нескольких коэффициентов преобразования (например, информации значимости, ассоциированной с коэффициентом преобразования) (называемым "параллельным вычислением контекстов значимости" или просто "параллельным вычислением контекстов"). Например, использование поддержки S, показанной на фиг. 7, может препятствовать способности видеокодера параллельно вычислять контексты для информации значимости, поскольку все данные в поддержке S должны быть доступными (например, уже кодированными) для обеспечения возможности параллельного вычисления контекстов. В некоторых случаях, как описано ниже относительно фиг. 8A, кодер может быть вынужден ожидать элемента поддержки в поддержке S для того, чтобы завершать кодирование, до определения контекста для другого элемента поддержки в поддержке S. Эта задержка уменьшает способность видеокодера эффективно обрабатывать информацию значимости.
[0135] Фиг. 8A и 8B являются концептуальными схемами, которые иллюстрируют зависимость от контекста в пятиточечной поддержке. Например, чтобы вычислять контекст значимости для позиции в кружке, может быть необходимым синтаксически анализировать флаг значимости позиции в поддержке S, проиллюстрированной посредством ромбом (показано на фиг. 8A). Такой синтаксический анализ может вводить задержку, если существует необходимость параллельно вычислять контексты значимости двух коэффициентов, поскольку ромб размещается непосредственно перед элементом в кружке в порядке сканирования. Иными словами, контекст позиции в кружке не может быть вычислен одновременно с позицией, помеченной ромбом, поскольку позиция в кружке зависит от позиции, помеченной ромбом, и, следовательно, позиция, помеченная ромбом, должна быть кодирована до определения контекста для позиции в кружке.
[0136] Чтобы разрешать эту зависимость, определенные элементы могут удаляться из поддержки S, задавая поддержку с так называемой "дырой" (незаполненной точкой, обведенной треугольником, показанным на фиг. 8B). Например, флаг значимости в дыре пропускается и не учитывается для вычисления контекстов (т.е. допускается равным нулю). Соответственно, нет необходимости синтаксически анализировать флаг значимости в позиции дыры. Форма 5-точечной поддержки зависит от позиции, чтобы предоставлять возможность лучшей параллельной обработки.
[0137] Фиг. 9A и 9B являются концептуальными схемами, которые иллюстрируют примерные разделения видеоблока на две или более областей. В текущей HM, контекстное моделирование на основе окружения используется для TU-размеров, превышающих 8×8 (т.е. 16×16, 32×32 и неквадратных размеров преобразования в 16×4, 4×16, 32×8 и 8×32) с 5-точечной поддержкой. Тем не менее, контекстное моделирование с 5-точечной поддержкой может повышать сложность вычислений контекстов при больших размерах блоков. Область R1 по фиг. 9A представляет пример области, включающей в себя один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, тогда как область R2 по фиг. 9A представляет пример области, включающей в себя коэффициенты преобразования видеоблока за пределами области R1. Фиг. 9A также представляет пример, в котором множество областей содержат соответствующие наборы из одного или более субблоков.
[0138] В соответствии с технологиями, описанными в этом раскрытии сущности, видеокодер, к примеру, видеокодер 20 или видеодекодер 30, может разделять видеоблок на области R (например, как показано на фиг. 9A и 9B) и использовать различные процедуры назначения контекста для каждой из различных областей. Например, некоторые области могут использовать фиксированный контекст или контекст на основе позиции, а некоторые области могут использовать контекст на основе окружения. Как проиллюстрировано на фиг. 9A, области могут быть основаны на субблоках 4×4, так что все субблоки включаются в одну или другую область. Кроме того, разделение на области может быть гибким в некоторых примерах. Как проиллюстрировано на фиг. 9B, видеоблок может быть разделен на области в диагональном направлении, так что части субблоков могут быть включены в две различных области. В других примерах, разделение может зависеть от позиций коэффициентов или позиции субблока 4×4, содержащего этот коэффициент.
[0139] В некоторых примерах, контекст может быть задан согласно позиции коэффициента в видеоблоке или согласно позиции субблока 4×4, который содержит этот коэффициент. Альтернативно, контекстная модель может быть задана согласно соседним субблокам 4×4. Например, каждый коэффициент в идентичном субблоке 4×4 может использовать один или несколько контекстов, коэффициенты следующего субблока 4×4 также могут использовать один или несколько контекстов. Тем не менее, контексты одного субблока 4×4 могут отличаться от предыдущих контекстов на основе субблоков 4×4. Альтернативно, контексты могут вычисляться как Ctx=Right4×4SubBlockFlag+Bottom4×4SubBlockFlag или аналогичные формулы в зависимости от окружения. С другой стороны, Right4×4SubBlockFlag может представлять флаг кодированного субблока для правого соседнего субблока (например, указывающий то, включает или нет правый соседний субблок 4×4 в себя по меньшей мере один ненулевой коэффициент), и Bottom4×4SubBlockFlag может представлять флаг кодированного субблока для правого соседнего субблока (например, указывающий то, включает или нет нижний соседний субблок 4×4 в себя по меньшей мере один ненулевой коэффициент).
[0140] Фиг. 10 является концептуальной схемой, которая иллюстрирует примерное назначение контекстов на основе окружения или позиции для каждой области видеоблока. Как проиллюстрировано на фиг. 10, также может быть использован гибридный тип контекстов, например, для некоторых областей контексты могут быть основаны на окружении, и для некоторых областей идентичного видеоблока они могут быть фиксированными или основанными на позиции. Потенциальное преимущество подхода на основе позиции состоит в том, что необязательно вычислять контекст способом на основе коэффициентов. Вместо этого, видеокодер может вычислять контекст один раз для всех коэффициентов в области, так что все коэффициенты в области имеют идентичный контекст. Фиг. 10 представляет пример, в котором множество областей содержит соответствующий набор из одного или более субблоков.
[0141] Для коэффициента с координатами (X, Y), области могут быть заданы согласно позиции коэффициента. Например, если условие (X+Y>=пороговое значение) является истинным, то видеокодер может определять то, что соответствующий коэффициент возникает в области R2; в противном случае, если условие не является истинным, видеокодер определяет то, что соответствующий коэффициент возникает в области R1. Аналогично, координаты могут назначаться областям на основе субблоков 4×4. Для субблока с координатами (X, Y), области могут быть заданы согласно позиции субблока 4×4. Например, если условие (X+Y>=пороговое значение) является истинным, то видеокодер может определять то, что соответствующий коэффициент возникает в области R2; в противном случае видеокодер может определять то, что соответствующий коэффициент возникает в области R1. Пороговое значение может задаваться фиксированно равным некоторому предварительно заданному значению, к примеру, целому числу, равному 4, 5, 6, 7 или 8, или может зависеть от размера видеоблока, например, TU.
[0142] Таким образом, фиг. 10 представляет пример, в котором видеокодер может быть сконфигурирован с возможностью определять контекст для кодирования коэффициента преобразования основываясь на области, в которой возникает коэффициент преобразования, с использованием одной из контекстной информации на основе позиции и контекстной информации на основе окружения, основываясь на области. В частности, если коэффициент преобразования находится в первой области, видеокодер может использовать первый подход к определению контекстов для того, чтобы определять контекст для кодирования коэффициента преобразования. Если коэффициент преобразования находится во второй области, видеокодер может использовать второй подход к определению контекстов для того, чтобы определять контекст для кодирования коэффициента преобразования, при этом второй подход к определению контекстов отличается от первого подхода к определению контекстов, а первая область отличается от второй области. В примере, первая и вторая области не перекрываются. С другой стороны, примеры первого и второго подходов к определению контекстов включают в себя использование контекстной информации на основе позиции и контекстной информации на основе окружения.
[0143] Фиг. 11 является концептуальной схемой, которая иллюстрирует примерное назначение смещений контекста для каждой области видеоблока. Контекстная модель может быть отдельной для различных областей, но по-прежнему использовать идентичный способ для вычисления контекстов. Другими словами, видеокодер может быть сконфигурирован с помощью одного способа для вычисления контекста для кодирования коэффициента преобразования, но может включать в себя различные контекстные модели, определенные основываясь на области, в которой возникает коэффициент преобразования.
[0144] Например, контекст может быть вычислен на основе окружения, но для других областей он использует смещение. Смещение для каждой области может быть фиксированным или зависимым от одного или более из размера видеоблока, позиции коэффициента в видеоблоке или субблоке и позиции субблока в видеоблоке. Область R1 по фиг. 11 представляет другой пример области, включающей в себя один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, тогда как область R2 по фиг. 11 представляет другой пример области, включающей в себя коэффициенты преобразования видеоблока за пределами области R1. Фиг. 11 также представляет пример, в котором множество областей содержат соответствующие наборы из одного или более субблоков.
[0145] Для смещения, контекст может быть вычислен согласно уравнению (2).
<mrow><mi>C</mi><mi>t</mi><mi>x</mi><mo>=</mo><mi>o</mi><mi>f</mi><mi>f</mi><mi>s</mi><mi>e</mi><mi>t</mi><mo stretchy="false">(</mo><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo stretchy="false">)</mo><mo>+</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>p</mi><mo>∈</mo><mi>S</mi></mrow></munder><mrow><mo stretchy="false">(</mo><mi>c</mi><mi>o</mi><mi>e</mi><msub><mi>f</mi><mi>p</mi></msub><mo>!</mo><mo>=</mo><mn>0</mn><mo stretchy="false">)</mo></mrow></mstyle></mrow>
(2)
Альтернативно, видеокодер может вычислять контекст согласно функции с использованием Ctx в качестве ввода, например, Ctx=(Ctx+1)>>1.
[0146] Один пример основанных на области смещений показывается на фиг. 11, при этом области R1 и R2 задаются на основе субблоков 4×4, и смещения отличаются для областей R1 и R2. Значения offset1 и offset2 смещения могут быть любыми целыми числами, например, offset1=0, offset2=3. В другом примере, другие разделения на области также являются возможными, и разделения более чем на две области также являются возможными.
[0147] Фиг. 12 является концептуальной схемой, которая иллюстрирует примерное встроенное разделение видеоблока на две или более областей на основе TU-размеров, которые коррелируются с существующими контекстными моделями. Поскольку существует несколько размеров TU в текущей HM (4×4, 8×8, 16×16 и 32×32), разделение больших блоков может выполняться для меньших TU-размеров с использованием встроенного стиля разделения, как проиллюстрировано на фиг. 12. Для встроенного разделения может быть совместно использован способ вычисления контекстов, и может быть совместно использована сама контекстная модель.
[0148] Например, для TU-размера 32×32, в области R1, представляющей TU 4×4, вычисление контекстов может использовать идентичный способ для вычисления контекстов, что и для фактической TU размера 4×4. Помимо этого, контекстная модель может быть совместно использована TU размера 4×4 и R1 TU размера 32×32, или смещение может применяться к контекстной модели для TU размера 4×4. Что касается R2, способ вычисления контекстов может быть совместно использован TU размера 8×8 и R2 TU размера 32×32. R3 представляет область TU 16×16, в то время как R4 представляет область TU 32×32. Потенциальное преимущество этого способа состоит в том, что идентичные единицы могут быть использованы для вычислений контекстов, и может учитываться дополнительная корреляция между встроенными областями и TU.
[0149] Альтернативно, с использованием встроенного разделения стиля, некоторые контекстные модели карты значимости могут быть совместно использованы для выделенных позиций всеми TU или некоторой группой TU. Например, контекстная модель, соответствующая DC-коэффициентам, может быть совместно использована всеми TU с размерами от 4×4 до 32×32. В качестве другого примера, контекстная модель, связанная с высокочастотными коэффициентами, может быть совместно использована всеми TU. В этих случаях, область R1, представляющая TU 4×4, в TU размера 32×32, может использовать идентичную контекстную модель для DC-коэффициентов и/или высокочастотных коэффициентов в качестве TU, имеющих любой из размеров в 4×4, 8×8, 16×16, 32×32 и т.п.
[0150] В качестве дополнительного примера, вместо совместного использования всеми TU, контекстная модель коэффициентов, описанных выше (например, DC- и/или высокочастотных коэффициентов), может быть совместно использована только поднабором или группой всех TU. Например, контекстная модель коэффициента может быть совместно использована только двумя размерами TU, к примеру, TU 4×4 и 8×8. В этом случае, область R1, представляющая TU 4×4, в TU размера 32×32 может использовать идентичную контекстную модель для DC-коэффициентов и/или высокочастотных коэффициентов в качестве TU, имеющих размер 4×4 и 8×8.
[0151] Таким образом, пример по фиг. 12 представляет пример, в котором видеокодер, к примеру, видеокодер 20 или видеодекодер 30, может быть сконфигурирован с возможностью определять область, в которой возникает коэффициент преобразования, из множества областей видеоблока, при этом каждая из областей соответствует соответствующему одному из множества размеров единиц преобразования (TU), при этом видеокодер определяет контекст посредством выбора контекста, который совместно используется областью и TU, имеющей размер, идентичный размеру области.
[0152] Фиг. 12 также представляет пример, в котором видеокодер, к примеру, видеокодер 20 или видеодекодер 30, может быть сконфигурирован с возможностью определять область, в которой возникает коэффициент преобразования, из множества областей видеоблока, при этом каждая из областей соответствует соответствующему одному из множества размеров единиц преобразования (TU), при этом для того, чтобы определять контекст, видеокодер выбирает совместно используемый контекст для выделенных позиций коэффициентов преобразования между двумя или более TU различных размеров, при этом область имеет размер, идентичный размеру одной из двух или более TU различных размеров. Совместно используемый контекст для выделенных позиций коэффициентов преобразования может содержать контекст для одного из DC-коэффициентов и высокочастотных коэффициентов, совместно используемых двумя или более TU различных размеров. Дополнительно или альтернативно, совместно используемый контекст для выделенных позиций коэффициентов преобразования может содержать совместно используемый контекст между первой TU, имеющей размер коэффициентов преобразования 4×4, и второй TU, имеющей размер коэффициентов преобразования 8×8.
[0153] Фиг. 13A и 13B являются концептуальными схемами, которые иллюстрируют примерные разделения видеоблока на две или более областей. Аналогично описанному выше относительно примеров, в которых области основаны на квадратных субблоках, например, 4×4, технологии этого раскрытия сущности также описывают способ классификации, чтобы разделять видеоблок, например, TU, на две или более областей на основе субблоков прямоугольной формы. Например, субблоки 2×8 и 8×2 могут быть использованы для видеоблока 8×8 в зависимости от сканирования коэффициентов, как показано на фиг. 13A и 13B. В этом примере, видеокодер применяет горизонтальное сканирование для коэффициентов в блоке, показанном на фиг. 13A, и вертикальное сканирование к блоку, показанному на фиг. 13B. В примерах, проиллюстрированных на фиг. 13A и 13B, один квадратный блок представляет всего один коэффициент, и размер всего видеоблока составляет 8×8.
[0154] Согласно технологиям этого раскрытия сущности, видеоблок может быть разделен на различные прямоугольные области, например, R1, R2, R3 и R4. Каждая из различных прямоугольных областей может иметь различное назначение контекста. Например, для некоторых областей, может быть использован фиксированный контекст. Эти области могут формироваться на основе прямоугольных субблоков (например, 2×8 или 8×2), описанных выше и показанных на фиг. 13A и 13B. Например, контекст может быть задан согласно позиции коэффициента в видеоблоке или согласно позиции прямоугольного субблока, который содержит этот коэффициент.
[0155] Альтернативно, контекстная модель может быть задана согласно соседним субблокам прямоугольной формы. Например, каждый коэффициент в идентичном прямоугольном субблоке может использовать один или несколько контекстов. Помимо этого, коэффициенты соседнего прямоугольного субблока также могут использовать один или несколько контекстов. Тем не менее, контексты одного прямоугольного субблока могут отличаться от предыдущих контекстов на основе прямоугольных субблоков. Также может быть использован гибридный тип контекстов, например, для некоторых областей контексты могут быть основаны на окружении, и для некоторых областей идентичного видеоблока они могут быть фиксированными или основанными на позиции. Преимущество подхода на основе позиции состоит в том, что необязательно вычислять контекст на основе коэффициентов, это может быть выполняться один раз для области. Кроме того, разделение может зависеть от позиций коэффициентов или позиции прямоугольного субблока, содержащего этот коэффициент.
[0156] Для коэффициента с координатами (X, Y), области могут быть заданы согласно позиции коэффициента. Например, если условие (X+Y>=пороговое значение) является истинным, то этот коэффициент может назначаться области R2; в противном случае, он может назначаться области R1. Аналогичным образом, это может выполняться на основе субблока прямоугольной формы, для субблока с координатами (X, Y), области могут быть заданы согласно позиции прямоугольного субблока. Например, если условие (X+Y>=пороговое значение) является истинным, то этот коэффициент может назначаться области R2, в противном случае, он может назначаться R1. Пороговое значение может задаваться фиксированно равным некоторому предварительно заданному значению, к примеру, целому числу (например, равному 0 или 1) или может зависеть от TU-размера.
[0157] Альтернативно, контекстная модель может отличаться для различных областей, но по-прежнему использовать идентичный способ для вычисления контекстов. Например, контекст может быть вычислен на основе окружения, но для других областей он использует смещение. Смещение может быть фиксированным, зависимым от размера видеоблока или зависимым от одного или более из следующего: позиция коэффициента в видеоблоке и/или прямоугольном субблоке, позиция прямоугольного субблока, содержащего текущий коэффициент в видеоблоке, или любая комбинация этих условий.
[0158] Для смещения, контекст может быть вычислен согласно уравнению (3).
<mrow><mi>C</mi><mi>t</mi><mi>x</mi><mo>=</mo><mi>o</mi><mi>f</mi><mi>f</mi><mi>s</mi><mi>e</mi><mi>t</mi><mo stretchy="false">(</mo><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo stretchy="false">)</mo><mo>+</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>p</mi><mo>∈</mo><mi>S</mi></mrow></munder><mrow><mo stretchy="false">(</mo><mi>c</mi><mi>o</mi><mi>e</mi><msub><mi>f</mi><mi>p</mi></msub><mo>!</mo><mo>=</mo><mn>0</mn><mo stretchy="false">)</mo></mrow></mstyle></mrow>
(3)
[0159] Альтернативно, контекст может быть вычислен согласно функции с использованием Ctx в качестве ввода, например, Ctx=(Ctx+1)>>1.
[0160] Фиг. 14A и 14B являются концептуальными схемами, которые иллюстрируют примерное назначение смещений контекста для каждой области видеоблока. В этих примерах, области R1 и R2 задаются на основе прямоугольных субблоков и направления сканирования, и смещения отличаются для областей R1 и R2. Значения смещения offset1 и offset2 могут быть любыми целыми числами, например, offset1=0, offset2=3. Другие разделения на области также являются возможными. Например, число областей может превышать два. Следует отметить, что прямоугольные субблоки 2×8 и 8×2, в зависимости от направлений сканирования коэффициентов, использованы в этом раскрытии сущности в качестве примера. Аналогичные способы могут быть использованы для других субблоков прямоугольной формы с размером M×N без ограничения.
[0161] В общем, это раскрытие сущности описывает диагональное разделение видеоблоков, разделение видеоблоков на основе квадратных, например, 4×4, субблоков и разделение видеоблоков на основе прямоугольных, например, 2×8 и 8×2, субблоков. В других примерах, другие типы разделения являются возможными, и разделение может быть гибким на основе различных форм, например, прямоугольной, квадратной, треугольной и т.п., с различными размерами. Это раскрытие сущности также описывает разделение видеоблоков на любое число областей. Это раскрытие сущности дополнительно описывает группировку коэффициентов в области на основе квадратного субблока, прямоугольных субблоков или на основе других группировок, к примеру, диагональных разделений видеоблока. Пороговые значения и смещения, описанные выше, также предоставляются в качестве примера, другие значения или соседние зависимости могут быть использованы.
[0162] Аналогичные технологии, как описано в этом раскрытии сущности, могут быть использованы для неквадратных единиц преобразования или других форм единиц. Описанные технологии могут применяться к кодированию на основе карты значимости и к другому синтаксическому кодированию и кодированию на основе элементов выборки коэффициентов преобразования без ограничения. Помимо этого, это раскрытие сущности типично упоминает видеоблоки как TU-блоки, но технологии могут применяться к любой из TU, PU, CU, LCU или других групп блоков.
[0163] Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока. Текущий блок может содержать текущую CU или часть текущей CU. Хотя описывается относительно видеокодера 20 (фиг. 1 и 2), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 15.
[0164] В этом примере, видеокодер 20 первоначально прогнозирует текущий блок (150). Например, видеокодер 20 может вычислять одну или более единиц прогнозирования (PU) для текущего блока. Видеокодер 20 затем может вычислять остаточный блок для текущего блока, например, чтобы формировать единицу преобразования (TU) (152). Чтобы вычислять остаточный блок, видеокодер 20 может вычислять разность (т.е. попиксельные разности) между исходным некодированным блоком и прогнозированным блоком для текущего блока. Видеокодер 20 затем может преобразовывать и квантовать коэффициенты остаточного блока (154). Затем, видеокодер 20 может сканировать квантованные коэффициенты преобразования остаточного блока (156).
[0165] В ходе сканирования, видеокодер 20 может определять область, в которой возникает текущий коэффициент, и за счет этого видеокодер 20 может определять области, в которых возникают различные коэффициенты (158). В соответствии с технологиями этого раскрытия сущности, видеокодер 20 может определять области, в которых возникают коэффициенты, на основе, например, позиций коэффициентов или позиций субблоков, в которых возникают коэффициенты. Видеокодер 20 может определять области с использованием любой из технологий, описанных относительно фиг. 9-14, или других аналогичных технологий. Например, как показано на фиг. 9A, видеокодер 20 может быть сконфигурирован с возможностью определять то, возникает коэффициент в первой области, включающей в себя один или более субблоков, или во второй области, включающей в себя субблоки за пределами первой области.
[0166] Видеокодер 20 дополнительно может определять контексты для энтропийного кодирования коэффициентов основываясь на областях (160). Иными словами, видеокодер 20 может определять, для каждого коэффициента, контекст для кодирования коэффициента основываясь на области, в которой возникает коэффициент. Например, как пояснено выше, видеокодер 20 может определять контекст на основе позиции коэффициента в блоке, позиции субблока, включающего в себя коэффициент, в блоке, смещения, которое должно применяться к вычисленному контексту, и т.п., основываясь на области, в которой возникает коэффициент.
[0167] Аналогично, видеокодер 20 может энтропийно кодировать коэффициенты с использованием определенных контекстов (162). В частности, видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса, представляющих коэффициенты, с использованием контекста. Например, видеокодер 20 может энтропийно кодировать одно или более из информации значимости для коэффициентов, информации уровня для значимых коэффициентов и/или информации знака для значимых коэффициентов. Информация значимости может содержать данные significant_coeff_flag. Информация уровня может содержать coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag и coeff_abs_level_remaining. Информация знака может содержать coeff_sign_flag. Видеокодер 20 затем может выводить энтропийно кодированные данные для коэффициентов (164).
[0168] Таким образом, способ по фиг. 15 представляет пример способа, включающего в себя определение контекста для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийное кодирование коэффициента преобразования с использованием определенного контекста. Кроме того, область может содержать одну из первой области, содержащей один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, и второй области, содержащей коэффициенты преобразования видеоблока за пределами первой области.
[0169] Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных. Текущий блок может содержать текущую CU или часть текущей CU. Хотя описывается относительно видеокодера 30 (фиг. 1 и 3), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 16.
[0170] Видеодекодер 30 может прогнозировать текущий блок (200), например, с использованием режима внутреннего или внешнего прогнозирования для того, чтобы вычислять прогнозированный блок для текущего блока. Видеодекодер 30 также может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (202).
[0171] В соответствии с технологиями этого раскрытия сущности, видеодекодер 30 может определять области, в которых возникают коэффициенты (204), например, в ходе процесса обратного сканирования и энтропийного декодирования. Иными словами, видеодекодер 30 может определять позицию следующего коэффициента преобразования на основе позиции ранее декодированного коэффициента преобразования и следующего значимого коэффициента преобразования в порядке сканирования. Видеодекодер 30 дополнительно может определять область блока, в которой возникает эта позиция. Видеодекодер 30 может аналогично определять области для каждого из коэффициентов аналогичным образом.
[0172] Кроме того, видеодекодер 30 может определять области, в которых возникают коэффициенты, на основе, например, позиций коэффициентов или позиций субблоков, в которых возникают коэффициенты. Видеодекодер 30 может определять области с использованием любой из технологий, описанных относительно фиг. 9-14, или других аналогичных технологий. Например, как показано на фиг. 9A, видеодекодер 30 может быть сконфигурирован с возможностью определять то, возникает коэффициент в первой области, включающей в себя один или более субблоков, или во второй области, включающей в себя субблоки за пределами первой области.
[0173] Кроме того, видеодекодер 30 может определять контексты для декодирования коэффициентов на основе определенных областей (206). Иными словами, видеодекодер 30 может определять, для каждого коэффициента, контекст для декодирования коэффициента основываясь на области, в которой возникает коэффициент. Например, как пояснено выше, видеодекодер 30 может определять контекст на основе позиции коэффициента в блоке, позиции субблока, включающего в себя коэффициент, в блоке, смещения, которое должно применяться к вычисленному контексту, и т.п., основываясь на области, в которой возникает коэффициент.
[0174] Видеодекодер 30 может энтропийно декодировать энтропийно кодированные данные, чтобы воспроизводить коэффициенты блока с использованием определенных контекстов (208). В частности, видеодекодер 30 может энтропийно декодировать один или более элементов синтаксиса, представляющих коэффициенты, с использованием контекста. Например, видеодекодер 30 может энтропийно декодировать одно или более из информации значимости для коэффициентов, информации уровня для значимых коэффициентов и/или информации знака для значимых коэффициентов. Информация значимости может содержать данные significant_coeff_flag. Информация уровня может содержать coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag и coeff_abs_level_remaining. Информация знака может содержать coeff_sign_flag. Видеодекодер 30 затем может повторно формировать блок (например, TU), который включает в себя декодированные коэффициенты преобразования в соответствующих позициях (210). Иными словами, как пояснено выше, видеодекодер 30 может обратно сканировать воспроизведенные коэффициенты, чтобы создавать блок квантованных коэффициентов преобразования.
[0175] Видеодекодер 30 затем может обратно квантовать и обратно преобразовывать коэффициенты, чтобы формировать остаточный блок (212). Видеодекодер 30 может, в конечном счете, декодировать текущий блок посредством комбинирования прогнозированного блока и остаточного блока (214). Иными словами, видеодекодер 30 может математически комбинировать пиксельные значения прогнозированного блока с совместно размещенными пиксельными значениями остаточного блока, чтобы декодировать и воспроизводить исходный блок.
[0176] Таким образом, способ по фиг. 16 представляет пример способа, включающего в себя определение контекста для кодирования коэффициента преобразования видеоблока основываясь на области видеоблока, в которой возникает коэффициент преобразования, и энтропийное кодирование коэффициента преобразования с использованием определенного контекста. Кроме того, область может содержать одну из первой области, содержащей один или более верхних левых субблоков 4×4 коэффициентов преобразования видеоблока, и второй области, содержащей коэффициенты преобразования видеоблока за пределами первой области.
[0177] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и выполнены посредством аппаратного процессора. Считываемые компьютером носители могут включать в себя считываемые компьютером носители данных, которые соответствуют материальному носителю, такие как носители данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0178] В качестве примера, а не ограничения, эти считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.
[0179] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0180] Технологии этого раскрытия сущности могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0181] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.