Данная заявка притязает на приоритет предварительной заявки США № 60/979734, поданной 12 октября 2007 г., которая в полном объеме включена сюда в порядке ссылки.
Область техники, к которой относится изобретение
Данное раскрытие относится к кодированию цифрового видеосигнала и, в частности, к кодированию информации заголовков блоков видеопоследовательности.
Предшествующий уровень техники
Функции цифрового видео могут быть внедрены в широкий круг устройств, в том числе цифровые телевизоры, системы прямого цифрового вещания, устройства беспроводной связи, системы беспроводного вещания, карманные персональные компьютеры (КПК, PDA), переносные или стационарные компьютеры, цифровые камеры, устройства цифровой видеозаписи, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны и пр. В устройствах цифрового видео реализованы методы сжатия видеосигнала, например MPEG-2, MPEG-4 или H.264/MPEG-4, часть 10, под общим названием Advanced Video Coding (AVC), для более эффективных передачи и приема цифрового видеосигнала. Методы сжатия видеосигнала предусматривают пространственное и временное прогнозирование для сокращения или устранения избыточности, свойственной видеопоследовательностям.
При кодировании видеосигнала сжатие видеосигнала обычно включает в себя пространственное прогнозирование и/или оценку движения и компенсацию движения для генерации прогностического видеоблока. Внутреннее (Intra) кодирование опирается на пространственное прогнозирование для сокращения или устранения пространственной избыточности среди видеоблоков в заданном видеокадре. Пространственное прогнозирование можно осуществлять для ряда разных типов блока с внутренним кодированием, например типов блока Intra 16×16, типов блока Intra 8×8 и типов блока Intra 4×4 в случае AVC H.264/MPEG-4 часть 10. Внешнее (Inter) кодирование опирается на временное прогнозирование для сокращения или устранения временной избыточности среди видеоблоков последовательных видеокадров видеопоследовательности. Временное прогнозирование также можно осуществлять для ряда разных типов блока с внешним кодированием, например Inter 16×16, Inter 16×8, Inter 8×16, Inter 8×8, Inter 8×4, Inter 4×8 и Inter 4×4 в случае AVC H.264/MPEG-4 часть 10.
После пространственного или временного прогнозирования блок остаточной информации генерируется путем вычитания прогностического видеоблока из исходного видеоблока, подлежащего кодированию. Таким образом, остаточная информация выражает различия между прогностическим видеоблоком и исходным блоком. Видеокодер кодирует остаточную информацию блока совместно с информацией заголовка блока. Информация заголовка блока может указывать тип блока текущего видеоблока, а также дополнительную информацию, связанную с текущим видеоблоком, например режим прогнозирования, шаблон кодированных блоков (CBP) яркости, CBP цветности, один или несколько векторов движения и пр. Обычно видеокодер кодирует остаточную информацию и информацию заголовка с использованием арифметических кодов, кодов переменной длины (VLC), кодов фиксированной длины или их комбинации. Примеры включают в себя контекстно-адаптивное кодирование на основе двоичной арифметики (CABAC) и контекстно-адаптивное кодирование с переменной длиной серии (CAVLC). Видеодекодер осуществляет обратные операции для реконструкции кодированного видеосигнала с использованием информации заголовка и остаточной информации для каждого из блоков.
Сущность изобретения
В этом раскрытии описаны методики адаптивного кодирования информации заголовка видеоблока на основании одного или нескольких ранее кодированных видеоблоков. В частности, видеокодер может адаптивно выбирать таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока на основании синтаксических элементов одного или нескольких ранее кодированных блоков кодированной единицы, например кадра или секции. В одном аспекте видеокодер может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего блока на основании типов блока одного или нескольких ранее кодированных видеоблоков, соседствующих с текущим видеоблоком, т.е. соседних видеоблоков. Например, видеокодер может адаптивно выбирать таблицу кодирования, которая связывает тип блока Intra 16×16 с более коротким кодовым словом, чем типы блока Intra 4×4 или Intra 8×8, когда два или более соседних блоков имеют типы блока Intra 16×16. Это позволяет видеокодеру более эффективно кодировать видеопоследовательности с более высоким разрешением, например, видеопоследовательности высокой четкости (HD).
Видеокодер также может прогнозировать один или несколько других синтаксических элементов заголовка текущего блока на основании, по меньшей мере, одного ранее кодированного блока. Если прогнозирование увенчалось успехом, т.е. значения одного или нескольких прогнозируемых синтаксических элементов заголовка совпадают со значениями фактических синтаксических элементов заголовка текущего блока, видеокодер может кодировать флаг (например, 1-битовый флаг), который указывает успех прогнозирования, вместо того чтобы по отдельности кодировать значения каждого из синтаксических элементов или связывать синтаксические элементы и кодировать их более длинным кодовым словом. Видеодекодер также может прогнозировать значения одного или нескольких синтаксических элементов заголовка таким же образом, как видеокодер, и выбирать значения прогнозируемых синтаксических элементов заголовка для блока, когда кодированный флаг указывает успех прогнозирования. Такая методика позволяет дополнительно сокращать количество битов, используемых для кодирования видеоблока последовательности видеокадров.
В одном аспекте способ содержит этапы, на которых выбирают таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы и кодируют синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В другом аспекте устройство кодирования содержит модуль кодирования, который включает в себя модуль выбора, который выбирает таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы, и модуль кодирования, который кодирует синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В другом аспекте компьютерно-считываемый носитель содержит инструкции, предписывающие процессору выбирать таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы и кодировать синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В еще одном аспекте устройство кодирования содержит средство для выбора таблицы кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы и средство для кодирования синтаксического элемента текущего видеоблока с использованием выбранной таблицы кодирования.
В еще одном аспекте способ декодирования видеоданных содержит этапы, на которых выбирают таблицу кодирования для использования при декодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы и декодируют синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В еще одном аспекте устройство декодирования содержит модуль выбора, который выбирает таблицу кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы, и модуль декодирования, который декодирует синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В еще одном аспекте компьютерно-считываемый носитель содержит инструкции, предписывающие процессору выбирать таблицу кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы и декодировать синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
В еще одном аспекте устройство декодирования содержит средство для выбора таблицы кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы и средство для декодирования синтаксического элемента текущего видеоблока с использованием выбранной таблицы кодирования.
Методики, отвечающие данному раскрытию, можно реализовать в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. В случае программной реализации программное обеспечение может исполняться в процессоре, который может представлять собой один или несколько процессоров, например микропроцессор, специализированную интегральную схему (ASIC), вентильную матрицу, программируемую пользователем (FPGA), или цифровой сигнальный процессор (DSP), или другую эквивалентную интегральную или дискретную логическую схему. Программное обеспечение, содержащее инструкции для выполнения методик, может первоначально храниться на компьютерно-считываемом носителе и загружаться и исполняться процессором.
Соответственно, данное раскрытие также предусматривает компьютерно-считываемые носители, содержащие инструкции, предписывающие процессору осуществлять любую из разнообразных методик, отвечающих данному раскрытию. В ряде случаев компьютерно-считываемый носитель может составлять часть компьютерного программного продукта, который может продаваться производителям и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя компьютерно-считываемый носитель и в ряде случаев также может включать в себя упаковочные материалы.
Один или несколько аспектов раскрытия подробно представлены в прилагаемых чертежах и в нижеприведенном описании. Другие признаки, задачи и преимущества методик, отвечающих данному раскрытию, явствуют из описания чертежей и из формулы изобретения.
Краткое описание чертежей
Фиг. 1 - блок-схема, демонстрирующая систему кодирования и декодирования видеосигнала.
Фиг. 2 - блок-схема, демонстрирующая пример видеокодера, который осуществляет методы кодирования согласно этому раскрытию.
Фиг. 3 - блок-схема, более подробно демонстрирующая иллюстративный модуль энтропийного кодирования видеокодера, показанного на фиг. 2.
Фиг. 4 - блок-схема, демонстрирующая пример видеодекодера, который декодирует видеоданные согласно методам кодирования, описанным в этом раскрытии.
Фиг. 5 - блок-схема, более подробно демонстрирующая иллюстративный модуль декодирования.
Фиг. 6 - логическая блок-схема, демонстрирующая принцип работы модуля кодирования, кодирующего информацию заголовка для видеоблока.
Фиг. 7 - логическая блок-схема, демонстрирующая принцип работы модуля декодирования, декодирующего кодированный видеоблок видеопоследовательности.
Подробное описание
На фиг. 1 показана блок-схема, демонстрирующая систему 10 кодирования и декодирования видеосигнала, которая осуществляет методы кодирования, описанные в этом раскрытии. Согласно фиг. 1 система 10 включает в себя устройство-источник 12, которое передает кодированные видеоданные на приемное устройство 14 по каналу связи 16. Канал связи 16 может содержать любую беспроводную или проводную среду связи, например спектр радиочастот (РЧ) или одну или несколько физических линий связи, или любую комбинацию беспроводных и проводных сред. Канал связи 16 может образовывать часть сети на основе коммутации пакетов, например локальной сети, региональной сети или глобальной сети, например интернета. Канал связи 16 обычно представляет любую подходящую среду связи или совокупность разных сред связи для передачи кодированных видеоданных от устройства-источника 12 на приемное устройство 14.
Устройство-источник 12 генерирует кодированные видеоданные для передачи на приемное устройство 14. Устройство-источник 12 может включать в себя источник видеосигнала 18, видеокодер 20 и передатчик 22. Источник видеосигнала 18 устройства-источника 12 может включать в себя устройство видеосъемки, например видеокамеру, видеоархив, содержащий ранее отснятые видеоматериалы, или источник видеосигнала от поставщика видеоконтента. В порядке дополнительной альтернативы источник видеосигнала 18 может генерировать данные компьютерной графики в качестве исходного видеосигнала или комбинацию живого видео и компьютерно-генерируемого видео. В ряде случаев, если источником видеосигнала 18 является видеокамера, устройство-источник 12 может образовывать так называемый камерофон или видеотелефон. В любом случае отснятое, предварительно отснятое или компьютерно-генерируемое видео можно кодировать с помощью видеокодера 20 для передачи от устройства-источника 12 на приемное устройство 14 через передатчик 22 и канал связи 16.
Видеокодер 20 принимает видеоданные от источника видеосигнала 18. Видеоданные, принятые от источника видеосигнала 18, могут представлять собой последовательность видеокадров. Некоторые кадры могут делиться на секции. Видеокодер 20 работает с блоками пикселей (именуемыми здесь видеоблоками) в отдельных видеокадрах для кодирования видеоданных. Кодированная единица, например кадр или секция, может содержать множественные блоки. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеоблок, часто именуемый макроблоком (MB), может делиться на подблоки. В порядке примера International Telecommunication Union Standardization Sector (ITU-T) H.264/MPEG-4, Part 10, Advanced Video Coding (AVC) (далее стандарт “AVC H.264/MPEG-4 часть 10”) поддерживает внутреннее прогнозирование при различных размерах блоков, например 16×16, 8×8 или 4×4 для компонентов яркости и 8×8 для компонентов цветности, а также внешнее прогнозирование при различных размерах блоков, например 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов яркости и соответствующих масштабированных размерах для компонентов цветности. В целом MB и различные подблоки можно рассматривать как видеоблоки. Таким образом, MB можно рассматривать как видеоблоки, и в случае разбиения или подразбиения можно считать, что сами MB задают наборы видеоблоков.
Для каждого из видеоблоков видеокодер 20 выбирает тип блока для блока. Используемый здесь термин “тип блока” указывает, прогнозируется ли блок с использованием внешнего прогнозирования или внутреннего прогнозирования, а также размер разбиения блока. Например, стандарт AVC H.264/MPEG-4 часть 10 поддерживает ряд внешне- и внутренне-прогностических типов блока, включая Inter 16×16, Inter 16×8, Inter 8×16, Inter 8×8, Inter 8×4, Inter 4×8, Inter 4×4, Intra 16×16, Intra 8×8 и Intra 4×4. Как описано подробно ниже, видеокодер 20 может выбирать один из типов блока для каждого из видеоблоков на основании различных факторов.
Для внутреннего кодирования видеокодер 20 может выбирать один из внутренне-прогностических типов блока на основании изменения в текущем блоке. Когда изменение в текущем видеоблоке велико, например, в силу высоких уровней детализации или текстуры, видеокодер 20 может выбирать внутренне-прогностический тип блока с меньшим разбиением на блоки, например режим кодирования Intra 4×4 или Intra 8×8. Однако, когда изменение в текущем видеоблоке мало, видеокодер 20 может выбирать внутренне-прогностический тип блока с большим разбиением на блоки, например тип блока Intra 16×16.
Для внутренне-кодированного кадра видеопоследовательности с меньшим разрешением видео, например видеопоследовательности общего формата изображения (CIF) или четвертного-CIF (QCIF), видеокодер 20 обычно прогнозирует больше видеоблоков с использованием типов блока Intra 4×4 или Intra 8×8. Во внутренне-кодированном кадре с меньшим разрешением блок 16×16 может включать в себя большее изменение, чем блок 4×4 или 8×8. Таким образом, блок 4×4 или 8×8 в кадре может быть глаже, чем блок 16×16 в кадре. Например, блок 4×4 видеопоследовательности может включать в себя гладкую часть сцены (например, лоб человека), а блок 16x16 может включать в себя больше текстуры (например, лоб, немного волос и часть глаза человека). Однако для внутренне-кодированного кадра видеопоследовательности с высоким разрешением, например видеопоследовательности высокой четкости (HD), видеокодер 20 может прогнозировать больше блоков с использованием типа блока Intra 16×16, чем с использованием типов блока Intra 4×4 или Intra 8×8. Например, блок 4×4 и блок 16×16 могут включать в себя только лоб человека вследствие высокого разрешения кадра и, таким образом, могут иметь сходную гладкость.
После внутреннего или внешнего прогнозирования видеоблоков видеокодер 20 может осуществлять ряд других операций на видеоблоках. Как будет более подробно описано со ссылкой на фиг. 2, эти дополнительные операции могут включать в себя операции преобразования (например, целочисленное преобразование 4×4 или 8×8, используемое в AVC H.264/MPEG-4 часть 10, или дискретное косинусное преобразование ДКП), операции квантования и операции энтропийного кодирования. Затем видеокодер 20 кодирует каждый из блоков последовательности видеокадров и выводит кодированный битовый поток. Для каждого блока, например, видеокодер 20 может кодировать информацию заголовка для блока и остаточную информацию для блока. Информация заголовка каждого блока может включать в себя ряд синтаксических элементов, которые указывают конкретные характеристики блока, например выбранный тип блока, режим прогнозирования, шаблон кодированных блоков (яркости и/или CBP цветности), вектор движения и пр. Остаточная информация каждого блока выражает различия между входным видеоблоком и одним или несколькими прогностическими блоками.
Выполняя энтропийное кодирование, традиционные видеокодеры могут связывать ряд синтаксических элементов заголовка друг с другом и кодировать связку как единое кодовое слово. Для блоков, внутренне прогнозируемых с использованием внутреннего прогнозирования 16x16 согласно стандарту AVC H.264/MPEG-4 часть 10, например, традиционный видеокодер связывает друг с другом синтаксический элемент типа блока, синтаксический элемент режима прогнозирования (например, DC, горизонтального, вертикального и плоскостного) и синтаксические элементы шаблона кодированных блоков для яркости и цветности (например, которые указывают, имеют ли квантованные коэффициенты преобразования для яркости и цветности ненулевые значения) и кодирует связанные синтаксические элементы как единое кодовое слово с использованием кодирования с переменной длиной серии (VLC). Согласно VLC каждому возможному синтаксическому элементу, подлежащему кодированию, или комбинации синтаксических элементов, подлежащих кодированию, назначается кодовое слово. Кодовые слова в VLC имеют разные длины, причем самое короткое кодовое слово присваивается значению данного синтаксического элемента, вероятность появления которого наиболее высока. Традиционные видеокодеры, работающие согласно стандарту AVC H.264/MPEG-4 часть 10, присваивают более длинные кодовые слова типу блока Intra 16×16, а не типам блока Intra 4×4 и Intra 8×8 на основании предположения о том, что типы блока Intra 4×4 и Intra 8×8 выбираются чаще, чем тип блока Intra 16×16. Такое предположение может иметь силу для видеопоследовательностей с малым разрешением видео, например видеопоследовательностей CIF или QCIF. Однако для видеопоследовательностей с высоким разрешением, например видеопоследовательностей HD, тип блока Intra 16×16 может выбираться чаще, чем типы блока Intra 4×4 или Intra 8×8. Это может быть особенно справедливо, когда видеопоследовательность включает в себя большие гладкие области, и квантование осуществляется с параметром квантования (QP) от среднего до высокого. В таких видеопоследовательностях кодирование типов блока Intra 16×16 согласно традиционному стандарту AVC H.264/MPEG-4 часть 10 может быть очень неэффективным. В частности, для приложений HD более длинные кодовые слова, используемые для типов блока Intra 16×16, могут передаваться гораздо чаще, чем в приложениях, не связанных с HD, приводя к избыточному расходованию полосы.
Для более эффективного кодирования видеопотоков, которые включают в себя большое количество видеоблоков, прогнозируемых с использованием типа блока Intra 16×16, видеокодер 20 осуществляет методы адаптивного кодирования информации заголовка, отвечающие данному раскрытию. Видеокодер 20 может адаптивно выбирать таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных блоков. В одном аспекте видеокодер 20 может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего видеоблока на основании одного или нескольких видеоблоков, соседствующих с текущим видеоблоком, именуемых здесь “соседними видеоблоками”. Видеокодер 20 может анализировать любое количество соседних блоков в любом положении при выборе таблицы кодирования (также именуемой кодовой книгой) для кодирования типа блока. Однако в порядке иллюстрации видеокодер 20, в некоторых аспектах, адаптивно выбирающий таблицу кодирования для кодирования типа блока на основании соседнего блока, расположенного непосредственно над текущим блоком (“верхним соседним блоком”), и соседнего блока непосредственно влево от текущего блока (“левого соседнего блока”).
Для внутренне-прогностического блока, например, видеокодер 20 может выбирать таблицу кодирования, которая связывает типы блока Intra 4×4 или Intra 8×8 с более коротким кодовым словом, чем тип блока Intra 16×16, когда верхний соседний блок и левый соседний блок не имеют типов блока Intra 16×16. Согласно стандарту AVC H.264/MPEG-4 часть 10 тип блока Intra 16×16 обычно выражается кодовым словом “10”, тогда как типы блока Intra 4×4 и Intra 8×8 выражаются кодовым словом “0”, в каковом случае дополнительный синтаксический элемент transform_size_8x8_flag кодируется с использованием 1 бита для указания того, является ли тип блока типом Intra 4×4 или Intra 8x8. Однако видеокодер 20 может выбирать таблицу кодирования, которая связывает тип блока Intra 16×16 с более коротким кодовым словом, чем типы блока Intra 4×4 или Intra 8×8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16×16. В этом случае модуль энтропийного кодирования, связанный с видеокодером 20, может кодировать тип блока для типа блока Intra 16×16 в заголовке блока с использованием более короткого кодового слова. Видеокодер 20 может, например, выбирать таблицу кодирования, которая представляет тип блока Intra 16×16 кодовым словом “0” и представляет типы блока Intra 4×4 и Intra 8×8 кодовым словом “10”, когда верхний и левый соседние блоки имеют типы блока Intra 16×16. Таким образом, эвристическое правило работы видеокодера 20 состоит в том, что, если верхний и левый соседние блоки имеют типы блока Intra 16×16, вероятность того, что текущий видеоблок является блоком типа Intra 16×16, возрастает. Таким образом, видеокодер 20 адаптивно выбирает таблицы кодирования, которые более эффективно кодируют типы блока, когда тип блока Intra 16×16 чаще используется. Несмотря на то что они описаны применительно к выбору таблиц кодирования для кодирования внутренне-прогностических типов блока, методики, отвечающие данному раскрытию, также можно применять к адаптивному выбору таблицы кодирования для внешне-прогностических типов блока на основании типов блока ранее кодированных видеоблоков. Кроме того, методики, отвечающие данному раскрытию, можно дополнительно применять к адаптивному выбору таблицы кодирования для кодирования других синтаксических элементов текущего видеоблока, например режима прогнозирования, CBP яркости, CBP цветности, разбиения на блоки, вектора движения и пр.
Видеокодер 20 может дополнительно пытаться прогнозировать один или несколько других синтаксических элементов заголовка текущего блока на основании, по меньшей мере, одного ранее кодированного блока. Например, видеокодер 20 может пытаться прогнозировать синтаксический элемент режима прогнозирования и/или синтаксические элементы CBP яркости/цветности текущего блока из предыдущих блоков, например верхнего и левого соседних блоков. Например, видеокодер 20 может пытаться прогнозировать режим прогнозирования, CBP яркости и CBP цветности и, если прогнозирование увенчивается успехом, кодировать флаг, который указывает успех прогнозирования. Если прогнозирование режима прогнозирования, CBP яркости и CBP цветности не увенчалось успехом, видеокодер 20 может кодировать каждый из синтаксических элементов по отдельности, как описано подробно ниже. Альтернативно видеокодер 20 может пытаться прогнозировать режим прогнозирования текущего блока из предыдущих блоков. Если прогнозирование увенчалось успехом, видеокодер 20 кодирует флаг (например, 1-битовый флаг) для указания успешного прогнозирования режима прогнозирования вместо 2-битового кодового слова фиксированной длины для режима прогнозирования, таким образом, экономя, по меньшей мере, один бит. Видеокодер 20 по отдельности кодирует CBP яркости и CBP цветности. Если прогнозирование режима прогнозирования не увенчалось успехом, каждый из синтаксических элементов кодируется по отдельности.
Устройство-источник 12 передает кодированные видеоданные на приемное устройство 14 через передатчик 22. Приемное устройство 14 может включать в себя приемник 24, видеодекодер 26 и устройство отображения 28. Приемник 24 принимает кодированный видеопоток от устройства-источника 12 по каналу 16. Видеодекодер 26 декодирует кодированный видеопоток для получения информации заголовка и остаточной информации кодированных видеоблоков кодированной единицы. Видеодекодер 26 адаптивно выбирает таблицу кодирования (т.е. кодовую книгу) для использования при декодировании типа блока текущего видеоблока на основании типов блока одного или нескольких ранее декодированных блоков. Например, видеодекодер 26 может адаптивно выбирать таблицу кодирования, которая связывает тип блока Intra 16×16 с более коротким кодовым словом, чем типы блока Intra 4×4 или Intra 8×8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16×16.
Видеодекодер 26 может дополнительно осуществлять прогнозирование синтаксического элемента режима прогнозирования и/или синтаксических элементов CBP яркости/цветности текущего блока таким же образом, как видеокодер 20. Когда кодированный битовый поток включает в себя флаг, указывающий, что прогнозирование режима прогнозирования и CBP яркости/цветности увенчалось успехом, видеодекодер 26 использует прогнозируемый режим прогнозирования и CBP яркости/цветности в качестве синтаксических элементов для текущего блока. Когда флаг указывает неудачу прогнозирования режима прогнозирования и CBP яркости/цветности, видеодекодер 26 декодирует режим прогнозирования и CBP яркости/цветности из кодированного битового потока. Альтернативно видеодекодер 26 может пытаться прогнозировать режим прогнозирования текущего блока из предыдущих блоков, если видеокодер 20 осуществляет такую функцию.
Видеодекодер 26 реконструирует каждый из блоков секции с использованием декодированной информации заголовка и декодированной остаточной информации. Видеодекодер 26 может использовать, по меньшей мере, часть информации заголовка для генерации прогностического блока для каждого из блоков и объединения прогностического блока каждого из блоков с соответствующей остаточной информацией для реконструкции каждого из блоков. Приемное устройство 14 может отображать реконструированные видеоблоки пользователю через устройство отображения 28. Устройство отображения 28 может содержать любые устройства отображения, например электронно-лучевую трубку (ЭЛТ), жидкокристаллический дисплей (LCD), плазменный дисплей, светодиодный (СИД) дисплей, дисплей на органических СИД или устройство отображения другого типа.
В ряде случаев устройство-источник 12 и приемное устройство 14 могут действовать, по существу, симметрично. Например, устройство-источник 12 и приемное устройство 14 могут включают в себя компоненты кодирования и декодирования видеосигнала. Поэтому система 10 может поддерживать одностороннюю или двустороннюю передачу видеосигнала между устройствами 12, 14, например, для потокового видео, вещания видеосигнала или видеотелефонии.
Видеокодер 20 и видеодекодер 26 могут действовать согласно стандарту сжатия видеосигнала, например Moving Picture Experts Group (MPEG)-2, MPEG-4, ITU-T H.263, или ITU-T AVC H.264/MPEG-4 часть 10. Хотя это не показано на фиг. 1, в некоторых аспектах видеокодер 20 и видеодекодер 26 можно объединять с аудиокодером и декодером соответственно, и могут включать в себя соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другое оборудование и программное обеспечение для манипулирования кодированием аудио- и видеосигналов в общем потоке данных или разделения потоков данных. Таким образом, устройство-источник 12 и приемное устройство 14 могут работать с мультимедийными данными. Если применимо, модули MUX-DEMUX могут отвечать протоколу мультиплексора ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).
В некоторых аспектах для вещания видеосигнала методики, отвечающие данному раскрытию, можно применять к кодированию видеосигнала на основе усовершенствованного H.264 для обеспечения услуг видео в реальном времени в наземных системах мультимедийного группового вещания на мобильные устройства (TM3) с использованием спецификации радиоинтерфейса Forward Link Only «Только Прямая Линия Связи» (FLO), “Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast”, опубликованной в июле 2007 г. как технический стандарт TIA-1099 (“спецификация FLO”). Иначе говоря, канал связи 16 может содержать беспроводной информационный канал, используемый для вещания беспроводной видеоинформации согласно спецификации FLO, и пр. Спецификация FLO включает в себя примеры, задающие синтаксис и семантику битового потока и процессы декодирования, пригодные для радиоинтерфейса FLO.
Альтернативно видео можно вещать согласно другим стандартам, например DVB-H (стандарт цифрового видеовещания на карманные устройства), ISDB-T (стандарт наземного цифрового широковещания с интегрированными услугами) или DMB (стандарт цифрового мультимедийного широковещания). Таким образом, устройство-источник 12 может быть мобильным беспроводным терминалом, сервером потокового видео или сервером видеовещания. Однако методики, отвечающие данному раскрытию, не ограничиваются никаким особым типом широковещательной, многоадресной или двухточечной системы. В случае широковещания устройство-источник 12 может вещать несколько каналов видеоданных на множественные приемные устройства, каждое из которых может быть подобно приемному устройству 14, показанному на фиг. 1. Таким образом, хотя на фиг. 1 показано одно приемное устройство 14 для вещания видеосигнала, устройство-источник 12 обычно вещает видеоконтент одновременно на многие приемные устройства.
В других примерах передатчик 22, канал связи 16 и приемник 24 могут быть приспособлены осуществлять связь в любой системе проводной или беспроводной связи, включая Ethernet, телефонную сеть (например, POTS), кабельные, электрокабельные и оптоволоконные системы и/или беспроводную систему, содержащую систему связи множественного доступа с кодовым разделением (CDMA или CDMA2000), систему множественного доступа с частотным разделением каналов (FDMA), систему множественного доступа с ортогональным частотным разделением каналов (OFDM), систему множественного доступа с временным разделением каналов (TDMA), например GSM (Глобальную систему мобильной связи), GPRS (радиослужбу пакетной передачи данных) или EDGE (среда GSM, усовершенствованная для передачи данных), систему TETRA (Наземную систему транкинговой радиосвязи), широкополосную систему множественного доступа с кодовым разделением каналов (WCDMA), систему высокой скорости передачи данных 1xEV-DO или систему 1xEV-DO Gold Multicast, IEEE 802.18, систему MediaFLOTM, систему DMB, систему DVB-H или другую схему для передачи данных между двумя или более устройствами.
Видеокодер 20 и видеодекодер 26 можно реализовать в виде одного или нескольких микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программного обеспечения, оборудования, программно-аппаратного обеспечения или любой их комбинации. Видеокодер 20 и видеодекодер 26 могут входить в состав одного или нескольких кодеров или декодеров, любой из которых может составлять часть объединенного кодера/декодера (кодека) в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и пр. Кроме того, устройство-источник 12 и приемное устройство 14 могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усиления для передачи и приема кодированного видеосигнала, в том числе радиочастотные (РЧ) беспроводные компоненты и антенны, достаточные для поддержки беспроводной связи. Однако для простоты иллюстрации такие компоненты объединяются в передатчике 22 устройства-источника 12 и приемнике 24 приемного устройства 14, показанных на фиг. 1.
На фиг. 2 показана блок-схема, демонстрирующая пример видеокодера 20, который осуществляет методы кодирования, отвечающие этому раскрытию. Видеокодер 20 может соответствовать видеокодеру устройства-источника 12, показанного на фиг. 1. Видеокодер 20 осуществляет внутреннее и внешнее кодирование блоков в кодированных единицах, например видеокадрах или секциях. Внутреннее кодирование опирается на пространственное прогнозирование для сокращения или устранения пространственной избыточности в видеоданных в данном видеокадре, секции или другой кодированной единице. В порядке иллюстрации будут описаны техники для секции кадра. Однако техники можно использовать для любой кодированной единицы, например полного кадра или любой части кадра. Для внутреннего кодирования видеокодер 20 образует прогностический блок на основании одного или нескольких ранее кодированных блоков в одной и той же секции при кодировании блока. Внешнее кодирование опирается на временное прогнозирование для сокращения или устранения временной избыточности в соседних кадрах видеопоследовательности. Для внешнего кодирования видеокодер 20 осуществляет оценку движения для отслеживания движения совпадающих видеоблоков между двумя или более соседними кадрами.
Согласно фиг. 2 видеокодер 20 принимает текущий видеоблок в видеокадре или секции, подлежащем/й кодированию. Видеокодер 20 включает в себя компоненты для осуществления временного прогнозирования и пространственного прогнозирования. В примере, показанном на фиг. 2, видеокодер 20 включает в себя модуль 30 пространственного прогнозирования, модуль 32 оценки движения, модуль 33 выбора режима, хранилище 34 опорных кадров, модуль 36 компенсации движения, модуль 38 преобразования блоков, модуль 40 квантования, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 энтропийного кодирования. Внутриконтурный противоблоковый фильтр (непоказанный) можно применять к реконструированным видеоблокам для устранения артефактов, связанных с разбиением на блоки. Видеокодер 20 также включает в себя сумматоры 48A и 48B (“сумматоры 48”). Модуль 32 оценки движения и модуль 36 компенсации движения осуществляют временное прогнозирование для внешнего кодирования видеоблоков. Модуль 30 пространственного прогнозирования осуществляет пространственное прогнозирование для внутреннего кодирования видеоблоков.
Для осуществления временного прогнозирования модуль 32 оценки движения сравнивает текущий видеоблок с блоками в одном или нескольких соседних видеокадрах для генерации одного или нескольких векторов движения. Текущий видеоблок - это видеоблок, кодируемый в данный момент, и может содержать вход видеокодера 20. Соседний кадр или кадры (которые включают в себя видеоблоки, с которыми сравнивается текущий видеоблок) можно извлекать из хранилища кадров 34. Хранилище кадров 34 может содержать память или устройство хранения данных любого типа для хранения одного или нескольких ранее кодированных кадров или блоков. В этом случае в хранилище кадров могут храниться блоки ранее кодированных кадров. Модуль 32 оценки движения идентифицирует блок соседнего кадра, который максимально совпадает с текущим видеоблоком, например блок в соседнем кадре, имеющий наименьшую среднеквадратическую ошибку (MSE), сумму квадратов разностей (SSD), сумму модулей разностей (SAD) или наименьшую стоимость скорости-искажения. Оценку движения можно осуществлять для блоков переменных размеров, например 16x16, 16x8, 8x16, 8x8 или меньших размеров блоков, на основании типа блока текущего видеоблока.
Модуль 32 оценки движения генерирует вектор движения (MV) (или несколько MV в случае двустороннего прогнозирования), который указывает величину и направление смещения между текущим видеоблоком и идентифицированным прогнозируемым блоком, используемым для кодирования текущего видеоблока. Векторы движения могут иметь точность в половину или четверть пикселя, или даже еще более высокую точность, что позволяет видеокодеру 20 отслеживать движение с точностью, превышающей целочисленные пиксельные положения, и получать лучший прогностический блок. С использованием результирующего вектора движения модуль 36 компенсации движения формирует прогностический видеоблок путем компенсации движения. В случае целочисленной пиксельной точности модуль 36 компенсации движения выбирает блок в положении, указанном вектором движения, в качестве прогностического блока. В случае дробной пиксельной точности модуль 36 компенсации движения может осуществлять интерполяцию для формирования прогностического блока.
В случае пространственного прогнозирования модуль 30 пространственного прогнозирования генерирует прогностический блок на основании одного или нескольких соседних блоков в общем кадре. Модуль 30 пространственного прогнозирования может, например, генерировать прогностический блок путем осуществления интерполяции с использованием одного или нескольких соседних блоков в текущем кадре и выбранного режима прогнозирования. Один или несколько соседних блоков в текущем кадре можно, например, извлекать из хранилища 34 кадров. Таким образом, в случае пространственного прогнозирования в хранилище 34 кадров могут храниться ранее кодированные блоки текущего кадра, которые были декодированы и реконструированы. Например, для типа блока Intra 16x16 модуль 30 пространственного прогнозирования может генерировать прогностический блок с использованием одного из четырех режимов прогнозирования: режима прогнозирования DC, режима прогнозирования по горизонтали, режима прогнозирования по вертикали и режима прогнозирования в плоскости. В другом примере модуль 30 пространственного прогнозирования может выбирать один из соседних блоков в текущем кадре в качестве прогностического блока. Таким образом, модуль 30 пространственного прогнозирования опирается на блоки в общем кадре для генерации прогностического блока, а не на блоки в соседних кадрах.
Модуль 33 выбора режима избирательно переключается между прогностическим блоком, генерируемым модулем 30 пространственного прогнозирования, и прогностическим блоком, генерируемым модулем 36 компенсации движения, на основании режима кодирования, выбранного для кодирования текущего блока. Таким образом, видеокодер 20 может избирательно осуществлять внешнее кодирование и внутреннее кодирование, например, на покадровой или поблочной основе. Видеокодер 20 генерирует остаточную информацию (обозначенную “RESID INFO” на фиг. 2) путем вычитания выбранного прогностического блока, полученного из текущего видеоблока на сумматоре 48A. Таким образом, в случае внутреннего кодирования видеокодер 20 генерирует остаточную информацию путем вычитания выбранного прогностического блока, выведенного модулем 30 пространственного прогнозирования из текущего видеоблока на сумматоре 48A. В случае внешнего кодирования видеокодер 20 генерирует остаточную информацию путем вычитания выбранного прогностического блока, выведенного модулем 36 компенсации движения из текущего видеоблока на сумматоре 48A. Как описано выше, остаточная информация выражает различия между прогностическим видеоблоком и видеоблоком, кодируемым в данный момент. Модуль 38 преобразования блоков применяет преобразование, например ДКП или целочисленное преобразование 4x4 или 8x8, к остаточной информации для генерации остаточных коэффициентов преобразования. Модуль квантования 40 квантует остаточные коэффициенты преобразования для дальнейшего снижения битовой скорости.
После квантования модуль 42 обратного квантования и модуль 44 обратного преобразования могут применять обратное квантование и обратное преобразование соответственно для реконструкции остаточной информации (обозначенной “RECON RESID” на фиг. 2). Сумматор 48B суммирует реконструированную остаточную информацию и прогностический блок, созданный модулем 36 компенсации движения или модулем 30 пространственного прогнозирования для создания реконструированного видеоблока для сохранения в хранилище 34 кадров. Модуль 32 оценки движения и модуль 36 компенсации движения могут использовать реконструированный видеоблок для внешнего кодирования блока в следующем видеокадре. Дополнительно модуль 30 пространственного прогнозирования может использовать реконструированный блок для внутреннего кодирования другого блока в текущем кадре.
Модуль 46 энтропийного кодирования принимает остаточную информацию в виде квантованных остаточных коэффициентов для текущего видеоблока от модуля квантования 40. Дополнительно модуль 46 энтропийного кодирования принимает информацию заголовка блока для текущего видеоблока в виде одного или нескольких синтаксических элементов заголовка от модуля 33 выбора режима и других компонентов видеокодера 20. Синтаксические элементы заголовка могут идентифицировать конкретные характеристики текущего видеоблока. Для внутренне кодируемого блока, например, модуль 46 энтропийного кодирования может принимать синтаксический элемент типа блока и синтаксический элемент режима прогнозирования от модуля 33 выбора режима и синтаксические элементы CBP для яркости и цветности от модуля квантования 40. Для внешне кодируемого блока модуль 46 энтропийного кодирования может дополнительно принимать один или несколько векторов движения в качестве синтаксических элементов для текущего видеоблока от модуля 32 оценки движения. Вышеописанные синтаксические элементы являются примерами синтаксических элементов, которые может принимать модуль 46 энтропийного кодирования. Модуль 46 энтропийного кодирования может принимать больше или меньше синтаксических элементов.
Модуль энтропийного кодирования 46 кодирует информацию заголовка и остаточную информацию для текущего видеоблока для генерации кодированного битового потока. Модуль 46 энтропийного кодирования кодирует информацию заголовка каждого из блоков согласно методикам, отвечающим данному раскрытию. В частности, модуль 46 энтропийного кодирования адаптивно выбирает таблицу кодирования для использования при кодировании синтаксического элемента каждого из блоков на основании соответствующих синтаксических элементов ранее кодированных блоков. Другими словами, модуль 46 энтропийного кодирования адаптивно выбирает таблицу кодирования на поблочной основе на основании синтаксических элементов ранее кодированных блоков. Таким образом, модуль 46 энтропийного кодирования может выбирать первую таблицу кодирования для первого блока кадра и вторую таблицу кодирования для второго блока кадра на основании синтаксических элементов одного или нескольких ранее кодированных блоков. В ряде случаев ранее кодированные блоки, используемые при осуществлении выбора, кодировались с использованием таблицы кодирования, отличной от выбранной таблицы кодирования.
В одном аспекте модуль 46 энтропийного кодирования может адаптивно выбирать таблицу кодирования для использования при кодировании внутренне-прогностических типов блока на основании одного или нескольких видеоблоков, соседствующих с текущим видеоблоком, т.е. соседних видеоблоков. В другом аспекте модуль 46 энтропийного кодирования может выбирать таблицу кодирования на основании процента ранее кодированных блоков, которые имеют типы блока Intra 16x16. Однако в порядке иллюстрации модуль 46 энтропийного кодирования будет описан как адаптивно выбирающий таблицу кодирования для кодирования внутренне-прогностический тип блока на основании соседнего блока, расположенного непосредственно над текущим блоком (“верхним соседним блоком”), и соседнего блока непосредственно влево от текущего блока (“левого соседнего блока”). Однако модуль энтропийного кодирования 46 может анализировать любое количество соседних блоков в любом положении при выборе таблицы кодирования для кодирования. Кроме того, модуль 46 энтропийного кодирования может использовать аналогичные методики для адаптивного выбора таблицы кодирования для внешне-прогностических типов блока на основании типов блока ранее кодированных видеоблоков. Дополнительно методики, отвечающие данному раскрытию, можно дополнительно применять к адаптивному выбору таблицы кодирования для кодирования других синтаксических элементов текущего видеоблока, например режима прогнозирования, CBP яркости, CBP цветности, разбиения на блоки, вектора движения и пр.
Модуль 46 энтропийного кодирования может выбирать таблицу кодирования, которая связывает типы блока Intra 4x4 или Intra 8x8 с более коротким кодовым словом, чем тип блока Intra 16x16, когда верхний соседний блок и левый соседний блок не имеют типов блока Intra 16x16. Модуль 46 энтропийного кодирования может, например, выбирать таблицу кодирования, которая связывает тип блока Intra 4x4 и Intra 8x8 с кодовым словом “0” (т.е. однобитовым кодовым словом) и связывает тип блока Intra 16x16 с кодовым словом “10” (т.е. двухбитовым кодовым словом), например, согласно стандарту AVC H.264/MPEG-4 часть 10. Модуль 46 энтропийного кодирования может выбирать таблицу кодирования, которая связывает тип блока Intra 16x16 с более коротким кодовым словом, чем типы блока Intra 4x4 или Intra 8x8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16. В одном примере выбранная таблица кодирования может связывать тип блока Intra 16x16 с кодовым словом “0” (т.е. однобитовым кодовым словом) и связывать типы блока Intra 4x4 и Intra 8x8 с кодовым словом “10” (т.е. двухбитовым кодовым словом), когда верхний и левый соседние блоки имеют типы блока Intra 16x16. Таким образом, эвристическое правило работы модуля 46 энтропийного кодирования состоит в том, что, если верхний и левый соседние блоки имеют типы блока Intra 16x16, вероятность того, что текущий видеоблок является блоком типа Intra 16x16, возрастает. В ряде случаев текущий блок может не иметь тип блока Intra 16x16, и адаптивно выбранная таблица кодирования может приводить к использованию более длинного кодового слова для типа блока Intra 8x8 или 4x4. Однако обычно эвристическое правило выполняется, что позволяет экономить биты для кодирования типа блока Intra 16x16. Таким образом, видеокодер 20 адаптивно выбирает таблицы кодирования, которые более эффективно кодируют блоки, когда чаще используется тип блока Intra 16x16.
Модуль 46 энтропийного кодирования также может прогнозировать один или несколько других синтаксических элементов текущего блока на основании, по меньшей мере, одного ранее кодированного блока в попытке дополнительно сократить количество битов, используемых для кодирования синтаксических элементов заголовка блока. Например, модуль 46 энтропийного кодирования может пытаться прогнозировать совместно синтаксический элемент режима прогнозирования и синтаксические элементы CBP яркости/цветности текущего блока из предыдущих блоков, например верхнего и левого соседних блоков. Например, модуль 46 энтропийного кодирования может прогнозировать режим прогнозирования и CBP яркости/цветности текущего блока как режим прогнозирования и CBP яркости/цветности одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Модуль 46 энтропийного кодирования сравнивает режим прогнозирования и CBP яркости/цветности текущего блока с прогнозируемым режимом прогнозирования и CBP яркости/цветности, и, если прогнозирование увенчивается успехом, т.е. они одинаковы, модуль 46 энтропийного кодирования кодирует флаг, который указывает успех прогнозирования. Таким образом, модуль 46 энтропийного кодирования связывает режим прогнозирования и CBP яркости/цветности и представляет их с использованием флага (например, 1-битового флага) вместо того, чтобы кодировать каждый синтаксический элемент по отдельности, что приводит к дальнейшему сокращению количества битов, используемых для кодирования синтаксических элементов.
Если прогнозирование режима прогнозирования, CBP яркости и CBP цветности не увенчалось успехом, модуль 46 энтропийного кодирования устанавливает флаг для указания неудачного прогнозирования. Модуль 46 энтропийного кодирования может пытаться прогнозировать только режим прогнозирования текущего блока из предыдущих блоков. Например, модуль 46 энтропийного кодирования может прогнозировать режим прогнозирования текущего блока как режим прогнозирования одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Модуль 46 энтропийного кодирования сравнивает режим прогнозирования текущего блока с прогнозируемым режимом прогнозирования, и, если прогнозирование увенчивается успехом, т.е. они одинаковы, модуль 46 энтропийного кодирования кодирует флаг режима прогнозирования (например, 1-битовый флаг режима прогнозирования), который указывает успех прогнозирования. Если прогнозирование увенчалось успехом, 1-битовый флаг режима прогнозирования передается вместо 2-битового кодового слова фиксированной длины для режима прогнозирования, что позволяет сэкономить, по меньшей мере, один дополнительный бит. Модуль 46 энтропийного кодирования кодирует CBP яркости и CBP цветности по отдельности. Если прогнозирование режима прогнозирования также не увенчалось успехом или модуль 46 энтропийного кодирования не пытается прогнозировать режим прогнозирования, то модуль 46 энтропийного кодирования кодирует каждый из синтаксических элементов с использованием отдельных кодовых книг, не кодируя дополнительные флаги для указания успешного или неуспешного прогнозирования.
Модуль 46 энтропийного кодирования может действовать согласно иллюстративному псевдокоду, приведенному ниже, для осуществления техник внутреннего кодирования согласно одному аспекту этого раскрытия.
Encode I16MBtype(currMB)
{
Пусть upI16 равно 1 если up MB type равен I16;
Пусть leftI16 равно 1 если left MB type равен I16;
Если (upI16 = 1 && leftI16 = 1)
кодировать currMBType с использованием кодовых слов {“0”, “10”, “11”} для {I16, I4/8, IPCM};
Иначе
кодировать currMBType с использованием кодовых слов {“0”, “10”, “11”} для {I4/8, I16, IPCM};
// нижеследующий код прогнозирует I16mode/CBP для currMB
{
upValue = upI16 ? I16value(upMB): 0;
leftValue = leftI16 ? I16value(leftMB): 0;
Если (upI16 && leftI16)
predValue = min(upValue, leftValue);
Иначе если (upI16)
predValue = upValue;
Иначе если (leftI16)
predValue = leftValue;
Иначе
predValue = -1;
currValue = I16value(currMB);
Если (predValue == -1)
{
отправить currPredMode в 2-битовом FLC
отправить currLumaCBP в 1-битовом FLC
отправить currChromaCBP с использованием кодовых слов {0, 10, 11}
}
Иначе если (currValue == predValue)
отправить флаг “1”
Иначе
{
отправить флаг “0”
отправить currPredMode в 2-битовом FLC
отправить currLumaCBP в 1-битовом FLC
отправить currChromaCBP с использованием кодовых слов {0, 10, 11}
}
}
}
Int I16value(thisMB)
{
Пусть thisPredMode это режим прогнозирования для thisMB
Пусть thisLumaCBP это CBP яркости для thisMB
Пусть thisChromaCBP это CBP цветности для thisMB
возврат thisPredMode + (thisLumaCBP << 4) + (thisChromaCBP << 2);
}
Первоначально модуль 46 энтропийного кодирования устанавливает переменную upI16 равной “1”, если верхний соседний блок имеет тип блока Intra 16x16, и устанавливает переменную upI16 равной “0”, если верхний соседний блок имеет тип блока Intra 16x16. Аналогично модуль 46 энтропийного кодирования устанавливает переменную leftI16 равной “1”, если левый соседний блок имеет тип блока Intra 16x16, и устанавливает переменную leftI16 равной “0”, если левый соседний блок имеет тип блока Intra 16x16.
Модуль 46 энтропийного кодирования избирательно кодирует тип блока текущего блока на основании типов блока верхнего и левого соседних блоков. В частности, модуль 46 энтропийного кодирования кодирует тип блока текущего блока (т.е. currMBtype) с использованием кодовых слов “0”, “10” и “11” для Intra 16x16 (I16), Intra 4x4 или 8x8 (I4/8) и необработанных пиксельных данных (IPCM), соответственно, когда upI16 и leftI16 равны “1”. Таким образом, кодовое слово переменной длины, назначенное для типа блока Intra 16x16 (I16) короче, чем кодовое слово переменной длины, назначенное для типов блока Intra 4x4 или Intra 8x8 (I4/8) или типа блока необработанных пиксельных данных (IPCM). Когда upI16, leftI16 или оба имеют тип блока, отличный от Intra 16x16, модуль 46 энтропийного кодирования кодирует тип блока текущего блока (т.е. currMBtype) с использованием кодовых слов “0”, “10”, “11” для типов блока I4/8, I16, IPCM соответственно.
Хотя согласно вышеописанному иллюстративному псевдокоду модуль 46 энтропийного кодирования выбирает таблицы кодирования для использования при кодировании типа блока текущего блока на основании верхнего и левого соседних блоков, модуль 46 энтропийного кодирования может анализировать больше соседних блоков при осуществлении выбора. Кроме того, модуль 46 энтропийного кодирования может выбирать таблицы кодирования для использования при кодировании на основании других критериев, например процента ранее кодированных блоков, которые имеют тип блока Intra 16x16. Например, модуль 46 энтропийного кодирования может выбирать таблицу кодирования, которая связывает более короткое кодовое слово с типом блока Intra 16x16, когда, по меньшей мере, 10 из последних 20 ранее кодированных блоков имеют типы блока Intra 16x16.
Для прогнозирования режима прогнозирования и CBP (яркости и цветности) модуль 46 энтропийного кодирования инициализирует переменные upValue и leftValue. Переменные upValue и leftValue - это значения режима прогнозирования и CBP (яркости и цветности) для верхнего соседнего блока и левого соседнего блока соответственно. Модуль 46 энтропийного кодирования устанавливает upValue равным “0”, когда upI16 не равно “1”, т.е. когда верхний соседний блок не имеет тип блока Intra 16x16. Когда upI16 равно “1”, т.е. верхний соседний блок имеет тип блока Intra 16x16, модуль 46 энтропийного кодирования вычисляет upValue с использованием функции I16value. Функция I16value возвращает значение, в котором два младших бита соответствуют режиму прогнозирования верхнего соседнего блока, следующие два бита соответствуют CBP цветности верхнего соседнего блока и следующий бит соответствует CBP яркости верхнего соседнего блока. Модуль 46 энтропийного кодирования определяет leftValue аналогичным образом, как upValue. В частности, модуль 46 энтропийного кодирования устанавливает leftValue равным “0”, когда leftI16 не равно “1”, и устанавливает leftValue равным значению, возвращаемому функцией I16value, когда leftI16 равно “1”.
Модуль энтропийного кодирования 46 прогнозирует значение режима прогнозирования и значения CBP для текущего блока (predValue) на основании типов блока соседних блоков и значений режима прогнозирования и CBP соседних блоков, т.е. upValue и leftValue. Если upI16 и leftI16 равны “1”, т.е. оба соседних блока имеют типы блока Intra 16x16, модуль 46 энтропийного кодирования устанавливает predValue равным минимальному из upValue и leftValue. Хотя согласно иллюстративному псевдокоду модуль 46 энтропийного кодирования устанавливает predValue равным минимальному из upValue и leftValue, модуль 46 энтропийного кодирования может устанавливать predValue равным максимальному из upValue и leftValue или комбинации двух значений.
Когда оба соседних блока не имеют типов блока Intra 16x16, модуль 46 энтропийного кодирования устанавливает predValue равным upValue, если только upI16 равно “1”, или устанавливает predValue равным leftValue, если только leftI16 равно “1”. Таким образом, модуль 46 энтропийного кодирования прогнозирует значение режима прогнозирования и значения CBP для текущего блока (predValue) с использованием режима прогнозирования и значений CBP для соседнего блока, который имеет тип блока Intra 16x16. Если ни upI16, ни leftI16 не равно “1”, т.е. ни один из соседних блоков не имеет тип Intra 16x16, модуль 46 энтропийного кодирования устанавливает predValue равным “-1”. Задание predValue равным “-1” указывает, что не существует соседнего блока, который можно использовать для прогнозирования значения режима прогнозирования и значений CBP для текущего блока (predValue).
Затем модуль 46 энтропийного кодирования вычисляет значение режима прогнозирования и CBP для текущего блока (currValue) с использованием функции I16value. После вычисления currValue модуль 46 энтропийного кодирования кодирует режим прогнозирования и CBP текущего блока на основании сравнения currValue и predValue. Если predValue равно “-1”, т.е. не существует соседнего блока, который можно использовать для прогнозирования, модуль 46 энтропийного кодирования кодирует режим прогнозирования текущего блока (currPredMode) с использованием 2-битового кода фиксированной длины, кодирует CBP яркости (currLumaCBP) с использованием 1-битового кода фиксированной длины и кодирует CBP цветности (currChromaCBP) с использованием кодовых слов переменной длины {0, 10, 11}.
2-битовые коды фиксированной длины для currPredMode соответствуют одному из четырех режимов прогнозирования. Например, режим прогнозирования по вертикали может соответствовать коду “00,” режим прогнозирования по горизонтали может соответствовать “01”, режим прогнозирования DC может соответствовать “10” и режим прогнозирования в плоскости может соответствовать “11.” 1-битовый код фиксированной длины для currLumaCBP указывает, существуют ли ненулевые коэффициенты яркости. Например, currLumaCBP, равный “0”, указывает, что не существует ненулевых коэффициентов яркости, и currLumaCBP, равный “1”, указывает, что существует, по меньшей мере, один ненулевой коэффициент яркости. Кодовые слова переменной длины для currChromaCBP указывают, существуют ли ненулевые коэффициенты цветности. Например, значение currChromaCBP, равное “0”, указывает, что все коэффициенты цветности AC и DC равны нулю, значение currChromaCBP, равное “10”, указывает, что существует, по меньшей мере, один ненулевой DC-коэффициент цветности, но не существует ненулевых AC-коэффициентов цветности, и значение currChromaCBP, равное “11”, указывает, что существует, по меньшей мере, один ненулевой DC-коэффициент цветности и, по меньшей мере, один ненулевой AC-коэффициент цветности.
Если predValue не равно “-1”, модуль 46 энтропийного кодирования определяет, равны ли значения currValue и predValue, и если да, передает 1-битовый флаг, заданный равным “1”, для указания того, что прогнозирование увенчалось успехом. Модуль 46 энтропийного кодирования может не передавать никакой другой информации, касающейся режима прогнозирования или CBP яркости/цветности для этого видеоблока. Вместо этого 1-битовый флаг указывает декодеру, что значение прогнозирования (predValue) верно, что позволяет декодеру использовать режим прогнозирования и CBP яркости/цветности, спрогнозированные декодером, по аналогии с описанным выше. Таким образом, модуль 46 энтропийного кодирования связывает режим прогнозирования и CBP яркости/цветности друг с другом путем передачи 1-битового флага, заданного равным “1”. Передача 1-битового флага для указания, что прогнозирование режима прогнозирования и значений CBP увенчалось успехом, позволяет сократить количество битов, которые нужно кодировать для информации заголовка.
Если predValue не равно “-1” и не равно currValue, модуль 46 энтропийного кодирования устанавливает 1-битовый флаг равным “0” для указания декодеру, что прогнозирование не удалось, т.е. currValue не равно predValue. После 1-битового флага модуль 46 энтропийного кодирования кодирует режим прогнозирования текущего блока (currPredMode) с использованием 2-битового кода фиксированной длины, кодирует CBP яркости (currLumaCBP) с использованием 1-битового кода фиксированной длины и кодирует CBP цветности (currChromaCBP) с использованием кодовых слов переменной длины {0, 10, 11}, что подробно описано выше. Таким образом, в этом случае режим прогнозирования и шаблоны кодированных блоков (CBP) передаются по отдельности, а не связываются друг с другом.
В дополнительном аспекте данного раскрытия в случае неудачного прогнозирования режима прогнозирования и CBP яркости/цветности, т.е. когда currValue не равно predValue, модуль 46 энтропийного кодирования может пытаться прогнозировать режим прогнозирования текущего блока на основании режима прогнозирования одного или нескольких соседних блоков. Другими словами, модуль 46 энтропийного кодирования может пытаться прогнозировать режим прогнозирования, не пытаясь также прогнозировать CBP яркости и цветности. Ниже приведен иллюстративный псевдокод для прогнозирования режима прогнозирования.
PredI16mode(currMB)
{
Пусть upMode является режимом прогнозирования соседнего блока непосредственно над текущим блоком;
Пусть leftMode является режимом прогнозирования соседнего блока непосредственно влево от текущего блока;
Если(upI16 && leftI16)
predMode = min(upMode, leftMode);
Иначе если(upI16)
predMode = upMode;
Иначе если(leftI16)
predMode = leftMode;
Иначе
predMode = -1;
Пусть currPredMode является режимом прогнозирования I16 для currMB
Если(predMode == -1)
отправить currPredMode с использованием 2-битового FLC
Иначе если(currPredMode == predMode)
отправить флаг “1”
Если
{
отправить флаг “0”
отправить currPredMode с использованием кодовых слов {0, 10, 11}
}
}
Модуль 46 энтропийного кодирования может инициализировать переменные upMode и leftMode равными режиму прогнозирования соседнего блока непосредственно над текущим блоком и непосредственно влево от текущего блока соответственно. Модуль 46 энтропийного кодирования прогнозирует режим прогнозирования текущего блока (predMode) на основании одного или нескольких соседних блоков. Если upI16 и leftI16 равны “1”, т.е. оба соседних блока имеют типы блока Intra 16x16, модуль 46 энтропийного кодирования устанавливает predMode как минимальный из upMode и leftMode. Вместо минимума модуль 46 энтропийного кодирования может использовать максимальный из upMode и leftMode или их комбинацию. Если оба соседних блока не имеют тип блока Intra 16x16, модуль 46 энтропийного кодирования устанавливает predMode равным режиму прогнозирования верхнего соседнего блока (upMode), если upI16 равно “1”, или устанавливает predMode равным режиму прогнозирования левого соседнего блока, если leftI16 равно “1”. Если ни upI16, ни leftI16 не равно “1”, модуль 46 энтропийного кодирования устанавливает predMode равным “-1”, что указывает, что не существует соседних блоков Intra 16x16, которые можно использовать для прогнозирования режима прогнозирования текущего блока.
Модуль 46 энтропийного кодирования кодирует режим прогнозирования текущего блока (currPredMode) на основании прогнозируемого режима прогнозирования (predMode). Если predMode равен “-1”, модуль 46 энтропийного кодирования кодирует currPredMode с использованием 2-битового кода фиксированной длины, который соответствует одному из четырех возможных режимов прогнозирования. Дополнительно модуль 46 энтропийного кодирования кодирует CBP яркости (currLumaCBP) с использованием 1-битового кода фиксированной длины и CBP цветности (currChromaCBP) с использованием кодовых слов переменной длины {0, 10, 11}, как описано выше. Если predMode не равен “-1”, модуль 46 энтропийного кодирования определяет, равны ли currPredMode и predMode, и если да, передает 1-битовый флаг, равный “1”. Модуль 46 энтропийного кодирования может не передавать никакой другой информации, касающейся режима прогнозирования текущего блока. Вместо этого 1-битовый флаг указывает декодеру, что прогнозирование режима прогнозирования увенчалось успехом. Таким образом, декодер может использовать прогнозируемый режим прогнозирования (predMode) в качестве режима прогнозирования текущего блока. Модуль 46 энтропийного кодирования все же может кодировать currLumaCBP с использованием 1-битового кода фиксированной длины и кодировать currChromaCBP с использованием кодов переменной длины {0, 10, 11}. Таким образом, успешное прогнозирование текущего режима прогнозирования может приводить к сокращению количества битов, необходимых для кодирования текущего блока, даже в случае неудачного прогнозирования связки режима прогнозирования, CBP яркости и CBP цветности.
Если predMode не равен “-1” или currPredMode, модуль 46 энтропийного кодирования устанавливает 1-битовый флаг равным “0” для указания декодеру, что прогнозирование режима прогнозирования не удалось, т.е. что currPredMode не равен predMode. После 1-битового флага модуль 46 энтропийного кодирования кодирует режим прогнозирования текущего блока (currPredMode) с использованием кодовых слов {0, 10, 11}. Поскольку currPredMode не равен predMode, остается только три других возможных режима прогнозирования. Таким образом, модуль 46 энтропийного кодирования может кодировать currPredMode с использованием кодовых слов переменной длины {0, 10, 11}. Модуль 46 энтропийного кодирования также кодирует currLumaCBP и currChromaCBP, что подробно описано выше.
На фиг. 3 показана блок-схема, демонстрирующая иллюстративный модуль 46 энтропийного кодирования, способный кодировать видеоблоки согласно аспекту раскрытия. Модуль 46 энтропийного кодирования может располагаться в видеокодере 20, показанном на фиг. 1 и 2. Модуль 46 энтропийного кодирования принимает данные блока для блока и генерирует кодированный битовый поток для передачи на другое устройство для декодирования. В примере, показанном на фиг. 3, модуль 46 энтропийного кодирования включает в себя модуль кодирования 50, модуль 52 выбора таблицы кодирования и модуль 54 прогнозирования синтаксических элементов.
Модуль кодирования 50 кодирует данные блока для блока с использованием одной или несколько таблиц кодирования. Модуль кодирования 50 может получать таблицы кодирования для использования при кодировании от модуля 52 выбора таблицы кодирования. Модуль 52 выбора таблицы кодирования может сохранять ряд таблиц кодирования для кодирования разных типов данных. Например, модуль 52 выбора таблицы кодирования может сохранять одну или несколько таблиц кодирования для кодирования остаточной информации, одну или несколько таблиц кодирования для кодирования каждого типа синтаксического элемента заголовка, одну или несколько таблиц кодирования для кодирования связок синтаксических элементов заголовка, и пр. В ряде случаев модуль 52 выбора таблицы кодирования может не сохранять таблицы кодирования, но вместо этого извлекать правильную таблицу кодирования их хранилища, внешнего по отношению к модулю 46 энтропийного кодирования.
Модуль 52 выбора таблицы кодирования может адаптивно выбирать таблицу кодирования для использования модулем кодирования 50 при кодировании синтаксического элемента типа блока текущего блока на основании типов блока ранее кодированных блоков. В одном аспекте модуль 52 выбора таблицы кодирования может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего блока на основании одного или нескольких соседних видеоблоков, например на основании верхнего и левого соседних блоков, что подробно описано выше. Модуль 52 выбора таблицы кодирования может, например, выбирать первую таблицу кодирования, которая связывает типы блока Intra 4x4 или Intra 8x8 с более коротким кодовым словом, чем тип блока Intra 16x16, когда верхний соседний блок и левый соседний блок не имеют типов блока Intra 16x16, и выбирать вторую таблицу кодирования, которая связывает тип блока Intra 16x16 с более коротким кодовым словом, чем типы блока Intra 4x4 или Intra 8x8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16. В другом аспекте модуль 52 выбора таблицы кодирования может выбирать таблицу кодирования на основании процента ранее кодированных блоков, которые имеют типы блока Intra 16x16. Модуль кодирования 50 кодирует синтаксический элемент типа блока текущего блока согласно выбранной таблице кодирования.
В ряде случаев модуль 54 прогнозирования синтаксических элементов может пытаться прогнозировать один или несколько других синтаксических элементов текущего блока на основании ранее кодированных блоков. Для внутренне-прогностического блока, например, модуль 54 прогнозирования синтаксических элементов может пытаться прогнозировать синтаксический элемент режима прогнозирования и синтаксические элементы CBP яркости/цветности текущего блока и/или пытаться прогнозировать синтаксический элемент режима прогнозирования текущего блока без прогнозирования синтаксических элементов CBP яркости/цветности. Модуль 54 прогнозирования синтаксических элементов может прогнозировать режим прогнозирования и CBP яркости/цветности текущего блока как режим прогнозирования и CBP яркости/цветности одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16.
Модуль кодирования 50 принимает прогнозируемые синтаксические элементы от модуля 54 прогнозирования синтаксических элементов и сравнивает прогнозируемые синтаксические элементы с фактическими синтаксическими элементами текущего блока. Если прогнозирование увенчалось успехом, т.е. прогнозируемые и фактические синтаксические элементы одинаковы, модуль кодирования 50 кодирует флаг, который указывает, что прогнозирование синтаксических элементов, например режим прогнозирования и CBP яркости/цветности в вышеприведенном примере, увенчалось успехом. Модуль кодирования 50, таким образом, связывает режим прогнозирования и CBP яркости/цветности и представляет их с использованием флага (например, 1-битового флага) вместо того, чтобы кодировать каждый синтаксический элемент по отдельности, что приводит к дальнейшему сокращению количества битов, используемых для кодирования синтаксических элементов.
Если прогнозирование режима прогнозирования, CBP яркости и CBP цветности (или другого синтаксического элемента) не увенчалось успехом, модуль кодирования 50 кодирует флаг для указания неудачного прогнозирования. Если прогнозирование режима прогнозирования и CBP яркости/цветности не увенчалось успехом, модуль 54 прогнозирования синтаксических элементов может пытаться прогнозировать режим прогнозирования текущего блока из предыдущих блоков без прогнозирования CBP яркости/цветности. Например, модуль 54 прогнозирования синтаксических элементов может прогнозировать режим прогнозирования текущего блока как режим прогнозирования одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16.
Модуль кодирования 50 сравнивает режим прогнозирования текущего блока с прогнозируемым режимом прогнозирования, принятым от модуля 54 прогнозирования синтаксических элементов, и, если прогнозирование увенчалось успехом, модуль кодирования 50 кодирует флаг, который указывает успешность прогнозирования режима прогнозирования. Модуль кодирования 50 кодирует CBP яркости и CBP цветности по отдельности с использованием соответствующих таблиц кодирования, связанных с этими синтаксическими элементами. Если прогнозирование режима прогнозирования также не увенчалось успехом или в отсутствие попыток прогнозировать режим прогнозирования, модуль кодирования 50 кодирует каждый из синтаксических элементов по отдельности с использованием соответствующих таблиц кодирования, извлеченных из модуля 52 выбора таблицы кодирования.
На фиг. 4 показана блок-схема, демонстрирующая пример видеодекодера 26, который декодирует видеоданные согласно методам кодирования, отвечающим настоящему раскрытию. Видеодекодер 26 может, например, соответствовать декодеру приемного устройства 14, показанного на фиг. 1. Видеодекодер 26 может осуществлять внутреннее и внешнее кодирование блоков в видеокадрах. В примере, показанном на фиг. 4, видеодекодер 26 включает в себя модуль 60 энтропийного декодирования, модуль 62 пространственного прогнозирования, модуль 63 компенсации движения, модуль 64 обратного квантования, модуль 66 обратного преобразования и хранилище кадров 68. Видеодекодер 26 также включает в себя сумматор 69, который объединяет выходной сигнал модуля 66 обратного преобразования и, в зависимости от того, является ли видеоблок внешне-кодированным или внутренне-кодируемым, выходной сигнал модуля 63 компенсации движения или модуля 62 пространственного прогнозирования соответственно. На фиг. 4 показаны компоненты пространственного прогнозирования видеодекодера 26 для внутреннего декодирования видеоблоков.
Модуль энтропийного декодирования 60 принимает кодированный видеопоток и декодирует кодированный битовый поток для получения остаточной информации (например, в виде квантованных остаточных коэффициентов) и информации заголовка (например, в виде одного или нескольких синтаксических элементов заголовка). Как подробно описано выше, модуль 46 энтропийного кодирования (фиг. 2) адаптивно выбирает таблицы кодирования (например, кодовые книги) для использования при кодировании типов блока на основании типов блока ранее кодированных блоков. Таким образом, модуль 60 энтропийного декодирования может адаптивно выбирать таблицу кодирования для использования при декодировании типов блока аналогичным образом, как модуль 46 энтропийного кодирования для правильного декодирования типов блока текущего блока.
В одном аспекте модуль 60 энтропийного декодирования адаптивно выбирает таблицу кодирования для декодирования типа блока текущего блока на основании одного или нескольких соседних блоков текущей секции, т.е. соседних видеоблоков. Для видеоблока без ранее кодированных соседних видеоблоков, например для первого видеоблока кадра, модуль 60 энтропийного декодирования может выбирать стандартную таблицу кодирования. Стандартная таблица кодирования может представлять собой, например, таблицу кодирования, которая назначает типам блока Intra 4x4 и Intra 8x8 более короткое кодовое слово, чем кодовое слово, назначенное типу блока Intra 16x16. Для видеоблоков в секции, для которой существуют ранее декодированные соседние видеоблоки, модуль 60 энтропийного декодирования может анализировать любое количество соседних блоков в любом положении при выборе таблицы кодирования для декодирования. Однако в порядке иллюстрации описан модуль 60 энтропийного декодирования, адаптивно выбирающий таблицу кодирования для декодирования типа блока для блока на основании верхнего соседнего блока и левого соседнего блока.
В случае внутренне-прогностических типов блока, например, модуль 60 энтропийного декодирования может выбирать таблицу кодирования, которая связывает с типом блока Intra 16x16 более короткое кодовое слово, чем с типами блока Intra 4x4 или Intra 8x8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16. Таблица кодирования, выбранная, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16, может, например, связывать кодовые слова “0”, “10” и “11” с типом блока Intra 16x16, типами блока Intra 4x4 или Intra 8x8 и типом блока необработанных пиксельных данных (IPCM) соответственно. Когда ни верхний соседний блок, ни левый соседний блок не имеют типов блока Intra 16x16, модуль 60 энтропийного декодирования может выбирать таблицу кодирования, которая связывает более короткое кодовое слово переменной длины с типами блока Intra 4x4/8x8 и связывает более длинное кодовое слово с типом блока Intra 16x16. Модуль 60 энтропийного декодирования декодирует тип блока текущего блока с использованием таблицы кодирования, выбранной на основании соседних блоков.
Хотя в описанном выше примере модуль 60 энтропийного декодирования выбирает таблицу кодирования на основании соседних блоков, модуль 60 энтропийного декодирования может выбирать таблицу кодирования на основании других критериев. Например, модуль 60 энтропийного декодирования может выбирать таблицу кодирования на основании процента ранее кодированных блоков, которые имеют типы блока Intra 16x16, превышающего порог, например, по меньшей мере, 10 из последних 20 ранее кодированных блоков, имеют типы блока Intra 16x16. Кроме того, модуль 60 энтропийного декодирования может адаптивно выбирать таблицу кодирования для декодирования типа блока внешне-кодированных блоков помимо внутренне-кодированных блоков.
Модуль 60 энтропийного декодирования дополнительно декодирует режим прогнозирования, CBP яркости и CBP цветности текущего блока. Как описано выше, модуль 46 энтропийного кодирования (фиг. 2) может прогнозировать один или несколько других синтаксических элементов, например режим прогнозирования и CBP яркости/цветности, для текущего блока из синтаксических элементов одного или нескольких соседних блоков. В случаях успешного прогнозирования модуль 46 энтропийного кодирования связывает режим прогнозирования и CBP яркости/цветности и передает флаг (например, 1-битовый флаг), указывающий, что прогнозирование увенчалось успехом. Таким образом, модуль 60 энтропийного декодирования также может осуществлять прогнозирование одного или нескольких синтаксических элементов таким же образом, как модуль 46 энтропийного кодирования. Например, модуль 60 энтропийного декодирования может прогнозировать синтаксический элемент режима прогнозирования и синтаксические элементы CBP яркости/цветности текущего блока из одного или нескольких предыдущих блоков, например верхнего и левого соседних блоков. Модуль 60 энтропийного декодирования может прогнозировать режим прогнозирования и CBP яркости/цветности текущего блока как режим прогнозирования и CBP яркости/цветности одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Если флаг в кодированном битовом потоке указывает, что прогнозирование режима прогнозирования и CBP увенчалось успехом, модуль 60 энтропийного декодирования выбирает прогнозируемый режим прогнозирования и CBP в качестве режима прогнозирования и CBP текущего блока.
Когда флаг кодированного битового потока указывает, что прогнозирование не увенчалось успехом, модуль 60 энтропийного декодирования принимает режим прогнозирования, CBP яркости и CBP цветности как отдельные кодовые слова. Модуль 60 энтропийного декодирования может декодировать режим прогнозирования с использованием таблицы кодирования с помощью 2-битовых кодов фиксированной длины, которые соответствуют одному из четырех режимов прогнозирования Intra 16x16. Например, режим прогнозирования по вертикали может соответствовать кодовому слову “00”, режим прогнозирования по горизонтали может соответствовать кодовому слову “01”, режим прогнозирования DC может соответствовать кодовому слову “10”, и режим прогнозирования в плоскости может соответствовать кодовому слову “11”. Модуль 60 энтропийного декодирования может декодировать CBP яркости (который указывает, существуют ли ненулевые коэффициенты яркости) с использованием таблицы кодирования с помощью 1-битовых кодовых слов фиксированной длины. Модуль 60 энтропийного декодирования может декодировать CBP цветности (который указывает, существуют ли ненулевые коэффициенты цветности) с использованием таблицы кодирования с помощью кодовых слов переменной длины. Например, таблица кодирования цветности может включать в себя кодовое слово “0” для указания того, что все коэффициенты цветности AC и DC равны нулю, кодовое слово “10” для указания, что существует, по меньшей мере, один ненулевой DC-коэффициент цветности, но не существует ненулевых AC-коэффициентов цветности, и кодовое слово “11” для указания, что существует, по меньшей мере, один ненулевой DC-коэффициент цветности и, по меньшей мере, один ненулевой AC-коэффициент цветности.
В некоторых аспектах модуль 46 энтропийного кодирования (фиг. 2) может пытаться прогнозировать режим прогнозирования в случае неуспешного прогнозирования комбинации режима прогнозирования и CBP яркости/цветности и кодировать флаг, указывающий, увенчалось ли успехом прогнозирование режима прогнозирования. Таким образом, модуль 60 энтропийного декодирования может также осуществлять прогнозирование режима прогнозирования на основании одного или нескольких соседних блоков. Например, модуль 60 энтропийного декодирования может прогнозировать режим прогнозирования текущего блока как режим прогнозирования одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Если флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом, модуль 60 энтропийного декодирования выбирает прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего блока. Если флаг указывает, что прогнозирование не увенчалось успехом или модуль 60 энтропийного декодирования не способен прогнозировать режим прогнозирования, модуль 60 энтропийного декодирования декодирует режим прогнозирования по отдельности.
После энтропийного декодирования кодированных видеоданных, осуществляемых модулем 60 энтропийного декодирования, видеодекодер 26 реконструирует кадры видеопоследовательности поблочно с использованием информации заголовка и остаточной информации. Модуль 60 энтропийного декодирования генерирует прогностический блок с использованием, по меньшей мере, части информации заголовка. Например, в случае внутренне-кодированного блока (или секции) модуль 60 энтропийного декодирования может обеспечивать, по меньшей мере, часть информации заголовка (например, тип блока и режим прогнозирования для этого блока) для модуля 62 пространственного прогнозирования для генерации прогностического блока. Модуль 62 пространственного прогнозирования генерирует прогностический блок с использованием одного или нескольких соседних блоков (или участков соседних блоков) в общей секции согласно информации заголовка. Модуль 30 пространственного прогнозирования может, например, генерировать прогностический блок с размером разбиения, указанным синтаксическим элементом типа блока с использованием режима внутреннего прогнозирования, указанного синтаксическим элементом режима прогнозирования. Один или несколько соседних блоков (или участков соседних блоков) в текущей секции можно, например, извлекать из хранилища 68 кадров.
В случае внешне-кодированного блока (или секции) модуль 60 энтропийного декодирования может обеспечивать, по меньшей мере, часть информации заголовка для модуля 63 компенсации движения для генерации прогностического блока. Модуль 63 компенсации движения может, например, принимать один или несколько векторов движения и типов блока от модуля 60 энтропийного декодирования и один или несколько реконструированных опорных кадров из хранилища 68 опорных кадров и генерировать прогностический блок, т.е. блок скомпенсированного движения.
Модуль 60 энтропийного декодирования обеспечивает остаточную информацию, например, в виде одного или нескольких квантованных остаточных коэффициентов для модуля 64 обратного квантования. Модуль 64 обратного квантования выполняет обратное квантование, т.е. деквантование, квантованных остаточных коэффициентов. Модуль 66 обратного преобразования применяет обратное преобразование, например обратное ДКП или обратное целочисленное преобразование 4x4 или 8x8, к деквантованным остаточным коэффициентам для выработки остаточной информации. Сумматор 69 суммирует прогностический блок, генерируемый модулем пространственного прогнозирования 62, с остаточным блоком от модуля 66 обратного преобразования для формирования декодированного блока.
Поблочное кодирование видеосигнала иногда может приводить к визуально воспринимаемой блочности на границах блоков кодированного видеокадра. В таких случаях противоблоковая фильтрация может сглаживать границы блоков для снижения или устранения визуально воспринимаемой блочности. При этом противоблоковый фильтр (не показан) также можно применять для фильтрации декодированных блоков для снижения или устранения блочности. После любой необязательной противоблоковой фильтрации реконструированные блоки помещаются в хранилище 68 кадров, которое обеспечивает опорные блоки для пространственного и временного прогнозирования и также выдает декодированный видеосигнал на устройство отображения (например, устройство 28, показанное на фиг. 1).
На фиг. 5 показана блок-схема, более подробно демонстрирующая иллюстративный модуль декодирования, например модуль 60 энтропийного декодирования видеодекодера 26. Модуль 60 энтропийного декодирования принимает кодированные видеоданные для блока и декодирует видеоданные для генерации данных блока в виде остаточной информации и информации заголовка. В примере, показанном на фиг. 3, модуль 46 энтропийного кодирования включает в себя модуль декодирования 70, модуль 71 выбора таблицы кодирования и модуль 72 прогнозирования синтаксических элементов.
Модуль 71 выбора таблицы кодирования и модуль 72 прогнозирования синтаксических элементов, по существу, аналогичны модулю 52 выбора таблицы кодирования и модулю 54 выбора синтаксического элемента, показанным на фиг. 3. Модуль 71 выбора таблицы кодирования адаптивно выбирает таблицу кодирования для использования модулем декодирования 70 при декодировании синтаксического элемента типа блока текущего блока на основании типов блока ранее декодированных блоков, что подробно описано выше. Модуль 72 прогнозирования синтаксических элементов прогнозирует один или несколько других синтаксических элементов текущего блока на основании, по меньшей мере, одного ранее декодированного блока и обеспечивает прогнозируемые синтаксические элементы для модуля декодирования 70. Модуль декодирования 70 принимает прогнозируемые синтаксические элементы от модуля 72 прогнозирования синтаксических элементов, и если флаг в кодированном битовом потоке указывает успешное прогнозирование на кодере, модуль декодирования 70 выбирает прогнозируемые синтаксические элементы как синтаксические элементы текущего блока.
На фиг. 6 показана логическая блок-схема, демонстрирующая принцип работы модуля кодирования, например модуля энтропийного кодирования 46 видеокодера 20, кодирующего информацию заголовка для видеоблока, согласно методикам, отвечающим данному раскрытию. Фиг. 6 описана применительно к кодированию синтаксического элемента типа блока для блока. Однако, как описано выше, методики, отвечающие данному раскрытию, можно дополнительно применять к адаптивному выбору таблицы кодирования для кодирования других синтаксических элементов текущего видеоблока, например режима прогнозирования, CBP яркости, CBP цветности, разбиения на блоки, вектора движения и пр. Модуль 46 энтропийного кодирования принимает информацию заголовка видеоблока, подлежащего кодированию (73). Информация заголовка видеоблока может включать в себя ряд синтаксических элементов, которые указывают конкретные характеристики блока, например тип блока, режим прогнозирования, CBP яркости и CBP цветности.
Модуль 46 энтропийного кодирования адаптивно выбирает таблицу кодирования для использования при кодировании типа блока для блока на основании типов блока ранее кодированных блоков (74). В одном примере модуль 46 энтропийного кодирования может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего блока на основании одного или нескольких соседних видеоблоков, например на основании типа блока верхнего соседнего блока и левого соседнего блока. Для внутренне-кодированного блока модуль 46 энтропийного кодирования может выбирать таблицу кодирования, которая связывает типы блока Intra 4x4 или Intra 8x8 с более коротким кодовым словом, чем тип блока Intra 16x16, когда верхний соседний блок и левый соседний блок не имеют типов блока Intra 16x16, и выбирать таблицу кодирования, которая связывает тип блока Intra 16x16 с более коротким кодовым словом, чем типы блока Intra 4x4 или Intra 8x8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16. Модуль 46 энтропийного кодирования кодирует тип блока для блока согласно выбранной таблице кодирования (75).
Модуль 46 энтропийного кодирования определяет, прогнозировать ли режим прогнозирования, CBP яркости и CBP цветности текущего блока на основании одного или нескольких ранее кодированных блоков (76). Когда модуль 46 энтропийного кодирования способен прогнозировать режим прогнозирования, CBP яркости и CBP цветности, модуль 46 энтропийного кодирования генерирует эти прогнозы (78). Например, модуль 46 энтропийного кодирования может прогнозировать режим прогнозирования и CBP яркости/цветности текущего блока как режим прогнозирования и CBP яркости/цветности одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16.
Модуль 46 энтропийного кодирования определяет, совпадают ли режим прогнозирования и CBP яркости/цветности текущего блока с прогнозируемыми режимом прогнозирования и CBP яркости/цветности (80). Если режим прогнозирования и CBP яркости/цветности совпадают с прогнозируемыми, модуль 46 энтропийного кодирования кодирует флаг, который указывает, что прогнозирование режима и CBP увенчалось успехом (82). Модуль 46 энтропийного кодирования передает кодированный битовый поток (84). В этом случае кодированный битовый поток включает в себя синтаксический элемент типа кодированного блока и кодированный флаг.
Если прогнозируемый режим прогнозирования и CBP яркости/цветности не совпадают с режимом прогнозирования и CBP яркости/цветности текущего блока, модуль 46 энтропийного кодирования кодирует флаг для указания того, что прогнозирование не увенчалось успехом (86). После кодирования флага для указания, что прогнозирование режима и CBP не увенчалось успехом, или когда модуль 46 энтропийного кодирования не осуществляет прогнозирование режима и CBP, модуль 46 энтропийного кодирования определяет, прогнозировать ли режим прогнозирования текущего блока (88). Когда модуль 46 энтропийного кодирования не способен прогнозировать режим прогнозирования, модуль 46 энтропийного кодирования кодирует остальные синтаксические элементы заголовка по отдельности (96). В этом случае остальные синтаксические элементы заголовка включают в себя тип блока, режим прогнозирования и CBP яркости и цветности. Когда модуль 46 энтропийного кодирования способен прогнозировать режим прогнозирования, модуль 46 энтропийного кодирования может прогнозировать режим прогнозирования текущего блока как режим прогнозирования одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16 (90).
Модуль 46 энтропийного кодирования определяет, совпадают ли режим прогнозирования текущего блока с прогнозируемым режимом прогнозирования (92). Если режим прогнозирования текущего блока совпадает с прогнозируемым режимом прогнозирования, модуль 46 энтропийного кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования увенчалось успехом (94). Модуль энтропийного кодирования 46 дополнительно кодирует остальные синтаксические элементы заголовка по отдельности (96). В этом случае остальные синтаксические элементы заголовка включают в себя CBP яркости и CBP цветности.
Если режим прогнозирования текущего блока не совпадает с прогнозируемым режимом прогнозирования, модуль 46 энтропийного кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования не увенчалось успехом (98). Модуль 46 энтропийного кодирования кодирует остальные синтаксические элементы заголовка по отдельности (96). В этом случае остальные синтаксические элементы заголовка включают в себя режим прогнозирования, а также CBP яркости и цветности. После кодирования остальных синтаксических элементов модуль 46 энтропийного кодирования передает кодированный битовый поток (84). Модуль 46 энтропийного кодирования может передавать кодированные данные по мере их генерации, например передавать тип кодированного блока, когда он генерируется, сопровождаемый кодированным флагом. Альтернативно модуль 46 энтропийного кодирования может сохранять кодированные данные для блока и одновременно передавать кодированные данные для блока. Альтернативно модуль 46 энтропийного кодирования может сохранять кодированные данные для всех блоков в секции и одновременно передавать кодированные данные для всех блоков в секции.
На фиг. 7 показана логическая блок-схема, демонстрирующая принцип работы модуля декодирования, например модуля 60 энтропийного декодирования видеодекодера 26 приемника, декодирующего информацию заголовка видеоблока согласно методикам, отвечающим данному раскрытию. Фиг. 7 описана применительно к декодированию синтаксического элемента типа блока для блока. Однако, как описано выше, методики, отвечающие данному раскрытию, можно дополнительно применять к адаптивному выбору таблицы кодирования для декодирования других синтаксических элементов текущего видеоблока, например режима прогнозирования, CBP яркости, CBP цветности, разбиения на блоки, вектора движения и пр. Модуль 60 энтропийного декодирования принимает кодированный видеоблок (100). Модуль 60 энтропийного декодирования адаптивно выбирает таблицу кодирования для использования при декодировании типа блока кодированного блока (102). В одном аспекте модуль 60 энтропийного декодирования адаптивно выбирает таблицу кодирования для декодирования типа блока текущего блока на основании типов блока одного или нескольких ранее декодированных блоков текущей секции. Например, для внутренне-кодированного блока модуль 60 энтропийного декодирования может выбирать таблицу кодирования, которая связывает с типом блока Intra 16x16 более короткое кодовое слово, чем с типами блока Intra 4x4 или Intra 8x8, когда верхний соседний блок и левый соседний блок имеют типы блока Intra 16x16, и выбирать таблицу кодирования, которая связывает более короткое кодовое слово с типами блока Intra 4x4/8x8, чем с типом блока Intra 16x16, когда, по меньшей мере, один из верхнего соседнего блока и левого соседнего блока не имеет тип блока Intra 16x16. В других аспектах модуль 60 энтропийного декодирования может выбирать таблицу кодирования на основании других критериев, например на основании процента ранее декодированных блоков, которые имеют типы блока Intra 16x16. Для поддержания синхронизации кодера и декодера кодер и декодер используют один и тот же критерий для выбора таблиц кодирования. Модуль 60 энтропийного декодирования декодирует тип блока текущего блока с использованием выбранной таблицы кодирования (104).
Модуль 60 энтропийного декодирования также может прогнозировать режим прогнозирования и CBP яркости/цветности для текущего блока на основании режима прогнозирования и CBP яркости/цветности одного или нескольких соседних блоков (106). Например, модуль 60 энтропийного декодирования может прогнозировать режим прогнозирования и CBP яркости/цветности текущего блока как режим прогнозирования и CBP яркости/цветности одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Модуль 60 энтропийного декодирования может определять, указывает ли флаг в кодированном битовом потоке, что прогнозирование режима прогнозирования и CBP увенчалось успехом (108). Если флаг в кодированном битовом потоке указывает, что прогнозирование режима прогнозирования и CBP увенчалось успехом, например флаг, представляющий успех прогнозирования, равен единице, модуль 60 энтропийного декодирования может выбирать прогнозируемый режим прогнозирования и CBP в качестве режима прогнозирования и CBP текущего блока (110).
В случае неуспешного прогнозирования режима прогнозирования и CBP яркости/цветности, например, когда флаг, представляющий успех прогнозирования, равен нулю, модуль 60 энтропийного декодирования может прогнозировать режим прогнозирования блока на основании режима прогнозирования одного или нескольких соседних блоков (112). Например, модуль 60 энтропийного декодирования может прогнозировать режим прогнозирования текущего блока как режим прогнозирования одного из соседних блоков, когда, по меньшей мере, один из соседних блоков имеет тип блока Intra 16x16. Модуль 60 энтропийного декодирования определяет, указывает ли флаг в кодированном битовом потоке, что прогнозирование режима прогнозирования увенчалось успехом (114). Флаг можно, например, задавать равным 1 в случае успешного прогнозирования режима прогнозирования и задавать равным 0 в случае неуспешного прогнозирования режима прогнозирования. Если флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом, модуль 60 энтропийного декодирования выбирает прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего блока (116).
После выбора прогнозируемого режима прогнозирования в качестве режима прогнозирования текущего блока или когда флаг указывает, что прогнозирование режима прогнозирования не увенчалось успехом, модуль 60 энтропийного декодирования декодирует остальные синтаксические элементы заголовка блока по отдельности с использованием соответствующих таблиц кодирования (118). В случае успешного прогнозирования режима прогнозирования остальные синтаксические элементы заголовка, декодированные модулем 60 энтропийного декодирования, включают в себя CBP яркости и цветности. В случае неуспешного прогнозирования режима прогнозирования остальные синтаксические элементы заголовка, декодированные модулем 60 энтропийного декодирования, включают в себя режим прогнозирования, CBP яркости и CBP цветности с использованием соответствующих таблиц кодирования (118).
Методики, отвечающие данному раскрытию, можно реализовать в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, можно реализовать совместно в интегральном логическом устройстве или по отдельности в виде дискретных, но взаимодействующих между собой логических устройств. В случае программной реализации методики можно реализовать, по меньшей мере, отчасти посредством компьютерно-считываемого носителя, содержащего инструкции, которые при их наполнении осуществляют один или несколько из вышеописанных способов. Компьютерно-считываемый носитель может составлять часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Компьютерно-считываемый носитель может содержать оперативную память (ОЗУ, RAM), например синхронную динамическую оперативную память (SDRAM), постоянную память (ПЗУ, ROM), энергонезависимую оперативную память (NVRAM), электрически стираемую программируемую оперативную память (ЭСППЗУ, EEPROM), флэш-память, магнитные или оптические носители данных и пр. Методики дополнительно или альтернативно можно реализовать, по меньшей мере, отчасти посредством компьютерно-считываемой среды связи, которая переносит или передает код в виде инструкций или структур данных и которая допускает доступ, чтение и/или выполнение со стороны компьютера.
Код может исполняться одним или несколькими процессорами, например одним или несколькими цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), вентильными матрицами, программируемыми пользователем (FPGA), или другой эквивалентной интегральной или дискретной логической схемой. Соответственно, используемый здесь термин “процессор” может означать любую из вышеописанных структур или любую другую структуру, пригодную для реализации описанных здесь методик. Кроме того, в некоторых аспектах описанные здесь функции можно обеспечить посредством специализированных программных модулей или аппаратных модулей, предназначенных для кодирования и декодирования или внедренных в объединенный видеокодер-декодер (кодек). Описание различных признаков в виде модулей призвано подчеркнуть различные функциональные аспекты показанных устройств и не предполагает, что такие модули нужно реализовать в виде отдельных аппаратных или программных компонентов. Напротив, функции, связанные с одним или несколькими модулями, могут быть объединены в общем или отдельных аппаратных или программных компонентах.
Были описаны различные варианты осуществления изобретения. Эти и другие варианты осуществления ограничены объемом, определяемым нижеследующей формулой изобретения.
Изобретение относится к кодированию цифрового видеосигнала и, в частности, к кодированию информации заголовков блоков видеопоследовательности. Техническим результатом является обеспечение адаптивного кодирования информации заголовка видеоблока на основании одного или нескольких ранее кодированных видеоблоков. Указанный технический результат достигается тем, что видеокодер адаптивно выбирает таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока на основании соответствующих синтаксических элементов одного или нескольких ранее кодированных блоков. Также видеокодер может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего блока на основании типов блока одного или нескольких видеоблоков, соседствующих с текущим видеоблоком, т.е. соседних видеоблоков. Видеокодер также может прогнозировать один или несколько других синтаксических элементов заголовка текущего блока на основании по меньшей мере одного из ранее кодированных видеоблоков. Если прогнозирование увенчалось успехом, видеокодер может кодировать флаг для указания успеха прогнозирования. 8 н. и 84 з.п. ф-лы, 7 ил.
1. Способ кодирования видеоданных, содержащий этапы, на которых
выбирают таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирают таблицу кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее кодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования что и первый режим прогнозирования соответственно; и
кодируют синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
2. Способ по п.1, в котором на этапе выбора таблицы кодирования выбирают таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее кодированных видеоблоков не является первым типом блока.
3. Способ по п.2, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
4. Способ по п.1, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом способ дополнительно содержит этапы, на которых
прогнозируют по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
кодируют флаг для указания того, что прогнозирование этого по меньшей мере одного другого синтаксического элемента заголовка увенчалось успехом, когда упомянутый по меньшей мере один прогнозируемый синтаксический элемент заголовка совпадает с фактическим синтаксическим элементом заголовка текущего видеоблока.
5. Способ по п.4, в котором
на этапе прогнозирования по меньшей мере одного другого синтаксического элемента заголовка текущего видеоблока прогнозируют режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
на этапе кодирования флага кодируют флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока.
6. Способ по п.5, дополнительно содержащий этапы, на которых
кодируют флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности не совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока, и
кодируют каждый из режима прогнозирования, СВР яркости и СВР цветности по отдельности.
7. Способ по п.6, в котором флаг является первым флагом, и на этапе кодирования каждого из режима прогнозирования, СВР яркости и СВР цветности по отдельности
прогнозируют режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
кодируют второй флаг для указания того, что прогнозирование режима прогнозирования увенчалось успехом, когда прогнозируемый режим прогнозирования совпадает с фактическим режимом прогнозирования текущего видеоблока.
8. Способ по п.1, в котором на этапе выбора таблицы кодирования выбирают таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков, соседствующих с текущим видеоблоком.
9. Способ по п.8, в котором один или несколько ранее кодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее кодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее кодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
10. Способ по п.1, дополнительно содержащий этап, на котором передают кодированный синтаксический элемент.
11. Способ по п.1, в котором синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки.
12. Способ по п.1, в котором кодированная единица представляет собой кадр или секцию.
13. Устройство кодирования, содержащее модуль кодирования, который включает в себя
модуль выбора, который выбирает таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирается таблица кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее кодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
модуль кодирования, который кодирует синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
14. Устройство по п.13, в котором модуль выбора выбирает таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее кодированных видеоблоков не является первым типом блока.
15. Устройство по п.14, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
16. Устройство по п.13, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом устройство дополнительно содержит
модуль прогнозирования, который прогнозирует по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков,
при этом модуль кодирования кодирует флаг для указания того, что прогнозирование этого по меньшей мере одного другого синтаксического элемента заголовка увенчалось успехом, когда упомянутый по меньшей мере один прогнозируемый синтаксический элемент заголовка совпадает с фактическим синтаксическим элементом заголовка текущего видеоблока.
17. Устройство по п.16, в котором
модуль прогнозирования прогнозирует режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
модуль кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока.
18. Устройство по п.17, в котором модуль кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности не совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока, и кодирует каждый из режима прогнозирования, СВР яркости и СВР цветности по отдельности.
19. Устройство по п.18, в котором флаг является первым флагом, и
модуль прогнозирования прогнозирует режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
модуль кодирования кодирует второй флаг для указания того, что прогнозирование режима прогнозирования увенчалось успехом, когда прогнозируемый режим прогнозирования совпадает с фактическим режимом прогнозирования текущего видеоблока.
20. Устройство по п.13, в котором модуль выбора выбирает таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков, соседствующих с текущим видеоблоком.
21. Устройство по п.20, в котором один или несколько ранее кодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее кодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее кодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
22. Устройство по п.13, дополнительно содержащее передатчик, который передает кодированный синтаксический элемент.
23. Устройство по п.13, в котором синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки.
24. Устройство по п.13, в котором кодированная единица представляет собой кадр или секцию.
25. Устройство по п.13, которое представляет собой устройство беспроводной связи.
26. Устройство по п.13, которое представляет собой устройство на основе интегральной схемы.
27. Компьютерно-считываемый носитель, содержащий инструкции, предписывающие процессору
выбирать таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирается таблица кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее кодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
кодировать синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
28. Компьютерно-считываемый носитель по п.27, в котором инструкции, предписывающие процессору выбирать таблицу кодирования, содержат инструкции, предписывающие процессору выбирать таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее кодированных видеоблоков не является первым типом блока.
29. Компьютерно-считываемый носитель по п.28, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
30. Компьютерно-считываемый носитель по п.27, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, причем компьютерно-считываемый носитель дополнительно содержит инструкции, предписывающие процессору прогнозировать по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
кодировать флаг для указания того, что прогнозирование этого по меньшей мере одного другого синтаксического элемента заголовка увенчалось успехом, когда упомянутый по меньшей мере один прогнозируемый синтаксический элемент заголовка совпадает с фактическим синтаксическим элементом заголовка текущего видеоблока.
31. Компьютерно-считываемый носитель по п.30, в котором инструкции, предписывающие процессору прогнозировать по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока, содержат инструкции, предписывающие процессору прогнозировать режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
инструкции, предписывающие процессору кодировать флаг, содержат инструкции, предписывающие процессору кодировать флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока.
32. Компьютерно-считываемый носитель по п.31, дополнительно содержащий инструкции, предписывающие процессору
кодировать флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности не совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока, и
кодировать каждый из режима прогнозирования, СВР яркости и СВР цветности по отдельности.
33. Компьютерно-считываемый носитель по п.32, при этом флаг является первым флагом, и инструкции, предписывающие процессору кодировать каждый из режима прогнозирования, СВР яркости и СВР цветности по отдельности, содержат инструкции, предписывающие процессору
прогнозировать режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
кодировать второй флаг для указания того, что прогнозирование режима прогнозирования увенчалось успехом, когда прогнозируемый режим прогнозирования совпадает с фактическим режимом прогнозирования текущего видеоблока.
34. Компьютерно-считываемый носитель по п.27, в котором инструкции, предписывающие процессору выбирать таблицу кодирования, содержат инструкции, предписывающие процессору выбирать таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков, соседствующих с текущим видеоблоком.
35. Компьютерно-считываемый носитель по п.34, при этом один или несколько ранее кодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее кодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее кодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
36. Компьютерно-считываемый носитель по п.27, дополнительно содержащий инструкции, предписывающие процессору передавать кодированный синтаксический элемент.
37. Компьютерно-считываемый носитель по п.27, при этом синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки.
38. Компьютерно-считываемый носитель по п.27, при этом кодированная единица представляет собой кадр или секцию.
39. Устройство кодирования, содержащее средство для выбора таблицы кодирования для использования при кодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков кодированной единицы, при этом синтаксический элемент текущего видеоблока содержит тип блока текущего видеоблока, и средство выбора выбирает таблицу кодирования, которая связывает первый тип блока с более коротким кодовым словом, чем другие типы блока, когда типы блока упомянутых одного или нескольких ранее кодированных видеоблоков являются первым типом блока; и
средство для кодирования синтаксического элемента текущего видеоблока с использованием выбранной таблицы кодирования.
40. Устройство по п.39, в котором средство выбора выбирает таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее кодированных видеоблоков не является первым типом блока.
41. Устройство по п.40, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
42. Устройство по п.39, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом устройство дополнительно содержит
средство для прогнозирования по меньшей мере одного другого синтаксического элемента заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков,
причем средство кодирования кодирует флаг для указания того, что прогнозирование этого по меньшей мере одного другого синтаксического элемента заголовка увенчалось успехом, когда упомянутый по меньшей мере один прогнозируемый синтаксический элемент заголовка совпадает с фактическим синтаксическим элементом заголовка текущего видеоблока.
43. Устройство по п.42, в котором
средство прогнозирования прогнозирует режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
средство кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока.
44. Устройство по п.43, в котором средство кодирования кодирует флаг для указания того, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом, когда прогнозируемые режим прогнозирования, СВР яркости и СВР цветности не совпадают с фактическими режимом прогнозирования, СВР яркости и СВР цветности текущего видеоблока, и кодирует каждый из режима прогнозирования, СВР яркости и СВР цветности по отдельности.
45. Устройство по п.44, в котором флаг является первым флагом, и
средство прогнозирования прогнозирует режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее кодированных видеоблоков, и
средство кодирования кодирует второй флаг для указания того, что прогнозирование режима прогнозирования увенчалось успехом, когда прогнозируемый режим прогнозирования совпадает с фактическим режимом прогнозирования текущего видеоблока.
46. Устройство по п.39, в котором средство выбора выбирает таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее кодированных видеоблоков, соседствующих с текущим видеоблоком.
47. Устройство по п.46, в котором один или несколько ранее кодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее кодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее кодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
48. Устройство по п.39, дополнительно содержащее средство для передачи кодированного синтаксического элемента.
49. Устройство по п.39, в котором синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки.
50. Устройство по п.39, в котором кодированная единица представляет собой кадр или секцию.
51. Способ декодирования видеоданных, содержащий этапы, на которых
выбирают таблицу кодирования для использования при декодировании синтаксического элемента текущего видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирают таблицу кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее декодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
декодируют синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
52. Способ по п.51, в котором на этапе выбора таблицы кодирования выбирают таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее декодированных видеоблоков не является первым типом блока.
53. Способ по п.52, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
54. Способ по п.51, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом способ дополнительно содержит этапы, на которых
прогнозируют по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
выбирают этот по меньшей мере один прогнозируемый синтаксический элемент в качестве синтаксического элемента текущего видеоблока, когда флаг указывает, что прогнозирование синтаксического элемента увенчалось успехом.
55. Способ по п.54, в котором
на этапе прогнозирования по меньшей мере одного другого синтаксического элемента заголовка текущего видеоблока прогнозируют режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
на этапе выбора по меньшей мере одного прогнозируемого синтаксического элемента выбирают прогнозируемый режим прогнозирования, СВР яркости и СВР цветности в качестве режима прогнозирования, СВР яркости и СВР цветности текущего видеоблока, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом.
56. Способ по п.55, дополнительно содержащий этап, на котором по отдельности декодируют каждый из режима прогнозирования, СВР яркости и СВР цветности, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом.
57. Способ по п.56, в котором флаг является первым флагом, и на этапе декодирования по отдельности каждого из режима прогнозирования, СВР яркости и СВР цветности
прогнозируют режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
выбирают прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего видеоблока, когда второй флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом.
58. Способ по п.51, в котором на этапе выбора таблицы кодирования выбирают таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков, соседствующих с текущим видеоблоком.
59. Способ по п.58, в котором один или несколько ранее декодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее декодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее декодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
60. Способ по п.51, в котором синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки, и
кодированная единица представляет собой кадр или секцию.
61. Устройство декодирования, содержащее модуль выбора, который выбирает таблицу кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирается таблица кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее декодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
модуль декодирования, который декодирует синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
62. Устройство по п.61, в котором модуль выбора выбирает таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее декодированных видеоблоков не является первым типом блока.
63. Устройство по п.62, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
64. Устройство по п.61, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом устройство дополнительно содержит
модуль прогнозирования, который прогнозирует по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков,
причем модуль декодирования выбирает этот по меньшей мере один прогнозируемый синтаксический элемент в качестве синтаксического элемента текущего видеоблока, когда флаг указывает, что прогнозирование синтаксического элемента увенчалось успехом.
65. Устройство по п.64, в котором
модуль прогнозирования прогнозирует режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
модуль декодирования выбирает прогнозируемый режим прогнозирования, СВР яркости и СВР цветности в качестве режима прогнозирования, СВР яркости и СВР цветности текущего видеоблока, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом.
66. Устройство по п.65, в котором модуль декодирования по отдельности декодирует каждый из режима прогнозирования, СВР яркости и СВР цветности, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом.
67. Устройство по п.66, в котором флаг является первым флагом, и
модуль прогнозирования прогнозирует режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
модуль декодирования выбирает прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего видеоблока, когда второй флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом.
68. Устройство по п.61, в котором модуль выбора выбирает таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков, соседствующих с текущим видеоблоком.
69. Устройство по п.68, в котором один или несколько ранее декодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее декодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее декодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
70. Устройство по п.61, которое представляет собой устройство беспроводной связи.
71. Устройство по п.61, которое представляет собой устройство на основе интегральной схемы.
72. Устройство по п.61, в котором
синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки, и
кодированная единица представляет собой кадр или секцию.
73. Компьютерно-считываемый носитель, содержащий инструкции, предписывающие процессору
выбирать таблицу кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирается таблица кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее декодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
декодировать синтаксический элемент текущего видеоблока с использованием выбранной таблицы кодирования.
74. Компьютерно-считываемый носитель по п.73, в котором инструкции, предписывающие процессору выбирать таблицу кодирования, содержат инструкции, предписывающие процессору выбирать таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее декодированных видеоблоков не является первым типом блока.
75. Компьютерно-считываемый носитель по п.74, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
76. Компьютерно-считываемый носитель по п.73, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, причем компьютерно-считываемый носитель дополнительно содержит инструкции, предписывающие процессору
прогнозировать по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока на основании одного из
упомянутых одного или нескольких ранее декодированных видеоблоков, и
выбирать этот по меньшей мере один прогнозируемый синтаксический элемент в качестве синтаксического элемента текущего видеоблока, когда флаг указывает, что прогнозирование синтаксического элемента увенчалось успехом.
77. Компьютерно-считываемый носитель по п.76, в котором инструкции, предписывающие процессору прогнозировать по меньшей мере один другой синтаксический элемент заголовка текущего видеоблока, содержат инструкции, предписывающие процессору прогнозировать режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
инструкции, предписывающие процессору выбирать по меньшей мере один прогнозируемый синтаксический элемент, содержат инструкции, предписывающие процессору выбирать прогнозируемый режим прогнозирования, СВР яркости и СВР цветности в качестве режима прогнозирования, СВР яркости и СВР цветности текущего видеоблока, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом.
78. Компьютерно-считываемый носитель по п.77, дополнительно содержащий инструкции, предписывающие процессору по отдельности декодировать каждый из режима прогнозирования, СВР яркости и СВР цветности, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом.
79. Компьютерно-считываемый носитель по п.78, при этом флаг является первым флагом, и инструкции, предписывающие процессору по отдельности декодировать каждый из режима прогнозирования, СВР яркости и СВР цветности, содержат инструкции, предписывающие процессору
прогнозировать режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
выбирать прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего видеоблока, когда второй флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом.
80. Компьютерно-считываемый носитель по п.73, в котором инструкции, предписывающие процессору выбирать таблицу кодирования, содержат инструкции, предписывающие процессору выбирать таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков, соседствующих с текущим видеоблоком.
81. Компьютерно-считываемый носитель по п.80, при этом один или несколько ранее декодированных видеоблоков, соседствующие с текущим видеоблоком, содержат по меньшей мере первый ранее декодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее декодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
82. Компьютерно-считываемый носитель по п.73, при этом синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки, и
кодированная единица представляет собой кадр или секцию.
83. Устройство декодирования, содержащее
средство для выбора таблицы кодирования для использования при декодировании синтаксического элемента текущего кодированного видеоблока кодированной единицы на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков кодированной единицы, причем синтаксический элемент текущего видеоблока содержит одно из типа блока текущего видеоблока, флага кодированного блока и режима прогнозирования, при этом при выборе таблицы кодирования выбирается таблица кодирования, которая связывает первый тип блока, первый флаг кодированного блока или первый режим прогнозирования с более коротким кодовым словом, чем другие типы блока, флаги кодированного блока или режимы прогнозирования соответственно, когда упомянутые один или несколько ранее декодированных видеоблоков имеют те же типы блока, что и первый тип блока, те же флаги кодированного блока, что и первый флаг кодированного блока, или те же режимы прогнозирования, что и первый режим прогнозирования соответственно; и
средство для декодирования синтаксического элемента текущего видеоблока с использованием выбранной таблицы кодирования.
84. Устройство по п.83, в котором средство выбора выбирает таблицу кодирования, которая связывает по меньшей мере один из других типов блока с более коротким кодовым словом, чем кодовое слово, связанное с первым типом блока, когда тип блока по меньшей мере одного из упомянутых одного или нескольких ранее декодированных видеоблоков не является первым типом блока.
85. Устройство по п.84, в котором первый тип блока является типом блока Intra 16×16, и другие типы блока включают в себя по меньшей мере тип блока Intra 4×4 и тип блока Intra 8×8.
86. Устройство по п.83, в котором синтаксический элемент содержит первый синтаксический элемент заголовка текущего видеоблока, при этом устройство дополнительно содержит
средство для прогнозирования по меньшей мере одного другого синтаксического элемента заголовка текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков,
причем средство декодирования выбирает этот по меньшей мере один прогнозируемый синтаксический элемент в качестве синтаксического элемента текущего видеоблока, когда флаг указывает, что прогнозирование синтаксического элемента увенчалось успехом.
87. Устройство по п.86, в котором
средство прогнозирования прогнозирует режим прогнозирования, шаблон кодированных блоков (СВР) яркости и СВР цветности текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
средство декодирования выбирает прогнозируемый режим прогнозирования, СВР яркости и СВР цветности в качестве режима прогнозирования, СВР яркости и СВР цветности текущего видеоблока, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности увенчалось успехом.
88. Устройство по п.87, в котором средство декодирования по отдельности декодирует каждый из режима прогнозирования, СВР яркости и СВР цветности, когда флаг указывает, что прогнозирование режима прогнозирования, СВР яркости и СВР цветности не увенчалось успехом.
89. Устройство по п.88, в котором флаг является первым флагом, и
средство прогнозирования прогнозирует режим прогнозирования текущего видеоблока на основании одного из упомянутых одного или нескольких ранее декодированных видеоблоков, и
средство декодирования выбирает прогнозируемый режим прогнозирования в качестве режима прогнозирования текущего видеоблока, когда второй флаг указывает, что прогнозирование режима прогнозирования увенчалось успехом.
90. Устройство по п.83, в котором средство выбора выбирает таблицу кодирования на основании соответствующего синтаксического элемента одного или нескольких ранее декодированных видеоблоков, соседствующих с текущим видеоблоком.
91. Устройство по п.90, в котором один или несколько ранее декодированных видеоблоков, соседствующих с текущим видеоблоком, содержат по меньшей мере первый ранее декодированный соседний видеоблок, расположенный непосредственно над текущим видеоблоком, и второй ранее декодированный соседний видеоблок, расположенный непосредственно влево от текущего видеоблока.
92. Устройство по п.83, в котором синтаксический элемент содержит одно из типа блока, режима прогнозирования, шаблона кодированных блоков (СВР) и разбиения на блоки, и
кодированная единица представляет собой кадр или секцию.
WO 2007027402 А2, 08.03.2007 | |||
US 2006115000 А, 01.06.2006 | |||
US 2004240559 А1, 02.12.2004 | |||
US 2004081241 A1, 29.04.2004 | |||
US 2007223579 A1, 27.09.2007 | |||
ЕР 1619901 A2, 25.01.2006 | |||
БЛОК (ВАРИАНТЫ) И СПОСОБ СОПРЯЖЕНИЯ ДЛЯ ОБМЕНА ИНФОРМАЦИЕЙ МЕЖДУ КОМПЬЮТЕРОМ И ПОЛЕВЫМ ПРИБОРОМ | 2007 |
|
RU2434270C2 |
US 2007097850 A1, 03.05.2007 | |||
US 2007030180 A1, 08.02.2007 | |||
RU 2004131857 A, 20.04.2005 | |||
ЯН РИЧАРДСОН | |||
Железнодорожный снегоочиститель | 1920 |
|
SU264A1 |
Авторы
Даты
2012-05-27—Публикация
2008-10-10—Подача