Вывод позиции в порядке сканирования последнего значимого коэффициента преобразования при кодировании видеосигнала

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в получении индикатора последнего значимого коэффициента (LSC) на основе сканирования для использования при декодировании карты значимости для блока коэффициентов преобразования. Способ декодирования видеоданных, в котором получают индикатор LSC на основе сканирования из индикатора LSC на основе блоков, причем индикатор LSC на основе блоков указывает координаты последнего значимого коэффициента блока коэффициентов преобразования согласно порядку сканирования подблоков, причем блок коэффициентов преобразования разделен на множество подблоков, причем индикатор LSC на основе сканирования указывает порядковую позицию LSC согласно порядку сканирования подблоков, причем при получении индикатора LSC на основе сканирования: определяют координаты х и y верхнего левого коэффициента преобразования подблока из множества подблоков, который содержит последний значимый коэффициент; определяют значение первой переменной посредством суммирования координаты х и y верхнего левого коэффициента преобразования подблока; и декодируют на основании индикатора LSC на основе сканирования карту значимости для блока. 3 н. и 9 з.п. ф-лы, 13 ил.

Реферат

[0001] Данная заявка испрашивает приоритет предварительной патентной заявки США № 61/502269, поданной 28 июня 2011 г., предварительной патентной заявки США № 61/503529, поданной 30 июня 2011 г., предварительной патентной заявки США № 61/550775, поданной 24 октября 2011 г., и предварительной патентной заявки США № 61/550784, поданной 24 октября 2011 г., содержание которых в полном объеме, таким образом, включено в настоящее описание изобретения посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ

[0002] Это раскрытие относится к методам кодирования и декодирования видеоданных. В частности, это раскрытие относится к сигнализации позиций значимых коэффициентов преобразования, которые представляют информацию в видеоданных.

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

[0003] Возможности обработки цифрового видеосигнала могут быть внедрены в разнообразные устройства, включая цифровые телевизоры, системы прямого цифрового вещания, беспроводные широковещательные системы, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференцсвязи и пр. Устройства обработки цифрового видеосигнала реализуют методы сжатия видеосигнала, например, описанные в стандартах, заданных в MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), и расширениях таких стандартов, для более эффективной передачи и приема информации цифрового видеосигнала.

[0004] Методы сжатия видеосигнала осуществляют пространственное прогнозирование и/или временное прогнозирование для снижения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видеосигнала на основе блоков, кадр или срез видео может делиться на блоки. Каждый блок может быть дополнительно разделен. Блоки во внутренне кодированном (I) кадре или срезе кодируются с использованием пространственного прогнозирования относительно соседних блоков. Блоки во внешне кодированном (P или B) кадре или срезе могут использовать пространственное прогнозирование относительно соседних блоков в одном и том же кадре или срезе или временное прогнозирование относительно других опорных кадров.

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

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

[0006] В одном примере это раскрытие описывает способ декодирования видеоданных. Способ содержит преобразование индикатора LSC на основе блоков в индикатор LSC на основе сканирования. Индикатор LSC на основе блоков указывает координаты последнего значимого коэффициента блока коэффициентов преобразования согласно порядку сканирования. Индикатор LSC на основе сканирования указывает порядковую позицию LSC согласно порядку сканирования. Способ также содержит декодирование на основании индикатора LSC на основе сканирования карты значимости для блока.

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

[0008] В другом примере это раскрытие описывает устройство декодирования видеосигнала, содержащее средство для преобразования индикатора LSC на основе блоков в индикатор LSC на основе сканирования. Индикатор LSC на основе блоков указывает координаты последнего значимого коэффициента блока коэффициентов преобразования согласно порядку сканирования. Индикатор LSC на основе сканирования указывает порядковую позицию LSC согласно порядку сканирования. Устройство декодирования видеосигнала также содержит средство для декодирования на основании индикатора LSC на основе сканирования карты значимости для блока.

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

[0010] Детали одного или более аспектов раскрытия представлены в прилагаемых чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества методов, описанных в этом раскрытии, будут очевидны из описания и чертежей, а также из формулы изобретения.

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

[0011] Фиг. 1 - блок-схема, которая иллюстрирует пример системы кодирования видеосигнала.

