ПОДПОТОКИ ДЛЯ ВОЛНОВОЙ ПАРАЛЛЕЛЬНОЙ ОБРАБОТКИ В ВИДЕОКОДИРОВАНИИ
SUB-STREAMS FOR WAVE PARALLEL PROCESSING IN VIDEO CODING

[0001] Данная заявка испрашивает приоритет предварительной Заявки на патент США № 61/588,096, поданной 18 января 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] В целом это раскрытие описывает методики для видеокодирования с использованием мозаичных элементов и волновой параллельной обработки (WPP). Более определенно, видеокодер может сигнализировать, используется ли WPP для кодирования изображения последовательности видеоизображения. Если WPP используется для кодирования изображения, видеокодер формирует множество подпотоков. Каждый из подпотоков может включать в себя последовательную серию битов, которая представляет одну закодированную строку древовидных блоков кодирования (CTB) в слайсе изображения. Видеокодер может формировать элемент уровня сетевой абстракции (NAL) закодированного слайса, который включает в себя множество подпотоков. Видеодекодер может принять битовый поток, который включает в себя элемент NAL закодированного слайса. Кроме того, видеодекодер может определить на основе синтаксического элемента в битовом потоке, что слайс закодирован с использованием WPP, и может декодировать слайс с использованием WPP.
[0007] В одном аспекте это раскрытие описывает способ кодирования видеоданных. Способ содержит этап, на котором сигнализируют, что WPP используется для кодирования изображения последовательности видеоизображения. Способ также содержит этап, на котором выполняют WPP для формирования множества подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну закодированную строку блоков CTB в слайсе изображения. Способ также содержит этап, на котором формируют элемент уровня сетевой абстракции (NAL) закодированного слайса, который включает в себя множество подпотоков.
[0008] В другом аспекте это раскрытие описывает вычислительное устройство, которое содержит один или несколько процессоров, выполненных с возможностью сигнализировать, что WPP используется для кодирования изображения последовательности видеоизображений. Один или несколько процессоров также выполнены с возможностью выполнять WPP для формирования множества подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну закодированную строку блоков CTB в слайсе изображения. Один или несколько процессоров также выполнены с возможностью формировать элемент NAL закодированного слайса, который включает в себя множество подпотоков.
[0009] В другом аспекте это раскрытие описывает вычислительное устройство, которое содержит средство для сигнализирования, что WPP используется для кодирования изображения. Вычислительное устройство также содержит средство для выполнения WPP для формирования множества подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну закодированную строку блоков CTB в слайсе изображения. Кроме того, способ содержит средство для формирования элемента NAL закодированного слайса, который включает в себя множество подпотоков.
[0010] В другом аспекте это раскрытие описывает компьютерно-читаемый запоминающий носитель, хранящий команды, которые при их исполнении одним или несколькими процессорами вычислительного устройства заставляют вычислительное устройство сигнализировать, что WPP используется для кодирования изображения. Команды также заставляют вычислительное устройство выполнять WPP для формирования множества подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну закодированную строку блоков CTB в слайсе изображения. Кроме того, команды заставляют вычислительное устройство формировать элемент NAL закодированного слайса, который включает в себя множество подпотоков.
[0011] В другом аспекте это раскрытие описывает способ декодирования видеоданных. Способ содержит этап, на котором принимают битовый поток, который включает в себя элемент NAL закодированного слайса, причем элемент NAL закодированного слайса включает в себя множество подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну строку древовидных блоков кодирования (CTB) в слайсе изображения. Способ также содержит этап, на котором определяют на основе синтаксического элемента в битовом потоке, что слайс закодирован с использованием WPP. Кроме того, способ содержит этап, на котором декодируют слайс с использованием WPP.
[0012] В другом аспекте это раскрытие описывает вычислительное устройство, которое содержит один или несколько процессоров, выполненных с возможностью принимать битовый поток, который включает в себя элемент NAL закодированного слайса, причем элемент NAL закодированного слайса включает в себя множество подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну строку блоков CTB в слайсе изображения. Один или несколько процессоров также выполнены с возможностью определять на основе одного или нескольких синтаксических элементов в битовом потоке, что слайс закодирован с использованием WPP. Кроме того, один или несколько процессоров выполнены с возможностью декодировать слайс с использованием WPP.
[0013] В другом аспекте это раскрытие описывает вычислительное устройство, которое содержит средство для приема битового потока, который включает в себя элемент NAL закодированного слайса, причем элемент NAL закодированного слайса включает в себя множество подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну строку блоков CTB в слайсе изображения. Вычислительное устройство также содержит средство для определения на основе одного или нескольких синтаксических элементов в битовом потоке, что слайс закодирован с использованием WPP. Вычислительное устройство также содержит средство для декодирования слайса с использованием WPP.
[0014] В другом аспекте это раскрытие описывает компьютерно-читаемый запоминающий носитель, хранящий команды, которые при их исполнении одним или несколькими процессорами вычислительного устройства заставляют вычислительное устройство принимать битовый поток, который включает в себя элемент NAL закодированного слайса, причем элемент NAL закодированного слайса включает в себя множество подпотоков, причем каждый из подпотоков включает в себя последовательную серию битов, которая представляет одну строку блоков CTB в слайсе изображения. Команды также заставляют вычислительное устройство определять на основе одного или нескольких синтаксических элементов в битовом потоке, что слайс закодирован с использованием WPP. Кроме того, команды заставляют вычислительное устройство декодировать слайс с использованием WPP.
[0015] Подробности одного или нескольких примеров раскрытия изложены на прилагаемых чертежах и в описании ниже. Другие признаки, задачи и преимущества будут понятны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 - блок-схема, показывающая примерную систему видеокодирования, которая может использовать методики, описанные в этом раскрытии.
[0017] Фиг. 2 - блок-схема, показывающая примерный видеокодер, который может реализовать методики, описанные в этом раскрытии.
[0018] Фиг. 3 - блок-схема, показывающая примерный видеодекодер, который может реализовать методики, описанные в этом раскрытии.
[0019] Фиг. 4 - блок-схема последовательности операций, показывающая примерную работу видеокодера для кодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и волновой параллельной обработки (WPP) в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия.
[0020] Фиг. 5 - блок-схема последовательности операций, показывающая примерную работу видеодекодера для декодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и WPP в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия.
[0021] Фиг. 6 - блок-схема последовательности операций, показывающая другой примерный вариант работы видеодекодера для декодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и WPP в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия.
[0022] Фиг. 7 - блок-схема последовательности операций, показывающая примерную работу видеокодера для кодирования видеоданных, в которых каждая строка древовидных блоков кодирования (CTB) изображения находится в отдельном подпотоке, в соответствии с одним или несколькими аспектами этого раскрытия.
[0023] Фиг. 8 - блок-схема последовательности операций, показывающая примерную работу видеодекодера для декодирования видеоданных, в которых каждая строка блоков CTB изображения находится в отдельном подпотоке, в соответствии с одним или несколькими аспектами этого раскрытия.
[0024] Фиг. 9A - блок-схема последовательности операций, показывающая первую часть примерного процесса анализа контекстно-адаптивного двоичного арифметического кодирования (CABAC) для анализа данных слайса в соответствии с одним или несколькими аспектами этого раскрытия.
[0025] Фиг. 9B - блок-схема последовательности операций, показывающая продолжение примерного процесса анализа кодирования CABAC на фиг. 9A.
[0026] Фиг. 10 - концептуальная схема, которая показывает пример WPP.
[0027] Фиг. 11 - концептуальная схема, которая показывает примерный порядок кодирования, когда изображение разделено на множество мозаичных элементов.
ПОДРОБНОЕ ОПИСАНИЕ
[0028] Во время видеокодирования изображение может быть разделено на несколько мозаичных элементов, волн волновой параллельной обработки (WPP) и/или энтропийных слайсов. Мозаичные элементы изображения заданы горизонтальными и/или вертикальными границами мозаичного элемента, которые проходят через изображение. Мозаичные элементы изображения кодируются в соответствии с порядком растровой развертки, и древовидные блоки кодирования (CTB) в пределах каждого мозаичного элемента также кодируются в соответствии с порядком растровой развертки. В WPP каждая строка блоков CTB в изображении является "волной WPP." Когда устройство видеокодирования использует WPP для кодирования изображения, устройство видеокодирования может начать кодировать блоки CTB волны WPP слева направо после того, как устройство видеокодирования закодировало два или более блока CTB непосредственно выше волны WPP. Энтропийный слайс может включать в себя серию последовательных блоков CTB в соответствии с порядком развертки растра. Использование информации из-за границ энтропийного слайса запрещено для использования при выборе контекстов энтропийного кодирования, но может быть разрешено в других целях.
[0029] В существующих системах видеокодирования изображение может иметь любую комбинацию мозаичных элементов, волн WPP и энтропийных слайсов. Например, изображение может быть разделено на множество мозаичных элементов. В этом примере блоки CTB в некоторых из мозаичных элементов могут быть закодированы в соответствии с порядком растровой развертки, в то время как блоки CTB в других мозаичных элементах могут быть закодированы с использованием WPP. Допущение возможности, чтобы изображение включало в себя комбинации мозаичных элементов, волн WPP и энтропийных слайсов, могут излишне увеличить сложность реализации и стоимость таких систем видеокодирования.
[0030] Методики этого раскрытия могут исправить эту проблему. Таким образом, в соответствии с методиками этого раскрытия в пределах изображения не допускаются комбинации любых двух или более из мозаичных элементов, волн WPP и энтропийных слайсов. Например, видеокодер может формировать битовый поток, который включает в себя синтаксический элемент, указывающий, закодировано ли изображение в соответствии с первым режимом кодирования или в соответствии со вторым режимом кодирования. В первом режиме кодирования изображение полностью закодировано с использованием WPP. Во втором режиме кодирования изображение имеет один или несколько мозаичных элементов, и каждый мозаичный элемент изображения закодирован без использования WPP.
[0031] Кроме того, в этом примере видеодекодер может анализировать синтаксический элемент из битового потока, который включает в себя закодированное представление изображения. В ответ на определение, что синтаксический элемент имеет конкретное значение, видеодекодер может декодировать изображение полностью с использованием WPP. В ответ на определение, что синтаксический элемент не имеет конкретного значения, видеодекодер может декодировать каждый мозаичный элемент изображения без использования WPP. Изображения могут иметь один или несколько мозаичных элементов.
[0032] Приложенные чертежи иллюстрируют примеры. Элементы, обозначенные условными обозначениями в приложенных чертежах, соответствуют элементам, обозначенным аналогичными условными обозначениями в последующем описании. В этом раскрытии элементы, имеющие названия, которые начинаются с порядковых прилагательных (например, "первый", "второй", "третий" и так далее) не обязательно подразумевают, что элементы имеют конкретный порядок. Вместо этого такие порядковые прилагательные используются лишь для ссылки на разные элементы одинакового или аналогичного типа.
[0033] Фиг. 1 является блок-схемой, показывающей примерную систему 10 видеокодирования, которая может использовать методики этого раскрытия. Использующийся здесь термин "устройство видеокодирования" относится в целом и к видеокодерам, и к видеодекодерам. В этом раскрытии термины "видеокодирование" или "кодирование" могут относиться в целом к кодированию видеоинформации или декодированию видеоинформации.
[0034] Как показано на фиг. 1, система 10 видеокодирования включает в себя устройство 12 источника и устройство 14 назначения. Устройство 12 источника формирует закодированные видеоданные. В соответствии с этим устройство 12 источника может упоминаться как устройство кодирования видео. Устройство 14 назначения может декодировать закодированные видеоданные, сформированные устройством 12 источника. В соответствии с этим устройство 14 назначения может упоминаться как устройство декодирования видео. Устройство 12 источника и устройство 14 назначения могут представлять собой примеры устройств видеокодирования или аппаратов видеокодирования. Устройство 12 источника и устройство 14 назначения могут содержать широкий диапазон устройств, в том числе настольные компьютеры, мобильные вычислительные устройства, переносные компьютеры (например, ноутбуки), планшетные компьютеры, телеприставки, телефонные гарнитуры, например, так называемые "смартфоны", телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, консоли видеоигр, компьютеры в автомобилях и т.п.
[0035] Устройство 14 назначения может принимать закодированные видеоданные от устройства 12 источника через канал 16. Канал 16 может содержать один или несколько носителей и/или устройств, которые могут перемещать закодированные видеоданные от устройства 12 источника к устройству 14 назначения. В одном примере канал 16 может содержать один или несколько коммуникационных носителей, которые дают возможность устройству 12 источника передавать закодированные видеоданные непосредственно устройству 14 назначения в реальном времени. В этом примере устройство 12 источника может модулировать закодированные видеоданные в соответствии со стандартом связи, таким как протокол беспроводной связи, и может передавать модулированные видеоданные устройству 14 назначения. Один или несколько коммуникационных носителей могут включать в себя беспроводные и/или проводные коммуникационные носители, такие как радиочастотный (RF) спектр или одна или несколько физических линий передачи. Один или несколько коммуникационных носителей могут являться частью пакетной сети, такой как локальная сеть, широкомасштабная сеть или глобальная сеть (например, Интернет). Один или несколько коммуникационных носителей могут включать в себя маршрутизаторы, переключатели, базовые станции или другое оборудование, которое обеспечивает возможность связи от устройства 12 источника до устройства 14 назначения.
[0036] В другом примере канал 16 может включать в себя запоминающий носитель, который хранит закодированные видеоданные, сформированные устройством 12 источника. В этом примере устройство 14 назначения может получить доступ к запоминающему носителю через диск или карту. Запоминающий носитель может включать в себя множество локально доступных носителей данных, таких как диски Blu-ray, универсальные цифровые диски (DVD), компакт-диски (CD-ROM), флэш-память или другие подходящие цифровые запоминающие носители для хранения закодированных видеоданных.
[0037] В дополнительном примере канал 16 может включать в себя файловый сервер или другое промежуточное устройство хранения, которое хранит закодированное видео, сформированное устройством 12 источника. В этом примере устройство 14 назначения может получать доступ к закодированным видеоданным, сохраненным на файловом сервере или в другом промежуточном устройстве хранения, через потоковую передачу или загрузку. Файловый сервер может представлять собой тип сервера, который может хранить закодированные видеоданные и передавать закодированные видеоданные устройству 14 назначения. Примерные файловые серверы включают в себя веб-серверы (например, для веб-сайта), серверы протокола передачи файлов (FTP), сетевые хранилища данных (NAS) и локальные накопители на дисках.
[0038] Устройство 14 назначения может получить доступ к закодированным видеоданным посредством стандартного соединения передачи данных, такого как Интернет-соединение. Примерные типы соединений передачи данных включают в себя беспроводные каналы (например, соединения Wi-Fi), проводные соединения (например, DSL, кабельный модем и т.д.) или их комбинации, которые являются подходящими для получения доступа к закодированным видеоданным, хранящимся на файловом сервере. Передача закодированных видеоданных от файлового сервера может представлять собой потоковую передачу, передачу загрузки или их комбинацию.
[0039] Методики этого раскрытия не ограничены приложениями или конфигурациями беспроводной связи. Методики могут быть применены к видеокодированию при поддержке множества мультимедийных приложений, таких как эфирное телевещание, передача кабельного телевидения, передача спутникового телевидения, передача потокового видео, например, через Интернет, кодирование видеоданных для хранения на носителе данных, декодирование видеоданных, сохраненных на носителе данных, или другие приложения. В некоторых примерах система 10 видеокодирования может быть выполнена с возможностью поддерживать одностороннюю или двухстороннюю передачу видео для поддержки таких приложений, как потоковая передача видеоинформации, воспроизведение видео, видеовещание и/или видеотелефония.
[0040] В примере на фиг. 1 устройство 12 источника включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых примерах выходной интерфейс 22, может включать в себя модулятор/демодулятор (модем) и/или передатчик. Источник 18 видео может включать в себя устройство видеосъемки, например, видеокамеру, видеоархив, содержащий ранее отснятые видеоданные, интерфейс видеоканала для приема видеоданных от провайдера видеоконтента и/или систему компьютерной графики для формирования видеоданных или комбинацию таких источников видеоданных.
[0041] Видеокодер 20 может закодировать видеоданные из источника 18 видео. В некоторых примерах устройство 12 источника непосредственно передает закодированные видеоданные устройству 14 назначения через выходной интерфейс 22. Закодированные видеоданные могут также быть сохранены на запоминающий носитель или файловый сервер для более позднего доступа посредством устройства 14 назначения для декодирования и/или воспроизведения.
[0042] В примере на фиг. 1 устройство 14 назначения включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых примерах входной интерфейс 28 включает в себя приемник и/или модем. Входной интерфейс 28 может принимать закодированные видеоданные по каналу 16. Устройство отображения 32 может быть интегрировано с устройством 14 назначения или может являться внешним по отношению к нему. В общем случае устройство 32 отображения отображает декодированные видеоданные. Устройство 32 отображения может содержать множество устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, органический светодиодный (OLED) дисплей или устройство отображения другого типа.
[0043] Видеокодер 20 и видеодекодер 30 могут работать в соответствии со стандартом сжатия видеоинформации, таким как стандарт высокоэффективного видеокодирования (HEVC), разрабатываемый в настоящее время, и может соответствовать тестовой модели стандарта HEVC (HM). Проект предстоящего стандарта HEVC, называемый "Рабочий проект HEVC 5" или "WD5", описан в документе Bross et al, "WD5: Working Draft 5 of High-Efficiency Video Coding," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SGI 6 WP3 and ISO/IEC JTC1/SC29/WG11, 7th Meeting: Geneva, Switzerland, November, 2011, версия которого от 10 октября 2012 может быть загружена по адресу: http://phenix.int-evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G1103-v3.zip, и информационное содержание которого включено в настоящий документ по ссылке. Другой проект предстоящего стандарта HEVC, называемый "Рабочий проект HEVC 9," описан в документе Bross et al, "High Efficiency Video Coding (HEVC) text specification draft 9," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SGI 6 WP3 and ISO/IEC JTC1/SC29/WG11, 11th Meeting: Shanghai, China, October, 2012, версия которого от 7 ноября 2012 года может быть загружена по адресу: http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v8.zip, и информационное содержание которого включено в настоящий документ по ссылке.
[0044] В качестве альтернативы, видеокодер 20 и видеодекодер 30 могут работать в соответствии с другими собственными или промышленными стандартами, в том числе ITU-T H.261, MPEG ISO/IEC 1 Visual, ITU-T H.262 или MPEG ISO/IEC 2 Visual, ITU-T H.263, MPEG ISO/IEC 4 Visaul и ITU-T H.264 (также известный как MPEG ISO/IEC 4 AVC), в том числе его расширения масштабируемого видеокодирования (SVC) и многовидового видеокодирования (MVC). Однако методики этого раскрытия не ограничены каким-либо конкретным стандартом или методикой кодирования.
[0045] Следует снова отметить, что фиг. 1 является лишь примером, и методики этого раскрытия могут применяться к конфигурациям видеокодирования (например, к кодированию видео или декодированию видео), которые не обязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в виде потока по сети и т.п. Устройство кодирования может закодировать и сохранить данные в запоминающем устройстве, и/или устройство декодирования может извлечь и декодировать данные из памяти. Во многих примерах кодирование и декодирование выполняются устройствами, которые не взаимодействуют друг с другом, а просто кодируют данные в запоминающем устройстве и/или извлекают и декодируют данные из запоминающего устройства.
[0046] Видеокодер 20 и видеодекодер 30 могут быть реализован как любое множество подходящих схем, таких как один или несколько микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (DSP), дискретных логических схем, аппаратных средств, или любая их комбинация. Если методики реализованы частично в программном обеспечении, устройство может хранить команды для программного обеспечения в подходящем некратковременном компьютерно-читаемом запоминающем носителе и может исполнять команды в аппаратных средствах с использованием одного или нескольких процессоров для выполнения методик этого раскрытия. Любой из упомянутых выше элементов (в том числе аппаратные средства, программное обеспечение, комбинация аппаратного и программного обеспечения и т.д.), может рассматриваться как один или несколько процессоров. Видеокодер 20 и видеодекодер 30 могут быть включены в один или несколько кодеров или декодеров, каждый из которых может быть интегрирован как часть объединенного кодера/декодера (кодека; CODEC) в соответствующем устройстве.
[0047] Это раскрытие может в целом ссылаться на то, что видеокодер 20 "сигнализирует" определенную информацию другому устройству, такому как видеодекодер 30. Термин "сигнализирование" может в целом относиться к передаче синтаксических элементов и/или других данных, которые представляют закодированные видеоданные. Такая передача может происходить в реальном времени или почти в реальном времени. В качестве альтернативы, такая передача может происходить в промежутке времени, например, может происходить при сохранении синтаксических элементов на компьютерно-читаемом запоминающем носителе в закодированном битовом потоке во время кодирования, который затем может быть извлечен устройством декодирования в любое время после сохранения на этом носителе.
[0048] Как упомянуто кратко выше, видеокодер 20 кодирует видеоданные. Видеоданные могут содержать одно или несколько изображений. Каждое из изображений может представлять собой неподвижное изображение. В некоторых случаях изображение может упоминаться как "видеокадр". Видеокодер 20 может формировать битовый поток, который включает в себя последовательность битов, формирующих закодированное представление видеоданных. Битовый поток может включать в себя закодированные изображения и соответствующие данные. Закодированное изображение является закодированным представление изображения. Соответствующие данные могут включать в себя множества параметров последовательности (SPS), множества параметров изображения (PPS) и другие синтаксические структуры. Множество SPS может содержать параметры, применимые к нулю или большему количеству последовательностей изображений. Множество PPS может содержать параметры, применимые к нулю или большему количеству изображений.
[0049] Для формирования закодированного представления изображения видеокодер 20 может разделить изображение на решетку древовидных блоков кодирования (CTB). В некоторых случаях блок CTB может упоминаться как "древовидный блок", "самый большой элемент кодирования" (LCU) или "древовидный элемент кодирования". Блоки CTB стандарта HEVC могут приблизительно являться аналогичными макроблокам предыдущих стандартов, таких как H.264/AVC. Однако блок CTB не обязательно ограничен конкретным размером и может включать в себя один или несколько элементов кодирования (CU).
[0050] Каждый из блоков CTB может соответствовать разным блокам пикселей одного размера в пределах изображения. Каждый пиксель может содержать выборку яркости (luma) и две выборки цветности (chroma). Таким образом, каждый блок CTB может быть ассоциирован с блоком выборок яркости и двумя блоками выборок цветности. Для простоты объяснения это раскрытие может называть двумерный массив пикселей пиксельным блоком и может называть двухмерный массив выборок блоком выборок. Видеокодер 20 может использовать разделение дерева квадрантов, чтобы разделить пиксельный блок, соответствующий блоку CTB, на пиксельные блоки, ассоциированные с элементами CU, отсюда название "древовидные блоки кодирования".
[0051] Блоки CTB изображения могут быть сгруппированы в один или несколько слайсов. В некоторых примерах каждый из слайсов включает в себя целое число блоков CTB. Как часть кодирования изображения видеокодер 20 может сформировать закодированные представления каждого слайса изображения (то есть закодированные слайсы). Чтобы сформировать закодированный слайс, видеокодер 20 может закодировать каждый блок CTB слайса для формирования закодированных представлений каждого из блоков CTB слайса (то есть закодированных блоков CTB).
[0052] Чтобы сформировать закодированный блок CTB, видеокодер 20 может рекурсивно выполнять разделение дерева квадрантов над пиксельным блоком, ассоциированным с блоком CTB, чтобы разделить пиксельный блок на все меньшие и меньшие пиксельные блоки. Каждый из меньших пиксельных блоков может быть ассоциирован с элементом CU. Разделенный элемент CU может являться элементом CU, пиксельный блок которого разделен на пиксельные блоки, ассоциированные с другими элементами CU. Неразделенный элемент CU может являться элементом CU, пиксельный блок которого не разделен на пиксельные блоки, ассоциированные с другими элементами CU.
[0053] Видеокодер 20 может формировать один или несколько элементов предсказания (PU) для каждого неразделенного элемента CU. Каждый из элементов PU элемента CU может быть ассоциирован с отдельным пиксельным блоком в пределах пиксельного блока элемента CU. Видеокодер 20 может формировать пиксельные блоки предсказания для каждого элемента PU элемента CU. Пиксельный блок предсказания элемента PU может являться блоком пикселей.
[0054] Видеокодер 20 может использовать интра-предсказание или интер-предсказание для формирования пиксельного блока предсказания для элемента PU. Если видеокодер 20 использует интра-предсказание для формирования пиксельного блока предсказания элемента PU, видеокодер 20 может сформировать пиксельный блок предсказания элемента PU на основе декодированных пикселей изображения, ассоциированных с элементом PU. Если видеокодер 20 использует интер-предсказание для формирования пиксельного блока предсказания элемента PU, видеокодер 20 может сформировать пиксельный блок предсказания элемента PU на основе декодированных пикселей одного или нескольких изображений, отличающихся от изображения, ассоциированного с элементом PU.
[0055] Видеокодер 20 может формировать остаточный пиксельный блок для элемента CU на основе пиксельных блоков предсказания элементов PU элемента CU. Остаточный пиксельный блок для элемента CU может указывать разность между выборками в пиксельных блоках предсказания для элементов PU элемента CU и соответствующими выборками в первоначальном пиксельном блоке элемента CU.
[0056] Кроме того, как часть кодирования неразделенного элемента CU видеокодер 20 может выполнить рекурсивное разделение дерева квадрантов над остаточным пиксельным блоком элемента CU, чтобы разделить остаточный пиксельный блок элемента CU на один или несколько меньших остаточных пиксельных блоков, ассоциированных с элементами преобразования (TU) элемента CU. Поскольку каждый из пикселей в пиксельных блоках, ассоциированных с элементами TU, включает в себя выборку яркости и две выборки цветности, каждый из элементов TU может быть ассоциирован с блоком остаточных выборок яркости и двумя блоками остаточных выборок цветности.
[0057] Видеокодер 20 может применить одно или несколько преобразований к блокам остаточных выборок, ассоциированным с элементами TU, чтобы формировать блоки коэффициентов. Видеокодер 20 может выполнить процесс квантования над каждым из блоков коэффициентов. Квантованием обычно называется процесс, в котором коэффициенты квантуются для возможного уменьшения объема данных, используемых для представления коэффициентов, обеспечивая дополнительное сжатие.
[0058] Видеокодер 20 может формировать множества синтаксических элементов, которые представляют коэффициенты в квантованных блоках коэффициентов. Видеокодер 20 может применить операции энтропийного кодирования, такие как операции контекстно-адаптивного двоичного арифметического кодирования (CABAC), по меньшей мере к некоторым из этих синтаксических элементов. Как часть выполнения операции энтропийного кодирования видеокодер 20 может выбрать контекст кодирования. В случае CABAC контекст кодирования может указывать вероятности диапазонов со значением 0 и со значением 1.
[0059] Битовый поток, cформированный видеокодером 20, может включать в себя последовательность элементов уровня сетевой абстракции (NAL). Каждый из элементов NAL может представлять собой синтаксическую структуру, содержащую показатель относительно типа данных в элементе NAL и байты, содержащие данные. Например, элемент NAL может содержать данные, представляющие множество SPS, множество PPS, закодированный слайс, информацию дополнительного улучшения (SEI), разделитель элемента доступа, данные заполнения или данные другого типа. Элементы NAL закодированных слайсов представляют собой элементы NAL, которые включают в себя закодированные слайсы.
[0060] Видеодекодер 30 может принимать битовый поток. Битовый поток может включать в себя закодированное представление видеоданных, закодированных видеокодером 20. Видеодекодер 30 может анализировать битовый поток, чтобы извлечь синтаксические элементы из битового потока. Как часть извлечения некоторых синтаксических элементов из битового потока видеодекодер 30 может выполнить энтропийное декодирование (например, декодирование CABAC, экспоненциальное декодирование Голомба и т.д.) данных в битовом потоке. Видеодекодер 30 может восстанавливать изображения видеоданных на основе синтаксических элементов, извлеченных из битового потока.
[0061] Процесс для восстановления видеоданных на основе синтаксических элементов в целом может являться обратным по отношению к процессу, выполняемому видеокодером 20 для формирования синтаксических элементов. Например, видеодекодер 30 может формировать на основе синтаксических элементов, ассоциированных с элементом CU, пиксельные блоки предсказания для элементов PU элемента CU. Кроме того, видеодекодер 30 может выполнять обратное квантование блоков коэффициентов, ассоциированных с элементами TU элемента CU. Видеодекодер 30 может выполнять обратные преобразования над блоками коэффициентов, чтобы восстановить остаточные пиксельные блоки, ассоциированные с элементами TU элемента CU. Видеодекодер 30 может восстановить пиксельный блок элемента CU на основе пиксельных блоков предсказания и остаточных пиксельных блоков.
[0062] В некоторых примерах видеокодер 20 может разделять изображение на множество энтропийных слайсов. Это раскрытие может использовать термин "регулярный слайс", чтобы отличать слайсы от энтропийных слайсов. Энтропийный слайс может включать в себя подмножество элементов CU регулярного слайса. В некоторых примерах видеокодер 20 может разделять элементы CU среди энтропийных слайсов таким образом, что ни один из энтропийных слайсов не включает в себя больше диапазонов (например, энтропийно закодированных битов), чем верхний предел. Каждый энтропийный слайс может быть включен в отдельный элемент NAL.
[0063] В этом раскрытии предсказанием внутри изображения может называться использование информации, ассоциированной с первым элементом (например, CTB, CU, PU и т.д.) изображения для кодирования второго элемента этого же изображения. Предсказание внутри изображении через границы энтропийных слайсов разрешается, за исключением цели энтропийного кодирования. Например, если устройство видеокодирования (например, видеокодер 20 или видеодекодер 30) выполняет интра-предсказание над конкретным элементом PU, устройство видеокодирования может использовать выборки из соседнего элемента PU, даже если соседний элемент PU находится в энтропийном слайсе, отличающемся от того, в котором находится конкретный элемент PU. В этом примере устройство видеокодирования может быть не в состоянии использовать выборки из соседнего элемента PU, если соседний элемент PU находится в слайсе, отличающемся от того, в котором находится конкретный элемент PU.
[0064] Однако, когда устройство видеокодирования выполняет энтропийное кодирование над данными, ассоциированными с конкретным элементом PU, устройству видеокодирования разрешено выбирать контексты кодирования только на основе информации, ассоциированных с соседним элементом PU, если конкретный элемент PU и соседний элемент PU находятся в одном и том же энтропийном слайсе. Вследствие этого ограничения устройство видеокодирования может быть в состоянии выполнить операции энтропийного кодирования или декодирования над несколькими энтропийными слайсами слайса параллельно. Следовательно, видеодекодер 30 может быть в состоянии параллельно проанализировать синтаксические элементы нескольких энтропийных слайсов. Однако видеодекодер 30 не в состоянии параллельно восстановить пиксельные блоки нескольких энтропийных слайсов слайса.
[0065] Как указано выше, элемент NAL закодированного слайса может содержать закодированный слайс. Этот слайс может представлять собой либо энтропийный слайс, либо регулярный слайс. Заголовок слайса в элементе NAL закодированного слайса может включать в себя синтаксический элемент (например, entropy_slice_flag), который указывает, является ли слайс энтропийным слайсом или регулярным слайсом. Например, если синтаксический элемент равен 1, слайс в элементе NAL закодированного слайса может являться энтропийным слайсом.
[0066] Каждый закодированный слайс может включать в себя заголовок слайса и данные слайса. Заголовки энтропийных слайсов могут отличаться от заголовков регулярных слайсов. Например, синтаксические элементы в заголовках энтропийных слайсов могут включать в себя подмножество синтаксических элементов в заголовках регулярных слайсов. Поскольку заголовки энтропийных слайсов включают в себя меньше синтаксических элементов, чем заголовки регулярных слайсов, энтропийные слайсы также могут называться легкими слайсами, слайсами с короткими заголовками или короткими слайсами. Энтропийный слайс может наследовать из заголовка регулярного слайса, который предшествует энтропийному слайсу в порядке декодирования, синтаксические элементы, опущенные из заголовка энтропийного слайса.
[0067] Традиционно видеокодеры формируют отдельные элементы NAL для каждого энтропийного слайса. Отдельные элементы NAL часто транспортируются по сети в отдельных пакетах. Другими словами, может иметься один элемент NAL на пакет во время передачи элементов NAL через сеть. Это может быть проблематично для элементов NAL, которые содержат энтропийные слайсы. Если пакет, содержащий элемент NAL, который включает в себя регулярный слайс, потерян во время передачи, видеодекодер 30 может быть не способен использовать энтропийные слайсы, которые наследовали синтаксические элементы из заголовка регулярного слайса. Кроме того, если один или несколько блоков CTB первого энтропийного слайса полагаются на один или несколько блоков CTB второго энтропийного слайса для предсказания в изображении, и пакет, содержащий элемент NAL, который включает в себя второй энтропийный слайс, потерян во время передачи, видеокодер 30 может быть не способен декодировать блоки CTB первого энтропийного слайса.
[0068] В некоторых примерах устройство видеокодирования может закодировать по меньшей мере части изображения с использованием волновой параллельной обработки (WPP). Фиг. 9, описанная подробно ниже, является концептуальной схемой, которая иллюстрирует пример WPP. Если устройство видеокодирования кодирует изображение с использованием WPP, устройство видеокодирования может разделить блоки CTB изображения на множество "волн WPP." Каждая из волн WPP может соответствовать отдельной строке блоков CTB в изображении. Если устройство видеокодирования кодирует изображение с использованием WPP, устройство видеокодирования может начать кодировать верхнюю строку блоков CTB. После того, как устройство видеокодирования закодировало два или более блоков CTB верхней строки, устройство видеокодирования может начать кодировать вторую сверху строку блоков CTB параллельно с кодированием верхней строки блоков CTB. После того, как устройство видеокодирования закодировало два или несколько блоков CTB второй сверху строки, устройство видеокодирования может начать кодировать третью сверху строку блоков CTB параллельно с кодированием более верхних строк блоков CTB. Этот шаблон может продолжаться вниз по строкам блоков CTB в изображении.
[0069] Если устройство видеокодирования использует WPP, устройство видеокодирования может использовать информацию, ассоциированную с соседними в пространстве элементами CU вне текущего блока CTB, чтобы выполнить предсказание внутри изображения над конкретным элементом CU в текущем блоке CTB, пока соседние в пространстве элементы CU находятся слева, сверху и слева, сверху или сверху и справа от текущего блока CTB. Если текущий блок CTB является самым левым блоком CTB в строке, отличающейся от самой верхней строки, устройство видеокодирования может использовать информацию, ассоциированную со вторым блоком CTB строки, находящейся непосредственно сверху, чтобы выбрать контекст для кодирования CABAC одного или нескольких синтаксических элементов текущего блока CTB. Иначе, если текущий блок CTB не является самым левым блоком CTB в строке, устройство видеокодирования может использовать информацию, соответствующую блоку CTB слева от текущего блока CTB, чтобы выбрать контекст для кодирования CABAC одного или нескольких синтаксических элементов текущего блока CTB. Таким образом, устройство видеокодирования может инициализировать состояния CABAC на оcноdе состояний CABAC находящейся непосредственно сверху строки после кодирования двух или более блоков CTB находящейся непосредственно сверху строки.
[0070] Таким образом, в ответ на определение, что первый блок CTB отделен от левой границы изображения единственным блоком CTB, устройство видеокодирования может сохранить переменные контекста, ассоциированные с первым блоком CTB. Устройство видеокодирования может выполнить энтропийное кодирование или энтропийное декодирование одного или нескольких синтаксических элементов второго блока CTB по меньшей мере частично на основе переменных контекста, ассоциированных с первым блоком CTB, причем второй блок CTB является смежным с левой границей изображения и на одну строку блоков CTB ниже первого блока CTB.
[0071] Закодированные блоки CTB слайса обычно располагаются в элементе NAL закодированного слайса в соответствии с порядком растровой развертки, даже когда используется WPP. Это может усложнить конфигурацию устройств видеокодирования, которые реализуют WPP. Когда количество волн WPP больше одной и меньше количества строк блока CTB изображения, порядок битового потока (то есть порядок декодирования, если закодированное изображение обрабатывается одним ядром декодера, не декодируется параллельно) закодированных битов для блоков CTB изменен по сравнению с порядком, когда WPP не применяется, следующим образом. Закодированный блок CTB позже в битовом потоке/порядке декодирования может быть необходим для предсказания внутри изображения посредством другого закодированного блока CTB ранее в порядке декодирования. Это может нарушить обусловленность битового потока, при которой более ранние данные не зависят от данных, приходящих позже в битовом потоке/порядке декодирования. Принцип обусловленности битового потока обычно соблюдается в конфигурациях видеокодирования, включающих в себя стандарты видеокодирования. Хотя процесс декодирования работает, процесс декодирования может быть более сложным, поскольку указатель битового потока, который указывает текущую позицию в битовом потоке, может перемещаться назад и вперед в пределах части битового потока, соответствующей элементу NAL закодированного слайса.
[0072] В некоторых примерах видеокодер 20 может разделить изображение на один или несколько мозаичных элементов. Мозаичные элементы могут содержать неперекрывающиеся множества блоков CTB изображения. Видеокодер 20 может разделить изображение на мозаичные элементы, определяя две или более вертикальных границ мозаичного элемента и две или более горизонтальных границ мозаичного элемента. Каждая вертикальная сторона изображения может быть вертикальной границей мозаичного элемента. Каждая горизонтальная сторона текущего изображения может быть горизонтальной границей мозаичного элемента. Например, если видеокодер 20 определяет четыре вертикальные границы мозаичного элемента и три горизонтальные границы мозаичного элемента для изображения, текущее изображение разделяется на шесть мозаичных элементов.
[0073] Устройство видеокодирования, такое как видеокодер 20 или видеодекодер 30, может кодировать блоки CTB мозаичных элементов изображения в соответствии с порядком сканирования мозаичных элементов. Чтобы закодировать блоки CTB в соответствии с порядком сканирования мозаичных элементов, устройство видеокодирования может закодировать мозаичные элементы изображения в соответствии с порядком растровой развертки. Таким образом, устройство видеокодирования может закодировать каждый мозаичный элемент по строкам мозаичных элементов слева направо, начиная с верхней строки мозаичных элементов и затем продолжая вниз изображения. Кроме того, устройство видеокодирования может закодировать каждый блок CTB в пределах мозаичного элемента в соответствии с порядком растровой развертки. Таким образом, устройство видеокодирования может закодировать каждый блок CTB данного мозаичного элемента изображения, прежде чем закодировать любой блок CTB другого мозаичного элемента изображения. Другими словами, порядок сканирования мозаичного элемента проходит через блоки CTB в порядке растровой развертки блоков CTB в пределах мозаичного элемента и проходит через мозаичные элементы в порядке растровой развертки мозаичных элементов в пределах изображения. Следовательно, порядок, в котором устройство видеокодирования кодирует блоки CTB изображения, может отличаться, если изображение разделено на несколько мозаичных элементов, и если изображение не разделено на несколько мозаичных элементов. Фиг. 10, описанная ниже, является концептуальной схемой, показывающей примерный порядок сканирования мозаичных элементов, когда изображение разделено на несколько мозаичных элементов.
[0074] В некоторых случаях устройство видеокодирования может выполнять предсказание внутри изображения через границы мозаичного элемента, но не через границы слайса. В других случаях предсказание внутри изображения запрещено через границы мозаичного элемента и границы слайса. В случаях, когда предсказание внутри изображения запрещено через границы мозаичного элемента и границы слайса, устройство видеокодирования может параллельно кодировать несколько мозаичных элементов.
[0075] В некоторых примерах предсказанием внутри изображения через границы мозаичного элемента управляет флаг (например, "tile_boundary_independence_idc"). Если флаг равен 1, предсказание внутри изображения через границы мозаичного элемента не разрешено в пределах изображения. В ином случае предсказание внутри изображения через границы мозаичного элемента разрешено, за исключением границ мозаичного элемента, которые являются также границами изображения или границами слайса. Если предсказание внутри изображения через границы мозаичного элемента разрешено, функциональность мозаичных элементов может изменить порядок сканирования блоков CTB по сравнению со случаем, когда изображение не имеет мозаичных элементов или, эквивалентно, имеет только один мозаичный элемент. Если предсказание внутри изображения через границы мозаичного элемента не разрешено, помимо изменения порядка сканирования блоков CTB мозаичные элементы также могут обеспечить независимое разделение, которое может использоваться для параллельного кодирования и/или декодирования мозаичных элементов. Таким образом, если изображение разделено по меньшей мере на первый мозаичный элемент и второй мозаичный элемент, когда видеодекодер 30 декодирует мозаичные элементы, не используя WPP, видеодекодер 30 может параллельно декодировать блок CTB первого мозаичного элемента и блок CTB второго мозаичного элемента.
[0076] В некоторых случаях изображение может быть разделено на комбинацию мозаичных элементов, волн WPP и энтропийных слайсов. Например, изображение может быть разделено на мозаичный элемент и множество волн WPP. В другом примере изображение может быть разделено на два мозаичных элемента и энтропийный слайс. Позволение комбинаций мозаичных элементов, волн WPP и энтропийных слайсов в пределах изображения может быть проблематичным, поскольку позволение таких комбинаций может увеличить сложность и стоимость видеокодеров и/или видеодекодеров.
[0077] Методики этого раскрытия могут разрешить описанные выше проблемы. В соответствии с методиками этого раскрытия изображение не может быть разделено ни на какую комбинацию мозаичных элементов, волн WPP и энтропийных слайсов. Другими словами, изображение может быть разделено на один или несколько мозаичных элементов, изображение может быть разделено на волны WPP, или изображение может быть разделено на один или несколько энтропийных слайсов. Однако, изображение не может быть разделено ни на одну из следующих комбинаций: (a) мозаичные элементы, волны WPP и энтропийные слайсы, (b) мозаичные элементы и волны WPP, (c) мозаичные элементы и энтропийные слайсы, или (d) волны WPP и энтропийные слайсы.
[0078] Для выполнения этого видеокодер 20 может включать, в битовом потоке, синтаксический элемент, который указывает, что изображение закодировано либо в соответствии с первым режимом кодирования, в соответствии со вторым режимом кодирования. В первом режиме кодирования изображение полностью кодируется с использованием WPP. Таким образом, каждая строка блоков CTB в изображении может быть закодирована как волна WPP. Во втором режиме кодирования изображение может иметь один или несколько мозаичных элементов. Кроме того, во втором режиме кодирования каждый мозаичный элемент изображения может быть закодирован без использования WPP. Например, во втором режиме кодирования видеокодер 20 для каждого мозаичного элемента изображения может закодировать блоки CTB в пределах мозаичного элемента последовательно в порядке слева направо по строкам блоков CTB и вниз по строкам блоков CTB мозаичного элемента. Для простоты объяснения этот синтаксический элемент может упоминаться здесь как синтаксический элемент режима кодирования.
[0079] Видеодекодер 30 может анализировать синтаксический элемент из битового потока, который включает в себя закодированное представление изображения в видеоданных. В ответ на определение, что синтаксический элемент имеет конкретное значение, видеодекодер 30 может декодировать изображение, полностью используя WPP. В ответ на определение, что синтаксический элемент не имеет конкретного значения, видеодекодер 30 может декодировать каждый мозаичный элемент изображения, не используя WPP, причем изображение имеет один или несколько мозаичных элементов.
[0080] Различные части битового потока могут включать в себя синтаксический элемент режима кодирования. Например, видеокодер 20 может формировать множество SPS, которое включает в себя синтаксический элемент режима кодирования. В этом примере видеодекодер 30 может выделить из битового потока множество SPS, которое включает в себя синтаксический элемент режима кодирования. В другом примере видеокодер 20 может формировать множество PPS, которое включает в себя синтаксический элемент режима кодирования. В этом примере видеодекодер 30 может выделить из битового потока множество PPS, которое включает в себя синтаксический элемент режима кодирования. Кроме того, если изображение закодировано в соответствии со вторым режимом кодирования, битовый поток может включать в себя один или несколько синтаксических элементов, которые указывают, использованы ли энтропийные слайсы для изображения. Различные части битового потока могут включать в себя один или несколько синтаксических элементов, которые указывают, использованы ли энтропийные слайсы для изображения. Например, множество SPS может включать в себя один или несколько синтаксических элементов, которые указывают, что энтропийные слайсы использованы для изображений, соответствующих множеству SPS. В другом примере множество PPS может включать в себя один или несколько синтаксических элементов, которые указывают, что энтропийные слайсы использованы для изображений, соответствующих множеству PPS. Например, в этом примере множество PPS может включать в себя синтаксический элемент entropy_slice_enabled_flag, который указывает, могут ли закодированные слайсы, которые относятся ко множеству PPS, состоять из энтропийных слайсов.
[0081] Если изображение включает в себя один или несколько энтропийных слайсов, каждый энтропийный слайс, соответствующий слайсу изображения, может быть включен в единственный элемент NAL закодированного слайса, вместо того, чтобы быть включенным в отдельные элементы NAL. Таким образом, энтропийный слайс может быть определен как подмножество слайса, причем процесс энтропийного декодирования энтропийного слайса независим от других энтропийных слайсов в том же самом слайсе.
[0082] Как кратко упомянуто выше, битовый поток может включать в себя элементы NAL закодированного слайса, которые включают в себя закодированные слайсы. Закодированный слайс может содержать заголовок слайса и данные слайса. Данные слайса могут включать в себя один или несколько подпотоков. В соответствии с методиками этого раскрытия, если изображение закодировано в первом режиме кодирования (то есть изображение полностью закодировано с использованием WPP), каждая строка блоков CTB слайса представлена единственным из подпотоков. Если изображение закодировано во втором режиме кодирования (то есть каждый мозаичный элемент изображения закодирован без использования WPP), каждый мозаичный элемент изображения, который имеет один или несколько блоков CTB в слайсе, представлен единственным из подпотоков.
[0083] Кроме того, в соответствии с методиками этого раскрытия заголовок закодированного слайса может включать в себя множество синтаксических элементов, которые указывают точки входа мозаичных элементов, волны WPP или энтропийные слайсы в пределах данных слайса элемента NAL закодированного слайса. Точка входа подпотока может являться первым битом подпотока. Кроме того, мозаичные элементы, волны WPP или энтропийные слайсы в пределах данных слайса элемента NAL закодированного слайса могут включать в себя дополнительные биты, которые гарантируют, что мозаичные элементы, волны WPP или энтропийные слайсы выровнены по байту.
[0084] Фиг. 2 является блок-схемой, которая показывает примерный видеокодер 20, выполненный с возможностью реализовать методики этого раскрытия. Фиг. 2 представлена в целях объяснения и не должна рассматриваться как ограничивающая методики, в целом проиллюстрированные и описанные в этом раскрытии. В целях объяснения это раскрытие описывает видеокодер 20 в контексте кодирования HEVC. Однако методики этого раскрытия могут быть применены к другим стандартам или способам кодирования.
[0085] В примере на фиг. 2 видеокодер 20 включает в себя секцию 100 обработки предсказания, секцию 102 формирования разности, секцию 104 обработки преобразования, секцию 106 квантования, секцию 108 обратного квантования, секцию 110 обработки обратного преобразования, секцию 112 восстановления, секцию 113 фильтра, буфер 114 декодированного изображения и секцию 116 энтропийного кодирования. Секция 100 обработки предсказания включает в себя секцию 121 обработки интер-предсказания и секцию 126 обработки интра-предсказания. Секция 121 обработки интер-предсказания включает в себя секцию 122 оценки движения и секцию 124 компенсации движения. В других примерах видеокодер 20 может включать больше или меньше функциональных компонентов или другие функциональные компоненты.
[0086] Видеокодер 20 может принимать видеоданные. Чтобы закодировать видеоданные, видеокодер 20 может закодировать каждый слайс каждого изображения видеоданных. Как часть кодирования слайса видеокодер 20 может закодировать каждый блок CTB в слайсе. Как часть кодирования блока CTB секция 100 обработки предсказания может выполнить разделение дерева квадрантов над пиксельным блоком, соответствующим блоку CTB, для разделения пиксельного блока на все меньшие и меньшие пиксельные блоки. Меньшие пиксельные блоки могут соответствовать элементам CU. Например, секция 100 обработки предсказания может разделить пиксельный блок блока CTB на четыре подблока с одинаковыми размерами, разделить один или несколько подблоков на четыре подподблока с одинаковыми размерами и так далее.
[0087] Видеокодер 20 может закодировать элементы CU блока CTB, чтобы сформировать закодированные представления элементов CU (то есть закодированные элементы CU). Видеокодер 20 может закодировать элементы CU блока CTB в соответствии с порядком z-сканирования. Другими словами, видеокодер 20 может закодировать верхний левый элемент CU, верхний правый элемент CU, нижний левый элемент CU и затем нижний правый элемент CU в том порядке. Когда видеокодер 20 кодирует разделенный элемент CU, видеокодер 20 может закодировать элементы CU, соответствующие подблокам пиксельного блока разделенного элемента CU в соответствии с порядком z-сканирования.
[0088] Как часть кодирования элемента CU секция 100 обработки предсказания может разделить пиксельный блок элемента CU среди одного или нескольких элементов PU элемента CU. Видеокодер 20 и видеодекодер 30 могут поддерживать различные размеры элемента PU. В предположении, что размер конкретного элемента CU составляет 2N×2N, видеокодер 20 и видеодекодер 30 могут поддерживать размеры элемента PU 2N×2N или N×N для интра-предсказания и симметричные размеры элемента PU 2Nx2N, 2NxN, N×2N, N×N и т.п. для интер-предсказания. Видеокодер 20 и видеодекодер 30 также могут поддерживать асимметричное разделение для размеров элемента PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.
[0089] Секция 121 обработки интер-предсказания может формировать данные предсказания для элемента PU, выполняя интер-предсказание над каждым элементом PU элемента CU. Данные предсказания для элемента PU могут включать в себя пиксельный блок предсказания, который соответствует элементу PU, и информацию движения для элемента PU. Слайсы могут представлять собой I-слайсы, P-слайсы или B-слайсы. Секция 121 интер-предсказания может выполнять разные операции для элемента PU элемента CU в зависимости от того, находится ли элемент PU в I-слайсе, P-слайсе или B-слайсе. В I-слайсе все элементы PU имеют интра-предсказание. Следовательно, если элемент PU находится в I-слайсе, секция 121 интер-предсказания 121 не выполняет интер-предсказание над элементом PU.
[0090] Если элемент PU находится в P-слайсе, секция 122 оценки движения может выполнить поиск опорного блока для элемента PU в опорных изображениях в списке опорных изображений (например, в "списке 0"). Опорный блок элемента PU может являться пиксельным блоком, который наиболее близко соответствует пиксельному блоку элемента PU. Секция 122 оценки движения может сформировать индекс опорного изображения, который указывает опорное изображение в списке 0, содержащем опорный блок элемента PU и вектор движения, который указывает пространственное смещение между пиксельным блоком элемента PU и опорным блоком. Секция 122 оценки движения может выдать индекс опорного изображения и вектор движения как информацию движения элемента PU. Секция 124 компенсации движения может формировать пиксельный блок предсказания элемента PU на основе опорного блока, обозначенного информацией движения элемента PU.
[0091] Если элемент PU находится в B-слайсе, секция 122 оценки движения может выполнить однонаправленное интер-предсказание или двунаправленное интер-предсказание для элемента PU. Чтобы выполнить однонаправленное интер-предсказание для элемента PU, секция 122 оценки движения может выполнить поиск опорного блока для элемента PU в опорных изображениях первого списка опорных изображений ("списка 0") или второго списка опорных изображений ("списка 1"). Секция 122 оценки движения может выдать в качестве информации движении элемента PU индекс опорного изображения, который указывает позицию в списке 0 или списке 1 опорного изображения, которое содержит опорный блок, вектор движения, который указывает пространственное смещение между пиксельным блоком элемента PU и опорным блоком, и индикатор направления предсказания, который указывает, находится ли опорное изображение в списке 0 или в списке 1.
[0092] Чтобы выполнить двунаправленное интер-предсказание для элемента PU, секция 122 оценки движения может выполнить поиск опорного блока для элемента PU в опорных изображениях в списке 0 и также может выполнить поиск другого опорного блока для элемента PU в опорных изображениях в списке 1. Секция 122 оценки движения может сформировать индексы опорных изображений, которые указывают позиции в списке 0 и в списке 1 опорных изображений, которые содержат опорные блоки. Кроме того, секция 122 оценки движения может сформировать векторы движения, которые указывают пространственные смещения между опорными блоками и пиксельным блоком элемента PU. Информация движения элемента PU может включать в себя индексы опорных изображений и векторы движения элемента PU. Секция 124 компенсации движения может сформировать пиксельный блок предсказания элемента PU на основе опорных блоков, обозначенных информацией движения элемента PU.
[0093] Секция 126 обработки интра-предсказания 126 может формировать данные предсказания для элемента PU, выполняя интра-предсказание над элементом PU. Данные предсказания для элемента PU могут включать в себя пиксельный блок предсказания для элемента PU и различные синтаксические элементы. Секция 126 обработки интра-предсказания может выполнить интра-предсказание над элементами PU в I-слайсах, P-слайсах и B-слайсах.
[0094] Чтобы выполнить интра-предсказание над элементом PU, секция 126 обработки интра-предсказания может использовать несколько режимов интра-предсказания для формирования нескольких множеств данных предсказания для элемента PU. Чтобы использовать режим интра-предсказания для формирования множества данных предсказания для элемента PU, секция 126 обработки интра-предсказания может расширить выборки из блоков выборок соседних элементов PU по блокам выборок элемента PU в направлении, соответствующем режиму интра-предсказания. Соседние элементы PU могут находиться сверху, сверху и справа, сверху и слева или слева от элемента PU, при условии порядка кодирования слева направо и сверху в низ для элементов PU, элементов CU и блоков CTB. Секция 126 обработки интра-предсказания может использовать различные количества режимов интра-предсказания, например, 33 направленных режимов интра-предсказания. В некоторых примерах количество режимов интра-предсказания может зависеть от размера пиксельного блока элемента PU.
[0095] Секция 100 обработки предсказания может выбрать данные предсказания для элементов PU элемента CU из данных предсказания, сформированных секцией 121 обработки интер-предсказания для элементов PU, или из данных предсказания, сформированных секцией 126 обработки интра-предсказания для элементов PU. В некоторых примерах секция 100 обработки предсказания выбирает данные предсказания для элементов PU элемента CU на основе метрик скорости/искажений множеств данных предсказания. Пиксельные блоки предсказания выбранных данных предсказания могут называться здесь выбранными пиксельными блоками предсказания.
[0096] Секция 102 формирования разности может формировать остаточный пиксельный блок элемента CU на основе пиксельного блока элемента CU и выбранных пиксельных блоков предсказания элементов PU элемента CU. Например, секция 102 формирования разности может формировать остаточный пиксельный блок элемента CU таким образом, что каждая выборка в остаточном пиксельном блоке имеет значение, равное разности между выборкой в пиксельном блоке элемента CU и соответствующей выборкой в выбранном пиксельном блоке предсказания элемента PU элемента CU.
[0097] Секция 100 обработки предсказания может выполнить разделение дерева квадрантов, чтобы разделить остаточный пиксельный блок элемента CU на подблоки. Каждый неразделенный остаточный пиксельный блок может соответствовать отдельному элементу TU элемента CU. Размеры и позиции остаточных пиксельных блоков, соответствующих элементам TU элемента CU, могут быть основаны или не основаны на размерах и позициях пиксельных блоков элементов PU элемента CU.
[0098] Поскольку пиксели остаточных пиксельных блоков элементов TU могут содержать выборку яркости и две выборки цветности, каждый из элементов TU может быть ассоциирован с блоком выборок яркости и двумя блоками выборок цветности. Секция 104 обработки преобразования может сформировать блоки коэффициентов для каждого элемента TU элемента CU, применяя одно или несколько преобразований к блокам остаточных выборок, соответствующим элементу TU. Секция 104 обработки преобразования может применить различные преобразования к блоку остаточных выборок, соответствующему элементу TU. Например, секция 104 обработки преобразования может применить дискретное косинусное преобразование (DCT), направленное преобразование или концептуально аналогичное преобразование к блоку остаточных выборок.
[0099] Секция 106 квантования может квантовать коэффициенты в блоке коэффициентов, соответствующем элементу TU. Процесс квантования может уменьшить битовую глубину, соответствующую некоторым или всем коэффициентам. Например, n-битовый коэффициент может быть округлен в меньшую сторону до m-битового коэффициента во время квантования, где n больше m. Секция 106 квантования может квантовать блок коэффициентов, соответствующий элементу TU элемента CU, на основе значения параметра квантования (QP), соответствующего элементу CU. Видеокодер 20 может скорректировать степень квантования, применяемую к блокам коэффициентов, ассоциированным с элементом CU, посредством корректировки значения параметра QP, ассоциированного с элементом CU.
[0100] Секция 108 обратного квантования и секция 110 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов, соответственно, чтобы восстановить блок остаточных выборок из блока коэффициентов. Секция 112 восстановления может добавить восстановленный блок остаточных выборок к соответствующим выборкам из одного или нескольких блоков выборок предсказания, сформированных секцией 100 обработки предсказания, чтобы произвести восстановленный блок выборок, ассоциированный с элементом TU. Посредством такого восстановления блоков выборок для каждого элемента TU элемента CU видеокодер 20 может восстановить пиксельный блок элемента CU.
[0101] Секция 113 фильтра может выполнить операцию удаления блочности, чтобы уменьшить артефакты блочности в пиксельном блоке, соответствующем элементу CU. Буфер 114 декодированного изображения может хранить восстановленные пиксельные блоки после того, как секция 113 фильтра выполняет одну или несколько операций удаления блочности над восстановленными пиксельными блоками. Секция 121 интер-предсказания может использовать опорное изображение, которое содержит восстановленные пиксельные блоки, для выполнения интер-предсказания над элементами PU других изображений. Кроме того, секция 126 обработки интра-предсказания может использовать восстановленные пиксельные блоки в буфере 114 декодированного изображения для выполнения интра-предсказания над другими элементами PU в том же самом изображении, в котором находится элемент CU.
[0102] Секция 116 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 20. Например, секция 116 энтропийного кодирования может принимать блоки коэффициентов от секции 106 квантования и может принимать синтаксические элементы от секции 100 обработки предсказания. Секция 116 энтропийного кодирования может выполнять одну или несколько операций энтропийного кодирования над данными для формирования подвергнутых энтропийному кодированию данных. Например, секция 116 энтропийного кодирования может выполнить операцию контекстно-адаптивного кодирования с переменной длиной (CAVLC), операцию кодирования CABAC, операцию кодирования переменных с переменной длиной (variable-to-variable; V2V), операцию контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (SBAC), операцию энтропийного кодирования с разделением на интервалы вероятности (PIPE), операцию экспоненциального кодирования Голомба или операцию энтропийного кодирования другого типа над данными.
[0103] Видеокодер 20 может выдать битовый поток, который включает в себя подвергнутые энтропийному кодированию данные, сформированные секцией 116 энтропийного кодирования. Битовый поток может включать в себя последовательность элементов NAL. Элементы NAL могут включать в себя элементы NAL закодированного слайса, элементы NAL множества SPS, элементы NAL множества PPS и так далее. Чтобы гарантировать, что изображение не включает в себя комбинации мозаичных элементов, волн WPP и энтропийных слайсов, битовый поток может включать в себя синтаксический элемент, который указывает, закодировано ли изображение полностью с использованием WPP, или каждый мозаичный элемент изображения закодирован без использования WPP.
[0104] Фиг. 3 является блок-схемой, которая показывает примерный видеодекодер 30, выполненный с возможностью реализовать методики этого раскрытия. Фиг. 3 представлена в целях объяснения и не ограничивает методики, в целом проиллюстрированные и описанные в этом раскрытии. В целях объяснения это раскрытие описывает видеодекодер 30 в контексте кодирования HEVC. Однако методики этого раскрытия могут быть применены к другим стандартам или способам кодирования.
[0105] В примере на фиг. 3 видеодекодер 30 включает в себя секцию 150 энтропийного декодирования, секцию 152 обработки предсказания, секцию 154 обратного квантования, секцию 156 обработки обратного преобразования, секцию 158 восстановления, секцию 159 фильтра и буфер 160 декодированного изображения. Секция 152 обработки предсказания включает в себя секцию 162 компенсации движения и секцию 164 обработки интра-предсказания. В других примерах видеодекодер 30 может включать больше или меньше функциональных компонентов или другие функциональные компоненты.
[0106] Видеодекодер 30 может принимать битовый поток. Секция 150 энтропийного декодирования может проанализировать битовый поток, чтобы извлечь из битового потока синтаксические элементы. Как часть анализа битового потока секция 150 энтропийного декодирования может выполнить энтропийное декодирование подвергнутых энтропийному кодированию синтаксических элементов в битовом потоке. Секция 152 обработки предсказания, секция 154 обратного квантования, секция 156 обработки обратного преобразования, секция 158 восстановления и секция 159 фильтра могут сформировать декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока.
[0107] Битовый поток может содержать последовательность элементов NAL. Элементы NAL битового потока могут включать в себя элементы NAL закодированного слайса. Как часть анализа битового потока секция 150 энтропийного декодирования может извлечь и подвергнуть энтропийному декодированию синтаксические элементы из элементов NAL закодированного слайса. Каждый из закодированных слайсов может включать в себя заголовок слайса и данные слайса. Заголовок слайса может содержать синтаксические элементы, имеющие отношение к слайсу. Синтаксические элементы в заголовке слайса могут включать в себя синтаксический элемент, который идентифицирует множество PPS, соответствующее изображению, которое содержит слайс.
[0108] Кроме того, видеодекодер 30 может выполнить операцию восстановления над неразделенным элементом CU. Для выполнения операции восстановления над неразделенным элементом CU видеодекодер 30 может выполнить операцию восстановления над каждым элементом TU элемента CU. Выполняя операцию восстановления для каждого элемента TU элемента CU, видеодекодер 30 может восстановить остаточный пиксельный блок, соответствующий элементу CU.
[0109] Как часть выполнения операции восстановления над элементом TU элемента CU секция 154 обратного квантования может выполнить обратное квантование, то есть деквантование блоков коэффициентов, соответствующих элементу TU. Секция 154 обратного квантования может использовать значение параметра QP, соответствующее элементу CU элемента TU, чтобы определить степень квантования и, аналогично, степень обратного квантования для применения секцией 154 обратного квантования.
[0110] После того, как секция 154 обратного квантования выполняет обратное квантование блока коэффициентов, секция 156 обработки обратного преобразования может применить одно или несколько обратных преобразований к блоку коэффициентов, чтобы сформировать блок остаточных выборок, соответствующий элементу TU. Например, секция 156 обработки обратного преобразования может применить к блоку коэффициентов обратное преобразование DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование.
[0111] Если элемент PU закодирован с использованием интра-предсказания, секция 164 обработки интра-предсказания может выполнить интра-предсказание, чтобы сформировать блок выборок предсказания для элемента PU. Секция 164 обработки интра-предсказания может использовать режим интра-предсказания, чтобы сформировать пиксельный блок предсказания для элемента PU на основе пиксельных блоков соседних в пространстве элементов PU. Секция 164 обработки интра-предсказания может определять режим интра-предсказания для элемента PU на основе одного или нескольких синтаксических элементов, проанализированных из битового потока.
[0112] Секция 162 компенсации движения может создать первый список опорных изображений (список 0) и второй список опорных изображений (список 1) на основе синтаксических элементов, извлеченных из битового потока. Кроме того, если элемент PU закодирован с использованием интер-предсказания, секция 150 энтропийного декодирования может извлечь информацию движения для элемента PU. Секция 162 компенсации движения может определить на основе информации движения элемента PU один или несколько опорных блоков для элемента PU. Секция 162 компенсации движения может сформировать на основе одного или нескольких опорных блоков для элемента PU пиксельный блок предсказания для элемента PU.
[0113] Секция 158 восстановления может использовать остаточные пиксельные блоки, соответствующие элементам TU элемента CU, и пиксельные блоки предсказания элементов PU элемента CU, то есть в зависимости от конкретного случая либо данные интра-предсказания, либо данные интер-предсказания, чтобы восстановить пиксельный блок элемента CU. В частности, секция 158 восстановления может добавить выборки остаточных пиксельных блоков к соответствующим выборкам пиксельных блоков предсказания, чтобы восстановить пиксельный блок элемента CU.
[0114] Секция 159 фильтра может выполнить операцию удаления блочности для уменьшения артефактов блочности, соответствующих пиксельному блоку элемента CU. Видеодекодер 30 может сохранить пиксельный блок элемента CU в буфере 160 декодированного изображения. Буфер 160 декодированного изображения может обеспечить опорные изображения для последующей компенсации движения, интра-предсказания и представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1. Например, видеодекодер 30 на основе пиксельных блоков в буфере 160 декодированного изображения может выполнить операции интра-предсказании или интер-предсказания над элементами PU других элементов CU.
[0115] Как упомянуто выше, видеодекодер 30 может принимать битовый поток, который включает в себя синтаксический элемент режима кодирования. Если синтаксический элемент режима кодирования имеет конкретное значение, синтаксический элемент режима кодирования указывает, что изображение полностью закодировано с использованием WPP. В различных примерах синтаксический элемент режима кодирования может находиться в различных частях битового потока. Например, множество SPS может включать в себя синтаксический элемент режима кодирования. Приведенная ниже таблица 1 представляет примерный синтаксис для множества SPS, которое включает в себя синтаксический элемент режима кодирования ("time_mode").
[0116] Синтаксические элементы с дескриптором типа ue(v) представляют собой значения переменной длины без знака, закодированные с использованием экспоненциального кодирования Голомба с левым битом сначала. Синтаксические элементы с дескриптором типа u(1) и u(2) представляют собой значения без знака, которые составляют в длину 1 или 2 бита, соответственно. В примерном синтаксисе таблицы 1 синтаксический элемент inter_4x4_enabled_flag определяет, может ли интер-предсказание быть применено к блокам, имеющим размер 4×4 выборок яркости.
[0117] Кроме того, в примерном синтаксисе таблицы 1 синтаксический элемент tile_mode определяет режим мозаичных элементов для изображений, соответствующих множеству SPS. Если синтаксический элемент tile_mode равен 0, в каждом из изображений, соответствующих множеству SPS, имеется только один мозаичный элемент. Блоки CTB в единственном мозаичном элементе каждого изображения закодированы в соответствии с порядком растровой развертки без использования WPP. Если синтаксический элемент tile_mode равен 1, изображения, соответствующие множеству SPS, находятся в режиме мозаичных элементов с однородными интервалами. Когда изображение находится в режиме мозаичных элементов с однородными интервалами, границы столбцов мозаичных элементов и границы строк мозаичных элементов однородно распределены в каждом изображении, соответствующем множеству SPS. В результате, когда изображение находится в режиме мозаичных элементов с однородными интервалами, мозаичные элементы изображения имеют одинаковый размер. Блоки CTB в пределах каждого из однородно распределенных мозаичных элементов могут быть закодированы в соответствии с порядком растровой развертки без использования WPP. Если синтаксический элемент tile_mode равен 2, изображения, соответствующие множеству SPS, находятся в режиме мозаичных элементов с неоднородными интервалами. Когда изображение находится в режиме мозаичных элементов с неоднородными интервалами, границы столбцов мозаичных элементов и границы строк мозаичных элементов распределены неоднородно по изображению, но они могут быть явно сообщены с использованием синтаксических элементов column_width[i] и row_height[i] множества SPS. Блоки CTB в пределах каждого из расположенных с неоднородными интервалами мозаичных элементов могут быть закодированы в соответствии с порядком растровой развертки без использования WPP.
[0118] Если синтаксический элемент tile_mode равен 3, изображения, соответствующие множеству SPS, закодированы с использованием режима WPP. Другими словами, если синтаксический элемент tile_mode имеет конкретное значение (например, 3), изображения, соответствующие множеству SPS, полностью закодированы с использованием WPP. Если синтаксический элемент tile_mode имеет значение, отличное от 3, ни один мозаичный элемент какого-либо изображения, соответствующего множеству SPS, не закодирован с использованием WPP. Кроме того, когда изображение закодировано с использованием WPP, заданный процесс запоминания вызывается после декодирования двух блоков CTB строки блоков CTB изображения. Кроме того, заданный процесс синхронизации вызывается перед декодированием первого блока CTB строки блоков CTB изображения. Кроме того, заданный процесс повторной инициализации состояния CABAC внутренних переменных вызывается, когда был закодирован самый правый блок CTB строки.
[0119] В заданном упомянутом выше процессе запоминания устройство видеокодирования может в ответ на определение, что первый блок CTB отделен от левой границы изображения единственным блоком CTB, сохранить переменные конкретного контекста, ассоциированные с первым блоком CTB. В заданном процессе синхронизации устройство видеокодирования может выполнить энтропийное кодирование или энтропийное декодирование по меньшей мере частично на основе переменных контекста, ассоциированных с первым блоком CTB, одного или нескольких синтаксических элементов второго блока CTB, второй блок CTB расположен смежно с левой границей изображения и расположен на одну строку блоков CTB ниже первого блока CTB.
[0120] Кроме того, в примерном синтаксисе таблицы 1 синтаксический элемент num_tile_columns_minus1 определяет количество столбцов мозаичных элементов, разделяющих каждое из изображений, соответствующих множеству SPS. Когда синтаксический элемент tile_mode равен 0 или 3, может быть выведено, что значение синтаксического элемента num_tile_columns_minus1 равно 0. Это справедливо потому, что в изображении имеется только один мозаичный элемент, когда синтаксический элемент tile_mode равен 0, и каждая строка блока CTB изображения является единственным мозаичным элементом, когда синтаксический элемент tile_mode равен 3. Синтаксический элемент num_tile_rows_minus1 определяет количество строк мозаичных элементов, разделяющих каждое из изображений, соответствующих множеству SPS. Когда синтаксический элемент tile_mode равен 0, может быть выведено, что значение синтаксического элемента num_tile_rows_minus1 равно 0. Когда синтаксический элемент tile_mode равен 3, видеодекодер 30 может автоматически определить (то есть вывести), что значение синтаксического элемента num_tile_rows_minus1 равно высоте изображений в блоках CTB минус 1. Кроме того, когда синтаксический элемент tile_mode равен 1 или 2, по меньшей мере один из синтаксических элементов num_tile_columns_minus1 и num_tile_rows_minus1 больше 0.
[0121] Видеодекодер 30 может определить, на основе синтаксических элементов column_width[i] и row_height[i] ширину и высоту мозаичных элементов изображений, соответствующих множеству SPS. Синтаксические элементы column_width[i] указывают ширину столбцов мозаичных элементов изображений, соответствующих множеству SPS. Видеодекодер 30 может сформировать по меньшей мере частично на основе синтаксических элементов column_width[i] вектор columnWidth, который указывает ширину столбцов мозаичных элементов в изображениях, соответствующих множеству SPS. Видеодекодер 30 может использовать следующий псевдокод для формирования вектора columnWidth из от синтаксических элементов column_width[i] множества SPS.
[0122] Видеодекодер 30 может сформировать вектор rowHeight, который указывает высоты мозаичных элементов в изображениях, соответствующих множеству SPS. В некоторых примерах видеодекодер 30 может использовать следующий псевдокод для формирования вектора rowHeight.
[0123] Кроме того, видеодекодер 30 может сформировать вектор colBd, который указывает местоположения в пределах изображений, соответствующих множеству SPS, границы самого левого столбца для каждого столбца мозаичных элементов. В некоторых примерах видеодекодер 30 может определить вектор colBd с использованием следующего псевдокода.
[0124] Видеодекодер 30 может сформировать вектор rowBd, который указывает местоположения в пределах изображения, соответствующего множеству SPS, границы верхнего ряда каждой строки мозаичных элементов. В некоторых примерах видеодекодер 30 может определить вектор rowBd с использованием следующего псевдокода.
[0125] В примерном синтаксисе таблицы 1 синтаксический элемент tile_boundary_independence_flag указывает, являются ли мозаичные элементы независимо декодируемыми. Например, если флаг tile_boundary_independence_flag равен 1, мозаичные элементы независимо декодируемы. Например, если флаг tile_boundary_independence_flag равен 1, и видеодекодер 30 декодирует конкретный блок CTB, определяется, что все блоки CTB, граничащие с конкретным блоком CTB, которые не находятся в пределах того же самого мозаичного элемента, как конкретный блок CTB, являются недоступными для предсказания внутри изображения. Кроме того, если флаг tile_boundary_independence_flag равен 1, видеодекодер, 30 повторно инициализируют контекст энтропийного кодирования перед энтропийным декодированием первого блока CTB в мозаичном элементе.
[0126] Если синтаксический элемент tile_boundary_independence_flag равен 0, на доступность блоков CTB для предсказания внутри изображения не влияют границы мозаичного элемента. Другими словами, если синтаксический элемент tile_boundary_independence_flag равен 0, видеодекодер 30 может выполнить предсказание внутри изображения через границы мозаичного элемента. Кроме того, если синтаксический элемент tile_boundary_independence_flag равен 0, секция 150 энтропийного декодирования может вызвать процесс синхронизации при декодировании первого блока CTB в мозаичном элементе за исключением первого древовидного блока в изображении. В этом процессе синхронизации секция 150 энтропийного декодирования может использовать информацию, соответствующую последнему блоку CTB предыдущего мозаичного элемента, чтобы выбрать контекст кодирования для энтропийного декодирования одного или нескольких синтаксических элементов первого блока CTB в мозаичном элементе. Кроме того, секция 150 энтропийного декодирования может выполнить процесс запоминания при декодировании первого блока CTB второй строки блоков CTB в мозаичном элементе. Процесс запоминания может сохранить переменные контекста для использования при выборе контекста для кодирования CABAC одного или нескольких синтаксических элементов самого левого блока CTB следующей расположенной ниже строки блоков CTB.
[0127] Если синтаксический элемент tile_mode равен 0 (то есть имеется только один мозаичный элемент на изображение), множество SPS в примерном синтаксисе таблицы 1 не включает в себя синтаксический элемент tile_boundary_independence_flag. Однако если синтаксический элемент tile_mode равен 0, видеодекодер 30 может автоматически определить, что значение синтаксического элемента tile_boundary_independence_flag равно 1. Аналогичным образом, если синтаксический элемент tile_mode равен 3 (то есть изображение полностью закодировано с использованием WPP), множество SPS примерном синтаксисе таблицы 1 не включает в себя синтаксический элемент tile_boundary_independence_flag. Однако, если синтаксический элемент tile_mode равен 3, видеодекодер 30 может автоматически определить, что значение синтаксического элемента tile_boundary_independence_flag равно 0.
[0128] В примерном синтаксисе таблицы 1 синтаксический элемент loop_filter_across_tile_flag определяет, должен ли видеодекодер 30 выполнить операции петлевой фильтрации через границы мозаичного элемента. Например, если синтаксический элемент loop_filter_across_tile_flag равен 1, видеодекодер 30 может выполнять операции петлевой фильтрации через границы мозаичного элемента. В ином случае, если синтаксический элемент loop_filter_across_tile_flag равен 0, видеодекодер 30 не может выполнять операции петлевой фильтрации через границы мозаичного элемента. Примерные операции петлевой фильтрации могут включать в себя фильтры удаления блочности, адаптивные смещения выборок и адаптивные петлевые фильтры.
[0129] Если синтаксический элемент tile_mode равен 0 (то есть имеется только один мозаичный элемент на изображение) или равен 3 (то есть каждое изображение, соответствующее множеству SPS, закодировано полностью с использованием WPP), множество SPS в примерном синтаксисе таблицы 1 не включает в себя синтаксический элемент loop_filter_across_tile_flag. Однако, если синтаксический элемент tile_mode равен 0, видеодекодер 30 может автоматически определить, что значение синтаксического элемента loop_filter_across_tile_flag равно 0. Если синтаксический элемент tile_mode равен 3, видеодекодер 30 может автоматически определить, что значение синтаксического элемента loop_filter_across_tile_flag равно 1.
[0130] В качестве альтернативы или в дополнение к приему множества SPS, которое включает в себя синтаксический элемент режима кодирования, видеодекодер 30 может принять множество PPS, которое включает в себя синтаксический элемент режима кодирования. В некоторых примерах, в которых видеодекодер 30 принимает множество SPS и множество PPS, которые применяются к одному и тому же изображению, и множество SPS и множество PPS включают в себя синтаксические элементы режима кодирования, видеодекодер 30 может дать приоритет значению синтаксического элемента режима кодирования, определенному множеством PPS. Приведенная ниже таблица 2 представляет примерный синтаксис множества PPS, которое включает в себя синтаксический элемент режима кодирования ("tile_mode").
[0131] В примерном синтаксисе таблицы 2, если синтаксический элемент tile_partition_info_present_flag равен 1, присутствует синтаксический элемент tile_mode. Кроме того, если синтаксический элемент tile_partition_info_present_flag равен 1, во множестве PPS могут присутствовать синтаксические элементы num_tile_columns_minus1, num_tile_rows_minus1, column_width[i] и row_height[i]. Семантика синтаксического элемента tile_mode, синтаксического элемента num_tile_columns_minus1, синтаксического элемента num_tile_rows_minus1, синтаксических элементов column_width и синтаксических элементов row_height может являться такой же, как описанными выше относительно примерного синтаксиса множества SPS таблицы 1. Если синтаксический элемент tile_partition_info_present_flag равен 0, синтаксические элементы tile_mode, num_tile_columns_minus1, num_tile_rows_minus1, column_width[i] и row_height[i] не присутствуют во множестве PPS.
[0132] Таким образом, видеодекодер 30 может определить по меньшей мере частично на основе синтаксического элемента режима кодирования (например, tile_mode), имеющего значение, которое указывает, что никакой блок CTB изображения не закодирован с использованием WPP, что установленные параметры (например, множество SPS или множество PPS) включают в себя синтаксический элемент количества столбцов мозаичных элементов и синтаксический элемент количества строк мозаичных элементов. Видеодекодер 30 также может определить на основе синтаксического элемента количества столбцов мозаичных элементов количество столбцов мозаичных элементов. Количество столбцов мозаичных элементов каждого изображения, соответствующего множеству параметров, может быть равным количеству столбцов мозаичных элементов. Видеодекодер 30 также может определить на основе синтаксического элемента количества строк мозаичных элементов количество строк мозаичных элементов. Количество строк мозаичных элементов каждого изображения, соответствующего множеству параметров, может быть равным количеству строк мозаичных элементов. Кроме того, видеодекодер 30 может определить, что множество параметров (например, множество SPS или множество PPS) включает в себя последовательность из одного или нескольких синтаксических элементов ширины столбца и последовательность из одного или нескольких синтаксических элементов высоты мозаичных элементов. Кроме того, видеодекодер 30 может определить по меньшей мере частично на основе синтаксических элементов ширины столбца ширину столбцов мозаичных элементов каждого изображения, соответствующего множеству параметров. Кроме того, видеодекодер 30 может определить по меньшей мере частично на основе синтаксических элементов высоты мозаичного элемента высоту мозаичных элементов каждого изображения, соответствующего множеству параметров.
[0133] Аналогичным образом, видеокодер 20 может сформировать множество параметров, которое включает в себя синтаксический элемент количества столбцов мозаичных элементов и синтаксический элемент количества строк мозаичных элементов. Множество параметров может являться множеством параметров изображения (PPS) или множеством параметров последовательности (SPS). Количество столбцов мозаичных элементов может быть определено на основе синтаксического элемента количества столбцов мозаичных элементов, и количество столбцов мозаичных элементов каждого изображения, соответствующего множеству параметров, равно количеству столбцов мозаичных элементов. Количество строк мозаичных элементов может быть определено на основе синтаксического элемента количества строк мозаичных элементов, и количество строк мозаичных элементов каждого изображения, соответствующего множеству параметров, равно количеству строк мозаичных элементов. Когда видеокодер 20 формирует множество параметров, видеокодер 20 может сформировать последовательность из одного или нескольких синтаксических элементов ширины столбцов и последовательность из одного или нескольких синтаксических элементов высоты строк. Ширины столбцов мозаичных элементов каждого изображения, соответствующего множеству параметров, могут быть определены по меньшей мере частично на основе синтаксических элементов ширины столбцов. Высоты строк мозаичных элементов каждого изображения, соответствующего множеству параметров, могут быть определены по меньшей мере частично на основе синтаксических элементов высоты строк.
[0134] Кроме того, в примерном синтаксисе таблицы 2, если синтаксический элемент tile_control_info_present_flag равен 1, во множестве PPS могут присутствовать синтаксические элементы tile_boundary_independence_flag and loop_filter_across_tile_flag. Если синтаксический элемент tile_control_info_present_flag равен 0, синтаксические элементы tile_boundary_independence_flag and loop_filter_across_tile_flag не присутствуют во множестве PPS.
[0135] В примерном синтаксисе таблицы 2, если флаг entropy_slice_enabled_flag равен 1, закодированные слайсы, которые ссылаются на множество PPS, могут включать в себя один или несколько энтропийных слайсов (и могут состоять из них). Если синтаксический элемент entropy_slice_enabled_flag равен 0, закодированные слайсы, которые ссылаются на множество PPS, не содержат энтропийные слайсы. Когда синтаксический элемент entropy_slice_enabled_flag не присутствует, видеодекодер 30 может автоматически определить (то есть вывести), что синтаксический элемент entropy_slice_enabled_flag равен 0. Семантика для других синтаксических элементов множества PPS может быть такой же, как семантика, определенная в HEVC WD5.
[0136] В примерном синтаксисе таблицы 2 множество PPS включает в себя синтаксический элемент entropy_slice_enabled_flag, только если синтаксический элемент tile__mode равен 0. Как описано выше, видеодекодер 30 может определить на основе синтаксического элемента tile_mode, следует ли использовать WPP для декодирования блоков CTB каждого мозаичного элемента изображения. Таким образом, видеодекодер 30 может определить на основе синтаксического элемента режима кодирования (например, tile_mode), имеющего конкретное значение, что битовый поток включает в себя дополнительный синтаксический элемент (например, entropy_slice_enabled_flag), который указывает, использованы ли энтропийные слайсы для закодированных представлений изображений, которые ссылаются на множество параметров (например, множество SPS или множество PPS), включающее в себя синтаксический элемент режима кодирования и дополнительный синтаксический элемент.
[0137] Как описано выше, элемент NAL закодированного слайса может включать в себя закодированное представление слайса. Закодированное представление слайса может включать в себя заголовок слайса, за которым следуют данными слайса. В некоторых примерах видеодекодер 30 может определить по меньшей мере частично на основе синтаксического элемента режима кодирования (например, tile_mode), включает ли в себя заголовок слайса множество синтаксических элементов смещения входа, из которых могут быть определены точки входа подпотоков в данных слайса. В ответ на определение, что заголовок слайса включает в себя синтаксические элементы смещения входа, видеодекодер 30 может использовать множество синтаксических элементов смещения входа для определения точек входа подпотоков в данных слайса. Другими словами, видеодекодер 30 может определить по меньшей мере частично на основе синтаксических элементах смещения позиции подпотоков в памяти. Если синтаксический элемент режима кодирования имеет значение (например, 3), каждая строка блоков CTB изображения представлена единственным из подпотоков. Если синтаксический элемент режима кодирования имеет другое значение (например, 0, 1 или 2), каждый мозаичный элемент изображения, который имеет один или несколько блоков CTB в слайсе, представлен единственным из подпотоков. Заголовок слайса может соответствовать примерному синтаксису представленной ниже таблицы 3.
[0138] В примерном синтаксисе таблицы 3 значении синтаксических элементов заголовка слайса "pic_parameter_set_id", "frame_num", "idr_pic_id", "pic_order_cnt_lsb", "delta_pic_order_cnt[0]" и "delta_pic_order_cnt[1]" являются одинаковыми во всех заголовках слайса закодированного изображения. Кроме того, в примерном синтаксисе таблицы 3, синтаксический элемент first_slice_in_pic_flag указывает, включает ли в себя слайс элемент CU, который охватывает верхнюю левую выборку яркости изображения. Если синтаксический элемент first_slice_in_pic_flag равен 1, видеодекодер 30 может установить обе переменные SliceAddress и LCUAddress равными 0, и видеодекодер 30 может начать декодирование с первого блока CTB в изображении.
[0139] Кроме того, в примерном синтаксисе таблицы 3 синтаксический элемент slice_address определяет в разрешении степени детализации слайса адрес, по которому начинается слайс. Разрешение степени детализации слайса - это степень детализации, с помощью которой определен слайс. Количество битов синтаксического элемента slice_address быть равным (Ceil(Log2(NumLCUsInPicture)) + SliceGranularity), где "NumLCUsInPicture" - количество блоков CTB в изображении.
[0140] В примерном синтаксисе таблицы 3 видеодекодер 30 устанавливает переменную LCUAddress равной (slice_address>>SliceGranularity). Переменная LCUAddress указывает часть элемента LCU адреса слайса в порядке растровой развертки. Видеодекодер 30 устанавливает переменную GranularityAddress равной (slice_address - (LCUAddress<<SliceGranularity)). Переменная GranularityAddress представляет часть подэлемента LCU адреса слайса. Переменная GranularityAddress выражена в порядке z-сканирования.
[0141] Видеодекодер 30 устанавливает переменную SliceAddress равной (LCUAddress<<(log2_diff_max_min_coding_block_size<<1)) + (GranularityAddress<<((log2_diff_max_min_coding_block_size<<1) - SliceGranularity)). Значение log2_diff_max_min_coding_block_size определяет разность между максимальным и минимальным размером элемента CU. Видеодекодер 30 может начать декодировать слайс с самым большим элементом CU, возможным в начальной координате слайса. Начальная координата слайса может являться координатой верхнего левого пикселя первого элемента CU слайса.
[0142] Кроме того, в примерном синтаксисе таблицы 3, синтаксический элемент cabac_init_idc синтаксис определяет индекс для определения таблицы инициализации, используемой в процессе инициализации для переменных контекста. Значение синтаксического элемента cabac_init_idc может находиться в диапазоне от 0 до 2 включительно.
[0143] В примерном синтаксисе таблицы 3 синтаксический элемент num_entry_offsets определяет количество синтаксических элементов entry_offset[i] в заголовке слайса. Другими словами, количество синтаксических элементов смещения входа во множестве синтаксических элементов смещения входа может быть определено на основе синтаксического элемента num_entry_offsets. Когда синтаксический элемент num_entry_offsets не присутствует, видеодекодер 30, может определить, что значение синтаксического элемента num_entry_offsets равно 0. Таким образом, видеодекодер 30 может определить на основе синтаксического элемента num_entry_offsets, сколько синтаксических элементов смещения находится во множестве синтаксических элементов смещения входа. Синтаксический элемент offset_len_minus8 плюс 8, определяет длину в битах синтаксических элементов entry_offset[i]. Другими словами, длина в битах каждого из синтаксических элементов смещения входа может быть определена на основе синтаксического элемента offset_len_minus8. Таким образом, видеодекодер 30 может определить на основе синтаксического элемента offset_len_minus8 длину в битах синтаксических элементов смещения. Синтаксический элемент entry_offset[i] определяет смещение i-го элемента в байтах.
[0144] Видеодекодер 30 может анализировать синтаксические элементы смещения из битового потока по меньшей мере частично на основе того, сколько синтаксических элементов смещения находится во множестве синтаксических элементов смещения, и длины в битах синтаксических элементов смещения. Количество подпотоков в элементе NAL закодированного слайса может быть равным num_entry_offsets+1. Индексные значения подпотоков могут находиться в диапазоне от 0 до num_entry_offsets включительно. Подпоток 0 из элемента NAL закодированного слайса может состоять из байтов от 0 до entry_offset[0]-1 включительно данных слайса элемента NAL закодированного слайса. Подпоток k элемента NAL закодированного слайса, где k находится в диапазоне от 1 до num_entry_offsets-1 включительно, может состоять из байтов от entry_offset[k-1] до entry_offset[k]-1 включительно данных слайса элемента NAL закодированного слайса. Последний подпоток элемента NAL закодированного слайса (с индексом подпотока, равным num_entry_offsets) может состоять из остальной части байтов данных слайса элемента NAL закодированного слайса.
[0145] В примерном синтаксисе таблицы 3, если синтаксический элемент tile_mode больше 0, каждый подпоток с индексом в диапазоне от 1 до num_entry_offsets-1 содержит каждый закодированный бит одного мозаичного элемента, и подпоток с индексом 0 содержит либо каждый закодированный бит мозаичного элемента, либо несколько конечных закодированных битов мозаичного элемента. Конечные закодированные биты мозаичного элемента представляют собой закодированные биты, закодированные в конце мозаичного элемента. Кроме того, если синтаксический элемент tile_mode больше 0, последний подпоток (то есть подпоток с индексом, равным num_entry_offsets), содержит либо все закодированные биты мозаичного элемента, либо несколько начальных закодированных битов мозаичного элемента. Начальные закодированные биты мозаичного элемента представляют собой закодированные биты, закодированные в начале мозаичного элемента. Подпоток не содержит закодированные биты более чем одного мозаичного элемента. В примерном синтаксисе таблицы 3 заголовок элемента NAL и заголовок слайса элемента NAL закодированного слайса всегда включены в подпоток 0. Если синтаксический элемент tile_mode равен 0 и синтаксический элемент entropy_slice_enabled_flag равен 1, каждый подпоток содержит каждый закодированный бит одного энтропийного слайса и не содержит закодированных битов другого энтропийного слайса.
[0146] В примерном синтаксисе таблицы 3 синтаксический элемент entropy_slice_address[i] определяет начальный адрес в разрешении степени детализации (i+1)-го энтропийного слайса в элементе NAL закодированного слайса. Размер в битах каждого из синтаксических элементов entropy_slice_address[i] могут быть равны (Ceil(Log2(NumLCUsInPicture)) + SliceGranularity).
[0147] Кроме того, в примерном синтаксисе Таблицы 3 синтаксический элемент "entropy_slice_cabac_init_idc[i]" определяет индекс для определения таблицы инициализации, используемой в процессе инициализации для переменных контекста для (i+1)-го энтропийного слайса в элементе NAL закодированного слайса. Значение entropy_slice_cabac_init_idc[i] находится в диапазоне от 0 до 2 включительно. Семантика для других синтаксических элементов заголовка слайса может быть такой же, как семантика, определенная в HEVC WD5.
[0148] В некоторых примерах синтаксические элементы entry_offset[i] указывают смещения подпотоков с точки зрения битов. Кроме того, в некоторых примерах, заголовок слайса может включать в себя флаг, который указывает, являются ли единицей измерения для "entry_offset [i]" байты (когда флаг равен 1) или биты (когда флаг равен 0). Этот флаг может быть расположен в заголовке слайса после синтаксического элемента offset_len_minus8.
[0149] Кроме того, в некоторых примерах заголовок слайса может включать в себя синтаксический элемент для каждого подпотока, в том числе подпотока 0, чтобы указать тип соответствующего подпотока. В этом примере, если синтаксический элемент для подпотока имеет первое значение, подпоток является мозаичным элементом. Если синтаксический элемент для подпотока имеет второе значение, подпоток является энтропийным слайсом.
[0150] Как упомянуто выше, закодированное представление может включать в себя заголовок слайса и данные слайса. Данные слайса могут включать в себя один или несколько подпотоков. Если синтаксический элемент режима кодирования имеет первое значение (например, 3), каждая строка блоков CTB изображения представлена единственным из подпотоков. Если синтаксический элемент имеет второе значение (например, 0, 1 или 2), каждый мозаичный элемент изображения, который имеет один или несколько блоков CTB в слайсе, представлен единственным из подпотоков. Чтобы обеспечить возможность WPP или параллельного декодирования мозаичных элементов, подпотоки в данных слайса могут включать в себя дополнительные биты, которые гарантируют выравнивание подпотоков по байту. Однако в случаях, когда в изображении имеется только один мозаичный элемент, и энтропийные слайсы не использованы, может не иметься необходимости включать такие дополнительные биты. В соответствии с этим, видеодекодер 30 может определить по меньшей мере частично на основе синтаксического элемента режима кодирования (например, tile_mode), включают ли в себя подпотоки в данных слайса дополнительные биты, которые гарантируют выравнивание подпотоков по байту.
[0151] Данные слайса могут соответствовать примерному синтаксису представленной ниже таблицы 4.
[0152] В примерном синтаксисе таблицы 4 данные слайса включают в себя функцию coding_tree(). Когда видеодекодер 30 анализирует данные слайса, видеодекодер 30 может выполнить цикл. Во время каждой итерации цикла видеодекодер 30 вызывает функцию coding_tree (), чтобы анализировать закодированный блок CTB в данных слайса. Когда видеодекодер 30 вызывает функцию coding_tree(), чтобы проанализировать конкретный закодированный блок CTB, видеодекодер 30 может выделить синтаксический элемент end_of_slice_flag из данных слайса. Если синтаксический элемент end_of_slice_flag равен 0, имеется другой блок CTB после конкретного закодированного блока CTB в слайсе или в энтропийном слайсе. Если синтаксический элемент end_of_slice_flag равен 1, конкретный закодированный блок CTB является последним закодированным блоком CTB слайса или энтропийного слайса.
[0153] Кроме того, примерный синтаксис таблицы 4 включает в себя функцию byte_index(). Функция byte_index() может возвратить индекс байта текущей позиции в пределах битов элемента NAL. Текущая позиция в пределах битов элемента NAL может являться первым непроанализированным битом элемента NAL. Если следующий бит в битовом потоке является каким-либо битом первого байта заголовка элемента NAL, функция byte_index() возвращает значение, равное 0.
[0154] Синтаксис данных слайса таблицы 4 является примером. В другом примере синтаксиса данных слайса условие if(tile_mode !=0 | | entropy_slice_enabled_flag)" таблицы 4 заменено на условие "if(tile_mode = = 1 | | tile_mode = = 2 | | entropy_slice_enabled_flag)".
[0155] Фиг. 4 является блок-схемой последовательности операций, показывающей примерную работу 200 видеокодера 20 для кодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и волн WPP в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия. Фиг. 4 представлена в качестве примера. В других примерах методики этого раскрытия могут быть реализованы с использованием большего или меньшего количества этапов или других этапов по сравнению с показанными в примере на фиг. 4.
[0156] В примере на фиг. 4 видеокодер 20 формирует первое закодированное изображение посредством кодирования изображения в соответствии с первым режимом кодирования (202). Когда видеокодер 20 кодирует изображение в соответствии с первым режимом кодирования, изображение полностью кодируется с использованием WPP. Кроме того, видеокодер 20 может сформировать второе закодированное изображение посредством кодирования изображение в соответствии со вторым режимом кодирования (204). Когда видеокодер 20 кодирует изображение в соответствии со вторым режимом кодирования, видеокодер 20 может разделить изображение на один или несколько мозаичных элементов. Видеокодер 20 может закодировать каждый мозаичный элемент изображения (то есть закодировать каждый блок CTB в каждом из мозаичных элементов) без использования WPP. Например, видеокодер 20 может закодировать блоки CTB каждого из мозаичных элементов в соответствии с порядком растровой развертки без использования WPP. Видеокодер 20 может затем выбрать первое закодированное изображение или второе закодированное изображение (206). В некоторых примерах видеокодер 20 может выбрать первое закодированное изображение или второе закодированное изображение на основе анализа скорости/искажений первого и второго закодированных изображений. Видеокодер 20 может формировать битовый поток, который включает в себя выбранное закодированное изображение и синтаксический элемент, который указывает, закодировано ли изображение в соответствии с первым режимом кодирования или в соответствии со вторым режимом кодирования (208).
[0157] Фиг. 5 является блок-схемой последовательности операций, показывающей примерную работу 220 видеодекодера 30 для декодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и WPP в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия. Фиг. 5 представлена в качестве примера.
[0158] В примере на фиг. 5 видеодекодер 30 может анализировать синтаксический элемент (222) из битового потока, который включает в себя закодированное представление изображения в видеоданных. Видеодекодер 30 может определить, имеет ли синтаксический элемент конкретное значение (224). В ответ на определение, что синтаксический элемент имеет конкретное значение ("Да" 224), видеодекодер 30 может декодировать изображение, полностью используя WPP (226). В ответ на определение, что синтаксический элемент не имеет конкретного значения ("Нет" 224), видеодекодер 30 может декодировать каждый мозаичный элемент изображения, не используя WPP, причем изображение имеет один или несколько мозаичных элементов (228).
[0159] Фиг. 6 является блок-схемой последовательности операций, показывающей примерную работу 230 видеодекодера 30 для декодирования видеоданных, в которых не разрешены комбинации мозаичных элементов и WPP в пределах одного изображения, в соответствии с одним или несколькими аспектами этого раскрытия. Фиг. 6 представлена в качестве примера. В других примерах методики этого раскрытия могут быть реализованы с использованием большего или меньшего количества этапов или других этапов по сравнению с показанными в примере на фиг. 6. Фиг. 6 может являться более конкретным примером операции 220 на фиг. 5.
[0160] В примере на фиг. 6 видеодекодер 30 принимает битовый поток (231). Видеодекодер 30 может выделяет из битового потока синтаксический элемент (232). В некоторых примерах битовый поток включает в себя множество SPS, которое включает в себя синтаксический элемент. В других примерах битовый поток включает в себя множество PPS, которое включает в себя синтаксический элемент.
[0161] Затем видеодекодер 30 может определить, имеет ли синтаксический элемент первое значение, например, 0 (234). В примере на фиг. 6, если синтаксический элемент имеет первое значение ("Да" 234), изображение имеет единственный мозаичный элемент, и видеодекодер 30 может декодировать единственный мозаичный элемент изображения без использования WPP (236).
[0162] Однако если синтаксический элемент не имеет первого значения ("Нет" 234), видеодекодер 30 может определить, имеет ли синтаксический элемент второе значение, например, 1 (238). В ответ на определение, что синтаксический элемент имеет второе значение ("Да" 238), видеодекодер 30 может определить, что изображение имеет несколько, мозаичных элементов с однородными интервалами, и видеодекодер 30 может декодировать каждый из мозаичных элементов с однородными интервалами без использования WPP (238).
[0163] С другой стороны, если синтаксический элемент не имеет второго значения ("Нет" 238), видеодекодер 30 может определить, имеет ли синтаксический элемент третье значение, например, 2 (242). В ответ на определение, что синтаксический элемент имеет третье значение ("Да" 242), видеодекодер 30 может определить, что изображение имеет несколько мозаичных элементов с неоднородными интервалами, и видеодекодер 30 может декодировать мозаичные элементы с неоднородными интервалами изображения без использования WPP (244). Однако в ответ на определение, что синтаксический элемент не имеет третьего значения ("Нет" 242), видеодекодер 30 может декодировать изображение, полностью используя WPP (246). Таким образом, если синтаксический элемент имеет первое значение (например, 3), изображение полностью закодировано с использованием WPP, и если синтаксический элемент имеет второе значение, отличающееся от первого значения (например, 0, 1 или 2), изображение разделено на один или несколько мозаичных элементов, и изображение закодировано без использования WPP.
[0164] Фиг. 7 является блок-схемой последовательности операций, показывающей примерную работу 270 видеокодера 20 для кодирования видеоданных, в которых каждая строка блоков CTB изображения находится в отдельном подпотоке, в соответствии с одним или несколькими аспектами этого раскрытия. В некоторых системах видеокодирования имеются разные способы сигнализировать точки входа для мозаичных элементов и волн WPP. Это может добавить сложность к этим системам видеокодирования. Методики этого раскрытия, как объяснено относительно фиг. 7 и 8, могут решить эти вопросы, обеспечивая унифицированный синтаксис для указания точек входа мозаичных элементов, волн WPP и, в некоторых примерах, энтропийных слайсов.
[0165] В примере на фиг. 7 видеокодер 20 сигнализирует, что WPP используется для кодирования изображения из последовательности видеоизображений (272). Видеокодер 20 может сигнализировать различными способами, что WPP используется для кодирования изображения. Например, видеокодер 20 может сформировать множество SPS, которое включает в себя синтаксический элемент (например, "tile_mode"), который указывает, должен ли использоваться WPP, чтобы полностью декодировать изображение. В другом примере видеокодер 20 может сформировать множество PPS, которое включает в себя синтаксический элемент (например, "tile_mode"), который указывает, должен ли WPP использоваться для декодирования изображения.
[0166] Кроме того, видеокодер 20 может выполнить WPP для формирования множества подпотоков (274). Каждый из подпотоков может включать в себя последовательную серию битов, которая представляет одну закодированную строку блоков CTB в слайсе изображения. Таким образом, каждая строка блоков CTB закодирована как один подпоток. Видеокодер 20 может сформировать элемент NAL закодированного слайса, который включает в себя множество подпотоков (276). Элемент NAL закодированного слайса может включать в себя заголовок слайса и данные слайса, которые соответствуют примерным синтаксисам представленных выше таблиц 3 и 4.
[0167] Фиг. 8 является блок-схемой последовательности операций, показывающей примерную работу 280 видеодекодера 30 для декодирования видеоданных, в которых каждая строка блоков CTB изображения находится в отдельном подпотоке, в соответствии с одним или несколькими аспектами этого раскрытия. В примере на фиг. 8 видеодекодер 30 принимает битовый поток, который включает в себя элемент NAL закодированного слайса (282). Элемент NAL закодированного слайса включает в себя множество подпотоков. Каждый из подпотоков может включать в себя последовательную серию битов, которая представляет одну строку блоков CTB в слайсе изображения. Кроме того, в примере на фиг. 8 видеодекодер 30 определяет на основе одного или нескольких синтаксических элементах в битовом потоке, что слайс закодирован с использованием WPP (284). Например, видеодекодер 30 может определить на основе синтаксического элемента tile_mode, равного 3, что слайс закодирован с использованием WPP. В этом примере, если синтаксический элемент tile_mode не равен 3, видеодекодер 30 может декодировать каждый один или несколько мозаичных элементов изображения без использования WPP.
[0168] Затем видеодекодер 30 может декодировать слайс с использованием WPP (286). Когда видеодекодер 30 декодирует слайс, видеодекодер 30 может проанализировать синтаксические элементы, соответствующие блокам CTB слайса. Видеодекодер 30 может выполнить процесс анализа кодирования CABAC над некоторыми из синтаксических элементов как часть анализа синтаксических элементов, соответствующих блокам CTB.
[0169] Фиг. 9A является блок-схемой последовательности операций, показывающей первую часть примерного процесса 300 анализа кодирования CABAC для анализа данных слайса в соответствии с одним или несколькими аспектами этого раскрытия. Видеодекодер 30 может выполнить процесс на фиг. 9A посредством анализа синтаксических элементов с дескриптором ae(v) в данных слайса и в синтаксисе древовидного кодирования. Процесс на фиг. 9A может выдать значение синтаксического элемента.
[0170] В примере фиг. 9A секция 150 энтропийного декодирования видеодекодера 30 выполняет инициализацию процесса анализа кодирования CABAC (302). В некоторых примерах инициализация процесса анализа кодирования CABAC является такой же, как описано в подпункте 9.2.1 HEVC WD5.
[0171] Кроме того, секция 150 энтропийного декодирования может определить адрес соседнего блока CTB (304). Соседний блок CTB может являться блоком CTB, который содержит блок, который граничит с текущим блоком CTB (то есть блок CTB, который видеодекодер 30 декодирует в настоящий момент) слева, сверху слева, сверху или сверху справа. В некоторых примерах секция 150 энтропийного декодирования может определить адрес соседнего блока CTB как:
tbAddrT = cuAddress(x0+2*(1<<Log2MaxCUSize) - 1, y0-1)
В формуле выше tbAddrT обозначает адрес соседнего блока CTB, x0 обозначает координату x верхней левой выборки яркости текущего блока CTB, y0 обозначает координату y верхней левой выборки яркости текущего блока CTB, и Log2MaxCUSize обозначает логарифм по основанию 2 максимального размера элемента CU. Функция cuAddress возвращает адрес элемента CU, который включает в себя координату x, определенную первым параметром, и координату y, определенную вторым параметром.
[0172] Затем, секция 150 энтропийного декодирования может использовать адрес соседнего блока CTB, чтобы определить доступность соседнего блока CTB для предсказания внутри изображения (306). Другими словами, секция 150 энтропийного декодирования может определить, доступна ли информация, соответствующая соседнему блоку CTB, для использования при выборе контекста CABAC.
[0173] Секция 150 энтропийного декодирования может определить доступность соседнего блока CTB для предсказания внутри изображения различными способами. Например, секция 150 энтропийного декодирования может выполнить процесс, описанный в подпункте 6.4.3 WD5, с tbAddrT в качестве входной информации, чтобы определить доступность соседнего блока CTB для предсказания внутри изображения. В другом примере секция 150 энтропийного декодирования может определить, что блок CTB доступен для предсказания внутри изображения, если одно из следующих условий не является истинным. Если одно из следующих условий является истинным, секция 150 энтропийного декодирования может определить, что блок CTB недоступен для предсказания внутри изображения. Во-первых, секция 150 энтропийного декодирования может определить, что блок CTB недоступен для предсказания внутри изображения, если адрес блока CTB меньше 0. Во-вторых, секция 150 энтропийного декодирования может определить, что блок CTB недоступен для предсказания внутри изображения, если адрес блока CTB больше адреса блока CTB, который секция 150 энтропийного декодирования в настоящий момент анализирует. В-третьих, секция 150 энтропийного декодирования может определить, что конкретный блок CTB недоступен для предсказания внутри изображения, если конкретный блок CTB принадлежит другому слайсу по сравнению с блоком CTB, который секция 150 энтропийного декодирования анализирует в настоящий момент. Например, если адрес конкретного блока CTB обозначен как tbAddr и адрес блока CTB, который в настоящий момент анализирует секция 150 энтропийного декодирования 150, обозначен как CurrTbAddr, секция 150 энтропийного декодирования может определить, что блок CTB с адресом tbAddr принадлежит другому слайсу по сравнению с блоком CTB с адресом CurrTbAddr. В-четвертых, секция 150 энтропийного декодирования 150 может определить, что блок CTB недоступен для предсказания внутри изображения, если один или несколько синтаксических элементов в битовом потоке указывают, что мозаичные элементы изображения, которое в настоящий момент декодирует видеодекодер 30, являются независимо декодируемыми, и блок CTB находится в другом мозаичном элементе по сравнению с блоком CTB, который секция 150 энтропийного декодирования анализирует в настоящий момент. Например, секция 150 энтропийного декодирования может определить, что блок CTB недоступен для предсказания внутри изображения, если синтаксический элемент tile_boundary_independence_flag мозаичного элемента примерного синтаксиса таблицы 1 равен 1, и блок CTB с адресом tbAddr содержится в другом мозаичном элементе по сравнению с блоком CTB с адресом CurrTbAddr.
[0174] Кроме того, секция 150 энтропийного декодирования может определить, находится ли синтаксический элемент, который в настоящий момент анализирует секция 150 энтропийного декодирования (то есть текущий синтаксический элемент) в синтаксической структуре древовидного кодирования (308). Если текущий синтаксический элемент не находится в синтаксической структуре древовидного кодирования ("Нет" 308), секция 150 энтропийного декодирования может выполнить часть процесса 300 анализа кодирования CABAC, показанную на фиг. 9B. С другой стороны, если текущий синтаксический элемент находится в структуре древовидного кодирования ("Да" 308), секция 150 энтропийного декодирования может определить, являются ли мозаичные элементы текущего изображения (то есть изображения, которое включает в себя текущий блок CTB) независимо декодируемыми (310). Например, в примерном синтаксисе множества SPS таблицы 1 секция 150 энтропийного декодирования может определить, что мозаичные элементы текущего изображения являются независимо декодируемыми, если множество SPS, соответствующее текущему изображению, включает в себя синтаксический элемент tile_boundary_independence_flag мозаичного элемента, который равен 1. В ответ на определение, что мозаичные элементы текущего изображения являются независимо декодируемыми ("Да" 310), секция 150 энтропийного декодирования может выполнить часть процесса 300 анализа кодирования CABAC, показанную на фиг. 9B.
[0175] Однако в ответ на определение, что мозаичные элементы текущего изображения не являются независимо декодируемыми ("Нет" 310), секция 150 энтропийного декодирования может определить, равно ли tbAddr % picWidthInLCUs нулю, где tbAddr - адрес соседнего блока CTB, % обозначает оператор деления по модулю, и picWidthInLCUs указывает ширину текущего изображения в блоках CTB (то есть элементах LCU) (312).
[0176] В ответ на определение, что tbAddr % picWidthlnLCUs равно нулю ("Да" 312), секция 150 энтропийного декодирования может определить, доступен ли соседний блок CTB для предсказания внутри изображения (314). В некоторых примерах секция 150 энтропийного декодирования может выполнить на этапе 306 процесс для определения значения переменной availableFlagT, которая указывает, доступен ли соседний блок CTB для предсказания внутри изображения. Если переменная availableFlagT равна 1, соседний блок CTB доступен для предсказания внутри изображения. На этапе 314 секция 150 энтропийного декодирования может определить, равна ли переменная availableFlagT единице.
[0177] В ответ на определение, что соседний блок CTB доступен для предсказания внутри изображения ("Да" 314), секция 150 энтропийного декодирования может выполнить процесс синхронизации процесса анализа кодирования CABAC (316). В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс синхронизации, описанный в подпункте 9.2.1.3 HEVC WD5. После выполнения процесса синхронизации или в ответ на определение, что соседний блок CTB не доступен для предсказания внутри изображения ("Нет" 314), секция 150 энтропийного декодирования может выполнить процесс декодирования для выборов из двух альтернатив перед завершением (318). В целом процесс декодирования для выборов из двух альтернатив перед завершением представляет собой специальный процесс декодирования для энтропийного декодирования синтаксических элементов end_of_slice_flag и pcm_flag. Видеодекодер 30 может использовать end_of_slice_flag и pcm_flag для выполнения выбора из двух альтернатив перед завершением процесса анализа данных слайса. В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс декодирования для выборов из двух альтернатив перед завершением, как определено в подпункте 9.2.3.2.4 HEVC WD5.
[0178] После выполнения процесса декодирования для выборов из двух альтернатив перед завершением (318) секция 150 энтропийного декодирования может выполнить процесс инициализации для механизма арифметического декодирования (320). В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс инициализации, определенный в подпункте 9.2.1.4 HEVC WD5. После выполнения процесса инициализации для механизма арифметического декодирования секция 150 энтропийного декодирования может выполнить часть процесса 300 анализа кодирования CABAC, показанную на фиг. 9B.
[0179] Если tbAddr % picWidthInLCUs не равно 0 ("Нет" 312), секция 150 энтропийного декодирования может определить, является ли tbAddr % picWidthInLCUs равным 2 (322). Другими словами, секция 150 энтропийного декодирования может определить, равен ли 2 адрес блока CTB соседнего блока CTB, деленный по модулю на ширину текущего изображения в блоках CTB. В ответ на определение, что tbAddr % picWidthInLCUs не равно 2, секция 150 энтропийного декодирования может выполнить часть процесса 300 анализа кодирования CABAC, показанную на фиг. 9B. Однако в ответ на определение, что tbAddr % picWidthInLCUs равно 2 ("Да" 322), секция 150 энтропийного декодирования может выполнить процесс запоминания (324). В целом процесс запоминания выдает переменные, используемые в процессе инициализации переменных контекста, которые присвоены синтаксическим элементам, отличающимся от синтаксического элемента end_of_slice_flag. В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс запоминания, определенный в подпункте 9.2.1.2 HEVC WD5. После выполнения процесса запоминания секция 150 энтропийного декодирования может выполнить часть процесса 300 анализа кодирования CABAC, показанную на фиг. 9B.
[0180] Фиг. 9B является блок-схемой последовательности операций, показывающей продолжение примерного процесса 300 анализа кодирования CABAC, показанного на фиг. 9A. Как показано на фиг. 9B, секция 150 энтропийного декодирования может выполнить бинаризацию текущего синтаксического элемента (330). Другими словами, секция 150 энтропийного декодирования может вывести бинаризацию текущего синтаксического элемента. Бинаризация синтаксического элемента может представлять собой множество строк диапазонов всех возможных значений синтаксического элемента. Строка диапазонов представляет собой строку диапазонов, которая является промежуточным представлением значений синтаксических элементов из бинаризации синтаксического элемента. В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс, определенный в подпункте 9.2.2 HEVC WD5, чтобы вывести бинаризацию текущего синтаксического элемента.
[0181] Кроме того, секция 150 энтропийного декодирования может определить поток процесса кодирования (332). Секция 150 энтропийного декодирования может определить поток процесса кодирования на основе бинаризации текущего синтаксического элемента и последовательности проанализированных диапазонов. В некоторых примерах секция 150 энтропийного декодирования может определить поток процесса кодирования, как описано в подпункте 9.2.2.9 HEVC WD5.
[0182] Кроме того, секция 150 энтропийного декодирования может определить индекс контекста для каждого диапазона бинаризации текущего синтаксического элемента (334). Каждый из диапазонов бинаризации текущего синтаксического элемента индексирован переменной binIdx, и индекс контекста для диапазона бинаризации текущего синтаксического элемента может быть обозначен как ctxIdx. В некоторых примерах секция 150 энтропийного декодирования может определить индекс контекста для диапазона бинаризации текущего синтаксического элемента, как определено в подпункте 9.2.3.1 HEVC WD5.
[0183] Секция 150 энтропийного декодирования может выполнить процесс арифметического декодирования для каждого индекса контекста (336). В некоторых примерах секция 150 энтропийного декодирования может выполнить процесс арифметического декодирования для каждого индекса контекста, как определено в подпункте 9.2.3.2 HEVC WD5. Посредством выполнения процесса арифметического декодирования для каждого индекса контекста секция 150 энтропийного декодирования может сформировать последовательность проанализированных диапазонов.
[0184] Секция 150 энтропийного декодирования может определить, соответствует ли последовательность проанализированных диапазонов строке диапазонов во множестве строк диапазонов, произведенных посредством бинаризации текущего синтаксического элемента (340). Если последовательность проанализированных диапазонов соответствует строке диапазонов во множестве строк диапазонов, произведенных посредством бинаризации текущего синтаксического элемента ("Да" 340), секция 150 энтропийного декодирования может присвоить соответствующее значение текущему синтаксическому элементу (342). После присвоения соответствующего значения текущему синтаксическому элементу или в ответ на определение, что последовательность проанализированных диапазонов не соответствует строке диапазонов во множестве строк диапазонов, произведенных посредством бинаризации текущего синтаксического элемента ("Нет" 340), секция 150 энтропийного декодирования заканчивает анализировать текущий синтаксический элемент.
[0185] В некоторых примерах, если текущий синтаксический элемент является - синтаксическим элементом mb_type, и декодированное значение синтаксического элемента mb_type равно I_PCM, секция 150 энтропийного декодирования может быть инициализирована после декодирования какого-либо синтаксического элемента pcm_alignment_zero_bit и всех данных pcm_sample_luma и pcm_sample_chroma, как определено в подпункте 9.2.1.2 HEVC WD5.
[0186] Фиг. 10 является концептуальной схемой, которая иллюстрирует пример WPP. Как описано выше, изображение может быть разделено на пиксельные блоки, каждый из которых соответствует блоку CTB. Фиг. 10 иллюстрирует пиксельные блоки, соответствующие блокам CTB, как решетку белых квадратов. Изображение включает в себя строки 350A-350E блоков CTB (все вместе "строки 350 блоков CTB").
[0187] Первый поток параллельной обработки (например, исполняемый одним из множества ядер параллельной обработки) может кодировать блоки CTB в строке 350A блоков CTB. Одновременно другие потоки (например, исполняемые другими ядрами параллельной обработки) могут кодировать блоки CTB в строках 350B, 350C и 350D блоков CTB. В примере на фиг. 10 первый поток в настоящий момент кодирует блок 352A CTB, второй поток в настоящий момент кодирует блок 352B CTB, третий поток в настоящий момент кодирует блок 352C CTB, и четвертый поток в настоящий момент кодирует блок 352D CTB. Это раскрытие может называть блоки 352A, 352B, 352C и 352D CTB все вместе как "текущие блоки 352 CTB". Поскольку устройство видеокодирования может начать кодировать строку блока CTB после того, как были закодированы более двух блоков CTB непосредственно над строкой, текущие блоки 352 CTB горизонтально смещены друг от друга на ширину двух блоков CTB.
[0188] В примере на фиг. 10 потоки могут использовать данные из блоков CTB, обозначенных толстыми серыми стрелками, для выполнения интра-предсказания или интер-предсказания для элементов CU в текущих блоках 352 CTB. (Потоки также могут использовать данные из одного или нескольких опорных кадров для выполнения интер-предсказания для элементов CU.) Чтобы закодировать данный блок CTB, поток может выбрать один или несколько контекстов кодирования CABAC на основе информации, соответствующей ранее закодированным блокам CTB. Поток может использовать один или несколько контекстов кодирования CABAC для выполнения кодирования CABAC над синтаксическими элементами, соответствующими первому элементу CU данного блока CTB. Если данный блок CTB не является самым левым блоком CTB строки, поток может выбрать один или несколько контекстов кодирования CABAC на основе информации, соответствующей последнему элементу CU блока CTB слева от данного блока CTB. Если данный блок CTB является самым левым блоком CTB строки, поток может выбрать один или несколько контекстов кодирования CABAC на основе информации, соответствующей последнему элементу CU блока CTB, который находится сверху и на два блока CTB правее данного блока CTB. Потоки могут использовать данные из последних элементов CU блоков CTB, обозначенных тонкими черными стрелками, чтобы выбрать контексты кодирования CABAC для первых элементов CU текущих блоков 352 CTB.
[0189] Фиг. 11 является концептуальной схемой, которая показывает примерный порядок кодирования блоков CTB для изображения 400, которое разделено на несколько мозаичных элементов 402A, 402B, 402C, 402D, 402E и 402F (все вместе "мозаичные элементы 402"). Каждый квадратный блок в изображении 400 представляет пиксельный блок, соответствующий блоку CTB. Толстые пунктирные линии указывают примерные границы мозаичного элемента. Разные типы штриховки соответствуют разным слайсам.
[0190] Номера в пиксельных блоках указывают позиции соответствующих блоков CTB (элементов LCU) в порядке кодирования мозаичных элементов для изображения 400. Как проиллюстрировано в примере на фиг. 11, сначала кодируются блоки CTB в мозаичном элементе 402A, затем блоки CTB в мозаичном элементе 402B, затем блоки CTB в мозаичном элементе 402C, затем блоки CTB в мозаичном элементе 402D, затем блоки CTB в мозаичном элементе 402E, затем блоки CTB в мозаичном элементе 402F. В пределах каждого из мозаичных элементов 402 блоки CTB кодируются в соответствии с порядком растровой развертки.
[0191] Видеокодер может сформировать четыре элемента NAL закодированного слайса для изображения 400. Первый элемент NAL закодированного слайса может включать в себя закодированные представления блоков 1-18 CTB. Данные слайса первого элемента NAL закодированного слайса могут включать в себя два подпотока. Первый подпоток может включать в себя закодированные представления блоков 1-9 CTB. Второй подпоток может включать в себя закодированные представления блоков 10-18 CTB. Таким образом, первый элемент NAL закодированного слайса может включать в себя закодированное представление слайса, которое содержит несколько мозаичных элементов.
[0192] Второй элемент NAL закодированного слайса может включать в себя закодированные представления блоков 19-22 CTB. Данные слайса второго элемента NAL закодированного слайса могут включать в себя единственный подпоток. Третий элемент NAL закодированного слайса может включать в себя закодированные представления блоков 23-27 CTB. Данные слайса третьего элемента NAL закодированного слайса могут включать в себя только единственный подпоток. Таким образом, мозаичный элемент 402C может содержать несколько слайсов.
[0193] Четвертый элемент NAL закодированного слайса может включать в себя закодированные представления блоков 28-45 CTB. Данные слайса четвертого элемента NAL закодированного слайса могут включать в себя три подпотока, по одному для каждого мозаичного элемента 402D, 402E и 402F. Таким образом, четвертый элемент NAL закодированного слайса может включать в себя закодированное представление слайса, который содержит несколько мозаичных элементов.
[0194] В одном или нескольких примерах описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, программируемом оборудовании или любой их комбинации. Если функции реализованы в программном обеспечении, они могут быть сохранены или переданы как одна или несколько команд или код, компьютерно-читаемый носитель и исполнены аппаратным блоком обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые запоминающие носители, которые соответствуют материальным носителям, таким как носители данных, или средства связи, включающие в любую среду, которая обеспечивает возможность передачи компьютерной программы от одного места на другое, например, в соответствии с протоколом связи. Таким образом, компьютерно-читаемые носители обычно могут соответствовать (1) материальным компьютерно-читаемым запоминающим носителям, которые являются непереходными, или (2) среде связи, такой как сигнал или несущая. Запоминающие носители данных могут быть любыми доступными носителями, к которым могут получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0195] В качестве примера, но без ограничения, такие компьютерно-читаемые носители могут содержать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), компакт-диск (CD-ROM) или другую память на оптическом диске, память на магнитном диске или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в виде команд или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение правильно называть компьютерно-читаемым носителем. Например, если команды переданы с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводной технологии, такой как инфракрасное, радиочастотное и микроволновое излучение, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное, радиочастотное и микроволновое излучение включены в определение носителя. Однако следует понимать, что компьютерно-читаемые запоминающие носители данных не включают в себя соединения, несущие, сигналы или другие переходные носители, но вместо этого направлены на непереходные, материальные носители. Используемый здесь термин "диск" включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем диски обычно воспроизводят данные магнитным способом или оптическим способом с помощью лазера. Комбинации упомянутого выше также должны быть включены в контекст компьютерно-читаемых носителей.
[0196] Команды могут быть исполнены одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегрированных или дискретных логических схем. В соответствии с этим используемый здесь термин "процессор" может относиться к любой упомянутой структуре или любой другой структуре, подходящей для реализации описанных здесь методик. Кроме того, в некоторых аспектах описанная здесь функциональность может быть обеспечена в пределах специализированных аппаратных средств и/или программных модулей, сконфигурированных для кодирования и декодирования или встроенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
[0197] Методики этого раскрытия могут быть реализованы в широком разнообразии устройств, в том числе в беспроводном телефоне, интегральной схеме (IC) или множестве интегральных схем (например, в чипсете). Различные компоненты, модули или элементы описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнять раскрытые методики, но не обязательно требуют реализации разными аппаратными элементами. Вместо этого, как описано выше, различные элементы могут быть объединены в аппаратном модуле кодека или обеспечены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или несколько процессоров, как описано выше, вместе с подходящим программным обеспечением и/или программируемым оборудованием.
[0198] Были описаны различные примеры. Эти и другие примеры находятся в объеме следующей формулы изобретения.