Буферизация данных предсказания при кодировании видео

Изобретение относится к средствам кодирования видео. Техническим результатом является устранение избыточности в видеопоследовательности за счет ограничения количества буферизующейся во время кодирования информации предсказания из соседних блоков. Способ содержит определение режима внутреннего предсказания для блока видеоданных, включенного в кодированный элемент видеоданных и расположенного ниже верхней строки верхних соседних блоков в кодированном элементе, определение режима внутреннего предсказания осуществляется на основе самого вероятного режима внутреннего предсказания, основанного на режиме внутреннего предсказания из других блоков в кодированном элементе, но не на основе режима внутреннего предсказания из блоков верхней строки в кодированном элементе, кодирование блока на основе определенного режима внутреннего предсказания. 4 н. и 44 з.п. ф-лы, 18 ил.

 

[0001] По настоящей заявке испрашивается приоритет в соответствии с предварительной заявкой на патент США № 61/509,933, поданной 20 июля 2011 года, и предварительной заявкой на патент США № 61/522,136, поданной 10 августа 2011 года, полное содержание каждой из которых включено сюда посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0002] Это раскрытие относится к кодированию видео и, точнее, к энтропийному кодированию видеоданных.

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

[0003] Возможности цифрового видео могут применяться для широкого спектра устройств, включая цифровое телевидение, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), портативные и настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, устройства для видеоигр, игровые видеоприставки, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства для видеоконференц-связи, устройства для распространения потокового видео и т.п. Цифровые видеоустройства реализуют методики сжатия видео, такие как те, что описываются в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, стандарте усовершенствованного кодирования видео (AVC), стандарте кодирования видео высокой эффективности (HEVC), сейчас находящемся в разработке, и дополнениях к таким стандартам. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию более эффективно путем применения таких методик сжатия видео.

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

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

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

[0006] В общем, это раскрытие описывает методики для кодирования видеоданных. Например, методики по данному раскрытию включают в себя уменьшение количества данных, которые буферизуются при выполнении методик предсказания при кодировании видео. То есть пространственное предсказание (то есть внутреннее предсказание) или временное предсказание (то есть внешнее предсказание) может использоваться для снижения или устранения избыточности в видеопоследовательности. При кодировании видео на основе блоков видеоданные из одного блока могут использоваться как информация предсказания для одного или нескольких блоков видеоданных. Информация предсказания, связанная с одним или несколькими соседними блоками блока, кодируемого в настоящий момент, может храниться (то есть буферизоваться) так, что информация предсказания доступна для кодирования текущего блока. Методики этого раскрытия относятся к ограничению количества информации предсказания из соседних блоков, которая буферизуется во время кодирования. В соответствии с некоторыми аспектами этого раскрытия устройство для кодирования видео может избегать использования информации предсказания из блоков видеоданных, которые располагаются над блоком видеоданных, который кодируется в текущий момент (например, именуемые «верхние соседние блоки»), при кодировании текущего блока.

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

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

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

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

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

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

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

[0013] Фиг. 2 представляет собой блок-схему, иллюстрирующую примерный видеокодер, который может применять методики, описанные в этом раскрытии.

[0014] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеодекодер, который может применять методики, описанные в этом раскрытии.

[0015] Фиг. 4А и фиг. 4В представляют собой концептуальные схемы, иллюстрирующие примерное квадрадерево и соответствующий самый большой элемент кодирования (LCU).

[0016] Фиг. 5 представляет собой схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определен наиболее вероятный внутренний режим.

[0017] Фиг. 6 представляет собой схему, иллюстрирующую примерные точки расположения для кандидатов для предиктора вектора движения.

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

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

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

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

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

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

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

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

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

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

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

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

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

[0030] Устройство для кодирования видео может пытаться сжимать видеоданные путем использования пространственной и/или временной избыточности. Например, видеокодер может воспользоваться пространственной избыточностью путем кодирования блока относительно соседних, прежде кодированных блоков. Подобным образом, видеокодер может воспользоваться временной избыточностью путем кодирования блока относительно данных прежде кодированных изображений. В частности, видеокодер может осуществлять предсказание текущего блока исходя из данных пространственного соседа или из данных прежде кодированного изображения. Затем видеокодер может вычислять остаток для блока как разность между действительными значениями пикселя для блока и предсказанными значениями пикселя для блока. Соответственно, остаток для блока может включать в себя значения разности пиксель-за-пикселем в пиксельной (или пространственной) области.

[0031] Что касается внутреннего кодирования, то видеокодер может генерировать предиктивный блок в соответствии с определенным заранее режимом внутреннего кодирования. Видеокодер может вычитать значения предиктивного блока из значения блока, кодируемого в настоящий момент, чтобы получить блок остаточных данных. Видеокодер может передавать режим внутреннего предсказания и блок остаточных данных в кодированном битовом потоке, который может быть декодирован декодером. Декодер может генерировать такой же предиктивный блок (например, используя тот же режим внутреннего предсказания) и воссоздавать кодированный видеоблок путем комбинирования остаточных данных с данными предиктивного блока.

[0032] Новый стандарт HEVC может использовать не менее тридцати пяти или более режимов внутреннего предсказания. Чтобы сократить количество битов, необходимых для передачи режима внутреннего предсказания, выбранного видеокодером, видеокодер может идентифицировать режимы внутреннего предсказания для уже кодированных видеоблоков, таких как один или несколько пространственно соседних блоков. На основе режимов внутреннего предсказания эти соседних блоков видеокодер может идентифицировать наиболее вероятный режим внутреннего предсказания для текущего видеоблока. Наиболее вероятный режим внутреннего предсказания представляет собой режим внутреннего предсказания, который наиболее вероятно будет использоваться для кодирования текущего видеоблока на основе контекста для текущего блока. Контекст может, например, определяться некоторой комбинацией режимов внутреннего предсказания, используемых для соседних блоков, размером текущего блока и другими факторами. Факторы, используемые видеокодером, чтобы определить контекст для текущего видеоблока, также актуальны для видеодекодера. Так, наиболее вероятный режим внутреннего предсказания, определенный видеокодером, также может определен видеодекодером без необходимости явно передаваться к видеодекодеру. Наиболее вероятный режим внутреннего предсказания может быть, а может и не быть одним и таким же, что и режим внутреннего предсказания, фактически используемый, чтобы кодировать текущий блок. Действительный режим внутреннего предсказания может быть определен видеокодером на основе того, какой режим внутреннего предсказания формирует лучшее качество восстановленного видео.

[0033] Видеокодер может генерировать синтаксический элемент для включения в битовый поток, отражающий, является ли наиболее вероятный режим внутреннего предсказания таким же, как и действительный режим предсказания для текущего видеоблока. Синтаксический элемент может, например, быть одним битом, где «1» отражает, что действительный режим внутреннего предсказания является наиболее вероятным режимом внутреннего предсказания, а «0» отражает, что действительный режим внутреннего предсказания не является наиболее вероятным режимом внутреннего предсказания. Так, когда действительный режим внутреннего предсказания для текущего видеоблока является наиболее вероятным режимом внутреннего предсказания, действительный режим внутреннего предсказания для текущего видеоблока может быть передан от кодера к декодеру при использовании одного бита («1» в этом примере). В примерах, где действительный режим внутреннего предсказания не является наиболее вероятным режимом внутреннего предсказания, действительный режим внутреннего предсказания может быть передан с кодовым словом, следующим за первым битом (то есть первый бит «0», за которым следует кодовое слово).

[0034] Что касается внешнего кодирования, видеокодер может генерировать вектор движения, чтобы идентифицировать предиктивный блок видеоданных, например, из другого видеоизображения или фрагмента, который может использоваться для предсказания значения блока, кодируемого в настоящий момент. Видеокодер может вычитать значения предиктивного блока из значений текущего блока, чтобы создать блок остаточных данных. В общем, видеокодер может передавать вектор движения и остаточные данные в кодированном битовом потоке, который может быть декодирован декодером. Декодер может располагать один и тот же предиктивный блок (например, на основе вектора движения) среди группы декодированных блоков в декодированном буфере изображений и восстанавливать кодированный видеоблок путем сочетания остаточных данных с данными предиктивного блока.

[0035] В некоторых случаях кодирование с предсказанием векторов движения также применяется, чтобы дополнительно сократить количество данных, необходимых для сообщения вектора движения. В этом случае, вместо кодирования и передачи самого вектора движения, кодер кодирует и передает разность вектора движения (MVD) относительно известного (или узнаваемого) вектора движения. Известный вектор движения, который может использоваться с MVD, чтобы определить текущий вектор движения, может быть определен так называемым предиктором вектора движения (MVP).

[0036] Может применяться процесс, именуемый в новом стандарте HEVC адаптивным предсказанием вектора движения (AMVP) и в котором группа кандидатов векторов движения строится из нескольких соседних блоков в пространственном и временном направлениях. Группа кандидатов векторов движения включает в себя множество кандидатов MVP. В этом случае видеокодер выбирает наиболее точный предиктор из группы кандидатов на основе анализа скорости кодирования и искажения (например, используя так называемый анализ затрат скорости-искажения). Индекс предиктора вектора движения (mvp_idx) может передаваться к видеодекодеру, чтобы сообщить декодеру, где расположить MVP, то есть какой из кандидатов MVP должен использоваться для декодирования. MVD также передается. Декодер может комбинировать MVD с MVP (определенный индексом предиктора вектора движения), чтобы восстановить вектор движения.

[0037] Так называемый «режим слияния» также может быть доступен, в нем информация движения (например, векторы движения, индексы опорного предсказания, направления предсказания или другая информация) соседнего видеоблока наследуется от текущего видеоблока, подвергаемого кодированию. Значение индекса может использоваться, чтобы идентифицировать соседа, от которого текущий видеоблок наследует информацию движения (например, от верхнего, верхнего правого, левого или совмещенного с временно смежным кадром). Режим слияния использует информацию движения одного из нескольких блоков-кандидатов, но не полагается на MVD.

[0038] Соответственно, это раскрытие в общем именует «информацию предсказания» информацией внутреннего предсказания и/или информацией внешнего предсказания для генерации предиктивного блока видеоданных. То есть, что касается внутреннего кодирования, информация предсказания может относиться к режиму внутреннего кодирования, используемому, чтобы кодировать блок видеоданных. Информация предсказания также может относиться к режимам внутреннего кодирования соседних блоков, в которых в примерах такие соседние режимы внутреннего кодирования используются для кодирования блока (например, с использованием процесса вывода наиболее вероятного режима, описанного выше). Дополнительно или в качестве альтернативы, для внешнего предсказания информация предсказания может относиться к информации движения (например, векторам движения, индексам опорного изображения, направлениям предсказания или другой информации), используемой, чтобы кодировать блок видеоданных. Информация предсказания также может относиться к информации движения соседних блоков, в которых в примерах такая соседняя информация движения используется для кодирования блока (например, с использованием процессов AMVP и режима слияния, описанных выше).

[0039] В любом случае информация предсказания может храниться в так называемом «линейном буфере» - так, что информация предсказания доступна для ссылки во время кодирования. Что касается внутреннего кодирования, то видеокодер может хранить информацию движения (например, векторы движения (mvx, mvy), индексы опорного изображения (ref_idx), направления предсказания (inter_dir) или другую информацию) для каждого из блоков. Линейный буфер может хранить информацию предсказания, связанную с линией блоков, расположенных над блоком или фрагментом, кодируемым в текущий момент, и обычно протягивается по всей ширине изображения.

[0040] Линейный буфер может включать в себя память, к которой может иметь доступ видеокодер. Линейный буфер может подводить баланс между информацией предсказания буферизации для целого кадра, которая может быть относительно большим количеством данных, и информацией предсказания буферизации, которая имеет самый высокий потенциал к тому, чтобы быть доступной во время кодирования. То есть в некоторых примерах только наиболее часто используемая информация предсказания может храниться в линейном буфере в пределах возможного.

[0041] Однако по мере того как разрешение видео и ширина кадров (например, количество пикселей справа налево по заданному видеокадру) увеличиваются, количество данных, которые хранятся в линейном буфере, тоже увеличивается. В некоторых примерах блоки видеоданных в пределах 4х4 пикселей могут использоваться, чтобы кодировать изображение. В качестве примера изображение 1920х1080 пикселей (например, для видео 1080р) может включать в себя до 495 блоков 4х4 пикселя. Соответственно, если информация предсказания хранится для каждого блока видеоданных, от видеокодера может потребоваться хранение относительно значительного количества данных для линейного буфера.

[0042] Методики этого раскрытия в общем относятся к ограничению или сокращению количества информации предсказания от соседних блоков, которая буферизуется во время кодирования. Например, вместо использования информации предсказания из верхних соседних блоков при кодировании текущего блока, в некоторых примерах устройство для кодирования видео может определять информацию предсказания на основе информации предсказания из левых соседних блоков. В других примерах устройство для кодирования видео может определять информацию предсказания на основе данных из верхнего соседнего блока, но только когда текущий блок является субблоком большего раздела (например, именуемого в стандарте кодирования видео высокой эффективности (HEVC) самым большим элементом кодирования (LCU), что описывается более подробно ниже), и такой субблок не граничит с другим LCU. Многообразие других методик, как описывается ниже, также может использоваться, чтобы сократить количество предиктивной информации, которая буферизуется во время кодирования видео.

[0043] Ограничение количества данных, которое буферизуется, в соответствии с методиками этого раскрытия, может уменьшить сложности, связанные с кодированием видеоданных. Например, аспекты этого раскрытия могут позволить устройству для кодирования видео буферизовать меньше данных, таким образом снижая требования к памяти, связанные с такой буферизацией. Кроме того, сокращение точек расположения, от которых можно получить информацию предсказания, может увеличить эффективность энтропийного кодирования и/или пропускную способность. Например, методики этого раскрытия могут применяться, чтобы улучшить пропускную способность при анализе. То есть по мере того как видеоданные принимаются видеокодером, видеоданные могут быть проанализированы (например, считаны и сегментированы) в соответствии с конкретным процессом анализа (например, анализа волнового фронта). В некоторых примерах процесс анализа может включать в себя анализ каждого LCU фрагмента после анализа одного или нескольких исходных LCU (например, верхнего и/или самого левого LCU во фрагменте). Анализ LCU может позволить видеокодеру формировать множественные потоки обработки (например, для параллельной обработки), при этом каждый поток включает в себя один или несколько проанализированных LCU.

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

[0045] В одном примере, в иллюстративных целях предположим, что LCU, кодируемый в настоящий момент, располагается под самым верхним рядом фрагмента, при этом один или несколько LCU этого фрагмента находятся над текущим фрагментом. В этом примере информация предсказания для кодирования текущего LCU может быть включена в верхний соседний LCU (например, LCU, расположенный над текущим LCU). То есть информация предсказания для кодирования текущего LCU может зависеть от одного или нескольких значений (например, режимы внутреннего предсказания, информация движения и т.п.) верхнего соседнего LCU. Соответственно, до того как текущий LCU может быть кодирован, он, возможно, должен ждать, пока кодируется верхний соседний LCU. Появление такой задержки может замедлить процесс кодирования, в частности реализацию параллельной обработки. Аспекты этого раскрытия могут использоваться, чтобы снизить возможность описанных выше задержек.

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

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

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

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

[0050] Методики этого раскрытия, которые в общем относятся к эффективному хранению данных предсказания, не обязательно должны ограничиваться беспроводными вариантами применения и установками. Методики могут применяться к кодированию видео для обеспечения выполнения любого из многообразия мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи интернет-потокового видео, как то динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на средстве хранения данных, декодирование цифрового видео, хранящегося на средстве хранения данных, или других приложений. В некоторых примерах система 10 может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу, чтобы поддерживать такие приложения, как передача потокового видео, воспроизведение видеозаписи, телевизионное вещание и/или видеотелефония.

[0051] В примере с фиг. 1 устройство 12 источник включает в себя видеоисточник 18, видеокодер 20 и выходной интерфейс 22. Устройство 14 адресат включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В соответствии с данным раскрытием видеокодер 20 устройства 12 источника может быть выполнен с возможностью применять методики для кодирования векторов движения и для выполнения двустороннего предсказания в HEVC и дополнениях к нему, таких как дополнения многоракурсного или трехмерного видео (3DV). В других примерах устройство-источник и устройство-адресат могут включать в себя другие компоненты и устройства. Например, устройство 12 источник может принимать видеоданные от внешнего видеоисточника 18, такого как внешняя камера. Подобным образом, устройство 14 адресат может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.