[0012] Фиг. 2 - принципиальная схема, которая иллюстрирует пример блока коэффициентов преобразования.

[0013] Фиг. 3 - принципиальная схема, которая иллюстрирует примеры порядков сканирования.

[0014] Фиг. 4 - принципиальная схема, которая иллюстрирует двухмерное представление примера карты значимости для блока коэффициентов преобразования, показанного на фиг. 2.

[0015] Фиг. 5 - блок-схема, которая иллюстрирует пример конфигурации видеокодера.

[0016] фиг. 6 - блок-схема, которая иллюстрирует пример конфигурации видеодекодера.

[0017] Фиг. 7 - блок-схема алгоритма, которая иллюстрирует пример операции, осуществляемой видеокодером.

[0018] Фиг. 8 - блок-схема алгоритма, которая иллюстрирует пример операции для декодирования блока коэффициентов преобразования.

[0019] Фиг. 9 - блок-схема алгоритма, которая иллюстрирует пример неитерационной операции для преобразования индикатора последнего значимого коэффициента (LSC) на основе блоков в индикатор LSC на основе сканирования.

[0020] Фиг. 10 - блок-схема алгоритма, которая иллюстрирует другой пример неитерационной операции для преобразования индикатора LSC на основе блоков в индикатор LSC на основе сканирования.

[0021] Фиг. 11 - блок-схема алгоритма, которая иллюстрирует пример операции для преобразования индикатора LSC на основе блоков в индикатор LSC на основе сканирования, в которой осуществляется обращение к структуре данных карты.

[0022] Фиг. 12 - блок-схема алгоритма, которая иллюстрирует пример итерационной операции для преобразования индикатора LSC на основе блоков в индикатор LSC на основе сканирования.

[0023] Фиг. 13 - принципиальная схема блока коэффициентов преобразования, демонстрирующая последний значимый коэффициент преобразования.

ПОДРОБНОЕ ОПИСАНИЕ

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

[0025] Как описано ниже, видеокодер может генерировать блоки коэффициентов преобразования. Каждый из блоков коэффициентов преобразования может представлять собой двухмерный массив коэффициентов преобразования. После того как видеокодер генерирует блок коэффициентов преобразования, видеокодер может идентифицировать последний значимый коэффициент (LSC) блока коэффициентов преобразования согласно порядку сканирования. Другими словами, когда коэффициенты преобразования блока коэффициентов преобразования упорядочены согласно порядку сканирования, LSC блока коэффициентов преобразования является последним ненулевым коэффициентом преобразования. Порядок сканирования может начинаться с коэффициента преобразования DC (т.е. верхнего левого коэффициента преобразования) блока коэффициентов преобразования.

[0026] Видеокодер может выводить индикатор LSC на основе сканирования, который указывает порядковую позицию LSC согласно порядку сканирования. Другими словами, видеокодер может выводить индикатор LSC на основе сканирования, который указывает, что LSC является n-м коэффициентом преобразования, когда коэффициенты преобразования упорядочены согласно порядку сканирования.

[0027] В некоторых традиционных видеокодерах видеокодер может осуществлять несколько проходов кодирования на блоке коэффициентов преобразования. При выполнении каждого из проходов кодирования видеокодер может обрабатывать коэффициенты преобразования блока коэффициентов преобразования согласно порядку сканирования. При выполнении каждого из проходов кодирования видеокодер кодирует информацию о коэффициентах преобразования.

[0028] При выполнении одного из проходов кодирования видеокодер генерирует карту значимости. Карта значимости включает в себя несколько флагов значимости, которые указывают, являются ли коэффициенты преобразования в блоке коэффициентов преобразования значимыми (т.е. ненулевыми). Для генерации карты значимости видеокодер может обрабатывать каждый из коэффициентов преобразования согласно порядку сканирования. Когда видеокодер обрабатывает коэффициент преобразования, видеокодер может определять, встречается ли порядковая позиция коэффициента преобразования до порядковой позиции LSC согласно порядку сканирования. Если да, видеокодер может генерировать флаг значимости для коэффициента преобразования. Флаг значимости может иметь значение “1”, если значение коэффициента преобразования отлично от нуля. Флаг значимости может иметь значение “0”, если значение коэффициента преобразования равно нулю. Если же порядковая позиция коэффициента преобразования не встречается до порядковой позиции LSC согласно порядку сканирования, видеокодер не генерирует флаг значимости для коэффициента преобразования.

