ВЫБОР ТАБЛИЦЫ КОДИРОВАНИЯ С ПЕРЕМЕННОЙ ДЛИНОЙ НА ОСНОВАНИИ ТИПА ВИДЕОБЛОКА ДЛЯ СОВЕРШЕНСТВОВАНИЯ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ
SELECTION OF CODING TABLE WITH ALTERNATE LENGTH BASED ON TYPE OF VIDEO UNIT FOR IMPROVEMENT OF COEFFICIENTS CODING

[0001] Настоящая заявка испрашивает приоритет следующих предварительных заявок на патент США, все содержание каждой из которых включается здесь по ссылке:
предварительная заявка на патент США № 60/829,274, поданная 12 октября 2006,
предварительная заявка на патент США № 60/883,741, поданная 5 января 2007, и
предварительная заявка на патент США № 60/829,276, поданная 12 октября 2006.
Область техники, к которой относится изобретение
[0002] Это раскрытие относится к цифровому кодированию видео и, более конкретно, кодированию с переменной длиной (VLC) коэффициентов преобразования в уровнях расширения схемы масштабируемого кодирования видео (SVC).
Уровень техники
[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, устройства беспроводной связи, системы беспроводного вещания, персональные цифровые ассистенты (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, устройства видеоигр, пульты компьютерных игр, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют методики сжатия видеосигнала, такие как MPEG-2, MPEG-4 или H.264/MPEG-4, часть 10, Усовершенствованное Кодирование Видео (УВК, AVC), чтобы передавать и принимать цифровое видео более эффективно. Методики сжатия видеосигнала выполняют пространственное и временное предсказание, чтобы сократить или удалить избыточность, свойственную видеопоследовательностям.
[0004] При кодировании видео сжатие видео часто включает в себя пространственное предсказание, оценку движения и компенсацию движения. Интракодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность между видеоблоками в пределах заданного видеокадра. Интеркодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность между видеоблоками последовательных видеокадров видеопоследовательности. Для интеркодирования видеокодер выполняет оценку движения, чтобы отследить движение совпадающих видеоблоков между двумя или более смежными кадрами. Оценка движения генерирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих блоков видео предсказания в одном или более опорных кадрах. Компенсация движения использует векторы движения, чтобы сгенерировать блоки видео предсказания из опорного кадра. После компенсации движения остаточный видеоблок формируется посредством вычитания блока видео предсказания из первоначального видеоблока, который должен быть закодирован.
[0005] Видеокодер обычно применяет процессы преобразования, квантования и кодирования с переменной длиной (КПД, VLC), чтобы дополнительно уменьшить скорость передачи в битах, ассоциированную с передачей остаточного блока. VLC остаточных блоков включает применение кодов переменной длины, чтобы дополнительно сжать остаточные коэффициенты, сформированные операциями квантования и преобразования. Например, таблица VLC может быть использована для согласования различных наборов коэффициентов с кодовым словом переменной длины способом, который способствует эффективности кодирования. Различные таблицы VLC могут использоваться для различного видеоконтента. Видеодекодер выполняет обратные операции VLC, чтобы восстановить коэффициенты, и затем выполняет обратное преобразование этих коэффициентов. Видеодекодер может декодировать видеоинформацию на основании информации движения и остаточной информации, ассоциированной с видеоблоками.
[0006] Некоторое видеокодирование использует масштабируемые методики. Например, масштабируемое кодирование видео (SVC) относится к кодированию видео, в котором используются базовый уровень и один или более масштабируемых уровней расширения. Для SVC базовый уровень обычно несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные видеоданные, чтобы поддержать более высокие пространственный, временной и/или SNR уровни. Базовый уровень может быть передан способом, который более надежен, чем передача уровней расширения. Уровни расширения могут добавить пространственное разрешение к кадрам базового уровня или могут добавить дополнительные кадры, чтобы увеличить полную частоту следования кадров. В одном примере наиболее надежные части модулированного сигнала могут быть использованы для передачи базового уровня, в то время как менее надежные части модулированного сигнала могут быть использованы для передачи уровней расширения. Уровни расширения могут определять различные типы коэффициентов, называемых существенными коэффициентами и коэффициентами усовершенствования (детализации).
Сущность изобретения
[0007] В целом, это раскрытие описывает способы кодирования уровня расширения в схеме масштабируемого кодирования видео (SVC). Эти способы предусматривают выбор таблиц кодирования с переменной длиной (VLC) в декодере способом, который способствует упрощению вычислений. Эти способы могут использоваться при кодировании коэффициентов преобразования и особенно полезны в VLC коэффициентов детализации уровня расширения в схеме SVC. Коэффициенты детализации относятся к коэффициентам уровня расширения, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имели ненулевые значения. Кодирование с переменной длиной коэффициентов детализации может быть выполнено отдельно от кодирования с переменной длиной существенных коэффициентов, которые относятся к коэффициентам уровня расширения, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имели значения нуля.
[0008] Согласно способам этого раскрытия информация передается от устройства кодера на устройство декодера, которое идентифицирует, какие таблицы VLC должны использоваться для декодирования двух или более различных типов видеоблоков. Информация может быть передана однажды за кадр (или другую кодированную единицу, такую как срез (slice) или уровень FGS кадра) и может идентифицировать первую таблицу, которая должна использоваться для интракодированных (внутрикодированных) блоков, и вторую таблицу, которая должна использоваться для интеркодированных блоков соответствующего кадра. Декодер выполняет выбор таблицы VLC на основе этой информации и декодирует видеоблоки, используя выбранные таблицы VLC. Кроме того, в некоторых случаях кодер и декодер имеют соглашение относительно таблиц, которые должны использоваться для различных типов блоков. В этом случае таблицы, которые используются, являются зависимыми от типа блока, но никакая дополнительная информация не должна быть передана от кодера на декодер, так как у кодера и декодера есть соглашение.
[0009] В одном примере это раскрытие обеспечивает способ кодирования уровня расширения в схеме SVC, причем способ содержит этапы: кодирование коэффициентов, ассоциированных с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной, генерирование информации, идентифицирующей первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков, передачу информации, представляющей кодированные коэффициенты, к устройству декодирования и передачу информации, идентифицирующей первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков.
[0010] В другом примере это раскрытие обеспечивает способ кодирования уровня расширения для схемы SVC, причем способ содержит этапы: прием информации, представляющей закодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, прием информации, идентифицирующей первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, выбор таблиц для декодирования информации, представляющей кодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и декодирование информации, представляющей закодированные коэффициенты, на основании выбранных таблиц.
[0011] В другом примере это раскрытие обеспечивает устройство, которое кодирует уровень расширения в схеме SVC, причем устройство содержит: кодер, который кодирует коэффициенты, ассоциированные с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной и генерирует информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков, и передатчик, который передает информацию, представляющую закодированные коэффициенты, и передает информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблока.
[0012] В другом примере это раскрытие обеспечивает устройство, которое кодирует уровень расширения схемы SVC, причем устройство содержит: приемник, который принимает информацию, представляющую закодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, и принимает информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, и декодер, который выбирает таблицы для декодирования этой информации, представляющей кодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и декодирует информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц.
[0013] В другом примере это раскрытие обеспечивает устройство, которое кодирует уровень расширения схемы SVC, причем устройство содержит: средство для кодирования коэффициентов, ассоциированных с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной, в котором средство для кодирования генерирует информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков, и средство для передачи информации, представляющей закодированные коэффициенты, к устройству декодирования, при этом средство для передачи передает информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков.
[0014] В другом примере это раскрытие обеспечивает устройство, которое кодирует уровень расширения схемы SVC, причем устройство содержит средство для приема закодированных коэффициентов, ассоциированных с видеоблоками уровня расширения, причем средство для приема также принимает информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, средство для выбора таблиц для декодирования информации, представляющей закодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и средство для декодирования информации, представляющей закодированные коэффициенты, на основании выбранных таблиц.
[0015] Способы, описанные в этом раскрытии, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. При реализации в программном обеспечении программное обеспечение может быть выполнено в одном или более процессорах, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или цифровой процессор сигналов (DSP). Программное обеспечение, которое выполняет эти способы, может быть первоначально сохранено в считываемом компьютером носителе и загружено и выполнено в процессоре.
[0016] Соответственно, это раскрытие также рассматривает считываемые компьютером носители, содержащие команды, которые после выполнения в устройстве кодирования видео заставляют устройство кодировать уровень расширения схемы SVC, при этом команды заставляют устройство кодировать коэффициенты, ассоциированные с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной, генерировать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблока, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблока, передавать информацию, представляющую закодированные коэффициенты, к устройству декодирования и передавать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблока, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблока.
[0017] Кроме того, это раскрытие также рассматривает считываемые компьютером носители, содержащие команды, которые после выполнения в устройстве кодирования видео, заставляют это устройство кодировать уровень расширения схемы SVC, в котором после приема информации, представляющей закодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, и приема информации, идентифицирующей первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, команды заставляют это устройство выбирать таблицы для декодирования информации, представляющей закодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и декодировать информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц.
[0018] В некоторых случаях считываемый компьютером носитель может быть частью компьютерного программного продукта, который может быть продан изготовителям и/или использоваться в устройстве кодирования видео. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, и в некоторых случаях может также включать в себя упаковочные материалы.
[0019] Это раскрытие может также относиться к схеме, такой как интегральная схема, набор специализированных интегральных схем (ASIC), программируемая пользователем вентильная матрица (FPGA), логика или различные их комбинации, сконфигурированные, чтобы выполнить один или более способов, описанных здесь. Соответственно, это раскрытие также рассматривает схему, конфигурированную для кодирования уровня расширения схемы SVC, причем эта схема конфигурируется, чтобы кодировать коэффициенты, ассоциированные с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной, генерировать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков, передавать информацию, представляющую закодированные коэффициенты, к устройству декодирования, и передавать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков.
[0020] Это раскрытие также рассматривает схему, конфигурированную для кодирования уровня расширения схемы масштабируемого кодирования видео (SVC), при этом схема конфигурируется, чтобы принимать информацию, представляющую кодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, принимать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, выбирать таблицы для декодирования информации, представляющей закодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и декодирования информации, представляющей закодированные коэффициенты, на основании выбранных таблиц.
[0021] Кроме того, это раскрытие рассматривает схему, конфигурированную для кодирования уровня расширения схемы SVC, причем схема конфигурируется, чтобы принимать информацию, представляющую закодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, выбирать различные таблицы кодирования с переменной длиной, которые должны быть использованы для декодирования информации, на основании типов блока, ассоциированных с видеоблоками, в соответствии с соглашением, установленным кодером, декодировать информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц.
[0022] Подробности одного или более аспектов раскрытия формулируются в сопроводительных чертежах и описании, приведенном ниже. Другие признаки, задачи и преимущества методик, описанных в этом раскрытии, будут очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[0023] Фиг.1 - примерная блок-схема, иллюстрирующая систему кодирования и декодирования видео.
[0024] Фиг.2 - концептуальная диаграмма, иллюстрирующая видеокадры базового уровня и уровня расширения масштабируемого битового потока видео.
[0025] Фиг.3 - блок-схема, иллюстрирующая пример видеокодера, совместимого с настоящим изобретением.
[0026] Фиг.4 - блок-схема, иллюстрирующая пример видеодекодера, совместимого с настоящим изобретением.
[0027] Фиг.5 - примерная блок-схема модуля кодирования с кодированием с переменной длиной (VLC).
[0028] Фиг.6 - примерная блок-схема модуля декодирования VLC.
[0029] Фиг.7 - схема последовательности операций, иллюстрирующая методику VLC для кодирования с переменной длиной, совместимую с настоящим изобретением.
[0030] Фиг.8 - схема последовательности операций, иллюстрирующая методику VLC для декодирования с переменной длиной, совместимую с настоящим изобретением.
Подробное описание
[0031] Это раскрытие описывает методики для кодирования уровня расширения в схеме масштабируемого кодирования видео (SVC). Эти методики предусматривают выбор таблиц кодирования с переменной длиной (VLC) в декодере способом, который улучшает простоту вычислений. Эти методики могут использоваться при кодировании коэффициентов преобразования и особенно полезны при кодировании с переменной длиной коэффициентов детализации уровня расширения схемы SVC. Коэффициенты детализации относятся к коэффициентам уровня расширения, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имеют ненулевые значения. Кодирование с переменной длиной коэффициентов детализации может быть выполнено отдельно от кодирования с переменной длиной существенных коэффициентов (например, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имеют нулевые значения).
[0032] Согласно методикам этого раскрытия информация, идентифицирующая, какие таблицы VLC должны использоваться для декодирования двух или более различных типов видеоблоков, передается с устройства кодера на устройство декодера. Эта информация может быть передана однажды за кадр (или другую кодированную единицу) и может идентифицировать первую таблицу, которая должна использоваться для интракодированных блоков, и вторую таблицы, которая должна использоваться для интеркодированных блоков соответствующего кадра. Декодер выполняет выбор таблицы на основе этой информации и декодирует видеоблоки, используя выбранные таблицы.
[0033] В устройстве кодера выбор таблицы VLC для кодирования различных видеоблоков может быть выполнен на основании информации, собранной для ранее или в настоящее время кодируемых кадров. Например, статистический анализ ранее закодированных кадров может быть выполнен, чтобы облегчить выбор таблицы в устройстве кодера. Такого в вычислительном отношении интенсивного анализа, однако, можно избежать в устройстве декодера. Вместо этого информация, идентифицирующая таблицы, которые должны быть выбраны для первого и второго типов видеоблоков, например интракодированный блок и интеркодированные блоки, может быть передана с устройства кодера на устройство декодера. Устройство декодера может использовать эту переданную информацию, чтобы облегчить надлежащие выборы таблицы. Альтернативно, в некоторых случаях кодер и декодер могут иметь соглашение относительно таблиц, которые должны использоваться для различных типов блоков. В этом случае таблицы, которые используются, являются зависимыми от типа блока, но никакая дополнительная информация не должна быть передана с кодера на декодер, так как кодер и декодер имеют соглашение.
[0034] Выбранные таблицы в кодере могут очень зависеть от уровня квантования, используемого в процессе кодирования. Уровень используемого квантования, в свою очередь, может зависеть от типа видеоблока. Так как уровень квантования, используемый в кодере, является обычно неизвестным на декодере, информация относительно типа видеоблока обеспечивает полезный механизм для выбора таблицы в декодере. В частности, так как уровень квантования может зависеть от типа видеоблока, выбор таблицы VLC в декодере на основании типа видеоблока может быть полезным. Таблицы VLC идентифицируются для декодера для различных типов видеоблока, и декодер может определить тип, ассоциированный с соответствующим видеоблоком, и использовать соответствующую таблицу VLC, чтобы декодировать этот соответствующий видеоблок.
[0035] Фиг.1 показывает блок-схему, иллюстрирующую систему 10 кодирования и декодирования видео. Как показано на Фиг.1, система 10 включает в себя устройство 12 источника, которое передает кодированное видео на устройство 16 приема по каналу 15 связи. Устройство 12 источника может включать в себя источник 20 видео, видеокодер 22 и модулятор/передатчик 24. Устройство 16 приема может включать в себя приемник/демодулятор 26, видеодекодер 28 и устройство 30 отображения. Система 10 может быть конфигурирована, чтобы применять методики для кодирования с переменной длиной (VLC) видеоинформации, ассоциированной с уровнем расширения, в схеме масштабируемого кодирования видео (SVC).
[0036] SVC относится к кодированию видео, в котором используются базовый уровень и один или более масштабируемых уровней расширения. Для SVC базовый уровень обычно несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные видеоданные, чтобы поддержать более высокий пространственный, временной и/или сигнал-к-шуму SNR уровни. Уровни расширения могут быть определены относительно ранее закодированного уровня. Уровни расширения определяют по меньшей мере два различных типа коэффициентов, называемых существенными коэффициентами и коэффициентами детализации (улучшения). Коэффициенты детализации могут определять значения относительно соответствующих значений ранее кодированного уровня. Кадры уровней расширения иногда включают в себя только часть общего количества видеоблоков в базовом уровне или предыдущем уровне расширения, например только те блоки, для которых выполняется расширение.
[0037] Существенные коэффициенты относятся к коэффициентам, для которых соответствующие коэффициенты в предыдущем уровне имели нулевые значения. Коэффициенты детализации относятся к коэффициентам, для которых соответствующие коэффициенты в предыдущем уровне имели ненулевые значения в предыдущем уровне. Кодирование с переменной длиной уровней расширения обычно использует подход с двумя проходами. Первый проход выполняется для кодирования длинами серий существенных коэффициентов, и другой проход выполняется, чтобы закодировать коэффициенты детализации. Методики этого раскрытия особенно полезны для кодирования с переменной длиной коэффициентов детализации, хотя настоящее раскрытие не обязательно ограничивается в этом отношении.
[0038] Согласно методикам этого раскрытия информация передается от устройства 12 источника на устройство 16 приема, которое идентифицирует, какие таблицы VLC должны использоваться для декодирования двух или более различных типов видеоблоков. Информация может быть передана однажды за кадр (или другую кодированную единицу), и может идентифицировать первую таблицу, которая должна использоваться для интракодированных блоков, и вторую таблицу, которая должна использоваться для интеркодированных блоков соответствующего кадра. Эта информация может содержать один или более битов, которые идентифицируют первую таблицу VLC для интракодированных блоков, и один или более битов, которые идентифицируют вторую таблицу VLC для интеркодированных блоков. Видео декодер 28 устройства 16 приема выполняет выбор таблицы на основании этой информации и декодирует видеоблоки, используя выбранные таблицы. Снова, однако, в некоторых случаях кодер 22 и декодер 28 могут иметь соглашение относительно таблиц, которые должны использоваться для различных типов блоков. В этом случае таблицы, которые используются, являются зависимыми от типа блока, но никакая дополнительная информация не должна быть передана от устройства 12 источника на устройство 16 приема, так как кодер 22 и декодер 28 имеют соглашение.
[0039] В примере на Фиг.1 канал 15 связи может содержать любой беспроводной или проводной носитель связи, такой как радиочастотного (РЧ) спектра или одну или более физических линий передачи, или любую комбинацию беспроводного или проводного носителей. Канал 15 связи может быть частью основанной на пакетной передаче сети, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Канал 15 связи обычно представляет собой любой подходящий коммуникационный носитель или «коллекцию» различных коммуникационных носителей для передачи видеоданных от устройства 12 источника на устройство 16 приема. Канал 15 связи может включать в себя различные базовые станции или другие компоненты, чтобы облегчить передачу от устройства 12 источника к устройству 16 приема.
[0040] Устройство 12 источника и устройство 16 приема могут содержать любое из широкого разнообразия устройств беспроводной связи, таких как беспроводные цифровые телевизоры, телефонные трубки устройства беспроводной связи, персональные цифровые ассистенты (PDA), беспроводной портативный или настольный компьютеры, беспроводные цифровые камеры, беспроводные цифровые устройства записи, беспроводные устройства видео игр, беспроводные консоли компьютерных игр, сотовые или спутниковые радиотелефоны и т.п.
[0041] Устройство 12 источника генерирует кодированные видеоданные для передачи на устройство 16 приема. В некоторых случаях, однако, устройства 12, 16 могут работать по существу симметричным способом. Например, каждое из устройств 12, 16 может включать в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддержать одностороннюю или двухстороннюю передачу видео между видео устройствами 12, 16, например, для потоковой передачи видео, радиовещания видео или видео телефонии.
[0042] Источник 20 видео из устройства 12 источника может включать в себя устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео или видео передачу от поставщика видео контента. В качестве другой альтернативы источник 20 видео может генерировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию видео в реальном масштабе времени и генерируемого компьютером видео. В некоторых случаях, если источник 20 видео является видео камерой, устройство 12 источника и устройство 16 приема могут сформировать так называемые телефоны с камерами или видеотелефоны. В каждом случае захваченное, предварительно захваченное или сгенерированное компьютером видео может быть закодировано видеокодером 22 для передачи от устройства 12 источника видео на видеодекодер 28 устройства 16 приема видео через модулятор/передатчик 22, канал 15 связи и приемник/демодулятор 26. Процессы кодирования и декодирования видео могут реализовать способы кодирования длинами серий, описанные здесь, чтобы улучшить эти процессы. Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка, дисплей на жидких кристаллах (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0043] Видеокодер 22 и видеодекодер 28 могут быть конфигурированы, чтобы поддерживать SVC для пространственной, временной и/или отношения сигнал-шум (SNR) масштабируемости. В некоторых аспектах видеокодер 22 и видеодекодер 28 могут быть конфигурированы, чтобы поддержать кодирование с мелкой степенью детализации SNR масштабируемости (FGS), для SVC. Кодер 22 и декодер 28 могут поддерживать различные степени масштабируемости посредством поддержки кодирования, передачи и декодирования базового уровня и одного или более масштабируемых уровней расширения. Снова для масштабируемого кодирования видео базовый уровень несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные данные, чтобы поддерживать более высокий пространственный, временной и/или SNR уровни. Базовый уровень может быть передан способом, который более надежен, чем передача уровней расширения. Например, самые надежные части модулированного сигнала могут быть использованы для передачи базового уровня, в то время как менее надежные части модулированного сигнала могут быть использованы для передачи уровней расширения.
[0044] Чтобы поддержать SVC, видеокодер 22 может включать в себя кодер 32 базового уровня и один или более кодеров 34 уровня расширения, чтобы выполнить кодирование базового уровня и одного или более уровней расширения соответственно. Методики этого раскрытия, которые используют выбор таблицы VLC, применимы к кодированию видеоблоков уровней расширения в SVC.
[0045] Видеодекодер 28 может включать в себя объединенный декодер базового уровня/уровня расширения, который декодирует блоки видео и базового уровня и уровня расширения. Видеодекодер 28 может декодировать видеоблоки, ассоциированные и с базовым и с расширением уровнями, и комбинировать декодированное видео, чтобы восстановить кадры видео последовательности. Устройство 30 отображения принимает декодированную видео последовательность и представляет видео последовательность пользователю.
[0046] Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как MPEG-2, MPEG-4, Н.263 ITU-T или ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное Кодирование Видео (AVC). Хотя и не показано на Фиг.1, в некоторых аспектах видеокодер 22 и видеодекодер 28 могут быть, каждый, интегрированы с аудио кодером и декодером и могут включать в себя соответствующие модули MUX-DEMUX или другое аппаратное обеспечение и программное обеспечение для обработки кодирования и аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, модули MUX-DEMUX может соответствовать протоколу мультиплексора Н.223 ITU или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0047] Стандарт H.264/MPEG-4 (AVC) был сформулирован Группой Экспертов Кодирования Видео (VCEG) ITU-T вместе с Группой Экспертов по Движущимся Изображениям ISO/IEC (MPEG) в качестве продукта коллективного партнерства, известного как Объединенная Видео Группа (JVT). В некоторых аспектах методики, описанные в этом раскрытии, могут быть применены к устройствам, которые обычно соответствуют стандарту H.264. Стандарт H.264 описывается в Рекомендации H.264 ITU-T, Усовершенствованное Кодирование Видео для универсальных аудиовизуальных служб, посредством Исследовательской Группы ITU-T, датированной мартом 2005, который может быть назван здесь как стандарт H.264 или спецификация H.264 или стандарт или спецификация H.264/AVC.
[0048] Объединенная Видео Группа (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, and Mathias Wien, "Joint Draft 6: Scalable Video Coding," JVT-S 201, April 2006, Geneva, и в Joint Draft 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, "Joint Draft 9 of SVC Amendment," JVT-V 201, January 2007, Marrakech, Morocco.
[0049] В некоторых аспектах для вещания видео методики, описанные в этом раскрытии, могут быть применены к Улучшенному кодированию видео H.264 для того, чтобы предоставить службы видео реального времени в системах наземного мобильного мультимедийного мультивещания (TM3), используя Спецификацию Эфирного Интерфейса Только Прямой Линии Связи (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast," опубликованная как Technical Standard TIA-1099 ("Спецификация FLO"). То есть канал 15 связи может содержать беспроводный информационный канал, используемый для беспроводного вещания видеоинформации согласно Спецификации FLO, или подобное. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования, подходящие для эфирного интерфейса FLO. Альтернативно, видео может быть передано согласно другим стандартам, таким как DVB-H (вещание цифрового видео на портативные устройства), ISDB-T (наземное цифровое вещание интегрированных служб) или DMB (вещание цифровой аудиовизуальной информации). Следовательно, устройство 12 источника может быть мобильным беспроводным терминалом, сервером потоковой передачи видео или сервером вещания видео. Однако методики, описанные в этом раскрытии, не ограничиваются конкретным типом системы вещания, мультивещания или точка-точка. В случае вещания устройство 12 источника может вещать несколько каналов видеоинформации к множеству устройств приема, каждое из которых может быть аналогичным устройству 16 приема на Фиг.1.
[0050] Видеокодер 22 и видеодекодер 28, каждый, может быть реализован как один или более микропроцессоров, цифровые процессоры сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратное обеспечение или любые их комбинации. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеры, любой из которых может быть интегрирован как часть объединенного кодера/декодера (кодека) в соответствующем мобильном устройстве, устройстве абонента, устройстве вещания, сервере или подобном. Кроме того, устройство 12 источника и устройство 16 приема, каждое, может включать в себя соответствующие компоненты модуляции, демодуляции, преобразования частоты, фильтрования и усилители для передачи и приема кодированного видео, как приемлемо, включая радиочастотные (РЧ) беспроводные компоненты и антенны, достаточные для поддержания беспроводной связи. Для простоты иллюстрации, однако, такие компоненты объединены как являющиеся модулятором/передатчиком 24 устройства 12 источника и приемником/демодулятором 26 устройства 16 приема на Фиг.1.
[0051] Видеопоследовательность включает в себя последовательность видеокадров. Видеокодер 22 выполняет операции над блоками пикселей (или блоками преобразованных коэффициентов) в индивидуальных видеокадрах, чтобы закодировать видеоданные. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру согласно заданному стандарту кодирования. В некоторых случаях каждый видеокадр является кодированной единицей, в то время как в других случаях каждый видеокадр может быть разбит, и включает в себя последовательность «срезов», которые формируют кодированные единицы. Каждый срез может включать в себя последовательность макроблоков, которые могут быть организованы в субблоки. В качестве примера, стандарт H.264 ITU-T поддерживает интрапредсказание при различных размерах блока, например 16 на 16, 8 на 8 или 4 на 4 для компонентов яркости и 8x8 для компонентов сигнала цветности, а также интерпредсказание в различных размерах блока, например 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для компонентов яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Согласно этому раскрытию информация выбора таблицы VLC для интракодированных блоков и интеркодированных блоков может быть передана от устройства 12 источника на устройство 16 приема однажды на кодированный модуль, например один раз за кадр, один раз за срез или один раз за уровень FGS кадра. Эта информация может затем использоваться для выбора таблицы VLC для кодирования коэффициентов преобразования видеоблоков, ассоциированных с этим соответствующим кодированным модулем.
[0052] Форма и содержимое информации, переданной для идентификации различных таблиц VLC, могут изменяться. Например, информация может быть сформулирована как два различных однобитовых или многобитовых кода, которые идентифицируют - какая таблица VLC должна быть использована для декодирования первого типа видеоблока и какая таблица VLC должна быть использована для декодирования второго типа видеоблока. Для каждого кадра, который должен быть декодирован, один однобитовый или многобитовый код может быть послан для интраблоков и другой однобитовый или многобитовый код может быть послан для интерблоков. Декодер 28 выбирает различные таблицы VLC для декодирования интра- и интеркодированных блоков на основании таблиц, идентифицированных в этих кодах.
[0053] Меньшие видеоблоки могут обеспечить лучшее разрешение и могут использоваться для местоположений видеокадра, которые включают в себя более высокие уровни деталей. Обычно макроблоки (МБ) и различные субблоки могут быть рассмотрены в качестве видеоблоков. Кроме того, срез может рассматриваться как последовательность видеоблоков, таких как МБ и/или субблоки. Как отмечено, каждый срез может быть независимо декодируемой единицей видеокадра. После предсказания преобразование может быть выполнено в отношении остаточного блока 8×8 или остаточного блока 4×4 и дополнительное преобразование может быть применено к DC коэффициентам блоков 4×4 для компонентов сигнала цветности или компонента яркости, если используется интра_16×16 режим предсказания.
[0054] После интра- или интероснованного прогнозирующего кодирования дополнительные способы кодирования могут быть применены к переданному битовому потоку. Эти дополнительные способы кодирования могут включать в себя способы преобразования (такие, как 4×4 или 8×8 целочисленное преобразование, используемое в H.264/AVC, или дискретное косинусное преобразования DCT) и кодирование с переменной длиной. Блоки коэффициентов преобразования могут называться как видеоблоки. Другими словами, термин "видеоблок" относится к блоку видеоданных независимо от области информации. Таким образом, видеоблоки могут быть в пиксельной области или области преобразованных коэффициентов. Применение кодирования VLC описано в целом в этом раскрытии относительно блоков коэффициентов преобразования.
[0055] Это раскрытие обеспечивает способы для кодирования с переменной длиной коэффициентов детализации. Снова коэффициенты детализации относятся к коэффициентам, которые имели ненулевые значения в предыдущем уровне, тогда как существенные коэффициенты относятся к коэффициентам, которые имели нулевые значения в предыдущем уровне. Согласно этому раскрытию информация может быть передана от устройства 12 источника на устройство 16 приема, чтобы выбрать таблицу VLC в декодере для двух или более различных типов видеоблоков. Одна из множества различных таблиц VLC может быть выбрана для каждого типа видеоблока на основании информации, посланной от устройства 12 источника на устройство 16 приема. Устройство приема затем выбирает между двумя идентифицированными таблицами VLC на основании типа декодируемого видеоблока.
[0056] Каждая таблица VLC может включать в себя ряд кодовых символов, имеющих различные длины. Кодовым символам могут быть назначены соответствующие характеристики в пределах видеоблока, например конкретная длина серии из нулей коэффициентов детализации. В некоторых случаях таблицы являются статическими, но в других случаях эти таблицы могут быть сгенерированы или обновлены на основании статистики кодирования так, чтобы кодовые слова переменной длины преобразовывались в наборы коэффициентов способом, который повышает эффективность кодирования. Конечно, если таблицы обновляются в кодере, обновления таблицы также должны быть обновлены в декодере.
[0057] Кодер 22 и декодер 28 могут выполнять взаимно обратные способы, которые кодируют уровень расширения в схеме SVC. В кодере 22 выбор таблицы для кодирования различных видеоблоков может быть выполнен на основании информации, собранной для в настоящее время или ранее кодированных кадров. Если выбор основан на ранее кодированных кадрах, кодирование с одним проходом может использоваться, но если кодирование основано на в настоящее время кодируемых кадрах, это может потребовать кодирование с двумя проходами. В некоторых случаях может быть выполнен статистический анализ ранее закодированных кадров, чтобы облегчить выбор таблицы в кодере 22. Такого в вычислительном отношении интенсивного анализа, однако, можно избежать в декодере 28. Вместо этого информация, идентифицирующая таблицы для первого и второго типов видеоблоков, например, интракодированный блок и интеркодированные блоки могут быть переданы от устройства 12 источника на устройство 16 приема. Декодер 28 затем может использовать эту переданную информацию, чтобы облегчить надлежащие выборы таблицы.
[0058] Выбранные таблицы в кодере (например, которые могут быть выбраны на основании статистики) могут сильно зависеть от уровня квантования, используемого в процессе кодирования. Уровень используемого квантования, в свою очередь, может зависеть от типа видеоблока. Так как уровень квантования, используемый в кодере 22, является обычно неизвестным декодеру 28, информация относительно типа видеоблока обеспечивает полезную альтернативу для применения в декодере 28. Поэтому таблицы идентифицированы для декодера 28 для различных типов видеоблока, и декодер 28 может определить тип, ассоциированный с соответствующим видеоблоком, и использовать соответствующую таблицу VLC, чтобы декодировать этот соответствующий видеоблок. Как используется здесь, термин «кодирование» обычно относится к по меньшей мере части процессов кодирования или декодирования. Видеокодер 22 кодирует данные, в то время как видеодекодер 28 декодирует данные.
[0059] Сами таблицы VLC могут назначить кодовые слова различным наборам коэффициентов преобразования. Наборы коэффициентов с нулевыми значениями могут быть представлены длинами серий из нулей, и более общим длинам серий могут быть назначены более короткие коды VLC. Менее общим длинам серий могут быть назначены более длинные коды VLC. Следовательно, выбор кодов из таблиц VLC может улучшить эффективность кодирования. Назначение кодов в таблицах VLC может быть также основано на статистике во время процесса формирования таблицы, хотя статические таблицы VLC также могут использоваться.
[0001] Фиг.2 - диаграмма, иллюстрирующая видеокадры в базовом уровне 17 и уровне 18 расширения масштабируемого битового потока видео. Как отмечено выше, способы настоящего раскрытия применимы к кодированию данных уровней расширения. Базовый уровень 17 может содержать битовый поток, содержащий кодированные видеоданные, которые представляют первый уровень пространственной, временной или SNR масштабируемости. Уровень 18 расширения может содержать битовый поток, содержащий кодированные видеоданные, которые представляют второй уровень пространственной, временной и/или SNR масштабируемости. Хотя показан один уровень расширения, в некоторых случаях могут использоваться несколько уровней расширения. Битовый поток уровня расширения может быть декодируемым только вместе с базовым уровнем (или предыдущим уровнем расширения, если существует множество уровней расширения). Уровень 18 расширения содержит ссылки на декодированные видеоданные в базовом уровне 17. Такие ссылки могут использоваться или в области преобразования, или в пиксельной области, чтобы сгенерировать окончательные декодированные видеоданные.
[0002] Базовый уровень 17 и уровень 18 расширения может содержать интра- (I), интер- (P) и бинаправленный (B) кадры. Интракадры могут включать в себя все интракодированные видеоблоки. I и P кадры могут включать в себя по меньшей мере некоторые интеркодированные видеоблоки, но могут также включать в себя некоторые интракодированные блоки. Различные кадры уровня 18 расширения не должны включать в себя все видеоблоки в базовом уровне 17. Кадры P в уровне 18 расширения полагаются на ссылки на кадры P в базовом уровне 17. Посредством декодирования кадров в уровне 18 расширения и базовом уровне 17 видеодекодер в состоянии повысить качество видео декодированного видео. Например, базовый уровень 17 может включать в себя видео, закодированное при минимальной частоте кадров, например 15 кадров в секунду, тогда как уровень 18 расширения может включать в себя видео, закодированное с более высокой частотой кадров, например 30 кадров в секунду. Чтобы поддерживать кодирование с различными уровнями качества, базовый уровень 17 и уровень 18 расширения могут быть закодированы с более высоким параметром квантования (QP) и более низким QP соответственно. Кроме того, базовый уровень 17 может быть передан способом, который более надежен, чем передача уровня 18 расширения. Как пример, самые надежные части модулированного сигнала могут быть использованы для передачи базового уровня 17, в то время как менее надежные части модулированного сигнала могут быть использованы для передачи уровня 18 расширения. Иллюстрация на Фиг.2 является просто примерной, поскольку уровни базовый и расширения могут быть определены многими различными способами.
[0060] Фиг.3 - блок-схема, иллюстрирующая пример кодера 50 видео, который включает в себя модуль 46 VLC для кодирования данных совместимым образом с настоящим изобретением. Видеокодер 50 на Фиг.3 может соответствовать кодеру 34 уровня расширения устройства 12 источника на Фиг.1. То есть компоненты кодирования базового уровня не иллюстрируются на Фиг.3 для простоты. Поэтому видеокодер 50 может быть рассмотрен как кодер уровня расширения. Альтернативно, иллюстрированные компоненты видеокодера 50 могут быть также реализованы в комбинации с модулями или блоками кодирования базового уровня, например, в конструкции пирамидального кодера, который поддерживает масштабируемое видеокодирование базового уровня и уровня расширения.
[0061] Видеокодер 50 может выполнять интра- и интеркодирование блоков в видеокадрах. Интракодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видеокадра. Интеркодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров видеопоследовательности. Для интеркодирования видеокодер 50 выполняет оценку движения, чтобы отследить движение соответствующих видеоблоков между двумя или более смежными кадрами.
[0062] Как показано на Фиг.3, видеокодер 50 принимает текущий видеоблок 31 (например, блок видео уровня расширения) в пределах видеокадра, который должен быть закодирован. В примере на Фиг.3 видеокодер 50 включает в себя модуль 33 оценки движения, память 35 опорного кадра, модуль 37 компенсации движения, модуль 39 преобразования блоков, модуль 41 квантования, модуль 42 обратного квантования, модуль 44 обратного квантования и модуль 46 VLC. Фильтр деблокирования (не показан) может быть также включен, чтобы фильтровать границы блоков, чтобы удалить артефакты блочности. Видеокодер 50 также включает в себя сумматор 48 и сумматор 51. Фиг.3 иллюстрирует временные компоненты предсказания видеокодера 50 для интеркодирования видеоблоков. Хотя не показано на Фиг.3 для простоты иллюстрации, видеокодер 50 также может включать в себя компоненты пространственного предсказания для интракодирования некоторых видеоблоков. Компоненты пространственного предсказания, однако, обычно используются только для кодирования базового уровня.
[0063] Модуль 33 оценки движения сравнивает видеоблок 31 с блоками в одном или более смежных (соседних) видеокадрах, чтобы сгенерировать один или более векторов движения. Смежный кадр или кадры могут быть извлечены из памяти 35 опорного кадра, которая может быть любым типом памяти или запоминающим устройством, чтобы хранить видеоблоки, восстановленные из ранее кодированных блоков. Оценка движения может быть выполнена для блоков переменных размеров, например 16×16, 16×8, 8×16, 8×8 или блоков меньшего размера. Модуль 33 оценки движения идентифицирует блок в смежном кадре, который наиболее близко соответствует текущему видеоблоку 31, например, на основании модели искажения скорости передачи, и определяет смещение между блоками. На этой основе модуль 33 оценки движения формирует вектор движения (MV) (или множество MV в случае двунаправленного предсказания), который указывает величину и траекторию смещения между текущим видеоблоком 31 и прогнозирующим блоком, используемым для кодирования текущего видеоблока 31.
[0064] Векторы движения могут иметь точность в половину или четверть пикселя или даже более высокую точность, позволяя видеокодеру 50 отследить движение с более высокой точностью, чем местоположения с целочисленными пикселями, и получить блок с лучшим прогнозом. Когда используются векторы движения с дробными значениями пикселя, операции интерполяции выполняются в модуле 37 компенсации движения. Модуль 33 оценки движения может идентифицировать лучший вектор движения для видеоблока, используя модель искажения скорости передачи. Используя результирующий вектор движения, модуль 37 компенсации движения формирует блок видео предсказания посредством компенсации движения.
[0065] Видеокодер 50 формирует остаточный видеоблок посредством вычитания блока видео предсказания, сформированного модулем 37 компенсации движения, из первоначального, текущего видеоблока 31 в сумматоре 48. Модуль 39 преобразования блоков применяет преобразование, такое как дискретное косинусное преобразование (DCT), к остаточному блоку, формируя коэффициенты остаточных блоков преобразования. Модуль 41 квантования квантует коэффициенты остаточных блоков преобразования, чтобы дополнительно уменьшить скорость передачи в битах. Сумматор 49A принимает информацию о коэффициентах базового уровня, например, от кодера базового уровня (не показан) и располагается между модулем 39 преобразования блоков и модулем 41 квантования, чтобы предоставить эту информацию о коэффициентах базового уровня для кодирования уровня расширения. В частности, сумматор 49A вычитает информацию о коэффициентах базового уровня из выходного сигнала модуля 39 преобразования блоков. Аналогично сумматор 49B, который расположен между модулем 44 обратного преобразования и модулем 42 обратного квантования, также принимает информацию о коэффициентах базового уровня от кодера базового уровня (не показан). Сумматор 49B суммирует информацию о коэффициентах базового уровня с выходным сигналом модуля 42 обратного квантования.
[0066] Модуль 46 VLC кодирует квантованные коэффициенты преобразования согласно методологии кодирования с переменной длиной, чтобы еще больше уменьшить скорость передачи в битах переданной информации. В частности, модуль 46 VLC применяет способы этого раскрытия, чтобы закодировать коэффициенты детализации уровня расширения. Модуль 46 VLC может также сгенерировать дополнительную информацию, чтобы идентифицировать, какие таблицы декодер должен использовать для различных типов видеоблоков. Эта дополнительная информация может быть включена в кодированный битовый поток так, чтобы декодер мог определить надлежащие таблицы для различных типов видеоблоков и затем выбрать такие таблицы на основании типа декодируемого видеоблока.
[0067] Выбор таблицы модулем 46 VLC для кодирования различных видеоблоков может быть выполнен на основании информации, собранной для ранее или в настоящее время кодируемых кадров. Например, статистический анализ ранее закодированных кадров может быть выполнен, чтобы облегчить выбор таблицы модулем 46 VLC. Такого в вычислительном отношении интенсивного анализа, однако, можно избежать в декодере. Вместо этого информация, идентифицирующая таблицы для первого и второго типов видеоблоков, например интракодированный блок и интеркодированный блоки, может быть закодирована в битовый поток. Устройство декодера может использовать эту переданную информацию, чтобы облегчить выборы надлежащих таблиц. Альтернативно, в некоторых случаях устройство кодирования и устройство декодирования могут иметь соглашение - какие таблицы использовать для различных типов видеоблока.
[0068] После кодирования с переменной длиной закодированное видео может быть передано на другое устройство. Кроме того, модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок. Сумматор 51 суммирует этот восстановленный остаточный блок с блоком предсказания с компенсированным движением, сформированным модулем 37 компенсации движения, чтобы сформировать восстановленный видеоблок для сохранения в памяти 35 опорных кадров. Восстановленный видеоблок используется модулем 33 оценки движения и модулем 37 компенсации движения, чтобы закодировать блок в последующем видеокадре.
[0069] Фиг.4 - блок-схема, иллюстрирующая пример декодера 60 видео, который может соответствовать декодеру 28 видео на Фиг.1, который выполняет декодирование базового уровня и уровня расширения. Видеодекодер 60 включает в себя модуль 52A VLC для информации уровня расширения, который выполняет соответствующую функцию модуля 46 VLC на Фиг.3. То есть, как и модуль 46 VLC, модуль 52A VLC кодирует коэффициенты детализации уровня расширения. Как отмечено, в кодере выбор таблицы VLC для кодирования различных видеоблоков может быть выполнен на основании информации, собранной для ранее или в настоящее время кодируемых кадров, например, используя статистический анализ ранее закодированных или в настоящее время кодируемых кадров, чтобы облегчить выбор таблицы в кодере. Такого в вычислительном отношении интенсивного анализа, однако, можно избежать в декодере 40. Вместо этого информация, идентифицирующая таблицы для первого и второго типов видеоблоков, например интракодированный блок и интеркодированные блоки, может быть передана с кодера на декодер 60. Декодер 60 может использовать эту переданную информацию, чтобы облегчить надлежащие выборы таблиц.
[0070] Видеодекодер 60 может также включать в себя другой модуль 52B VLC для информации базового уровня. Модуль 55 интрапредсказания может необязательно выполнять любое пространственное декодирование блоков видео базового уровня, и выходной сигнал модуля 55 интрапредсказания может быть направлен сумматору 53. Тракт уровня расширения может включать в себя модуль 58A обратного квантования, и тракт базового уровня может включать в себя модуль 56B обратного квантования. Информация в трактах базового уровня и уровня расширения может быть объединена сумматором 57.
[0071] Видеодекодер 60 может выполнять интра- и интердекодирование блоков в видеокадрах. В примере на Фиг.4 видеодекодер 60 включает в себя модули 52A и 52B VLC (упомянуты выше), модуль 54 компенсации движения, модули 56A и 56B обратного квантования, модуль 58 обратного преобразования и память 62 опорных кадров. Видеодекодер 60 также включает в себя сумматор 64. Необязательно видеодекодер 60 также может включать в себя фильтр деблокирования (не показан), который фильтрует выходной сигнал сумматора 64. Снова сумматор 57 объединяет информацию в трактах базового уровня и уровня расширения и модуле 55 интрапредсказания и сумматор 53 облегчает любое пространственное декодирование блоков видео базового уровня.
[0072] В соответствии с настоящим изобретением модуль 52A VLC принимает информацию уровня расширения закодированного битового потока видео и применяет способы VLC, описанные в этом раскрытии. В частности, для коэффициентов детализации видео битовый поток может быть кодирован, чтобы идентифицировать соответствующие таблицы VLC для двух или более различных типов видеоблоков. Модуль 52A VLC определяет тип видеоблока для каждого кодируемого видеоблока и выбирает соответствующую таблицу VLC декодирования для соответствующего видеоблока на основании информации, переданной в битовом потоке, которая идентифицирует такую таблицу VLC декодирования для этого типа видеоблока. Процесс декодирования может сформировать квантованные остаточные коэффициенты, макроблоки и режим кодирования субблоков и информацию движения, которая может включать в себя векторы движения и разделения на блоки.
[0073] После декодирования, выполненного модулем 52A VLC, модуль 54 компенсации движения принимает векторы движения и один или более восстановленных опорных кадров из памяти 62 опорных кадров. Модуль 56A обратного квантования выполняет обратное квантование, то есть деквантует квантованные коэффициенты блоков. После комбинирования информации уровней расширения и базового посредством сумматора 57 модуль 58 обратного преобразования применяет обратное преобразование, например обратное DCT, к этим коэффициентам, чтобы сформировать остаточные блоки. Модуль 54 компенсации движения формирует блоки с компенсированным движением, которые суммируются сумматором 64 с остаточными блоками, чтобы сформировать декодированные блоки. Если желательно, фильтр деблокирования также может быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Фильтрованные блоки затем помещаются в память 62 опорных кадров, которая выдает опорные блоки из компенсации движения и также формирует декодированное видео для возбуждения устройства отображения (такого, как устройство 30 на Фиг.1).
[0074] Фиг.5 - блок-схема, иллюстрирующая примерный модуль 46 VLC, который может соответствовать тому, что показан на Фиг.3. Модуль 46 VLC включает в себя модуль 72 кодирования, модуль 74 выбора таблицы и VLC таблицы 78. VLC таблицы 78 обычно относятся к таблицам, которые могут быть сохранены в любом местоположении, например локально или вне кристалла в местоположении отдельной памяти. VLC таблицы 78 могут быть обновлены периодически, как желательно.
[0075] Модуль 72 кодирования кодирует коэффициенты детализации и существенные коэффициенты в отдельных проходах кодирования. Выбор таблицы модулем 46 VLC для кодирования коэффициентов, ассоциированных с различными видеоблоками, может быть выполнен на основании информации, собранной для ранее кодированного или в настоящее время кодируемых кадров. Например, статистический анализ ранее закодированных кадров может быть выполнен, чтобы облегчить выбор таблицы модулем 46 VLC. Для коэффициентов детализации (и, возможно, других коэффициентов) модуль 46 VLC генерирует информацию (которая затем включается в кодированный битовый поток), которая идентифицирует различные VLC таблицы, чтобы использовать в декодере для различных типов видеоблоков. Устройство декодера может использовать эту информацию, чтобы облегчить надлежащие выборы таблицы. Информация, которая идентифицирует различные VLC таблицы, чтобы использовать в декодере для различных типов видеоблоков, может принимать различные формы, но в одном случае содержит два бита информации. Первый бит идентифицирует таблицу из двух возможных таблиц для интракодированных блоков, и второй бит идентифицирует таблицу из двух возможных таблиц для интеркодированных блоков. Конечно, может быть необходимо больше информации, если есть больше чем две таблицы для выбора из них для каждого типа блока.
n
n-1
n-1
[0076] Коэффициенты детализации могут иметь значения, ограниченные -1, 0 и 1, которые могут быть закодированы двумя битами информации. Первый бит (coeff_ref_flag) может указывать, равен ли коэффициент 0 (coeff_ref_flag =0) или нет (coeff_ref_flag=1), и второй бит может указывать, является ли знак (обозначенный как s) коэффициента детализации таким же (coeff_ref_dir_fiag=0) или отличным (coeff_ref_dir_flag=1) от знака (обозначенного как s) соответствующего коэффициента предыдущего уровня. Предыдущий уровень обозначается как s. Если знак текущего коэффициента такой же, как знак из предыдущего уровня, то coeff_ref_dir_fiag=0, и если знак текущего коэффициента является отличным от такового предыдущего уровня, то coeff_ref_dir_flag=1. Два бита детализации могут быть объединены в алфавит из трех символов детализации следующим образом в Таблице 1:
ТАБЛИЦА 1
coeff_ref_flag
coeff_ref_dir_fiag
ref_symbol
0
-
0
1
0
1
1
1
2
Альтернативно, другая схема также может быть использована для кодирования коэффициентов детализации, не отступая от методик этого раскрытия.
[0077] VLC таблицы 78 могут содержать кодовые слова переменной длины, которые преобразуются в различные наборы коэффициентов, которые могут быть определены символами, флажками или другими типами битов. VLC таблицы 78 могут быть обновлены, как желательно. Любое число таблиц может быть включено в таблицы VLC 88. В некоторых случаях две таблицы используются, хотя может быть включено больше. В любом случае модуль 72 кодирования может обращаться к различным таблицам VLC для различных типов видеоблоков и может передавать информацию относительно этих таблиц для различных типов видеоблоков как часть закодированного битового потока. Таким образом, устройство декодера не должно выполнять в вычислительном отношении интенсивный статистический анализ, чтобы определить, какие таблицы использовать, и вместо этого может просто идентифицировать таблицы из информации в кодированном битовом потоке. Таблицы, используемые при кодировании различных типов видеоблоков, могут быть определены однажды за кадр, однажды за срез, однажды за уровень FGS кадра или один раз за другой тип закодированной единицы.
[0078] Фиг.6 - блок-схема, иллюстрирующая примерный модуль 52A VLC, который может соответствовать модулю 52A VLC, показанному на Фиг.4. Модуль 52A VLC выполняет обратные декодирующие функции относительно кодирования, которое выполняется модулем 46 VLC. Таким образом, тогда как модуль 46 VLC принимает квантованные остаточные коэффициенты и генерирует битовый поток, модуль 52A VLC принимает битовый поток и генерирует квантованные остаточные коэффициенты. Однако в отличие от модуля 46 VLC модуль VLC декодирования не должен выполнять в вычислительном отношении интенсивный статистический анализ, чтобы определить, какие таблицы использовать, и вместо этого может просто идентифицировать таблицы из информации в кодированном битовом потоке и выбрать таблицу для заданного видеоблока на основании типа блока этого видеоблока.
[0079] Модуль 52A VLC включает в себя модуль 82 декодирования, модуль 86 выбора таблицы и одну или более VLC таблиц 88. Как в модуле 46, VLC таблицы 88 модуля 52 обычно относятся к таблицам, которые могут быть сохранены в любом местоположении, например локально или вне кристалла в местоположении отдельной памяти. VLC таблицы 88 могут быть обновлены периодически, как желательно. Любое число таблиц может быть включено в VLC таблицы 88. В некоторых случаях используются две таблицы, хотя может быть включено и больше.
[0080] Модуль 82 декодирования VLC может выполнить отдельные проходы декодирования для существенных коэффициентов и коэффициентов детализации. Способы этого раскрытия могут быть применимыми к коэффициентам кодирования или детализации только или могут использоваться и для коэффициентов детализации, и для существенных коэффициентов.
[0081] Кодированный битовый поток, принятый модулем 82 декодирования, включает в себя информацию, представляющую закодированные коэффициенты, например кодовые слова, и информацию, которая идентифицирует таблицы, которые должны использоваться при декодировании различных типов видеоблоков. Модуль 86 выбора таблицы определяет, какие таблицы должны использоваться для различных типов видеоблоков для каждого кодированного модуля, например для каждого кадра. Модуль 82 декодирования затем декодирует принятую информацию на основании соответствующих таблиц 88 VLC, как определено модулем 86 выбора таблицы, для генерирования квантованных остаточных коэффициентов, которые были закодированы в битовом потоке.
[0082] Фиг.7 - схема последовательности операций, иллюстрирующая методику кодирования для кодирования с переменной длиной коэффициентов (например, обычно коэффициентов детализации) уровня расширения, совместимого с настоящим изобретением. Как показано на Фиг.7, модуль 76 выбора таблицы выбирает подходящие таблицы, которые должны использоваться для кодирования (91). Выбранные таблицы могут повысить эффективность кодирования и могут быть выбраны на основании статистического анализа ранее кодированных или в настоящее время кодируемых видеокадров. В частности, модуль 76 выбора таблицы может выбрать различные таблицы VLC, которые должны использоваться при кодировании видеоблоков, на основании уровней квантования, ассоциированных с такими блоками, и соответствующих статистических данных, которые указывают, какие таблицы использовались как аналогичные уровни квантования.
[0083] Модуль 72 кодирования кодирует коэффициенты посредством выполнения поисков в VLC таблицах 78 (92), которые были выбраны модулем 76 выбора таблицы. Наборам коэффициентов (таким, как наборы с длиной серии из нулей или наборы кодированных шаблонов блоков) могут быть назначены коды переменной длины в таблицах VLC. Таким образом, более вероятные наборы коэффициентов могут быть закодированы кодовыми словами с более короткими длинами и менее вероятные наборы коэффициентов могут быть закодированы кодовыми словами с более короткими длинами, чтобы повысить эффективность кодирования.
[0084] Различные таблицы VLC могут быть выбраны для различных типов видеоблоков, например интракодированные блоки и интеркодированные блоки, так как эти различные типы видеоблоков обычно кодируются при различных уровнях квантования. Модуль 46 VLC генерирует информацию, идентифицирующую таблицы, которые должны использоваться для декодирования различных типов видеоблоков (93). Выходной битовый поток модуля 46 VLC может включать в себя и информацию, представляющую кодированные коэффициенты, и информацию, идентифицирующую таблицы, которые должны использоваться при декодировании различных типов видеоблоков.
[0085] Выходной битовый поток может быть отправлен передатчику (такому, как модулятор/передатчик 24 на Фиг.1) для передачи на устройство 16 приема по каналу 15 связи. Эта передача битового потока включает в себя передачу информации, представляющей закодированные коэффициенты (94), которая может содержать кодовые слова, выбранные из таблиц 78 VLC. Кроме того, передача битового потока включает в себя передачу информации, идентифицирующей таблицы, которые должны использоваться при декодировании различных типов видеоблоков (95). Процесс согласно Фиг.7 может быть повторен для каждой кодированной единицы (96), например для каждого среза или каждого кадра, который должен быть закодирован.
[0086] Фиг.8 - схема последовательности операций, иллюстрирующая методику декодирования для коэффициентов кодирования с переменной длиной (обычно коэффициентов детализации) уровня расширения, совместимую с настоящим изобретением. Как показано на Фиг.8, модуль 82 декодирования VLC принимает информацию, представляющую закодированные коэффициенты (101), и принимает информацию, идентифицирующую различные таблицы, которые должны использоваться для декодирования различных типов видеоблоков (102). Приемник, такой приемник/демодулятор 26 (Фиг.1), может облегчить прием этой информации из канала 15 связи.
[0087] Модуль 86 выбора таблиц выбирает таблицы для различных типов видеоблока на основании принятой информации, идентифицирующей различные таблицы, которые должны использоваться (103). Различные типы видеоблоков могут содержать интракодированные блоки и интеркодированные блоки. Соответственно, интракодированным блокам и интеркодированным блокам можно назначить различные таблицы VLC для каждой кодированной единицы, например каждого кадра или каждого среза. Модуль 82 декодирования декодирует информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц (104). Например, модуль 82 декодирования может обратиться к выбранным таблицам 88 VLC и выполнить табличные поиски для декодирования информации, чтобы сгенерировать коэффициенты. Процесс согласно Фиг.8 повторяется для каждой кодированной единицы (105). Альтернативно, если соглашение между кодером и декодером было предварительно установлено относительно таблиц для использования для различных типов блока, этап 102 может быть удален и выбор таблицы на этапе 103 может быть основан только на типе блока, который должен быть декодирован.
[0088] Как описано здесь, в кодере выбор таблицы для кодирования коэффициентов детализации, ассоциированных с различными типами видеоблоков, может быть выполнен на основании информации, собранной для ранее кодированного или в настоящее время кодируемых кадров. Статистический анализ ранее закодированных кадров может быть выполнен, например, чтобы облегчить выбор таблицы в кодере. Например, коэффициенты детализации могут быть кодированы, используя доступные таблицы, и таблица, которая обеспечивает наименьшее количество битов для кодирования информации, может быть выбрана. Такого в вычислительном отношении интенсивного анализа, однако, можно избежать в декодере. Вместо этого информация, идентифицирующая таблицы для первого и второго типов видеоблоков, например интракодированный блок и интеркодированные блоки, может быть передана с кодера на декодер. Декодер может использовать эту переданную информацию, чтобы облегчить надлежащие выборы таблицы на основании типа блока.
[0089] Выбранные таблицы могут зависеть от уровня квантования, используемого в процессе кодирования. Уровень используемого квантования, в свою очередь, может зависеть от типа видеоблока. Так как уровень квантования, используемый в кодере, является обычно неизвестным декодеру, информация относительно типа видеоблока обеспечивает полезный инструмент выбора для применения в декодере. Поэтому таблицы идентифицируются для декодера для различных типов видеоблока, и декодер может определить тип, ассоциированный с соответствующим видеоблоком, и выбрать соответствующую таблицу VLC для декодирования этого соответствующего видеоблока. Таблицы для различных типов видеоблоков могут измениться на основании кадр-за-кадром (или на основе срез-за-срезом).
[0090] Способы, описанные здесь, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в интегрированном логическом устройстве или отдельно как дискретные, но взаимодействующие логические устройства. Если реализованы в программном обеспечении, способы могут быть реализованы, по меньшей мере частично, считываемыми компьютером носителем, содержащим команды, которые, когда исполняются, выполняют один или более способов, описанных выше. Считываемый компьютером носитель для хранения данных может быть частью компьютерного программного продукта, который может включать в себя упаковочные материалы. Считываемый компьютером носитель может содержать оперативную память (ОЗУ), такую как синхронное динамическое ОЗУ (SDRAM), ПЗУ (ROM), энергонезависимое ОЗУ (NVRAM), электрически стираемое ППЗУ (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Способы дополнительно или альтернативно могут быть реализованы, по меньшей мере частично, считываемым компьютером коммуникационным носителем, который несет или сообщает код в форме команд или структур данных, и к этому можно обратиться, считать и/или выполнять компьютером.
[0091] Код может быть выполнен одним или более процессорами, такими как один или более цифровые процессоры сигналов (DSP), микропроцессоры общего применения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA) или другая эквивалентная интегральная или дискретная логическая схема. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в выделенных программных модулях или модулях аппаратного обеспечения, сконфигурированных для кодирования и декодирования, или встроены в комбинированный видеокодер-декодер (кодек).
[0092] Это раскрытие может также относиться к схеме, такой как интегральная схема, набор микросхем ASIC, FPGA, логические схемы или различные их комбинации, сконфигурированные для выполнения одной или более методик, описанных здесь. Соответственно, это раскрытие также рассматривает схему, конфигурированную для кодирования уровня расширения схемы SVC, где схема конфигурируется для кодирования коэффициентов, ассоциированных с видеоблоками уровня расширения, на основании таблиц кодирования с переменной длиной, генерирования информации, идентифицирующей первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков, передавать информацию, представляющую закодированные коэффициенты, к устройству декодирования и передавать информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать первый тип видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна использоваться устройством декодирования, чтобы декодировать второй тип видеоблоков.
[0093] Это раскрытие также рассматривает схему, конфигурированную для кодирования уровня расширения схемы масштабируемого кодирования видео (SVC), в котором схема конфигурируется, чтобы принять информацию, представляющую кодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, принять информацию, идентифицирующую первую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования первого типа видеоблоков, и вторую таблицу кодирования с переменной длиной, которая должна быть использована для декодирования второго типа видеоблоков, выбирать таблицы для декодирования информации, представляющие закодированные коэффициенты, на основании информации, идентифицирующей первую и вторую таблицу кодирования с переменной длиной, которая должна использоваться, и декодировать информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц.
[0094] Кроме того, это раскрытие рассматривает схему, конфигурированную для кодирования уровня расширения схемы SVC, при этом схема конфигурируется, чтобы принять информацию, представляющую кодированные коэффициенты, ассоциированные с видеоблоками уровня расширения, выбирать различные таблицы кодирования с переменной длиной, которые должны быть использованы для декодирования информации на основании типов блока, ассоциированных с видеоблоками, в соответствии с соглашением, установленным с кодером, декодировать информацию, представляющую закодированные коэффициенты, на основании выбранных таблиц.
[0095] Были описаны различные варианты осуществления изобретения. Эти и другие варианты осуществления находятся в объеме нижеследующей формулы изобретения.