[0052] Проиллюстрированная система 10 с фиг. 1 - это только один пример. Методики для эффективного хранения данных предсказания могут реализовываться любым устройством кодирования и/или декодирования цифрового видео. Хотя в общем методики этого раскрытия выполняются устройством кодирования видео, они также могут реализовываться кодером/декодером видео, обычно именуемым «CODEC». Более того, методики этого раскрытия также могут реализовываться препроцессором видео. Устройство 12 источник и устройство 14 адресат - это только примеры таких устройств кодирования, из которых устройство 12 источник генерирует кодированные видеоданные для передачи к устройству 14 адресату. В некоторых примерах устройства 12, 14 могут функционировать по большей части симметрично, так, что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видео между видеоустройствами 12, 14, например, для передачи потокового видео, воспроизведения видеозаписи, телевизионного вещания и/или видеотелефонии.

[0053] Видеоисточник 18 устройства 12 источника может включать в себя устройство захвата видеоизображений, такое как видеокамера, видеоархив, содержащий прежде захваченные видеоизображения, и/или интерфейс внешнего видеосигнала для приема видео от провайдера видеоконтента. В качестве дополнительной альтернативы видеоисточник 18 может генерировать данные на основе компьютерной графики, как видео от источника, или комбинацию «живого» видео, архивированного видео и сгенерированного компьютером видео. В некоторых случаях, если видеоисточник 18 является видеокамерой, устройство 12 источник и устройство 14 адресат могут формировать так называемые камерофоны или видеофоны. Как было упомянуто выше, однако методики, описанные в этом раскрытии, могут быть применимы к кодированию видео в общем и могут быть применимы к беспроводным и/или проводным приложениям. В каждом случае захваченное, прежде захваченное или сгенерированное компьютером видео может быть кодировано видеокодером 20. Кодированная видеоинформация затем может выводиться посредством выходного интерфейса 22 на машиночитаемый носитель 16.

[0054] Машиночитаемый носитель 16 может включать в себя временные носители, такие как передача беспроводного вещания или проводной сети, или носители данных (то есть невременные носители данных), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, диск Blu-ray, или другие машиночитаемые носители. В некоторых примерах сетевой сервер (не показан) может принимать кодированные видеоданные от устройства 12 источника и предоставлять кодированные видеоданные устройству 14 адресату, например, посредством сетевой передачи. Подобным образом, вычислительное устройство производственного оборудования носителя, такое как оборудование для штамповки дисков, может принимать кодированные видеоданные от устройства 12 источника и создавать диск, содержащий кодированные видеоданные. Следовательно, машиночитаемый носитель 16 может пониматься как включающий в себя один или несколько машиночитаемых носителей различных форм, в различных примерах.

[0055] Входной интерфейс 28 устройства 14 адресата принимает информацию от машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, определенную видеокодером 20, которая также используется видеодекодером 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков или других кодированных элементов, например, GOP. В частности, это раскрытие называет «кодированным элементом» элемент данных, включающий в себя множественные блоки, такие как фрагмент, изображение, группа волновых фронтов или элемент мозаичного изображения. Так, термин «кодированный элемент» должен пониматься как включающий в себя множественные блоки, например, множественные самые большие элементы кодирования (LCU). Более того, термин «кодированный элемент» не нужно путать с терминами «элемент кодирования» или CU, как используется в HEVC. Устройства 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из многообразия устройств отображения, как то электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.

[0056] Видеокодер 20 и видеодекодер 30 могут функционировать в соответствии со стандартом кодирования видео, таким как стандарт кодирования видео высокой эффективности (HEVC), в настоящее время находящийся в разработке, и могут соответствовать тестовой модели HEVC (НМ). Самый последний рабочий проект (WD) HEVC, в дальнейшем именуемый HEVC WD7, доступен с http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v5.zip, при этом более новая версия доступна с http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip, оба эти источника, таким образом, включены посредством ссылки, как если бы были изложены здесь в полном объеме. В качестве альтернативы видеокодер 20 и видеодекодер 30 могут функционировать в соответствии с другими корпоративными или промышленными стандартами, такими как стандарт ITU-T H.264, в качестве альтернативы именуемый MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), или дополнениями к этим стандартам. Методики этого раскрытия, однако, не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263.

[0057] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован группой экспертов в области кодирования видео ITU-T (VCEG) совместно с группой экспертов в области движущихся изображений (MPEG) ISO/IEC как продукт коллективного партнерства, известного как объединенная группа по вопросам видео (JVT). В некоторых аспектах методики, описанные в этом раскрытии, могут применяться к устройствам, которые в общем соответствуют стандарту Н.264. Стандарт Н.264 описывается в рекомендации Н.264 ITU-T, об усовершенствованном кодировании видео для универсальных аудиовизуальных услуг исследовательской группой ITU-T в марте 2005 года, что может называться здесь стандартом Н.264 или спецификацией Н.264 или стандартом или спецификацией Н.264/AVC. Объединенная группа по вопросам видео (JVT) продолжает работать на дополнениями к Н.264/MPEG-4 AVC.

[0058] JCT-VC работает над развитием стандарта HEVC. Работы по стандартизации основываются на развивающейся модели устройства для кодирования видео, именуемой тестовой моделью HEVC (НМ). НМ предполагает некоторые дополнительные возможности устройств для кодирования видео относительно существующих устройств в соответствии с, например, ITU-T Н.264/AVC. К примеру, тогда как Н.264 предусматривает девять режимов кодирования внутреннего предсказания, НМ может предусматривать вплоть до тридцати трех режимов кодирования внутреннего предсказания.

[0059] В общем, рабочая модель НМ описывает, что видеокадр изображения может быть разделен на последовательность древовидных блоков или самых больших элементов кодирования (LCU), которые включают в себя выборки и яркости, и цветности. Синтаксические данные в пределах битового потока могут определять размер LCU, который является самым большим элементом кодирования с точки зрения количества пикселей. Фрагмент включает в себя некоторое количество последовательных древовидных блоков в порядке кодирования. Видеоизображение может быть разбито на один или несколько фрагментов. Каждый древовидный блок может быть разбит на элементы кодирования (CU) в соответствии с квадрадеревом. В общем, структура данных квадрадерева включает в себя один узел на CU, с корневым узлом, соответствующим древовидному блоку. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одному из суб-CU.

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

[0061] CU имеет то же назначение, что и макроблок стандарта Н.264, за исключением того, что CU не имеет размерного различия. Например, древовидный блок может разбиваться на четыре дочерних узла (также именуемых суб-CU), и каждый дочерний узел может в свою очередь быть родительским узлом и разбиваться на еще четыре дочерних узла. В итоге неразбитый дочерний узел, именуемый концевым узлом квадрадерева, содержит узел кодирования, также именуемый концевым CU. Синтаксические данные, связанные с кодированным битовым потоком, могут определять максимальное количество раз, которое древовидный блок может разбиваться, что называется максимальной глубиной CU и также может определять минимальный размер узлов кодирования. Соответственно, битовый поток может также определять наименьший элемент кодирования (SCU). Это раскрытие использует термин «блок» в отношении любого из CU, PU или TU в контексте HEVC или подобных структур данных в контексте других стандартов (например, макроблоки и их субблоки в H.264/AVC). Кроме того, это раскрытие может использовать термин «кодированный элемент», чтобы описывать заранее определенное количество видеоданных, которое может включать в себя два или более блока видеоданных. То есть, например, кодированный элемент может относиться к изображению, фрагменту, элементу мозаичного изображения или группе элементов мозаичного изображения, группе волновых фронтов или любому другому заранее определенному элементу, который включает в себя видеоданные. Соответственно, термин «кодированный элемент» не следует путать с терминами «элемент кодирования» или CU.

[0062] CU включает в себя узел кодирования и элементы предсказания (PU), а также элементы преобразования (TU), связанные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратом по форме. Размер CU может варьироваться от 8х8 пикселей до размера древовидного блока с максимумом в 64x64 пикселя или более. Каждый CU может содержать один или несколько PU и один или несколько TU. Синтаксические данные, связанные с CU, могут описывать, например, разбиение CU на один или несколько PU. Режимы разбиения могут различаться как те, где CU кодируется в режиме пропуска или в прямом режиме, кодируется в режиме внутреннего предсказания или кодируется в режиме внешнего предсказания. PU может разбиваться так, чтобы быть по форме не квадратным. Синтаксические данные, связанные с CU, также могут описывать, например, разбиение CU на один или несколько TU в соответствии с квадрадеревом. TU может быть квадратным или неквадратным (например, прямоугольным).

[0063] Стандарт HEVC допускает преобразования в соответствии с TU, которые могут быть различными для разных CU. Размеры TU обычно определяются на основе размера PU в пределах заданного CU, определенного для разбитого LCU, хотя не всегда может быть так. TU обычно того же размера, что и PU, или меньше. В некоторых примерах остаточные образцы, соответствующие CU, могут подразделяться на более маленькие элементы с использованием структуры квадрадерева, известной как «остаточное квадрадерево» (RQT). Концевые узлы RQT могут называться элементами преобразования (TU). Значения разности пикселей, связанные с TU, могут быть преобразованы, чтобы создать коэффициенты преобразования, которые могут быть квантованы.

[0064] Концевой CU может включать в себя один или несколько элементов предсказания (PU). В общем, PU отражает пространственную область, соответствующую всему или части соответствующего CU, и включает в себя данные для восстановления опорной выборки для PU. Кроме того, PU включает в себя данные, относящиеся к предсказанию. Например, когда PU подвергается кодированию во внутреннем режиме, данные для PU могут быть включены в остаточное квадрадерево (RQT), которое может включать в себя данные, описывающие режим внутреннего предсказания для TU, соответствующего PU. В качестве другого примера, когда PU подвергается кодированию во внешнем режиме, PU может включать в себя данные, определяющие один или несколько векторов движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, с точностью до четверти пикселя или точностью до одной восьмой пикселя), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, Список 1, Список 2 или Список 3) для вектора движения.

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

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

[0067] Видеопоследовательность обычно включает в себя серию видеоизображений. Группа изображений (GOP) в общем содержит серию из одного или нескольких видеоизображений. GOP может включать в себя синтаксические данные в заголовке GOP, заголовке одного или нескольких изображений или где-нибудь еще, которые описывают некоторое количество изображений, включенных в GOP. Каждый фрагмент изображения может включать в себя синтаксические данные фрагмента, которые описывают режим кодирования для соответствующего фрагмента. Видеокодер 20 обычно действует на видеоблоки в пределах отдельных видеофрагментов, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в пределах CU. Видеоблоки могут иметь фиксированные или переменные размеры и могут различаться по размеру в соответствии с определенным стандартом кодирования.

[0068] В качестве примера НМ поддерживает предсказание в PU различных размеров. Предполагая, что размер конкретного CU составляет 2Nx2N, НМ поддерживает внутреннее предсказание в PU размеров 2Nx2N или NxN и внешнее предсказание в симметричных PU размеров 2Nx2N, 2NxN, Nx2N или NxN. НМ также поддерживает ассиметричное разбиение для внешнего предсказания в PU размеров 2NxU, 2NxD, nLx2N и nRx2N. При ассиметричном разбиении одно направление CU не разбивается, тогда как другое направление разбивается на 25% и 75%. Часть CU, соответствующая разбиению в 25%, обозначается «n», за которым следует обозначение «Вверх», «Вниз», «Влево» или «Вправо». Так, например, «2NxU» относится к CU в 2Nx2N, который разбивается горизонтально с PU в 2Nx0,5N наверху и PU в 2Nx1,5N внизу.

[0069] В этом раскрытии «NxN» и «N на N» могут использоваться взаимозаменяемо в отношении к измерениям пикселей видеоблока в показателях вертикального и горизонтального измерений, например, 16х16 пикселей или 16 на 16 пикселей. В общем, блок 16х16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (х=16). Подобным образом, блок NxN в общем имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет собой неотрицательное целое значение. Пиксели в блоке могут быть распределены в строки и столбцы. Кроме того, блоки не обязательно должны иметь одинаковое количество пикселей в горизонтальном направлении и вертикальном направлении. Например, блоки могут содержать пиксели NxM, где M не обязательно равняется N.

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

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

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

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

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

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

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

[0077] Фиг. 2 представляет собой блок-схему, иллюстрирующую примерный видеокодер 20, который может применять методики, описанные в этом раскрытии для эффективного хранения информации предсказания. Видеокодер 20 может осуществлять внутреннее и внешнее кодирование видеоблоков в пределах видеофрагментов. Внутреннее кодирование основано на временном предсказании для снижения или исключения временной избыточности в видео в пределах смежных изображений видеопоследовательности. Внутренний режим (I режим) может относится к любому из нескольких пространственных режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (Р режим) или двунаправленное предсказание (В режим) могут относится к любому из временных режимов сжатия.

[0078] Как показано на фиг. 2, видеокодер 20 принимает видеоданные, подлежащие кодированию. В примере с фиг. 2 видеокодер 20 включает в себя модуль 40 выбора режима, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования и память 64 опорных изображений. Модуль 40 выбора режима в свою очередь включает в себя модуль 42 оценки движения, модуль 44 компенсации движения, модуль 46 внутреннего предсказания и модуль 48 разбиения. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования и сумматор 62. Деблокирующий фильтр (не показан на фиг. 2) также может быть включен в границы блока фильтра для устранения дефектов блочности из восстановленного видео. Если это желательно, деблокирующий фильтр обычно будет фильтровать выход сумматора 62. Дополнительные циклические фильтры (внутрициклические или постциклические) также могут использоваться в дополнение к деблокирующему фильтру. Такие фильтры не показаны в целях лаконичности изложения, но если это желательно, могут фильтровать выход сумматора 50 (как внутрициклический фильтр).

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

[0080] Более того, модуль 48 разбиения может разбивать блоки видеоданных на субблоки на основе оценки предыдущих схем разбиения в предыдущих сеансах кодирования. Например, модуль 48 разбиения может изначально разбивать изображение или фрагмент на блоки LCU и разбивать каждый из LCU на суб-CU на основе анализа зависимости скорости передачи от искажений (например, оптимизации зависимости скорости передачи от искажений). Модуль 40 выбора режима может дополнительно создавать структуру данных квадрадерева, отражающую разбиение LCU на суб-CU. CU концевого узла квадрадерева могут включать в себя один или несколько PU и один или несколько TU.

[0081] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутреннего или внешнего, например, на основе результатов ошибок, и предоставляет получившийся в результате подвергнутый внутреннему или внешнему кодированию блок сумматору 50, чтобы генерировать данные остаточного блока, и сумматору 62, чтобы восстановить кодированный блок для использования в качестве опорного изображения. Модуль 40 выбора режима также предоставляет синтаксические элементы, такие как векторы движения, информация разбиения или другая подобная синтаксическая информация, модулю 56 энтропийного кодирования.

[0082] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть в значительной степени объединены, но проиллюстрированы отдельно друг от друга в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, является процессом генерации векторов движения, которые оценивают движение видеоблоков. Вектор движения, например, может отражать смещение PU видеоблока в пределах текущего видеоизображения относительно блока предсказания в пределах опорного изображения (или другого кодированного элемента) относительно текущего блока, подвергаемого кодированию в пределах текущего изображения (или другого кодированного элемента). Как было отмечено выше, векторы движения могут составлять информацию предсказания.

[0083] Блок предсказания - это блок, который находится в близком соответствии с блоком, подлежащим кодированию, с точки зрения разности пикселей, которая может быть определена суммой абсолютной разности (SAD), суммой разности квадратов (SSD) или других метрик разности. В некоторых примерах видеокодер 20 может вычислять значения положений субцелого пикселя опорных изображений, хранящихся в памяти 64 опорных изображений. Например, видеокодер 20 может интерполировать значения положений четверти пикселя, положения одной восьмой пикселя или другие положения частичного пикселя опорного изображения. Следовательно, модуль 42 оценки движения может осуществлять поиск движения относительно положений полного пикселя и положений частичного пикселя и выводить вектор движения с точностью до частичного пикселя.

[0084] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока во фрагменте, подвергнувшемся внешнему кодированию, путем сравнения положения PU с положением блока предсказания опорного изображения. Опорное изображение может выбираться из первого списка опорных изображений (Список 0) и второго списка опорных изображений (Список 1), каждый из которых идентифицирует одно или несколько опорных изображений, хранящихся в памяти 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения к модуля 56 энтропийного кодирования и модулю 44 компенсации движения.