[0029] Видеодекодер может принимать индикатор LSC на основе сканирования и карту значимости блока коэффициентов преобразования. Затем видеодекодер может определять на основании индикатора LSC на основе сканирования, включает ли в себя карта значимости флаги значимости для конкретных коэффициентов преобразования блока коэффициентов преобразования. Если видеокодер не генерирует флаг значимости для коэффициента преобразования, видеодекодер может придти к выводу, что коэффициент преобразования не является значимым.

[0030] В ряде случаев видеокодер может генерировать индикатор LSC на основе блоков, который указывает координаты в блоке коэффициентов преобразования LSC. Затем видеокодер может кодировать методом CABAC индикатор LSC на основе блоков. Вследствие статистических соотношений между координатами x и y может потребоваться меньше битов для указания позиции LSC с использованием индикатора LSC на основе блоков, чем для указания позиции LSC в отношении порядковой позиции LSC.

[0031] Кроме того, в ряде случаев может потребоваться меньше битов для представления карты значимости, когда видеокодер использует обратный порядок сканирования для генерации карты значимости, чем когда видеокодер использует порядок сканирования для генерации карты значимости. Если же видеокодер генерирует индикатор LSC на основе блоков и если видеокодер использует обратный порядок сканирования для генерации карты значимости, видеодекодер может быть неспособен определять на основании индикатора LSC на основе блоков, встречается ли порядковая позиция коэффициента преобразования до порядковой позиции LSC блока коэффициентов преобразования. Следовательно, видеодекодер может быть неспособен определять на основании индикатора LSC на основе блоков, включает ли в себя карта значимости флаги значимости для конкретных коэффициентов преобразования.

[0032] Для решения этой проблемы видеодекодер может в соответствии с методами этого раскрытия осуществлять операцию преобразования, которая преобразует индикатор LSC на основе блоков в индикатор LSC на основе сканирования. Индикатор LSC на основе сканирования может указывать порядковую позицию LSC согласно порядку сканирования. Затем видеодекодер может декодировать на основании индикатора LSC на основе сканирования карту значимости для блока.

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

[0034] На фиг. 1 показана блок-схема, которая иллюстрирует пример системы 10 кодирования видеосигнала, которая может использовать методы, описанные в этом раскрытии. В этом раскрытии термин “кодирование видеосигнала” может означать кодирование видеосигнала и декодирование видеосигнала. Как показано на фиг. 1, система 10 кодирования видеосигнала включает в себя исходное устройство 12 и устройство 14 назначения. Исходное устройство 12 генерирует кодированные видеоданные. Устройство 14 назначения может декодировать кодированные видеоданные в более позднее время. Исходное устройство 12 и устройство 14 назначения могут содержать любое из разнообразных устройств, включая настольные компьютеры, компьютеры-ноутбуки (т.е. портативные компьютеры), планшетные компьютеры, телевизионные приставки, мобильные телефоны, телефонные трубки, “умные” панели, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, консоли для видеоигр, устройства потоковой передачи видеосигнала или типы вычислительных устройств, способные кодировать и декодировать видеоданные.

[0035] Устройство 14 назначения может принимать кодированные видеоданные по каналу 16. Канал 16 может содержать среду или устройство, способное переносить кодированные видеоданные от исходного устройства 12 на устройство 14 назначения. В одном примере канал 16 может содержать среду связи, которая позволяет исходному устройству 12 передавать кодированные видеоданные непосредственно на устройство 14 назначения в реальном времени. Исходное устройство 12 или другое устройство может модулировать кодированные видеоданные согласно стандарту связи, например протоколу беспроводной связи. Среда связи может содержать любую среду беспроводной или проводной связи, например радиочастотный (РЧ) спектр или одну или более физических линий передачи. Канал 16 может составлять часть сети с коммутацией пакетов, например локальной сети, широкомасштабной сети или глобальной сети, например интернета. Канал 16 может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения передачи кодированных видеоданных от исходного устройства 12 на устройство 14 назначения.

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

