ВЫБОР КОДОВОЙ ТАБЛИЦЫ ПЕРЕМЕННОЙ ДЛИНЫ НА ОСНОВЕ СТАТИСТИКИ ТИПА БЛОКОВ ДЛЯ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ УТОЧНЕНИЯ
SELECTION OF CODE TABLE OF VARIABLE LENGTH BASED ON STATISTICS OF TYPE OF UNITS FOR CODING OF SPECIFICATION COEFFICIENTS

Эта заявка заявляет преимущество следующей предварительной заявки США, все содержимое которой включено в нее по ссылке:
U.S. Provisional Application No. 60883741, filed January 5, 2007.
Область техники, к которой относится изобретение
Это раскрытие относится к цифровому кодированию видео и, особенно, к кодированию с переменной длиной (VLC) коэффициентов преобразования в расширенных уровнях схемы масштабируемого кодирования видео (SVC).
Уровень техники
Возможности цифрового видео могут быть включены в широкий спектр устройств, включая системы цифрового телевидения, цифровые системы прямого вещания, беспроводные устройства связи, беспроводные системы вещания, персональные электронные помощники (PDA), ноутбуки или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, игровые видеоустройства, игровые видеоконсоли, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видео, как MPEG-2, MPEG-4 или H.264/MPEG-4, Часть 10, Усовершенствованное кодирование видео (AVC), чтобы передавать и принимать цифровое видео более эффективно. Технологии сжатия видео выполняют пространственное и временное предсказание, чтобы уменьшить или удалить избыточность, присущую видеофрагментам.
В кодировании видео сжатие видео часто включает пространственное предсказание, оценку движения и компенсацию движения. Внутреннее кодирование основывается на пространственном предсказании, чтобы уменьшить или удалить пространственную избыточность между видеоблоками в рамках данного кадра. Интеркодирование основывается на временном предсказании, чтобы уменьшить или удалить временную избыточность между видеоблоками последовательных видеокадров видеофрагмента. Для интеркодирования видеокодер выполняет оценку движения, чтобы отслеживать движение соответствия видеоблоков между двумя или более смежными кадрами. Оценка движения генерирует векторы движения, которые указывают на перемещения видеоблоков относительно соответствующих видеоблоков предсказания в одном или более опорных кадрах. Компенсация движения использует упомянутые векторы движения, чтобы сгенерировать видеоблоки предсказания из опорного кадра. После компенсации движения, остаточный видеоблок формируется вычитанием видеоблока предсказания из исходного видеоблока, подлежащего кодированию.
Видеокодер обычно применяет процессы преобразования, квантования и кодирования коэффициентов преобразования для дальнейшего уменьшения скорости передачи битов, ассоциированной с коммуникацией остаточного блока. Кодирование коэффициентов преобразования остаточных блоков может привести к применению кодов с переменной длиной для дальнейшего сжатия коэффициентов, полученных путем операций преобразования и квантования. Например, таблица кодирования с переменной длиной (VLC) может использоваться для нахождения соответствия различных наборов коэффициентов кодовым словам переменной длины таким образом, что способствует эффективности кодирования. Разные таблицы VLC могут использоваться для разного видеоконтента. Видеодекодер выполняет обратные VLC операции, чтобы реконструировать коэффициенты, и затем выполнить обратное преобразование этих коэффициентов, чтобы реконструировать видеоинформацию. Видеодекодер может декодировать видеоинформацию на основе информации движения и остаточной информации, связанной с видеоблоками.
Некоторое видеокодирование использует технологии масштабирования. Например, масштабируемое видеокодирование (SVC) относится к видеокодированию, в котором используются базовый уровень и один или более масштабируемых расширенных уровней. Для SVC базовый уровень обычно переносит видеоданные с базовым уровнем качества. Один или более расширенных уровней переносят дополнительные видеоданные для поддержки высших пространственных, временных и/или SNR уровней. Базовый уровень может передаваться таким образом, что является более надежным, чем передача расширенных уровней. Расширенные уровни могут добавлять пространственное разрешение в кадры базового уровня, или могут добавлять дополнительные кадры, чтобы увеличить общую скорость передачи кадров. В одном примере наиболее надежные участки модулированного сигнала могут использоваться для передачи базового уровня, в то время как менее надежные участки модулированного сигнала могут использоваться для передачи расширенных уровней. Расширенные уровни могут определять разные типы коэффициентов, рассматриваемые как коэффициенты значимости и коэффициенты уточнения.
Сущность изобретения
В целом, это раскрытие описывает технологии для кодирования расширенного уровня в схеме масштабируемого кодирования видео (SVC). Упомянутые технологии предусматривают выбор таблиц кодирования с переменной длиной (VLC) во время процессов кодирования и декодирования. Упомянутые технологии могут использоваться в кодировании блоков коэффициентов преобразования и могут быть особенно полезны в кодировании VLC коэффициентов уточнения блоков расширенного уровня схемы SVC. Коэффициенты уточнения относятся к коэффициентам расширенного уровня, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имели ненулевые значения. Кодирование VLC коэффициентов уточнения может выполняться отдельно от кодирования VLC коэффициентов значимости, которые относятся к коэффициентам расширенного уровня, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имеют нулевые значения.
Согласно технологии этого раскрытия таблицы VLC выбираются для разных типов видеоблоков, например внутренних блоков и интерблоков. Таблицы могут выбираться один раз для каждого кадра видеоинформации или могут быть выбраны один раз для других типов кодированных блоков (как один раз на часть видеоинформации или один раз на уровень FGS кадра). Таблицы VLC для разных типов видеоблоков могут выбираться на основе статистики, связанной с ранее кодированными блоками. Например, таблица VLC для внутренних блоков может выбираться на основе статистики, связанной с ранее кодированными внутренними блоками. Подобным образом, таблица VLC для интерблоков может выбираться на основе статистики, связанной с ранее кодированными интерблоками. В одном примере упомянутая статистика для каждого типа видеоблока может содержать соотношение числа коэффициентов уточнения в ранее кодированных блоках, которые имеют то же значение знака относительно числа коэффициентов уточнения в ранее кодированных блоках, которые имеют обратное значение знака. На основе этого соотношения таблицы VLC могут выбираться для кодирования коэффициентов уточнения, связанных с блоками данного кадра, и когда встречается следующий кадр, это соотношение может быть вычислено снова, чтобы способствовать выборам таблицы VLC для этого кадра.
В одном примере это раскрытие предусматривает способ кодирования расширенного уровня схемы SVC, содержащий этапы, на которых определяют первую статистику, связанную с первым типом видеоблока, определяют вторую статистику, связанную со вторым типом видеоблока, выбирают таблицу VLC из множества таблиц VLC для использования в кодировании первого типа видеоблока на основе первой статистики, выбирают вторую таблицу VLC из множества таблиц VLC для использования в кодировании второго типа видеоблока на основе второй статистики, кодируют видеоблоки первого типа на основе первой таблицы VLC и кодируют видеоблоки второго типа на основе второй таблицы VLC.
В другом примере это раскрытие предусматривает устройство, которое кодирует расширенный уровень схемы SVC, причем упомянутое устройство содержит блок статистики, который определяет первую статистику, связанную с первым типом видеоблока, и определяет вторую статистику, связанную со вторым типом видеоблока, блок выбора таблицы, который выбирает первую таблицу VLC из множества таблиц VLC для использования в кодировании первого типа видеоблока на основе первой статистики и выбирает вторую таблицу VLC из множества таблиц VLC для использования в кодировании второго типа видеоблока на основе второй статистики, и блок кодирования, который кодирует видеоблоки первого типа на основе первой таблицы VLC и кодирует видеоблоки второго типа на основе второй таблицы VLC.
В другом примере это раскрытие предусматривает устройство, которое кодирует расширенный уровень схемы SVC, причем упомянутое устройство содержит средство для определения статистики, которое определяет первую статистику, связанную с первым типом видеоблока, и определяет вторую статистику, связанную со вторым типом видеоблока, средство для выбора, которое выбирает первую таблицу VLC из множества таблиц VLC для использования в кодировании первого типа видеоблока на основе первой статистики и выбирает вторую таблицу VLC из множества таблиц VLC для использования в кодировании второго типа видеоблока на основе второй статистики, и средство для кодирования, которое кодирует видеоблоки первого типа на основе первой таблицы VLC и кодирует видеоблоки второго типа на основе второй таблицы VLC.
Технологии, рассматриваемые в этом раскрытии, могут реализовываться в оборудовании, программном обеспечении, встроенном программном обеспечении или любой их комбинации. При реализации в программном обеспечении это программное обеспечение может выполняться в одном или более процессорах, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA) или цифровой сигнальный процессор (DSP). Программное обеспечение, которое выполняет упомянутые технологии, может первоначально храниться на машиночитаемом носителе и загружаться, и выполняться в процессоре.
Соответственно это раскрытие также предусматривает машиночитаемый носитель, содержащий инструкции, которые после выполнения в устройстве видеокодирования предписывают упомянутому устройству кодировать расширенный уровень схемы  SVC, причем упомянутые инструкции предписывают упомянутому устройству определять первую статистику, связанную с первым типом видеоблока, определять вторую статистику, связанную со вторым типом видеоблока, выбирать первую таблицу VLC из множества таблиц VLC для использования в кодировании первого типа видеоблока на основе первой статистики, выбирать вторую таблицу VLC из множества таблиц VLC для использования в кодировании второго типа видеоблока на основе второй статистики, кодировать видеоблоки первого типа на основе первой таблицы VLC и кодировать видеоблоки второго типа на основе второй таблицы VLC.
В некоторых случаях упомянутый машиночитаемый носитель может стать частью компьютерного программного продукта, который может продаваться производителям и/или использоваться в устройстве видеокодирования. Этот компьютерный программный продукт может включать машиночитаемый носитель, и в некоторых случаях может также включать упаковочные материалы.
В других случаях эти раскрытия могут быть направлены на схему, такую как интегральная схема, набор микросхем, специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA), логика или различные их комбинации, сконфигурированные для выполнения одной или более технологий, описанных здесь.
Подробности одного или более аспектов этого раскрытия излагаются в сопроводительных чертежах и описании ниже. Другие признаки, задачи и преимущества технологий, описанных в этом раскрытии, будут очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
ФИГ.1 - иллюстративная блок-схема, иллюстрирующая систему кодирования и декодирования видео.
ФИГ.2 - концептуальная схема, иллюстрирующая видеокадры базового уровня и расширенный уровень масштабируемого потока битов видео.
ФИГ.3 - блок-схема, иллюстрирующая пример видеокодера в соответствии с этим раскрытием.
ФИГ.4 - блок-схема, иллюстрирующая пример видеодекодера в соответствии с этим раскрытием.
ФИГ.5 - иллюстративная блок-схема блока кодирования с переменной длиной (VLC).
ФИГ.6 - иллюстративная блок-схема блока декодирования VLC.
ФИГ.7 - схема последовательности операций, иллюстрирующая технологию VLC для кодирования с переменной длиной в соответствии с этим раскрытием.
Подробное описание
Это раскрытие описывает технологию для кодирования расширенного уровня в схеме масштабируемого кодирования видео (SVC). Эта технология предусматривает выбор таблиц кодирования с переменной длиной (VLC) в кодере и в декодере. А именно технологии выбора таблицы VLC аналогичны в том, что выбор таблицы VLC выполняется в кодере, чтобы кодировать информацию, и в декодере, чтобы декодировать информацию. Технологии могут использоваться в кодировании коэффициентов преобразования, и особенно полезны в кодировании с переменной длиной коэффициентов уточнения расширенного уровня схемы SVC. Коэффициенты уточнения относятся к коэффициентам расширенного уровня, для которых соответствующие коэффициенты предыдущего уровня в схеме SVC имели ненулевые значения. В отличие от них коэффициенты значимости относятся к коэффициентам расширенного уровня, для которых соответствующие коэффициенты предыдущего уровня в схеме SVC имеют нулевые значения. Кодирование с переменной длиной коэффициентов уточнения может выполняться отдельно от кодирования с переменной длиной коэффициентов значимости.
Согласно технологиям этого раскрытия таблицы VLC выбираются для разных типов видеоблоков, например внутренних блоков и интерблоков. Таблицы могут выбираться один раз на кодированный блок, например, один раз на кадр, один раз на часть видеоинформации, один раз на уровень FGS кадра. Таблицы VLC для разных типов видеоблоков могут выбираться на основе статистики, связанной с ранее кодированными блоками. Например, таблица VLC для внутренних блоков может выбираться на основе статистики, связанной с ранее кодированными внутренними блоками, и таблица VLC для интерблоков может выбираться на основе статистики, связанной с ранее кодированными интерблоками.
В одном примере упомянутая статистика для каждого типа видеоблока может содержать соотношение числа коэффициентов уточнения в ранее кодированных блоках того типа блоков, которые имеют то же значение знака относительно числа коэффициентов уточнения в ранее кодированных блоках того типа блоков, которые имеют обратное значение знака. На основе соотношения для каждого типа блоков (внутренних и интер) первая таблица VLC может выбираться для кодирования коэффициентов уточнения, связанных с внутренними блоками данного кадра, и вторая таблица VLC может выбираться для кодирования коэффициентов уточнения, связанных с интерблоками данного кадра. Когда встречается следующий кадр, эти соотношения могут быть вычислены снова, чтобы способствовать выборам таблицы VLC для этого кадра.
ФИГ.1 - блок-схема, иллюстрирующая систему 10 кодирования и декодирования видео. Как показано на ФИГ.1, система 10 включает устройство источника 2, которое передает кодированное видео на приемное устройство 6 по каналу 15 связи. Устройство источника 2 может включать видеоисточник 11, видеокодер 12 и модулятор/передатчик 14. Приемное устройство 6 может включать приемник/демодулятор 16, видеодекодер 18 и устройство 20 дисплея. Система 10 может конфигурироваться для применения технологий для кодирования VLC видеоинформации, связанной с расширенным уровнем в схеме SVC.
Кодирование SVC относится к видеокодированию, в котором используется базовый уровень и один или более масштабируемых расширенных уровней. Для SVC базовый уровень обычно передает видеоданные с базовым уровнем качества. Один или более расширенных уровней передают дополнительные видеоданные для поддержки высших пространственного, временного и/или сигнал/шум (SNR) уровней. Расширенные уровни могут быть определены относительно ранее кодированного уровня. Расширенные уровни определяют по меньшей мере два разных типа коэффициентов, называемых как коэффициенты значимости и коэффициенты уточнения. Коэффициенты уточнения могут определять значения относительно соответствующих значений ранее кодированного уровня. Кадры расширенных уровней иногда только включают часть от общего числа видеоблоков на базовом уровне или предыдущем расширенном уровне, например, только тех блоков, для которых расширение выполняется.
Коэффициенты значимости относятся к коэффициентам, для которых соответствующие коэффициенты на предыдущем уровне имеют нулевые значения. Коэффициенты уточнения относятся к коэффициентам, для которых соответствующие коэффициенты на предыдущем уровне имели ненулевые значения на предыдущем уровне. Кодирование с переменной длиной расширенных уровней обычно включает подход с двумя проходами. Первый проход выполняется, чтобы кодировать с переменной длиной коэффициенты значимости, и другой проход выполняется, чтобы кодировать с переменной длиной коэффициенты уточнения. Технологии этого раскрытия особенно полезны для кодирования с переменной длиной коэффициентов уточнения, хотя это раскрытие необязательно ограничено в этом отношении.
Согласно технологии этого раскрытия разные таблицы VLC выбираются для разных типов видеоблоков. Например, первая таблица VLC может выбираться для кодирования коэффициентов уточнения внутренних блоков, и вторая таблица VLC может выбираться для кодирования коэффициентов уточнения интерблоков. Внутренние блоки относятся к блокам, которые кодируются на основе блоков внутри того данного кодированного блока. Интерблоки относятся к блокам, которые кодируются на основе блоков другого кодированного блока.
Выборы таблицы VLC могут быть на основе статистики, связанной с ранее кодированными блоками. Например, таблица VLC для внутренних блоков может выбираться на основе статистики, связанной с ранее кодированными внутренними блоками, и таблица VLC для интерблоков может выбираться на основе статистики, связанной с ранее кодированными интерблоками. Таблицы VLC могут выбираться один раз на кодированный блок так, как один раз на кадр видеоинформации, один раз на часть видеоинформации или один раз на уровень FGS. FGS означает мелкоячеистую масштабируемость сигнал/шум и объясняется более подробно ниже.
Упомянутая статистика для каждого типа видеоблока может содержать соотношение числа коэффициентов уточнения в ранее кодированных блоках, которые имеют то же значение знака относительно числа коэффициентов уточнения в ранее кодированных блоках, которые имеют обратное значение знака. На основе соотношения для каждого типа блока, т.е. этого соотношения для внутренних блоков и этого соотношения для интерблоков, первая и вторая таблицы VLC могут выбираться для кодирования коэффициентов уточнения, связанных с внутренними блоками и интерблоками данного кадра (или другого кодированного блока) соответственно. Когда следующий кадр (или другой кодированный блок) встречается, эти соотношения могут быть вычислены снова, чтобы способствовать обновленному выбору таблицы VLC.
В примере на ФИГ.1, канал 15 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр, или одну или более физических линий передачи или любое объединение беспроводной и проводной среды. Канал 15 связи может формировать часть сети на основе пакетов, такой как локальная сеть, широкомасштабная сеть или такая глобальная сеть, как Интернет. Канал 15 связи в целом представляет любую подходящую среду связи или набор разных сред связи для передачи видеоданных от устройства источника 2 на приемное устройство 6.
Устройство источника 2 генерирует кодированные видеоданные для передачи на приемное устройство 6. В некоторых случаях, однако, устройства 2, 6 могут работать в основном симметричным образом. Например, каждое из устройств 2, 6 может включать компоненты видеокодирования и декодирования. Таким образом, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видеоустройствами 2, 6, например, для потокового видео, видеовещания или видеотелефонии.
Видеоисточник 11 устройства источника 2 может включать устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеоканал от видеоконтента провайдера. В качестве еще одной альтернативы, видеоисточник 11 может генерировать данные на основе компьютерной графики как источник видео или объединение реального видео и видео, сгенерированного на компьютере. В некоторых случаях, если видеоисточник 11 - видеокамера, устройство источника 2 и приемное устройство 6 могут формировать так называемые телефоны с камерой или видеотелефоны. В каждом случае, захваченное, заранее захваченное или сгенерированное на компьютере видео может быть кодировано видеокодером 12 для передачи от устройства 2 источника видео на видеодекодер 18 приемного устройства 6 видео через модулятор/передатчик 14, канал 15 связи и приемник/демодулятор 16. Процессы кодирования и декодирования видео могут реализовывать описанные здесь технологии выбора таблицы VLC для улучшения упомянутых процессов. Устройство 20 дисплея отображает декодированные видеоданные пользователю и может содержать любые различные виды устройства дисплея, такие как электронно-лучевая трубка, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства дисплея.
Видеокодер 12 и видеодекодер 18 могут конфигурироваться для поддержки SVC для пространственного, временного и/или отношения сигнал/шум (SNR) масштабирования. В некоторых аспектах видеокодер 12 и видеодекодер 18 могут конфигурироваться для поддержки мелкоячеистой масштабируемости (FGS) кодирования для SVC. Кодер 12 и декодер 18 могут поддерживать различные степени масштабируемости поддержкой кодирования, передачи и декодирования базового уровня и один или более масштабируемых расширенных уровней. Снова, для масштабируемого видеокодирования, базовый уровень передает видеоданные с базовым уровнем качества. Один или более расширенных уровней переносят дополнительные данные для поддержки высших пространственного, временного и/или SNR уровней. Базовый уровень может передаваться таким образом, который является более надежным для передачи расширенных уровней. Например, наиболее надежные участки модулированного сигнала могут использоваться, чтобы передавать базовый уровень, в то время как менее надежные участки модулированного сигнала могут использоваться, чтобы передавать расширенные уровни.
Для того чтобы поддерживать SVC видеокодер 12 может включать кодер 22 базового уровня и один или более кодеров 24 расширенного уровня для выполнения кодирования базового уровня и одного или более расширенных уровней соответственно. Технологии этого раскрытия, которые включают выбор таблицы  VLC, применимы к кодированию видеоблоков расширенных уровней в SVC. Более конкретно, технологии этого раскрытия применимы к кодированию VLC коэффициентов уточнения видеоблоков расширенных уровней, хотя это раскрытие необязательно ограничено в этом отношении.
Видеодекодер 18 может включать объединенный базовый/расширенный декодер, который декодирует видеоблоки, связанные как с базовым, так и с расширенным уровнями. Декодер 18 видео может декодировать видеоблоки, связанные как с базовым, так и с расширенным уровнями, и объединять декодированное видео, чтобы реконструировать кадры видеофрагмента. Устройство 20 дисплея принимает декодированную видеопоследовательность и представляет эту видеопоследовательность пользователю.
Видеокодер 12 и видеодекодер 18 могут работать в соответствии со стандартами сжатия видео, такими как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное кодирование видео (AVC). Хотя это не показано на ФИГ.1, в некоторых аспектах видеокодер 12 и видеодекодер 18 могут, каждый, быть интегрированы с аудиокодером и декодером и могут включать соответствующие блоки мультиплексирования-демультиплексирования (MUX-DEMUX) или другое оборудование и программное обеспечение, чтобы управлять кодированием как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексирования, или другим протоколам, таким как протокол передачи дейтаграмм пользователя (UDP).
Стандарт H.264/MPEG-4 (AVC) был сформулирован ITU-T Экспертной группой по вопросам видеокодирования (VCEG) совместно с ISO/IEC Экспертной группой по вопросам движущегося изображения (MPEG) как продукт коллективного партнерства, известного как Совместная группа видео (JVT). В некоторых аспектах технологии, описанные в этом раскрытии, могут применяться к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендации ITU-T H.264, Усовершенствованное кодирование видео для общих аудиовизуальных служб, Исследовательской группой ITU-T, и датированной мартом, 2005, который может упоминаться здесь как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC.
Совместная группа видео (JVT) продолжает работать над расширением SVC к H.264/MPEG-4 AVC. Спецификация усовершенствуемого расширения SVC - в форме Совместного проекта (JD). Совместная модель масштабируемого видео (JSVM), созданная JVT, реализует инструменты для использования в масштабируемом видео, которые могут использоваться внутри системы 10 для различных задач кодирования, описанных в этом раскрытии. Подробная информация, касающаяся мелкоячеистой масштабируемости SNR (FGS) кодирования может быть найдена в документах Совместного проекта и в особенности в Совместном проекте 6 (SVC JD6), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, и Mathias Wien, "Joint Draft 6: Scalable Video Coding," JVT-S 201, апрель 2006, Geneva, и в Совместном проекте 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, и Mathias Wien, "Joint Draft 9 of SVC Amendment," JVT-V 201, январь 2007, Marrakech, Morocco.
В некоторых аспектах, для видео вещания, технологии, описанные в этом раскрытии, могут применяться к расширенному видеокодированию H.264 для доставки видеоуслуг в реальном времени в наземных мобильных мультимедийных многоадресных (TM3) системах с использованием Спецификации радиоинтерфейса только по прямому каналу (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast," будет опубликован в качестве Технического стандарта TIA-1099 ("FLO Specification"). А именно канал 15 связи может содержать беспроводной информационный канал, используемый для трансляции беспроводной видеоинформации согласно Спецификации FLO или т.п. Спецификация FLO включает примеры, определяющие синтаксис и семантику потока битов и процессы декодирования, подходящие для Радио интерфейса FLO. Альтернативно видео может транслироваться в соответствии с другими стандартами, такими как DVB-H (цифровое видеовещание - передвижное), ISDB-T (цифровое вещание интегрированных служб - наземное) или DMB (цифровое медиавещание). Таким образом, устройство источника 2 может быть мобильным беспроводным терминалом, потоковым сервером видео или сервером вещания видео. Однако технологии, описанные в этом раскрытии, не ограничены каким-либо конкретным типом вещания, широковещания или системой точка-точка. В случае вещания устройство источника 2 может транслировать несколько каналов видеоданных многим приемным устройствам, каждое из которых может быть схоже с приемным устройством 6 на ФИГ.1.
Видеокодер 12 и видеодекодер 18, каждый, могут реализовываться как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретная логика, программное обеспечение, оборудование, встроенное программное обеспечение или в любой их комбинации. Каждый из видеокодер 12 и видеодекодер 18 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем мобильном устройстве, абонентском устройстве, вещательном устройстве, сервере или т.п. В дополнение устройство источника 2 и приемное устройство 6, каждое, может включать соответствующие компоненты модуляции, демодуляции, преобразования частоты, фильтрации и усиления для передачи и приема кодированного видео, как применимо, включая радиочастотные (RF) беспроводные компоненты и антенны, достаточные для поддержки беспроводной связи. Для простоты иллюстрации, однако, такие компоненты резюмируются как модулятор/передатчик 14 устройства источника 2 и приемник/демодулятор 16 приемного устройства 6 на ФИГ.1.
Видеопоследовательность включает серии видеокадров. Видеокодер 12 обрабатывает блоки пикселов (или блоки трансформированных коэффициентов) в рамках отдельных видеокадров для того, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться в размере в соответствии с конкретным стандартом кодирования. В некоторых случаях каждый видеокадр - кодированный блок, в то время как в других случаях, каждый видеокадр может быть разбит, включает серии частей, которые формируют кодированные блоки. Каждая часть может включать серии макроблоков, которые могут быть организованы в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее предсказание в различных размерах блоков, таких как 16 на 16, 8 на 8 или 4 на 4 для компонентов яркости и 8×8 для компонентов цветности, а также интерпредсказание в различных размерах блоков, таких как 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для компонентов яркости и соответствующие масштабируемые размеры для компонентов цветности.
Меньшие видеоблоки могут обеспечить лучшее разрешение и могут использоваться для мест видеокадра, которые включают высшие уровни детализации. В целом, макроблоки (MB) и различные субблоки могут рассматриваться как видеоблоки. В дополнение, части могут рассматриваться как серии видеоблоков, как блоки MB и/или субблоки. Как отмечено, каждая часть может быть независимо декодируемым блоком видеокадра.
Следующие технологии - внутреннее или интеркодирование с предсказанием, дополнительное кодирование - могут применяться к передаваемому потоку битов. Эти дополнительные технологии кодирования могут включать технологии преобразования (такие как целочисленное преобразование 4×4 или 8×8, используемое в стандарте H.264/AVC, или дискретное косинус-преобразование DCT) и кодирование с переменной длиной. Блоки коэффициентов преобразования могут упоминаться как видеоблоки. Другими словами, термин "видеоблок" относится к блоку видеоданных независимо от домена информации. Таким образом, видеоблоки могут быть в домене пикселей или домене преобразованных коэффициентов. Применение выбора таблицы VLC и кодирования VLC будет в целом рассмотрено в этом раскрытии по отношению к блокам коэффициентов преобразования.
Это раскрытие предусматривает технологии для кодирования с переменной длиной коэффициентов уточнения. Кроме того, коэффициенты уточнения относятся к коэффициентам, которые имели ненулевые значения на предыдущем уровне, тогда как коэффициенты значимости относятся к коэффициентам, которые имеют нулевые значения на предыдущем уровне. В соответствии с этим раскрытием кодер 12 и декодер 18 выбирают разные таблицы VLC для разных типов видеоблоков. Например, кодер 12 и декодер 18 могут выбрать первую таблицу VLC для кодирования коэффициентов уточнения внутренних блоков и могут выбрать вторую таблицу VLC для кодирования коэффициентов уточнения интерблоков. Выбор таблиц VLC кодером 12 и декодером 18 может осуществляться на основе статистики, связанной с ранее кодированными блоками. Например, таблица VLC для внутренних блоков может выбираться на основе статистики, связанной с ранее кодированными внутренними блоками, и таблица VLC для интерблоков может выбираться на основе статистики, связанной с ранее кодированными интерблоками. Таким образом, кодер 12 и декодер 18 могут выполнять взаимные способы, которые кодируют расширенный уровень в схеме SVC. Как используется здесь, термин кодирования в целом относится к по меньшей мере части процессов либо кодирования, либо декодирования. Видеокодер 12 кодирует данные, в то время как видеодекодер 18 декодирует данные.
Таблицы VLC сами могут назначать кодовые слова различным наборам коэффициентов преобразования. Наборы коэффициентов с нулевыми значениями могут быть представлены длинами серий нулей, и таблицы могут назначать более вероятные длины серий более коротким кадрам VLC. Подобным образом, таблицы VLC могут назначать менее вероятные длины серий более длинным кодам VLC. Таким образом, выбор кодов из таблицы VLC может улучшить эффективность кодирования. Альтернативно разные образцы коэффициентов, таких как образцы кодированных блоков, могут назначаться разным кодовым словам переменной длины, с более вероятными образцами, назначаемыми более коротким кодовым словам, и менее вероятными образцами, назначаемыми более длинным кодовым словам.
Формирование таблицы VLC само могло бы также быть основано на статистике предыдущего кодирования, но в большинстве случаев используются статистические таблицы VLC. В случае статической таблицы VLC, кодер 12 и декодер 18 просто выбирают соответствующую таблицу VLC из набора возможных таблиц для кодирования коэффициентов уточнения внутренних блоков и выбирают другую соответствующую таблицу VLC из набора возможных таблиц для кодирования коэффициентов уточнения интерблоков. Независимо от того, являются ли таблицы VLC статическими или сформированными динамически, обновления таблиц VLC могут осуществляться при желании.
ФИГ.2 - схема, иллюстрирующая видеокадры в рамках базового уровня 17 и расширенного уровня 18 масштабируемого видеопотока битов. Как отмечено выше, упомянутые технологии этого раскрытия применимы к кодированию данных расширенных уровней. Базовый уровень 17 может содержать поток битов, содержащий кодированные видеоданные, которые представляют первый уровень пространственной, временной или SNR масштабируемости.
Расширенный уровень 18 может содержать поток битов, содержащий кодированные видеоданные, которые представляют второй уровень пространственной, временной или SNR масштабируемости. Хотя показан единственный расширенный уровень, несколько расширенных уровней может использоваться в некоторых случаях. Поток битов расширенного уровня может быть декодируемым только в сочетании с базовым уровнем (или предыдущим расширенным уровнем, если существует много расширенных уровней). Расширенный уровень 18 содержит ссылки на декодированные видеоданные в базовом уровне 17. Такие ссылки могут использоваться либо в домене преобразования, либо в домене пикселей, чтобы сгенерировать конечные декодированные видеоданные.
Базовый уровень 17 и расширенный уровень 18 могут содержать внутренние (I), интер (P) и двухнаправленные (B) кадры. Внутренние кадры могут включать все внутреннекодированные видеоблоки. Кадры I и P могут включать по меньшей мере некоторые интеркодированные видеоблоки (интерблоки), но могут также включать некоторые внутреннекодированные блоки (внутренние блоки). Разные кадры расширенного уровня 17 не требуют включения всех видеоблоков на базовом уровне 17. Кадры P в расширенном уровне 18 полагаются на ссылки на кадры P на базовом уровне 17. Благодаря декодированию кадров на расширенном уровне 18 и базовом уровне 17 видеодекодер способен увеличить видеокачество декодированного видео. Например, базовый уровень 17 может включать видео, кодированное при минимальной частоте смены кадров, например 15 кадров в секунду, тогда как расширенный уровень 18 может включать видео, кодированное при высшей частоте смены кадров, например 30 кадров в секунду. Для поддержки кодирования с разными уровнями качества базовый уровень 17 и расширенный уровень 18 могут быть кодированы с высшим параметром квантования (QP) и низшим QP соответственно. Кроме того, базовый уровень 17 может передаваться таким образом, что более надежно, чем передача расширенного уровня 18. В качестве примера, наиболее надежные участки модулированного сигнала могут использоваться, чтобы передавать базовый уровень 17, в то время как менее надежные участки модулированного сигнала могут использоваться, чтобы передавать расширенный уровень 18. Иллюстрация на ФИГ.2 является просто иллюстративной, поскольку базовый и расширенный уровни могут быть определены многими разными способами.
ФИГ.3 - блок-схема, иллюстрирующая пример видеокодера 50, который включает блок 46 VLC, чтобы кодировать данные в соответствии с этим раскрытием. Видеокодер 50 ФИГ.3 может соответствовать кодеру 24 расширенного уровня устройства источника 2 ФИГ.1. А именно компоненты кодирования базового уровня не показаны на ФИГ.3 для простоты. Поэтому видеокодер 50 может считаться кодером расширенного уровня. Альтернативно иллюстрированные компоненты видеокодера 50 также могли реализовываться в объединении с модулями или блоками базового уровня кодирования, например, в кодере на основе схемы пирамиды, который поддерживает масштабируемое видеокодирование базового уровня и расширенного уровня.
Видеокодер 50 может выполнять внутреннее и интеркодирование блоков в рамках видеокадров. Внутреннее кодирование основывается на пространственном предсказании, чтобы уменьшить или удалить пространственную избыточность видео в рамках данного кадра. Интеркодирование основывается на временном предсказании, чтобы уменьшить или удалить временную избыточность видео в рамках смежных кадров видеофрагмента. Для интеркодирования видеокодер 50 выполняет оценку движения, чтобы отслеживать движение сопоставляемых видеоблоков между двумя или более смежными кадрами. Для внутреннего кодирования пространственное предсказание используется, чтобы выявить другие блоки в кадре, которые близко соответствуют кодируемому блоку. Компоненты внутреннего кодирования, пространственного предсказания не иллюстрированы на ФИГ.3.
Как показано на ФИГ.3, видеокодер 50 принимает текущий видеоблок 31 (например, видеоблок расширенного уровня) в рамках видеокадра, предназначенного для кодирования. В примере на ФИГ.3, видеокодер 50 включает блок 33 оценки движения, хранилище 35 опорного кадра, блок 37 компенсации движения, блок 39 преобразования блоков, блок 41 квантования, блок 42 обратного квантования, блок 44 обратного преобразования и блок 46 VLC. Разблокирующий фильтр (не показан) также может быть включен для фильтрации границ блоков, чтобы устранять продукты блочности. Видеокодер 50 также включает сумматор 48 и сумматор 51. ФИГ.3 иллюстрирует компоненты временного предсказания видеокодера 50 для интеркодирования видеоблоков. Хотя не показаны на ФИГ.3 для простоты иллюстрации, видеокодер 50 также может включать компоненты пространственного предсказания для внутреннего кодирования некоторых видеоблоков. Компоненты пространственного предсказания, однако, обычно используются только для кодирования базового уровня.
Блок 33 оценки движения сравнивает видеоблок 31 с блоками в одном или более смежных видеокадрах, чтобы сгенерировать один или более векторы движения. Смежный кадр или кадры могут быть получены из хранилища 35 опорного кадра, которое может содержать любой тип памяти или устройство хранения данных для хранения видеоблоков, реконструированных из ранее кодированных блоков. Оценка движения может выполняться для блоков переменных размеров, например 16×16, 16×8, 8×16, 8×8 или меньших размеров блоков. Блок 33 оценки движения выявляет блок в смежном кадре, который наиболее близко соответствует текущему видеоблоку 31, например, на основе модели расхождения скорости, и определяет смещение между блоками. На этой основе блок 33 оценки движения производит вектор движения (MV) (или много векторов MV в случае двухнаправленного предсказания), который указывает амплитуду и траекторию смещения между текущим видеоблоком 31 и предиктивным блоком, используемым для кодирования текущего видеоблока 31.
Векторы движения могут иметь точность в половину или четверть пиксела или даже более высокую точность, позволяя видеокодеру 50 отслеживать движение с высшим разрешением, чем позиции целого писксела, и получать лучший предикционный блок. Когда используются векторы движения с дробными значениями пикселов, операции интерполяции осуществляются в блоке 37 компенсации движения. Блок 33 оценки движения может выявить лучший вектор движения для видеоблока, используя модель искажения скорости. Используя результирующий вектор движения, блок 37 компенсации движения формирует видеоблок предсказания путем компенсации движения.
Видеокодер 50 формирует остаточный видеоблок вычитанием видеоблока предсказания, полученного блоком 37 компенсации движения, из первоначального, текущего видеоблока 31 в сумматоре 48. Блок 39 преобразования блоков применяет такое преобразование, как дискретное косинус-преобразование (DCT), к остаточному блоку, производя коэффициенты остаточного блока преобразования. Блок 41 квантования квантует коэффициенты остаточного блока преобразования, чтобы далее уменьшить скорость передачи битов. Сумматор 49A принимает информацию коэффициентов базового уровня, например от кодера базового уровня (не показан), и находится между блоком 39 преобразования блоков и блоком 41 квантования для подачи этой информации коэффициентов базового уровня в кодирование расширенного уровня. В особенности, сумматор 49A вычитает информацию коэффициентов базового уровня из выходных данных блока 39 преобразования блоков. Аналогичным образом, сумматор 49B, который находится между блоком 44 обратного преобразования и блоком 42 обратного квантования, также принимает информацию коэффициентов базового уровня от кодера базового уровня (не показан). Сумматор 49B добавляет информацию коэффициентов базового уровня обратно на выход блока 42 обратного квантования.
Кодирование с пространственным предсказанием работает очень похоже на кодирование с временным предсказанием. Однако, тогда как кодирование с временным предсказанием основывается на блоках смежных кадров (или других кодированных блоках) для выполнения кодирования, пространственное предсказание основывается на блоках в рамках общего кадра (другой кодированный блок) для выполнения кодирования. Кодирование с пространственным предсказанием кодирует внутренние блоки, в то время как кодирование с временным предсказанием кодирует интерблоки. Снова компоненты пространственного предсказания не показаны на ФИГ.3 для простоты.
Блок 46 VLC кодирует квантованные коэффициенты преобразования в соответствии с методологией кодирования с переменной длиной, чтобы еще больше уменьшить скорость передачи битов передаваемой информации. В особенности, блок 46 VLC применяет технологии этого раскрытия, чтобы кодировать коэффициенты уточнения расширенного уровня. Блок 46 VLC может включать таблицы VLC, которые отображают наборы коэффициентов в кодовые слова переменной длины.
Выбор таблицы VLC блоком 46 VLC выполняется на основе информации, собранной для ранее кодированных кадров. Кроме того, таблицы VLC выбираются для разных типов видеоблоков, например внутренних блоков и интерблоков. Блок 46 VLC может выбирать таблицы VLC один раз на кодированный блок, например один раз на кадр, один раз на часть видео информации или один раз на уровень FGS кадра. Таблицы VLC для разных типов видеоблоков могут выбираться на основе статистики, связанной с ранее кодированными блоками. Например, блок 46 VLC может выбирать таблицу VLC для внутренних блоков на основе статистики, связанной с ранее кодированными внутренними блоками, и блок 46 VLC может выбирать таблицу VLC для интерблоков на основе статистики, связанной с ранее кодированными интерблоками. В этом случае упомянутая статистика, связанная с ранее кодированными блоками, может содержать среднее число ненулевых коэффициентов с такими ранее кодированными блоками.
Следуя кодированию с переменной длиной, кодированное видео может передаваться на другое устройство. В дополнение блок 42 обратного квантования и блок 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы реконструировать остаточный блок. Сумматор 51 добавляет реконструированный остаточный блок к предикционному блоку компенсации движения, полученного блоком 37 компенсации движения, чтобы произвести реконструированный видеоблок для хранения в хранилище 35 опорного кадра. Реконструированный видеоблок используется блоком 33 оценки движения и блоком 37 компенсации движения, чтобы кодировать блок в следующем видеокадре.
ФИГ.4 - блок-схема, иллюстрирующая пример видеодекодера 60, который может соответствовать видеодекодеру 18 ФИГ.1 или декодеру другого устройства. Видеодекодер 60 включает блок 52A VLC для информации расширенного уровня, который выполняет аналогичную функцию блока 46 VLC ФИГ.3. А именно, как блок 46 VLC, блок 52A VLC кодирует коэффициенты уточнения расширенного уровня.
Видеодекодер 60 может также включать другой блок 52B VLC для информации базового уровня. Блок 55 внутреннего предсказания может, если требуется, выполнять любое пространственное декодирование видеоблоков базового уровня, и выходные данные блока 55 внутреннего предсказания могут предоставляться на сумматор 53. Путь расширенного уровня может включать блок 56A обратного квантования, и путь базового уровня может включать блок 56B обратного квантования. Информация путей базового уровня и расширенного уровня может быть объединена сумматором 57.
Видеодекодер 60 может выполнять внутреннее и интердекодирование блоков в рамках видеокадров. В примере на ФИГ.4, видеодекодер 60 включает блоки 52A и 52B VLC (упоминаемые выше), блок 54 компенсации движения, блоки 56A и 56B обратного квантования, блок 58 обратного преобразования и хранилище 62 опорных кадров. Видеодекодер 60 также включает сумматор 64. Если требуется, то видеодекодер 60 также может включать фильтр разблокирования (не показан), который фильтрует выходные данные сумматора 64. Снова сумматор 57 объединяет информацию в путях базового уровня и расширенного уровня, и блок 55 внутреннего предсказания и сумматор 53 способствуют любому пространственному декодированию видеоблоков базового уровня.
В соответствии с этим раскрытием, блок 52A VLC принимает кодированный видеопоток битов и применяет технологии кодирования VLC, описанные в этом раскрытии. В особенности, для коэффициентов уточнения, блок 52A VLC может выбирать таблицы VLC для разных типов видеоблоков на основе информации, собранной для ранее кодированных кадров. Блок 52A VLC может выбирать таблицы VLC один раз на кодированный блок, например один раз на кадр, один раз на часть видео информации, один раз на уровень FGS кадра. Таблицы VLC для разных типов видеоблоков могут выбираться на основе статистики, связанной с ранее кодированными блоками. Например, блок 52A VLC может выбирать таблицы VLC для внутренних блоков на основе статистики, связанной с ранее кодированными внутренними блоками, и блок 52A VLC может выбирать таблицы VLC для интерблоков на основе статистики, связанной с ранее кодированными интерблоками.
Следуя декодированию, выполняемому блоком 52A VLC, блок 54 компенсации движения принимает векторы движения и один или более реконструированных опорных кадров из хранилища 62 опорных кадров. Блок 56A обратного квантования осуществляет обратное квантование, т.е. деквантует квантованные коэффициенты блока. Следуя объединению информации расширенного и базового уровня посредством сумматора 57, блок 58 обратного преобразования применяет обратное преобразование, например обратное преобразование DCT, к коэффициентам, чтобы произвести остаточные блоки. Блок 54 компенсации движения производит блоки компенсации движения, которые суммируются сумматором 64 с остаточными блоками, чтобы сформировать декодированные блоки. По желанию, разблокирующий фильтр может также применяться для фильтрации декодированных блоков, чтобы удалить продукты блочности. Фильтрованные блоки затем размещаются в хранилище 62 опорных кадров, которое предоставляет опорные блоки из компенсации движения и также производит декодированное видео на устройство отображения (как устройство 20 на ФИГ.1).
ФИГ.5 - блок-схема, иллюстрирующая иллюстративный блок 46 VLC, который может соответствовать блоку, показанному на ФИГ.3. Блок 46 VLC включает модуль 72 кодирования, модуль 74 статистики, модуль 76 выбора таблицы и таблицы 78 VLC. Таблицы 78 VLC, в общем, относятся к таблицам, которые могут храниться в любом местоположении, например локально или вне чипа в отдельной ячейке памяти. Таблицы 78 VLC могут обновляться, периодически, по желанию.
Модуль 72 кодирования кодирует коэффициенты уточнения и коэффициенты значимости в отдельных проходах кодирования. Выбор таблицы блоком 46 VLC для кодирования коэффициентов, связанных с разными видеоблоками, может выполняться на основе информации, собранной для ранее кодированных кадров. Например, модуль 74 статистики может выполнять статистический анализ ранее кодированных кадров, чтобы способствовать выбору таблицы модулем 76 выбора таблицы.
Модуль 74 статистики определяет первую статистику, связанную с первым типом видеоблока (такого как внутренний блок), и определяет вторую статистику, связанную со вторым типом видеоблока (такого как интерблок). Модуль 76 выбора таблицы выбирает первую таблицу VLC из множества таблиц 78 VLC для использования в кодировании первого типа видеоблока на основе первой статистики. В дополнение модуль 76 выбора таблицы выбирает вторую таблицу VLC из множества таблиц 78 VLC для использования в кодировании видеоблока второго типа на основе второй статистики. Модуль 72 кодирования кодирует видеоблоки первого типа на основе первой таблицы VLC и кодирует видеоблоки второго типа на основе второй таблицы VLC.
n
n-1
n-1
Технологии, описанные здесь, могут выполняться по отношению к коэффициентам уточнения, которые могут кодироваться в отдельных проходах кодирования относительно упомянутых коэффициентов значимости. Коэффициенты уточнения могут иметь фиксированные значения -1, 0 и 1, которые могут кодироваться двумя битами информации. Первый бит может указывать, равен коэффициент 0 или нет, и второй бит может указывать, тот же знак (обозначенный как S) у коэффициента уточнения (coeff_ref_dir_flag=0) или другой (coeff_ref_dir_flag=l), чем знак (обозначенный как s) соответствующего коэффициента предыдущего уровня. Предыдущий уровень обозначается как s. Если знак текущего коэффициента тот же, что и у коэффициента предыдущего уровня, тогда coeff_ref_dir_flag=0, и если знак текущего коэффициента отличается от знака коэффициента предыдущего уровня, тогда coeff_ref_dir_flag=l. Два бита уточнения могут быть объединены в алфавит трех символов уточнения следующим образом, как показано в таблице 1:
<b>ТАБЛИЦА 1</b>
coeff_ref_flag
coeff_ref_dir_flag
ref_symbol
0
-
0
1
0
1
1
1
2
Альтернативно другая схема также могла бы использоваться, чтобы кодировать коэффициенты уточнения, не отходя от технологии этого раскрытия.
Таблицы 78 VLC могут содержать кодовые слова переменной длины, которые отображаются в различные наборы коэффициентов, которые могут определяться символами, флагами или другими типами битов. Таблицы 78 VLC могут обновляться по желанию. Любое число таблиц может включаться в таблицы 88 VLC. В некоторых случаях две таблицы используются, хотя больше таблиц могло бы быть включено. В любом случае модуль 72 кодирования может иметь доступ к разным таблицам VLC для разных типов видеоблоков. Модуль 74 статистики и модуль 76 выбора таблицы определяют, какую таблицу VLC следует использовать для каждого типа видеоблока, предназначенного для кодирования.
В таблице 2 представлен один пример таблицы VLC, которая могла бы использоваться для кодирования коэффициентов уточнения.
<b>ТАБЛИЦА 2</b>
Группа опорных символов
Кодовая длина
Кодовое слово
{0,0,0}
1
1
{0,0,1}
4
0011
{0,0,2}
5
00101
{0,1,0}
3
011
{0,1,1}
6
000101
{0,1,2}
8
00000101
{0,2,0}
5
00100
{0,2,1}
7
0000101
{0,2,2}
9
000000101
{1,0,0}
3
010
{1,0,1}
6
000100
{1,0,2}
8
00000100
{1,1,0}
6
000011
{1,1,1}
9
000000100
{1,1,2}
10
0000000011
{1,2,0}
7
0000100
{1,2,1}
10
0000000010
{1,2,2}
12
000000000011
{2,0,0}
5
00011
{2,0,1}
7
0000011
{2,0,2}
9
000000011
{2,1,0}
8
00000011
{2,1,1}
10
0000000001
{2,1,2}
12
000000000010
{2,2,0}
9
000000010
{2,2,1}
12
000000000001
{2,2,2}
12
000000000000
Как показано в таблице 2, различные наборы коэффициентов уточнения (как определено в таблице 1) могут отображаются в разные кодовые слова переменной длины. В таблице 2 также перечисляются соответствующие длины битов, связанных с разными кодовыми словами. Отображения кодовых слов в различные наборы коэффициентов уточнения могут различаться в разных таблицах VLC. Соответственно путем выбора соответствующей таблицы может быть получено эффективное кодирование. В соответствии с этим раскрытием для каждого кодированного блока (например, каждый кадр, часть или уровень FGS) модуль 76 выбора таблицы блока 46 VLC выбирает первую таблицу VLC для внутренних блоков и выбирает вторую таблицу VLC для интерблоков. Выбор таблицы может быть на основе статистики, связанной с ранее кодированными внутренними блоками и ранее кодированными интерблоками. Модуль 72 кодирования блока 46 VLC затем использует выбранную таблицу в процессе VLC.
Упомянутая статистика для каждого типа видеоблока может аккумулироваться и анализироваться модулем 74 статистики. В качестве примера, упомянутая статистика для каждого типа видеоблока может содержать соотношение числа коэффициентов уточнения в ранее кодированных блоках, которые имеют то же значение знака относительно числа коэффициентов уточнения в ранее кодированных блоках, которые имеют обратное значение знака. На основе этого соотношения для каждого типа видеоблока модуль 76 выбора таблицы может выбрать таблицу VLC для кодирования коэффициентов уточнения, связанных с этим типом блока данного кадра. Когда следующий кадр (или другой кодированный блок) поступает, блок 46 VLC может повторно вычислить эти соотношения для каждого типа блока, чтобы способствовать выбору таблиц VLC для этого кадра (или других кодированных блоков).
Символ 1 уточнения из таблицы 1 соответствует сценарию, где символ уточнения имеет то же значение знака относительно упомянутого символа на предыдущем уровне (или базовом уровне). Символ 2 уточнения из таблицы 1 соответствует сценарию, где символ уточнения имеет инвертированное значение знака относительно упомянутого символа на предыдущем уровне (или базовом уровне). Другими словами, символ 1 означает "сохранить тот же знак", и символ 2 означает "инвертировать знак" относительно знака соответствующего коэффициента на предыдущем уровне.
max
min
max
max
min
Q
Q
Эффективность кодирования в кодировании SVC может быть улучшена, когда выбор таблицы VLC основывается на соотношении опорных символов ref_symbols 1 и 2. Пусть s(1) и s(2) соответственно обозначают номер символов 1 и 2 уточнения, собранных в процессе кодирования. Значения для s(1) и s(2) могли бы определяться скользящими окнами кадров или могли бы аккумулироваться в течение полной видеопоследовательности. В любом случае соотношение r может быть вычислено несколькими путями. Например, может быть вычислено соотношение r = (S-S)/S, где s=max(s(1),s(2)) и S=min(s(1),s(2)). Альтернативно может использоваться соотношение r=s(1)/(s(1)+s(2)). В каждом из этих случаев, для каждого квантованного значения r, значение R может быть определено как равное floor(m*r), где m - некоторый номер больше, чем 1. Разные таблицы VLC могут назначаться в зависимости от того, выше или ниже соотношение r значения R.
ФИГ.6 - блок-схема, иллюстрирующая иллюстративный блок 52A VLC, который может соответствовать блоку, показанному на ФИГ.4. Блок 52A VLC выполняет обратные функции декодирования относительно кодирования, которое выполняется блоком 46 VLC. Таким образом, тогда как блок 46 VLC принимает квантованные остаточные коэффициенты и генерирует поток битов, блок 52A VLC принимает поток битов и генерирует квантованные остаточные коэффициенты. Блок 52A VLC включает модуль 82 декодирования, модуль статистики 84, модуль 86 выбора таблицы и набор таблиц 88 VLC. Как в блоке 46, таблицы 88 VLC блока 52A в общем относятся к таблицам, которые могут храниться в любом местоположении, например, локально или вне в отдельной ячейке памяти. Таблицы 88 VLC могут обновляться периодически, по желанию. Любое число таблиц может быть включено в таблицы 88 VLC. В некоторых случаях используются две таблицы, хотя больше таблиц могли быть включены.
Блок 82 декодирования VLC может выполнять отдельные проходы декодирования для коэффициентов значимости и коэффициентов уточнения. Технологии этого раскрытия могут быть применимы к кодированию либо только коэффициентов уточнения, либо могли бы использоваться как для уточнения, так и для коэффициентов значимости. Декодирование, осуществляемое блоком 52A VLC, является обратным кодированию, осуществляемому блоком 46 VLC.
Выбор таблицы блоком 52A VLC для декодирования коэффициентов, связанных с разными видеоблоками, может выполняться на основе информации, собранной для ранее кодированных блоков, например из ранее кодированных кадров. Например, модуль 84 статистики может выполнять статистический анализ ранее декодированных кадров, чтобы способствовать выбору таблицы посредством модуля 86 выбора таблицы. В особенности, модуль 84 статистики определяет первую статистику, связанную с первым типом видеоблока (таким как внутренний блок), и определяет вторую статистику, связанную со вторым типом видеоблока (таким как интерблок). Модуль 86 выбора таблицы выбирает первую таблицу VLC из множества таблиц 88 VLC для использования в кодировании первого типа видеоблока на основе первой статистики. В дополнение модуль 86 выбора таблицы выбирает вторую таблицу VLC из множества таблиц 88 VLC для использования в кодировании второго типа видеоблока на основе второй статистики. Модуль 82 декодирования декодирует видеоблоки первого типа на основе первой таблицы VLC и декодирует видеоблоки второго типа на основе второй таблицы VLC.
Таблица 2 выше может также рассматриваться как одна из таблиц 88 VLC. Однако, тогда как таблицы 78 VLC (ФИГ.5) отображают наборы коэффициентов в кодовые слова переменной длины, таблицы 88 VLC (ФИГ.6) отображают кодовые слова переменной длины обратно в наборы коэффициентов. Таким образом, декодирование, выполняемое блоком 52A VLC, может рассматриваться являющимся обратным кодированию, осуществляемому блоком 46 VLC.
ФИГ.7 - схема последовательности операций, иллюстрирующая технологию кодирования для кодирования с переменной длиной коэффициентов (например, обычно коэффициентов уточнения) расширенного уровня в соответствии с этим раскрытием. Процесс кодирования на ФИГ.7 применяется как для кодирования, так и для декодирования. Как показано на ФИГ.7, модуль 74, 84 статистики определяет статистику ранее кодированных внутренних блоков (91). Например, модуль 74, 84 статистики может вычислять для ранее кодированных внутренних блоков соотношение символов уточнения, имеющих то же значение знака относительно символов уточнения, имеющих инвертированное значение знака. В дополнение модуль 74, 84 статистики может определить статистику ранее кодированных интерблоков (92), например, путем вычисления для ранее кодированных интерблоков соотношения символов уточнения, имеющих то же значение знака относительно символов уточнения, имеющих инвертированное значение знака.
Модуль 76, 86 выбора таблицы выбирает таблицу кодирования для внутренних блоков на основе статистики ранее кодированных внутренних блоков (93). Таблица кодирования для внутренних блоков, например, может выбираться на основе значения соотношения, связанного с внутренними блоками. В дополнение модуль 76, 86 выбора таблицы выбирает таблицу кодирования для интерблоков на основе статистики ранее кодированных интерблоков (94). Таблица кодирования для интерблоков может выбираться на основе значения соотношения, связанного с интерблоками.
Модуль 82, 84 кодирования кодирует внутренние блоки, используя выбранную таблицу кодирования для внутренних блоков (95), и кодирует интерблоки, используя выбранную таблицу кодирования для интерблоков (96). В особенности, блок 82, 84 кодирования выполняет табличный поиск, используя выбранные таблицы кодирования для разных типов блоков. Процесс может повторяться для каждого кодированного блока (97). Кодированные блоки могут быть видеокадрами, частями видеокадров, уровнями FGS или т.п.
Технологии, описанные здесь, могут реализовываться в оборудовании, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Любые признаки, описанные как блоки или компоненты, могут реализовываться вместе в интегрированном логическом устройстве или отдельно как дискретные, но логические устройства в рабочем состоянии. При реализации в программном обеспечении упомянутые технологии могут реализовываться по меньшей мере в части машиночитаемым носителем, содержащим инструкции, которые, когда выполнены, выполняют один или более способов, описанных выше. Упомянутый машиночитаемый носитель может стать частью компьютерного программного продукта, который может включать упаковочные материалы. Упомянутый машиночитаемый носитель может содержать такое оперативное запоминающее устройство (RAM), как синхронное динамическое оперативное запоминающее устройство (SDRAM), память только для чтения (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемая программируемая память только для чтения (EEPROM), FLASH память, магнитный или оптический носитель для хранения данных т.п. Эти технологии дополнительно или альтернативно могут реализовываться по меньшей мере в части машиночитаемой средой связи, которая переносит или передает код в форме инструкций или структур данных и которая может быть доступна, читаема и/или выполняема компьютером.
Этот код может выполняться одним или более процессорами, такими как одним или более цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), логическими матрицами с эксплуатационным программированием (FPGA) или другими эквивалентными интегрированными или дискретными логическими схемами. Соответственно, термин "процессор," как используемый здесь, может относиться к любой вышеизложенной структуре или любой другой структуре, подходящей для реализации технологий, описанных здесь. В дополнение, в некоторых аспектах, функциональные возможности, описанные здесь, могут предоставляться в рамках выделенных блоков программного обеспечения или блоков оборудования, конфигурированных для кодирования и декодирования или включенных в объединенном видеокодере-декодере (CODEC).
При реализации в оборудовании, это раскрытие может быть направлено на схему, такую как интегральная схема, набор микросхем специализированной интегральной схемы (ASIC), программируемая вентильная матрица (FPGA), логика или различные их комбинации, сконфигурированные для выполнения одной или более технологий, описанных здесь.
Различные варианты осуществления изобретения были описаны. Эти и другие варианты осуществления находятся в пределах объема следующей формулы изобретения.