[0085] В некоторых примерах вместо отправки актуального вектора движения для текущего PU модуль 42 оценки движения может предсказывать вектор движения, чтобы дополнительно сократить количество данных, необходимых для передачи вектора движения. В этом случае вместо кодирования и передачи самого вектора движения модуль 42 оценки движения может генерировать разность вектора движения (MVD) относительно известного (или узнаваемого) вектора движения. Известный вектор движения, который может использоваться с MVD, чтобы определить текущий вектор движения, может быть определен так называемым предиктором вектора движения (MVP). В общем, чтобы быть действительным MVP, вектор движения, используемый для предсказания, должен указывать на то же опорное изображение, что вектор движения, кодируемый в текущий момент.

[0086] В некоторых примерах модуль 42 оценки движения может выстраивать список кандидатов для предиктора вектора движения, который включает в себя несколько соседних блоков в пространственном и/или временном направлениях в качестве кандидатов MVP. Когда доступны множественные кандидаты для предиктора вектора движения (для множества блоков-кандидатов), модуль 42 оценки движения может определять предиктор вектор движения для текущего блока в соответствии с определенными заранее критериями выбора. Например, модуль 42 оценки движения может выбирать самый точный предиктор из группы кандидатов на основе анализа скорости кодирования и искажения (например, используя так называемый анализ затрат скорости-искажения или другой анализ эффективности кодирования). В других примерах модуль 42 оценки движения может генерировать средний из кандидатов для предиктора вектора движения. Другие способы выбора предиктора вектора движения также возможны.

[0087] После выбора предиктора вектора движения модуль 42 оценки движения может определить индекс предиктора вектора движения (mvp_flag), который может использоваться, чтобы сообщить видеодекодеру (такому, например, как видеодекодер 30), где расположить MVP в списке опорных изображений, содержащем блоки-кандидаты MVP. Модуль 42 оценки движения также может определять MVD между текущим блоком и выбранным MVP. Индекс MVP и MVD могут использоваться, чтобы восстановить вектор движения.

[0088] В некоторых примерах модуль 42 оценки движения может вместо перечисленного применять так называемый «режим слияния», в котором модуль 42 оценки движения может «объединять» информацию движения (такую как векторы движения, индексы опорного изображения, направления предсказания, или другую информацию) видеоблока предсказания с текущим видеоблоком. Соответственно, что касается режима слияния, то текущий видеоблок наследует информацию движения от другого известного (или узнаваемого) видеоблока. Модуль 42 оценки движения может выстраивать список кандидатов для режима слияния, который включает в себя несколько соседних блоков в пространственном и/или временном направлениях в качестве кандидатов для режима слияния. Модуль 42 оценки движения может определять значение индекса (например, merge_idx), что может использоваться, чтобы сообщить видеодекодеру (такому, например, как видеодекодер 30), где расположить видеоблок слияния, то есть блок, от которого получается информация движения, в списке опорных изображений, содержащем блоки-кандидаты для слияния.

[0089] В соответствии с аспектами этого раскрытия модуль 42 оценки движения может ограничивать количество информации движения, например, векторов движения, индексов опорного изображения, направлений предсказания, или другой информации, от соседних блоков, которая буферизуется во время кодирования. Например, вместо определения MVP или кандидата слияния для текущего блока на основе информации движения от верхних соседних блоков модуль 42 оценки движения может определять информацию движения для кодирования текущего блока на основе информации движения от левых соседних блоков. В других примерах модуль 42 оценки движения может определять информацию движения для текущего блока на основе данных из верхнего соседнего блока, но только когда текущий блок - это субблок LCU и верхний соседний блок - из того же LCU. Еще в других примерах модуль 42 оценки движения может применять другие методики (например, субдискретизация, интерполяция и т.п., что более подробно описывается ниже), чтобы сократить количество информации движения, которая буферизуется во время кодирования.

[0090] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя выборку или генерацию предиктивного блока на основе вектора движения, определенного модулем 42 оценки движения. Еще модуль 42 оценки движения и модуль 44 компенсации движения могут функционально объединяться в некоторых примерах. После приема вектора движения для PU текущего видеоблока модуль 44 компенсации движения может располагать блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Сумматор 50 формирует остаточный видеоблок путем вычитания значений пикселя блока предсказания из значений пикселя текущего видеоблока, подвергаемого кодированию, формируя значения разности пикселя, как рассматривается ниже. В общем, модуль 42 оценки движения осуществляет оценку движения относительно компонентов яркости, а модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, и для компонентов цветности, и для компонентов яркости. Модуль 40 выбора режима также может генерировать синтаксические элементы, связанные с видеоблоками и видеофрагментом, для использования видеодекодером 30 при декодировании видеоблоков видеофрагмента.

[0091] Модуль 46 внутреннего предсказания может осуществлять внутреннее предсказание текущего блока в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описывается выше. В частности, модуль 46 внутреннего предсказания может определять режим внутреннего предсказания для использования в целях кодирования текущего блока. В некоторых примерах модуль 46 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных сеансов кодирования модуль 46 внутреннего предсказания (или модуль 40 выбора режима в некоторых примерах) может выбирать надлежащий режим внутреннего предсказания, чтобы использовать начиная с протестированных режимов.

[0092] Например, модуль 46 внутреннего предсказания может вычислять значения скорости-искажения с использованием анализа скорости-искажения для различных протестированных режимов внутреннего предсказания и выбирать режим внутреннего предсказания, имеющий лучшие характеристики скорости-искажения среди протестированных режимов. Анализ скорости-искажения в общем определяет объем искажения (или ошибки) между кодированным блоком и оригинальным, некодированным блоком, который был кодирован, чтобы создать кодированный блок, как и битрейтом (то есть количество битов), используемый, чтобы создать кодированный блок. Модуль 46 внутреннего предсказания может вычислять соотношения искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутреннего предсказания демонстрирует лучше значение скорости-искажения для блока.

[0093] В некоторых примерах модуль 46 внутреннего предсказания может отражать выбранный режим внутреннего предсказания, используя так называемый самый вероятный режим. Например, модуль 46 внутреннего предсказания может отражать режим внутреннего предсказания для текущего блока на основе модели контекста, которая включает в себя прежде кодированные блоки. В примере модуль 46 внутреннего предсказания может определять самый вероятный режим на основе прежде кодированных блоков, которые граничат с текущим блоком относительно сверху и относительно слева, предполагая порядок кодирования слева-направо, сверху-вниз. У этих блоков с высокой вероятностью тот же режим внутреннего кодирования, что и у текущего блока.

[0094] В одном примере, если блоки сверху и слева от текущего блока кодируются с использованием разных режимов, модуль 46 внутреннего предсказания может выбирать режим внутреннего предсказания, имеющий более низкий численный ранг в качестве самого вероятного режима, в соответствии с определенным заранее ранжированием внутренних режимов, поддерживаемых модулем 46 внутреннего предсказания (например, численное ранжирование внутренних режимов в соответствии с номерами режимов). В другом примере, если блоки сверху и слева от текущего блока кодируются с использованием разных режимов, модуль 46 внутреннего предсказания может выбирать определенный заранее режим по умолчанию, такой как внутренний режим DC, в качестве самого вероятного режима. Процесс выбора самого вероятного режима, когда контекст текущего блока включает в себя более одного внутреннего режима, однако, предусмотрен только в качестве примера, и модуль 46 внутреннего предсказания может быть выполнен с возможностью определять самый вероятный режим множеством других способов.

[0095] После определения самого вероятного внутреннего режима модуль 46 внутреннего предсказания может устанавливать флаг (например, флаг most_probable_mode) на основе сравнения самого вероятного режима с выбранным внутренним режимом, используемым, чтобы кодировать текущий блок. Например, если самый вероятный режим является таким же, как и выбранный внутренний режим для текущего блока, модуль 46 внутреннего предсказания может устанавливать флаг самого вероятного режима на значение 1, отражающий, что выбранный внутренний режим и самый вероятный режим - одинаковы. В этом примере для сигнализирования выбранного режима не требуется дополнительных битов. То есть по приеме флага самого вероятного режима, который был установлен на 1, видеодекодер (такой как видеодекодер 30) может воспроизводить ту же процедуру для определения самого вероятного режима, например, как та, что используется кодером, и затем использовать самый вероятный режим, чтобы декодировать принятый блок.

[0096] Если самый вероятный режим - не тот же, что выбранный внутренний режим для текущего блока, модуль 46 внутреннего предсказания может устанавливать флаг самого вероятного режима на значение 0, отражающий, что режимы не одинаковы. В этом примере могут потребоваться дополнительные биты, чтобы сигнализировать актуальный внутренний режим, используемый, чтобы кодировать текущий блок, или напрямую, или с помощью индекса, указывающего на другой из соседних блоков. В соответствии с некоторыми примерами модуль 46 внутреннего предсказания может поддерживать численное ранжирование внутренних режимов, где наиболее часто используемые внутренние режимы имеют самый низкий численный ранг. В таких примерах модуль 46 внутреннего предсказания может сигнализировать актуальный внутренний режим, используемый, чтобы кодировать текущий блок, на основе численного ранга или другого численного идентификатора.

[0097] В соответствии с аспектами этого раскрытия модуль 46 внутреннего предсказания может ограничивать количество информации предсказания, например, данных внутреннего режима, от соседних блоков, которая буферизуется во время кодирования. Например, вместо определения самого вероятного внутреннего режима для текущего блока на основе данных внутреннего режима от верхних соседних блоков модуль 46 внутреннего предсказания может определять самый вероятный внутренний режим для кодирования текущего блока на основе внутренних режимов от левых соседних блоков. То есть, например, модуль 46 внутреннего предсказания может определять самый вероятный внутренний режим для декодирования текущего блока только на основе внутренних режимов левых соседних блоков, без определения внутренних режимов верхних соседних блоков. В других примерах модуль 46 внутреннего предсказания может определять самый вероятный внутренний режим для текущего блока на основе данных из одного или нескольких левых соседних блоков и верхнего соседнего блока, но только когда текущий блок - это субблок LCU и верхний соседний блок - из того же LCU. Еще в других примерах модуль 46 внутреннего предсказания может применять другие методики (например, субдискретизация, интерполяция и т.п., что более подробно описывается ниже), чтобы сократить количество данных внутреннего режима, которые буферизуются во время кодирования.

[0098] Видеокодер 20 формирует остаточный видеоблок путем вычитания данных предсказания модуля 40 выбора режима из оригинального видеоблока, подвергаемого кодированию. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, в отношении остаточного блока, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 обработки преобразования может выполнять другие преобразования, которые концептуально подобны DCT. Вейвлетные преобразования, преобразования целого, субполосные преобразования и преобразования других типов также могут использоваться. В любом случае модуль 52 обработки преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразования могут превращать остаточную информацию из области значений пикселя в область преобразования, такую как частотная область.

[0099] Модуль 52 обработки преобразования может отправлять получившиеся в результате коэффициенты преобразования к модулю 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно снизить битрейт. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может изменяться путем регулировки параметра квантования. В некоторых примерах модуль 54 квантования может затем осуществлять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы модуль 56 энтропийного кодирования может осуществлять сканирование.

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

[0101] Что касается САВАС, то модуль 56 энтропийного кодирования может выбирать модель контекста, которая воздействует на контекст, чтобы кодировать символы, связанные с блоком видеоданных. Например, модуль 56 энтропийного кодирования может выбирать осуществлять энтропийное кодирование каждого синтаксического элемента для блока видеоданных, используя оценки вероятности для каждого синтаксического элемента. Оценки вероятности могут отражать вероятность элемента, имеющего заданное значение. Оценки вероятности могут быть включены в модель вероятности, также именуемую моделью контекста. Модуль 56 энтропийного кодирования может выбирать модель контекста путем определения информации контекста (или просто «контекста») для синтаксического элемента. Для каждого контекста определяется другая модель вероятности. После кодирования синтаксического элемента модуль 56 энтропийного кодирования может обновлять выбранную модель контекста на основе актуального значения синтаксического элемента, чтобы отразить самые последние оценки вероятности. То есть, например, модуль 56 энтропийного кодирования может обновлять способ, которым выбирается модель контекста, для перехода к новой модели контекста.

[0102] После энтропийного кодирования модулем 56 энтропийного кодирования кодированный битовый поток может передаваться к другому устройству (например, видеодекодеру 30) или архивироваться, например, на носителе записи для передачи или воспроизведения позднее. Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в пиксельной области, например, чтобы потом использовать его в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок путем прибавления остаточного блока к блоку предсказания одного из изображений из памяти 64 опорных изображений. Модуль 44 компенсации движения также может применять один или несколько интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелого пикселя для использования при оценке движения. Сумматор 62 прибавляет восстановленный остаточный блок к блоку предсказания с компенсацией движения, созданному модулем 44 компенсации движения, чтобы создать восстановленный видеоблок для хранения в памяти 64 опорных изображений. Восстановленный видеоблок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока, чтобы осуществить внешнее кодирование блока в следующем видеоизображении.

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

[0104] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеодекодер 30, который может применять методики, описанные в этом раскрытии, для энтропийного кодирования видеоданных. В примере с фиг. 3 видеодекодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 предсказания, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90 и память 92 опорных изображений. Модуль 81 предсказания включает в себя модуль 82 компенсации движения и модуль 84 внутреннего предсказания.

[0105] Во время процесса декодирования видеодекодер 30 принимает битовый поток кодированного видео, который представляет собой видеоблоки кодированного видеофрагмента и связанные с ними синтаксические элементы, от видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 осуществляет энтропийное декодирование битового потока, чтобы генерировать квантованные коэффициенты, векторы движения и другие синтаксические элементы.

[0106] Видеодекодер 30 может принимать синтаксические элементы на уровне видеофрагмента и/или уровне видеоблока. Например, в виде фона видеодекодер 30 может принимать сжатые видеоданные, которые были сжаты для передачи по сети в так называемые «элементы уровня абстракции сети» или элементы NAL. Каждый элемент NAL может включать в себя заголовок, который идентифицирует тип данных, хранящихся в элементе NAL. Существует два типа данных, которые обычно хранятся в элементах NAL. Первый тип данных, хранящихся в элементе NAL, - это данные уровня кодирования видео (VCL), которые включают в себя сжатые видеоданные. Второй тип данных, хранящихся в элементе NAL, именуется данными не-VCL, которые включают в себя дополнительную информацию, такую как настройки параметров, которые определяют данные заголовка, характерные для большого количества элементов NAL, и дополнительную информацию расширения (SEI).

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

[0108] Модуль 80 энтропийного декодирования может быть сконфигурирован подобно модулю 56 энтропийного кодирования, как описывается выше в отношении видеокодера 20 с фиг. 2. Например, модуль 80 энтропийного кодирования может выбирать модель контекста, которая воздействует на контекст, чтобы декодировать символы, связанные с блоком видеоданных. То есть модуль 80 энтропийного декодирования может осуществлять энтропийное декодирование каждого синтаксического элемента для блока видеоданных, используя оценки вероятности для каждого синтаксического элемента.

[0109] Модуль 80 энтропийного декодирования пересылает векторы движения и другие декодированные синтаксические элементы к модулю 81 предсказания. Когда видеофрагмент кодируется как фрагмент, подвергшийся внутреннему кодированию (I), модуль 84 внутреннего предсказания модуля 81 предсказания может генерировать данные предсказания для видеоблока текущего видеофрагмента на основе сообщенного режима внутреннего предсказания (например, сообщенного как самый вероятный режим, напрямую или с помощью индекса, указывающего на другой из соседних блоков) и данных от прежде декодированных блоков текущего изображения. Когда видеоизображение кодируется как фрагмент, подвергшийся внутреннему кодированию (то есть B, P GBP), модуль 82 компенсации движения модуля 81 предсказания создает блоки предсказания для видеоблока текущего видеофрагмента на основе векторов движения и других синтаксических элементов, принятых от модуля 80 энтропийного декодирования. Блоки предсказания могут получаться из одного из опорных изображений в пределах списков опорных изображений. Видеодекодер 30 может выстраивать списки опорных изображений, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных изображений, хранящихся в памяти 92 опорных изображений.