[0037] Кроме того, в некоторых примерах исходное устройство 12 может выводить кодированные видеоданные в систему 34 хранения. Аналогично устройство 14 назначения может обращаться к кодированным видеоданным, хранящимся в системе 34 хранения. В различных примерах система 34 хранения может включать в себя различные распределенные или локально доступные носители данных. Примеры типов носителей данных включают в себя, но без ограничения, жесткие диски, диски Blu-ray, DVD, CD-ROM, твердотельные блоки памяти, энергозависимую или энергонезависимую память или другие цифровые носители данных, пригодные для хранения кодированных видеоданных.

[0038] В некоторых примерах система 34 хранения может содержать файловый сервер или другое промежуточное запоминающее устройство, где может храниться кодированный видеосигнал, генерируемый исходным устройством 12. Устройство 14 назначения может обращаться к сохраненным видеоданным из системы 34 хранения посредством потоковой передачи или загрузки. Файловый сервер может быть сервером любого типа, способным сохранять кодированные видеоданные и передавать эти кодированные видеоданные на устройство 14 назначения. Примеры файловых серверов включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, устройства хранения данных, подключаемые к сети (NAS), или локальный дисковод. Устройство 14 назначения может обращаться к кодированным видеоданным через любое стандартное соединение для передачи данных, включая интернет-соединение. Это может быть беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.), или их комбинация, пригодная для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных из системы 34 хранения может представлять собой потоковую передачу, загрузочную передачу или их комбинацию.

[0039] В примере, показанном на фиг. 1, исходное устройство 12 включает в себя источник 18 видеосигнала, видеокодер 20 и интерфейс 22 вывода. В некоторых примерах интерфейс 22 вывода также может включать в себя модулятор/демодулятор (модем) и/или передатчик. Источник 18 видеосигнала подает видеоданные на видеокодер 20. В различных примерах источник 18 видеосигнала может содержать различные типы устройств и/или систем для обеспечения видеоданных. Например, источник 18 видеосигнала может содержать устройство захвата видео, например видеокамеру. В другом примере источник 18 видеосигнала может содержать архив видеозаписей, который содержит ранее захваченное видео. В еще одном примере источник 18 видеосигнала может содержать интерфейс подачи видеосигнала, который принимает видеосигнал от поставщика видеоконтента. В еще одном примере источник 18 видеосигнала может содержать систему компьютерной графики для генерации данных компьютерной графики.

[0040] Как подробно описано ниже, видеокодер 20 может кодировать видеоданные, обеспеченные источником 18 видеосигнала. В некоторых примерах исходное устройство 12 может передавать кодированные видеоданные непосредственно на устройство 14 назначения через интерфейс 22 вывода. Кроме того, в некоторых примерах система 34 хранения может сохранять кодированные видеоданные для последующего доступа со стороны устройства 14 назначения или других устройств.

[0041] Это раскрытие может, в целом, относиться к видеокодеру 20, “сигнализирующему” определенную информацию на другое устройство, например видеодекодер 30. Однако следует понимать, что видеокодер 20 может сигнализировать информацию, связывая определенные элементы синтаксиса с различными кодированными участками видеоданных. Таким образом, видеокодер 20 может “сигнализировать” данные, сохраняя определенные элементы синтаксиса в заголовках различных кодированных участков видеоданных. В ряде случаев такие элементы синтаксиса можно кодировать и сохранять (например, сохранять в системе 34 хранения) до приема и декодирования видеодекодером 30. Таким образом, термин “сигнализация” может, в целом, относиться к передаче синтаксиса или других данных, используемых для декодирования сжатых видеоданных. Такая передача может происходить в реальном или почти реальном времени. Альтернативно такая передача может происходить в течение промежутка времени, например может происходить при сохранении элементов синтаксиса на носитель во время кодирования, которые затем могут извлекаться устройством декодирования в любой момент после сохранения на этот носитель.

[0042] В примере, показанном на фиг. 1, устройство 14 назначения включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых примерах входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 назначения принимает кодированные видеоданные из канала 16 и/или системы 34 хранения. Видеодекодер 30 декодирует кодированные видеоданные, принятые входным интерфейсом 28. Устройство 14 назначения может визуализировать декодированные видеоданные для отображения на устройстве 32 отображения.

