Настоящая заявка испрашивает приоритет по предварительной заявке США №61/430,520, поданной 6 января 2011 года, предварительной заявке США № 61/446,402, поданной 24 февраля 2011 года, и предварительной заявке США № 61/448,623, поданной 2 марта 2011 года, содержание каждой из которых целиком включено в данный документ по ссылке.
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к видеокодированию и, в частности, касается сигнализации характеристик кодирования для кодированных видеоданных.
УРОВЕНЬ ТЕХНИКИ
Возможности цифрового видео могут быть приданы самым разным устройствам, таким как цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), компьютеры типа «лэптоп» или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, устройства для проведения видео- и телеконференций и т.п. Цифровые видеоустройства реализуют процедуры сжатия видео, например процедуры, описанные в таких стандартах, как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, Стандарт усовершенствованное видеокодирование (AVC) и расширения указанных стандартов, для более эффективной передачи и приема цифровой видеоинформации.
В процедурах сжатия видео реализуется пространственное предсказание и/или временное предсказание для уменьшения или устранения избыточности в видеопоследовательностях. Для блочного видеокодирования видеокадр или слайс (срез) можно разбить на видеоблоки. Каждый видеоблок можно разбить далее на более мелкие части. Видеоблоки в кадре или слайсе с внутренним (inter-) кодированием (I) кодируют с использованием пространственного предсказания в соответствии с соседними видеоблоками. Видеоблоки в кадре или слайсе с внешним (inter-) кодированием (P или B типа) могут использовать пространственное предсказание в соответствии с соседними макроблоками или единицами кодирования в этом кадре или слайсе или временное предсказание в соответствии с другими опорными кадрами.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Вообще говоря, в этом разделе описываются процедуры сигнализации характеристик кодирования для кодированных видеоданных. Эти процедуры могут повысить эффективность сигнализации режима внутреннего (intra-) предсказания, используемого для кодирования блока видеоданных. Раскрытые в данном документе процедуры включают в себя сигнализацию в кодированном битовом потоке режимов внутреннего предсказания для блоков видеоданных с использованием кодовых слов. Упомянутые процедуры кроме того содержат кодирование кодовых слов с использованием процесса контекстного адаптивного двоичного арифметического кодирования (CABAC). Таким образом, открывается возможность относительной экономии бит для кодированного битового потока при использовании раскрытых в данном документе процедур.
В одном примере способ декодирования видеоданных включает в себя определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для кодированного блока видеоданных на основе контекста для текущего блока; выбор таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; выполнение процесса CABAC для определения принятого кодового слова; определение одного из модифицированных индексов режимов внутреннего предсказания, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбор режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует определенному одному из модифицированных индексов режимов внутреннего предсказания; и декодирование текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере устройство для декодирования видеоданных включает в себя видеодекодер, сконфигурированный для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для кодированного блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определение одного из модифицированных индексов режимов внутреннего предсказания, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует определенному одному из модифицированных индексов режимов внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере способ кодирования видеоданных включает в себя определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбор таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; кодирование текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определение одного из модифицированных индексов режимов внутреннего предсказания, который соответствует упомянутому одному из режимов внутреннего предсказания с использованием таблицы кодовых слов; и кодирование кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере устройство для кодирования видеоданных включает в себя видеокодер, сконфигурированный для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует упомянутому одному из режимов внутреннего предсказания с использованием таблицы кодовых слов; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере устройство для декодирования видео включает в себя средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для кодированного блока видеоданных на основе контекста для текущего блока; средство для выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; средство для выполнения процесса CABAC для определения принятого кодового слова; средство для определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; средство для выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует определенному одному из модифицированных индексов режимов внутреннего предсказания; и средство для декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере устройство для кодирования видеоданных включает в себя средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; средство для выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; средство для кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; средство для определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует упомянутому одному из режимов внутреннего предсказания с использованием таблицы кодовых слов; и средство для кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере считываемый компьютером носитель имеет сохраненные на нем инструкции, которые при их выполнении инициируют выполнение одним или несколькими процессорами определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для кодированного блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует определенному одному из модифицированных индексов режимов внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере считываемый компьютером носитель имеет сохраненные на нем инструкции, которые при их выполнении инициируют выполнение одним или несколькими процессорами определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует упомянутому одному из режимов внутреннего предсказания с использованием таблицы кодовых слов; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере способ декодирования видеоданных включает в себя определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока; выбор таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слов отображаются на режимы внутреннего предсказания; выполнение процесса CABAC для определения принятого кодового слова; определение модифицированного индекса кодового слова, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбор режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует индексу кодового слова, выбранному на основе модифицированного индекса кодового слова, первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; и декодирование текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере устройство для декодирования видеоданных включает в себя видеодекодер, сконфигурированный для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определения модифицированного индекса кодового слова, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует индексу кодового слова, выбранному на основе модифицированного индекса кодового слова, первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере устройство для декодирования видео включает в себя средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока; средство для выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; средство для выполнения процесса CABAC для определения принятого кодового слова; средство для определения модифицированного индекса кодового слова, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; средство для выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует индексу кодового слова, выбранному на основе модифицированного индекса кодового слова, первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; и средство для декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере считываемый компьютером носитель имеет сохраненные на нем инструкции, которые при их выполнении инициируют выполнение одним или несколькими процессорами определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определения модифицированного индекса кодового слова, который соответствует принятому кодовому слову с использованием таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для использования с целью декодирования упомянутого кодированного блока, где выбранный режим внутреннего предсказания соответствует индексу кодового слова, выбранному на основе модифицированного индекса кодового слова, первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
В одном примере способ кодирования видеоданных включает в себя определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбор таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; кодирование текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определение модифицированного индекса кодового слова на основе индекса кодового слова одного из режимов внутреннего предсказания, используемых для кодирования текущего блока, индекса кодового слова, отображенного на первый наиболее вероятный режим, и индекса кодового слова, отображенного на второй наиболее вероятный режим; и кодирование кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере устройство для кодирования видеоданных включает в себя видеокодер, сконфигурированный для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения модифицированного индекса кодового слова на основе индекса кодового слова одного из режимов внутреннего предсказания, используемых для кодирования текущего блока, индекса кодового слова, отображенного на первый наиболее вероятный режим, и индекса кодового слова, отображенного на второй наиболее вероятный режим; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере устройство для кодирования видео включает в себя средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; средство для выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; средство для кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; средство для определения модифицированного индекса кодового слова на основе индекса кодового слова одного из режимов внутреннего предсказания, используемых для кодирования текущего блока, индекса кодового слова, отображенного на первый наиболее вероятный режим, и индекса кодового слова, отображенного на второй наиболее вероятный режим; и средство для кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
В одном примере считываемый компьютером носитель, имеет сохраненные на нем инструкции, которые при их выполнении инициируют выполнение одним или несколькими процессорами определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слова отображаются на режимы внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения модифицированного индекса кодового слова на основе индекса кодового слова одного из режимов внутреннего предсказания, используемых для кодирования текущего блока, индекса кодового слова, отображенного на первый наиболее вероятный режим, и индекса кодового слова, отображенного на второй наиболее вероятный режим; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где упомянутое кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
Далее следует описание деталей одного или нескольких примеров со ссылками на сопроводительные чертежи. Другие функции, цели и преимущества изобретения станут очевидными из нижеследующего описания и чертежей, а также формулы изобретения.
Краткое описание чертежей
Фиг. 1 - блок-схема, иллюстрирующая примерную систему видеокодирования и видеодекодирования, в которой могут быть использованы процедуры кодирования данных синтаксиса, представляющие режимы внутреннего предсказания для блоков видеоданных;
фиг. 2 - блок-схема, где показан пример видеокодера, в котором можно реализовать процедуры кодирования информации, указывающей режим внутреннего предсказания;
фиг. 3 - примеры режимов внутреннего предсказания и соответствующих индексов режимов;
фиг. 4 - блок-схема, где показан примерный видеодекодер, декодирующий кодированную видеопоследовательность;
фиг. 5А - блок-схема, где показан пример блока контекстно-ориентированного адаптивного двоичного арифметического кодирования, который можно использовать согласно описанным в данном документе процедурам;
фиг. 5В - блок-схема, где показан пример блока контекстно-ориентированного адаптивного двоичного арифметического декодирования, который можно использовать согласно описанным в данном документе процедурам;
фиг. 6 - блок-схема, иллюстрирующая примерный способ кодирования с внутренним предсказанием блока видеоданных;
фигуры 7А и 7В - блок-схемы, иллюстрирующие примерные способы выбора кодового слова, указывающего режим внутреннего предсказания для кодированного блока;
фиг. 8 - блок-схема, иллюстрирующая примерный способ декодирования с внутренним предсказанием блока видеоданных;
фигуры 9А и 9В - блок-схемы, иллюстрирующие примерные способы определения режима внутреннего предсказания для блока с использованием принятого кодового слова, указывающего режим внутреннего предсказания для кодированного блока;
фиг. 10 - концептуальная схема, иллюстрирующая примерный набор конфигурационных данных, которые показывают взаимосвязи между таблицей индексов режимов внутреннего предсказания, таблицей модифицированных индексов режимов внутреннего предсказания и контекстными данными.
Подробное описание изобретения
В общем случае здесь описываются процедуры сигнализации характеристик кодирования для кодированных видеоданных и, в частности, описывается использование процесса контекстно-ориентированного бинарного арифметического кодирования (CABAC) для сигнализации видеодекодеру режимов внутреннего предсказания. Раскрытые в данном документе процедуры могут повысить эффективность сигнализации режима внутреннего предсказания, используемогог для внутрикадрового кодирования блока видеоданных. Видеокодер, например, может включать в себя конфигурационные данные, которые указывают индексы для режимов внутреннего предсказания на основе контекстов кодирования для блоков, закодированных с использованием различных режимов внутреннего предсказания. Контексты кодирования могут включать в себя, например, режимы кодирования для соседних, ранее закодированных блоков и/или размеры блоков.
Конфигурационные данные можно использовать для определения наиболее вероятного режима внутреннего предсказания для каждого контекста, либо они могут определить два или более наиболее вероятных режимов внутреннего предсказания для каждого контекста. Эти наиболее вероятные режимы внутреннего предсказания иногда в этом описании просто называются наиболее вероятными режимами. Конфигурационные данные также могут определить таблицу отображения, используемую для кодирования данных синтаксиса, описывающих режим внутреннего предсказания, для режимов, отличных от наиболее вероятного режима (режимов) в данном контексте. В частности, таблица отображения может включать в себя отображение индексов на кодовые слова. Как более подробно описывается ниже, таблица отображения может отображать модифицированные индексы режимов внутреннего предсказания на кодовые слова или может отображать индексы режимов внутреннего предсказания на индексы кодовых слов, которые затем преобразуют в модифицированные индексы кодовых слов.
Соответственно, можно сконфигурировать видеокодер для определения контекста кодирования для блока, который должен быть кодирован в режиме внутреннего предсказания. Контекст кодирования может быть связан с наиболее вероятным режимом внутреннего предсказания, а также вероятностями для других режимов внутреннего предсказания. При выборе наиболее вероятного режима внутреннего предсказания для его использования для кодирования текущего блока видеокодер может выбрать однобитовое кодовое слово (например, «1»), указывающее, что данный блок кодируется в наиболее вероятном режиме для того контекста, в котором этот блок появился. В случаях использования более одного наиболее вероятного режима внутреннего предсказания первый бит может указывать на то, выбран ли один из наиболее вероятных режимов внутреннего предсказания для использования с целью кодирования текущего блока, и, если используется один из наиболее вероятных режимов внутреннего предсказания, то тогда второй бит (или последовательность бит) может указывать на то, какой из наиболее вероятных режимов внутреннего предсказания выбран. Иногда во всем этом описании комбинация указанного первого бита и второго бита может сама по себе называться кодовым словом, где первый бит кодового слова сигнализирует, что выбранный режим внутреннего предсказания является одним из наиболее вероятных режимов внутреннего предсказания, а второй бит (или последовательность бит) идентифицирует конкретный режим из числа наиболее вероятных режимов внутреннего предсказания. Согласно раскрытым в данном документе процедурам кодовое слово, указывающее на то, является ли выбранный режим наиболее вероятным режимом, и указывающее, какой из наиболее вероятных режимов выбран, может кодироваться с использованием процесса CABAC, как изложено в данном описании. Вдобавок, в некоторых случаях биты, используемые для сигнализации о наиболее вероятных режимах в сочетании с кодовым словом, идентифицирующим не наиболее вероятный режим, могут рассматриваться совместно в качестве кодового слова и кодироваться с использованием процесса CABAC, как это изложено в данном описании.
Каждому из других режимов внутреннего предсказания (то есть режимов внутреннего предсказания, отличных от наиболее вероятного режима (режимов) внутреннего предсказания) также может быть назначено модифицированное значение индекса на основе контекста кодирования. Кроме того, контекст кодирования может еще соответствовать таблице, содержащей набор кодовых слов, проиндексированных с использованием значений индекса, связанных с индексами для режимов внутреннего предсказания. В частности, как было описано выше, значение индекса для наиболее вероятного режима (режимов) внутреннего предсказания нет необходимости назначать другому кодовому слову, отличному от однобитового (а возможно более длинного) кодового слова, представляющего, что был выбран наиболее вероятный режим внутреннего предсказания. Для отображения кодового слова на каждый из оставшихся режимов внутреннего предсказания индекс каждого из оставшихся режимов внутреннего предсказания можно модифицировать сначала для того, чтобы исключить индексы, первоначально распределенные для наиболее вероятного режима (режимов). Соответственно, модифицированные индексы режимов внутреннего предсказания могут совпадать с индексами режима внутреннего предсказания, меньшими, чем индекс режима для наиболее вероятного режима. С другой стороны, при использовании наиболее вероятного режима, модифицированные индексы режимов внутреннего предсказания могут быть меньше, чем индексы режимов внутреннего предсказания для индексов режимов внутреннего предсказания, превышающих индекс для наиболее вероятного режима. Таким образом, может оказаться так, что кодовых слов будет на одно меньше, чем режимов внутреннего предсказания, и эти кодовые слова могут отображаться на режимы внутреннего предсказания на основе контекста кодирования. При использовании более одного наиболее вероятного режима внутреннего предсказания в таблице кодовых слов их количество может быть на два или более меньше, чем режимов внутреннего предсказания, и эти кодовые слова могут аналогичным образом отображаться на режимы внутреннего предсказания на основе контекста кодирования. Кодовое слово можно закодировать с использованием процесса CABAC.
Видеодекодер можно подобным образом сконфигурировать, например, для выполнения аналогичных процедур при определении режима внутреннего предсказания для закодированного блока. Согласно раскрытым здесь процедурам видеодекодер может принимать данные для кодированного блока, а также кодовое слово, указывающее режим внутреннего предсказания, используемый для декодирования кодированного блока. Видеодекодер может принимать и декодировать кодовое слово путем выполнения процесса CABAC, который в общем случае является обратным по отношению к процессу CABAC, выполняемому видеокодером. Видеодекодер может определить контекст для данного блока, как это делает видеокодер. На основе контекста видеодекодер может определить наиболее вероятный режим или режимы внутреннего предсказания для данного блока. При использовании одного наиболее вероятного режима внутреннего предсказания может быть декодирован один бит, чтобы определить, выбран ли наиболее вероятный режим. Если этот единственный бит указывает, что выбран наиболее вероятный режим, то видеодекодер может декодировать блок с использованием этого наиболее вероятного режима внутреннего предсказания. В противном случае, видеодекодер может обратиться к модифицированному индексу режима внутреннего предсказания, отображенному на принятое кодовое слово. Если модифицированный индекс режима внутреннего предсказания больше или равен индексу режима для наиболее вероятного режима внутреннего предсказания, то видеодекодер может декодировать данный блок с использованием режима внутреннего предсказания, отображенного на индекс режима, который превышает на единицу модифицированный индекс режима внутреннего предсказания. Если модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима для наиболее вероятного режима внутреннего предсказания, то видеокодер может декодировать данный блок с использованием режима внутреннего предсказания, отображенного на индекс режима, равный модифицированному индексу режима внутреннего предсказания.
Аналогичным образом, при использовании двух наиболее вероятных режимов кодирования с внутренним предсказанием, если первый бит или последовательность бит указывает, что выбранный режим внутреннего предсказания является одним из наиболее вероятных режимов внутреннего предсказания, то тогда видеодекодер может декодировать данный блок, используя наиболее вероятный режим внутреннего предсказания, идентифицированный вторым битом. В противном случае видеодекодер может обратиться к модифицированному индексу режима внутреннего предсказания, отображенному на принятое кодовое слово. Если модифицированный индекс внутреннего предсказания меньше, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания, то видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отраженный на индекс, совпадающий с модифицированным индексом режима внутреннего предсказания. В противном случае, если модифицированный индекс режима внутреннего предсказания плюс единица меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания, то тогда видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отображенный на индекс режима, который на единицу превышает модифицированный индекс режима внутреннего предсказания. В противном случае, видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отображенный на индекс режима, который превышает на два модифицированный индекс режима внутреннего предсказания, и т.д.
Словосочетания «первый наиболее вероятный» и «второй наиболее вероятный» в этом описании обычно используют для обращения к двум отдельным наиболее вероятным режимам внутреннего предсказания, причем это не означает, что подразумевается относительное сходство этих двух режимов внутреннего предсказания. Однако, как будет позднее объяснено на примерах, в разъяснительных целях в общем случае можно полагать, что первый наиболее вероятный режим внутреннего предсказания имеет меньшее значение соответствующего индекса режима, чем второй наиболее вероятный режим внутреннего предсказания. Таким образом, можно сказать, что при модифицированном значении индекса режима внутреннего предсказания, меньшем индекса для первого наиболее вероятного режима, можно предположить, что модифицированное значение индекса режима внутреннего предсказания также будет меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания, третьего наиболее вероятного режима внутреннего предсказания и т.д.
Раскрытые здесь процедуры можно распространить на реализации, где используется более двух наиболее вероятных режимов внутреннего предсказания. Предположим, например, что имеется N наиболее вероятных режимов внутреннего предсказания, и что первый бит или последовательность битов может указывать на то, является ли выбранный режим внутреннего предсказания одним из N наиболее вероятных режимов внутреннего предсказания. Если выбранный режим внутреннего предсказания является одним из N наиболее вероятных режимов внутреннего предсказания, то тогда вторая последовательность битов может идентифицировать, какой из N наиболее вероятных режимов внутреннего предсказания является выбранным режимом внутреннего предсказания. Например, если используются три наиболее вероятных режима, то два бита можно использовать для сигнализации о том, является ли выбранный режим внутреннего предсказания одним из наиболее вероятных режимов, следующим образом: сигнал «00» использовать для указания о том, что применен первый наиболее вероятный режим; сигнал «01» использовать для указания о том, что применен второй наиболее вероятный режим; сигнал «10» использовать для указания о том, что применен третий наиболее вероятный режим, а сигнал «11» использовать для указания о том, что ни один из трех наиболее вероятных режимов не применен. Если ни один из наиболее вероятных режимов не используется, то для сигнализации о выбранном режиме внутреннего предсказания можно использовать дополнительное кодовое слово.
В некоторых случаях сигнализация о наиболее вероятных режимах внутреннего предсказания может быть объединена в одну или несколько групп, где первый бит или последовательность битов сигнализируют о том, входит ли выбранный наиболее вероятный режим внутреннего предсказания в первую группу. Если выбранный режим внутреннего предсказания не входит в первую группу, то тогда следующий бит может сигнализировать о том, входит ли этот режим во вторую группу, и т.д.
Если, например, используется пять наиболее вероятных режимов, то тогда первый бит или последовательность бит могут сигнализировать о том, входит ли выбранный режим внутреннего предсказания в первую группу, состоящую из двух наиболее вероятных режимов внутреннего предсказания. Если выбранный режим является одним из двух упомянутых режимов, то тогда второй бит может идентифицировать, который из них является выбранным режимом. Если выбранный режим не является одним из этих двух режимов, то тогда выбранный режим может идентифицировать вторая группа битов. Например, если вторая группа битов включает в себя два бита, то тогда первая битовая комбинация (например, 00) может указывать на то, что выбранным режимом является третий наиболее вероятный режим, вторая битовая комбинация (например, 01) может указывать на то, что выбранным режимом является четвертый наиболее вероятный режим, а третья битовая комбинация (например, 10) может указывать на то, что выбранным режимом является пятый наиболее вероятный режим. Если выбранным режимом является один из этих пяти наиболее вероятных режимов внутреннего предсказания, то тогда декодер может декодировать данный блок, используя этот наиболее вероятный режим. Четвертая битовая комбинация (например, 11) может указывать, что выбранный режим не является ни одним из упомянутых пяти наиболее вероятных режимов, и в этом случае за четвертой битовой комбинацией могут следовать биты, идентифицирующие выбранный режим, в соответствии с раскрытыми здесь процедурами.
В тех случаях, когда выбранный режим не является наиболее вероятным режимом, видеодекодер может обратиться к модифицированному индексу режима внутреннего предсказания, отображенному на принятое кодовое слово. Для примера можно предположить, что первый наиболее вероятный режим внутреннего предсказания имеет меньшее значение индекса соответствующего режима, чем второй наиболее вероятный режим внутреннего предсказания, а второй имеет меньший индекс, чем третий и т.д. Согласно раскрытым здесь процедурам, если модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания, видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отображенный на индекс, равный модифицированному индексу режима внутреннего предсказания. В противном случае, если модифицированный индекс режима внутреннего предсказания плюс единица меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания, то тогда видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отображенный на индекс, на единицу превышающий модифицированный индекс режима внутреннего предсказания. В противном случае, если модифицированный индекс режима внутреннего предсказания плюс два меньше, чем индекс режима для третьего наиболее вероятного режима внутреннего предсказания, то тогда видеодекодер может декодировать данный блок, используя режим внутреннего предсказания, отображенный на индекс, который на два больше, чем модифицированный индекс режима внутреннего предсказания и т.д. Как более подробно объясняется ниже, модифицированный индекс режима внутреннего предсказания может не содержать записи для наиболее вероятных режимов, и поэтому индекс режима внутреннего предсказания может быть отображен на модифицированный индекс режима внутреннего предсказания плюс единица, модифицированный индекс режима внутреннего предсказания плюс два и т.д., в зависимости от индекса наиболее вероятных режимов.
На фиг. 1 представлена блок-схема, иллюстрирующая примерную систему 10 видеокодирования и видеодекодирования, в которой могут использоваться процедуры кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодируемое видео на устройство-адресат 14 через канал 16 связи. Устройство-источник 12 и устройство-адресат 14 могут содержать любые устройства из широкого диапазона устройств. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут содержать устройства беспроводной связи, такие как беспроводные телефонные трубки, сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи, и в этом случае канал 16 связи является беспроводным каналом.
Однако раскрытые здесь процедуры, касающиеся кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных, не обязательно ограничены беспроводными приложениями или установками. Например, эти процедуры можно применить к системам эфирного телевизионного вещания, кабельных телевизионных передач, спутниковых телевизионных передач, передач видео через Интернет, системам кодированного цифрового видео, которое кодируют на носитель данных, или к другим сценариям. Соответственно, канал 16 связи может содержать любую комбинацию проводных или беспроводных сред передачи, подходящих для передачи кодированных видеоданных. Кроме того, здесь предполагается, что канал 16 связи представляет просто один из множества возможных путей передачи данных устройством видеокодирования на устройство видеодекодирования. Например, в других конфигурациях системы 10 устройство-источник 12 может создавать кодированное видео для его декодирования устройством-адресатом 14 и запоминать закодированное видео на носителе данных или сервере файлов так, чтобы была возможность доступа к закодированному видео со стороны устройства-адресата 14, когда это потребуется.
В примере на фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20, модулятор/демодулятор (модем) 22 и передатчик 24. Устройство-адресат 14 включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. Согласно изобретению видеокодер 20 устройства-источника 12 можно сконфигурировать для применения процедур кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных. В других примерах устройство-источник и устройство-адресат могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные от внешнего источника 18 видео, такого как внешняя камера. Аналогичным образом, устройство-адресат 14 может взаимодействовать с внешним устройством отображения, а не иметь встроенное в него устройство отображения.
Показанная на фиг. 1 система 10 является лишь одним из примеров. Процедуры кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных, можно реализовать с помощью любого устройства цифрового видеокодирования и/или цифрового видеодекодирования. Хотя в общем случае раскрытые здесь процедуры реализуются устройством видеокодирования, эти процедуры также могут быть реализованы видеокодером/декодером, как правило, называемым CODEC. Кроме того, раскрытые здесь процедуры также могут быть реализованы процессором предварительной обработки видео. Устройство-источник 12 и устройство-адресат 14 являются лишь примерами таких устройств кодирования, в которых устройство-источник 12 создает кодированные видеоданные для передачи на устройство-адресат 14. В некоторых примерах устройства 12, 14 могут работать по существу симметричным образом, так что каждое из устройств 12, 14 включает в себя компоненты, выполняющие видеокодирование и видеодекодирование. Таким образом, система 10 может поддерживать однонаправленную или двунаправленную передачу видео между устройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, телевизионного вещания или видеотелефонной связи.
Источник 18 видео, входящий в устройство-источник 12, может включать в себя устройство для видеосъемки, такое как видеокамера, видеоархив, содержащий ранее заснятое видео и/или видео, предоставленное поставщиком видеоконтента. В качестве дополнительной альтернативы, источник 18 видео может создавать в качестве исходного видео данные на основе компьютерной графики или комбинацию видео в реальном времени, заархивированного видео и видео, созданного компьютером. В некоторых случаях, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-адресат 14 могут образовать так называемые камерофоны или видеофоны. Однако, как упоминалось выше, раскрытые здесь процедуры можно применить к видеокодированию в целом, а также их можно применить для беспроводных и/или проводных приложений. В любом случае заснятое, предварительно заснятое или созданное компьютером видео может быть закодировано видеокодером 20. Затем закодированная видеоинформация может быть модулирована модемом 22 в соответствии со стандартом связи и передана на устройство-адресат 14 через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включая усилители, фильтры и одну или несколько антенн.
Приемник 26 устройства-адресата 14 принимает информацию по каналу 16, а модем 28 демодулирует эту информацию. Опять же, процесс видеокодирования можно реализовать с помощью одной или нескольких описанных здесь процедур для кодирования данных синтаксиса, представляющих режимы внутреннего предсказания для блоков видеоданных. Информация, передаваемая по каналу 16, может включать в себя информацию синтаксиса, определенную видеокодером 20, которая также используется видеодекодером 30 и которая включает в себя элементы синтаксиса, описывающие характеристики и/или обработку макроблоков и других кодированных единиц, например, группы изображений (GOP). Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества различных устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллическое устройство отображения (LCD), плазменное устройство отображения, устройство отображения на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.
В примере на фиг. 1 канал 16 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одну или несколько физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может образовать часть в сети передачи данных на основе пакетов, такой как локальная сеть, территориальная сеть или глобальная сеть, такая как сеть Интернет. Канал 16 связи в общем случае представляет любую подходящую среду связи или набор различных сред связи для передачи видеоданных от устройства-источника 12 на устройство-адресат 14, включая любую подходящую комбинацию проводных или беспроводных сред. Канал 16 связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое можно использовать для организации связи от устройства-источника 12 до устройства-адресата 14.
Видеокодер 20 и видеодекодер 30 могут работать в соответствии со стандартом сжатия видео, таким как стандарт ITU-T H.264, по-другому называемый MPEG-4, Часть 10, Advanced Video Coding (AVC) (Система усовершенствованного видеокодирования). Однако раскрытые здесь процедуры не ограничены каким-либо конкретным стандартом кодирования. Другие примеры включают в себя стандарты MPEG-2 и ITU-T H.263. Хотя это на фиг. 1 не показано, в некоторых случаях видеокодер 20 и видеодекодер 30 могут быть объединены каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DEMUX или другие программные и аппаратные средства для обработки кодирования аудио и видео в общем потоке данных или в отдельных потоках данных. При применении блоков MUX-DEMUX они могут соответствовать протоколу мультиплексора ITU H.223 либо других протоколы, такие как протокол пользовательских дейтаграмм (UDP).
Стандарт ITU-T H.264/MPEG-4 (AVC) был разработан в процессе коллективного сотрудничества Группой экспертов по видеокодированию ITU-T (VCEG) вместе Группой экспертов по вопросам движущихся изображений ISO/IEC (MPEG), известных как Объединенная группа экспертов по вопросам видео (JVT). В ряде аспектов раскрытые здесь процедуры можно применить к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264, Усовершенствованной системы видеокодирования для универсальных аудиовизуальных услуг, Исследовательской группой ITU-T и датирован мартом 2005 года, причем этот стандарт называется здесь стандартом H.264, спецификацией H.264 или стандартом или спецификацией H.264/AVC. Объединенная группа экспертов по вопросам видео (JVT) продолжает разработку расширений к стандарту H.264/MPEG-4 AVC.
Как видеокодер 20, так и видеодекодер 30 можно реализовать в виде любых подходящих схем кодера из числа различных схем, такой как один или несколько микропроцессоров, цифровые процессоры сигналов (DSP), прикладные специализированные интегральные схемы (ASIC), вентильные матрицы, программируемые пользователем (FPGA), дискретная логика, программные средства, аппаратные средства, программно-аппаратные средства или любая их комбинация. Видеокодер 20 и видеодекодер 30 могут быть включены каждый в один или несколько кодеров или декодеров, каждый из которых может составлять часть комбинированного кодера/декодера (CODEC) в соответствующей камере, компьютере, мобильном устройстве, абонентском устройстве, вещательном устройстве, телевизионной приставке, сервере или т.п.
Видеопоследовательность, как правило, включает в себя ряд видеокадров. Группа изображений (GOP) в общем случае содержит ряд, состоящий из одного или нескольких видеокадров. Группа GOP может включать в себя данные синтаксиса в ее заголовке, заголовке одного или нескольких кадров GOP или где либо еще, причем эти данные описывают количество кадров, содержащихся в GOP. Каждый кадр может включать в себя данные синтаксиса кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер 20, как правило, работает с видеоблоками внутри отдельных видеокадров, чтобы закодировать видеоданные. Видеоблок может соответствовать макроблоку или части макроблока. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру в соответствии с заданным стандартом кодирования. Каждый видеокадр может включать в себя множество слайсов. Каждый слайс может включать в себя множество макроблоков, которые могут быть разбиты на разделы, называемые также субблоками.
Например, стандарт ITU-T H.264 поддерживает внутреннее предсказание для различных размеров блока, таких как 16 на 16, 8 на 8 или 4 на 4 для компонент яркости и 8х8 для компонент цветности, а также внутреннее предсказание для различных размеров блока, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонент яркости и соответствующие масштабированные размеры для компонент цветности. В этом описании выражения «N×N» и «N на N» могут использоваться как взаимозаменяемые для обращения к размерам блока в пикселях применительно к размерам по горизонтали и вертикали, например, 16×16 пикселей или 16 на 16 пикселей. В общем случае блок 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогичным образом, блок N×N в общем случае имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет не отрицательное целое число. Пиксели в блоке могут быть скомпонованы по строкам и столбцам. Кроме того, в блоках не обязательно должно быть одинаковое количество пикселей в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где M не обязательно равно N. Блоки с размерами, меньшими 16×16, в стандарте ITU-T H.264 могут называться разделами макроблока 16×16.
Видеоблоки могут содержать блоки пиксельных данных в пиксельной области или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлетное преобразование или концептуально подобное преобразование, к остаточным данным, представляющим разности в пикселях между кодированными видеоблоками и предиктивными видеоблоками. В некоторых случаях видеоблок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
Более мелкие видеоблоки могут обеспечить лучшее разрешение, и их можно использовать для тех мест в видеокадре, которые отличаются высокими уровнями детализации. В общем случае в качестве видеоблоков можно рассматривать макроблоки и упомянутые различные части, иногда называемые субблоками. Вдобавок, один слайс можно рассматривать как множеств видеоблоков, таких как макроблоки и/или субблоки. Каждый слайс может представлять собой независимо декодируемую единицу видеокадра. В качестве альтернативы, декодируемыми единицами могут быть сами кадры, либо в качестве декодируемых единиц могу быть определены другие части кадра. Термин «кодированная единица» может относиться к любой независимо декодируемой единице видеокадра, такой весь кадр в целом, слайс кадра, группа изображений (GOP), называемая также последовательностью, либо иная независимо декодируемая единица, определенная в соответствии с применяемыми процедурами кодирования.
В настоящее время предпринимаются значительные усилия для разработки нового стандарта видеокодирования, называемого на сегодняшний день «высокоэффективным видеокодированием (HEVC)». Находящийся в состоянии разработки стандарт HEVC также может называться стандартом H.265. Работы по созданию стандарта основаны на модели устройства видеокодирования, называемой тестовой моделью HEVC (HM). Модель HM допускает несколько возможностей для устройств видеокодирования, превышающих возможности устройств, соответствующих, например, стандарту ITU-T H.264/AVC. Например, в то время как стандарт H.264 предусматривает девять режимов внутреннего предсказания, модель HM обеспечивает до тридцати трех режимов внутреннего предсказания, например, на основе размера блока, кодируемого с использованием внутреннего предсказания.
Модель HM относится к блоку видеоданных как к единице кодирования (CU). Данные синтаксиса в битовом потоке могут определять максимальную единицу кодирования (LCU), являющуюся максимальной единицей кодирования с точки зрения количества пикселей. В общем случае единица CU играет роль, аналогичную макроблоку в стандарте H.264 за исключением того, что единица CU не имеет различий по размеру. Таким образом, CU можно разбить на субъединицы (суб-CU). В общем случае ссылки на CU в этом описании могут относиться к максимальной единице кодирования изображения или к суб-CU единицы LCU. LCU можно разбить на несколько суб-CU, а каждую суб-CU можно разбить далее на несколько суб-CU. Данные синтаксиса для битового потока могут определять максимальное количество возможных разбиений LCU, называемое здесь глубиной CU. Соответственно, битовый поток может также определить минимальную единицу кодирования (SCU). В данном описании также используется термин «блок», относящийся к CU, единице предсказания (PU) или единице преобразования (TU).
Единица LCU может быть связана со структурой данных в виде квадрадерева. В общем случае структура данных в виде квадрадерева включает в себя один узел на одну единицу CU, где корневой узел соответствует LCU. Если единица CU разбита на четыре субъединицы CU, то узел, соответствующий этой CU, включает в себя четыре краевых узла, каждый из которых соответствует одной из субъединиц CU. Каждый узел структуры данных в виде квадрадерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадрадереве может включать в себя флаг разбиения, указывающий, разбита ли единица CU, соответствующая данному узлу, на субъединицы CU. Элементы синтаксиса для CU можно определить рекурсивно, и они могут зависеть от того, разбита ли данная CU на субъединицы CU.
Неразбитая на субъединицы единица CU может включать в себя одну или несколько единиц предсказания (PU). В общем случае PU представляет все либо часть соответствующей CU и включает в себя данные для извлечения опорной выборки для данной единицы PU. Например, когда PU закодирована в режиме внутреннего предсказания, она может включать в себя данные, описывающие режим внутреннего предсказания для PU. В другом примере, когда PU закодирована во внешнем режиме, она может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в четверть пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, а для опорного списка (например, список 0 или список 1) для вектора движения. Данные для CU, определяющие PU, также могут описывать, например, разбиение CU на одну или несколько PU. Режимы разбиения могут отличаться в зависимости от того, осталась ли CU закодированной, закодирована ли она в режиме внутреннего предсказания или закодирована ли она в режиме внешнего предсказания.
Единица CU, имеющая одну или несколько единиц PU, также может включать в себя одну или несколько единиц преобразования (TU). После предсказания с использованием единицы PU видеокодер может вычислить остаточное значение для части CU, соответствующей данной PU. Набор остаточных значений можно преобразовать, отсканировать и квантовать для определения набора коэффициентов преобразования. Единица TU определяет структуру данных, которая включает в себя коэффициенты преобразования. Размер единицы TU не обязательно ограничен размером единицы PU. То есть единицы TU могут быть длиннее или короче соответствующих единиц PU для одной и той же единицы CU. В некоторых примерах максимальный размер единицы TU может соответствовать размеру соответствующей единицы CU.
Согласно раскрытым здесь процедурам видеокодер 20 может кодировать определенные блоки видеоданных, используя кодирование в режиме внутреннего предсказания и обеспечить информацию, указывающую выбранный режим внутреннего предсказания, используемый для кодирования данного блока. Видеокодер 20 может кодировать блоки с внутренним предсказанием для кадра или слайса любого типа, используя режим внутреннего предсказания, например, I-кадры или I-слайсы, вдобавок к P-кадрам или P-слайсам и B-кадрам или B-слайсам. Когда видеокодер 20 определяет, что блок должен кодироваться в режиме внутреннего предсказания, он может выполнить анализ искажения в зависимости от скорости передачи для выбора наиболее подходящего режима внутреннего предсказания. Например, видеокодер 20 может вычислить значения искажения в зависимости от скорости передачи для одного или нескольких режимов внутреннего предсказания и выбрать один из режимов, имеющих приемлемые характеристики искажения в зависимости от скорости передачи.
Видеокодер 20 также можно конфигурировать для определения контекста кодирования для данного блока. Этот контекст может включать в себя различные характеристики блока, такие как, например, размер блока, который может быть определен на основе пиксельных размеров, тип единицы предсказания (PU), такой как в примере HEVC, 2N×2N, N×2N, 2N×N, N×N, типы ближнего внутреннего предсказания (SDIP) такие, как 2N×N/2, N/2×2N, 2N×1, 1×2N, тип макроблока, как в примере стандарта H.264, глубину единицы кодирования (CU) для блока или другие измерения размера для блока видеоданных. В некоторых примерах указанный контекст может соответствовать любому или всем режимам внутреннего предсказания для вышерасположенного соседнего блока, расположенного слева соседнего блока, расположенного выше и слева соседнего блока, расположенного выше и справа соседнего блока или других соседних блоков. В некоторых примерах контекст может включать в себя режимы внутреннего предсказания для одного или нескольких блоков, а также информацию о размерах для текущего кодируемого блока.
В любом случае видеокодер 20 может включать в себя конфигурационные данные, которые отображают контекст для данного блока на различные характеристики кодирования для текущего блока. Например, на основе контента для данного блока конфигурационные данные могут указывать один или несколько вероятных режимов внутреннего предсказания, таблицу индексов режимов внутреннего предсказания и таблицу отображения. То есть конфигурационные данные могут включать в себя множество таблиц индексов режимов внутреннего предсказания и таблиц отображения, а также указания об одной из множества таблиц индексов режимов внутреннего предсказания и одной из таблиц отображения для их использования для кодирования указания о режиме внутреннего предсказания для текущего блока на основе контекста кодирования для текущего блока. Конфигурационные данные могут дополнительно предоставить указание об одном или нескольких наиболее вероятных режимах для текущего блока на основе контекста кодирования. Количество используемых наиболее вероятных режимов внутреннего предсказания может быть фиксированным, то есть может всегда использоваться один наиболее вероятный режим внутреннего предсказания, всегда использоваться два наиболее вероятных режима внутреннего предсказания, всегда использоваться три наиболее вероятных режима внутреннего предсказания и т.д., либо, в качестве альтернативы, количество наиболее вероятных режимов внутреннего предсказания может зависеть от контекста, то есть в некоторых контекстах используют один наиболее вероятный режим внутреннего предсказания, в то время как для других контекстов используют два или более наиболее вероятных режимов внутреннего предсказания.
Таблица индексов режимов может включать в себя набор режимов внутреннего предсказания, а также индексы, отображенные на каждый из режимов внутреннего предсказания. В некоторых примерах количество имеющихся режимов внутреннего предсказания может зависеть от размера кодируемого блока, и, следовательно, множество таблиц индексов режимов внутреннего предсказания и таблиц отображения могут иметь разное количество записей в зависимости, например, от размера кодируемого блока и/или других факторов. В конфигурационных данных возможно соотношение «один ко многим» между таблицами отображения и таблицами индексов режимов внутреннего предсказания. То есть одна и та же таблица отображения может использоваться для кодирования режимов внутреннего предсказания, выбранных из одной или нескольких таблиц индексов режимов внутреннего предсказания. Таким образом путем таблицы отображения можно многократно использовать для множества таблиц индексов режимов внутреннего предсказания. Аналогичным образом, одни и те же таблицы индексов режимов внутреннего предсказания можно многократно использовать во множестве различных контекстов, например, когда два или более контекста совместно используют один и тот же набор режимов внутреннего предсказания и подобные или идентичные относительные вероятности режимов внутреннего предсказания, используемых в этих контекстах. Кроме того, в некоторых случаях для всех блоков конкретного размера может использоваться одна и та же таблица индексов режимов внутреннего предсказания и одна и та же таблица отображения, и наиболее вероятный режим внутреннего предсказания можно определить, например, на основе режимов внутреннего предсказания для соседних блоков применительно к блоку конкретного размера.
В любом случае согласно раскрытым здесь процедурам видеокодер 20 может определить один или несколько наиболее вероятных режимов для блока на основе контекста кодирования для этого блока, а также таблицу индексов режимов внутреннего предсказания и таблицу отображения на основе контекста кодирования для данного блока. После выбора режима внутреннего предсказания для использования при кодировании блока видеокодер 20 может определить, является ли выбранный режим внутреннего предсказания одним из наиболее вероятных режимов внутреннего предсказания для данного блока. Если выбранный режим является одним из наиболее вероятных режимов, то видеокодер 20 может сигнализировать этот режим внутреннего предсказания с использованием однобитового кодового слова (например, «0» или «1») либо кодового слова, состоящего из последовательности битов.
Кроме того, наиболее вероятный режим внутреннего предсказания может иметь значение индекса в таблице индексов режимов внутреннего предсказания, выбранной для данного блока на основе контекста кодирования этого блока. В частности, таблица индексов режимов внутреннего предсказания может включать в себя уникальное значение индекса для каждого режима внутреннего предсказания в этой таблице. Пусть m представляет значение индекса для наиболее вероятного режима внутреннего предсказания. Поскольку кодовое слово для этого наиболее вероятного режима внутреннего предсказания может передаваться отдельно, таблица отображения может не содержать дополнительное кодовое слово для этого наиболее вероятного режима внутреннего предсказания. Таким образом, если набор имеющихся режимов внутреннего предсказания содержит K+1 членов, отображенных на диапазон индексов от 0 до K, то таблица отображения может назначить K кодовых слов индексам от 0 до K-1.
Для определения кодового слова согласно этой примерной схеме предположим, что выбранный режим внутреннего предсказания не является наиболее вероятным режимом внутреннего предсказания и имеет значение индекса j. Пусть значение n представляет индекс модифицированного режима внутреннего предсказания, соответствующий j. Согласно предшествующему описанию кодовое слово, отображенное на индекс n, сообщается кодером декодеру для указания выбранного режима j внутреннего предсказания. Если значение индекса для выбранного режима внутреннего предсказания меньше, чем значение индекса наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание о режиме внутреннего предсказания, используемом для кодирования текущего блока, с использованием кодового слова, соответствующего индексу j. Другими словами, если j<m, то тогда n=j. С другой стороны, если значение индекса для выбранного режима внутреннего предсказания больше или равно значению индекса наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание режима внутреннего предсказания, используемого для кодирования текущего блока, с использованием кодового слова, соответствующего j-1. Другими словами, если j≥m, то тогда n=j-1.
В случаях, когда выбирают более одного наиболее вероятного режима внутреннего предсказания, видеокодер 20 может передать сигнал в закодированном битовом потоке о том, является ли выбранный режим одним из определенных наиболее вероятных режимов внутреннего предсказания, с использованием первого бита (например, «0» или «1») или последовательности битов. Если выбранный режим является одним из определенных наиболее вероятных режимов внутреннего предсказания, то тогда видеокодер 20, используя второй бит, может передать сигнал, указывающий на то, какой из наиболее вероятных режимов внутреннего предсказания является выбранным режимом. Если выбранный режим не является одним из определенных наиболее вероятных режимов внутреннего предсказания, то тогда видеокодер 20 может передать сигнал, указывающий на то, какой из числа других режимов внутреннего предсказания является выбранным режимом, с использованием кодового слова из таблицы отображения. Предположим вновь без потери общности, что первый бит имеет значение «0» для указания, что выбранный режим является одним из наиболее вероятных режимов внутреннего предсказания, и видеодекодер 20 определяет два наиболее вероятных режима внутреннего предсказания, и тогда видеокодер 20 может сигнализировать, какой из двух наиболее вероятных режимов внутреннего предсказания является выбранным режимом, со значением «00» или «01», где первый 0 представляет первый бит. Если выбранный режим не является одним из наиболее вероятных режимов внутреннего предсказания, то тогда видеокодер 20 может сигнализировать выбранный режим, послав первый бит «1», за которым следует кодовое слово.
Кроме того, два наиболее вероятных режима внутреннего предсказания могут иметь значения индекса в таблице индексов режимов внутреннего предсказания, выбранной для данного блока на основе контекста кодирования этого блока. В частности, таблица индексов режимов внутреннего предсказания может включать в себя уникальное значение индекса для каждого режима внутреннего предсказания в данной таблице. Пусть m1 представляет значение индекса для первого наиболее вероятного режима внутреннего предсказания, а m2 представляет значение индекса для второго наиболее вероятного режима внутреннего предсказания. Поскольку кодовое слово для первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания могут быть посланы с использованием первого бита и второго бита, как было описано выше, таблица отображения не должна обязательно включать в себя дополнительные кодовые слова для первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания. Таким образом, если набор имеющихся режимов внутреннего предсказания содержит K+1 членов, отображенных на диапазон индексов от 0 до K, то таблица отображения может назначить K-1 кодовых слов индексам от 0 до K-2.
Для определения кодового слова согласно этой примерной схеме, где идентифицированы два наиболее вероятных режима внутреннего предсказания, предположим, что выбранный режим внутреннего предсказания не является одним из наиболее вероятных режимов внутреннего предсказания и имеет значение индекса j. Пусть значение n представляет модифицированный индекс режима внутреннего предсказания, соответствующий j. Согласно предшествующему описанию кодовое слово, отображенное на индекс n, сообщается кодером декодеру для указания выбранного режима j внутреннего предсказания. Если значение индекса для выбранного режима внутреннего предсказания меньше, чем значение индекса первого наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание режима внутреннего предсказания, используемого для кодирования текущего блока, с использованием кодового слова, соответствующего индексу j. Другими словами, если j<m1, то тогда n=j. С другой стороны, если значение индекса для выбранного режима внутреннего предсказания больше или равно значению индекса первого наиболее вероятного режима внутреннего предсказания, но меньше, чем второго наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание режима внутреннего предсказания, используемого для кодирования текущего блока, с использованием кодового слова, соответствующего j-1. Другими словами, если j≥m1, и j<m2, то тогда n=j-1. Наконец, если значение индекса для выбранного режима внутреннего предсказания больше значения индекса первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание о режиме внутреннего предсказания, используемого для кодирования текущего блока, с использованием кодового слова, соответствующего j-2. Другими словами, если j≥m1, и j≥m2, то тогда n=j-2. Таблицы отображения для остальных режимов внутреннего предсказания могут быть построены более эффективным образом путем переназначения индексов с учетом того, что наиболее вероятные режимы не включены в указные таблицы отображения, что может привести к экономии битов при назначении кодовых слов одним или несколькими не выбранными наиболее вероятными режимами.
В некоторых примерах видеокодер 20 можно сконфигурировать так, что он начнет анализ выбора режима внутреннего предсказания с наиболее вероятного режима на основе упомянутого контекста. Когда наиболее вероятный режим достигнет подходящих характеристик искажения в зависимости от скорости передачи, видеокодер 20 может выбрать наиболее вероятный режим. В других примерах видеокодер 20 не обязан начинать процесс выбора с наиболее вероятного режима.
После кодирования с внутренним предсказанием или внешним предсказанием для создания предсказанных данных и остаточных данных и после тех или иных преобразований (таких как целочисленное преобразование 4х4 или 8х8, используемое в стандарте H.264/AVC или дискретное косинусное преобразование (DCT)) для создания коэффициентов преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование в общем случае относится к процессу, в котором коэффициенты преобразования квантуют с целью возможного сокращения объема данных, используемых для представления этих коэффициентов. Процесс квантования может уменьшить глубину (в битах), связанную с некоторыми или всеми коэффициентами преобразования. Например, во время квантования n-битовое значение можно округлить в сторону уменьшения до m-битового значения, где n больше m.
Вслед за квантованием может быть выполнено энтропийное кодирование квантованных данных, например, в соответствии с контекстным адаптивным кодированием с переменной длиной слова (CAVLC), контекстным адаптивным бинарным арифметическим кодированием (CABAC) или другой методикой энтропийного кодирования. Блок обработки, сконфигурированный для энтропийного кодирования, или другой блок обработки может выполнять и другие функции обработки, такие как кодирование квантованных коэффициентов и/или создание информации синтаксиса, такой как значения шаблона кодированного блока (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодируемой единицы (такой как кадр, слайс, макроблок или последовательность) и т.п.
Видеодекодер 30, в конце концов, может принять кодированные видеоданные, например, от модема 28 и приемника 26. В соответствии с раскрытыми здесь процедурами видеодекодер 30 может принять кодовое слово, представляющее режим внутреннего предсказания, используемый для кодирования блока видеоданных. Это кодовое слово может быть закодировано видеокодером 20 с использованием процесса CABAC и может быть декодировано видеодекодером 30 с использованием процесса, обратного процессу CABAC. Видеодекодер 30 можно сконфигурировать для определения контекста кодирования для блока по существу тем же способом, который используется в видеокодере 20. Кроме того, видеодекодер 30 может содержать конфигурацию данных, как у видеокодера 20, например, указания о наиболее вероятном режиме, таблицы индексов режимов внутреннего предсказания и таблицы отображения для каждого контекста кодирования.
При использовании одного наиболее вероятного режима внутреннего предсказания для указания, является ли режим внутреннего предсказания, используемый для кодирования данного блока, наиболее вероятным режимом, можно использовать один бит. Если определено, что выбранный режим не является наиболее вероятным режимом, то тогда видеодекодер 30 может определить режим внутреннего предсказания, используемый для кодирования данного блока видеоданных, способом, в общем случае обратным способу, используемому видеокодером 20.
В частности, пусть снова n представляет индекс модифицированного режима внутреннего предсказания, который в таблице отображения отображается на принятое кодовое слово, j представляет индекс режима внутреннего предсказания, который должен быть использован для декодирования данного закодированного блока, а m представляет индекс наиболее вероятного режима. Если модифицированный индекс n режима внутреннего предсказания меньше, чем индекс наиболее вероятного режима m, то тогда видеодекодер 30 сможет декодировать закодированный блок, используя режим внутреннего предсказания с индексом n. То есть, если n<m, то j=n. С другой стороны, если модифицированный индекс n режима внутреннего предсказания больше или равен индексу наиболее вероятного режима m, то тогда видеодекодер 30 может декодировать закодированный блок, используя режим внутреннего предсказания с индексом n+1. Другими словами, если n≥m, то тогда j=n+1.
При использовании двух или более наиболее вероятных режимов внутреннего предсказания, если кодовое слово содержит первый бит, указывающий, что выбранный режим является одним из двух наиболее вероятных режимов внутреннего предсказания, то тогда видеодекодер 30 может определить режим внутреннего предсказания, используемый для кодирования данного закодированного блока, на основе дополнительных бит, идентифицирующих, какой из двух или более наиболее вероятных режимов внутреннего предсказания соответствует выбранному режиму. Если первый бит указывает на то, что выбранный режим не является одним из двух наиболее вероятных режимов внутреннего предсказания, то тогда видеодекодер 30 может определить режим внутреннего предсказания, используемый для кодирования блока видеоданных способом, в общем случае обратным способу, используемому видеокодером 20.
В частности, пусть снова n представляет индекс модифицированного режима внутреннего предсказания, который в таблице отображения отображается на принятое кодовое слово, j представляет индекс режима внутреннего предсказания, который должен быть использован для декодирования данного закодированного блока, m1 представляет индекс первого наиболее вероятного режима, а m2 представляет индекс второго наиболее вероятного режима. Как было установлено ранее, можно полагать, что индекс m1 меньше, чем индекс m2 режима. Если модифицированный индекс n режима внутреннего предсказания меньше, чем индекс первого наиболее вероятного режима m1, то тогда видеодекодер 30 сможет декодировать закодированный блок, используя режим внутреннего предсказания с индексом n. То есть, если n<m1, то j=n. В противном случае, если модифицированный индекс режима внутреннего предсказания плюс единица (n+1) меньше, чем индекс m2 второго наиболее вероятного режима, то тогда видеодекодер 30 может декодировать закодированный блок, используя режим внутреннего предсказания с индексом n+1. Другими словами, если n+1<m2, то тогда j=n+1. В противном случае видеодекодер 30 может декодировать закодированный блок, используя режим внутреннего предсказания с индексом n+2. Другими словами, если n+1≥m2, то тогда j=n+2.
Для двух наиболее вероятных режимов отображение индексов режимов на модифицированные индексы режимов внутреннего предсказания, выполняемое видеокодером 20, можно представить следующим псевдокодом:
если (j≥m2)
n=j-2
в противном случае, если (j≥m1)
n=j-1
в противном случае
n=j.
Для N наиболее вероятных режимов, где m1 представляет первый наиболее вероятный режим, а mN представляет N-й наиболее вероятный режим, отображение индексов режимов на модифицированные индексы режимов внутреннего предсказания, выполняемое видеокодером 20, можно представить следующим псевдокодом:
if (j≥mN)
n=j-N
else if (j≥mN-1)
n=j-N+1
…
else if (j≥m2)
n=j-2
else if (j≥m1)
n=j-1
else
n=j.
Для двух наиболее вероятных режимов отображение модифицированного индекса режимов внутреннего предсказания на индекс режима, выполняемое видеодекодером 30, может быть представлено следующим псевдокодом:
if (n<m1)
j=n
else if (n+1<m2)
j=n+1;
else
j=n+2.
Для N наиболее вероятных режимов отображение модифицированного индекса режимов внутреннего предсказания на индекс режима, выполняемое видеодекодером 30, может быть представлено следующим псевдокодом:
if (n<m1)
j=n;
else if (n+1<m2)
j=n+1;
else if (n+2<m3)
j=n+2;
else if (n+3<m4)
j=n+3;
…
else if (n+(N-1)<mN)
j=n+(N-1)
else
j=n+N.
Согласно раскрытым здесь процедурам режимы также могут непосредственно отображаться на индексы кодовых слов, указывающие соответствующие кодовые слова. Подобно варианту с вышеописанными модифицированными индексами режимов внутреннего предсказания, вместо посылки кодового слова с индексом, соответствующим индексу режима, можно сэкономить биты для указания режимов, не являющихся наиболее вероятными, если посылать кодовое слово с модифицированным индексом кодового слова, где модификация есть результат использования индексов кодовых слов, первоначально связанных с наиболее вероятными режимами. Так как сигнализация наиболее вероятных режимов осуществляется с использованием начального бита или последовательности бит, как было описано выше, наиболее вероятные режимы можно исключить из рассмотрения при сигнализации индекса кодового слова режима, не являющегося одним из наиболее вероятных режимов. В результате, индекс кодового слова, первоначально отображенный на один из наиболее вероятных режимов, можно использовать для указания режима, не являющегося одним из наиболее вероятных режимов. Независимо от того, отображается ли кодовое слово на модифицированный индекс режима внутреннего предсказания или на модифицированный индекс кодового слова, это кодовое слово можно закодировать, используя процесс CABAC.
Если предположить, например, что используются два наиболее вероятных режима внутреннего предсказания, как в вышеописанном случае с модифицированными режимами внутреннего предсказания, то, если набор имеющихся режимов внутреннего предсказания содержит K+1 членов, отображенных на диапазон индекса кодовых слов от 0 до K, то таблица модифицированных индексов кодовых слов может назначить K-1 кодовых слов индексам кодовых слов от 0 до K-2.
Положим, что С представляет индекс кодового слова, а Cmod представляет модифицированный индекс кодового слова. Кроме того, положим, что Cm1 представляет минимальный индекс кодового слова наиболее вероятного режима, Cm2 представляет второй минимальный индекс кодового слова, соответствующий наиболее вероятному режиму, и т.д. Как более подробно объясняется ниже, отображение режимов на индексы кодовых слов может носить динамический характер. Таким образом, первый наиболее вероятный режим с минимальным индексом режима может также не иметь минимальный индекс кодового слова. Соответственно, нет необходимости, чтобы Cm1 соответствовал первому наиболее вероятному режиму, Cm2 может не соответствовать второму наиболее вероятному режиму. Таким образом, для N наиболее вероятных режимов отображение индексов кодовых слов на модифицированные индексы кодовых слов, выполняемое видеокодером 20, может быть представлено следующим псевдокодом:
if (С≥CmN)
Cmod=C-N
else if (С≥CmN-1)
Cmod=C-N+1
…
else if (С≥Cm2)
Cmod=C-2
else if (С≥Cm1)
Cmod=C-1
else
Cmod=C
Таким образом, для N наиболее вероятных режимов отображение модифицированных индексов кодовых слов на индексы кодовых слов, выполняемое видеодекодером 30, может быть представлено следующим псевдокодом:
if (Cmod<Cm1)
C=Cmod;
else if (Cmod+1<Cm2)
C=Cmod+1;
else if (Cmod+2<Cm3)
C=Cmod+2;
else if (Cmod+3<Cm4)
C=Cmod+3;
…
else if (Cmod+(N-1)<CmN)
C=Cmod+(N-1);
else
С=Cmod+N
Как видеокодер 20, так и видеодекодер 30 можно реализовать в виде любых подходящих схем кодера из числа различных схем, таких как один или несколько микропроцессоров, цифровые процессоры сигналов (DSP), прикладные специализированные интегральные схемы (ASIC), вентильные матрицы, программируемые пользователем (FPGA), дискретная логика, программные средства, аппаратные средства, программно-аппаратные средства или любая их комбинация. Видеокодер 20 и видеодекодер 30 могут быть включены каждый в один или несколько кодеров или декодеров, каждый из которых может составлять часть комбинированного кодера/декодера (CODEC). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
На фиг. 2 представлена блок-схема, где показан пример видеокодера 20, в котором можно реализовать процедуры кодирования информации, указывающие режим внутреннего предсказания. Видеокодер 20 может выполнять внутреннее и внешнее кодирование блоков в видеокадрах, в том числе, макроблоков, разделов или подразделов макроблоков. Внутреннее кодирование основано на пространственном предсказании, целью которого является уменьшение или удаление пространственной избыточности в видео в рамках данного видеокадра. Внешнее кодирование основано на временном предсказании, имеющем своей целью уменьшение или удаление временной избыточности в видео в соседних кадрах видеопоследовательности. Режим внутреннего предсказания (I-режим) можно отнести к любому из нескольких режимов пространственного сжатия, а режимы внешнего предсказания, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного сжатия. Хотя на фиг. 2 изображены компоненты для кодирования в режиме внешнего предсказания, следует понимать, что видеокодер 20 может, кроме того, включать в себя компоненты для кодирования в режиме внутреннего предсказания. Однако указанные компоненты для краткости и ясности здесь не показаны.
Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере на фиг. 2 видеокодер 20 включает в себя блок 44 компенсации движения, блок 42 оценки движения, память 64, сумматор 49, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Для восстановления видеоблока видеокодер 20 также включает в себя блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. В границы блока фильтров также может быть включен фильтр устранения блочности (на фиг. 2 на показан) для фильтрации границ блока с целью устранения из восстановленного видео артефактов, связанных с блочностью. Если это необходимо, фильтр устранения блочности, как правило, фильтрует выход сумматора 62.
Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, который должен быть кодирован. Кадр или слайс можно разделить на множество видеоблоков. Блок 42 оценки движения и блок 44 компенсации движения выполняют кодирование принятого блока с предсказанием относительно одного или нескольких блоков в одном или нескольких опорных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнять кодирование принятого видеоблока с внутренним предсказанием по отношению к одному или нескольким соседним блокам в том же кадре или слайсе в качестве блока, который должен быть кодирован, для обеспечения пространственного сжатия.
Блок 40 выбора режимов может выбрать один из режимов кодирования, внутренний или внешний, например, на основе ошибочных результатов и на основе типа кадра или слайса, включая текущий кодируемый блок, и подать результирующий блок, закодированный с использованием внутреннего или внешнего кодирования на сумматор 49 для создания остаточных блочных данных и на сумматор 62 для восстановления закодированного блока для использования в опорном кадре или опорном слайсе. В общем случае внутреннее предсказание включает в себя предсказание текущего блока по отношению к соседним ранее закодированным блокам, в то время как внешнее предсказание включает в себя оценку движения и компенсацию движения для временного предсказания текущего блока.
Блок 42 оценки движения и блок 44 компенсации движения представляют элементы видеокодера 20, связанные с внешним предсказанием. Блок 42 оценки движения и блок 44 компенсации движения могут быть в высокой степени интегрированы, но здесь, исходя из концептуальных целей, они показаны по отдельности. Оценка движения представляет собой процесс создания векторов движения, которые оценивают движение для видеоблоков. Вектор движения может, например, указывать смещение предиктивного блока в предиктивном опорном кадре (или другой закодированной единице) по отношению к текущему блоку, кодируемому в текущем кадре (или другой закодированной единице). Предиктивный блок представляет собой блок, по поводу которого установлено, что он близко совпадает с блоком, который должен быть кодирован, на основе разницы в пикселях, которую можно определить с помощью суммы абсолютных разностей (SAD), суммы квадратичных разностей (SSD) или других разностных показателей. Вектор движения может также указывать смещение части макроблока. Компенсация движения может включать выборку или создание предиктивного блока на основе вектора движения, определенного по оценке движения. Опять же блок 42 оценки и блок 44 компенсации движения в некоторых примерах функционально могут быть интегрированы.
Блок 42 оценки движения вычисляет вектор движения для видеоблока кадра, закодированного с использованием внешнего предсказания, путем сравнения данного видеоблока с видеоблоками опорного кадра в хранилище 60 опорных кадров. Блок 44 компенсации движения может также интерполировать субпиксели опорного кадра, например, I-кадра или P-кадра. Стандарт ITU-T H.264 описывает, например, два списка: список 0, который включает в себя опорные кадры, которые отображают раньше, чем текущий кодируемый кадр, и список 1, который включает в себя кадры, отображаемые позднее, чем кодируемый текущий кадр. Таким образом, данные, хранящиеся в хранилище 64 опорных кадров, могут быть организованы в соответствии с этими списками.
Блок 42 оценки движения сравнивает блоки одного или нескольких опорных кадров из хранилища 64 опорных кадров с блоком текущего кадра, который должен быть кодирован, например, P-кадр или B-кадр. Когда опорные кадры в хранилище 64 опорных кадров включают в себя значения субпикселей, вектор движения, вычисленный блоком 42 оценки движения, может относиться к местоположению субпикселей опорного кадра. Блок 42 оценки движения и/или блок 44 компенсации движения также могут быть сконфигурированы для вычисления значений позиций субпикселей опорных кадров, хранящихся в хранилище 64 опорных кадров, если в хранилище 64 опорных кадров не хранятся значения позиций субпикселей. Блок 42 оценки движения посылает вычисленный вектор движения в блок 56 энтропийного кодирования и блок 44 компенсации движения. Блок опорного кадра, идентифицированный вектором движения, можно назвать предиктивным блоком. Блок 44 компенсации движения может вычислить данные предсказания на основе блока, закодированного с внешним предсказанием.
Модуль 46 внутреннего предсказания может выполнить внутреннее предсказание для текущего блока в качестве альтернативы внешнему предсказанию, выполняемому блоком 42 оценки движения и блоком 44 компенсации движения, как было описано выше. В частности, модуль 46 внутреннего предсказания может определить режим внутреннего предсказания для использования при кодировании текущего блока. В некоторых примерах модуль 46 внутреннего предсказания может закодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время выполнения отдельных проходов кодирования, причем модуль 46 внутреннего предсказания (или блок 40 выбора режима в некоторых примерах) может выбрать из тестируемых режимов подходящий режим внутреннего предсказания для использования. Например, модуль 46 внутреннего предсказания может вычислить значения искажения в зависимости от скорости передачи, используя анализ зависимости искажения от скорости передачи для различных тестируемых режимов внутреннего предсказания и выбрать режим внутреннего предсказания, имеющий наилучшие характеристики искажения в зависимости от скорости передачи среди тестируемых режимов. Анализ искажения в зависимости от скорости передачи обычно определяет величину искажения (или ошибку) между закодированным блоком и исходным не кодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи в битах (то есть, количество битов), используемую для создания кодированного блока. Модуль 46 внутреннего предсказания может вычислить отношения из зависимости искажений от скорости передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания демонстрирует наилучшее значение искажения в зависимости от скорости передачи для данного блока.
В любом случае, после выбора режима внутреннего предсказания для блока модуль 40 внутреннего предсказания может подать информацию, указывающую выбранный режим внутреннего предсказания для данного блока в блок 56 энтропийного кодирования. Блок 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания, используя CABAC согласно раскрытым здесь процедурам. Как показано на фиг. 2, видеокодер 20 может включить в конфигурационный данные 66, которые могут содержать множество таблиц индексов режимов внутреннего предсказания и множество таблиц модифицированных индексов режимов внутреннего предсказания (которые здесь также называют таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, и указания наиболее вероятного режима внутреннего предсказания, таблицы индексов режимов внутреннего предсказания и таблицы модифицированных индексов режимов внутреннего предсказания для использования согласно каждому из контекстов.
Приведенная ниже таблица 1 представляет пример индексов режимов внутреннего предсказания, соответствующих режимам внутреннего предсказания, и индикацию, какой из режимов является наиболее вероятным режимом для конкретного контекста. В таблице 1 также показаны модифицированные индексы режимов внутреннего предсказания, которые отображаются на каждый индекс режима в этом конкретном примере. Таблица 2 предоставляет примерную таблицу отображения, которая отображает кодовые слова на модифицированные индексы режимов внутреннего предсказания, обычно соответствующих индексам режимов, содержащихся в таблице 1. Как обсуждалось выше, возможно использование более одного наиболее вероятного режима, но здесь полагается, что в приведенных в качестве примеров таблице 1 и таблице 2 используют только один наиболее вероятный режим. Из-за того, что используется один наиболее вероятный режим, в таблицу 2 включено на единицу меньше записей, чем в таблицу 1. Так как для наиболее вероятного режима предусмотрена сигнализация, отдельная от остальных режимов, индекс 5 режима не имеет соответствующего модифицированного индекса режима внутреннего предсказания. Аналогичным образом, в таблицу 2 нет необходимости включать кодовое слово для наиболее вероятного режима.
Для примера, пусть m представляет индекс наиболее вероятного режима в таблице 1 и пусть n представляет индекс модифицированного режима внутреннего предсказания, соответствующего j. Если выбранный режим является наиболее вероятным режимом, то тогда в этом примере для представления этого режима используют первый бит (например, «0»), и данный режим определяют как наиболее вероятный режим, как показано в таблице 1 (в этом примере по вертикали - вправо). Если посылается первый бит, отличный от 0 (то есть, «1»), то тогда данный режим не является наиболее вероятным режимом. Пусть n соответствует модифицированному индексу режима внутреннего предсказания, указанному кодовым словом, которое посылают для представления режима. От кодера на декодер передается кодовое слово, которое отображается на индекс n, для указания выбранного режима j внутреннего предсказания. Если значение индекса режима для выбранного режима внутреннего предсказания меньше, чем значение индекса наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание режима внутреннего предсказания, используемого для кодирования текущего блока с использованием кодового слова, соответствующего j. Другими словами, если j<m, то тогда n=j. С другой стороны, если значение индекса для выбранного режима внутреннего предсказания больше или равно значению индекса наиболее вероятного режима внутреннего предсказания, то тогда видеокодер 20 может закодировать указание режима внутреннего предсказания, используемого для кодирования текущего блока, с использованием кодового слова, соответствующего j-1. Другими словами, если j≥m, то тогда n=j-1.
Декодер, указанный как декодер 30, обычно выполняет отображение, обратное отображению, выполняемому кодером 20. Таким образом, декодер 30 может определить, что в том случае, если n<m, индекс режима равен n. С другой стороны, если n>m, то тогда индекс режима равен n+1. Другими словами, если модифицированный индекс режима внутреннего предсказания (например, модифицированный индекс режима внутреннего предсказания из таблицы 2, соответствующий посланному кодовому слову) больше или равен индексу наиболее вероятного режима (в этом примере из таблицы 1), то тогда режим внутреннего предсказания в действительности указывается как n+1, а не как n. Таким образом, когда индекс режима для режима внутреннего предсказания, используемого для кодирования текущего блока (например, n+1), больше, чем индекс режима для наиболее вероятного режима кодирования (m), то кодовое слово, использованное для представления выбранного режима внутреннего предсказания, соответствует модифицированному индексу (n) режима внутреннего предсказания, который будет на единицу меньше, чем индекс (n+1) для режима внутреннего предсказания, использованного для кодирования текущего блока.
В качестве примера, связанного с приведенными в качестве примеров таблицами 1 и 2, положим, что для текущего блока, имеющего контекст, указывающий наиболее вероятный режим «по вертикали - вправо», выбранным режимом будет режим «по горизонтали - вниз». Индекс m для наиболее вероятного режима в этом примере равен 5, в то время как индекс режима для выбранного режима (согласно таблице 1) равен 8. В этом примере, поскольку индекс для выбранного режима больше, чем индекс режима для наиболее вероятного режима, то тогда n=j-1, где n - индекс модифицированного режима внутреннего предсказания, имеющий значение 7. Таким образом, согласно таблице 2 видеокодер 20 использует в этом примере кодовое слово 111 для представления выбранного режима. Кодовое слово 111 следует за начальным битом, указывающим, что выбранный режим не является наиболее вероятным режимом. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает начальный бит и кодовое слово 111 и определяет, что значение n равно 7. Поскольку 7 больше 5 (то есть, n≥m) в этом примере, видеодекодер 30 извлекает режим из таблицы 1, имеющий индекс n+1, который равен в этом примере 8 в соответствии со схемой «по горизонтали - вниз».
В другом примере, связанном с приведенными в качестве примеров таблицами 1 и 2, положим, что для текущего блока выбранным режимом является режим усреднения (DC). Опять же, в этом примере индекс m для наиболее вероятного режима равен 5, в то время как индекс для выбранного режима согласно таблице 1 равен 0. В этом примере, поскольку индекс для выбранного режима меньше, чем индекс режима для наиболее вероятного режима, то тогда индекс режима равен n, где n - модифицированный индекс режима внутреннего предсказания. Таким образом, согласно таблице 2 видеокодер 20 использует в этом примере кодовое слово 000 для представления выбранного режима. Кодовое слово 000 следует за начальным битом, указывающим, что выбранный режим не является наиболее вероятным режимом. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает начальный бит и кодовое слово 000 и определяет, что значение n равно ноль. Поскольку ноль меньше 5 (то есть, n<m) в этом примере, видеодекодер 30 извлекает режим из таблицы 1, имеющий индекс n, который равен в этом примере 0 в соответствии c режимом DC.
В приведенной ниже таблице 3 представлен пример индексов режимов внутреннего предсказания, соответствующих режимам внутреннего предсказания, и указание, какой из режимов является наиболее вероятным режимом для конкретного контекста. В таблице 3 также показаны модифицированные индексы режимов внутреннего предсказания, которые отображаются на каждый индекс режима в этом конкретном примере. Таблица 4 дает пример таблицы отображения, которая отображает кодовые слова на модифицированные индексы режимов внутреннего предсказания, которые в общем случае соответствуют индексам режимов в таблице 3. Как обсуждалось выше, возможно использование более двух наиболее вероятных режимов, но в примерах, показанных в таблице 3 и таблице 4, предполагается использование только двух наиболее вероятных режимов. Поскольку здесь используется два наиболее вероятных режима, таблица 4 содержит на две меньше записей, чем таблица 3.
В частности, пусть m1 представляет индекс первого наиболее вероятного режима в таблице 3, а m2 представляет индекс второго наиболее вероятного режима. Если выбранный режим является одним из наиболее вероятных режимов, то тогда для сигнализации, что данный режим является одним из двух наиболее вероятных режимов, используют первый бит (например, «0»). Если данный режим является одним из двух наиболее вероятных режимов, то тогда для сигнализации, какой из двух наиболее вероятных режимов соответствует выбранному режиму, используют второй бит. Таким образом, может быть обеспечена сигнализация двух наиболее вероятных режимах с помощью начальных битовых последовательностей «00» и «01» соответственно. Если посылается первый бит, отличный от 0 (то есть, «1»), то тогда выбранный режим не является одним из двух наиболее вероятных режимов. Пусть n соответствует модифицированному индексу режима внутреннего предсказания, указанному кодовым словом, которое посылают для представления режима.
Видеокодер 20 может определить индекс выбранного режима (j) и отобразить этот индекс на модифицированный индекс режима (n). Если j≥m2, то тогда n=j-2. В противном случае, если j≥m1, то тогда n=j-1. В противном случае n=j. Видеодекодер 30 принимает модифицированный индекс (n) режима внутреннего предсказания и сначала может сравнить n с m1. Если n<m1, то тогда индекс (j) режима равен n. Если n не меньше, чем m1, то тогда можно сравнить n+1 с m2. Если n+1<m2, то тогда индекс режима равен n+1. В противном случае индекс режима равен n+2.
В качестве примера, связанного с приведенными в качестве примеров таблицами 3 и 4, положим, что для текущего блока, имеющего контекст, указывающий наиболее вероятные режимы «по вертикали - влево» и «по диагонали вниз/влево», выбранным режимом будет режим «по горизонтали - вниз». Индексы m1 и m2 для наиболее вероятных режимов в этом примере равны 4 и 6, в то время как индекс j режима для выбранного режима (согласно таблице 3) равен 8. В этом примере, поскольку индекс для выбранного режима больше, чем индекс режима для обоих наиболее вероятных режимов, то тогда индекс j режима равен n+2, где n равно индексу модифицированного режима внутреннего предсказания в таблице 4. Таким образом, если индекс j режима равен 8, то тогда n=6. Таким образом, видеокодер 20 использует в этом примере кодовое слово 110 для представления выбранного режима. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает начальное кодовое слово 110 и определяет, что значение n равно 6. Поскольку 6 не меньше 4 (то есть, n≥m1) и 6 плюс 1 не меньше 6 (то есть, n+1≥m2) в этом примере, видеодекодер 30 извлекает режим из таблицы 3, имеющий индекс j, который равен в этом примере n+2 (то есть, 8) в соответствии со схемой «по горизонтали - вниз».
В другом примере, связанном с приведенными в качестве примеров таблицами 3 и 4, положим, что для текущего блока выбранным режимом является режим DC. Опять же, в этом примере индексы m1 и m2 для наиболее вероятных режимов равны 4 и 6, в то время как индекс j для выбранного режима (согласно таблице 3) равен 0. В этом примере, поскольку индекс для выбранного режима меньше, чем индекс режима для обоих наиболее вероятных режимов (то есть, n<m1), то тогда индекс j режима равен n, где n равно индексу модифицированного режима внутреннего предсказания в таблице 4. Таким образом, n равно 0. Таким образом, на основе таблицы 4 в этом примере видеокодер 20 использует кодовое слово 0 для представления выбранного режима. За начальным битом или рядом битов, указывающих, что выбранный режим не является наиболее вероятным режимом, следует кодовое слово 000. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает начальный бит или ряд битов и кодовое слово 000 и определяет, что значение n равно ноль. Поскольку ноль меньше 4 и 6 (то есть n<m1) в этом примере, видеодекодер 30 извлекает режим из таблицы 3, имеющий индекс j, который равен n, то есть 0, в соответствии c режимом DC.
В еще одном примере, связанном с приведенными в качестве примеров таблицами 3 и 4, положим, что для текущего блока выбранным режимом является режим «по вертикали - вправо». Опять же, в этом примере индексы m1 и m2 для наиболее вероятных режимов равны 4 и 6, в то время как индекс j для выбранного режима (согласно таблице 3) равен 5. В этом примере, поскольку индекс для выбранного режима больше или равен индексу для первого наиболее вероятного режима, но меньше, чем индекс режима для второго наиболее вероятного режима, индекс j режима равен n+1, где n равно индексу модифицированного режима внутреннего предсказания в таблице 4. Таким образом, если индекс j режима равен пяти, то тогда n=4. Таким образом, в этом примере видеокодер 20 использует кодовое слово 110 для представления выбранного режима. За начальным битом или последовательностью битов, указывающих, что выбранный режим не является наиболее вероятным режимом, следует кодовое слово 110. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает начальный бит или последовательность битов и кодовое слово 110 и определяет, что значение n равно 4. Поскольку 4 больше или равно 4, но 4 плюс 1 меньше 6 (то есть, n≥m1, но n+1<m2) в этом примере, видеодекодер 30 извлекает режим из таблицы 3, имеющий индекс j, который равен n+1, то есть 5, в соответствии c режимом «по вертикали - вправо» в этом примере.
Следует понимать, что таблицы 1, 2, 3 и 4 являются просто примерами таблиц, содержащих наиболее вероятные режимы, индексы для этих режимов и кодовые слова, назначенные различным индексам. В других примерах в качестве наиболее вероятных режимов могут быть определены другие режимы, например, на основе контекста кодирования для конкретного блока. Например, наиболее вероятный режим может быть определен на основе режимов кодирования, используемых для кодирования соседних блоков слева и вверху. Конфигурационные данные 66 могут включать в себя множество различных таблиц, обычно подобных приведенным в качестве примеров таблицам 1 и 3. Аналогичным образом, конфигурационные данные 66 могут включать в себя множество таблиц отображения кодовых слов, таких как таблицы 2 и 4, которые отображают индексы на кодовые слова.
В общем случае таблицы 1 и 3 могут называться таблицами индексов режимов, в то время как таблицы 2 и 4 могут называться таблицами отображений модифицированных индексов режимов внутреннего предсказания или просто таблицами отображения. Как отмечалось выше, таблицы 1 и 2 являются просто одним примером таблицы индексов режимов и таблицы отображения. В некоторых примерах конфигурационные данные 66 могут включать в себя данные для множества таблиц индексов режимов и множества таблиц отображения. В некоторых примерах множество контекстов кодирования могут соответствовать одной общей таблице индексов режимов. Аналогичным образом, множество таблиц индексов режимов могут соответствовать общей таблице отображения.
Согласно раскрытым здесь процедурам режимы также могут отображаться на индексы кодовых слов, а не на модифицированные индексы режимов внутреннего предсказания. Затем индексы кодовых слов могут быть отображены на модифицированные индексы кодовых слов, которые используют для поиска кодовых слов. Приведенная ниже таблица 5 представляет пример индексов режимов внутреннего предсказания и режимов, которые отображены на один индекс кодового слова. В таблице 5 также имеется указание о том, какие режимы являются наиболее вероятными для конкретного контекста, а также показаны модифицированные индексы кодовых слов, соответствующие индексам кодовых слов для данного конкретного примера.
Для примера, пусть Cm1 представляет индекс кодового слова одного наиболее вероятного режима, а CM2 представляет индекс кодового слова другого наиболее вероятного режима, где Cm1 имеет меньшее значение индекса кодового слова, чем Cm2. Как обсуждалось выше, Cm1 и Cm2 определяют на основе значений индексов кодовых слов, а не значений индексов режимов. Таким образом, Cm1 не обязательно может соответствовать первому наиболее вероятному режиму, а Cm2 не обязательно может соответствовать второму наиболее вероятному режиму. В приведенной в качестве примера таблице 5 режим 3 («по диагонали вниз/вправо»), к примеру, является первым наиболее вероятным режимом, поскольку он имеет минимальный индекс из наиболее вероятных режимов, а режим 6 является вторым наиболее вероятным режимом. Однако второй наиболее вероятный режим имеет меньший индекс соответствующего кодового слова, чем первый наиболее вероятный режим. Таким образом, в примере согласно таблице 5 Cm1 соответствует индексу кодового слова второго наиболее вероятного режима, а Cm2 соответствует индексу кодового слова первого наиболее вероятного режима. В последующем описании предполагается, что Cm1 меньше, чем Cm2.
Если выбранный режим является одним из наиболее вероятных режимов, то тогда для сигнализации, что данный режим является одним из двух наиболее вероятных режимов, используют первый бит (например, «0»). Если данный режим является одним из двух наиболее вероятных режимов, то тогда для сигнализации, какой из двух наиболее вероятных режимов соответствует выбранному режиму, используют второй бит. Таким образом, сигнализация двух наиболее вероятных режимов может быть обеспечена с помощью начальных битовых последовательностей «00» и «01» соответственно. Если послан первый бит, отличный от «0», (то есть, «1»), то тогда выбранный режим не является одним из двух наиболее вероятных режимов, и выбранный режим посылают в виде кодового слова, соответствующего индексу кодового слова. Однако вместо посылки кодового слова, которое непосредственно соответствует индексу кодового слова для выбранного режима, видеокодер 20 может обеспечить экономию битов, посылая кодовое слово, соответствующее модифицированному индексу кодового слова. Видеодекодер 30 может принять кодовое слово, соответствующее модифицированному индексу кодового слова, а затем определить индекс кодового слова, соответствующий выбранному режиму внутреннего предсказания.
Видеокодер может определить индекс кодового слова выбранного режима (С) и отобразить индекс режима на модифицированный индекс (Cmod) режима. Если С≥Cm2, то тогда Cmod=С-2. В противном случае, если С≥Cm1, то тогда Cmod=С-1. В противном случае, Cmod=С. Видеодекодер 30 принимает модифицированный индекс (Cmod) режима внутреннего предсказания и может сначала сравнить его с Cm1. Если Cmod<Cm1, то тогда индекс (С) режима равен Cmod. Если Cmod не меньше Cm1, то тогда с Cm2 можно сравнить Cmod+1. Если Cmod+1<Cm2, то тогда индекс режима равен Cmod+1. В противном случае, индекс режима равен Cmod+2.
В качестве примера, связанного с приведенными в качестве примеров таблицами 5 и 6, положим, что для текущего блока, имеющего контекст, указывающий наиболее вероятные режимы «по вертикали - влево» (индекс 6 режима) и «по диагонали вниз/вправо» (индекс 3 режима), выбранным режимом является режим «по горизонтали - вниз» (индекс 8 режима). Индексы Cm1 и Cm2 кодовых слов для наиболее вероятных режимов в этом примере равны 2 и 5, в то время как индекс для выбранного режима (согласно таблице 5) равен 8. Согласно таблице 5 индексы 3, 6 и 8 режимов отображаются на индексы 5, 2 и 8 кодовых слов соответственно. В этом примере, поскольку индекс кодового слова для выбранного режима (то есть индекс 8 кодового слова) больше, чем индексы кодовых слов для обоих наиболее вероятных режимов (то есть индексы 5 и 20 кодовых слов), индекс кодового слова равен Cmod+2, где Cmod равен модифицированному индексу кодового слова, соответствующего кодовому слову в таблице 6. Таким образом, если индекс кодового слова выбранного режима равен 8, то тогда Cmod=6. Таким образом, в этом примере видеокодер 20 для представления выбранного режима будет использовать кодовое слово 110. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) принимает кодовое слово 110 и определяет, что значение Cmod равно 6. Так как 6 не меньше 2 (то есть, Cmod≥Cm1) и 6+1 не меньше чем 5 (то есть, Cmod+1≥Cm2) в этом примере, видеодекодер 30 извлекает режим из таблицы 5, имеющий индекс Cmod+2, что равно 8, в соответствии с режимом «по горизонтали - вниз» в этом примере.
В качестве другого примера, опять же связанного с примерными таблицами 5 и 6, положим, что для текущего блока выбранным режимом является режим «по вертикали» (индекс 1 режима и индекс 0 кодового слова). Индексы Cm1 и Cm2 для наиболее вероятных режимов вновь равны 5 и 2. В этом примере, поскольку индекс кодового слова для выбранного режима меньше индексов кодовых слов для обоих наиболее вероятных режимов (то есть, С<Cm1), модифицированный индекс Cmod кодового слова равен индексу кодового слова. Следовательно, в этом примере для представления выбранного режима видеокодер 20 будет использовать кодовое слово 000. Кодовое слово 000 следует за начальным битом или рядом битов, указывающим, что выбранный режим не является наиболее вероятным режимом. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) будет принимать начальный бит или ряд битов и кодовое слово 000 и определит, что значение Cmod равно 0. Поскольку 0 меньше чем 5 и 2 (то есть Cmod<Cm1) в этом примере, видеодекодер 30 будет извлекать режим из таблицы 5, имеющей индекс С, равный Cmod, равный 0 в соответствии с режимом «по вертикали» в этом примере.
В качестве еще одного примера, связанного с примерными таблицами 5 и 6, положим, что для текущего блока выбранным режимом является режим «по горизонтали» (индекс 2 режима и индекс 4 кодового слова). В этом примере индексы Cm1 и Cm2 для наиболее вероятных режимов равны 2 и 5. В этом примере, поскольку индекс кодового слова для выбранного режима больше или равен Cm1, но меньше, чем Cm2 индекс кодового слова равен Cmod+1, где Cmod - модифицированный индекс кодового слова. Таким образом, если индекс кодового слова равен 4, то тогда Cmod=3. Следовательно, в этом примере для представления выбранного режима видеокодер 20 будет использовать кодовое слово 011. Кодовое слово 011 следует за начальным битом или рядом битов, указывающим, что выбранный режим не является наиболее вероятным режимом. Соответственно, видеодекодер 30 (смотри фигуры 1 и 4) будет принимать начальный бит или ряд битов и кодовое слово 011 и определит, что значение Cmod равно 3. Поскольку 3 не меньше чем 2, но 3 плюс 1 меньше, чем 5 (то есть, Cmod≥Cm1, но Cmod+1<Cm2) в этом примере, видеодекодер 30 будет извлекать режим из таблицы 5, имеющей индекс режима, равный Cmod+1, что равно 4, согласно режиму «по горизонтали».
Следует понимать, что таблицы 1-6 являются просто примерами таблиц наиболее вероятных режимов, индексов для этих режимов, индексов кодовых слов и кодовых слов, назначенных различным индексам. В других примерах в качестве наиболее вероятного режима могут быть определены другие режимы внутреннего предсказания, например, на основе контекста кодирования для конкретного блока. Наиболее вероятный режим можно определить, например, на основе режимов внутреннего предсказания, используемых для кодирования соседних блоков слева и выше. Конфигурационные данные 66 могут включать в себя множество различных таблиц, связанных с разными режимами внутреннего предсказания, идентифицированными как наиболее вероятный режим, а также другое количество идентифицируемых наиболее вероятных режимов, в общем случае по аналогии с примерными таблицами 1, 3 и 5. Аналогичным образом, конфигурационные данные 66 могут включать в себя множество таблиц отображения кодовых слов, таких как таблицы 2, 4 и 6, которые отображают остальные индексы режимов внутреннего предсказания на кодовые слова. Как было описано выше, сигнализация наиболее вероятных режимов выполняется с использованием начального бита или последовательности битов. Указанный начальный бит или последовательность битов могут также зависеть от контекста. Например, различные последовательности битов можно использовать для сигнализации наиболее вероятных режимов, в зависимости от того, какие режимы внутреннего предсказания идентифицированы в качестве наиболее вероятных режимов, а также, сколько наиболее вероятных режимов идентифицировано. Наиболее вероятные режимы и таблицы кодирования в любом случае также можно определить на основе контекстов других типов, вместо или вдобавок к режиму внутреннего предсказания соседних блоков, используемому в данном примере.
Примеры таблиц 1, 2, 3, 4 и 5 предложены применительно к девяти режимам внутреннего предсказания стандарта H.264. Однако следует понимать, что раскрытые здесь процедуры можно применить к другим стандартам и технологиям кодирования, таким как высокоэффективное видеокодирование (HEVC). В некоторых примерах, таких как в HEVC, количество имеющихся режимов внутреннего предсказания может зависеть от размера кодируемого блока (например, в HEVC это «единица кодирования» или «CU»). Для каждого режима внутреннего предсказания индекс режима может быть назначен на основании вероятности появления каждого режима внутреннего предсказания. На фиг. 3 показан пример режимов внутреннего предсказания и соответствующие индексы, которые могут использоваться с кодированием HEVC. Стрелки на фиг. 3 представляют направление предсказания, а числа представляют индекс режима. В таблице 7, приведенной ниже, представлено соответствие между размером CU и количеством режимов внутреннего предсказания, доступных для кодирования единиц CU данного размера. Как можно видеть из таблицы 7, единицы CU с размерами 8×8, 16×16 и 32×32 могут использовать 35 режимов внутреннего предсказания, показанных на фиг. 3, в то время как CU размеров 4×4 и 64×64 используют меньший набор режимов внутреннего предсказания.
В примерах, где количество режимов внутреннего предсказания меняется в зависимости от размера блока, конфигурационные данные 66 могут включать в себя разные таблицы для разных размеров блоков. Соответственно, контекст для кодирования указания режима внутреннего предсказания, используемого для кодирования блока, может включать в себя размер этого блока, а также режимы кодирования, используемые для кодирования соседних блоков. Блок 56 энтропийного кодирования может выбрать таблицу индексов режимов и таблицу отображения кодовых слов, используемую для выбора кодового слова, представляющего выбранный режим внутреннего предсказания, который используется для кодирования данного блока на основе его контекста. Кроме того, таблицы индексов режимов для блоков конкретного размера могут иметь количество записей, равных количеству режимов внутреннего предсказания для блоков этого размера. Таким образом, таблицы индексов режимов для блоков размера 4×4 могут иметь 18 записей, таблицы индексов режимов для блоков размера 8×8, 16×16 и 32×32 могут иметь 35 записей, а таблицы индексов режимов для блоков размера 64×64 могут иметь 4 записи. Другие размеры блоков, например, 128×128, также могут быть связаны с определенным количеством режимов внутреннего предсказания.
Режимы внутреннего предсказания, доступные для блоков размера 8×8, 16×16 и 32×32, могут совпадать, и, следовательно, для блоков с размерами 8×8, 16×16 и 32×32 могут использоваться одни и те же таблицы индексов режимов. Однако, хотя для блоков указанных размеров возможны одни те же режимы, вероятность использования конкретного режима для кодирования блока может зависеть от размера этого блока. Соответственно, в некоторых примерах блок 56 энтропийного кодирования может определить таблицу отображения кодовых слов для конкретной таблицы индексов режимов на основе размера блока, для которого должна быть обеспечена сигнализация режима внутреннего предсказания.
Таблицы 2, 4 и 6, приведенные выше, являются просто примерными таблицами для представления различных режимов кодирования. Однако следует понимать, что в других примерах могут использоваться другие типы кодовых слов. Для таблицы отображения кодовых слов (то есть таблицы отображения или таблицы модифицированных индексов режимов внутреннего предсказания) может быть использован любой набор кодовых слов, коль скоро каждое из этих кодовых слов является уникально декодируемым.
После предсказания текущего блока, с использованием, например, внутреннего предсказания или внешнего предсказания видеокодер 20 может сформировать остаточный видеоблок посредством вычитания данных предсказания, вычисленных блоком 44 компенсации движения или модулем 46 внутреннего предсказания из исходного кодируемого видеоблока. Сумматор 49 представляет компоненту или компоненты, которые выполняют эту операцию вычитания. Модуль 52 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование к остаточному блоку, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 преобразования может выполнять и другие преобразования, например, определенные стандартом H.264, которые концептуально подобны преобразованию DCT. Также могут быть использованы вейвлетные преобразования, целочисленные преобразования, преобразования субдиапазонов или другие типы преобразований. В любом случае модуль 52 преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Упомянутое преобразование позволяет преобразовать остаточную информацию из области пиксельных значений в область преобразования, например, частотную область. Блок 54 квантования выполняет квантование остаточных коэффициентов преобразования для дальнейшего уменьшения битрейта. Процесс квантования может сократить выраженную в битах глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования можно изменять путем настройки параметра квантования.
После квантования блок 50 энтропийного кодирования выполняет энтропийное кодирование квантованных коэффициентов преобразования. Например, блок 56 может выполнить контекстное адаптивное кодирование с переменной длиной слова (CAVLC), контекстное адаптивное бинарное арифметическое кодирование (CABAC) или другую процедуру энтропийного кодирования. После энтропийного кодирования, выполненного блоком 56 энтропийного кодирования, закодированное видео может быть передано на другое устройство или заархивировано для позднейшей передачи или извлечения. В случае контекстного адаптивного двоичного арифметического кодирования контекст может быть основан на соседних блоках и/или размерах блоков.
В некоторых случаях блок 56 энтропийного кодирования или другой блок видеокодера может быть сконфигурирован для выполнения других функций кодирования вдобавок к энтропийному кодированию и кодированию режима внутреннего предсказания, как было описано выше. Например, блок 56 энтропийного кодирования может быть сконфигурирован для определения значений шаблона кодированного блока (CBP) для блоков и их частей. Также в некоторых случаях блок 56 энтропийного кодирования может выполнить кодирование длины серии коэффициентов в макроблоке или его разделе. В частности, блок 56 энтропийного кодирования может применить зигзагообразное сканирование или другую схему сканирования для сканирования коэффициентов преобразования в макроблоке или его разделе и закодировать серии нулей для дополнительного сжатия. Блок 56 энтропийного кодирования также может формировать информацию для заголовка с подходящими элементами синтаксиса для передачи в кодированном битовом видеопотоке.
Блок 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование соответственно для восстановления остаточного блока в пиксельной области, например, для использования в дальнейшем в качестве опорного блока. Блок 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к предсказанному блоку одного из кадров в хранилище 64 опорных кадров. Блок 44 компенсации движения может также применить один или несколько интерполяционных фильтров к восстановленному остаточному блоку для вычисления субпиксельных значений для их использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсацией движения, созданному блоком 44 компенсации движения, для создания восстановленного видеоблока для его хранения в хранилище 64 опорных кадров. Восстановленный видеоблок может быть использован блоком 42 оценки движения или блоком 44 компенсации движения в качестве опорного блока для межкадрового кодирования блока в следующем видеокадре.
Таким образом, видеокодер 20 представляет пример видеокодера, сконфигурированного для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличных от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует упомянутому одному из режимов внутреннего предсказания, с использованием таблицы кодовых слов; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где указанное кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
Таким образом, видеокодер 20 также представляет пример видеокодера, сконфигурированного для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока; выбора таблицы кодовых слов на основе контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слов отображены на режимы внутреннего предсказания; кодирования текущего блока с использованием одного из режимов внутреннего предсказания, отличных от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; определения модифицированного индекса кодового слова на основе индекса кодового слова одного из режимов внутреннего предсказания, используемых для кодирования текущего блока, индекса кодового слов, отображенного на первый наиболее вероятный режим, и индекса кодового слова, отображенного на второй наиболее вероятный режим; и кодирования кодового слова из выбранной таблицы кодовых слов путем выполнения процесса CABAC, где указанное кодовое слово соответствует упомянутому одному из модифицированных индексов режимов внутреннего предсказания.
На фиг. 4 представлена блок-схема, где показан пример видеодекодера 30, который декодирует закодированную видеопоследовательность. В примере на фиг. 4 видеодекодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, модуль 74 внутреннего предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, память 82 и сумматор 80. Видеодекодер 30 в некоторых примерах может выполнить проход декодирования, который в общем случае является обратным по отношению к проходу кодирования, описанному применительно к видеокодеру 20 (фиг. 2). Блок 72 компенсации движения может создавать данные предсказания на основе векторов движения, полученных от блока 70 энтропийного кодирования.
Блок 72 компенсации движения может использовать векторы движения, принятые в битовом потоке, для идентификации блока предсказания в опорных кадрах, находящихся в хранилище 82 опорных кадров. Модуль 74 внутреннего предсказания может использовать режимы внутреннего предсказания, полученные в битовом потоке, для формирования блоков предсказания исходя из соседних блоков в пространстве. В частности, видеодекодер 30 в примере на фиг. 4 содержит конфигурационные данные 84. Конфигурационные данные 84 по существу подобны конфигурационным данным 66 на фиг. 2 в том, что конфигурационные данные 84 включают в себя информацию, описывающую контексты для блоков, вычисленных на основе внутреннего предсказания, а также одну из множества таблиц отображения индексов внутреннего предсказания для использования для каждого контекста, одну из множества таблиц модифицированных индексов внутреннего предсказания (или таблиц отображения кодовых слов) для использования для каждого контекста и наиболее вероятный режим внутреннего предсказания для каждого контекста.
Блок 70 энтропийного декодирования может принимать кодовое слово, представляющее режим внутреннего предсказания, для его использования с целью декодирования кодированного блока видеоданных. Блок 70 энтропийного декодирования может определить контекст для данного закодированного блока, например, на основе режимов внутреннего предсказания для соседнего блока слева и соседнего блока сверху по отношению к данному закодированному блоку и/или на основе размера закодированного блока. Блок 70 энтропийного декодирования на основе контекста может определить один или несколько наиболее вероятных режимов внутреннего предсказания для их использования с целью декодирования данного блока, а также таблицу индексов внутреннего предсказания и таблицу модифицированных индексов режимов внутреннего предсказания для их использования с целью определения действующего режима внутреннего предсказания, который будет использован для декодирования данного блока.
При использовании одного наиболее вероятного режима внутреннего предсказания, если кодовое слово содержит первый бит, например, «0», то тогда блок 70 энтропийного декодирования может определить, что действующим режимом внутреннего предсказания является наиболее вероятный режим внутреннего предсказания для данного кодированного блока. В противном случае, блок 70 энтропийного декодирования может определить модифицированный индекс режима внутреннего предсказания, отображенный на принятое кодовое слово, на основе таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного закодированного блока. Пусть n представляет модифицированный индекс режима внутреннего предсказания и пусть m представляет индекс режима для наиболее вероятно режима внутреннего предсказания. Когда n<m, блок 70 энтропийного декодирования может определить, что действующий режим внутреннего предсказания для данного кодированного блока имеет индекс n. В противном случае (то есть, когда n≥m), блок 70 энтропийного декодирования может определить, что действующий режим внутреннего предсказания для данного кодированного блока имеет индекс n+1. Используя индекс режима, который равен либо n, либо n+1, как было описано выше, блок 70 энтропийного декодирования может извлечь информацию, указывающую действующий режим внутреннего предсказания для использования с целью декодирования кодированного блока и посылки указания этого режима в модуль 74 внутреннего предсказания.
При использовании более одного наиболее вероятного режима внутреннего предсказания, например, двух наиболее вероятных режимов внутреннего предсказания, если первый бит имеет определенное значение, например, «0», то тогда блок 70 энтропийного декодирования может определить, что действующий режим внутреннего предсказания является одним из наиболее вероятных режимов внутреннего предсказания для данного кодированного блока. В указанных случаях блок 70 энтропийного декодирования на основе второго бита или ряда битов может определить, какой из наиболее вероятных режимов внутреннего предсказания является выбранным режимом внутреннего предсказания. В противном случае, после первого бита блок 70 энтропийного декодирования может определить модифицированный индекс режима внутреннего предсказания, отображенный на принятое кодовое слово, и на основе этого модифицированного индекса режима внутреннего предсказания определить выбранный режим внутреннего предсказания для данного блока. Пусть, например, n представляет модифицированный индекс режима внутреннего предсказания и пусть m1 и m2 представляют индексы для наиболее вероятных режимов внутреннего предсказания. Если n<m, то тогда блок 70 энтропийного декодирования может определить, что выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс, равный n. Когда n+1<m2 (но n не меньше, чем m1), то тогда блок 70 энтропийного декодирования может определить, что выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс, равный n+1. В противном случае, когда n+1 не меньше, чем m2, то тогда блок 70 энтропийного декодирования может определить, что выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс, равный n+2. Используя этот индекс, блок 70 энтропийного декодирования может извлечь информацию, указывающую выбранный режим внутреннего предсказания для его использования с целью декодирования данного кодированного блока и посылки указания режима в модуль 74 внутреннего предсказания.
Аналогичным образом, если индексы режимов внутреннего предсказания отображены на индексы кодовых слов, и используется более одного наиболее вероятного режима, то, если первый бит или последовательность битов имеет определенное значение, например «0», то тогда блок 70 энтропийного декодирования может определить, что действующим режимом внутреннего предсказания является один из наиболее вероятных режимов внутреннего предсказания для данного кодированного блока. В указанных случаях блок 70 энтропийного декодирования на основе второго бита или ряда битов может определить, какой из наиболее вероятных режимов внутреннего предсказания является выбранным режимом внутреннего предсказания. В противном случае, после первого бита или последовательности битов блок 70 энтропийного декодирования может определить модифицированный индекс кодового слова, отображенный на принятое кодовое слово, и на основе этого модифицированного индекса кодового слова определить выбранный режим внутреннего предсказания для данного блока. Например, пусть Cmod представляет модифицированный индекс кодового слова и пусть Cm1 и Cm2 представляют индексы кодовых слов для наиболее вероятных режимов внутреннего предсказания. Если Cmod<Cm1, то тогда блок 70 энтропийного декодирования может определить, что действующий выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс кодового слова, равный Cmod. Когда Cmod+1<Cm2 (но Cmod не меньше, чем Cm1), то тогда блок 70 энтропийного декодирования может определить, что действующий выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс кодового слова, равный Cmod+1. В противном случае, когда Cmod+1 не меньше, чем Cm2, то тогда блок 70 энтропийного декодирования может определить, что действующий выбранный режим внутреннего предсказания для данного кодированного блока имеет индекс кодового слова, равный Cmod+2. Используя этот индекс кодового слова, блок 70 энтропийного декодирования может извлечь информацию, указывающую действующий выбранный режим внутреннего предсказания для его использования с целью декодирования данного кодированного блока и посылки указания этого режима в модуль 74 внутреннего предсказания.
Модуль 74 внутреннего предсказания может использовать указание режима внутреннего предсказания для внутреннего предсказания кодированного блока, используя, например, пиксели соседних, ранее декодированных блоков. В примерах, где блок закодирован с использованием режима внешнего предсказания, блок 72 компенсации движения может получить информацию, определяющую вектор движения, чтобы извлечь данные предсказания с компенсацией движения для упомянутого кодированного блока. В любом случае, блок 72 компенсации движения или модуль 74 внутреннего предсказания может подать в сумматор 80 информацию, определяющую блок предсказания.
Блок 76 обратного квантования выполняет обратное квантование, то есть «деквантование», квантованных коэффициентов блока, предоставленных в битовом потоке и декодированных блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя стандартную обработку, например, как это определено стандартом декодирования H.264, или как это выполняется при использовании тестовой модели HEVC. Процесс обратного квантования может также включать в себя использование параметра QPY квантования, вычисляемого кодером 20 для каждого макроблока, чтобы определить степень квантования и аналогичным образом степень обратного квантования, которую следует использовать.
Модуль 58 обратного преобразования применяет обратное преобразование, например обратное преобразование DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования к коэффициентам преобразования с целью создания остаточных блоков в пиксельной области. Блок 72 компенсации движения создает блоки с компенсацией движения, возможно с выполнением интерполяции на основе интерполяционных фильтров. В состав элементов синтаксиса могут быть включены идентификаторы для интерполяционных фильтров, используемые для оценки движения с точностью до субпикселя. Блок 72 компенсации движения может использовать интерполяционные фильтры, использованные видеокодером 20 во время кодирования данного видеоблока, для вычисления интерполированных значений для субпикселей опорного блока. Блок 72 компенсации движения может определить интерполяционные фильтры, использованные видеокодером 20, в соответствии с полученной информацией синтаксиса и использовать эти интерполяционные фильтры для создания предиктивных блоков.
Блок 72 компенсации движения использует часть информации синтаксиса для определения размеров блоков, используемых для кодирования кадра (кадров) кодированной видеопоследовательности, информацию о разбиении, которая описывает, каким образом разбит каждый блок кадра или слайса кодированной видеопоследовательности, режимы, указывающие, каким образом кодируется каждая часть, один или несколько опорных кадров (и списки опорных кадров) для каждого блока или раздела блока, подвергнутого кодированию с внешним предсказанием, и другую информацию для декодирования кодированной видеопоследовательности.
Сумматор 80 суммирует остаточные блоки с соответствующими предиктивными блоками, созданными блоком 72 компенсации движения или модулем 74 внутреннего предсказания для формирования декодированных блоков. Если это необходимо, то также может быть применен фильтр устранения блочности для фильтрации декодированных блоков, чтобы удалить артефакты, связанные с блочностью. Затем декодированные блоки запоминают в хранилище 82 опорных кадров, которое предоставляет опорные блоки для последующей компенсации движения, а также создает декодированное видео для представления его на устройстве отображения (например, на устройстве 32 по фиг. 1).
Таким образом, видеодекодер 30 по фиг. 4 представляет собой пример видеодекодера, сконфигурированного для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для кодированного блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе указанного контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих модифицированным индексам режимов внутреннего предсказания, которые соответствуют режимам внутреннего предсказания, отличным от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определения одного из модифицированных индексов режимов внутреннего предсказания, который соответствует принятому кодовому слову, с использованием упомянутой таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для его использования с целью декодирования кодированного блока, где выбранный режим внутреннего предсказания соответствует определенному одному из модифицированных индексов режимов внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
Таким образом, видеодекодер 30 по фиг. 4 также представляет собой пример видеодекодера, сконфигурированного для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока; выбора таблицы кодовых слов на основе указанного контекста для текущего блока, где таблица кодовых слов содержит множество кодовых слов, соответствующих индексам кодовых слов, где индексы кодовых слов отображены на режимы внутреннего предсказания; выполнения процесса CABAC для определения принятого кодового слова; определения модифицированного индекса кодового слова, который соответствует принятому кодовому слову, с использованием упомянутой таблицы кодовых слов; выбора режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для его использования с целью декодирования кодированного блока, где выбранный режим внутреннего предсказания соответствует индексу кодового слова, выбранного на основе модифицированного индекса кодового слова, первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания; и декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
На фиг. 5А представлена блок-схема, где показан пример блока 50А кодирования CABAC, который можно использовать согласно процедурам, раскрытым в данном описании. Блок 50А кодирования CABAC включает в себя модуль 51А отображения «значение - бин», модуль 53А назначения контекста и модуль 55А адаптивного арифметического кодирования. Модуль 55А адаптивного арифметического кодирования включает в себя модуль 57А оценки вероятности и кодирующую машину 59А. Блок 50А кодирования CABAC может быть установлен, например, как часть блока 56 энтропийного кодирования на фиг. 2.
Для элемента синтаксиса, имеющего не двоичное значение, модуль 51А отображения «значение - бинарный элемент» (bin-бинарный элемент) может назначить значение элемента синтаксиса двоичной последовательности, также называемой «комбинацией бинарных элементов», которая может содержать один или несколько битов или «бинарных элементов». Другими словами, модуль 51А отображения «значение - бинарный элемент» может назначить двоичное значение элементу синтаксиса, так что это значение будет представлено с использованием двоичной комбинации. Следует заметить, что комбинация бинарных элементов с произвольными значениями может быть назначена любому конкретному элементу синтаксиса, не имеющему двоичное значение, и что комбинация бинарных элементов не обязательно должна представлять значение элемента синтаксиса в двоичной форме. В приведенных в качестве примеров таблицах 2, 4 и 6, описанных выше, кодовые слова приведены уже в двоичной форме и, следовательно, могут быть использованы для бинаризации. Отображение значения синтаксиса на двоичное кодовое слово по существу «бинаризирует» это значение синтаксиса до передачи этого элемента синтаксиса в модуль 51А отображения. Однако, что касается не двоичных элементов синтаксиса, то модуль 51А отображения может бинаризировать данный элемент синтаксиса.
Как было установлено ранее, поскольку каждая из таблиц 2, 4 и 6 уже представлена в виде двоичных значений, то есть уже бинаризирована, можно обойтись без этого процесса бинаризации и передать кодовые слова на этап моделирования контекста (CABAC), выполняемый модулем 53А назначения контекста, который описывается ниже. Аналогичным образом один или несколько бинарных элементов, описанных выше со ссылками на таблицы 1, 3 и 5, указывающие, является ли используемый режим внутреннего предсказания наиболее вероятным режимом внутреннего предсказания для конкретного контекста, могут также быть представлены в виде двоичных значений, и, следовательно, нет необходимости в их бинаризации по тем же причинам, которые были изложены выше. Другими словами, модифицированные индексы режимов внутреннего предсказания, модифицированные индексы кодовых слов, другие элементы синтаксиса и указания, является ли используемый режим внутреннего предсказания наиболее вероятным режимом внутреннего предсказания для конкретного контекста, могут быть представлены не в двоичной форме, и, следовательно, может понадобиться бинаризация.
Модуль 53А назначения контекста назначает контекст для каждого бинарного элемента из комбинации бинарных элементов, используемых для представления элемента синтаксиса. Например, модуль 53А назначения контекста может назначить другой контекст каждому бинарному элементу в комбинации бинарных элементов. В качестве альтернативы, модуль 53А назначения контекста может назначить общий контекст одному или нескольким бинарным элементам из комбинации бинарных элементов. В некоторых других случаях, например, когда бинарный элемент кодируют с использованием байпасного режима CABAC, нет необходимости иметь контекст в явном виде, и модулю 53А назначения контекста нет необходимости назначать такому бинарному элементу какой-либо контекст. В любом случае в некоторых примерах каждый контекст может быть представлен с использованием контекстного индекса. Другими словами, каждый бинарный элемент в комбинации бинарных элементов может быть связан с контекстным индексом, который указывает конкретный контекст, назначенный соответствующему бинарному элементу.
Модуль 53А назначения контекста может выполнить назначение контекста для каждого бинарного элемента из комбинации бинарных элементов с использованием процесса, иногда называемого «контекстным моделированием». Например, модуль 53А назначения контекста может назначить каждый бинарный элемент контексту, определенному на основе контекстной модели. Контекстная модель определяет, каким образом вычисляется конкретный контекст для данного бинарного элемента. Например, контекст может быть вычислен на основе информации, доступной для данного бинарного элемента, такой как, например, значения соответствующих ранее закодированных элементов синтаксиса для соседних блоков видеоданных или относительное положение бинарного элемента в комбинации бинарных элементов. Например, контекстная модель может использовать значения модифицированных индексов режимов внутреннего предсказания (или кодовые слова, используемые для представления этих индексов) для соседних блоков видеоданных сверху и слева от текущего блока и/или положение бинарного элемента в комбинации бинарных элементов для вычисления контекста.
В некоторых примерах каждый контекст может включать в себя множество «контекстных состояний», где каждое контекстное состояние связано с конкретным набором вероятностных оценок, который указывает вероятность того, что бинарный элемент, которому назначен контекст, содержит данное значение, например, «0» или «1». Вдобавок, каждый контекст может быть связан с конкретным текущим состоянием контекста в любой данный момент времени, где текущее состояние контекста указывает последние оценки вероятности для этого контекста.
Бинарный элемент из комбинации бинарных элементов может последовательно кодироваться модулем 55А адаптивного арифметического кодирования. Для кодирования бинарного элемента модуль 57А оценки вероятности, входящий в состав модуля 55А адаптивного арифметического кодирования, может определить оценки вероятности для кодируемого бинарного элемента на основе контекста (и его текущего состояния), назначенного данному бинарному элементу.
Кодирующая машина 59А может использовать значение бинарного элемента и оценки вероятности, соответствующие контексту (и его текущему состоянию), назначенному данному бинарному элементу, в качестве вводов модуля 55А адаптивного арифметического кодирования при кодировании бинарного элемента. Оценки вероятности определяются для данного бинарного элемента модулем 57А оценок вероятности с использованием назначенного контекста, как было описано выше. Как было описано ранее, эти оценки вероятности в общем случае соответствуют вероятности того, что бинарный элемент имеет значение, равное «0», или значение, равное «1». Оценки вероятности могут быть одинаковыми для бинарных элементов, назначенных одному контексту, и могут отличаться от контекста к контексту, что отражается текущим состоянием каждого из контекстов.
Кроме того, оценки вероятности для назначенного контекста могут обновляться на основе действительного значения бинарного элемента, кодируемого кодирующей машиной 59А. Например, если конкретный бинарный элемент имеет значение «1», то тогда оценки вероятности, равные «1» для назначенного контекста, возрастают. Аналогичным образом, если бинарный элемент имеет значение «0», то тогда возрастают оценки вероятности, равные «0», для назначенного контекста. В вышеописанных примерах оценки вероятности для назначенного контекста могут обновляться путем обновления контекстного состояния для отражения последних оценок вероятности для контекста, как было описано ранее. Например, последние оценки вероятности, указанные обновленным контекстным состоянием, можно использовать для управления следующим бином, для которого выбран тот же самый контекст.
Описанную выше процедуру можно повторить для каждого бинарного элемента из комбинации бинарных элементов. В некоторых случаях для одного или нескольких бинарных элементов из комбинации бинарных элементов можно использовать байпасный режим, и в этом случае один или несколько бинарных элементов кодируют без использования модели назначения в явном виде, что может упростить кодирование и увеличить скорость кодирования бинарных элементов. Например, для одного или нескольких бинарных элементов, кодируемых с использованием байпасного режима, могут быть приняты фактически единообразные оценки вероятности (например, «0,5», для значений «0» и «1»). Другими словами, байпасный режим можно использовать для кодирования равномерно распределенных бинарных элементов.
Здесь предполагается, что вышеописанный процесс CABAC представляет один пример процесса CABAC. Предположим, что модификации вышеописанного процесса, а также процессы CABAC, альтернативные по отношению к вышеописанному не выходят за рамки объема процедур, описанных в этом изобретении. Вдобавок, процедуры этого изобретения дополнительно предполагают использование других адаптированных к контексту процессов энтропийного кодирования, таких как процессы энтропийного кодирования с разбиением на интервалы вероятностей (PIPE), а также другие процессы энтропийного кодирования, адаптивные к контексту.
На фиг. 5В представлена блок-схема, где показан блок 50В декодирования CABAC, который может быть использован в соответствии с раскрытыми здесь процедурами. Блок 50В декодирования CABAC содержит модуль 51В отображения «бинарный элемент - значение», модуль 53В назначения контекста и модуль 55В адаптивного арифметического декодирования. Модуль 55В адаптивного арифметического декодирования включает в себя модуль 57В оценки вероятности и декодирующую машину 59В. Блок 50В декодирования CABAC может, например, быть установлен в виде части блока 70 энтропийного декодирования по фиг. 4.
Аналогичным образом, как было описано выше со ссылками на блок 50А кодирования CABAC, блок 50В декодирования CABAC может декодировать кодированную комбинацию бинарных элементов, содержащую один или несколько бинарных элементов. Как было описано ранее, кодированная комбинация бинарных элементов может представлять кодированный элемент синтаксиса с двоичным или не двоичным значением.
Например, модуль 53В назначения контекста может использовать контекстное моделирование для определения контекста, который должен быть назначен конкретному бинарному элементу из комбинации бинарных элементов. Модуль 57В оценки вероятности может использовать назначенный контекст (и его текущее состояние) для определения оценок вероятностей, используемых для декодирования данного бинарного элемента. Кроме того, декодирующая машина 59В может декодировать бинарный элемент, используя упомянутые оценки вероятностей. Аналогичным образом, как было описано выше, этот процесс может повторяться для некоторых или всех бинарных элементов из комбинации бинарных элементов, в результате чего получается декодированная комбинация бинарных элементов. Наконец, модуль 51В отображения «бинарный элемент - значение» может отобразить декодированные бинарные элементы из комбинации бинарных элементов на элемент синтаксиса с недвоичным значением, или «дебинаризировать» один или несколько декодированных бинарных элементов.
Опять же здесь предполагается, что описанный процесс CABAC представляет один из примеров процесса CABAC. Предполагается, что модификации вышеописанного процесса, а также альтернативные процессы CABAC не выходят за рамки объема процедур описанных в этом изобретении. Вдобавок к раскрытым здесь процедурам, кроме того, предполагается использование других процессов не энтропийного кодирования, адаптивных к контексту, таких как процессы PIPE, а также другие процессы энтропийного кодирования, адаптированные к контексту.
На фиг. 6 представлена блок-схема, иллюстрирующая примерный способ кодирования блока видеоданных с внутренним предсказанием. Показанные на фиг. 6 процедуры в общем случае могут выполняться блоком обработки или процессором независимо от реализации (аппаратная, программная, программно-аппаратная или их комбинация), причем при программной или программно-аппаратной реализации могут быть предусмотрены соответствующие аппаратные средства выполнения команд программного или программно-аппаратного обеспечения. В иллюстративных целях процедуры по фиг. 6 описаны применительно к видеокодеру 20 (фигуры 1 и 2), хотя следует понимать, что для выполнения аналогичных процедур можно сконфигурировать другие устройства. Кроме того, этапы, показанные на фиг. 6, могут выполняться в другом порядке или параллельно и могут быть добавлены дополнительные этапы, а некоторые этапы опущены, при условии того, что это не приведет к выходу за рамки процедур данного изобретения.
Первоначально видеокодер 20 может выбрать режим внутреннего предсказания для текущего блока видеоданных (этап 100). Например, модуль 46 внутреннего предсказания может вычислить значения зависимости искажения от скорости передачи для различных режимов внутреннего предсказания, используемых для кодирования данного блока, а затем выбрать режим внутреннего предсказания, который дает наилучшее значение зависимости искажения от скорости передачи данных для тестируемых режимов внутреннего предсказания. Затем модуль 46 внутреннего предсказания может закодировать данный блок, используя выбранный режим внутреннего предсказания (этап 102). То есть модуль 46 внутреннего предсказания может вычислить предсказываемый блок для данного блока на основе выбранного режима внутреннего предсказания. Видеокодер 20 кроме того может вычислить разницу между предсказываемым блоком и исходным блоком для создания остаточного блока, который видеокодер 20 сможет затем преобразовать и квантовать.
Видеокодер 20, кроме того, может кодировать информацию, представляющую режим внутреннего предсказания. То есть модель 46 внутреннего предсказания может послать указание выбранного режима внутреннего предсказания в блок 56 энтропийного кодирования. Блок 56 энтропийного кодирования или другой блок видеокодера 20 может определить контекст для данного блока (этап 104). Контекст для данного блока может включать в себя размер блока или режимы внутреннего предсказания соседних блоков, таких как соседний блок сверху и/или соседний блок слева. Блок 56 энтропийного кодирования может также выбрать таблицу модифицированных индексов режимов внутреннего предсказания для кодирования указателя режима внутреннего предсказания на основе контекста кодирования для данного блока (этап 106). Кроме того, блок 56 энтропийного кодирования может выбрать таблицу индексов внутреннего предсказания в некоторых примерах, в то время как в других примерах индексы режимов внутреннего предсказания могут быть фиксированными. Кроме того, блок 56 энтропийного кодирования может определить один или более из наиболее вероятных режимов внутреннего предсказания для данного блока в контексте этого блока (этап 108).
Затем блок 56 энтропийного кодирования может выбрать кодовое слово для режима внутреннего предсказания из таблицы модифицированных индексов режимов внутреннего предсказания на основе наиболее вероятного режима (режимов) внутреннего предсказания (этап 110). Например, как более подробно обсуждается ниже, блок 56 энтропийного кодирования может использовать один бит или последовательность битов (например, один бит или два бита) для сигнализации, что выбранный режим внутреннего предсказания содержит один из наиболее вероятных режимов внутреннего предсказания. Если выбранный режим внутреннего предсказания не является одним из наиболее вероятных режимов внутреннего предсказания, то блок 56 энтропийного кодирования может выбрать кодовое слово для сигнализации выбранного режима внутреннего предсказания. Затем блок 56 энтропийного кодирования может вывести кодированный блок (например, кодированные квантованные коэффициенты преобразования) в битовый поток и, используя процесс CABAC, может вывести выбранное кодовое слово в битовый поток (этап 112).
На фиг. 7А представлена блок-схема, иллюстрирующая примерный способ выбора кодового слова, указывающего режим внутреннего предсказания для кодированного блока. Опять же процедуры на фиг. 7А могут быть реализованы в любом подходящем процессоре, хотя эти процедуры обсуждаются здесь в отношении приведенного в качестве примера видеокодера 20. На фиг. 7А показаны дополнительные детали для этапа 110 по фиг. 6. Этапы способа, показанного на фиг. 7А могут выполняться в другом порядке или параллельно, а также могут быть добавлены дополнительные этапы, а некоторые этапы опущены при условии, что упомянутые процедуры останутся в рамках данного изобретения.
Видеокодер 20 может определить контекст кодирования для текущего блока (этап 120), как обсуждалось выше. Аналогичным образом, видеокодер 20 может выбрать таблицу модифицированных индексов режимов внутреннего предсказания на основе контекста кодирования для данного блока (этап 122А). Конфигурационные данные видеокодера 20 могут обеспечить указание таблицы модифицированных индексов режимов внутреннего предсказания и в некоторых примерах таблицы индексов режимов внутреннего предсказания для контекста данного блока. Кроме того, видеокодер 20 может определить наиболее вероятный режим внутреннего предсказания для его использования для кодирования данного блока на основе контекста кодирования для данного блока (этап 124А). Опять же, конфигурационные данные могут обеспечить указание о наиболее вероятном режиме внутреннего предсказания для контекста данного блока.
Как обсуждалось выше, видеокодер 20 может выбрать режим внутреннего предсказания для данного блока, чтобы действительно использовать его для кодирования данного блока (этап 126А). Видеокодер 20 может определить, совпадает ли выбранный режим внутреннего предсказания с наиболее вероятным режимом внутреннего предсказания для данного блока, на основе контекста этого блока (этап 128А). Если выбранный режим является наиболее вероятным режимом (ветвь «Да» этапа 128А), то видеокодер 20 на основе указанного наиболее вероятного режима может закодировать указание режима внутреннего предсказания, используемого для кодирования данного блока с применением одного бита, например «0» или «1» (этап 130А).
Когда выбранный режим не является наиболее вероятным режимом (ветвь «Нет» этапа 128А), видеокодер 20 может определить индекс для выбранного режима внутреннего предсказания (этап 122А), например, из таблицы индексов режимов внутреннего предсказания. В некоторых примерах индексы режимов могут иметь глобальные значения независимо от контекста, в то время как в других примерах конфигурационные данные видеокодера 20 могут отображать каждый контекст на одну из множества таблиц индексов режимов внутреннего предсказания. Видеокодер 20 может, кроме того, определить индекс режима для наиболее вероятного режима внутреннего предсказания. Затем видеокодер 20 может определить, меньше ли индекс для выбранного режима внутреннего предсказания, чем индекс режима для наиболее вероятного режима внутреннего предсказания в упомянутом контексте для данного блока (этап 134А).
Когда индекс для выбранного режима внутреннего предсказания меньше, чем индекс наиболее вероятного режима внутреннего предсказания (ветвь «Да» этапа 134А), видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующего индексу для выбранного режима внутреннего предсказания. В частности, видеокодер 20, используя процесс CABAC, может выдать кодовое слово, отображенное на модифицированный индекс режима внутреннего предсказания, равный индексу для выбранного режима внутреннего предсказания (этап 136А).
С другой стороны, когда индекс для выбранного режима внутреннего предсказания больше, чем индекс режима для наиболее вероятного режима внутреннего предсказания (ветвь «Нет» этапа 134А), видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующего индексу, на единицу меньшему, чем индекс режима для выбранного режима внутреннего предсказания. В частности, видеокодер 20 может, используя процесс CABAC, выдать кодовое слово, отображенное на модифицированный индекс режима внутреннего предсказания, который на единицу меньше, чем индекс режима для выбранного режима внутреннего предсказания (этап 138А).
Поскольку сигнализация наиболее вероятного режима внутреннего предсказания передается отдельно, в таблице модифицированных индексов режимов внутреннего предсказания нет необходимости отображать дополнительное кодовое слово к индексу для наиболее вероятного режима внутреннего предсказания. Таким образом, модифицированный индекс режима внутреннего предсказания, равный индексу для наиболее вероятного режима внутреннего предсказания, может отображаться на индекс, на единицу превышающий индекс для наиболее вероятного режима внутреннего предсказания. Так, если имеется К режимов внутреннего предсказания, доступных для данного блока, то в таблице модифицированных индексов режимов внутреннего предсказания необходимо предусмотреть кодовые слова только для K-1 модифицированных индексов режимов внутреннего предсказания, отличных от однобитового кодового слова, указывающего используется ли наиболее вероятный режим внутреннего предсказания для кодирования данного блока.
На фиг. 7В представлена блок-схема, иллюстрирующая примерный способ выбора кодового слова, указывающего режим внутреннего предсказания для кодированного блока. Опять же процедуры на фиг. 7В могут быть реализованы в любом подходящем процессоре, хотя эти процедуры обсуждаются здесь в отношении приведенного в качестве примера видеокодера 20. На фиг. 7В показаны дополнительные детали для этапа 110 по фиг. 6, для случаев, где используются два наиболее вероятных режима. Этапы способа, показанного на фиг. 7В, могут выполняться в другом порядке или параллельно, а также могут быть добавлены дополнительные этапы, а некоторые этапы опущены при условии, что упомянутые процедуры останутся в рамках данного изобретения.
Видеокодер 20 может определить контекст кодирования для текущего блока (этап 120В), как обсуждалось выше. Аналогичным образом видеокодер 20 может выбрать таблицу модифицированных индексов режимов внутреннего предсказания на основе контекста кодирования для данного блока (этап 122В). Конфигурационные данные видеокодера 20 могут обеспечить указание таблицы модифицированных индексов режимов внутреннего предсказания и в некоторых примерах таблицы индексов режимов внутреннего предсказания для контекста данного блока. Кроме того, видеокодер 20 может определить первый наиболее вероятный режим внутреннего предсказания и второй наиболее вероятный режим внутреннего предсказания для их использования для кодирования данного блока на основе контекста кодирования для данного блока (этап 124В). Опять же, конфигурационные данные видеокодера 20 могут обеспечить указание наиболее вероятных режимов внутреннего предсказания для контекста данного блока.
Как обсуждалось выше, видеокодер 20 может выбрать режим внутреннего предсказания для данного блока, чтобы действительно использовать его для кодирования данного блока (этап 126В). Видеокодер 20 может определить, совпадает ли выбранный режим внутреннего предсказания с одним из наиболее вероятных режимов внутреннего предсказания для данного блока, на основе контекста этого блока (этап 128В). Если выбранный режим является наиболее вероятным режимом (ветвь «Да» этапа 128В), то видеокодер 20 на основе указанных наиболее вероятных режимов может закодировать указание режима внутреннего предсказания, используемого для кодирования данного блока, с применением начальной последовательности бит, например, двух бит, которые включают в себя первый бит для указания, что действующим режимом является один из наиболее вероятных режимов, и второй бит для указания, какой из наиболее вероятных режимов является действующим режимом (этап 130В).
Когда выбранный режим не является ни одним из наиболее вероятных режимов (ветвь «Нет» этапа 128В), видеокодер 20 может определить индекс для выбранного режима внутреннего предсказания (этап 122В), например, из таблицы индексов режимов внутреннего предсказания. В некоторых примерах индексы режимов могут иметь глобальные значения независимо от контекста, в то время как в других примерах конфигурационные данные видеокодера 20 могут отображать каждый контекст на одну из множества таблиц индексов режимов внутреннего предсказания. Видеокодер 20 может, кроме того, определить индекс режима для наиболее вероятных режимов внутреннего предсказания. Затем видеокодер 20 может определить, меньше ли индекс для выбранного режима внутреннего предсказания, чем индексы для первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания в упомянутом контексте для данного блока (этап 134В).
Когда индекс для выбранного режима внутреннего предсказания меньше индексов для обоих наиболее вероятных режимов внутреннего предсказания (ветвь «Да» этапа 134В), видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующего индексу для выбранного режима внутреннего предсказания. В частности, видеокодер 20, может использовать кодовое слово, отображенное на модифицированный индекс режима внутреннего предсказания, равный индексу для выбранного режима внутреннего предсказания (этап 136В).
С другой стороны, когда индекс для выбранного режима внутреннего предсказания не меньше, чем индексы для обоих наиболее вероятных режимов (ветвь «Нет» этапа 134В), видеокодер 20 может затем определить, больше или равен индекс для выбранного режима внутреннего предсказания индексу для первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания в контексте для данного блока (этап 138В). Когда индекс для выбранного режима внутреннего предсказания больше или равен индексам для обоих наиболее вероятных режимов внутреннего предсказания (ветвь «Да» этапа 138В), видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующее индексу для выбранного режима внутреннего предсказания. В частности, видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующее индексу, который на две единицы меньше, чем индекс режима для выбранного режима внутреннего предсказания. В частности, видеокодер 20 может, используя процесс CABAC, выдать кодовое слово, отображенное на модифицированный индекс режима внутреннего предсказания, который на две единицы меньше, чем индекс режима для выбранного режима внутреннего предсказания (этап 140В).
Когда индекс для выбранного режима внутреннего предсказания не меньше, чем индексы для обоих наиболее вероятных режимов внутреннего предсказания (ветвь «Нет» этапа 134В) и когда индекс для выбранного режима внутреннего предсказания не равен или превышает индексы для обоих наиболее вероятных режимов внутреннего предсказания (ветвь «Нет» этапа 138В), то тогда индекс для выбранного режима внутреннего предсказания не превышает или равен индексу режима для первого наиболее вероятного режима внутреннего предсказания, но меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания (ветвь «Нет» этапа 138В). Когда индекс для выбранного режима внутреннего предсказания больше или равен индексу режима для первого наиболее вероятного режима внутреннего предсказания, но меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания, то видеокодер 20 может определить кодовое слово из таблицы модифицированных индексов режимов внутреннего предсказания для контекста данного блока, соответствующее индексу для выбранного режима внутреннего предсказания. В частности, видеокодер 20, используя процесс CABAC, может выдать кодовое слово, отображенное на модифицированный индекс режима внутреннего предсказания, на единицу меньший, чем индекс режима для выбранного режима внутреннего предсказания (этап 142В).
Поскольку первый бит и второй бит используются для сигнализации о наиболее вероятных режимах вышеописанным образом, в таблице модифицированных индексов режимов внутреннего предсказания нет необходимости отображать дополнительные кодовые слова на индекс для наиболее вероятных режимов внутреннего предсказания. Так, если имеется К режимов внутреннего предсказания, доступных для данного блока, то в таблице модифицированных индексов режимов внутреннего предсказания необходимо предусмотреть кодовые слова только для K-2 модифицированных индексов режимов внутреннего предсказания.
На фиг. 8 представлена блок-схема, иллюстрирующая примерный способ декодирования блока видеоданных с внутренним предсказанием. Показанные на фиг. 8 процедуры в общем случае могут выполняться любым блоком обработки или процессором независимо от реализации (аппаратная, программная, программно-аппаратная или их комбинация), причем при программной или программно-аппаратной реализации могут быть предусмотрены соответствующие аппаратные средства выполнения команд программного или программно-аппаратного обеспечения. В иллюстративных целях процедуры по фиг. 8 описаны применительно к видеодекодеру 30 (фигуры 1 и 4), хотя следует понимать, что для выполнения аналогичных процедур можно сконфигурировать другие устройства. Кроме того, этапы, показанные на фиг. 8, могут выполняться в другом порядке или параллельно и могут быть добавлены дополнительные этапы, а некоторые этапы опущены, при условии, что это не приведет к выходу за рамки процедур данного изобретения.
Видеодекодер 30 может определить кодовое слово для кодированного блока в режиме внутреннего предсказания с использованием процесса CABAC (этап 150). В общем случае это кодовое слово может представлять режим внутреннего предсказания, использованный для кодирования данного блока, и по аналогии режим внутреннего предсказания, который должен быть использован для декодирования данного блока. Видеодекодер 30 может определить контекст кодирования для данного блока таким же образом, как это выполняет видеокодер 20 (этап 152), например, на основе размера блока и/или режимов внутреннего предсказания соседних блоков, таких как выше расположенный соседний блок и/или соседний блок слева.
Видеодекодер 30, кроме того, может выбрать таблицу модифицированных индексов режимов внутреннего предсказания для данного блока на основе определенного контекста кодирования для данного блока (этап 154). В некоторых примерах видеодекодер 30 может также определить таблицу индексов режимов внутреннего предсказания на основе упомянутого контекста, в то время как в других примерах индексы режимов внутреннего предсказания могут быть фиксированными и применяться глобально ко всем контекстам. Видеодекодер 30, кроме того, может определить один или несколько наиболее вероятных режимов внутреннего предсказания для контекста данного блока (этап 156).
Затем видеодекодер 30 может определить действующий режим внутреннего предсказания для его использования для декодирования данного блока с использованием выбранной таблицы кодовых слов наиболее вероятного режима (режимов) внутреннего предсказания и принятого кодового слова (этап 158). Например, если кодовое слово содержит один бит или последовательность битов, указывающих, является ли выбранный режим наиболее вероятным режимом, то тогда видеодекодер 30 может использовать этот один бит или последовательность битов для определения того, необходимо ли использовать для декодирования данного блока наиболее вероятный режим (режимы) внутреннего предсказания. Если определено, что выбранный режим не является наиболее вероятным режимом, то тогда видеодекодер 30 может определить модифицированный индекс режима внутреннего предсказания на основе указанного кодового слова, используя таблицу модифицированных индексов режимов внутреннего предсказания, и на основе модифицированного индекса режима внутреннего предсказания видеодекодер 30 может определить режим внутреннего предсказания, использованный для кодирования данного блока.
Видеодекодер 30 может использовать определенный им режим внутреннего предсказания для декодирования данного блока (этап 160). Например, видеодекодер 30 может вычислить блок предсказания для данного блока, используя определенный ранее режим внутреннего предсказания. Кроме того, видеодекодер 30 может принять закодированные квантованные коэффициенты преобразования, которые он может декодировать, выполнить обратное квантование и обратное преобразование для восстановления остаточного блока для данного блока. Затем видеодекодер 30 может сложить блок предсказания и остаточный блок для формирования декодированного блока. Видеодекодер 30 может выдать декодированный блок (этап 162), причем этот этап может включать в себя посылку декодированного видеоблока на устройство отображения для его отображения (например, через буфер кадров) и/или запоминание копий декодированного блока в буфере опорных кадров для использования в качестве опорного блока при декодировании последующих блоков видеоданных, например, в отдельных временных кадрах или слайсах.
На фиг. 9А представлена блок-схема, иллюстрирующая примерный способ для определения режима внутреннего предсказания для блока с использованием принятого кодового слова, указывающего режим внутреннего предсказания для кодированного блока. Опять же процедуры на фиг. 9А могут быть реализованы в любом подходящем процессоре, хотя эти процедуры обсуждаются здесь в отношении приведенного в качестве примера видеодекодера 30. На фиг. 9А показаны дополнительные детали для этапа 160 по фиг. 8. Этапы способа, показанного на фиг. 9А, могут выполняться в другом порядке или параллельно, а также могут быть добавлены дополнительные этапы, а некоторые этапы опущены при условии, что упомянутые процедуры останутся в рамках данного изобретения.
Видеодекодер 30 может определить кодовое слово для блока, кодированного с внутренним предсказанием, используя процесс CABAC (этап 170А). Как обсуждалось выше, видеодекодер 30 может определить контекст кодирования для данного блока (этап 172А), например, на основе размера блока и/или режимов кодирования с внутренним предсказанием соседних блоков.
На основе определенного контекста видеодекодер 30 может выбрать таблицу модифицированных индексов режимов внутреннего предсказания для данного блока (этап 174А) и определить наиболее вероятный режим внутреннего предсказания для данного блока (этап 176А). В некоторых примерах видеодекодер 30, кроме того, может выбрать таблицу индексов режимов внутреннего предсказания для данного блока на основе определенного контекста.
Видеодекодер 30 может определить, указывает ли первый бит в кодовом слове, что выбранный режим внутреннего предсказания является наиболее вероятным режимом. Если выбранный режим внутреннего предсказания является наиболее вероятным режимом (ветвь «Да» этапа 178А), то видеодекодер 30 может декодировать данный блок, используя наиболее вероятный режим внутреннего предсказания (этап 180А). С другой стороны, если выбранный режим внутреннего предсказания является режимом внутреннего предсказания, отличным от наиболее вероятного режима (ветвь «Нет» этапа 178А), то тогда видеодекодер 30 может определить модифицированный индекс (MIPM) режима внутреннего предсказания на основе кодового слова из выбранной таблицы модифицированных индексов режимов внутреннего предсказания (этап 182А).
Затем видеодекодер 30 может определить, меньше ли модифицированный индекс режима внутреннего предсказания, чем индекс режима для наиболее вероятного режима внутреннего предсказания для контекста данного блока (этап 184А). Если модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима для наиболее вероятного режима внутреннего предсказания (ветвь «Да» этапа 184А), то видеодекодер 30 может декодировать данный блок, используя режим внутреннего предсказания, имеющий индекс, равный модифицированному индексу режима внутреннего предсказания (этап 186А). С другой стороны, если модифицированный индекс режима внутреннего предсказания больше или равен индексу режима для наиболее вероятного режима внутреннего предсказания (ветвь «Нет» этапа 184А), то видеодекодер 30 может декодировать данный блок, используя режим внутреннего предсказания, имеющий индекс, равный модифицированному индексу режима внутреннего предсказания плюс единица (этап 188А).
На фиг. 9В представлена блок-схема, иллюстрирующая примерный способ для определения режима внутреннего предсказания для блока с использованием принятого кодового слова, указывающего режим внутреннего предсказания для кодированного блока. Опять же процедуры на фиг. 9В могут быть реализованы в любом подходящем процессоре, хотя эти процедуры обсуждаются здесь в отношении приведенного в качестве примера видеодекодера 30. На фиг. 9В показаны дополнительные детали для этапа 160 по фиг. 8, в случаях использования более одного наиболее вероятного режима. Этапы способа, показанного на фиг. 9В, могут выполняться в другом порядке или параллельно, а также могут быть добавлены дополнительные этапы, а некоторые этапы опущены при условии, что упомянутые процедуры останутся в рамках данного изобретения.
Видеодекодер 30 может определить кодовое слово для блока, кодированного с внутренним предсказанием, используя процесс CABAC (этап 170В). Как обсуждалось выше, видеодекодер 30 может определить контекст кодирования для данного блока (этап 172В), например, на основе размера блока и/или режимов кодирования с внутренним предсказанием соседних блоков. На основе определенного контекста видеодекодер 30 может выбрать таблицу модифицированных индексов режимов внутреннего предсказания для данного блока (этап 174В) и определить наиболее вероятные режимы внутреннего предсказания для данного блока (этап 176В). В некоторых примерах видеодекодер 30, кроме того, может выбрать таблицу индексов режимов внутреннего предсказания для данного блока на основе определенного контекста.
Видеодекодер 30 может определить, указывает ли первый бит или последовательность битов в кодовом слове, что выбранный режим внутреннего предсказания является одним из наиболее вероятных режимов. Если выбранный режим является одним из наиболее вероятных режимов (ветвь «Да» этапа 178В), то видеодекодер 30 может декодировать данный блок, используя наиболее вероятные режимы внутреннего предсказания (этап 180В). Видеодекодер 30 может, например, принять второй бит или последовательность битов для указания, какой из наиболее вероятных режимов является выбранным режимом. С другой стороны, если первый бит или последовательность битов указывают, что выбранный режим не является одним из наиболее вероятных режимов (ветвь «Нет» этапа 178В), то видеодекодер 30 может определить модифицированный индекс режима внутреннего предсказания (MIPM) на основе кодового слова из выбранной таблицы модифицированных индексов режимов внутреннего предсказания (этап 182В).
Затем видеодекодер 30 может определить, меньше ли модифицированный индекс режима внутреннего предсказания, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания для контекста данного блока (этап 184В). Как объяснялось ранее, положим, что индекс для первого наиболее вероятного режима меньше, чем индекс режима для второго наиболее вероятного режима. Таким образом, если модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания, он также меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания. Если модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания (ветвь «Да» этапа 184В), то тогда видеодекодер 30 может декодировать данный блок, используя режим внутреннего предсказания, имеющий индекс, равный модифицированному индексу режима внутреннего предсказания (этап 186В). Если модифицированный индекс режима внутреннего предсказания не меньше, чем индекс режима для первого наиболее вероятного режима внутреннего предсказания (ветвь «Нет» этапа 184В), то видеодекодер 30 может определить, меньше ли модифицированный индекс режима внутреннего предсказания плюс единица, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания для контекста данного блока (этап 188В). Если модифицированный индекс режима внутреннего предсказания плюс единица меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания для контекста данного блока (ветвь «Да» этапа 188В), то тогда видеодекодер 30 может декодировать данный блок, используя режим внутреннего предсказания, имеющий индекс, на единицу превышающий модифицированный индекс режима внутреннего предсказания (этап 190В).
Если модифицированный индекс режима внутреннего предсказания не меньше, чем индекс режима для второго наиболее вероятного режима внутреннего предсказания (ветвь «Нет» этапа 188В), то тогда видеодекодер 30 может декодировать данный блок, используя режим внутреннего предсказания, имеющий индекс, превышающий на два модифицированный индекс режима внутреннего предсказания (этап 192В).
Хотя способ по фигурам 6, 7А, 7В, 8, 9А и 9В был показан применительно к отображению модифицированных индексов режимов внутреннего предсказания на индексы режимов, должно быть понятно, что основополагающие процедуры упомянутых способов можно также использовать для отображения модифицированных индексов кодовых слов на индексы кодовых слов и наоборот таким же образом, как было описано выше применительно к приведенным в качестве примеров таблицам 5 и 6.
На фиг. 10 представлена концептуальная схема, иллюстрирующая примерный набор конфигурационных данных 250, которые включают в себя взаимосвязи между таблицей 200 индексов режимов внутреннего предсказания, таблицей 210 модифицированных индексов режимов внутреннего предсказания и контекстными данными 220. Конфигурационные данные 250 в общем случае могут соответствовать конфигурационным данным 66 (фиг. 2) или конфигурационным данным 84 (фиг. 4). Кроме того, конфигурационные данные, описывающие контексты, таблицы и наиболее вероятные режимы внутреннего предсказания, должны быть одинаковыми как у кодера, так и у декодера для данного битового потока.
В примере на фиг. 10 таблица 200 индексов режимов внутреннего предсказания включает в себя набор режимов 2021-202К внутреннего предсказания (режимы 202 внутреннего предсказания) и соответствующие индексы 20411-204К. Хотя в иллюстративных целях и для разъяснения здесь показана только одна таблица 200 индексов режимов внутреннего предсказания, следует понимать, что конфигурационные данные 250 могут включать в себя множество таблиц индексов режимов внутреннего предсказания, подобных таблице 200 индексов режимов внутреннего предсказания. Таблицы индексов режимов внутреннего предсказания не обязательно должны иметь одинаковый размер, поскольку количество режимов внутреннего предсказания, доступных для одного блока, может зависеть от размера этого блока, как обсуждалось выше, например, в связи с таблицей 5. Индексы 204 также могут называться индексами режимов внутреннего предсказания или просто индексами режимов.
Таблица 210 модифицированных индексов режимов внутреннего предсказания включает в себя индексы 2121-212К-1. Таким образом, таблица 210 модифицированных индексов режимов внутреннего предсказания содержит на одну запись меньше (К-1), чем таблица 200 индексов режимов внутреннего предсказания (К). Как обсуждалось выше, наиболее вероятный режим внутреннего предсказания можно указать с использованием одного бита или последовательности битов, а не одного из кодовых слов 214. Таким образом, режимы внутреннего предсказания, отличные от наиболее вероятного режима внутреннего предсказания, могут быть представлены одним из кодовых слов 214. Опять же, хотя в примере на фиг. 10 показана только одна таблица модифицированных индексов режимов внутреннего предсказания, следует понимать, что конфигурационные данные 250 могут включать в себя множество таблиц модифицированных индексов режимов внутреннего предсказания. Кроме того, количество таблиц модифицированных индексов режимов внутреннего предсказания не обязательно должно быть равно количеству таблиц индексов режимов внутреннего предсказания. В некоторых примерах может существовать между таблицами режимов внутреннего предсказания и таблицами модифицированных индексов режимов внутреннего предсказания может иметь место соотношение типа «многие - к одному», так что одна и та же таблица индексов режимов может соответствовать одной или нескольким таблицам индексов режимов внутреннего предсказания.
Кроме того, конфигурационные данные 250 включают в себя контекстные данные 220, которые содержат множество контекстных записей, подобных контекстной записи 222А. В этом примере контекстная запись 222А включает в себя указатель 224А наиболее вероятного режима внутреннего предсказания, указатель 226А таблицы индексов режимов внутреннего предсказания, таблицу 228А модифицированных индексов режимов внутреннего предсказания и контекстные данные 230А блоков. Контекстные данные 230А блоков могут включать в себя информацию, указывающую те блоки, к которым применяется контекстная запись 222А. Например, контекстные данные 230А блоков могут включать в себя информацию, описывающую один или несколько размеров блоков, к которым применяется контекстная запись 222А, а также режимы внутреннего предсказания для соседних блоков тех блоков, к которым применяется контекстная запись 222А. Как один из примеров, контекстные данные блоков для одной из контекстных записей 222 могут указывать, что данная контекстная запись соответствует блокам, имеющим 16×16 пикселей, где находящийся выше соседний блок кодируют с использованием режима внутреннего предсказания по горизонтали, и где соседний блок слева также кодируют, используя режим внутреннего предсказания по горизонтали.
Указатель 224А наиболее вероятного режима внутреннего предсказания в этом примере указывает режим 202М. В некоторых примерах конфигурационные данные 250 могут задавать однобитовое кодовое слово, используемое для представления о том, что блок кодируется с использованием наиболее вероятного режима внутреннего предсказания. Таким образом, для блоков с контекстами, соответствующими контекстным данным 230А блоков, наиболее вероятным режимом внутреннего предсказания является в этом примере режим 202м внутреннего предсказания. Поскольку режим 202М внутреннего предсказания является наиболее вероятным режимом внутреннего предсказания для контекстной записи 222А, режим 202М внутреннего предсказания нет необходимости отображать на одно из кодовых слов 214 в таблице 210 модифицированных индексов режимов внутреннего предсказания, и, следовательно, в таблице 210 модифицированных индексов режимов внутреннего предсказания может быть кодовых слов на одно меньше, чем режимов 202 внутреннего предсказания в таблице 200 индексов режимов внутреннего предсказания.
Кроме того, индексы 204 режимов, которые в этом примере меньше, чем индекс 204М, то есть, индексы 2041-204М-1 отображаются на модифицированные индексы 212 режимов внутреннего предсказания, имеющие одинаковые значения, которые содержатся в таблице 210 модифицированных индексов режимов внутреннего предсказания. Например, индекс 2042 режима отображается в этом примере на модифицированный индекс 2122 режима внутреннего предсказания из-за того, что индекс 2042 меньше, чем индекс 204М режима. Таким образом, когда видеокодер 20 кодирует блок с контекстом, определенным контекстными данными 230А блоков, используя режим 2022 внутреннего предсказания, видеокодер 20 может сообщить о режиме внутреннего предсказания для данного блока, используя кодовое слово 2142. Аналогичным образом, когда видеодекодер 30 принимает кодовое слово 2142 для блока с контекстом, определенным контекстными данными 230А блоков, видеодекодер 30 может определить, что режим внутреннего предсказания, используемый для кодирования данного блока (и по аналогии, режим внутреннего предсказания, подлежащий использованию для декодирования данного блока), содержит режим 2022 внутреннего предсказания. Подобным же образом, режим 202М-1 внутреннего предсказания отображается на кодовое слово 214М-1 благодаря тому, что индекс 204М-1 режима отображается на модифицированный индекс 212М-1 режима внутреннего предсказания.
С другой стороны, индексы 204 режимов, превышающие индекс 204М режима, то есть индексы 204М-1-204К, отображаются в этом примере на модифицированные индексы 212 режимов внутреннего предсказания, которые на единицу меньше, чем индекс режима. Например, индекс 204К-1 режима отображается на модифицированный индекс 212К-2 режима внутреннего предсказания в этом примере из-за того, что индекс 204К-1 режима больше, чем индекс 204М режима. Таким образом, когда видеокодер 20 кодирует блок с контекстом, определенным контекстными данными 230А блоков, используя режим 202К-1 внутреннего предсказания, видеокодер 20 может сообщить о режиме внутреннего предсказания для блока, используя кодовое слово 214К-2. Аналогичным образом, когда видеодекодер 30 принимает кодовое слово 214К-2 для блока с контекстом, определенным контекстными данными 230А блоков, видеодекодер 30 может определить, что режим внутреннего предсказания, использованный для кодирования данного блока (и по аналогии, режим внутреннего предсказания, подлежащий использованию для декодирования данного блока) содержит режим 202К-1 внутреннего предсказания. Подобным же образом, режим 202М+1 внутреннего предсказания отображается на кодовое слово 214М из-за того, что индекс 204М+1 режима отображается на модифицированный индекс 212М режима внутреннего предсказания.
Таким путем, при условии, что режим внутреннего предсказания отображен на индекс j режима, видеокодер 20 может определить кодовое слово для режимов внутреннего предсказания, отличных от наиболее вероятных режимов, используя следующую ступенчатую функцию f(j), где m представляет индекс режима для наиболее вероятного режима внутреннего предсказания, а кодовое слово (n) представляет кодовое слово, назначенное модифицированному индексу n режима внутреннего предсказания:
Подобным же образом, если задано кодовое слово для выбранного режима внутреннего предсказания, который не является наиболее вероятным режимом, видеодекодер 30 может определить режим внутреннего предсказания, отображенный на кодовое слово, с использованием следующей ступенчатой функции g(n) следующего этапа, где m представляет индекс режима для наиболее вероятного режима внутреннего предсказания, а mode(j) относится к режиму кодирования с внутренним предсказанием, отображенному на индекс j режима:
Если эти концепции распространить на примеры, где используются два наиболее вероятных режима, при заданном режиме кодирования с внутренним предсказанием, отображенном на индекс j режима, видеокодер 20 может определить кодовое слово с использованием следующей ступенчатой функции f(j), где m1 представляет индекс режима для первого наиболее вероятного режима внутреннего предсказания, m2 представляет индекс режима для второго наиболее вероятного режима внутреннего предсказания, а codeword(n) представляет кодовое слово, назначенное модифицированному индексу n режима внутреннего предсказания:
Аналогичным образом, при заданном кодовом слове видеодекодер 30 может определить режим внутреннего предсказания, отображенный на кодовое слово, используя следующую ступенчатую функцию g(n), где m1 представляет индекс режима для первого наиболее вероятного режима внутреннего предсказания, m2 представляет индекс для второго наиболее вероятного режима внутреннего предсказания, а mode(j) относится к режиму внутреннего предсказания, отображенному на индекс j режима:
В одном или нескольких примерах вышеописанные функции могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами, или любой их комбинацией. При реализации программными средствами эти функции могут храниться в виде одной или нескольких команд или кода в считываемом компьютером носителе информации или передаваться через среду передачи и выполняться аппаратно-реализованным обрабатывающим блоком. Считываемая компьютером среда может включать в себя считываемую компьютером запоминающую среду, которая соответствует материальному носителю, такому как средство хранения данных, или среде связи, включая любой носитель, который обеспечивает пересылку компьютерной программы с одного места на другое, например, согласно протоколу связи. Таким образом, считываемый компьютером носитель в общем случае может соответствовать (1) материальным считываемым компьютером носителям для долговременного хранения; или (2) среде связи, где в качестве носителя для передачи используют сигнал или несущую волну. Запоминающая среда может представлять собой любую доступную среду, к которой может осуществляться доступ одним или несколькими компьютерами, либо одним или несколькими процессорами для извлечения команд, кода и/или структур данных для реализации процедур, описанных в этом изобретении. Компьютерный программный продукт может включать в себя считываемую компьютером среду (носитель).
В качестве примера, но не как ограничение, указанный считываемый компьютером носитель может содержать ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое оптическое дисковое запоминающее устройство, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память, либо любой другой носитель, который можно использовать для запоминания требуемого программного кода в виде инструкций или структур данных, и к которому есть возможность доступа со стороны компьютера. Также любое соединение будет правильно назвать считываемым компьютером носителем. Например, если инструкции передаются с Web-сайта, сервера или другого отдаленного источника с использование коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая связь, то тогда в определение носителя входит инфракрасная, радио- и микроволновая связь. Однако следует понимать, что считываемый компьютером носитель и среда для хранения данных не включает в себя соединения, несущие волны, сигналы или иные временные носители, а наоборот относится к материальной запоминающей среде для долговременного хранения. Используемый здесь термин disk (диск) и disc (диск) распространяется на компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск blu-ray, причем термин «disk» обычно используется для дисков, воспроизводящих данные магнитным образом, в то время как термин «disc» относится к дискам, воспроизводящим данные оптическим путем с помощью лазеров. Комбинации вышеупомянутых средств также следует включить в объем считываемой компьютером среды.
Инструкции могут выполняться одним или несколькими процессорами, такими как один или несколько цифровых процессоров сигналов (GSP), микропроцессоры общего назначения, прикладные специализированные интегральные схемы (ASIC), логические матрицы, программируемые пользователем (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, используемый здесь термин «процессор» может относиться к любой из вышеупомянутых структур или любой иной структуре, подходящей для реализации раскрытых здесь процедур. Вдобавок, в некоторых аспектах описанные здесь функциональные возможности могут быть обеспечены в рамках специализированных аппаратных или программных модулей, сконфигурированных для кодирования и декодирования или включенных в состав объединенного кодека. Также эти процедуры могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Процедуры этого изобретения могут быть реализованы самыми разными устройствами и аппаратами, включая беспроводную микротелефонную трубку, интегральную схему (IC), набор интегральных схем (например, набор микросхем). Различные компоненты, модули или блоки описаны в этом изобретении, чтобы раскрыть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых здесь процедур, причем их реализация не требует использования других аппаратных блоков. Вернее, как было здесь сказано, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены набором взаимодействующих аппаратных блоков, включая один или несколько вышеописанных процессоров в сочетании с подходящими программными и/или программно-аппаратными средствами.
Здесь были описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.
Изобретение относится к средствам кодирования и декодирования видео. Техническим результатом является повышение эффективности сигнализации режима внутреннего предсказания используемого для кодирования блока данных посредством обеспечения относительной экономии бит для кодированного битового потока. Способ содержит определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока, выполнение процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания, определение индекса режима внутреннего предсказания, выбор режима внутреннего предсказания. 16 н. и 34 з.п. ф-лы, 13 ил. 7 табл.
1. Способ декодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнение процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определение индекса режима внутреннего предсказания, при этом определение индекса режима внутреннего предсказания содержит сравнение модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбор, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом, когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше или равен индексу режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на два больше, чем модифицированный индекс режима внутреннего предсказания; и
декодирование текущего блока с использованием выбранного режима внутреннего предсказания.
2. Способ по п. 1, дополнительно содержащий:
определение контекста для текущего блока по меньшей мере частично на основе режимов внутреннего предсказания для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
3. Способ по п. 1, дополнительно содержащий:
определение третьего наиболее вероятного режима внутреннего предсказания для текущего блока.
4. Способ по п. 1, в котором, когда модифицированный индекс режима внутреннего предсказания меньше, чем индекс режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше, чем индекс режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, равный модифицированному индексу режима внутреннего предсказания.
5. Способ по п. 1, в котором, когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания.
6. Устройство для декодирования видеоданных, причем устройство содержит видеодекодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определения индекса режима внутреннего предсказания посредством сравнения модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбора, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует модифицированному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше или равен индексу режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеодекодер сконфигурирован для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на два больше, чем модифицированный индекс режима внутреннего предсказания; и
декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
7. Устройство по п. 6, в котором видеодекодер дополнительно сконфигурирован для определения контекста для текущего блока по меньшей мере частично на основе режимов внутреннего предсказания для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
8. Устройство по п. 6, в котором видеодекодер дополнительно сконфигурирован для определения контекста для текущего блока по меньшей мере частично на основе размера текущего блока.
9. Устройство по п. 6, в котором, когда модифицированный индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеодекодер сконфигурирован для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, равный модифицированному индексу режима внутреннего предсказания.
10. Устройство по п. 6, в котором, когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеодекодер сконфигурирован с возможностью выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания.
11. Устройство по п. 6, в котором устройство содержит по меньшей мере одно из:
интегральной схемы;
микропроцессора; и
устройства беспроводной связи, которое включает в себя видеодекодер.
12. Способ кодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирование текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определение, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определение модифицированного индекса режима внутреннего предсказания, при этом определение модифицированного индекса режима внутреннего предсказания содержит сравнение определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение модифицированного индекса режима внутреннего предсказания содержит определение одного из модифицированных индексов режимов внутреннего предсказания, который на два меньше, чем индекс режима внутреннего предсказания;
кодирование кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
13. Способ по п. 12, дополнительно содержащий:
определение контекста кодирования для текущего блока по меньшей мере частично на основе режимов для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
14. Способ по п. 12, дополнительно содержащий:
определение третьего наиболее вероятного режима внутреннего предсказания для текущего блока.
15. Способ по п. 12, в котором, когда индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение модифицированного индекса режима внутреннего предсказания содержит определение одного из модифицированных индексов режимов внутреннего предсказания, который равен индексу режима внутреннего предсказания.
16. Способ по п. 12, в котором, когда индекс режима внутреннего предсказания больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение одного из модифицированных индексов режимов внутреннего предсказания содержит определение модифицированного индекса режима внутреннего предсказания, который на единицу меньше, чем индекс режима внутреннего предсказания.
17. Устройство для кодирования видеоданных, причем устройство содержит видеокодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирования текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определения индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определения, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, модифицированного индекса режима внутреннего предсказания посредством сравнения определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, и при этом видеокодер определяет модифицированный индекс режима внутреннего предсказания посредством определения одного из модифицированных индексов режимов внутреннего предсказания, который на два меньше, чем режим внутреннего предсказания; и
кодирования кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
18. Устройство по п. 17, в котором видеокодер дополнительно сконфигурирован для определения контекста кодирования для текущего блока по меньшей мере частично на основе режимов для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
19. Устройство по п. 17, в котором видеокодер дополнительно сконфигурирован для определения третьего наиболее вероятного режима внутреннего предсказания для текущего блока.
20. Устройство по п. 17, в котором, когда индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеокодер дополнительно сконфигурирован для определения модифицированного индекса режима внутреннего предсказания посредством определения модифицированного режима внутреннего предсказания, который равен индексу режима внутреннего предсказания.
21. Устройство по п. 17, в котором, когда индекс режима внутреннего предсказания больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеокодер дополнительно сконфигурирован для определения модифицированного индекса режима внутреннего предсказания посредством определения модифицированного индекса режима внутреннего предсказания, который на единицу меньше, чем индекс режима внутреннего предсказания.
22. Устройство по п. 17, в котором устройство содержит по меньшей мере одно из:
интегральной схемы;
микропроцессора; и
устройства беспроводной связи, которое включает в себя видеокодер.
23. Устройство для декодирования видеоданных, причем устройство содержит:
средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
средство для выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
средство для определения индекса режима внутреннего предсказания, при этом средство для определения индекса режима внутреннего предсказания содержит средство для сравнения модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
средство для выбора, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше или равен индексу режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, и при этом средство для выбора режима внутреннего предсказания содержит средство для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на два больше, чем модифицированный индекс режима внутреннего предсказания; и
средство для декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
24. Устройство по п. 23, дополнительно содержащее:
средство для определения контекста для текущего блока по меньшей мере частично на основе режимов внутреннего предсказания для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
25. Устройство по п. 23, дополнительно содержащее:
средство для определения третьего наиболее вероятного режима внутреннего предсказания для текущего блока.
26. Устройство для кодирования видеоданных, причем устройство содержит:
средство для определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
средство для кодирования текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
средство для определения, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания; и
средство для определения модифицированного индекса режима внутреннего предсказания посредством сравнения определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, средство для определения модифицированного индекса режима внутреннего предсказания содержит средство для определения одного из модифицированных индексов режимов внутреннего предсказания, который на два меньше, чем индекс режима внутреннего предсказания; и
средство для кодирования кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания, посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
27. Устройство по п. 26, дополнительно содержащее:
средство для определения контекста кодирования для текущего блока по меньшей мере частично на основе режимов для по меньшей мере одного из соседнего блока слева относительно текущего блока и соседнего блока сверху относительно текущего блока.
28. Устройство по п. 26, дополнительно содержащее:
средство для определения третьего наиболее вероятного режима внутреннего предсказания для текущего блока.
29. Считываемый компьютером носитель, имеющий сохраненные в себе инструкции, которые при исполнении побуждают один или более процессоров:
определять первый наиболее вероятный режим внутреннего предсказания и второй наиболее вероятный режим внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнять процесс контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определять индекс режима внутреннего предсказания посредством сравнения модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбирать, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режим внутреннего предсказания, отличный от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше или равен индексу режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, и при этом один или более процессоров выбирают режим внутреннего предсказания посредством выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на два больше, чем модифицированный индекс режима внутреннего предсказания; и
декодировать текущий блок с использованием выбранного режима внутреннего предсказания.
30. Считываемый компьютером носитель, имеющий сохраненные в себе инструкции, которые при исполнении побуждают один или более процессоров:
определять первый наиболее вероятный режим внутреннего предсказания и второй наиболее вероятный режим внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодировать текущий блок с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определять, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекс режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определять модифицированный индекс режима внутреннего предсказания посредством сравнения определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и больше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение одним или более процессорами модифицированного индекса режима внутреннего предсказания содержит определение одного из модифицированных индексов режимов внутреннего предсказания, который на два меньше, чем индекс режима внутреннего предсказания;
кодировать кодовое слово, соответствующее модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
31. Способ декодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнение процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определение индекса режима внутреннего предсказания, при этом определение индекса режима внутреннего предсказания содержит сравнение модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбор, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, равный модифицированному индексу режима внутреннего предсказания; и
декодирование текущего блока с использованием выбранного режима внутреннего предсказания.
32. Способ по п. 31, в котором, когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания.
33. Устройство для декодирования видеоданных, причем устройство содержит видеодекодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определения индекса режима внутреннего предсказания посредством сравнения модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбора, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует модифицированному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеодекодер сконфигурирован для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, равный модифицированному индексу режима внутреннего предсказания; и
декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
34. Устройство по п. 33, в котором, когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, для выбора режима внутреннего предсказания, декодер сконфигурирован для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания.
35. Способ декодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнение процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определение индекса режима внутреннего предсказания, при этом определение индекса режима внутреннего предсказания содержит сравнение модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбор, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, выбор режима внутреннего предсказания содержит выбор режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания; и
декодирование текущего блока с использованием выбранного режима внутреннего предсказания.
36. Устройство для декодирования видеоданных, причем устройство содержит видеодекодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста для текущего блока;
выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС) для определения принятого кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания;
определения индекса режима внутреннего предсказания, при этом определение индекса режима внутреннего предсказания содержит сравнение модифицированного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания;
выбора, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания, для использования для декодирования текущего блока, при этом выбранный режим внутреннего предсказания соответствует определенному индексу режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, при этом когда модифицированный индекс режима внутреннего предсказания плюс единица больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, видеодекодер сконфигурирован для выбора режима внутреннего предсказания, имеющего индекс режима внутреннего предсказания, который на единицу больше, чем модифицированный индекс режима внутреннего предсказания; и
декодирования текущего блока с использованием выбранного режима внутреннего предсказания.
37. Способ кодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирование текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определение, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определение модифицированного индекса режима внутреннего предсказания, при этом определение модифицированного индекса режима внутреннего предсказания содержит сравнение определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение модифицированного индекса режима внутреннего предсказания содержит определение одного из модифицированных индексов режимов внутреннего предсказания, который равен индексу режима внутреннего предсказания;
кодирование кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
38. Устройство для кодирования видеоданных, причем устройство содержит видеокодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирования текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определения, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определения модифицированного индекса режима внутреннего предсказания посредством сравнения определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания меньше индекса режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, для определения модифицированного индекса режима внутреннего предсказания, кодер дополнительно сконфигурирован для определения одного из модифицированных индексов режимов внутреннего предсказания, который равен индексу режима внутреннего предсказания; и кодирования кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
39. Способ кодирования видеоданных, причем способ содержит:
определение первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирование текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определение, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определение модифицированного индекса режима внутреннего предсказания, при этом определение модифицированного индекса режима внутреннего предсказания содержит сравнение определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, определение одного из модифицированных индексов режимов внутреннего предсказания содержит определение модифицированного индекса режима внутреннего предсказания, который на единицу меньше индекса режима внутреннего предсказания; и
кодирование кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
40. Устройство для кодирования видеоданных, причем устройство содержит видеокодер, сконфигурированный для:
определения первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания для текущего блока видеоданных на основе контекста кодирования для текущего блока;
кодирования текущего блока с использованием режима внутреннего предсказания, отличного от первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания;
определения, на основе отображения индексов режимов внутреннего предсказания на режимы внутреннего предсказания, индекса режима внутреннего предсказания, который соответствует режиму внутреннего предсказания;
определения модифицированного индекса режима внутреннего предсказания, при этом определение модифицированного индекса режима внутреннего предсказания содержит сравнение определенного индекса режима внутреннего предсказания с индексом режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и индексом режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, при этом каждый из первого наиболее вероятного режима внутреннего предсказания и второго наиболее вероятного режима внутреннего предсказания соответствует соответствующему индексу режима внутреннего предсказания, и при этом когда индекс режима внутреннего предсказания больше или равен индексу режима внутреннего предсказания для первого наиболее вероятного режима внутреннего предсказания и меньше индекса режима внутреннего предсказания для второго наиболее вероятного режима внутреннего предсказания, для определения одного из модифицированных индексов режимов внутреннего предсказания, видеокодер дополнительно сконфигурирован для определения модифицированного индекса режима внутреннего предсказания, который на единицу меньше, чем индекс режима внутреннего предсказания; и
кодирования кодового слова, соответствующего модифицированному индексу режима внутреннего предсказания посредством выполнения процесса контекстно-адаптивного двоичного арифметического кодирования (САВАС).
YU-WEN et al., “A TECHNICAL DESCRIPTION OF MEDIATEK’S PROPOSAL TO THE JCT-VC CFP”, JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG16 WP3 AND ISO/IEC JTC1/SC29/WG11 1ST MEETING: DRESDEN, DE, 23.04.2010 | |||
US 20100097250 A1, 22.04.2010 | |||
US 7535387 B1, 19.05.2009 | |||
US 20090175332 A1, 09.07.2009 | |||
WO 2009094349 A1, 30.07.2009 | |||
СПОСОБЫ И СИСТЕМЫ ДЛЯ КОДИРОВАНИЯ ЗНАЧИМЫХ КОЭФФИЦИЕНТОВ ПРИ ВИДЕОСЖАТИИ | 2007 |
|
RU2406256C2 |
УСТРОЙСТВО ВИДЕОКОДИРОВАНИЯ, СПОСОБ ВИДЕОКОДИРОВАНИЯ, ПРОГРАММА ВИДЕОКОДИРОВАНИЯ, УСТРОЙСТВО ВИДЕОДЕКОДИРОВАНИЯ, СПОСОБ ВИДЕОДЕКОДИРОВАНИЯ И ПРОГРАММА ВИДЕОДЕКОДИРОВАНИЯ | 2006 |
|
RU2391794C2 |
Авторы
Даты
2015-06-27—Публикация
2012-01-05—Подача