[0110] Модуль 82 компенсации движения определяет информацию предсказания для видеоблока текущего видеофрагмента путем анализа векторов движения и других синтаксических элементов и использует информацию предсказания, чтобы создать блоки предсказания для текущего видеоблока, подвергаемого декодированию. Например, модуль 82 компенсации движения использует некоторые из принятых синтаксических элементов, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), используемый, чтобы кодировать видеоблоки видеофрагмента, тип фрагмента внешнего предсказания (например, фрагмент В, фрагмент Р или фрагмент GBP), информацию построения для одного или нескольких списков опорных изображений для фрагмента, векторы движения для каждого подвергшегося внешнему кодированию видеоблока фрагмента, статус внешнего предсказания для каждого подвергшегося внешнему кодированию видеоблока фрагмента и другую информацию, чтобы декодировать видеоблоки в текущем видеофрагменте.

[0111] Модуль 82 компенсации движения также может выполнять интерполяцию на основе интерполяционных фильтров. Модуль 82 компенсации движения может использовать интерполяционные фильтры, как те, что используются видеокодером 20, во время кодирования видеоблоков, чтобы вычислить интерполированные значения для субцелых пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определять интерполяционные фильтры, используемые видеокодером 20, исходя из принятых синтаксических элементов, и применять интерполяционные фильтры, чтобы создать блоки предсказания.

[0112] В соответствии с аспектами этого раскрытия модуль 82 компенсации движения может ограничивать количество информации движения, например, векторов движения, индексов опорного изображения, направлений предсказания, или другой информации, от соседних блоков, которая буферизуется во время декодирования. Например, вместо определения MVP или кандидата слияния для текущего блока на основе информации движения от верхних соседних блоков модуль 82 компенсации движения может определять информацию движения для декодирования текущего блока на основе информации движения от левых соседних блоков. В других примерах модуль 82 компенсации движения может определять информацию движения для текущего блока на основе данных из верхнего соседнего блока, но только когда текущий блок - это субблок LCU и верхний соседний блок - из того же LCU. Еще в других примерах модуль 82 компенсации движения может применять другие методики (например, субдискретизация, интерполяция и т.п., что более подробно описывается ниже), чтобы сократить количество информации движения, которая буферизуется во время декодирования.

[0113] В соответствии с аспектами этого раскрытия модуль 84 внутреннего предсказания может ограничивать количество информации предсказания, например, данных внутреннего режима, от соседних блоков, которая буферизуется во время декодирования. Например, вместо определения самого вероятного внутреннего режима для текущего блока на основе данных внутреннего режима от верхних соседних блоков модуль 84 внутреннего предсказания может определять самый вероятный внутренний режим для декодирования текущего блока на основе внутренних режимов от левых соседних блоков. То есть, например, модуль 84 внутреннего предсказания может определять самый вероятный внутренний режим для декодирования текущего блока только на основе внутренних режимов левых соседних блоков, без определения внутренних режимов верхних соседних блоков. В других примерах модуль 84 внутреннего предсказания может определять самый вероятный внутренний режим для текущего блока на основе данных из одного или нескольких левых соседних блоков и верхнего соседнего блока, но только когда текущий блок - это субблок LCU и верхний соседний блок - из того же LCU. Еще в других примерах модуль 84 внутреннего предсказания может применять другие методики (например, субдискретизация, интерполяция и т.п., что более подробно описывается ниже), чтобы сократить количество данных внутреннего режима, которые буферизуются во время декодирования.

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

[0115] Модуль 88 обработки обратного преобразования осуществляет обратное преобразование, например, обратное DCT, обратное преобразование целого или концептуально подобный процесс обратного преобразования, чтобы преобразовать коэффициенты с целью создать остаточные блоки в пиксельной области. В соответствии с аспектами этого раскрытия модуль 88 обработки обратного преобразования может определять способ, с помощью которого осуществлялись преобразования в отношении остаточных данных. То есть, например, модуль 88 обработки обратного преобразования может определять RQT, которое отражает способ, с помощью которого осуществлялись преобразования (например, DCT, преобразование целого, вейвлетное преобразование или одно или несколько других преобразований) в отношении остаточных образцов яркости и остаточных образцов цветности, связанных с блоком принятых видеоданных.

[0116] После того как модуль 82 компенсации движения генерирует предиктивный блок для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок путем суммирования остаточных блоков от модуля 88 обработки обратного преобразования с соответствующими предиктивными блоками, сгенерированными модулем 82 компенсации движения. Сумматор 90 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. Если это желательно, деблокирующий фильтр может также применяться, чтобы фильтровать декодированные блоки с целью устранить дефекты блочности. Другие циклические фильтры (или в цикле кодирования, или после цикла кодирования) также могут использоваться, чтобы сглаживать перемещения пикселей или иным образом улучшать качество видео. Затем декодированные видеоблоки в заданном изображении сохраняются в память 92 опорных изображений, которая хранит опорные изображения, используемые для последующей компенсации движения. Память 92 опорных изображений также хранит декодированное видео для презентации позднее на устройстве отображения, таком как устройство 32 отображения с фиг. 1.

[0117] Таким образом, видеодекодер 30 является примером видеодекодера, который может реализовывать способ, включающий в себя определение информации предсказания для первого блока видеоданных, при этом первый блок включается в кодированный элемент видеоданных, где первый блок располагается ниже верхней строки блоков в кодированном элементе, определение информации предсказания для второго блока видеоданных ниже верхней строки блоков в кодированном элементе на основе информации предсказания для первого блока видеоданных и не основываясь на информации предсказания из верхней строки блоков в кодированном элементе, и кодирование второго блока на основе определенной информации предсказания для второго блока.

[0118] Фиг. 4А и фиг. 4В представляют собой концептуальные схемы, иллюстрирующие примерное квадрадерево 150 и соответствующий самый большой элемент 172 кодирования. Фиг. 4А изображает примерное квадрадерево 150, которое включает в себя узлы, распределенные иерархически. Квадрадерево 150 может быть связано с, например, древовидным блоком в соответствии с предлагаемым стандартом HEVC. Каждый узел в квадрадереве, таком как квадрадерево 150, может быть концевым узлом без потомков или может иметь четыре дочерних узла. В примере с фиг. 4А квадрадерево 150 включает в себя корневой узел 152. Корневой узел 152 имеет четыре дочерних узла, включая концевые узлы 156А-156С (концевые узлы 156) и узел 154. Поскольку узел 154 не является концевым узлом, он включает в себя четыре дочерних узла, которые в этом примере являются концевыми узлами 158А-158D (концевыми узлами 158).

[0119] Квадрадерево 150 может включать в себя данные, описывающие характеристики соответствующего самого большого элемента кодирования (LCU), такого как LCU 172 в этом примере. Например, квадрадерево 150, с помощью своей структуры, может описывать разбиение LCU на суб-CU. Предположим, что LCU 172 имеет размер 2Nx2N. LCU 172 в этом примере имеет четыре суб-CU 176А-176С (суб-CU 176) и 174, каждый размера NxN. Суб-CU 174 дополнительно разбивается на четыре суб-CU 178А-178D (суб-CU 178), каждый размера N/2xN/2. Структура квадрадерева 150 соответствует разбиению LCU 172 в этом примере. То есть корневой узел 152 соответствует LCU 172, концевые узлы 156 соответствуют суб-CU 176, узел 154 соответствует суб-CU 174, а концевые узлы 158 соответствуют суб-CU 178.

[0120] Данные для узлов квадрадерева 150 могут описывать, разбивается ли CU, соответствующий узлу. Если CU разбивается, четыре дополнительных узла могут быть представлены в квадрадереве 150. В некоторых примерах узел квадрадерева может реализовываться подобно следующему псевдокоду:

quadtree_node {

boolean split_flag(1);

//signaling data

if (split_flag) {

quadtree_node child1;

quadtree_node child2;

quadtree_node child3;

quadtree_node child4;

}

}

Значение split_flag может быть однобитным значением, отражающим, разбивается ли CU, соответствующий текущему узлу. Если CU не разбивается, значение split_flag может быть «0», тогда как если CU разбивается, значение split_flag может быть «1». Со ссылкой на пример квадрадерева 150 массив значений флага разбиения может быть 101000000.

[0121] Как было отмечено выше, глубина CU может относиться к величине, на которую был разделен LCU 172. Например, корневой узел 152 может соответствовать глубине CU ноль, тогда как узел 154 и концевые узлы 156 могут соответствовать глубине CU один. Кроме того, концевые узлы 158 могут соответствовать глубине CU два. В соответствии с аспектами этого раскрытия глубина CU и/или TU может использоваться как контекст для энтропийного кодирования определенных синтаксических элементов. В примере в разъяснительных целях один или более синтаксических элементов, связанных с концевым узлом 156А, могут подвергаться энтропийному кодированию с использованием модели контекста, отличной от используемой для концевого узла 158А, поскольку концевой узел 156А располагается на глубине один, тогда как концевой узел 158А находится на глубине два.

[0122] При том, что фиг. 4А иллюстрирует пример квадрадерева CU, следует понимать, что подобное квадрадерево может применяться к TU из CU концевого узла. То есть CU концевого узла может включать в себя квадрадерево TU (именуемое остаточным квадрадеревом (RQT)), которое описывает разбиение блоков TU для CU. Квадрадерево TU в общем может напоминать квадрадерево CU, за исключением того, что квадрадерево TU может сигнализировать режимы внутреннего предсказания для блоков TU из CU по отдельности.

[0123] В соответствии с некоторыми аспектами этого раскрытия видеокодер (такой как видеокодер 20 и/или видеодекодер 30) может определять информацию предсказания для текущего блока на основе информации предсказания из определенных соседних CU. Например, как описывается ниже более подробно, видеокодер может определять информацию предсказания для суб-CU 178С на основе соседних CU, таких как суб-CU 176А. В некоторых примерах видеокодер может избегать определения информации предсказания на основе определенных соседних CU, таких как верхний соседний суб-CU 178. Однако в соответствии с аспектами этого раскрытия, как описывается более подробно ниже, видеокодер может определять информацию предсказания, используя верхние соседние CU, если информация для верхних соседних CU не требует хранения в линейном буфере.

[0124] Например, в соответствии с аспектами этого раскрытия видеокодер может определять информацию предсказания для суб-CU 178С на основе верхнего соседнего суб-CU 178А, поскольку верхний соседний суб-CU 178А располагается в том же LCU (то есть LCU 172), что и суб-CU 178С. В некоторых примерах данные, связанные со всеми CU в LCU, доступны (например, без внешней буферизации) при кодировании LCU. Соответственно, в соответствии с аспектами этого раскрытия видеокодер может использовать информацию предсказания, связанную с блоками LCU, без буферизации информации предсказания. То есть, в соответствии с аспектами этого раскрытия видеокодер может определять информацию предсказания для суб-CU 178С на основе верхнего соседнего суб-CU 178А без буферизации информации предсказания суб-CU 178А в линейном буфере.

[0125] Фиг. 5 представляет собой схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определен наиболее вероятный внутренний режим при внутреннем кодировании блока. Например, в разъяснительных целях предположим, что видеодекодер (такой как видеодекодер 30) в текущий момент декодирует синтаксические элементы, отражающие конкретный режим предсказания (например, режим внутреннего предсказания) пикселей в пределах текущего блока 180. В этом примере видеодекодер 30 может идентифицировать режимы внутреннего предсказания из верхнего соседнего блока 182 и левого соседнего блока 184, чтобы определить контекст для текущего синтаксического элемента. Соответственно, модель контекста, используемая для энтропийного декодирования текущего синтаксического элемента, может зависеть от режимов внутреннего предсказания верхнего соседнего блока 182 и левого соседнего блока 184.

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

[0127] Однако по мере того как разрешение видео и ширина кадров (например, количество пикселей справа налево поперек заданного видеокадра) возрастают, количество данных, которое хранится в линейном буфере, также увеличивается. В некоторых примерах, как отмечено выше, блоки данных до 4х4 пикселя могут использоваться, чтобы кодировать изображение. В качестве примера изображение 1920х1080 пикселей (например, видео 1080р) может включать в себя ширину, имеющую не менее 495 блоков 4х4 пикселя. Каждый блок может иметь соответствующий режим внутреннего предсказания. С 35 потенциальными режимами внутреннего предсказания видеодекодер 30 может хранить до шести битов информации предсказания для каждого из 495 блоков. Соответственно, если режимы внутреннего предсказания для каждого блока изображения хранятся в линейном буфере (который в примере, показанном на фиг. 5, включает в себя блок 182), от видеодекодера 30 может потребоваться хранение относительно значительного количества данных в линейном буфере.

[0128] Методики этого раскрытия в общем относятся к ограничению количества данных внутреннего режима из соседних блоков, которые буферизуются во время кодирования. То есть аспекты этого раскрытия относятся к ограничению количества данных внутреннего режима из соседних блоков, которые хранятся в линейном буфере для использования при выведении самого вероятного режима. Как описывается более подробно ниже со ссылкой на фиг. 7 и где-либо еще в этом раскрытии, в соответствии с аспектами этого раскрытия видеокодер (такой как видеокодер 20 или видеодекодер 30) может определять самый вероятный внутренний режим для текущего блока 180 на основе левого соседнего блока 184 (как и одного или более других левых соседних блоков, как показано в примере с фиг. 8), но не основываясь на верхнем соседнем блоке 182. В этом примере видеокодер может избегать хранения внутреннего режима верхнего соседнего блока 182 в линейном буфере, поскольку внутренний режим не используется для определения самого вероятного внутреннего режима для текущего блока 180.

[0129] В других примерах видеокодер может определять внутренний режим текущего блока 180 на основе верхнего соседнего блока 182, но только когда верхний соседний блок - из того же LCU, что и текущий блок 180. В таком примере внутренний режим для верхнего соседнего блока 182 может быть доступен (без хранения в линейном буфере), поскольку вся информация из LCU обычно доступна во время кодирования LCU. Если же верхний соседний блок 182 из другого LCU, данные, связанные с верхним соседним блоком 182, могут быть включены в другой LCU (например, в кодированном битовом потоке). Соответственно, в том примере видеокодеру может быть нужно буферизовать внутренний режим, который требует ресурсов памяти и может также предотвратить параллельное кодирование разных LCU, как описывается выше. Многообразие других методик, как описывается ниже, также может использоваться, чтобы сократить количество предиктивной информации, которая буферизуется во время кодирования видео.

[0130] Фиг. 6 представляет собой схему, иллюстрирующую потенциальных кандидатов для предиктора вектора движения при осуществлении предсказания вектора движения (включая AMVP и режим слияния). То есть для блока 188, кодируемого в текущий момент, информация движения (например, вектор движения, содержащий горизонтальный компонент и вертикальный компонент, индексы вектора движения, направления предсказания или другую информацию) из соседних блоков А0, А1, В0, В1 и В2 может использоваться для предсказания информации движения для блока 188. Кроме того, информация движения, связанная с временным совместно размещенным блоком COL, также может использоваться для предсказания информации движения для блока 188 (например, совместно размещенного блока в опорном изображении). Соседние блоки А0, А1, В0, В1 и В2 и совместно размещенный блок COL в контексте предсказания вектора движения могут в общем называться далее кандидатами для предиктора вектора движения.

[0131] В некоторых примерах кандидаты для предиктора вектора движения, показанные на фиг. 6, могут быть идентифицированы при выполнении предсказания вектора движения (например, будет ли это генерация MVD или выполнение режима слияния). В других примерах разные кандидаты могут быть идентифицированы при выполнении режима слияния и предсказания вектора движения. То есть видеокодер (такой как видеокодер 20 или видеодекодер 30) может идентифицировать другую группу кандидатов для предиктора вектора движения для выполнения режима слияния, нежели для выполнения предсказания вектора движения.

[0132] Чтобы выполнять режим слияния, в одном примере видеокодер (такой как видеокодер 20) может изначально определять, какие векторы движения из кандидатов для предиктора вектора движения доступны для слияния с блоком 188. То есть в некоторых случаях информация движения от одного или нескольких кандидатов для предиктора вектора движения может быть недоступна в силу того, например, что кандидат для предиктора вектора движения подвергается внутреннему кодированию, еще не кодируется или не существует (например, один или несколько кандидатов для предиктора вектора движения находятся в другом изображении или фрагменте). Видеокодер 20 может создавать список кандидатов для предиктора вектора движения, который включает в себя каждый из блоков кандидатов для предиктора вектора движения.

[0133] После создания списка кандидатов видеокодер 20 может выбирать вектор движения из списка кандидатов для использования в качестве вектора движения для текущего блока 100. В некоторых примерах видеокодер 20 может выбирать тот вектор движения из списка кандидатов, который максимально совпадает с вектором движения для блока 188. То есть видеокодер 20 может выбирать вектор движения из списка кандидатов в соответствии с анализом скорости-искажения.