[0043] Устройство 32 отображения может быть объединено с устройством 14 назначения или может быть внешним по отношению к нему. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также может быть выполнено с возможностью сопряжения с внешним устройством отображения. В различных примерах устройство 32 отображения может содержать различные типы устройств отображения. Например, устройство 32 отображения может содержать жидкокристаллический дисплей (LCD), плазменный дисплей, органо-светодиодный (OLED) дисплей или другой тип устройства отображения.

[0044] Хотя это не показано на фиг. 1, в некоторых аспектах видеокодер 20 и видеодекодер 30 может быть объединен с соответствующим аудиокодером и декодером и может включать в себя необходимые блоки мультиплексирования/демультиплексирования или другое оборудование и программное обеспечение, для осуществления кодирования аудио- и видеосигналов в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах блоки мультиплексирования/демультиплексирования могут отвечать протоколу мультиплексора ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).

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

[0046] Видеокодер 20 и видеодекодер 30 могут действовать согласно стандарту сжатия видеосигнала, например стандарту High Efficiency Video Coding (HEVC), в настоящее время находящемуся в разработке, и могут отвечать HEVC Test Model (HM). Альтернативно видеокодер 20 и видеодекодер 30 могут действовать согласно другим собственным или промышленным стандартам, например стандарту ITU-T H.264, альтернативно именуемому MPEG 4, Part 10, Advanced Video Coding (AVC) или расширениям таких стандартов. Примеры расширений стандартов включают в себя расширения стандарта H.264/AVC scalable video coding (SVC) и Multiview Video Coding (MVC). Методы этого раскрытия не ограничиваются никаким конкретным стандартом кодирования. Другие примеры стандартов сжатия видеосигнала включают в себя MPEG-2 и ITU-T H.263.

[0047] Как кратко упомянуто выше, видеокодер 20 кодирует видеоданные. Видеоданные могут содержать одну или более последовательностей изображений. Каждое из изображений является неподвижным изображением. В ряде случаев изображение может именоваться “кадром”. Когда видеокодер 20 кодирует видеоданные, видеокодер 20 может генерировать битовый поток. Битовый поток включает в себя последовательность битов, которые образуют представление кодированных изображений и соответствующих данных. Кодированное изображение является кодированным представлением изображения.

[0048] Для генерации битового потока видеокодер 20 может осуществлять операцию кодирования для последовательностей изображений в видеоданных. Когда видеокодер 20 осуществляет операцию кодирования для последовательности изображений, видеокодер 20 может генерировать несколько кодированных изображений и соответствующие данные. Кроме того, видеокодер 20 может генерировать набор параметров последовательности, который содержит параметры, применимые к нулю или более последовательностям изображений. Кроме того, видеокодер 20 может генерировать наборы параметров изображения (PPS), которые содержат параметры, применимые к нулю или более изображений в целом. В некоторых примерах видеокодер 20 может генерировать наборы параметров адаптации (APS). APS может сохранять параметры, применимые к нулю или более изображений в целом.

[0049] Для генерации кодированного изображения видеокодер 20 может разбивать изображение на один или более видеоблоков равного размера. Каждый из видеоблоков может быть связан с древовидным блоком. Видеоблок может быть двухмерным (2D) блоком видеоданных (например, выборок). В ряде случаев древовидный блок также может именоваться наибольшей единицей кодирования (LCU). Древовидные блоки HEVC могут быть в широком смысле аналогичны макроблокам предыдущих стандартов, например H.264/AVC. Однако древовидный блок не обязан ограничиваться конкретным размером и может включать в себя одну или более единиц кодирования (CU).

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

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

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

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

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

[0055] После того как видеокодер 20 генерирует данные прогнозирования для CU, видеокодер 20 может генерировать остаточные данные для CU. Остаточные данные для CU могут указывать различия между выборками в прогнозируемых видеоблоках для PU CU и выборками в исходном видеоблоке CU.

