Адаптивное кодирование информации заголовка видеоблока
Иллюстрации
Показать всеИзобретение относится к кодированию цифрового видеосигнала и, в частности, к кодированию информации заголовков блоков видеопоследовательности. Техническим результатом является обеспечение адаптивного кодирования информации заголовка видеоблока на основании одного или нескольких ранее кодированных видеоблоков. Указанный технический результат достигается тем, что видеокодер адаптивно выбирает таблицу кодирования для использования при кодировании синтаксического элемента текущего видеоблока на основании соответствующих синтаксических элементов одного или нескольких ранее кодированных блоков. Также видеокодер может адаптивно выбирать таблицу кодирования для использования при кодировании типа блока текущего блока на основании типов блока одного или нескольких видеоблоков, соседствующих с текущим видеоблоком, т.е. соседних видеоблоков. Видеокодер также может прогнозировать один или несколько других синтаксических элементов заголовка текущего блока на основании по меньшей мере одного из ранее кодированных видеоблоков. Если прогнозирование увенчалось успехом, видеокодер может кодировать флаг для указания успеха прогнозирования. 8 н. и 84 з.п. ф-лы, 7 ил.
Реферат
Данная заявка притязает на приоритет предварительной заявки США № 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 энтропийного кодирования. Внутриконтурный противоблоков