[0134] Видеокодер 20 может обеспечивать индикацию того, что блок 188 кодируется с использованием режима слияния. Например, видеокодер 20 может задавать флаг или другой синтаксический элемент, отражающий, что вектор движения для блока 188 предсказывается с использованием режима слияния. В примере видеокодер 20 может отражать, что параметры внешнего предсказания для блока 188 выводятся на основе кандидата для предиктора вектора движения путем установки merge_flag [x0][y0]. В этом примере индексы массива x0, y0 могут определять местоположение (x0, y0) верхнего левого образца яркости блока предсказания относительно верхнего левого образца яркости изображения (или фрагмента).

[0135] В дополнение к этому в некоторых примерах видеокодер 20 может обеспечивать индекс, отражающий кандидата для слияния, от которого блок 188 наследует свой вектор движения. Например, merge_idx [x0][y0] может определять индекс кандидата для слияния, который идентифицирует изображение в списке кандидатов для слияния и где x0, y0 определяет местоположение (x0, y0) верхнего левого образца яркости блока предсказания относительно верхнего левого образца яркости изображения (или фрагмента).

[0136] Видеодекодер (такой как видеодекодер 30) может выполнять сходные этапы, чтобы идентифицировать надлежащего кандидата для слияния при декодировании блока 188. Например, видеодекодер 30 может принимать индикацию того, что блок 188 предсказывается с использованием режима слияния. В примере видеодекодер 30 может принимать merge_flag [x0][y0], где x0, y0 определяют местоположение (x0, y0) верхнего левого образца яркости (соответствующего пикселю в блоке) блока предсказания относительно верхнего левого образца яркости изображения (или фрагмента). Описанные в отношении образцов яркости, методики, представленные выше, также могут выполняться для образцов цветности.

[0137] В некоторых примерах видеодекодер 30 может масштабировать предиктор вектора движения до объединения информации движения блока-кандидата с блоком 188. Например, если предиктор вектора движения относится к предиктивному блоку в опорном изображении, которое располагается в другой временной точки, нежели предиктивный блок, к которому относится блок 188 (например, актуальный вектор движения для блока 188), видеодекодер 30 может масштабировать предиктор вектора движения. Например, видеодекодер 30 может масштабировать предиктор вектора движения так, что тот относится к тому же опорному изображению, что и опорное изображение для блока 188. В некоторых примерах видеодекодер 30 может масштабировать предиктор вектора движения в соответствии со значениями подсчета порядка изображений (РОС). После выбора предиктора вектора движения видеодекодер 30 может объединять информацию движения, связанную с предиктором вектора движения, с информацией движения для блока 188.

[0138] Кроме того, видеодекодер 30 может создавать список кандидатов для слияния. Например, видеодекодер 30 может принимать один или несколько синтаксических элементов (например, флагов), отражающих видеоблоки, которые доступны для предсказания вектора движения. Видеодекодер 30 может создавать список кандидатов для слияния на основе принятых флагов. Если некоторые кандидаты для слияния имеют одинаковые векторы движения и одинаковые опорные индексы, некоторые из избыточных кандидатов для слияния могут быть удалены (то есть убраны) из списка.

[0139] Видеодекодер 30 может идентифицировать надлежащего кандидата для слияния в соответствии с принятым индексом. Например, видеодекодер 30 может принимать индекс, идентифицирующий кандидата для слияния, от которого блок 188 наследует свой вектор движения. Например, merge_idx [x0][y0] может определять индекс кандидата для слияния, который идентифицирует изображение в списке кандидатов для слияния и где x0, y0 определяет местоположение (x0, y0) верхнего левого образца яркости блока предсказания относительно верхнего левого образца яркости изображения (или фрагмента).

[0140] Сходный процесс может осуществляться видеокодером 20 и видеодекодером 30, чтобы выполнить предсказание вектора движения для текущего блока видеоданных. Например, видеокодер 20 может изначально определять, какие векторы движения из кандидатов для предиктора вектора движения доступны для использования в качестве MVP. Информация движения от одного или нескольких кандидатов для предиктора вектора движения может быть недоступна в силу того, например, что кандидат для предиктора вектора движения подвергается внутреннему кодированию, еще не кодируется или не существует (например, не включен в изображение или фрагмент, как то блоки над верхней строкой блоков в изображении или фрагменте).

[0141] Чтобы определить, какие из кандидатов для предиктора вектора движения доступны, видеокодер 20 может анализировать каждый из кандидатов для предиктора вектора движения по очереди в соответствии с определенной заранее схемой на основе приоритетов. Например, для каждого кандидата для предиктора вектора движения видеокодер 20 может определять, относится ли предиктор вектора движения к тому же опорному изображению, что и актуальный вектор движения для блока 188. Если предиктор вектора движения относится к тому же опорному изображению, видеокодер 20 может добавить кандидата для предиктора вектора движения в список кандидатов MVP. Если предиктор вектора движения не относится к тому же опорному изображению, он может быть масштабирован (например, масштабирован на основе расстояний РОС, как рассматривается выше) до того, как будет добавлен к списку кандидатов MVP.

[0142] Что касается совместно размещенного блока COL, если совместно размещенный блок включает в себя более одного предиктора вектора движения (например, COL предсказывается как В-кадр), видеокодер 20 может выбирать один из временных предикторов вектора движения в соответствии с текущим списком и текущим опорным изображением (для блока 188). Видеокодер 20 затем может добавлять выбранный временный предиктор вектора движения в список кандидатов для предиктора вектора движения.

[0143] Видеокодер 20 может сигнализировать, что один или несколько предикторов вектора движения доступны, путем установки enable_temporal_mvp_flag. После создания списка кандидатов видеокодер 20 может выбирать вектор движения среди кандидатов для использования в качестве предиктора вектора движения для блока 100. В некоторых примерах видеокодер 20 может выбирать кандидата для вектора движения в соответствии с анализом скорости-искажения.

[0144] Видеокодер 20 может сигнализировать выбранный предиктор вектора движения с использованием индекса MVP (mvp_flag), который идентифицирует MVP в списке кандидатов. Например, видеокодер 20 может устанавливать mvp_10_flag[x0][y0], чтобы определить индекс предиктора вектора движения в списке 0, где x0, y0 определяют местоположение (x0, y0) верхнего левого образца яркости блока-кандидата относительно верхнего левого образца яркости изображения. В другом примере видеокодер 20 может устанавливать mvp_11_flag[x0][y0], чтобы определить индекс предиктора вектора движения в списке 1, где x0, y0 определяют местоположение (x0, y0) верхнего левого образца яркости блока-кандидата относительно верхнего левого образца яркости изображения. Еще в одном примере видеокодер 20 может устанавливать mvp_1с_flag[x0][y0], чтобы определить индекс предиктора вектора движения в списке с, где x0, y0 определяют местоположение (x0, y0) верхнего левого образца яркости блока-кандидата относительно верхнего левого образца яркости изображения.

[0145] Видеокодер 20 также может генерировать значение разности вектора движения (MVD). MVD может составлять разность между выбранным предиктором вектора движения и актуальным вектором движения для блока 188. Видеокодер 20 может сообщать MVD с индексом MVP.

[0146] Видеодекодер 30 может осуществлять сходные операции, чтобы определить вектор движения для текущего блока с использованием предиктора вектора движения. Например, видеодекодер 30 может принимать индикацию в группе параметров (например, группе параметров изображения (PPS)), отражающей, что предсказание вектора движения возможно для одного или нескольких изображений. То есть в примере видеодекодер 30 может принимать enable_temporal_mvp_flag в PPS. Когда конкретное изображение опирается на PPS, имеющую enable_temporal_mvp_flag, равный нулю, опорные изображения в памяти опорных изображений могут быть помечены как «неиспользуемые для временного предсказания вектора движения».

[0147] Если предсказание вектора движения осуществляется, по приеме блока 188 видеодекодер 30 может создавать список кандидатов MVP. Видеодекодер 30 может использовать ту же схему, что была описана выше в отношении видеокодера 20 при создании списка кандидатов MVP. В некоторых случаях видеодекодер 30 может осуществлять масштабирование вектора движения подобно тому, как было описано выше в отношении видеокодера 20. Например, если предиктор вектора движения не относится к тому же опорному изображению, что и блок 188, он может быть масштабирован (например, масштабирован на основе расстояний РОС, как рассматривается выше) до того, как будет добавлен к списку кандидатов MVP. Видеодекодер 30 может идентифицировать надлежащий предиктор вектора движения для блока 188, используя принятый индекс MVP (mvp_flag), который идентифицирует MVP в списке кандидатов. Затем видеодекодер 30 может генерировать вектор движения для блока 100, используя MVP и принятую MVD.

[0148] Следует понимать, что блоки-кандидаты для предиктора вектора движения, показанные на фиг. 6, предлагаются лишь для примера и что больше, меньше блоков или другие блоки могут использоваться в целях предсказания информации движения.

[0149] В любом случае видеокодер (такой как видеокодер 20 или видеодекодер 30) может хранить или буферизовать информацию движения для А0, А1, В0, В1 и В2 и совместно размещенного блока COL так, что данные доступны при генерации MVD или выполнении режима слияния. Например, видеокодер может хранить информацию движения (например, векторы движения, индексы опорных изображений, направления предсказания или другую информацию) верхних соседних блоков В0, В1 и В2 в линейном буфере, который увеличивает ширину изображения, содержащего блоки, так, что информация движения доступна во время внутреннего предсказания блока 188.

[0150] Однако, как отмечено выше, количество данных, хранящихся в линейном буфере, может относительно большим. Например, изображение 1920х1080 пикселей (например, видео 1080р) может включать в себя ширину, имеющую не менее 495 блоков 4х4 пикселя, при этом каждый блок потенциально имеет свою собственную информацию движения. Кроме того, может быть до 16 опорных изображений, доступных для кодирования каждого изображения. Соответственно, когда вся информация движения для каждого блока изображения в линейном буфере сохраняется, от видеокодера может потребоваться хранение относительно значительного количества данных в линейном буфере.

[0151] В соответствии с аспектами этого раскрытия видеокодер (такой как видеокодер 20 или видеодекодер 30) может ограничивать количество точек, с которых определяется информация движения для блока 188, чтобы сократить количество данных, хранящихся в линейном буфере во время кодирования. То есть, например, вместо определения информации движения (например, MVP или кандидата для слияния) для кодирования блока 188 из всех А0, А1, В0, В1 и В2 видеокодер может определять информацию движения для блока 188 на основе только подгруппы кандидатов. В соответствии с аспектами этого раскрытия видеокодер может определять информацию движения для блока 188 на основе левых соседних блоков А0 и А1 и совместно размещенного блока COL, но не на основе верхних соседних блоков В0, В1 или В2. То есть, например, видеокодер может определять информацию движения для блока 188 только основываясь на левых соседних блоках А0 и А1 и совместно размещенном блоке COL. В этом примере видеокодер может избегать сохранения информации движения, связанной с верхними соседними блоками В0, В1 или В2 в линейном буфере, поскольку информация движения не используется для определения MVP или кандидата для слияния для блока 188.

[0152] В других примерах видеокодер может определять информацию движения для блока 188 на основе одного или нескольких верхних соседних блоков В0, В1 или В2 (например, в дополнение к А0 и А1 и совместно размещенному блоку COL), но только когда верхние соседние блоки - из того же LCU, что и текущий блок 188. В таком информация движения для верхних соседних блоков В0, В1 или В2 может быть доступна (без хранения в линейном буфере), поскольку вся информация из LCU обычно доступна во время кодирования LCU. Многообразие других методик, как описывается ниже, также может использоваться, чтобы сократить количество информации предсказания, которая буферизуется во время кодирования видео.

[0153] Фиг. 7 представляет собой схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определена информация предсказания в соответствии с аспектами этого раскрытия. Пример, показанный на фиг. 7, в общем описывается как реализуемый видеокодером. Следует понимать, что в некоторых примерах методика с фиг. 7 может выполняться видеокодером 20 (фиг. 1 и фиг. 2) или видеодекодером 30 (фиг. 1 и фиг. 3), описанными выше. В других примерах методика с фиг. 7 может реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0154] Видеокодер может в текущий момент кодировать (например, осуществлять внешнее кодирование или внутреннее кодирование) текущий блок 190 кодированного элемента 191. Кодированный элемент 191 в общем может включать в себя определенное заранее количество видеоданных, включающее в себя множественные блоки, такие как, например, LCU, фрагмент, элемент мозаичного изображения, группа элементов мозаичного изображения, группа волновых фронтов, или любой другой заранее определенный элемент, который включает в себя множественные блоки видеоданных. При том что верхние соседние блоки 194, левые соседние блоки 192 и блоки 196 в общем показаны как неразделенные блоки в примере с фиг. 7, следует понимать, что такие блоки могут быть разделены на один или несколько меньших блоков.

[0155] В соответствии с аспектами этого раскрытия, вместо использования информации предсказания из верхних соседних блоков 194 для кодирования блока 190 видеокодер может использовать только информацию предсказания (например, информацию внутреннего или внешнего предсказания) из левых соседних блоков 192. Например, видеокодер может не использовать данные из верхних соседних блоков 194 или прежде кодированных блоков 196, которые не располагаются по соседству с текущим блоком 190, при осуществлении внешнего предсказания или внутреннего предсказания для текущего блока 190. В этом примере видеокодер может буферизовать меньше данных, чем когда информация предсказания для всех соседних блоков (например, как показано на фиг. 5 и фиг. 6) используется во время кодирования. К примеру, предполагая, что размер максимального LCU-64х64 пикселя, размер самого маленького CU-4х4 пикселя, видеодекодер 30 может потенциально буферизовать данные, связанные только с 16 блоками видеоданных (например, 64/4=16 потенциальных левых соседних блоков).

[0156] Путем ограничения точек, из которых выводится информация контекста, как показано и описано в примере с фиг. 7, видеокодер может сократить количество данных, которые буферизуются в целях предсказания. Кроме того, видеокодер может увеличить аналитическую производительность. Например, как отмечено выше, видеодекодер (такой как видеодекодер 30) может анализировать принятые видеоданные в соответствии с конкретным процессом анализа (например, анализ волнового фронта). В примерах, в которых видеодекодер 30 не определяет информацию предсказания из определенных соседних блоков, таких как верхние соседние блоки 194, видеодекодер 30 может устранять зависимости, чтобы улучшить аналитическую производительность и возможность обрабатывать видеоданные параллельно. Кроме того, устранение зависимостей может снизить потенциал для ошибок вывода предсказаний, таким образом дополнительно совершенствуя процесс анализа.

[0157] Фиг. 8 представляет собой другую блок-схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определена информация предсказания для кодирования блока. В примере, показанном на фиг. 8, видеокодер (такой как видеокодер 20 или видеодекодер 30) может определять информацию предсказания для блока 200, кодируемого в настоящий момент, на основе левого соседнего блока L и нижнего левого соседнего блока BL. По сравнению с примером, показанным на фиг. 7, пример с фиг. 8 добавляет дополнительный левый соседний блок, на основе которого можно вывести информацию предсказания.

[0158] В примере, показанном на фиг. 8, как и в примере, продемонстрированном на фиг. 7, линейный буфер для хранения информации предсказания (например, внутренних режимов или информации движения) для верхних соседних блоков относительно текущего блока 200 может вовсе быть не нужен. Как объясняется выше, LCU может разбиваться на разные компоновки CU. Так, блоки L и BL с фиг. 8 могут отличаться от блоков CU одного и того же LCU.

[0159] Что касается внутреннего предсказания, оба: блок L и блок BL - могут кодироваться с использованием одного и того же режима внутреннего предсказания, но в некоторых случаях они могут кодироваться с использованием разных режимов внутреннего предсказания. На основе режима внутреннего предсказания блока L и режима внутреннего предсказания блока BL может быть определен самый вероятный режим внутреннего предсказания для текущего блока 200. Например, если оба: блок L и блок BL - были кодированы с использованием Режима 6 (из заранее определенного количества внутренних режимов), самый вероятный режим внутреннего предсказания для текущего блока 200 также может быть Режимом 6. Еще Режим 6 может не быть актуальным режимом предсказания для блока 200, но может быть статистически наиболее вероятным режимом для блока 200 с учетом контекста для блока 200 (то есть режимов предсказания блоков, соседних с блоком 200).