[0056] Каждая неразбитая CU древовидного блока может иметь одну или более единиц преобразования (TU). Каждая TU CU может быть связана с отдельным участком остаточных данных CU. Видеокодер 20 может осуществлять операцию преобразования для каждой TU CU. Когда видеокодер 20 осуществляет операцию преобразования для TU, видеокодер 20 может генерировать блок коэффициентов преобразования, по меньшей мере частично, посредством применения преобразования к остаточным данным, связанным с TU. Блок коэффициентов преобразования может представлять собой 2D матрицу коэффициентов преобразования. На Фиг. 2 показана принципиальная схема, которая иллюстрирует пример блока коэффициентов преобразования.

[0057] Видеокодер 20 может квантовать коэффициенты преобразования в блоке коэффициентов преобразования. Квантование, в целом, означает процесс, в котором коэффициенты преобразования в блоке коэффициентов преобразования квантуются для максимального сокращения объема данных, используемых для представления коэффициентов преобразования, обеспечивая дополнительное сжатие. Квантование может уменьшать битовую глубину, связанную с некоторыми или всеми коэффициентами преобразования. Например, n-битовое значение можно округлять в меньшую сторону до m-битового значения при выполнении квантования, где n больше m.

[0058] После квантования блока коэффициентов преобразования видеокодер 20 может генерировать набор элементов синтаксиса, связанных с блоком коэффициентов преобразования. Затем видеокодер 20 может осуществлять операции контекстно-адаптивного двоичного арифметического кодирования (CABAC) на некоторых из этих элементов синтаксиса. В других примерах видеокодер 20 может осуществлять другие операции энтропийного кодирования на элементах синтаксиса. Например, видеокодер 20 может осуществлять операции контекстно-адаптивного кодирования с переменной длиной слова (CAVLC), операции контекстно-адаптивного двоичного арифметического кодирования на синтаксической основе (SBAC), операции энтропийного кодирования разделения интервала вероятности (PIPE) или операцию энтропийного кодирования другого типа на элементах синтаксиса, связанных с блоком коэффициентов преобразования. Видеокодер 20 также может осуществлять операции CABAC на других элементах синтаксиса, связанных с видеоданными.

[0059] После того как видеокодер 20 генерирует элементы синтаксиса, связанные с блоком коэффициентов преобразования, и осуществляет операции CABAC, видеокодер 20 может включать результирующие данные в битовый поток для видеоданных. Битовый поток может включать в себя последовательность битов, которая образует представление кодированных изображений и соответствующих данных.

[0060] Битовый поток может содержать последовательность единиц уровня сетевых абстракций (NAL). Каждая из единиц NAL может быть синтаксической структурой, содержащей указание типа данных в единице NAL и байты, содержащие данные. Например, единица NAL может содержать данные, представляющие PPS, APS, кодированный срез, вспомогательную информацию улучшения, разделитель единиц доступа, данные заполнения или другой тип данных. Данные единицы NAL могут иметь вид полезной нагрузки первичной байтовой последовательности (RBSP), перемешанной с битами предотвращения эмуляции. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которая инкапсулирована в единице NAL.

[0061] Когда видеокодер 20 осуществляет операцию энтропийного кодирования на блоке коэффициентов преобразования, видеокодер 20 может определять, существует ли в блоке коэффициентов преобразования, по меньшей мере, один значимый (т.е. ненулевой) коэффициент преобразования. Если в блоке коэффициентов преобразования существует, по меньшей мере, один значимый коэффициент преобразования, видеокодер 20 может обновлять флаг кодированного блока (CBF) для указания того, что блок коэффициентов преобразования включает в себя, по меньшей мере, один значимый коэффициент преобразования. Если в блоке коэффициентов преобразования нет значимых коэффициентов преобразования, видеокодер 20 может обновлять CBF для указания того, что блок коэффициентов преобразования не включает в себя ни одного значимого коэффициента преобразования.

[0062] Если в блоке коэффициентов преобразования существует, по меньшей мере, один значимый коэффициент преобразования, видеокодер 20 может идентифицировать последний значимый коэффициент (LSC) блока коэффициентов преобразования согласно порядку сканирования. LSC блока коэффициентов преобразования является ненулевым коэффициентом преобразования, который встречается последним, когда коэффициенты преобразования блока коэффициентов преобразования упорядочены согласно порядку сканирования. Порядок сканирования может быть прямым порядком сканирования. Другими словами, порядок сканирования может начинаться с коэффициента преобразования DC блока коэффициентов преобразования. Коэффициент преобразования DC встречается в верхнем