[0160] В другом примере, с целью повысить эффективность кодирования и избежать избыточности, если блоки L и BL имеют один и тот же режим внутреннего предсказания, третий блок слева от текущего блока 200 также может использоваться при определении самого вероятного режима. Следует отметить, что блоки L и BL (или третий левый блок) не обязательно должны быть напрямую прямо смежными с блоком 200, а могут быть одним или несколькими столбцами слева от блока 200. Если блок L и блок BL кодируются с использованием Режимов 3 и 8 соответственно, то самым вероятным режим для блока 200 может быть Режим 3, Режим 8 или другой режим. Самый вероятный режим для конкретного контекста может выбираться путем идентификации режима внутреннего предсказания, который статистически более вероятен для этого контекста. Путем избегания использования верхнего блока для определения самого вероятного режима потребность в линейном буфере для хранения режимов внутреннего предсказания для верхних блоков может быть устранена.

[0161] Что касается внешнего предсказания, информация движения, включающая в себя отражающие вектор движения (mvx, mvy) координаты x и y вектора движения, опорный индекс (ref_idx), указывающий на опорное изображение в списке опорных кадров, и направление предсказания (inter_dir), отражающее, какой список опорных кадров использовать (например, L0 или L1), может храниться для блоков, соседних с блоком 200. В некоторых примерах вся информация движения может храниться в соответствующих линейных буферах. В соответствии с аспектами этого раскрытия видеокодер может хранить информацию движения только для блока L и блока BL и исключать информацию движения для верхних соседних блоков.

[0162] В соответствии с некоторыми примерами возможная потеря производительности, связанная с сокращением количества кандидатов для предсказания вектора движения, может компенсироваться генерацией дополнительных кандидатов движения. Например, как показано в примерной таблице 1 ниже, видеокодер может генерировать дополнительных кандидатов движения, используя доступную информацию движения, такую как информация движения блоков L и BL.

Таблица 1
Сгенерированные кандидаты движения
Merge idx L0 L1
0 mvL0_A, ref0 От L
1 mvL1_B, ref0 От BL
2 mvL0_A, ref0 mvL1_B, ref0 Сгенерирован
3 mvL0_A, ref0 mvL0'_A, ref0' Сгенерирован
4 mvL1'_B, ref0' mvL1_B, ref0 Сгенерирован

[0163] Как показано в примере из таблицы 1, видеокодер может генерировать кандидаты для слияния движения (2), (3) и (4), используя информацию движения из блоков L и BL. То есть информация движения (inter_dir, ref_dir и mv) кандидатов L и BL может использоваться, чтобы генерировать новые кандидаты движения. В этом примере mvLX_Y может отражать вектор движения списка X в Y-м кандидате, mvLX'_Y может отражать обработанный вектор движения LX_Y, refN в N-м опорном изображении в списке ссылок. Сгенерированная информация движения, показанная в таблице 1, может быть создана путем масштабирования, смещения, ограничения или иного модифицирования существующей информации движения.

[0164] При том что пример с фиг. 8 описывается со ссылкой на L и BL, как отмечено выше, другие блоки также могут использоваться (например, дополнительные блоки, блоки, не соседние с блоком 200, и т.п.). Кроме того, методики, описанные в отношении режима слияния (например, как показано в таблице 1), могут подобным образом применяться в отношении предсказания вектора движения с использованием MVD.

[0165] Фиг. 9 представляет собой другую схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определена информация предсказания для кодирования блока. Например, аспекты этого раскрытия включают в себя определение информации предсказания для текущего блока 205 на основе множества левых соседних блоков L00-L0N, L10-L1N, L20-L2N, BL0-BLN и так далее. В некоторых примерах видеокодер может определять информацию предсказания на основе блоков из одного или нескольких столбцов слева от блока, подвергаемого кодированию. То есть в отношении внешнего кодирования финальный список кандидатов для вектора движения может быть создан с помощью блоков, выбранных из множества левых соседних блоков. Что касается внутреннего кодирования, внутренние режимы из множества левых соседних блоков могут использоваться для выведения самого вероятного режима.

[0166] Дополнительные левые соседние блоки (например, слева от граничных блоков LN0), как показано в примере с фиг. 9, могут использоваться для компенсации потери производительности, связанной с отсутствием буферизации информации предсказания левых соседних блоков. Например, в некоторых случаях внутренний режим верхнего соседнего блока может совпадать с тем, что используется для блока 205. В других случаях вектор движения, связанный с верхним соседним блоком, может совпадать или почти совпадать с вектором движения блока 205. В этих случаях предотвращение поиска видеокодером данных из верхних соседних блоков во время кодирования может привести к потере производительности кодирования, так как видеокодер может быть вынужден искать менее точный предиктор. Однако путем увеличения количества левых соседних блоков, на основе которых видеокодером могут отыскиваться данные для определения информации предсказания, потенциал нахождения предиктора относительно высокого качества может возрасти.

[0167] В некоторых примерах левые соседние блоки, показанные на фиг. 9, могут быть разными CU, которые формируют один и тот же LCU. В других примерах левые соседние блоки могут быть включены в разные LCU.

[0168] Фиг. 10 представляет собой другую схему, иллюстрирующую примерные соседние блоки, на основе которых может быть определена информация предсказания для кодирования блока. Например, в отличие от того чтобы удерживаться от хранения каких-либо данных, связанных с верхними соседними блоками, другим способом сокращения количества данных линейного буфера в целях предсказания (например, внешнего кодирования или внутреннего кодирования) является сокращение количества блоков, которые хранятся в линейном буфере. В примере, показанном на фиг. 10, блок 210 кодируется в настоящий момент, тогда как блоки 212 были кодированы прежде. В некоторых примерах информация предсказания (например, внутренние режимы или информация движения), связанная с блоками 214А и 214В (вместе - блоки 214), может сохраняться в линейном буфере.

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

[0170] В примере, показанном на фиг. 10, если видеокодеру (такому как видеокодер 20 или видеодекодер 30) нужно определить информацию предсказания из одного из блоков 214А, он может считывать информацию предсказания из линейного буфера. То есть, например, если один из блоков 214А включает в себя контекст для определения самого вероятного режима для блока 210, видеокодер может считывать внутренний режим из линейного буфера.

[0171] В качестве альтернативы, если видеокодеру нужно определить информацию предсказания из одного из блоков 214В, он может выводить информацию предсказания для блока на основе подгруппы информации предсказания, хранящейся в буфере. Выведение может, например, быть основано на копировании информации предсказания для одного или нескольких ближних блоков 214А, которая хранятся в буфере, интерполировании информации движения, которая хранятся в буфере, или выведения информации предсказания каким-нибудь другим способом на основе информации предсказания, хранящейся для блоков 214А.

[0172] Фиг. 11 представляет собой концептуальную схему, иллюстрирующую пример ограничения (например, уменьшения битовой глубины) векторов движения, хранящихся в буфере. То есть, например, другим способом сократить количество информации предсказания, которая хранится в линейном буфере (и, в частности, векторов движения для внешнего предсказания), может быть сокращение количества битов, которые используются при хранении каждого компонента каждого вектора движения.

[0173] В этом примере, как показано на фиг. 11, каждый вектор движения, который хранится в линейном буфере (например, векторы движения, связанные с верхними соседними блоками), может быть ограничен до N битов, где каждый вектор движения изначально составляет М битов (М больше N). В примере с фиг. 11 М равно 12, а N равно 8, хотя другие варианты количества битов также могут применяться. Следует понимать, что конкретное выражение целых, показанное на фиг. 11, может не соответствовать физическому выражению (известному как арифметика кодов с дополнением до двух), но предлагается в целях объяснения. При примерном ограничении битов, показанном на фиг. 11, максимальный диапазон вектора движения без точности до субпикселя («субпэла»/“sub-pel”) составляет 64. Когда движение невелико, ограничение может иметь относительно малое влияние или отсутствие влияния на эффективность кодирования.

[0174] Фиг. 12 представляет собой другую концептуальную схему, иллюстрирующую пример ограничения векторов движения, хранящихся в линейном буфере. Например, если релевантный вектор движения относительно велик, меньше значимый битов может быть ограничено. То есть в примере с фиг. 12 самые значимые биты и один из битов субпикселя были ограничены. Точнее, в примере с фиг. 12 устраняется точность до ¼-пикселя или субпикселя и удаляются 3 самых значимых бита, хотя может применяться и другая конфигурация может применяться. Количество битов, удаляемых из самых или наименее значимых битов (например, как показано на фиг. 11 и фиг. 12), может быть определено в группе параметров, такой как SPS или PPS.

[0175] Фиг. 13 представляет собой блок-схему, иллюстрирующую граничные CU из LCU. Например, LCU 240 граничит с блоками 242, которые могут включать в себя один или несколько других LCU. В примере, показанном на фиг. 13, LCU 240 включает в себя граничные CU 244, которые делят границу с блоками 242, и внутренние CU 246, которые не граничат с блоками 242. Каждый из CU в LCU 240 может иметь соответствующие PU.

[0176] В некоторых примерах, как описывается выше, видеокодер может кодировать PU из LCU 240, используя информацию предсказания (например, внутренние режимы или информацию движения) из верхних соседних блоков. Информация предсказания для верхних соседних PU из CU 246 может быть легкодоступной, поскольку такие PU включены в один и тот же LCU 242. Однако с целью получить доступ к информации предсказания из верхних соседних блоков 242 при кодировании граничных PU из CU 244 видеокодер должен осуществлять доступ к такой информации из другого LCU, отличного от LCU 240, подвергаемого кодированию. Чтобы быть доступным, например, без осуществления доступа к памяти, внешней по отношению к видеокодеру, видеокодер может сохранять такую верхнюю соседнюю информацию предсказания в линейном буфере.

[0177] Применение этой унифицированной схемы для всех PU из LCU 240 (который включает в себя буфер для хранения информации для граничных CU 244) может помочь в деле упрощения применения аппаратного обеспечения. То есть все PU могут осуществлять доступ к информации предсказания из одних и тех же связанных точек. Однако исключение данных из верхних соседних блоков 242 в LCU, отличном от LCU, содержащего блоки 244, 246, из возможности быть найденными во время кодирования также может минимизировать влияние неточностей, которые могут появляться при расчете на CU за пределами LCU 240, таким образом повышая производительность кодирования. То есть если данные из верхних соседних блоков 242 формируют часть другого фрагмента, который теряется или иначе разрушается, видеокодер все еще может кодировать граничные CU 244.

[0178] Соответственно, методики, описанные в этом описании, могут применяться только в отношении подгруппы PU из LCU. То есть, например, методики ограничения количества данных, сохраняемых в линейном буфере, могут применяться только в отношении граничных CU 244 из LCU 240, для чего может понадобиться доступ к линейному буферу.

[0179] Фиг. 14 представляет собой блок-схему последовательности операций, иллюстрирующую примерные методики для сокращения количества информации предсказания, которая буферизуется во время кодирования видео. Пример, показанный на фиг. 14, в общем описывается как реализуемый видеокодером. Следует понимать, что в некоторых примерах методика с фиг. 14 может выполняться видеокодером 20 (фиг. 1 и фиг. 2) или видеодекодером 30 (фиг. 1 и фиг. 3), описанными выше. В других примерах методика с фиг. 14 может реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0180] Видеокодер может принять блок видеоданных кодированного элемента (например, изображения, фрагмента, элемента мозаичного изображения, группы волновых фронтов и т.п.) для энтропийного кодирования (260). В соответствии с аспектами этого раскрытия блок видеоданных может располагаться ниже верхней строки блоков в кодированном элементе. В некоторых примерах блок, кодируемый в текущий момент, может быть суб-CU, который включен в тот же LCU, что и верхние соседние суб-CU. В других примерах блок может располагаться на границе LCU так, что верхние соседние блоки относятся к LCU, отличному от текущего блока.

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

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

[0183] В другом примере блок видеоданных может включать в себя один или несколько блоков LCU, и блоки верхней строки могут включать в себя один или несколько других LCU. В таком примере в соответствии с аспектами этого раскрытия видеокодер может определять информацию предсказания для блока, используя информацию предсказания, связанную с другими блоками LCU, за исключением верхней строки верхних соседних блоков (включенных в другие LCU). В примере в иллюстративных целях блок, подвергаемый кодированию, может включать в себя первый суб-CU LCU, верхние соседние блоки могут включать в себя один или несколько других LCU. Предположим, что второй суб-CU располагается над первым суб-CU (в одном и том же LCU). В этом примере видеокодер может определять информацию предсказания для первого суб-CU, используя информацию на основе второго суб-CU, который располагается над первым суб-CU.

[0184] Затем видеокодер может кодировать блок на основе определенной информации предсказания (264). Например, как описывается более подробно со ссылкой на фиг. 15 и фиг. 16 ниже, если блок - это блок, подвергшийся внутреннему кодированию, видеокодер может кодировать блок путем определения самого вероятного режима для блока на основе режимов внутреннего предсказания из одного или нескольких других блоков. В качестве альтернативы, как описывается более подробно со ссылкой на фиг. 17 и фиг. 18 ниже, если текущий блок - это блок, подвергшийся внешнему кодированию, видеокодер может кодировать блок путем определения MVD (или информации слияния) на основе информации движения из одного или нескольких других блоков.

[0185] Следует понимать, что этапы, показанные и описанные со ссылкой на фиг. 14, представляют собой лишь один пример. То есть этапы способа с фиг. 14 не обязательно должны выполняться в порядке, показанном на фиг. 14, и может выполняться меньшее количество этапов, могут выполняться дополнительные или альтернативные этапы.

[0186] Фиг. 15 представляет собой блок-схему последовательности операций, иллюстрирующую примерные методики для сокращения количества информации предсказания, которая буферизуется при выполнении внутреннего предсказания при кодировании видео. При том что идет описание в отношении видеокодера 20, следует понимать, что методики, описанные со ссылкой на фиг. 15, могут реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0187] В примере, показанном на фиг. 15, видеокодер 20 может определить режим внутреннего предсказания для первого блока видеоданных (270). Видеокодер 20 также может определить режим внутреннего предсказания для второго блока видеоданных (272). В соответствии с аспектами этого раскрытия видеокодер 20 может определить режим внутреннего предсказания для второго блока на основе режима внутреннего предсказания для первого блока, но только если первый блок не является верхним соседним блоком второго блока (274). Если первый блок является верхним соседним блоком, видеокодер 20 может определять самый вероятный внутренний режим для второго блока на основе одного или нескольких других блоков. То есть верхний соседний блок может быть исключен из числа рассматриваемых как первый блок. В некоторых примерах видеокодер 20 может применять ограничение на верхний соседний блок, только если первый блок из другого LCU, нежели второй блок.

[0188] Видеокодер 20 может определять, является ли определенный самый вероятный внутренний режим таким же, как определенный внутренний режим для второго блока (276). Если самый вероятный внутренний режим является таким же, как определенный внутренний режим для второго блока (ветвь ДА (YES) этапа 276), видеокодер может обеспечить индикацию самого вероятного режима в кодированном битовом потоке (278). В соответствии с некоторыми примерами видеокодер 20 может устанавливать флаг самого вероятного режима в кодированном битовом потоке, таким образом отражая, что самый вероятный режим использовался для осуществления внутреннего кодирования второго блока. В этом примере, как описывается более подробно со ссылкой на фиг. 16 ниже, после декодирования флага самого вероятного режима видеодекодер (такой как видеодекодер 30) может воспроизводить процесс выведения самого вероятного режима, чтобы определить внутренний режим, используемый для кодирования второго блока. Если самый вероятный внутренний режим не является таким же, как внутренний режим для второго блока (ветвь НЕТ (NO) этапа 276), видеокодер 20 может обеспечить индикацию внутреннего режима, используемого, чтобы кодировать блок, в кодированном битовом потоке (280).

[0189] Следует понимать, что этапы, показанные и описанные со ссылкой на фиг. 15, представляют собой лишь один пример. То есть этапы способа с фиг. 15 не обязательно должны выполняться в порядке, показанном на фиг. 15, и может выполняться меньшее количество этапов, могут выполняться дополнительные или альтернативные этапы.

[0190] Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую примерные методики для сокращения количества информации предсказания, которая буферизуется при выполнении внутреннего предсказания при декодировании видео. При том что идет описание в отношении видеодекодера 30, следует понимать, что методики, описанные со ссылкой на фиг. 16, могут реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0191] Видеодекодер 30 может определить режим внутреннего предсказания для первого блока видеоданных (290). Видеодекодер 30 также может принимать индикацию самого вероятного внутреннего режима второго блока (292). Например, видеодекодер 30 может в некоторых примерах принимать флаг самого вероятного режима, который отражает, был ли самый вероятный режим использован для осуществления внутреннего предсказания пикселей во втором блоке.

[0192] Видеодекодер 30 может определять, является ли самый вероятный внутренний режим таким же, как внутренний режим для декодирования второго блока на основе принятой индикации (294). Если самый вероятный внутренний режим является надлежащим внутренним режимом для декодирования второго блока (ветвь ДА (YES) этапа 274), видеодекодер 30 может определить самый вероятный внутренний режим для второго блока (296). Например, в соответствии с аспектами этого раскрытия видеодекодер 30 может определить режим внутреннего предсказания для второго блока на основе режима внутреннего предсказания для первого блока, но только если первый блок не является верхним соседним блоком второго блока. Если первый блок является верхним соседним блоком, видеодекодер 30 может определять самый вероятный внутренний режим для второго блока на основе одного или нескольких других блоков. В некоторых примерах видеодекодер 30 может применять ограничение на верхний соседний блок, только если первый блок из другого LCU, нежели второй блок.

[0193] Затем видеодекодер 30 может декодировать второй блок с использованием самого вероятного внутреннего режима (298). То есть, например, видеодекодер 30 может предсказать второй блок, используя самый вероятный режим внутреннего предсказания, и определять значения пикселей второго блока на основе комбинации предиктивных значений и принятых остаточных значений.

[0194] Если самый вероятный внутренний режим не является надлежащим внутренним режимом для декодирования второго блока (ветвь НЕТ (NO) этапа 294), видеодекодер 30 может определять внутренний режим для декодирования второго блока, например, на основе некоторых принятых сигналов (300). В других примерах видеодекодер 30 может применять внутренний режим по умолчанию для второго блока. В любом случае видеодекодер 30 затем может декодировать второй блок на основе определенного внутреннего режима (302). То есть, к примеру, видеодекодер 30 может предсказывать второй блок, используя определенный режим внутреннего предсказания, и и определять значения пикселей второго блока на основе комбинации предиктивных значений и принятых остаточных значений.

[0195] Следует понимать, что этапы, показанные и описанные со ссылкой на фиг. 16, представляют собой лишь один пример. То есть этапы способа с фиг. 16 не обязательно должны выполняться в порядке, показанном на фиг. 16, и может выполняться меньшее количество этапов, могут выполняться дополнительные или альтернативные этапы.

[0196] Фиг. 17 представляет собой блок-схему последовательности операций, иллюстрирующую примерные методики для сокращения количества информации предсказания, которая буферизуется при выполнении внешнего предсказания при кодировании видео. При том что идет описание в отношении видеокодера 20, следует понимать, что методики, описанные со ссылкой на фиг. 17, могут реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0197] В примере с фиг. 17 видеокодер 20 может определять информацию движения для первого блока видеоданных (310). Видеокодер 20 также может определять информацию движения для второго блока видеоданных (312). В соответствии с аспектами этого раскрытия видеокодер 20 может определять MVP для второго блока на основе вектора движения для первого блока, но только если первый блок не является верхним соседним блоком второго блока (314). Если первый блок является верхним соседним блоком, видеокодер 20 может определять MVP для второго блока на основе одного или нескольких других блоков. В некоторых примерах видеокодер 20 может применять ограничение на верхний соседний блок, только если первый блок из другого LCU, нежели второй блок.

[0198] Видеокодер 20 также может обеспечивать индикацию определенного MVP в кодированном битовом потоке (316). То есть видеокодер 20 может идентифицировать блок, к которому относится MVP. Кроме того, видеокодер 20 может включать MVD в кодированный битовый поток с MVP.

[0199] Хотя предлагается описание в отношении определения MVP и генерации MVD, следует понимать, что методики, описанные со ссылкой на фиг. 17, также могут использоваться для режима слияния. Также следует понимать, что этапы, показанные и описанные со ссылкой на фиг. 17, представляют собой лишь один пример. То есть этапы способа с фиг. 17 не обязательно должны выполняться в порядке, показанном на фиг. 17, и может выполняться меньшее количество этапов, могут выполняться дополнительные или альтернативные этапы.

[0200] Фиг. 18 представляет собой блок-схему последовательности операций, иллюстрирующую примерные методики для сокращения количества информации предсказания, которая буферизуется при выполнении внешнего предсказания при кодировании видео. При том что идет описание в отношении видеодекодера 30, следует понимать, что методики, описанные со ссылкой на фиг. 18, могут реализовываться множеством других процессоров, модулей обработки, модулей кодирования на основе аппаратного обеспечения, таких как кодер/декодеры (CODEC), и т.п.

[0201] В примере, показанном на фиг. 18 видеодекодер 30 может определять информацию движения для первого блока видеоданных (330). Видеодекодер также может принимать индикацию предиктора вектора движения для второго блока видеоданных (332). В соответствии с аспектами этого раскрытия видеодекодер 30 может определять MVP для второго блока на основе вектора движения для первого блока, но только если первый блок не является верхним соседним блоком второго блока (334). То есть видеодекодер 30 может добавлять вектор движения первого блока к списку кандидатов MVP, только если первый блок не является верхним соседним блоком второго блока. Если первый блок является верхним соседним блоком, видеодекодер 30 может определять MVP для второго блока на основе одного или нескольких других блоков. В некоторых примерах видеодекодер 20 может применять ограничение на верхний соседний блок, только если первый блок из другого LCU, нежели второй блок.

[0202] Видеодекодер 30 также может определять информацию движения для второго блока, комбинируя вектор движения для первого блока(в случаях когда первый блока используется как MVP) и принятой MVD. Затем видеодекодер 30 может декодировать второй блок, используя определенную информацию движения (336). То есть видеодекодер 30 может отыскивать предиктивный блок, идентифицируемый вектором движения, и определять значения пикселей второго блока на основе комбинации предиктивного блока и принятых остаточных значений.

[0203] Хотя предлагается описание в отношении определения MVP и генерации MVD, следует понимать, что методики, описанные со ссылкой на фиг. 18, также могут использоваться для режима слияния. Также следует понимать, что этапы, показанные и описанные со ссылкой на фиг. 18, представляют собой лишь один пример. То есть этапы способа с фиг. 18 не обязательно должны выполняться в порядке, показанном на фиг. 18, и может выполняться меньшее количество этапов, могут выполняться дополнительные или альтернативные этапы.

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

[0205] В одном или нескольких примерах описанные функции могут реализовываться в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. При применении в программном обеспечении функции могут храниться на машиночитаемом носителе или передаваться на него в виде одной или нескольких команд или кода и выполняться модулем обработки на основе аппаратного обеспечения. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствуют материальному носителю, такому как средства накопления данных, или средства связи, включающие в себя любое средство, которое упрощает перемещение компьютерной программы из одного места в другое, например, в соответствии с протоколом связи.

[0206] Таким образом, машиночитаемые носители в общем могут соответствовать (1) материальным машиночитаемым носителям дынных, которые являются некратковременными, или (2) средству связи, такому как сигнал или несущая волна. Средства накопления данных могут быть любыми доступными средствами, доступ к которым может осуществляться одним или несколькими компьютерами или одним или несколькими процессорами, чтобы находить команды, код и/или структуры данных для применения методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.

[0207] В качестве примера, но не ограничения такие машиночитаемые носители могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные накопители данных, флэш-память или любой другой носитель, который может использоваться, чтобы хранить желаемый программный код в виде команд или структур данных, доступ к которым может осуществляться с компьютера. Также любое соединение надлежащим образом именуется машиночитаемым носителем. Например, если команды передаются с веб-сайта, сервера ли другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как ИК, радио или микроволна, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как ИК, радио или микроволна, включаются в определение носителя.

[0208] Следует понимать, однако, что машиночитаемые носители и средства хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, но вместо этого направлены на не кратковременные, материальные носители данных. Магнитный диск и оптический диск, как это используется здесь включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), флоппи-диск и диск Blu-ray, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом, при помощи лазеров. Комбинации описанного выше также должны быть включены в пределы объема машиночитаемых носителей.

[0209] Команды могут выполняться одним или несколькими процессорами, такими как один или несколько цифровых процессоров сигналов (DSP), процессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или другого интегрированного эквивалента или схем дискретной логики. Соответственно, термин «процессор», как это используется здесь, может относиться к любой из вышеупомянутых структур или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах описанная здесь функциональность может обеспечиваться в пределах специализированных модулей аппаратного обеспечения и/или программного обеспечения, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Также методики могут в полной мере реализовываться в одной или нескольких схемах или логических элементах.

[0210] Методики этого раскрытия могут применяться в широком многообразии устройств и аппаратур, включая беспроводной телефон, интегральную схему (IC) или группу IC (например, набор микросхем). Различные компоненты, узлы или модули описываются в этом раскрытии, чтобы выделить функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрытые методики, но не обязательно требуют реализации другими модулями аппаратного обеспечения. Вместо этого, как описывается выше, различные модули могут комбинироваться в аппаратном модуле кодека или обеспечиваться набором взаимодействующих модулей аппаратного обеспечения, включающим в себя один или несколько процессоров, как описывается выше, совместно с подходящим программным и/или программно-аппаратным обеспечением.

[0211] Различные аспекты раскрытия были описаны. Эти и другие аспекты находятся в пределах объема, определенного следующей формулы изобретения.

1. Способ кодирования видеоданных, содержащий:
определение режима внутреннего предсказания для блока видеоданных, при этом блок включен в кодированный элемент видеоданных и расположен ниже верхней строки верхних соседних блоков в кодированном элементе, и при этом определение режима внутреннего предсказания содержит определение режима внутреннего предсказания на основе самого вероятного режима внутреннего предсказания, который основан на режиме внутреннего предсказания из одного или нескольких других блоков в кодированном элементе, но не основан на режиме внутреннего предсказания из любого из блоков верхней строки в кодированном элементе; и
кодирование блока на основе определенного режима внутреннего предсказания.

2. Способ по п. 1, в котором кодированный элемент содержит одно из изображения, фрагмента, элемента мозаичного изображения и группы волновых фронтов.

3. Способ по п. 1, в котором один или несколько других блоков содержат один или несколько левых соседних блоков блока.

4. Способ по п. 3, в котором один или несколько других блоков являются напрямую граничащими с блоком.

5. Способ по п. 3, в котором один или несколько других блоков включают в себя один или несколько блоков, которые не являются напрямую граничащими с блоком.

6. Способ по п. 1, в котором определение самого вероятного режима внутреннего предсказания для блока дополнительно содержит определение самого вероятного режима внутреннего предсказания на основе первого левого соседнего блока и второго левого соседнего блока, что расположен под блоком.

7. Способ по п. 1, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение самого вероятного внутреннего режима не основывается на режимах внутреннего предсказания блоков одного или нескольких других LCU.

8. Способ по п. 1, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом определение самого вероятного режима для блока содержит определение самого вероятного режима на основе режима внутреннего предсказания от второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

9. Способ по п. 1, в котором кодирование блока содержит кодирование блока на основе самого вероятного режима внутреннего предсказания, и при этом кодирование блока содержит:
осуществление внутреннего предсказания остаточных значений для кодирования блока с использованием режима внутреннего предсказания для блока;
определение того, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
индикацию того, совпадает ли режим внутреннего предсказания для блока с самым вероятным режимом внутреннего предсказания, в кодированном битовом потоке.

10. Способ по п. 1, в котором кодирование блока содержит декодирование блока на основе самого вероятного режима внутреннего предсказания, и при этом декодирование блока содержит:
определение режима внутреннего предсказания для декодирования блока на основе того, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
осуществление внутреннего предсказания остаточных значений для блока с использованием определенного режима внутреннего предсказания для декодирования блока;
комбинирование подвергнутых внутреннему предсказанию остаточных значений с принятыми остаточными значениями блока.

11. Способ по п. 1, в котором:
определение информации предсказания содержит определение информации движения для блока видеоданных;
определение информации предсказания для блока содержит определение информации движения для блока на основе информации движения для одного или нескольких других блоков и не основываясь на информации движения из верхней строки блоков в кодированном элементе; и
кодирование блока содержит кодирование блока на основе определенной информации движения.

12. Способ по п. 11, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение информации движения не основывается на информации движения одного или нескольких других LCU.

13. Способ по п. 11, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом определение информации движения для блока содержит определение информации движения на основе информации движения от второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

14. Способ по п. 11, в котором кодирование блока содержит кодирование блока, и при этом:
определение информации предсказания для блока на основе информации движения одного или нескольких других блоков содержит определение предиктора вектора движения для блока на основе информации движения одного или нескольких других блоков; и
кодирование блока содержит индикацию предиктора вектора движения в кодированном битовом потоке.

15. Способ по п. 11, в котором кодирование блока содержит декодирование блока, и при этом:
определение режима внутреннего предсказания для декодирования блока на основе того, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
осуществление внутреннего предсказания остаточных значений для блока с использованием определенного режима внутреннего предсказания для декодирования блока;
комбинирование подвергнутых внутреннему предсказанию остаточных значений с принятыми остаточными значениями блока, чтобы восстановить блок.

16. Устройство для кодирования видеоданных, содержащее один или несколько процессоров, выполненных с возможностью:
определять режим внутреннего предсказания для блока видеоданных, при этом блок включен в кодированный элемент видеоданных и расположен ниже верхней строки верхних соседних блоков в кодированном элементе, и при этом, чтобы определить режим внутреннего предсказания, один или несколько процессоров выполнены с возможностью определять режим внутреннего предсказания на основе самого вероятного режима внутреннего предсказания, который основан на режиме внутреннего предсказания от одного или нескольких других блоков в кодированном элементе, но не основан на режиме внутреннего предсказания любого из блоков верхней строки в кодированном элементе; и
кодировать блок на основе определенного режима внутреннего предсказания.

17. Устройство по п. 16, в котором кодированный элемент содержит что-то одно из изображения, фрагмента, элемента мозаичного изображения или группы волновых фронтов.

18. Устройство по п. 16, в котором один или несколько других блоков содержат один или несколько левых соседних блоков блока.

19. Устройство по п. 18, в котором один или несколько других блоков являются напрямую граничащими с блоком.

20. Устройство по п. 18, в котором один или несколько других блоков включают в себя один или несколько блоков, которые не являются напрямую граничащими с блоком.

21. Устройство по п. 16, в котором, чтобы определить самый вероятный режим внутреннего предсказания для блока, один или несколько процессоров дополнительно выполнены с возможностью определять самый вероятный режим внутреннего предсказания на основе первого левого соседнего блока и второго левого соседнего блока, что расположен под блоком.

22. Устройство по п. 16, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение самого вероятного внутреннего режима не основывается на режимах внутреннего предсказания блоков одного или нескольких других LCU.

23. Устройство по п. 16, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом, чтобы определить самый вероятный режим для блока, один или несколько процессоров выполнены с возможностью определять самый вероятный режим на основе режима внутреннего предсказания от второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

24. Устройство по п. 16, причем устройство содержит видеокодер, и при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью кодировать блок на основе самого вероятного режима внутреннего предсказания, и при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью:
осуществлять внутреннее предсказание остаточных значений для кодирования блока с использованием режима внутреннего предсказания для блока;
определять то, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
осуществлять индикацию того, совпадает ли режим внутреннего предсказания для блока с самым вероятным режимом внутреннего предсказания, в кодированном битовом потоке.

25. Устройство по п. 16, причем устройство содержит видеодекодер, при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью декодировать блок на основе самого вероятного режима внутреннего предсказания, и при этом, чтобы декодировать блок, один или несколько процессоров выполнены с возможностью:
определять режим внутреннего предсказания для декодирования блока на основе того, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
осуществлять внутреннее предсказание остаточных значений для блока с использованием определенного режима внутреннего предсказания для декодирования блока;
комбинировать подвергнутые внутреннему предсказанию остаточные значения с принятыми остаточными значениями блока.

26. Устройство по п. 16, в котором:
чтобы определить информацию предсказания, один или несколько процессоров выполнены с возможностью определять информацию движения для блока видеоданных;
чтобы определить информацию предсказания для блока, один или несколько процессоров выполнены с возможностью определять информацию движения для блока на основе информации движения для одного или нескольких других блоков и не основываясь на информации движения из верхней строки блоков в кодированном элементе; и
чтобы кодировать блок, один или несколько процессоров выполнены с возможностью кодировать блок на основе определенной информации движения.

27. Устройство по п. 26, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение информации движения не основывается на информации движения одного или нескольких других LCU.

28. Устройство по п. 26, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом, чтобы определить информацию движения для блока, один или несколько процессоров выполнены с возможностью определять информацию движения на основе информации движения из второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

29. Устройство по п. 26, в котором устройство содержит видеокодер, при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью кодировать блок, и при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью:
определять информацию предсказания для блока на основе информации движения одного или нескольких других блоков, что содержит определение предиктора вектора движения для блока на основе информации движения одного или нескольких других блоков; и
кодировать блок, что содержит индикацию предиктора вектора движения в кодированном битовом потоке.

30. Устройство по п. 26, причем устройство содержит видеодекодер, при этом, чтобы кодировать блок, один или несколько процессоров выполнены с возможностью декодировать блок, и при этом, чтобы декодировать блок, один или несколько процессоров выполнены с возможностью:
определять режим внутреннего предсказания для декодирования блока на основе того, совпадает ли режим внутреннего предсказания для блока с определенным самым вероятным режимом внутреннего предсказания;
осуществлять внутреннее предсказание остаточных значений для блока с использованием определенного режима внутреннего предсказания для декодирования блока;
комбинировать подвергнутые внутреннему предсказанию остаточные значения с принятыми остаточными значениями блока, чтобы восстановить блок.

31. Машиночитаемый носитель, на котором хранятся команды, которые при выполнении предписывают одному или нескольким процессорам:
определять режим внутреннего предсказания для блока видеоданных, при этом блок включен в кодированный элемент видеоданных и расположен ниже верхней строки верхних соседних блоков в кодированном элементе, и при этом, чтобы определить режим внутреннего предсказания, команды предписывают одному или нескольким процессорам определять режим внутреннего предсказания на основе самого вероятного режима внутреннего предсказания, который основан на режиме внутреннего предсказания от одного или нескольких других блоков в кодированном элементе, но не основан на режиме внутреннего предсказания от любого из блоков верхней строки в кодированном элементе; и
кодировать блок на основе определенного режима внутреннего предсказания.

32. Машиночитаемый носитель по п. 31, в котором кодированный элемент содержит что-то одно из изображения, фрагмента, элемента мозаичного изображения или группы волновых фронтов.

33. Машиночитаемый носитель по п. 31, в котором один или несколько других блоков содержат один или несколько левых соседних блоков блока.

34. Машиночитаемый носитель по п. 31, в котором, чтобы определить самый вероятный режим внутреннего предсказания для блока, команды предписывают одному или нескольким процессорам определять самый вероятный режим внутреннего предсказания на основе первого левого соседнего блока и второго левого соседнего блока, что расположен под блоком.

35. Машиночитаемый носитель по п. 31, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение самого вероятного внутреннего режима не основывается на режимах внутреннего предсказания блоков одного или нескольких других LCU.

36. Машиночитаемый носитель по п. 31, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом, чтобы определить самый вероятный режим для блока, команды предписывают одному или нескольким процессорам определять самый вероятный режим на основе режима внутреннего предсказания от второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

37. Машиночитаемый носитель по п. 31, в котором:
чтобы определить информацию предсказания, команды предписывают одному или нескольким процессорам определять информацию движения для блока видеоданных;
чтобы определить информацию предсказания для блока, команды предписывают одному или нескольким процессорам определять информацию движения для блока на основе информации движения для одного или нескольких других блоков и не основываясь на информации движения из верхней строки блоков в кодированном элементе; и
чтобы кодировать блок, команды предписывают одному или нескольким процессорам кодировать блок на основе определенной информации движения.

38. Машиночитаемый носитель по п. 37, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение информации движения не основывается на информации движения одного или нескольких других LCU.

39. Машиночитаемый носитель по п. 37, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом, чтобы определить информацию движения для блока, команды предписывают одному или нескольким процессорам определять информацию движения на основе информации движения из второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

40. Устройство для кодирования видеоданных, содержащее:
средство для определения режима внутреннего предсказания для блока видеоданных, при этом блок включен в кодированный элемент видеоданных и расположен ниже верхней строки верхних соседних блоков в кодированном элементе, и при этом средство для определения режима внутреннего предсказания содержит средство для определения режима внутреннего предсказания на основе самого вероятного режима внутреннего предсказания, который основан на режиме внутреннего предсказания от одного или нескольких других блоков в кодированном элементе, но не основан на режиме внутреннего предсказания от любого из блоков верхней строки в кодированном элементе; и
средство для кодирования блока на основе определенного режима предсказания.

41. Устройство по п. 40, в котором кодированный элемент содержит что-то одно из изображения, фрагмента, элемента мозаичного изображения или группы волновых фронтов.

42. Устройство по п. 40, в котором один или несколько других блоков содержат один или несколько левых соседних блоков блока.

43. Устройство по п. 40, в котором средство для определения самого вероятного режима внутреннего предсказания для блока дополнительно содержит средство для определения самого вероятного режима внутреннего предсказания на основе первого левого соседнего блока и второго левого соседнего блока, что расположен под блоком.

44. Устройство по п. 40, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит блоки одного или нескольких других LCU, и при этом определение самого вероятного внутреннего режима не основывается на режимах внутреннего предсказания блоков одного или нескольких других LCU.

45. Устройство по п. 40, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом средство для определения самого вероятного режима для блока содержит средство для определения самого вероятного режима на основе режима внутреннего предсказания от второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.

46. Устройство по п. 40, в котором:
средство для определения информации предсказания содержит средство для определения информации движения для блока видеоданных;
средство для определения информации предсказания для блока содержит средство для определения информации движения для блока на основе информации движения для одного или нескольких других блоков и не основываясь на информации движения из верхней строки блоков в кодированном элементе; и
средство для кодирования блока содержит средство для кодирования блока на основе определенной информации движения.

47. Устройство по п. 46, в котором блок содержит один или несколько блоков самого большого элемента кодирования LCU, а верхняя строка блоков содержит один или несколько других LCU, и при этом определение информации движения не основывается на информации движения одного или нескольких других LCU.

48. Устройство по п. 46, в котором блок содержит первый субэлемент кодирования (CU) первого самого большого элемента кодирования (LCU) из кодированного элемента, при этом верхняя строка блоков содержит второй LCU из кодированного элемента, который расположен выше первого LCU, и при этом средство для определения информации движения для блока содержит средство для определения информации движения на основе информации движения из второго суб-CU первого LCU, при этом второй суб-CU расположен над первым суб-CU в первом LCU.



 

Похожие патенты:

Изобретение относится к средствам кодирования и декодирования видеоданных. Техническим результатом является уменьшение числа битов, используемых для сигнализации параметров фильтра удаления блочности.

Изобретение относится к средствам кодирования видео. Техническим результатом является повышение качества изображения при кодировании.

Изобретение относится к вычислительной технике. Технический результат заключается в устранении ненужной избыточности общей информации в заголовке слайса.

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

Настоящее изобретение относится к устройству декодирования сигнала изображения, способу декодирования сигнала изображения, устройству кодирования сигнала изображения, способу кодирования сигнала изображения и программе, которые обеспечивают простое детектирование границ изображения зависимого потока в потоке битов.

Изобретение относится к средствам кодирования видео. Техническим результатом является повышение эффективности использования пропускной способности памяти при кодировании.

Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности декодирования за счет адаптивного переключения между размерами блоков преобразования.

Изобретение относится к вычислительной технике. Технический результат заключается в предотвращении ухудшения субъективного качества изображения для декодированного изображения.

Изобретение относится к области кодирования нескольких видеопоследовательностей с различных планов сцены. Технический результат - обеспечение улучшения эффективности кодирования.

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

Изобретение относится к технологиям кодирования и декодирования видео. Техническим результатом является повышение эффективности кодирования или декодирования за счет адаптации местоположений интерполяции в зависимости от свойства входного изображения. Предложен способ кодирования видео c использованием компенсации движения с дробной точностью. Способ включает в себя этап выполнения поиска движения для получения вектора движения, этап вычисления эталонных вероятностей в местоположениях дробных пикселей, обозначенных полученным вектором движения. Способ также включает в себя этап деления местоположений интерполяции, которые представляют собой местоположения дробных пикселей, на многочисленные группы на основе вычисленных эталонных вероятностей; этап выбора, для каждой из групп местоположений интерполяции, коэффициентов интерполяционного фильтра, которые должны использоваться для генерации интерполированного изображения прогнозирования из числа многочисленных кандидатов коэффициентов интерполяционного фильтра. 7 н. и 2 з.п. ф-лы, 14 ил., 2 табл.

Изобретение относится к области обработки цифровых изображений. Технический результат - обеспечение увеличения быстродействия и эффективности сжатия изображений, устранение потери целостности изображения и сохранение контрастности границ между различными объектами изображения. Способ сжатия цифрового цветного изображения заключается в: разделении на цветовые компоненты, каждая из которых является цифровым полутоновым изображением, представленным g-разрядными двоичными числами; разделении цифрового полутонового изображения на разрядные двоичные изображения; выделении окрестности для каждого элемента изображения; применении для старших разрядных двоичных изображений, содержащих крупные элементы изображения, процедуры 1 предсказания элементов на основе коэффициентов корреляции по горизонтали и вертикали и теории условных марковских процессов и удалении правильно предсказанных; применении для младших разрядных двоичных изображений, содержащих мелкие детали изображения и фон, схожий по своей структуре с белым гауссовским шумом процедуры 2, предусматривающей выделение областей, содержащих детали изображения, и применении к ним процедуры 1; удалении областей, содержащих фон; кодировании битового потока. 1 з.п. ф-лы, 5 ил.

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении защищенного временного доступа к элементам содержимого, перечисленным в чарте, исключающий несанкционированный доступ пользователя к элементам содержимого, в том числе во время распределения элементов содержимого. Устройство для предоставления чарта элементов содержимого множеству пользовательских устройств содержит интерфейс пользовательского устройства для связи с приложениями пользовательских устройств; модуль разрешений для определения разрешений пользователям на доступ, включая временные разрешения; распределительный модуль для осуществления разрешений, определенных в модуле разрешений; распределительный модуль дополнительно содержит фрагментирующий модуль, предназначенный для фрагментации каждого элемента из одного или нескольких элементов содержимого на множество фрагментов. 6 н. и 84 з.п. ф-лы, 7 ил.

Изобретение относится к средствам кодирования сигналов изображения. Техническим результатом является упрощение детектирования границ изображения в зависимом потоке битов. В способе кодируют первый сигнал изображения для генерирования основного потока, кодируют второй сигнал изображения для генерирования зависимого потока, вставляют зависимый разграничитель в виде блока NAL, включающего в себя параметр nal_unit_type, имеющий значение, отличное от значения указанного параметра разграничителя блока доступа, указывающего границу между блоками доступа. В способе зависимый разграничитель указывает границу между кадрами в зависимом потоке в начале кадра. 3 н.п. ф-лы, 32 ил.

Изобретение относится к средствам кодирования параметра квантования изображений. Техническим результатом является повышение эффективности кодирования параметра квантования. В способе генерируют предсказанный параметр квантования из восстановленного параметра квантования; генерируют дельта-параметр квантования из параметра квантования и предсказанного параметра квантования; осуществляют двоичное арифметическое кодирование первой ячейки, указывающей, является ли дельта-параметр квантования значимым, других ячеек, следующих после первой ячейки, указывающей абсолютное значение дельта-параметра квантования, ячейки знака, следующей после других ячеек, указывающей, является ли дельта-параметр квантования положительным или отрицательным, если дельта-параметр квантования является значимым. 6 н. и 3 з.п. ф-лы, 15 ил.

Изобретение относится к вычислительной технике. Технический результат заключается в снижении сложности реализации процесса предсказания векторов движения. Способ кодирования вектора движения в процессе кодировки видео содержит определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, которые должны быть закодированы; и выполнение процесса предсказания вектора движения для текущего блока видеоданных, используя определенный режим и набор блоков-кандидатов, при этом набор блоков-кандидатов является одинаковым для каждого из множества режимов, причем множество режимов включает в себя режим слияния и адаптивный режим предсказания вектора движения, и причем набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. 8 н. и 20 з.п. ф-лы, 21 ил.

Изобретение относится к видеокодированию. Технический результат - эффективное кодирование информации цифрового видео для снижения или устранения избыточности, присущей видеопоследовательностям. Способ кодирования вектора движения в процессе видеокодирования, в котором определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; определяют набор блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и осуществляют процесс предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен. 6 н. и 35 з.п. ф-лы, 18 ил.

Изобретение относится к вычислительной технике. Технический результат заключается в уменьшении вычислительной сложности кодирования. Способ обработки единицы преобразования видеоданных, в котором принимают единицу кодирования видеоданных; сегментируют единицу кодирования на одну или более единиц прогнозирования (PU) согласно типу сегмента 2N×2N, 2N×N, N×2N или N×N, при этом режим прогнозирования для обработки прогнозирования упомянутых одной или более единиц прогнозирования определяется для каждой из упомянутых одной или более единиц прогнозирования; и сегментируют единицу кодирования на одну или более единиц преобразования, при этом размер упомянутых одной или более единиц преобразования связан с размером единицы кодирования и размером упомянутых одной или более единиц прогнозирования таким образом, что ширина и высота упомянутых одной или более единиц преобразования равны минимуму из ширины PU и высоты PU, за исключением единицы кодирования 2N×2N с типом сегмента 2N×2N. 4 н. и 22 з.п. ф-лы, 6 ил., 13 табл.

Изобретение относится к системам распространения медиаконтента абонентам, используя разные схемы шифрования и/или кодирования для разных устройств, например телевизоров, блокнотных компьютеров и мобильных телефонов. Техническим результатом является представление гибких механизмов сигнализации для защиты контента в средах адаптивной потоковой передачи данных, например MPEG-DASH, и включает в себя новый подход для обеспечения поздней привязки векторов инициализации. Предложено устройство для декодирования медиапотока, выполненного с возможностью принять медиапоток, содержащий сигнальную информацию сегментов и множество сегментов, где множество сегментов содержит кодированные и некодированные сегменты, при этом сигнальная информация сегментов содержит идентификацию по меньшей мере двух групп сегментов, причем каждая содержит по меньшей мере один сегмент, идентифицировать по меньшей мере одну группу сегментов, используя сигнальную информацию сегментов в медиапотоке, идентифицировать по меньшей мере один алгоритм декодирования сегментов для по меньшей мере одной группы сегментов, идентифицировать по меньшей мере один ключ декодирования для по меньшей мере группы сегментов и декодировать каждый кодированный сегмент в по меньшей мере группе сегментов, используя по меньшей мере алгоритм декодирования сегментов и по меньшей мере один ключ декодирования. 3 н. и 17 з.п. ф-лы, 6 ил., 2 табл.

Изобретение относится к приему и дешифрованию аудио-видео контента. Техническим результатом является скрытая передача некоторых пакетов так, что пользователь об этом не знает, что позволяет передавать приемнику данные, которые потенциальному хакеру трудно обнаружить и использовать незаконным образом. Указанный технический результат достигается тем, что принимают кодированный аудио-видео контент в виде потока пакетированных данных, содержащего одну или более программ, имеющих пакеты данных, идентифицируемые посредством соответствующих наборов из одного или более идентификаторов пакетов, и содержащего идентификационные данные, устанавливающие соответствие между программами и соответствующими наборами идентификаторов пакетов; выбирают пакеты данных из потока пакетированных данных для требуемой программы в соответствии с набором идентификаторов пакетов, определяемым идентификационными данными для этого потока в отношении требуемой программы; выбирают дополнительные пакеты данных из потока пакетированных данных, из которого выбрана программа, содержащие идентификаторы пакетов, не включенные в идентификационные данные для этого потока пакетированных данных; генерируют составной поток пакетированных данных из выбранных пакетов; генерируют идентификационные данные составного потока, указывающие идентификаторы пакетов, включенных в составной поток пакетированных данных, и подают составной поток пакетированных данных в декодер контента для декодирования программы из составного потока пакетированных данных согласно идентификаторам пакетов, содержащимся в идентификационных данных составного потока. 3 н. и 13 з.п. ф-лы, 24 ил.
Наверх