УСОВЕРШЕНСТВОВАННОЕ КОДИРОВАНИЕ УЛУЧШАЮЩЕГО СЛОЯ ДЛЯ МАСШТАБИРУЕМОГО КОДИРОВАНИЯ ВИДЕО
ENHANCING LAYER IMPROVED CODING FOR SCALABLE VIDEO CODING

Эта заявка притязает на приоритет по предварительной заявке на патент США №60/979919, поданной 15 октября 2007 года, и предварительной заявке на патент США №60/940214, поданной 16 октября 2007 года. Содержание каждой из этих заявок заключено в настоящий документ по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Это раскрытие относится к цифровому кодированию видео и, в частности, к масштабируемому кодированию видеоданных.
УРОВЕНЬ ТЕХНИКИ
Способности работы с цифровым видео могут быть заключены в широкий диапазон устройств, включающий в себя цифровые телевизоры, системы прямого цифрового вещания, устройства беспроводной связи, системы беспроводного вещания, карманные персональные компьютеры (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, игровые приставки, сотовые или спутниковые радиотелефоны и т.п. Устройства для работы с цифровым видео осуществляют методики сжатия видео, такие как стандарты Группы экспертов по движущемуся изображению (MPEG)-2, MPEG-4, или стандарт сектора стандартизации Международного союза по телекоммуникациям (ITU-T) H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC) (в дальнейшем "стандарт MPEG-4/H.264, часть 10, AVC") для более эффективной передачи и приема цифрового видео. Методики сжатия видео выполняют пространственное и временное предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям.
При кодировании видео сжатие видео обычно включает в себя пространственное предсказание и/или оценку движения и компенсацию движения для формирования видеоблока предсказания. Внутреннее кодирование полагается на пространственное предсказание для уменьшения или удаления пространственной избыточности среди видеоблоков в пределах заданного элемента кодирования, например кадра или мозаичного фрагмента. Другими словами, видеокодер выполняет пространственное предсказание для сжатия данных на основе других данных в пределах того же самого элемента кодирования. Напротив, внешнее кодирование полагается на временное предсказание для уменьшения или удаления временной избыточности среди видеоблоков последовательных видеокадров видеопоследовательности. Таким образом, для внешнего кодирования видеокодер выполняет оценку движения и компенсацию движения для отслеживания движения совпадающих видеоблоков из двух или более смежных элементов кодирования.
После пространственного или временного предсказания блок остаточных коэффициентов (называемый остаточным блоком или остаточной информацией) формируется посредством вычитания видеоблока предсказания из первоначального кодируемого видеоблока. Остаточный блок может представлять собой двумерную матрицу значений коэффициентов, которые определяют количество различий между видеоблоком предсказания и первоначальным блоком. Видеокодер может применить к остаточному блоку процессы преобразования, квантования и статистического кодирования для дополнительного уменьшения скорости передачи битов, ассоциированной с передачей остаточного блока. Методики преобразования могут содержать дискретные косинусные преобразования (DCT), вейвлетные преобразования, целочисленные преобразования или другие типы преобразований.
При DCT-преобразовании, например, процесс преобразования конвертирует набор коэффициентов в области пикселей в коэффициенты преобразования, которые представляют собой энергию коэффициентов в области пикселей в области частоты или преобразования. К коэффициентам преобразования применяется квантование для формирования квантованных коэффициентов преобразования. Квантование обычно ограничивает количество битов, ассоциированных с любым заданным коэффициентом. Видеокодер статистически кодирует квантованные коэффициенты преобразования, чтобы дополнительно сжать квантованные коэффициенты преобразования. Видеокодер может статистически кодировать коэффициенты с использованием кодирования с переменной длиной (VLC), арифметического кодирования, кодирования с фиксированной длиной или их комбинации. Видеодекодер может выполнять обратные операции для воссоздания видеопоследовательности.
Некоторые стандарты кодирования видео, такие как MPEG-2, кодируют видео с относительно постоянным качеством, скоростью передачи битов или пространственной разрешающей способностью. Такая методика может быть достаточной для предоставления приложений для работы с видео для устройств, имеющих аналогичные способности декодера (например, память или ресурсы для обработки) и/или качества соединения. Однако более современные системы передачи видео обычно включают в себя устройства с переменными способностями декодера и/или качествами соединения. В таких системах передача видео, закодированного с относительно постоянным качеством, скоростью передачи битов или пространственной разрешающей способностью, приводит к тому, что приложения для работы с видео работают для устройств, которые имеют подходящие способности декодера и/или качество соединения, и не работают для устройств, у которых нет подходящих способностей декодера и/или качества соединения. В контексте беспроводной связи, например, устройства, расположенные ближе к источнику передачи видео, могут иметь более высокое качество соединения, чем устройства, расположенные дальше от источника. Таким образом, устройства, расположенные дальше от источника, могут быть не в состоянии принять закодированное видео, переданное с постоянным качеством, скоростью передачи битов или пространственной разрешающей способностью.
Другие стандарты кодирования видео используют методики масштабируемого кодирования для преодоления этих проблем. Масштабируемым кодированием видео (SVC), например, в соответствии с расширением стандарта ITU-T H.264/MPEG-4, часть 10, AVC называется кодирование видео, в котором видеопоследовательность закодирована как базовый слой и один или более масштабируемых улучшающих слоев. Для SVC базовый слой обычно несет видео с базовым пространственным, временным и/или качественным уровнем. Один или более улучшающих слоев несут добавочное видео для поддержки более высоких пространственных, временных и/или качественных уровней. Улучшающие слои могут, например, добавлять пространственную разрешающую способность к кадрам базового слоя или могут добавлять добавочные кадры для увеличения полной частоты кадров. В некоторых случаях базовый слой может быть передан более надежным методом, чем передача улучающих слоев. Таким образом, устройства, расположенные дальше от источника закодированного видео или с более низкими способностями декодера могут быть в состоянии принять базовый слой и, таким образом, видеопоследовательность, хотя и с самым низким пространственным, временным и/или качественным уровнем.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Это раскрытие описывает методики масштабируемого кодирования видео, которые дают возможность статистического кодирования битового потока улучшающего слоя в одном проходе кодирования. Традиционно битовый поток улучшающего слоя кодируется с использованием множества проходов кодирования. Для каждого видеоблока улучшающего слоя, например, первый проход кодирования может собирать статистику для блока для использования при выборе таблиц кодирования (или кодовых книг) для статистического кодирования блока, и второй проход кодирования может статистически кодировать блок с использованием выбранных таблиц кодирования. Однако в соответствии с методиками в этом раскрытии видеоблоки битового потока улучшающего слоя статистически кодируются без выполнения первого прохода кодирования для сбора статистики для использования при выборе таблицы кодирования видео.
Вместо этого улучшающий слой кодируется с использованием методики кодирования, которая кодирует коэффициенты улучшающего слоя один за другим в одном проходе кодирования. В одном случае видеокодер для каждого из отличных от нуля коэффициентов видеоблока улучшающего слоя может закодировать символ конца блока (EOB), длину серии и знак. Видеокодер может использовать только одну таблицу кодирования для кодирования видеоблока улучшающего слоя, тем самым избавляя от необходимости выполнять первый проход кодирования для накопления статистики, которая должна использоваться при выборе таблиц кодирования.
Вдобавок, видеокодер может не кодировать величину отличных от нуля коэффициентов в улучшающем слое. В этом методе величина всех отличных от нуля коэффициентов улучшающего слоя может быть ограничена величиной, равной единице. Отсутствие кодирования величины коэффициентов улучшающего слоя может привести к некоторой потере отношения пикового сигнала к шуму (PSNR), но уменьшает количество битов, используемых для кодирования улучшающего слоя. Методики этого раскрытия могут предоставить несколько преимуществ. Например, методики могут уменьшить сложность кодирования, задержку кодирования и требования к памяти для кодирования битового потока улучшающего слоя при поддержании эффективности кодирования.
В одном аспекте способ кодирования видео с использованием масштабируемого кодирования видео содержит этап, на котором кодируют видеоблок с первым качеством как часть битового потока базового слоя. Способ также включает в себя этап, на котором как часть по меньшей мере одного битового потока улучшающего слоя кодируют уточнения видеоблока, которые при их комбинировании с видеоблоком, закодированным с первым качеством, дают в результате видеоблок, имеющий второе качество, которое больше первого качества. Способ также включает в себя уточнения видеоблока, которые должны быть закодированы в одном проходе кодирования.
В еще одном аспекте устройство для кодирования видео с использованием масштабируемого кодирования видео содержит по меньшей мере один кодер, который кодирует видеоблок с первым качеством как часть битового потока базового слоя и как часть по меньшей мере одного битового потока улучшающего слоя кодирует уточнения видеоблока, которые при их комбинировании с видеоблоком, закодированным с первым качеством, дают в результате видеоблок, имеющий второе качество, которое больше первого качества. Уточнения видеоблока кодируются в одном проходе кодирования.
В еще одном аспекте машиночитаемый носитель содержит команды, чтобы заставить один или более процессоров кодировать видеоблок с первым качеством как часть битового потока базового слоя и как часть по меньшей мере одного битового потока улучшающего слоя кодировать уточнения видеоблока, которые при их комбинировании с видеоблоком, закодированным с первым качеством, дают в результате видеоблок, имеющий второе качество, которое больше первого качества. Уточнения видеоблока кодируются в одном проходе кодирования.
В еще одном аспекте устройство для кодирования видеоданных с использованием масштабируемого кодирования видео содержит первое средство для кодирования видеоблока с первым качеством как части битового потока базового слоя и второе средство для кодирования как части по меньшей мере одного битового потока улучшающего слоя уточнений видеоблока, которые при их комбинировании с видеоблоком, закодированным с первым качеством, дают в результате видеоблок, имеющий второе качество, которое больше первого качества. Уточнения видеоблока кодируются в одном проходе кодирования.
В еще одном аспекте способ декодирования видеоданных с использованием масштабируемого кодирования видео содержит этапы, на которых декодируют битовый поток базового слоя для получения видеоблока с первым качеством и декодируют битовый поток улучшающего слоя для получения уточнений видеоблока, которые при их комбинировании с видеоблоком, декодированным с первым качеством, дают в результате видеоблок, имеющий второе качество. Декодирование улучшающего слоя включает в себя этап, на котором для каждого отличного от нуля коэффициента уточнений видеоблока декодируют символ, указывающий наличие по меньшей мере одного оставшегося отличного от нуля коэффициента, длину серии, указывающую количество нулевых коэффициентов, предшествующих отличному от нуля коэффициенту, и знак отличного от нуля коэффициента.
В еще одном аспекте устройство для декодирования видеоданных с использованием масштабируемого кодирования видео содержит по меньшей мере один декодер, который декодирует битовый поток базового слоя для получения видеоблока с первым качеством и декодирует битовый поток улучшающего слоя для получения уточнений видеоблока, которые при их комбинировании с видеоблоком, декодированным с первым качеством, дают в результате видеоблок, имеющий второе качество. По меньшей мере один декодер для каждого отличного от нуля коэффициента уточнений видеоблока декодирует символ, указывающий наличие по меньшей мере одного оставшегося отличного от нуля коэффициента, длину серии, указывающую количество нулевых коэффициентов, предшествующих отличному от нуля коэффициенту, и знак отличного от нуля коэффициента.
В еще одном аспекте машиночитаемый носитель содержит команды, чтобы заставить один или более процессоров декодировать битовый поток базового слоя для получения видеоблока с первым качеством и декодировать битовый поток улучшающего слоя для получения уточнений видеоблока, которые при их комбинировании с видеоблоком, декодированным с первым качеством, дают в результате видеоблок, имеющий второе качество. Команды заставляют один или более процессоров для каждого отличного от нуля коэффициента уточнений видеоблока декодировать символ, указывающий наличие по меньшей мере одного оставшегося отличного от нуля коэффициента, длину серии, указывающую количество нулевых коэффициентов, предшествующих отличному от нуля коэффициенту, и знак отличного от нуля коэффициента.
В еще одном аспекте устройство для декодирования видеоданных с использованием масштабируемого кодирования видео содержит первое средство для декодирования битового потока базового слоя для получения видеоблока с первым качеством и второе средство для декодирования битового потока улучшающего слоя для получения уточнений видеоблока, которые при их комбинировании с видеоблоком, декодированным с первым качеством, дают в результате видеоблок, имеющий второе качество. Второе средство декодирования для каждого отличного от нуля коэффициента уточнений видеоблока декодирует символ, указывающий наличие по меньшей мере одного оставшегося отличного от нуля коэффициента, длину серии, указывающую количество нулевых коэффициентов, предшествующих отличному от нуля коэффициенту, и знак отличного от нуля коэффициента.
Методики, описанные в этом раскрытии, могут быть осуществлены в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. При осуществлении в программном обеспечении программное обеспечение может исполняться в процессоре, который может относиться к одному или более процессорам, таким как микропроцессор, специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA), процессор цифровых сигналов (DSP) или другая эквивалентная интегрированная или дискретная логическая схема. Программное обеспечение, содержащее команды для исполнения методик, может быть сначала сохранено на машиночитаемом носителе и загружено и исполнено посредством процессора.
В соответствии с этим это раскрытие также рассматривает машиночитаемые носители, содержащие команды, чтобы заставить процессор выполнять любое разнообразие методик, описанных в этом раскрытии. В некоторых случаях машиночитаемый носитель может образовывать часть компьютерного программного продукта, который может быть продан изготовителям и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя машиночитаемый носитель и в некоторых случаях также может включать в себя упаковочные материалы.
Подробности одного или более аспектов раскрытия изложены ниже в сопроводительных чертежах и в описании. Другие отличительные признаки, цели и преимущества методик, описанных в этом раскрытии, будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - блок-схема, иллюстрирующая систему передачи видео, которая поддерживает масштабируемость видео.
Фиг.2 - блок-схема, иллюстрирующая устройство источника и устройство адресата системы кодирования, показанной на Фиг.1, в дополнительных подробностях.
Фиг.3 - блок-схема, иллюстрирующая примерный кодер базового слоя и кодер улучшающего слоя в дополнительных подробностях.
Фиг.4 - блок-схема, иллюстрирующая примерный статистический кодер базового слоя и статистический кодер улучшающего слоя в дополнительных подробностях.
Фиг.5 - блок-схема, иллюстрирующая пример декодера базового слоя и декодера улучшающего слоя в дополнительных подробностях.
Фиг.6 - блок-схема, иллюстрирующая примерный статистический декодер базового слоя и статистический декодер улучшающего слоя в дополнительных подробностях.
Фиг.7 - концептуальная схема, иллюстрирующая зигзагообразное сканирование блока коэффициентов 4×4.
Фиг.8 - концептуальная схема, иллюстрирующая гипотетический пример блока коэффициентов видеоблока улучшающего слоя.
Фиг.9 - блок-схема последовательности операций, иллюстрирующая примерную работу видеокодера, выполняющего методики масштабируемого кодирования видео этого раскрытия.
Фиг.10 - блок-схема последовательности операций, иллюстрирующая примерную работу кодера улучшающего слоя, кодирующего остаточные коэффициенты видеоблока улучшающего слоя в соответствии с одним аспектом этого раскрытия.
Фиг.11 - блок-схема последовательности операций, иллюстрирующая примерную работу декодера улучшающего слоя, декодирующего битовый поток улучшающего слоя для получения вектора остаточных коэффициентов преобразования.
Фиг.12-15 - блок-схемы, иллюстрирующие различные конфигурации кодеров и/или декодеров для использования при масштабируемом кодировании видео в соответствии с этим раскрытием.
ПОДРОБНОЕ ОПИСАНИЕ
Фиг.1 является блок-схемой, иллюстрирующей систему 10 передачи видео, которая поддерживает масштабируемость видео. В примере на Фиг.1 система 10 передачи видео включает в себя устройство 12 источника и множество устройств 14A, 14B адресата (все вместе "устройства 14 адресата"). Устройство 12 источника получает цифровой видеоконтент от одного или более источников и кодирует видеоконтент для передачи на устройства 14 адресата. Видеоконтент, например, может быть захвачен в режиме реального времени или в режиме, близком к реальному времени, архивирован (например, предварительно захвачен), сформирован на компьютере или являться комбинацией перечисленного. В каждом случае видеоконтент может быть закодирован устройством 12 источника для передачи на устройства 14 адресата через канал связи. Устройство 12 источника может включать в себя передатчик или быть подключено к передатчику, который включает в себя подходящие компоненты модуляции радиочастоты (RF), фильтрации и усилителя для привода одной или более антенн для доставки закодированного видео по каналу связи.
Для поддержки масштабируемого видео устройство 12 источника кодирует видео источника как битовый поток базового слоя (или базовый слой) и один или более масштабируемых битовых потоков улучшающих слоев (или улучшающих слоев). Битовый поток базового слоя обычно несет видеоданные с базовым уровнем качества. Один или более улучшающих слоев несут добавочные видеоданные, называемые здесь уточнениями, для поддержки более высоких уровней качества. Уточнения, закодированные в улучающих слоях, например, могут постепенно увеличивать точность воспроизведения (например, визуальное качество) посредством предоставления добавочных более высоких частотных коэффициентов или дополнительного уточнения существующих коэффициентов. В некоторых случаях базовый слой может быть передан более надежным методом, чем передача улучшающих слоев, например с более низкой вероятностью искажения пакетов (PER).
В примере, проиллюстрированном на Фиг.1, для простоты показаны базовый слой и единственный улучшающий слой одного канала. Однако устройство 12 источника может закодировать более одного улучшающего слоя, несущего добавочные видеоданные канала. В некоторых случаях устройство 12 источника может закодировать видео источника в отдельных битовых потоках для поддержки разных каналов для выбора пользователями, ассоциированными с устройствами 14 адресата. Каналы обычно передаются одновременно таким образом, что устройства 14 адресата в любое время могут выбирать разные каналы для просмотра. Таким образом, устройства 14 адресата под управлением пользователя могут выбрать один канал для просмотра спортивных программ и затем выбрать еще один канал для просмотра новостей или некоторого другого запланированного по программе события, что очень похоже на практику просмотра телепередач. В общем случае каждый канал может быть закодирован как базовый слой и один или более улучшающих слоев.
Кроме того, методики этого раскрытия в иллюстративных целях описываются в контексте масштабируемости качества (также называемой масштабируемостью отношения сигнала к шуму (SNR)). Однако методики могут быть расширены на пространственную масштабируемость. В приложениях с пространственной масштабируемостью базовый слой несет видеоданные с базовой пространственной разрешающей способностью, и улучшающие слои несут добавочные видеоданные для поддержки более высокой пространственной разрешающей способности. В некоторых случаях система 10 может употреблять масштабируемость видео, которое комбинирует масштабируемость отношения сигнала к шуму (SNR), пространственную и/или временную масштабируемость.
Устройство 12 источника, например, может кодировать видео источника как базовый слой в соответствии с расширением SVC стандарта H.264/MPEG-4, часть 10, AVC и кодировать видео источника как улучшающий слой в соответствии с методиками, описанными в этом раскрытии. Таким образом, методики, описанные в этом раскрытии, в некоторых аспектах могут быть применены для осуществления расширений масштабируемости видео для устройств, которые иным образом согласованы со стандартом H.264. Фактически методики этого раскрытия могут представлять собой потенциальные модификации для будущих версий или расширений стандарта H.264 или других стандартов. Однако методики могут использоваться вместе с любым разнообразием других стандартов сжатия видео, таких как стандарты MPEG-1 и MPEG-2, ITU-T H.263, стандарт видеокодека 421M Общества инженеров кино и телевидения (SMPTE) (обыкновенно называемый "VC-1"), стандарт, определенный рабочей группой Китая по стандартам кодирования аудио и видео (обыкновенно называемый "AVS"), а также любой другой стандарт кодирования видео, определенный органом по стандартизации или разработанный организацией как частный стандарт.
Устройства 14 адресата могут поддерживать проводной и/или беспроводной прием закодированного видео. Устройства 14 адресата могут содержать любое устройство, способное принимать и декодировать цифровые видеоданные, такое как устройства беспроводной связи, например сотовые или спутниковые радиотелефоны, беспроводные системы вещания, карманные персональные компьютеры (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, игровые приставки, цифровые телевизоры, системы прямого цифрового вещания и т.п. В примере на Фиг.1 показаны два устройства 14A, 14B адресата. Однако система 10 может включать в себя любое количество устройств 14 адресата. Устройства 14 адресата также могут работать в соответствии с любым из разнообразия стандартов сжатия видео, описанных выше.
Фиг.1 представляет позиционирование устройств 14 адресата относительно устройства 12 источника, которое передает закодированное видео. В частности, устройство 14A адресата находится ближе к источнику передачи, то есть устройству 12 источника на Фиг.1, а устройство 14B адресата находится дальше от источника передачи. В случаях, в которых базовый слой закодирован с более низкой вероятностью искажения пакетов (PER), оба устройства 14A и 14B адресата могут надежно принимать и декодировать базовый слой. Устройство 14A адресата, которое расположено ближе к устройству 12 источника, также может надежно принимать улучшающий слой. Однако устройство 14B адресата, которое расположено дополнительно дальше от устройства 12 источника, не может надежно принимать улучшающий слой, например, из-за условий сети или канала.
Таким образом, более близкое устройство 14A адресата способно работать с видео более высокого качества, поскольку ему доступны данные и базового слоя, и улучшающего слоя, тогда как устройство 14B адресата способно представлять только минимальный уровень качества, предоставляемый данными базового слоя. Таким образом, видео, полученное устройствами 14 адресата, является масштабируемым в том смысле, что добавочные биты улучшающего слоя могут быть декодированы и добавлены к битовому потоку базового слоя для увеличения отношения сигнала к шуму (SNR) декодированного видео. Однако масштабируемость возможна только тогда, когда представлены данные улучшающего слоя. Таким образом, термин "качество", используемый в этом раскрытии, может ссылаться к объективному и/или субъективному визуальному качеству. Другими словами, уточнения улучшающего слоя дают в результате видеоданные с более высококачественным воспроизведением первоначальных данных. В этом методе точность воспроизведения видео увеличивается посредством улучшающего слоя.
В других случаях условия сети или канала могут быть достаточными для обоих устройств 14A и 14B адресата, чтобы принять базовый слой и улучшающий слой. Однако устройства 14A и 14B адресата могут иметь различные способности декодера, которые не позволяют одному из устройств 14A и 14B адресата использовать добавочные видеоданные улучшающего слоя для воспроизведения более высококачественного видео. Если одно из устройств 14 адресата является таким клиентским устройством, как например, мобильная телефонная трубка или другое маленькое переносное устройство, могут иметься ограничения вследствие вычислительной сложности и требований к памяти. В соответствии с этим масштабируемое кодирование видео может быть создано таким образом, что устройства 14 адресата с ограниченными вычислительными ресурсами или ресурсами памяти могут декодировать только базовый слой. В этом методе устройства 14 адресата с более хорошими условиями сети или канала и/или более хорошими способностями декодера будут в состоянии воссоздать видео с более высоким качеством с использованием добавочных видеоданных улучшающего слоя.
Методики, описанные в этом раскрытии, используют методики статистического кодирования, которые содействуют эффективному кодированию битовых потоков улучшающего слоя. Методики статистического кодирования этого раскрытия могут дать возможность кодирования добавочных видеоданных, например, в форме уточнений в битовом потоке улучшающего слоя в одном проходе кодирования, тем самым уменьшая сложность кодирования, задержку кодирования и требования к памяти. Как будет описано в дополнительных подробностях, устройство 12 источника в некоторых случаях может закодировать каждый отличный от нуля коэффициент вектора коэффициентов улучшающего слоя без знания о каких-либо последующих коэффициентах, то есть каких-либо коэффициентах после отличного от нуля коэффициента, кодируемого в настоящий момент. Кодирование улучшающего слоя с одним проходом может избавить от необходимости выполнения первого прохода для анализа вектора коэффициентов и второго прохода для кодирования вектора коэффициентов на основе этого анализа.
Например, некоторые традиционные статистические кодеры могут выполнять первый проход кодирования, чтобы сформировать символы для представления вектора коэффициентов, причем по меньшей мере некоторые из символов представляют более одного отличного от нуля коэффициента. Другими словами, знание о последующих коэффициентах необходимо для кодирования отличных от нуля коэффициентов вектора коэффициентов. Вдобавок или в качестве альтернативы некоторые традиционные статистические кодеры могут также выбирать во время первого или последующего прохода кодирования таблицы кодирования VLC для использования при кодировании символов. В одном аспекте таблицы кодирования VLC могут быть выбраны на основе сформированных символов. В качестве альтернативы во время первого прохода кодирования посредством анализа вектора коэффициентов могут быть собраны статистические данные, и таблицы кодирования VLC могут быть выбраны на основе накопленных статистических данных.
Затем традиционным статистическим кодером выполняется второй проход кодирования для статистического кодирования вектора коэффициентов на основе анализа, выполненного во время первого прохода кодирования. В качестве одного примера, некоторые традиционные статистические кодеры во время второго прохода кодирования могут кодировать символы, сформированные во время первого прохода, с использованием таблиц кодирования VLC, выбранных на основе сформированных символов или других статистических данных. Формирование символов, которые представляют более одного отличного от нуля коэффициента и/или выбор таблиц кодирования VLC на основе сформированных символов или других статистических данных, может позволить более эффективно кодировать вектор коэффициентов.
Методики этого раскрытия не только избавляют от необходимости более одного прохода для кодирования улучшающего слоя, но методики статистического кодирования этого раскрытия могут вдобавок привести к кодированию улучшающего слоя без сохранения информации коэффициентов видеоданных базового слоя и доступа к ней, что дополнительно уменьшает вычислительную сложность и требования к памяти.
Устройство 12 источника, устройство 14 адресата или они оба могут являться беспроводным или проводным устройством связи, как описано выше. Также устройство 12 источника, устройство 14 адресата или они оба могут быть осуществлены как устройство на интегральных схемах, такое как интегральная микросхема или набор микросхем, которое может быть заключено в беспроводное или проводное устройство связи или в устройство другого типа, поддерживающее приложения для работы с цифровым видео, такие как цифровой проигрыватель медиа, карманный персональный компьютер (PDA), цифровой телевизор и т.п.
Фиг.2 является блок-схемой, иллюстрирующей устройство 12 источника и устройство 14 адресата системы 10 кодирования в дополнительных подробностях. Устройство 14 адресата, например, может быть любым из устройств 14A или 14B адресата, показанным на Фиг.1. Как показано на Фиг.2, устройство 12 источника может включать в себя источник 18 видео, видеокодер 20 и передатчик 22. Источник 18 видео устройства 12 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, вмещающий в себя ранее захваченное видео, или видео, поставленное от поставщика видеоконтента. Как дополнительная альтернатива, источник 18 видео может формировать в качестве видеоисточника данные на основе компьютерной графики или комбинацию «живого» видео и видео, созданного компьютером. В некоторых случаях устройство 12 источника может являться так называемым «камерофоном» или видеотелефоном, в этом случае источник 18 видео может являться видеокамерой. В каждом случае захваченное, предварительно захваченное или созданное компьютером видео может быть закодировано видеокодером 20 для передачи от устройства 12 источника на устройство 14 адресата через передатчик 22 и канал 16 связи.
Видеокодер 20 принимает видеоданные от источника 18 видео и кодирует видеоданные как битовый поток базового слоя и один или более битовых потоков улучшающего слоя. В примере, проиллюстрированном на Фиг.2, видеокодер 20 включает в себя кодер 30 базового слоя и кодер 32 улучшающего слоя. Кодер 30 базового слоя и кодер 32 улучшающего слоя принимают обыкновенные видеоданные от источника 18 видео. Кодер 30 базового слоя кодирует видеоданные с первой скоростью передачи битов для формирования битового потока базового слоя видео на первом уровне качества. Кодер 32 улучшающего слоя кодирует добавочные биты для формирования одного или более улучшающих слоев, которые при их добавлении к битовому уровню базового слоя улучшают видео до второго, более высокого уровня качества. Другими словами, улучшающий слой при его добавлении к базовому слою предоставляет вторую, более высокую скорость передачи битов, которая предоставляет более высокий уровень качества. Таким образом, улучшающий слой может рассматриваться как уточнение видеоданных, закодированных в базовом слое. Уточнения могут являться, например, добавочными коэффициентами и/или уточнениями к существующим коэффициентам. Уточнения, закодированные в улучшающих слоях, могут быть иерархическими в том смысле, что уточнения в улучшающих слоях постепенно увеличивают качество видеоданных по мере их декодирования. Таким образом, декодирование уточнений всех улучшающих слоев, например, приведет к самой высокой скорости передачи битов и максимальному качеству, в то время как декодирование уточнений только первого улучшающего слоя произведет увеличение скорости передачи битов и качества относительно декодирования только базового слоя.
Видеоданные, принятые от источника 18 видео, могут являться рядом видеокадров. Кодер 30 базового слоя и кодер 32 улучшающего слоя делят ряд кадров на закодированные элементы и обрабатывают закодированные элементы для кодирования ряда видеокадров. Закодированные элементы могут, например, быть цельными кадрами или участками кадров, такими как мозаичные фрагменты кадров. Кодер 30 базового слоя и кодер 32 улучшающего слоя делят каждый закодированный элемент на блоки пикселей (упоминаемые здесь как видеоблоки или блоки) и работают над видеоблоками в пределах индивидуальных закодированных элементов для кодирования видеоданных. Таким образом, видеоданные могут включать в себя множество кадров, кадр может включать в себя множество мозаичных фрагментов, и мозаичный фрагмент может включать в себя множество видеоблоков.
Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру в соответствии со специфицированным стандартом кодирования. В качестве примера, стандарт ITU-T H.264/MPEG-4, часть 10, AVC поддерживает внутреннее предсказание с разнообразными размерами блока, такими как 16×16, 8×8 или 4×4 для компонентов яркости и 8×8 для компонентов цветности, а также внешнее предсказание с разнообразными размерами блока, такими как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов яркости и соответствующими масштабированными размерами для компонентов цветности. В стандарте H.264/ MPEG-4, часть 10, AVC каждый видеоблок, часто называемый макроблоком (MB), может быть разделен на субблоки одного размера или разных размеров. Таким образом, закодированный элемент может содержать субблоки одинаковых или разных размеров. В общем случае макроблоки и разнообразные субблоки могут рассматриваться как видеоблоки. Таким образом, макроблоки могут рассматриваться как видеоблоки, и если они разделены или подразделены, может считаться, что сами макроблоки задают множества видеоблоков.
Кодеры 30, 32 выполняют внутреннее и внешнее кодирование видеоблоков кадров. Внутреннее кодирование полагается на пространственное предсказание для уменьшения или удаления пространственной избыточности в видеоданных в пределах заданного закодированного элемента, например кадра или мозаичного фрагмента. Для внутреннего кодирования кодеры 30, 32 образуют блок пространственного предсказания на основе одного или более ранее закодированных блоков в пределах того же самого кадра, что и текущий кодируемый блок. Блок предсказания может являться предсказанной версией текущего кодируемого видеоблока. Кодер 30 базового слоя может формировать блок предсказания на основе одного или более ранее закодированных блоков в пределах кадра, например посредством выполнения интерполяции (в соответствии с режимом внутреннего кодирования, ассоциированным с блоком) с использованием значений пикселей одного или более ранее закодированных блоков в пределах базового слоя текущего кадра. Кодер 32 улучшающего слоя может формировать блок предсказания на основе одного или более ранее закодированных блоков в пределах кадра. Кодер 32 улучшающего слоя, например, может формировать блок предсказания на основе одного или более ранее закодированных видеоблоков из базового слоя и улучшающего слоя в пределах кадра. Например, кодер 32 улучшающего слоя может формировать блок предсказания с использованием взвешенной суммы значений пикселей по меньшей мере из одного ранее закодированного видеоблока из базового слоя и по меньшей мере одного ранее закодированного видеоблока из улучшающего слоя.
Внешнее кодирование полагается на временное предсказание для уменьшения или удаления временной избыточности в пределах смежных кадров видеопоследовательности. Для внешнего кодирования кодеры 30, 32 выполняют оценку движения, чтобы отследить движение близко соответствующих видеоблоков между двумя или более смежными кадрами в пределах закодированного элемента. В случае предсказания с внешним кодированием кодеры 30, 32 могут формировать блок временного предсказания на основе одного или более ранее закодированных блоков из других кадров в пределах закодированного элемента. Кодеры 30, 32 могут, например, сравнивать текущий видеоблок с блоками в одном или более смежных видеокадрах, чтобы идентифицировать блок в смежном кадре, который наиболее близко соответствует текущему видеоблоку, например, блок в одном или более смежных кадрах, который имеет наименьшую среднеквадратичную ошибку (MSE), сумму квадратов разностей (SSD), сумму абсолютных разностей (SAD) или другой показатель различия. Кодеры 30, 32 выбирают идентифицированный блок в смежном кадре в качестве блока предсказания. Кодер 30 базового слоя сравнивает текущий видеоблок с блоками в еще одних смежных кадрах базового слоя. Кодер 32 улучшающего слоя может сравнивать текущий видеоблок с блоками в одном или более смежных кадрах в базовом слое и/или улучшающем слое.
После внутреннего или внешнего предсказания видеоблоков кодеры 30, 32 формируют остаточный блок посредством вычитания сформированного блока предсказания из первоначального кодируемого видеоблока. Таким образом, остаточный блок показывает различия между блоком предсказания и текущим кодируемым блоком. Кодеры 30, 32 могут применять процессы преобразования, квантования и статистического кодирования, чтобы дополнительно уменьшить скорость передачи битов, ассоциированную с передачей остаточного блока. Методики преобразования, которые могут включать в себя дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлетное преобразование, направленное преобразование или другую операцию преобразования, заменяют множество значений разности пикселей на остаточные коэффициенты преобразования, которые представляют энергию значений разности пикселей в частотной области. Кодеры 30, 32 применяют квантование к остаточным коэффициентам преобразования, что обычно влечет за собой процесс, который ограничивает количество битов, ассоциированных с каким-либо заданным коэффициентом. Кодеры 30, 32 сканируют двумерный остаточный блок, чтобы сформировать одномерный вектор коэффициентов, и статистически кодируют вектор коэффициентов, чтобы дополнительно сжать остаточные коэффициенты. Статистическое кодирование может, например, включать в себя кодирование с переменной длиной (VLC), арифметическое кодирование, кодирование с фиксированной длиной, контекстно-адаптивное кодирование VLC (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и/или другие методики статистического кодирования.
Масштабируемость отношения сигнала к шуму (SNR) может быть достигнута посредством остаточного квантования. В частности, кодер 30 базового слоя может квантовать остаточные коэффициенты преобразования с использованием первого параметра квантования (QP), и кодер 32 улучшающего слоя может квантовать остаточные коэффициенты преобразования с использованием второго параметра QP. В стандарте ITU-T H.264/MPEG-4, часть 10, AVC большие параметры QP обычно приводят к тому, что видеоданные кодируются с более низким качеством с помощью меньшего количества битов, в то время как меньшие параметры QP приводят к тому, что видеоданные кодируются с более высоким качеством с помощью большего количества битов. Таким образом, кодер 30 базового слоя, который кодирует видеоданные на минимальном уровне качества, может квантовать коэффициенты базового слоя с использованием большего значения параметра QP, чем значение параметра QP, используемое кодером 32 улучшающего слоя для квантования коэффициентов улучшающего слоя. В результате квантованные остаточные коэффициенты преобразования кодера 30 базового слоя представляют видеопоследовательность с первым качеством, и квантованные остаточные коэффициенты преобразования кодера улучшающего слоя представляют добавочные коэффициенты или уточнения к существующим коэффициентам видеопоследовательности, которые при их комбинировании с базовым слоем увеличивают качество видеопоследовательности до второго, более высокого качества.
Каждый из кодеров 30, 32 принимает одномерный вектор коэффициентов, который представляет квантованные остаточные коэффициенты преобразования базового слоя и улучшающего слоя соответственно. Другими словами, кодер 30 базового слоя принимает вектор коэффициентов базового слоя, и кодер 32 улучшающего слоя принимает вектор коэффициентов соответствующего улучшающего слоя. Хотя кодеры 30, 32 принимают одинаковые первоначальные видеоданные, векторы коэффициентов могут быть различными. Это может быть вследствие того, что кодер 30 базового слоя и кодер 32 улучшающего слоя формируют разные блоки предсказания, например кодер 30 базового слоя формирует блок предсказания из одного или более ранее закодированных блоков базового слоя, а кодер 32 улучшающего слоя формирует блок предсказания из одного или более ранее закодированных блоков базового слоя и блоков улучшающего слоя.
Каждый из кодера 30 базового слоя и кодера 32 улучшающего слоя кодирует соответствующие векторы коэффициентов для формирования битового потока базового слоя и по меньшей мере одного битового потока улучшающего слоя соответственно. В соответствии с методиками этого раскрытия кодер 30 базового слоя и кодер 32 улучшающего слоя кодируют соответствующие векторы коэффициентов с использованием разных методик кодирования. Кодер 30 базового слоя может кодировать вектор коэффициентов с использованием процесса с множеством проходов кодирования, в котором кодер 30 базового слоя анализирует вектор коэффициентов по меньшей мере во время одного прохода кодирования и кодирует вектор коэффициентов по меньшей мере во время одного последующего прохода кодирования на основе анализа. В одном случае кодер 30 базового слоя может кодировать квантованные остаточные коэффициенты преобразования вектора коэффициентов базового слоя в соответствии с кодированием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC. Кодирование CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, может кодировать вектор коэффициентов базового слоя с использованием множества проходов кодирования.
Во время первого прохода кодирования кодер 30 базового слоя может формировать символы для представления вектора коэффициентов, по меньшей мере некоторые из которых представляют более чем один отличный от нуля коэффициент и в некоторых случаях все коэффициенты вектора коэффициентов. Кодер 30 базового слоя может, например, в соответствии с кодированием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, формировать символы, которые представляют общее количество коэффициентов в векторе коэффициентов ("TotalCoeffs"), количество замыкающих единиц в векторе коэффициентов ("T1"), знаки каждой из замыкающих единиц, величины (или уровни) отличных от нуля коэффициентов, кроме замыкающих единиц, сумму всех серий ("sumRuns") и серию перед каждым отличным от нуля коэффициентом. Чтобы сформировать некоторые из символов, такие как TotalCoeff и sumRuns, кодер 30 базового слоя может проанализировать весь вектор коэффициентов.
Во время первого прохода кодирования кодер 30 базового слоя также может выбрать таблицы кодирования VLC для использования во время последующего прохода кодирования на основе анализа вектора коэффициентов. В некоторых случаях кодер 30 базового слоя может выбрать таблицы кодирования VLC для использования во время последующего (например, второго) прохода кодирования на основе символов, сформированных во время первого прохода кодирования. Например, кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs), поскольку между этими двумя значениями имеется некоторое взаимоотношение. В частности, по мере увеличения значения TotalCoeffs значение sumRuns уменьшается, и по мере уменьшения значения TotalCoeffs значение sumRuns увеличивается. Напомним, что выбор таблицы кодирования VLC для использования при кодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs) может позволить кодеру 30 базового слоя выбрать таблицу кодирования VLC, которая более эффективно кодирует символ sumRuns. Аналогичный выбор таблицы кодирования VLC может быть выполнен для других символов, которые должны быть закодированы, или с использованием других собранных статистических данных.
Кодер 30 базового слоя во время второго или другого последующего прохода кодирования кодирует символ, который представляет общее количество отличных от нуля коэффициентов в векторе коэффициентов (TotalCoeff), и символ, который представляет количество замыкающих единиц (обозначаемых как T1). Количество замыкающих единиц представляет собой количество коэффициентов с величиной, равной единице, которые появляются в векторе коэффициентов прежде, чем появится коэффициент с величиной больше единицы, когда вектор коэффициентов читается в обратном порядке, то есть начиная с конца вектора коэффициентов. Кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании символов TotalCoeff и T1 на основе предсказанного количества отличных от нуля коэффициентов и кодировать символы TotalCoeff и T1 с использованием выбранной таблицы кодирования VLC. Выбор таблицы кодирования VLC для использования при кодировании символов TotalCoeff и T1 на основе предсказанного количества отличных от нуля коэффициентов может позволить кодеру 30 базового слоя выбрать таблицу кодирования VLC, которая более эффективно кодирует символы TotalCoeff и T1. Таким образом, разные таблицы кодирования VLC могут быть более эффективными для разного предсказанного количества отличных от нуля коэффициентов. В одном примере кодер 30 базового слоя может предсказать количество отличных от нуля коэффициентов в текущем блоке на основе количества отличных от нуля коэффициентов одного или более ранее закодированных видеоблоков, например верхнего соседнего видеоблока и левого соседнего видеоблока.
Кодер 30 базового слоя может кодировать знаки каждой из замыкающих единиц. Например, кодер 30 базового слоя для каждой из замыкающих единиц может кодировать '1', если знак замыкающей единицы положителен, и кодировать '0', если знак замыкающей единицы отрицателен. Таким образом, кодер 30 базового слоя может не нуждаться в выполнении выбора таблицы кодирования VLC для знаков. Кодер 30 базового слоя может кодировать величины отличных от нуля коэффициентов, кроме замыкающих единиц. Кодер 30 базового слоя может кодировать уровни отличных от нуля коэффициентов с использованием таблицы кодирования VLC, кодирования с фиксированной длиной или другого типа статистического кодирования. Например, кодер 30 базового слоя может кодировать уровни отличных от нуля коэффициентов с использованием двоичного кодирования.
Кодер 30 базового слоя может кодировать символ, который представляет количество нулевых коэффициентов, которые находятся в векторе коэффициентов перед последним отличным от нуля коэффициентом (sumRuns). Как описано выше, кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs), поскольку между этими двумя значениями имеется некоторое взаимоотношение.
Кодер 30 базового слоя может кодировать серии (или длины серий), которые находятся перед каждым отличным от нуля коэффициентом, начиная с последнего отличного от нуля коэффициента вектора коэффициентов. Длины серий - это количество нулевых коэффициентов, которые предшествуют отличному от нуля коэффициенту. Таким образом, кодер 30 базового слоя может сначала кодировать длину серии (то есть количество нулевых коэффициентов) перед последним отличным от нуля коэффициентом вектора коэффициентов, затем длину серии перед предыдущим отличным от нуля коэффициентом и так далее, пока не будет закодирована длина серии перед первым отличным от нуля коэффициентом вектора коэффициентов.
Кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании каждой из длин серий. Кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании текущего значения серии на основе символа суммы серий (sumRuns) и суммы серий, закодированной до текущего момента. В качестве примера, если вектор коэффициентов имеет сумму серий (sumRuns), равную восьми, и количество серий, закодированных перед последним закодированным отличным от нуля коэффициентом, было равно шести, то все остальные серии должны быть равны нулю, единице или двум. Поскольку возможная серия постепенно становится более короткой по мере кодирования каждой добавочной серии, кодер 30 базового слоя может выбирать более эффективные таблицы кодирования VLC для сокращения количества битов, используемых для представления серий.
В этом методе кодер 30 базового слоя выполняет кодирование с множеством проходов для кодирования коэффициентов базового слоя, включая в себя первый проход для анализа вектора коэффициентов остаточного блока базового слоя, например, для формирования символов и/или выбора таблиц кодирования VLC и второй проход кодирования для кодирования вектора коэффициентов на основе этого анализа. Хотя кодер 30 базового слоя описывается выше как кодирующий квантованные остаточные коэффициенты преобразования с использованием кодирования CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, кодер 30 базового слоя может использовать другие методологии кодирования для кодирования квантованных остаточных коэффициентов преобразования.
Кодер 32 улучшающего слоя кодирует квантованные остаточные коэффициенты преобразования улучшающего слоя, которые могут иметь форму вектора коэффициентов. Кодер 32 улучшающего слоя может формировать квантованные остаточные коэффициенты, которые отличаются от квантованных остаточных коэффициентов базового слоя. Квантованные остаточные коэффициенты улучшающего слоя могут отличаться от квантованных остаточных коэффициентов базового слоя вследствие использования другого параметра QP во время квантования. Вдобавок, квантованные остаточные коэффициенты преобразования могут отличаться от квантованных остаточных коэффициентов преобразования базового слоя, поскольку остаточный блок представляет различие между первоначальным видеоблоком и блоком предсказания, образованный с использованием ранее закодированных блоков, которые формируют базовый слой и улучшающий слой. Остаточный блок базового слоя представляет собой разность между первоначальным видеоблоком и блоком предсказания, сформированным с использованием только ранее закодированных блоков из базового слоя. Таким образом, улучшающий слой может включать в себя добавочные коэффициенты и/или уточнения к существующим коэффициентам. В этом смысле квантованные остаточные коэффициенты преобразования видеоблока в улучшающем слое представляют собой уточнения к видеоблоку, закодированному с первым качеством в базовом слое, и при их добавлении к базовому слою предоставляют более высококачественные видеоданные.
Кодер 32 улучшающего слоя может отбросить один или более квантованных остаточных коэффициентов вектора коэффициентов во время кодирования в зависимости от доступной скорости передачи битов. Например, кодер 32 улучшающего слоя может отбросить коэффициенты, соответствующие базисным функциям высокочастотного преобразования, например коэффициенты, расположенные в конце вектора коэффициентов, когда сканирование коэффициентов выполняется с использованием зигзагообразного сканирования, как проиллюстрировано на Фиг.3. Кодирование квантованных остаточных коэффициентов в соответствии с кодированием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, может не позволить кодеру 32 улучшающего слоя отказаться от коэффициентов, поскольку по меньшей мере некоторые из символов, которые должны быть закодированы, например символы TotalCoeffs и sumRuns, ссылаются на все коэффициенты в блоке. Если бы кодер 32 улучшающего слоя отбрасывал один или более коэффициентов вектора коэффициентов, принятая информация была бы избыточна, что привело бы к более низкой эффективности кодирования. Кроме того, поскольку декодер должен принять серии для всех отличных от нуля коэффициентов в блоке, чтобы суметь должным образом декодировать позицию каждого коэффициента при зигзагообразном сканировании при кодировании с использованием кодирования CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, кодер 32 улучшающего слоя может не иметь возможности отбрасывать коэффициенты из вектора коэффициентов улучшающего слоя.
Таким образом, кодер 32 улучшающего слоя кодирует коэффициенты улучшающего слоя или слоев в соответствии с методиками кодирования этого раскрытия. Кодер 32 улучшающего слоя кодирует квантованные остаточные коэффициенты преобразования вектора коэффициентов в одном проходе кодирования. Другими словами, кодер 32 улучшающего слоя не выполняет первый проход для анализа вектора коэффициентов и последующего кодирования символов во время второго прохода на основе этого анализа. Вместо этого кодер 32 улучшающего слоя начинает с начала вектора коэффициентов и кодирует каждый из отличных от нуля коэффициентов один за другим в одном проходе кодирования. В этом способе кодер 32 улучшающего слоя может закодировать каждый из отличных от нуля коэффициентов без анализа последующих коэффициентов в векторе коэффициентов, то есть не зная никаких последующих коэффициентов вектора коэффициентов.
В одном аспекте кодер 32 улучшающего слоя для каждого из отличных от нуля коэффициентов может закодировать символ, указывающий, что в векторе коэффициентов имеется по меньшей мере один оставшийся отличный от нуля коэффициент. Например, символ может являться символом конца блока (EOB). Кодер 32 улучшающего слоя может закодировать символ с использованием единственного бита. Например, кодер 32 улучшающего слоя может закодировать ноль, когда имеется по меньшей мере один оставшийся отличный от нуля коэффициент, например по меньшей мере текущий отличный от нуля коэффициент, и закодировать единицу, когда больше нет оставшихся отличных от нуля коэффициентов.
После символа EOB каждого коэффициента кодер 32 улучшающего слоя кодирует серию перед текущим отличным от нуля коэффициентом. Как описано выше, серия представляет количество нулевых коэффициентов, которые находятся между предыдущим отличным от нуля коэффициентом вектора коэффициентов или началом вектора коэффициентов в случае первого отличного от нуля коэффициента и текущим отличным от нуля коэффициентом. Кодер 32 улучшающего слоя может закодировать серии с использованием единственной таблицы кодирования VLC. В одном случае кодер 32 улучшающего слоя может закодировать серии с использованием таблицы кодирования VLC, используемой при кодировании CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, чтобы закодировать символ sumRuns, когда символ TotalCoeffs равен единице. Другими словами, кодер 32 улучшающего слоя может многократно использовать одну из таблиц кодирования VLC, уже поддерживаемых видеокодером 20. В других случаях кодер 32 улучшающего слоя может использовать одну из других таблиц кодирования VLC, уже поддерживаемых видеокодером 20, для кодирования серий. В качестве альтернативы, кодер 32 улучшающего слоя может поддерживать отдельную таблицу кодирования VLC, специально созданную для кодирования серий вектора коэффициентов улучшающего слоя. В любом случае кодер 32 улучшающего слоя может не нуждаться в адаптивном выборе таблицы кодирования VLC для использования для кодирования серий. Вместо этого кодер 32 улучшающего слоя может использовать единственную таблицу кодирования VLC, тем самым избавляя от необходимости первого прохода для накопления статистических данных, используемых для выбора таблицы кодирования VLC.
После кодирования серий для каждого коэффициента кодер 32 улучшающего слоя кодирует знак отличного от нуля коэффициента. Кодер 32 улучшающего слоя, например, может закодировать '1', если знак отличного от нуля коэффициента положителен, и закодировать '0', если знак отличного от нуля коэффициента отрицателен. Кодер 32 улучшающего слоя может корректировать величину отличных от нуля коэффициентов посредством установки величин отличных от нуля коэффициентов равными единице. В некоторых случаях кодер 32 улучшающего слоя может не кодировать величину отличных от нуля коэффициентов. В этом методе кодер 32 улучшающего слоя может ограничить величину отличных от нуля коэффициентов единицей. Тогда устройство 14 адресата сконфигурировано с возможностью декодировать все отличные от нуля коэффициенты, идентифицированные в уточнениях, как имеющие величину, равную единице. Отсутствие кодирования величин коэффициентов улучшающего слоя может привести к некоторой потере отношения пикового сигнала к шуму (PSNR), но сокращает количество битов, используемых для кодирования коэффициентов.
В этом методе кодер 32 улучшающего слоя может закодировать коэффициенты битового потока улучшающего слоя в единственном проходе, например, не зная каких-либо последующих коэффициентов в векторе коэффициентов. Поскольку кодер 32 улучшающего слоя не должен анализировать вектор коэффициентов, например формировать символы, представляющие более одного отличного от нуля коэффициента вектора или выбирать таблицы кодирования VLC для кодирования символов, выполняется только один проход кодирования. Традиционные кодеры обычно выполняют по меньшей мере два прохода; (1) первый проход для анализа вектора коэффициентов и (2) второй проход для кодирования вектора коэффициентов на основе анализа. Вдобавок, кодер 32 улучшающего слоя может закодировать коэффициенты улучшающего слоя с использованием единственной таблицы кодирования VLC, тем самым избавляя от необходимости выполнять проход кодирования для образования символов для использования при адаптивном выборе таблиц. Таким образом, кодер 32 улучшающего слоя может уменьшить сложность кодирования, задержку кодирования и требования к памяти. В этом методе методики статистического кодирования этого раскрытия могут вдобавок привести к кодированию коэффициентов улучшающего слоя без хранения и получения доступа к информации коэффициентов базового слоя, что дополнительно уменьшает вычислительную сложность и требования к памяти.
Устройство 12 источника передает закодированные видеоданные устройству 14 адресата через передатчик 22. Устройство 14 адресата может включать в себя приемник 24, видеодекодер 26 и устройство 28 отображения. Приемник 24 принимает закодированный битовый поток видео от устройства 12 источника через канал 16. Как описано выше, закодированный битовый поток видео включает в себя битовый поток базового слоя и один или более битовых потоков улучшающего слоя. Видеодекодер 26 декодирует базовый слой и, если это доступно, один или более улучшающих слоев для получения видеоданных.
В частности, видеодекодер 26 включает в себя декодер 34 базового слоя и декодер 36 улучшающего слоя. Декодер 34 базового слоя декодирует битовый поток базового слоя, принятый через канал 16, чтобы получить видеоданные с первым качеством для представления на устройстве 28 отображения. Декодер 36 улучшающего слоя декодирует битовые потоки одного или более улучшающих слоев для получения добавочных видеоданных, например уточнений, которые увеличивают качество декодированных видеоданных до второго, более высокого качества. Напомним, что количество улучшающих слоев, например один, два, три или больше, принятых устройством 14 адресата, может зависеть от условий канала или других ограничений. Вдобавок, количество принятых улучшающих слоев, обработанных декодером 36 улучшающего слоя, может зависеть от ограничений декодера. В общем случае кодирование и декодирование базового слоя в комбинации с выбранным количеством улучшающих слоев дают возможность возрастающего улучшения качества отношения сигнала к шуму (SNR) декодированного видео.
Декодер 34 базового слоя декодирует базовый слой для получения символов, представляющих вектор квантованных остаточных коэффициентов базового слоя. Декодер 34 базового слоя может декодировать базовый слой для получения общего количества отличных от нуля коэффициентов в блоке, количества замыкающих единиц блока, знаков замыкающих единиц, величин коэффициентов, кроме замыкающих единиц, суммы всех серий и серий перед каждым отличным от нуля коэффициентом. Декодер 34 базового слоя далее может дополнительно декодировать битовый поток базового слоя для идентификации таблиц кодирования VLC для использования при декодировании символов базового слоя. В других случаях декодер 34 базового слоя может выбрать таблицы кодирования VLC для использования на основе ранее декодированных символов. Используя декодированные символы, декодер 34 базового слоя может воссоздать вектор коэффициентов базового слоя.
Декодер 36 улучшающего слоя декодирует битовый поток улучшающего слоя для получения уточнений улучшающего слоя, например в форме вектора добавочных остаточных коэффициентов или уточнений к существующим остаточным коэффициентам. В частности, декодер 36 улучшающего слоя декодирует с использованием той же самой таблицы кодирования VLC, которая используется кодером 32 улучшающего слоя, серии и знаки коэффициентов улучшающего слоя, пока символ EOB не укажет, что больше не осталось отличных от нуля коэффициентов. Используя декодированные символы, декодер 36 улучшающего слоя воссоздает вектор коэффициентов блока улучшающего слоя.
Декодеры 34, 36 воссоздают каждый из блоков закодированного элемента с использованием декодированных квантованных остаточных коэффициентов. После формирования векторов коэффициентов декодеры 34, 36 выполняют обратное сканирование векторов коэффициентов для формирования двумерного блока квантованных остаточных коэффициентов. Декодеры 34, 36 выполняют обратное квантование квантованных остаточных коэффициентов и применяют обратное преобразование, например обратное преобразование DCT, обратное целочисленное преобразование, обратное вейвлетное преобразование или обратное направленное преобразование к остаточным коэффициентам, подвергнутым обратному квантованию, для получения остаточного блока значений пикселей.
Декодеры 34, 36 суммируют блок предсказания, сформированный декодерами 34, 36, с остаточным блоком значений пикселей для формирования воссозданного видеоблока базового слоя и видеоблока улучшающего слоя соответственно. Видеоблоки базового и улучшающего слоев комбинируются для образования видеоблока с более высокой разрешающей способностью. Декодеры 34, 36 формируют блок предсказания таким же методом, как описано выше относительно кодеров 30, 32. Устройство 14 адресата может отобразить воссозданные видеоблоки пользователю через устройство 28 отображения. Устройство 28 отображения может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), дисплей на жидких кристаллах (LCD), плазменный дисплей, светодиодный дисплей (LRD), органический светодиодный дисплей или дисплейный блок другого типа.
В некоторых случаях видеокодер 20 и видеодекодер 26 сконфигурированы с возможностью предоставить масштабируемые улучшающие битовые потоки, которые могут быть произвольно усечены. Таким образом, система 10 может избежать использования дискретных улучшающих слоев, которые должны быть закодированы во всей их полноте, для достижения масштабируемости. Однако в некоторых вариантах воплощения система 10 может быть сконфигурирована с возможностью поддерживать масштабируемость с использованием либо подхода масштабируемости с обобщенной степенью детализации (FGS), либо дискретных улучшающих слоев, например, на основе выбора.
Устройство 12 источника и устройство 14 адресата могут работать в значительной степени симметрично. Например, каждое из устройства 12 источника и устройства адресата 14 может включать в себя компоненты кодирования и декодирования видео. Таким образом, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между устройствами 12, 14, например, для передачи видеопотоков, видеовещания или видеотелефонной связи.
В некоторых аспектах для видеовещания описанные в этом раскрытии методики могут быть применены к улучшенному кодированию видео стандарта H.264 для предоставления служб видео в реальном времени в системах наземной мобильной групповой рассылки мультимедиа (TM3) с использованием спецификации радиоинтерфейса только прямой линии связи (FLO), "Спецификация радиоинтерфейса только прямой линии связи для наземной мобильной групповой рассылки мультимедиа", опубликованной в июле 2007 года в качестве технического стандарта TIA-1099 ("Спецификация FLO"). То есть канал 16 связи может включать в себя беспроводной информационный канал, используемый для широковещательной беспроводной передачи видеоданных в соответствии со спецификацией FLO и т.п. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования, подходящие для радиоинтерфейса FLO.
В качестве альтернативы, видео может широковещательно передаваться в соответствии с другими стандартами, такими как DVB-H (цифровое видеовещание для карманных устройств), ISDB-T (комплексная служба цифрового вещания - наземная) или DMB (цифровое вещание мультимедиа). Таким образом, устройство 12 источника может являться мобильным беспроводным терминалом, сервером видеопотоков или сервером видеовещания. Однако описанные в этом раскрытии методики не ограничиваются каким-либо конкретным типом системы широковещания, групповой рассылки или двухточечной передачи. В случае широковещания устройство 12 источника может передавать несколько каналов видеоданных множеству устройств адресата, каждое из которых может быть подобным устройству адресата 14 на Фиг.1. Таким образом, хотя на Фиг.1 показано одно устройство 14 адресата, для видеовещания устройство 12 источника обычно выполняет широковещание видеоконтента одновременно со многими устройствами адресата.
В других примерах передатчик 22, канал 16 связи и приемник 24 могут быть сконфигурированы с возможностью связи в соответствии с любой проводной или беспроводной системой связи, включая в себя одну или более систем Ethernet, телефонных систем (например, POTS), кабельных систем, линий электропитания и оптоволоконных систем, и/или беспроводной системой, содержащей одну или более систем связи с множественным доступом с кодовым разделением каналов (CDMA или CDMA2000), систем связи с множественным доступом с частотным разделением каналов (FDMA), систем связи с множественны доступом с ортогональным частотным разделением каналов (OFDM), систем связи с множественным доступом с временным разделением каналов (TDMA), такой как глобальная система мобильной связи (GSM), систем пакетной радиосвязи общего назначения (GPRS) или среды GSM с улучшенной передачей данных (EDGE), систем магистральной наземной радиосвязи (TETRA), широкополосных систем с множественным доступом с кодовым разделением сигналов (WCDMA), систем высокоскоростной передачи данных 1xEV-DO (первое поколение развития систем для передачи только данных) или систем 1xEV-DO Gold Multicast, систем стандарта IEEE 402.18, систем технологии MediaFLO™, систем DMB, систем DVB-H или других схем передачи данных между двумя или более устройствами.
И видеокодер 20, и видеодекодер 26 могут быть осуществлены как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретных логических схем, как программное обеспечение, аппаратное обеспечение, программно-аппаратное обеспечение или любые их комбинации. И видеокодер 20, и видеодекодер 26 могут быть включены в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть скомбинированного кодера/декодера (CODEC) в соответствующее мобильное устройство, абонентское устройство, устройство широковещания, сервер и т.п. Вдобавок, и устройство 12 источника, и устройство 14 адресата могут включать в себя подходящие компоненты модуляции, демодуляции, преобразования частоты, фильтрации и усиления для передачи и приема закодированного видео, и если применимо, включая в себя радиочастотные (RF) беспроводные компоненты и антенны, достаточные для поддержания беспроводной связи. Однако для простоты иллюстрации такие компоненты в целом представлены как передатчик 22 устройства 12 источника и приемник 24 устройства 14 адресата на Фиг.1.
Фиг.3 является блок-схемой, иллюстрирующей примерный кодер 30 базового слоя и кодер 32 улучшающего слоя в дополнительных подробностях. В примере на Фиг.3 кодер 30 базового слоя включает в себя модуль 33A предсказания, хранилище 35A кадров, модуль 38A преобразования, модуль 40A квантования, модуль 41A сканирования коэффициентов, модуль 42A обратного квантования, модуль 44A обратного преобразования, статистический кодер 46 базового слоя и сумматоры 48A и 48B ("сумматоры 48"). Отражение различных отличительных признаков на Фиг.3 как модулей предназначено для выделения различных функциональных аспектов проиллюстрированных устройств и не обязательно подразумевает, что такие модули должны быть реализованы посредством отдельных аппаратных или программных компонентов. Напротив, функциональные возможности, ассоциированные с одним или более элементами, могут быть интегрированы в обыкновенных или в отдельных аппаратных или программных компонентах.
Модуль 33A предсказания формирует блок предсказания с использованием внутреннего или внешнего предсказания. Блок предсказания может являться предсказанной версией текущего кодируемого видеоблока. Как описано выше, модуль 33A предсказания может формировать блок предсказания с использованием внутреннего предсказания на основе одного или более ранее закодированных блоков базового слоя в пределах того же самого кадра, что и текущий кодируемый блок. В качестве альтернативы, модуль предсказания может формировать блок предсказания с использованием внешнего предсказания на основе одного или более ранее закодированных блоков в пределах одного или более смежных кадров базового слоя. Модуль 33A предсказания может извлекать ранее закодированный блок из хранилища 35A кадров.
После внутреннего или внешнего предсказания видеоблоков кодер 30 базового слоя формирует остаточный блок посредством вычитания блока предсказания, произведенного модулем предсказания 33A, из текущего видеоблока в сумматоре 48A. Остаточный блок включает в себя множество значений разностей пикселей, которые определяют количество различий между значениями пикселей текущего видеоблока и значениями пикселей блока предсказания. Остаточный блок может быть представлен в формате двумерного блока (например, двумерной матрицей или массивом значений пикселей). Другими словами, остаточный блок является двумерным представлением значений пикселей.
Модуль 38A преобразования применяет преобразование к остаточному блоку для получения остаточных коэффициентов преобразования. Модуль 38A преобразования, например, может применить преобразование DCT, целочисленное преобразование, направленное преобразование, вейвлетное преобразование или их комбинацию. После применения преобразования к остаточному блоку значений пикселей модуль 40A квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. После квантования модуль 42A обратного квантования и модуль 44A обратного преобразования могут применить обратное квантование и обратное преобразование соответственно для воссоздания остаточного блока. Сумматор 48B добавляет воссозданный остаточный блок к блоку предсказания, произведенному модулем 33 предсказания, чтобы получить воссозданный видеоблок для сохранения в хранилище 35A кадров. Воссозданный видеоблок, сохраненный в хранилище 34 кадров, может использоваться модулем 32 предсказания из кодера 30 базового слоя для внутреннего или внешнего кодирования последующего видеоблока. Вдобавок, как будет описан более подробно ниже, воссозданный видеоблок, сохраненный в хранилище 35A кадров, может использоваться модулем 33B предсказания кодера 32 улучшающего слоя для внутреннего или внешнего кодирования уточнений видеоблока в улучшающем слое.
После квантования модуль 41A сканирования коэффициентов сканирует коэффициенты из двумерного формата блока в одномерный векторный формат, процесс часто называется сканированием коэффициентов. Модуль 41A сканирования коэффициентов, например, может сканировать двумерный блок коэффициентов с использованием зигзагообразного порядка сканирования, как описано в дополнительных подробностях на Фиг.7. После сканирования статистический кодер 46 базового слоя статистически кодирует коэффициенты одномерного вектора. Кодер 46 базового слоя, например, может статистически кодировать коэффициенты вектора коэффициентов с использованием кодирования CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC и подробно описано выше в отношении Фиг.2.
Кодер 32 улучшающего слоя включает в себя модуль 33B предсказания, хранилище 35B кадров, модуль 38B преобразования, модуль 40B квантования, модуль 41B сканирования коэффициентов, модуль 42B обратного квантования, модуль 44B обратного преобразования, статистический кодер 49 улучшающего слоя и сумматоры 48C и 48D ("сумматоры 48"). Модули кодера 32 улучшающего слоя в значительной степени аналогичны модулям кодера 30 базового слоя. Поэтому будут описаны только различия.
Модуль 33B предсказания кодера 32 улучшающего слоя формирует блок предсказания, который является предсказанной версией текущего видеоблока. В отличие от модуля 33 предсказания кодера 30 базового слоя, который использует только ранее закодированные блоки базового слоя для формирования блока предсказания, модуль 33B предсказания кодера 32 улучшающего слоя может формировать блок предсказания на основе одного или более ранее закодированных блоков базового слоя и улучшающего слоя. Другими словами, модуль 33B предсказания может формировать блок предсказания с использованием воссозданного видеоблока из базового слоя и воссозданного видеоблока улучшающего слоя. Например, модуль 33B предсказания может скомбинировать воссозданный видеоблок базового слоя с воссозданным блоком улучшающего слоя, чтобы сформировать блок предсказания со вторым, более высоким качеством.
Поскольку блок предсказания, сформированный модулем 33B предсказания, формируется на основе воссозданных видеоблоков и базового, и улучшающего слоя, остаточный блок, сформированный в сумматоре 48C, представляет различия между текущим видеоблоком и ранее закодированным блоком, созданным из базового и улучшающего слоя, то есть со вторым, более высоким визуальным качеством.
Хотя модуль 40B квантования кодера 32 улучшающего слоя 32 функционально аналогичен модулю 40A квантования кодера 30 базового слоя, он может использовать другой параметр QP для квантования коэффициентов преобразования. Как описано выше в отношении Фиг.2, масштабируемость отношения сигнала к шуму (SNR) может быть достигнута посредством использования разных параметров квантования. Например, когда кодер 30 базового слоя и кодер 32 улучшающего слоя работают в соответствии со стандартом H.264/MPEG-4, часть 10, AVC, модуль 40A квантования может кодировать видеоданные с использованием большего значения параметра QP, чем значение параметра QP, используемое модулем 40B квантования. В результате квантованные остаточные коэффициенты преобразования из кодера 30 базового слоя представляют видеопоследовательность с первым качеством, а квантованные остаточные коэффициенты преобразования из кодера 32 улучшающего слоя представляют добавочные коэффициенты или уточнения существующих коэффициентов видеопоследовательности, которые при их комбинировании с базовым слоем увеличивают качество видеопоследовательности до второго, более высокого визуального качества.
Кроме того, как описано подробно в отношении Фиг.2, статистический кодер 49 улучшающего слоя кодирует квантованные остаточные коэффициенты преобразования в одном проходе кодирования. Другими словами, статистический кодер 49 улучшающего слоя может закодировать каждый отличный от нуля коэффициент вектора коэффициентов улучшающего слоя, не зная каких-либо последующих коэффициентов вектора коэффициентов. Кодирование улучшающего слоя в одном проходе может избавить от необходимости выполнять первый проход для анализа вектора коэффициентов и второй проход для кодирования вектора коэффициентов на основе этого анализа. Вместо этого статистический кодер 49 улучшающего слоя начинает с начала вектора коэффициентов и кодирует каждый из коэффициентов один за другим в одном проходе кодирования. Более подробно статистическое кодирование улучшающего слоя описывается ниже в отношении Фиг.4.
Фиг.4 является блок-схемой, иллюстрирующей примерный статистический кодер 46 базового слоя и статистический кодер 49 улучшающего слоя 49 с дополнительными подробностями. Статистический кодер 46 базового слоя может включать в себя модуль 50 анализа, множество таблиц 52A-52N кодирования VLC ("таблицы 52 кодирования VLC"), кодер 54 общего количества коэффициентов, кодер 56 замыкающих единиц (T1), кодер 58 знаков, кодер 60 величин коэффициентов, кодер 62 суммы серий и кодер 64 длин серий. Статистический кодер 49 улучшающего слоя может включать в себя кодер 66 символа EOB, кодер 68 длины серии, кодер 70 знака и таблицу 69 кодирования VLC.
Статистический кодер 46 базового слоя кодирует вектор коэффициентов, представляющий видеоблок с первым качеством, посредством выполнения множества проходов кодирования. В соответствии с кодированием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, например, статистический кодер 46 базового слоя может выполнить первый проход кодирования для анализа вектора коэффициентов, например, для формирования символов, представляющих вектор коэффициентов, и/или выбора таблицы кодирования VLC, и второй проход кодирования для кодирования вектора коэффициентов на основе анализа.
В качестве примера, модуль 50 анализа из статистического кодера 46 базового слоя может проанализировать вектор коэффициентов для формирования одного или более символов, которые представляют блок коэффициентов. Модуль 50 анализа, например, в соответствии со стандартом H.264/MPEG-4, часть 10, AVC может определять общее количество коэффициентов в блоке (TotalCoeff), количество замыкающих единиц (T1), знаки замыкающих единиц, величину каждого отличного от нуля коэффициента, общую сумму серий (sumRuns) и длину серии, предшествующей каждому отличному от нуля коэффициенту. По меньшей мере некоторые из символов, например символы TotalCoeff и sumRuns, сформированные модулем 50 анализа, могут представлять все коэффициенты вектора коэффициентов. Модуль 50 анализа в других примерах может формировать больше или меньше символов.
Вдобавок или в качестве альтернативы модуль 50 анализа может выбирать во время первого или последующего прохода кодирования подмножества таблиц 52 кодирования VLC для использования при кодировании символов. В одном аспекте модуль 50 анализа может выбрать подмножество таблиц 52 кодирования VLC на основе сформированных символов. В качестве альтернативы модуль 50 анализа может собирать статистические данные во время анализа вектора коэффициентов для выбора подмножества таблиц 52 кодирования VLC на основе накопленных статистических данных. Например, кодер 30 базового слоя может выбрать таблицу кодирования VLC для использования при кодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs), поскольку между этими двумя значениями имеется некоторое взаимоотношение. Как будет подробно описано ниже, выбор подмножества таблиц 52 кодирования VLC на основе сформированных символов или других статистических данных может дать возможность более эффективного кодирования символов, представляющих вектор коэффициентов.
Статистический кодер 46 базового слоя кодирует вектор коэффициентов в течение второго или другого последующего прохода кодирования. В частности, кодер 54 общего количества коэффициентов кодирует общее количество отличных от нуля коэффициентов (TotalCoeff) в векторе коэффициентов. Кодер 54 общего количества коэффициентов может закодировать символ TotalCoeff с использованием одной из таблиц 52 кодирования VLC, выбранных на основе предсказания количества отличных от нуля коэффициентов текущего вектора коэффициентов. В одном примере предсказание количества отличных от нуля коэффициентов текущего вектора коэффициентов может быть сделано на основе количества отличных от нуля коэффициентов одного или более ранее закодированных видеоблоков, например верхнего соседнего видеоблока и левого соседнего видеоблока. В этом методе статистический декодер базового слоя может выбрать ту же самую таблицу кодирования VLC на основе ранее декодированного блока.
После того как кодер 54 общего количества коэффициентов кодирует общее количество отличных от нуля коэффициентов, кодер 56 замыкающих единиц кодирует символ замыкающих единиц. Кодер 56 замыкающих единиц может закодировать символ замыкающих единиц с использованием той же самой таблицы 52 кодирования VLC, выбранной на основе предсказанного количества отличных от нуля коэффициентов, например тем же самым методом, описанным выше в отношении кодера 54 общего количества коэффициентов.
Кодер 58 знаков кодирует знаки замыкающих единиц. Например, кодер 58 знаков для каждой из замыкающих единиц может закодировать '1', если знак замыкающей единицы положителен, и закодировать '0', если знак замыкающей единицы отрицателен. Кодер 60 величин коэффициентов кодирует уровни (например, величины) отличных от нуля коэффициентов, кроме замыкающих единиц. Кодер 60 величин коэффициентов может закодировать уровни отличных от нуля коэффициентов с использованием таблицы VLC кодирования с фиксированной длиной или статистического кодирования другого типа.
Кодер 62 суммы серий может кодировать символ, который представляет количество нулевых коэффициентов, которые находятся в векторе коэффициентов перед последним отличным от нуля коэффициентом, то есть символ sumRuns. Кодер 62 суммы серий кодирует символ sumRuns с использованием одной из таблиц 52 кодирования VLC, выбранной на основе общего количества коэффициентов в блоке (TotalCoeffs). Напомним, что выбор таблицы кодирования VLC для использования при кодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs) может дать возможность кодеру 62 суммы серий выбрать таблицу кодирования VLC, которая более эффективно кодирует символ sumRuns.
Кодер 64 длин серий кодирует длины серии вектора коэффициентов. Кодер 64 длин серий может сначала закодировать длину серии последнего отличного от нуля коэффициента вектора коэффициентов, затем длину серии предыдущего отличного от нуля коэффициента, и так далее до тех пор, пока не будет закодирована длина серии первого отличного от нуля коэффициента вектора коэффициентов. Другими словами, кодер длин серий может начать кодирование с последней длины серии. Кодер 64 длин серий может закодировать каждую из длин серии с использованием таблицы 52 кодирования VLC, выбранной на основе общей суммы серий нулей вектора коэффициентов (sumRuns) и суммы серий, закодированных до текущего момента. В качестве примера, если векторы коэффициентов имеет сумму серий (sumRuns), равную восьми, и количество серий, закодированных до последнего закодированного отличного от нуля коэффициента, было равно шести, то все оставшиеся серии должны быть равны нулю, единице или двум. Поскольку возможная длина серии постепенно становится более короткой по мере кодирования каждой добавочной серии, кодер 64 длин серий может выбрать более эффективные таблицы кодирования VLC, чтобы сократить количество битов, используемых для представления серии. В этом методе таблица 52 кодирования VLC, используемая кодером 64 длины серий, может изменяться для каждой из длин серии.
Статистический кодер 49 улучшающего слоя кодирует вектор коэффициентов, который представляет уточнения, например, в форме добавочных коэффициентов, или уточнения к существующим коэффициентам для видеоблока в одном проходе кодирования для образования улучшающего слоя. Как будет описано в дополнительных подробностях, устройство 12 источника в некоторых случаях может закодировать каждый отличный от нуля коэффициент вектора коэффициентов улучшающего слоя, не зная какие-либо последующие коэффициенты. Статистический кодер 49 улучшающего слоя может начать с начала вектора коэффициентов и закодировать каждый из коэффициентов один за другим в одном проходе кодирования. В этом методе кодер 49 улучшающего слоя кодирует один за другим коэффициенты вектора коэффициентов, не анализируя коэффициенты, которые встречаются позже в векторе коэффициентов. Кодирование улучшающего слоя в одном проходе может избавить от необходимости выполнять первый проход для анализа вектора коэффициентов и второй проход для кодирования вектора коэффициентов на основе этого анализа.
Для каждого из отличных от нуля коэффициентов кодер 66 символа EOB кодирует символ EOB, указывающий, что в векторе коэффициентов имеется по меньшей мере один оставшийся отличный от нуля коэффициент. Например, кодер 66 символа EOB может закодировать ноль, когда имеется по меньшей мере один оставшийся ненулевой коэффициент, например по меньшей мере текущий отличный от нуля коэффициент, и закодировать единицу, когда больше нет таких оставшихся отличных от нуля коэффициентов.
После кодирования символа EOB каждого коэффициента кодер 68 длин серий кодирует длину серии, предшествующей отличному от нуля коэффициенту. Как описано выше, длина серии представляет число нулевых коэффициентов, которые предшествуют текущему отличному от нуля коэффициенту. Кодер 68 длин серий может закодировать длины серий с использованием единственной таблицы 69 кодирования VLC. В одном случае таблица 69 кодирования VLC может являться той же самой, как одна из таблиц 52 кодирования VLC из статистического кодера 46 базового слоя. В качестве альтернативы кодер 68 длин серий может поддерживать отдельную таблицу кодирования VLC, специально созданную для кодирования серии вектора коэффициентов улучшающего слоя. В любом случае кодер 68 длин серий может не нуждаться в адаптивном выборе таблицы кодирования VLC для использования для кодирования серии. Вместо этого кодер 68 длин серий может использовать единственную таблицу кодирования VLC, тем самым избавляя от необходимости первого прохода, который накапливает статистические данные, используемые для выбора таблицы VLC.
После кодирования длины серии каждого коэффициента кодер 70 знаков кодирует знак отличного от нуля коэффициента. Кодер 70 знака, например, может закодировать '1', если знак отличного от нуля коэффициента положителен, и закодировать '0', если знак отличного от нуля коэффициента отрицателен. Статистический кодер 49 улучшающего слоя может не кодировать величину отличных от нуля коэффициентов улучшающего слоя, что может привести к некоторой потере отношения пикового сигнала к шуму (PSNR), но сокращает количество битов, используемых для кодирования коэффициентов.
Методики статистического кодирования этого раскрытия могут дать возможность статистическому кодеру 49 улучшающего слоя кодировать коэффициенты битового потока улучшающего слоя в одном проходе. Поскольку статистический кодер 49 улучшающего слоя не анализирует вектор коэффициентов, например, для формирования символов и/или выбора таблиц кодирования VLC, необходим только один проход кодирования. Традиционные кодеры обычно выполняют по меньшей мере два прохода: (1) первый проход для анализа вектора коэффициентов и (2) второй проход для кодирования вектора коэффициентов на основе анализа. Вдобавок, статистический кодер 49 улучшающего слоя может закодировать коэффициенты улучшающего слоя с использованием единственной таблицы кодирования VLC, тем самым избавляя от необходимости выполнять проход кодирования для выбора разнообразных таблиц кодирования VLC. В этом методе статистический кодер 49 улучшающего слоя может уменьшить сложность кодирования, задержку кодирования и требования к памяти. Кроме того, методики статистического кодирования этого раскрытия могут вдобавок привести к кодированию коэффициентов улучшающего слоя без хранения и получения доступа к информации коэффициентов базового слоя, что дополнительно уменьшает вычислительную сложность и требования к памяти.
Фиг.5 является блок-схемой, иллюстрирующей пример декодера 34 базового слоя и декодера 36 улучшающего слоя в дополнительных подробностях. Декодер 34 базового слоя включает в себя статистический декодер 72 базового слоя, модуль 74A сканирования коэффициентов, модуль 76A обратного квантования, модуль 78A обратного преобразования, модуль 80A предсказания, хранилище 82A кадров и сумматор 84A. Декодер 34 улучшающего слоя включает в себя статистический декодер 86 улучшающего слоя, модуль 74B сканирования коэффициентов, модуль 76B обратного квантования, модуль 78B обратного преобразования, модуль 80B предсказания, хранилище 82B кадров и сумматор 84B.
Статистический декодер 72 базового слоя декодирует принятый битовый поток базового слоя для получения видеоданных с первым качеством для представления на устройстве отображения. Статистический декодер 72 базового слоя принимает битовый поток базового слоя и декодирует битовый поток базового слоя для получения остаточной информации (например, в форме одномерного вектора квантованных остаточных коэффициентов) и информации заголовка (например, в форме одного или более элементов синтаксиса заголовка). Статистический декодер 72 базового слоя выполняет функцию декодирования, взаимную по отношению к кодированию, выполненному статистическим кодером 46 базового слоя на Фиг.3 и 4.
В частности, статистический декодер 72 базового слоя декодирует базовый слой для получения символов, представляющих вектор квантованных остаточных коэффициентов базового слоя. При кодировании с использованием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, например, статистический декодер 72 базового слоя может декодировать базовый слой для получения общего количества отличных от нуля коэффициентов в блоке (TotalCoeff), количества замыкающих единиц блока (T1), знаков замыкающих единиц, величин коэффициентов кроме замыкающих единиц, суммы всех серий (sumRuns) и серий перед каждым отличным от нуля коэффициентом. В некоторых случаях таблицы кодирования VLC, выбранные для декодирования, могут быть выбраны на основе ранее декодированных блоков или ранее декодированных символов текущего блока. В других случаях статистический декодер 34 базового слоя может декодировать битовый поток базового слоя, чтобы идентифицировать таблицы кодирования VLC для использования при декодировании символов базового слоя. Используя декодированные символы, декодер 34 базового слоя может воссоздать вектор коэффициентов базового слоя.
После формирования вектора коэффициентов модуль 74A сканирования коэффициентов выполняет обратное сканирование вектора коэффициентов для формирования двумерного блока квантованных остаточных коэффициентов. Модуль 76A обратного квантования выполняет обратное квантование квантованных остаточных коэффициентов, и модуль 78A обратного преобразования применяет обратное преобразование, например обратное преобразование DCT, обратное целочисленное преобразовывают, обратное вейвлетное преобразование или обратное направленное преобразование, к остаточным коэффициентам, подвергнутым обратному квантованию, для получения остаточного блока значений пикселей.
Модуль 80A предсказания формирует блок предсказания с использованием одного или более смежных блоков в пределах обыкновенного кадра в случае внутреннего предсказания или один или более блоков в пределах смежных кадров в случае внешнего предсказания. Модуль предсказания формирует блок предсказания с использованием только ранее закодированных блоков из базового слоя. Сумматор 84A суммирует блок предсказания, сформированный модулем 80A предсказания, с остаточным блоком значений пикселей, чтобы образовать воссозданный видеоблок базового слоя. Видеоблок базового слоя сохраняется в хранилище 82A кадров для использования при формировании последующих блоков предсказания.
Декодер 36 улучшающего слоя декодирует битовый поток улучшающего слоя для получения уточнений видеоданных, например в форме вектора добавочных остаточных коэффициентов или уточнений к существующим остаточным коэффициентам. Статистический декодер 86 улучшающего слоя декодирует с использованием той же самой таблицы кодирования VLC, которая используется статистическим кодером 49 улучшающего слоя, серии и знаки коэффициентов улучшающего слоя, пока символ EOB не укажет, что больше не осталось отличных от нуля коэффициентов. Используя декодированные символы, статистический декодер 86 улучшающего слоя воссоздает вектор коэффициентов блока улучшающего слоя. Декодированный вектор коэффициентов представляет добавочные биты, представляющие собой уточнения, которые при их комбинировании с битами базового слоя увеличивают качество декодированных видеоданных до второго, более высокого качества.
После формирования вектора коэффициентов модуль 74B сканирования коэффициентов выполняет обратное сканирование вектора коэффициентов для формирования двумерного блока квантованных остаточных коэффициентов. Модуль 76B обратного квантования выполняет обратное квантование квантованных остаточных коэффициентов, и модуль 78B обратного преобразования применяет обратное преобразование, например обратное преобразование DCT, обратное целочисленное преобразование, обратное вейвлетное преобразование или обратное направленное преобразование к остаточным коэффициентам, подвергнутым обратному квантованию, для получения остаточного блока значений пикселей.
Модуль 80B предсказания формирует блок предсказания с использованием одного или более смежных блоков в пределах обыкновенного кадра в случае внутреннего предсказания или один или более блоков в пределах смежных кадров в случае внешнего предсказания. Модуль предсказания формирует блок предсказания с использованием ранее закодированных блоков и из базового слоя, и из улучшающего слоя. Сумматор 84B суммирует блок предсказания, сформированный модулем 80B предсказания, с остаточным блоком значений пикселей, чтобы образовать воссозданный видеоблок улучшающего слоя. Видеоблок улучшающего слоя сохраняется в хранилище 82B кадров для использования модулем 80B предсказания при формировании последующих блоков предсказания. Воссозданный видеоблок базового слоя и воссозданный видеоблок улучшающего слоя комбинируются в сумматоре 84C для образования видеоблока с более высоким качеством.
Фиг.6 является блок-схемой, иллюстрирующей примерные статистический декодер 72 базового слоя и статистический декодер 86 улучшающего слоя в дополнительных подробностях. Статистический декодер 72 базового слоя может включать в себя множество таблиц 52A-52N кодирования VLC ("таблицы 52 кодирования VLC"), декодер 90 общего количества коэффициентов, декодер 92 замыкающих единиц (T1), декодер 94 знаков, декодер 96 величин векторов, декодер 98 суммы серий и декодер 100 длин серий. Статистический декодер 86 улучшающего слоя может включать в себя декодер 102 символа EOB, декодер 104 длин серии, декодер 106 знаков и таблицу 69 кодирования VLC.
Статистический декодер 72 базового слоя декодирует битовый поток базового слоя для получения символов, представляющих вектор коэффициентов видеоблока на основном уровне качества. Декодер 90 общего количества коэффициентов декодирует битовый поток с использованием одной из таблиц 52 кодирования VLC для получения общего количества отличных от нуля коэффициентов (TotalCoeff) в векторе коэффициентов. Декодер 90 общего количества коэффициентов может выбрать таблицу 52 кодирования VLC для декодирования символа TotalCoeff на основе предсказания количества отличных от нуля коэффициентов текущего вектора коэффициентов, например на основе количества отличных от нуля коэффициентов одного или более ранее декодированных видеоблоков. В этом методе декодер 90 общего количества коэффициентов может выбрать ту же самую таблицу 52 кодирования VLC, которая используется кодером 54 общего количества коэффициентов для кодирования символа TotalCoeff.
После того как декодер 90 общего количества коэффициентов декодирует общее количество отличных от нуля коэффициентов, декодер 92 замыкающих единиц декодирует символ замыкающих единиц. Символ замыкающих единиц представляет количество коэффициентов с величиной, равной единице, которые встречаются перед коэффициентом с величиной, больше единицы, когда вектор коэффициентов читается в обратном порядке. Декодер 92 замыкающих единиц может декодировать символ замыкающих единиц с использованием одной из таблиц 52 декодирования VLC, выбранной на основе предсказанного количества отличных от нуля коэффициентов.
Декодер 94 знаков декодирует знаки всех замыкающих единиц. Например, декодер 94 знаков для каждой из замыкающих единиц может определить, что знак коэффициента положителен, когда принято '1', и определить, что знак коэффициента отрицателен, когда принято '0'. Декодер 96 величин коэффициентов декодирует величины отличных от нуля коэффициентов, кроме замыкающих единиц. Декодер 96 величин коэффициентов может декодировать уровни отличных от нуля коэффициентов с использованием таблицы кодирования VLC, кодирования с фиксированной длиной или другого типа статистического кодирования.
Декодер 98 суммы серий может декодировать символ, который представляет количество нулевых коэффициентов, которые встречаются в векторе коэффициентов перед последним отличным от нуля коэффициентом, то есть символ sumRuns. Декодер 98 суммы серий декодирует символ sumRuns с использованием одной из таблиц 52 кодирования VLC, выбранной на основе общего количества коэффициентов в блоке (TotalCoeffs), который был декодирован ранее декодером 90 общего количества коэффициентов. Напомним, что выбор таблицы кодирования VLC для использования при декодировании символа sumRuns на основе общего количества коэффициентов в блоке (TotalCoeffs) может позволить декодеру 98 суммы серий выбирать таблицу кодирования VLC, которая более эффективно декодирует символ sumRuns.
Декодер 100 длин серий декодирует длины серии вектора коэффициентов. Декодер 100 длин серий может сначала декодировать длину серии последнего отличного от нуля коэффициента вектора коэффициентов, затем длину серии предыдущего отличного от нуля коэффициента, и так далее до тех пор, пока не будет декодирована длина серии перед первым отличным от нуля коэффициентом вектора коэффициентов. Другими словами, декодер 100 длин серий может начать декодировать последнюю длину серии. Декодер 64 длин серий может декодировать каждую из длин серии с использованием таблицы 52 кодирования VLC, выбранной на основе общей суммы серий вектора коэффициентов (sumRuns) и суммы серий, декодированных до настоящего момента. Символ sumRuns был ранее декодирован декодером 98 суммы серий. Однако декодер 100 длин серий может накопить статистические данные относительно суммы серий, декодированных до настоящего момента. Поскольку возможная длина серии постепенно становится более короткой по мере декодирования каждой добавочной серии, декодер 100 длин серий может выбрать более эффективные таблицы кодирования VLC для сокращения количества битов, используемых для представления серий. В этом методе таблица 52 кодирования VLC, используемая декодером 100 длин серий, может изменяться для каждой из длин серии.
Статистический декодер 86 улучшающего слоя декодирует битовый поток улучшающего слоя для получения уточнений для видеоблока, например в форме добавочных коэффициентов или уточнений к существующим коэффициентам. Декодер 102 символа EOB определяет, указывает ли символ EOB, имеется ли по меньшей мере один оставшийся отличный от нуля коэффициент. Когда имеется по меньшей мере один оставшийся отличный от нуля коэффициент, декодер 104 длин серий декодирует длину серии, предшествующую следующему отличному от нуля коэффициенту. Декодер 104 длин серий может декодировать длину серии следующего отличного от нуля коэффициента с использованием таблицы 96 кодирования VLC, которая является той же самой таблицей VLC, которая используется кодером 68 длин серий. Декодер 106 знаков декодирует знак отличного от нуля коэффициента. Например, декодер 106 знаков может определить, что знак является положительным, когда принято '1', и отрицательным, когда принято '0'. Статистический декодер 86 улучшающего слоя продолжает декодировать отличные от нуля коэффициенты, пока декодер 102 символа EOB не укажет, что больше нет оставшихся отличных от нуля коэффициентов.
Фиг.7 является концептуальной схемой, иллюстрирующей зигзагообразное сканирование блока 40 коэффициентов размерности 4×4. Зигзагообразное сканирование, показанное на Фиг.7, может быть выполнено кодерами 30, 32 на Фиг.2. Порядок сканирования для такого зигзагообразного сканирования, показанного на Фиг.7, следует за стрелкой через видеоблоки 110, и коэффициенты c1-c16 помечены в порядке сканирования. В частности, числовые значения, показанные на Фиг.7, указывают позиции коэффициентов в пределах последовательного одномерного вектора и не представляют фактические значения коэффициентов. Результатом зигзагообразного сканирования, проиллюстрированного на Фиг.7, является одномерный вектор коэффициентов X, где
X=[c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16]
где c1-c16 представляют позиции коэффициентов в пределах двумерного массива коэффициентов.
Методики этого раскрытия не ограничиваются никаким конкретным порядком или методикой сканирования. Например, порядок сканирования, используемый в этом раскрытии, может являться зигзагообразным порядком сканирования, показанным на Фиг.7. В качестве альтернативы порядки сканирования, используемые в этом раскрытии, могут являться другими порядками сканирования, такими как горизонтальное сканирование, вертикальное сканирование или любая другая методика сканирования.
Фиг.8 является концептуальной схемой, иллюстрирующей гипотетический пример блока 120 коэффициентов улучшающего слоя. В этом примере числовые значения, показанные на Фиг.8, указывают фактические значения коэффициентов в позициях. Фактические значения коэффициентов блока 120 коэффициентов могут представлять квантованные остаточные коэффициенты, коэффициенты преобразования без квантования или другой тип коэффициентов видеоблока в улучшающем слое. В примере, проиллюстрированном на Фиг.8, блок 120 коэффициентов имеет размерность 4×4. Однако методики этого раскрытия могут быть расширены для применения к блокам любого размера. После сканирования блока 120 коэффициентов в соответствии с зигзагообразным сканированием, проиллюстрированным на Фиг.7, полученный в результате вектор V коэффициентов является следующим:
V=[4, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
Кодер 32 улучшающего слоя кодирует каждый из коэффициентов вектора V коэффициентов в соответствии с методиками, описанными в этом раскрытии. В качестве примера, для каждого из отличных от нуля коэффициентов вектора V коэффициентов кодер 32 улучшающего слоя кодирует символ EOB, длину серии и знак. Как описано подробно выше, символ EOB указывает, имеются ли какие-либо оставшиеся отличные от нуля коэффициенты в векторе коэффициентов, длина серии представляет количество нулевых коэффициентов, которые находятся перед текущим отличным от нуля коэффициентом вектора коэффициентов, и знак указывает, является ли значение коэффициента положительным или отрицательным.
В соответствии с одним аспектом этого раскрытия кодер 32 улучшающего слоя может не кодировать величину коэффициентов. Вместо этого кодер 32 улучшающего слоя может закодировать каждый из отличных от нуля коэффициентов, как если бы величина всех отличных от нуля коэффициентов была равна единице. В этом методе можно видеть, что кодер 32 улучшающего слоя кодирует следующий вектор V' коэффициентов вместо вектора V.
V'=[1, 0, 0,-1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
Кодер 32 улучшающего слоя, например, может закодировать первый коэффициент (то есть 4 в векторе V коэффициентов или 1 в векторе V' коэффициентов) с использованием символа EOB, равного нулю, кодового слова для серии, равной нулю, и знака, равного единице, закодировать второй коэффициент (то есть -2 в векторе V коэффициентов или -1 в векторе V' коэффициентов) с использованием символа EOB, равного нулю, кодового слова для серии, равной двум, и знака, равного нулю, и закодировать третий отличный от нуля коэффициент (то есть 1 в векторе V коэффициентов или в векторе V' коэффициентов) с использованием символа EOB, равного нулю, кодового слова для серии, равной единице, и знака, равного единице, за которыми следует символ EOB, равный единице. Как описано выше, кодовые слова, используемые для кодирования серии, могут быть получены из таблицы кодирования VLC, определенной в стандарте H.264/MPEG-4, часть 10, AVC.
Примерный закодированный битовый поток описывается в целях иллюстрации. Кодер 32 улучшающего слоя может закодировать вектор V, V' коэффициентов другими методами без отступления от контекста этого раскрытия. Например, символ EOB может быть закодирован как единица для представления добавочных отличных от нуля коэффициентов в блоке и как нуль для представления отсутствия оставшихся отличных от нуля коэффициентов. Аналогичным образом, символ знака может быть закодирован как нуль для представления положительного отличного от нуля коэффициента и как единица для представления отрицательного отличного от нуля коэффициента. В качестве другого примера символ EOB, закодированный для каждого отличного от нуля коэффициента, может представлять, является ли текущий коэффициент последним отличным от нуля коэффициентом вектора. Таким образом, может не иметься символа EOB в конце закодированного битового потока. Вместо этого, когда символ EOB указывает, что текущий коэффициент является последним отличным от нуля коэффициентом, видеодекодер знает, что после декодирования серии и символа текущего коэффициента больше нет добавочных коэффициентов блока.
Фиг.9 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, такого как видеокодер 20 на Фиг.2, выполняющего методики масштабируемого кодирования видео этого раскрытия. Кодер 30 базового слоя и кодер 32 улучшающего слоя из видеокодера 20 получают видеоданные из источника 18 видео (этап 130). Как описано выше, кодер 30 базового слоя и кодер 32 улучшающего слоя получают одни и те же первоначальные видеоданные. Видеоданные, полученные из источника 18 видео, например, могут представлять собой ряд видеокадров.
Для каждого видеоблока кодер 30 базового слоя кодирует базовый слой с использованием методики кодирования, которая выполняет множество проходов кодирования (этап 132). Базовый слой кодирует видеоблок на первом уровне качества. Кодер 30 базового слоя может сформировать вектор коэффициентов, который представляет видеоблок в первом качестве и закодировать остаточные коэффициенты преобразования блока для формирования базового слоя. Кодер 30 базового слоя может закодировать вектор коэффициентов для формирования базового слоя в соответствии с кодированием CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC. Как подробно описано выше в отношении Фиг.2, кодер 30 базового слоя может выполнить первый проход кодирования для анализа вектора коэффициентов и второй проход для кодирования вектора коэффициентов на основе анализа.
Для каждого видеоблока кодер 32 улучшающего слоя кодирует добавочные биты как улучшающий слой с использованием методики кодирования, которая выполняет один проход кодирования (этап 134). Дополнительные биты битового потока улучшающего слоя кодируют уточнения, которые при их добавлении к битовому потоку базового слоя улучшают видео до второго, более высокого уровня качества. Хотя в этом примере кодер 32 улучшающего слоя описывается как кодирующий только один улучшающий слой, кодер 32 улучшающего слоя может закодировать более одного битового потока улучшающего слоя. В этом случае улучшающие слои могут являться иерархическими в том смысле, что улучшающие слои по мере их декодирования предлагают все более высокое качество.
Вторая методика статистического кодирования, используемая кодером 32 улучшающего слоя, может закодировать для каждого из отличных от нуля коэффициентов вектора коэффициентов улучшающего слоя символ EOB, серию и знак. Как подробно описано выше, символ EOB может указать, имеются ли какие-либо оставшиеся отличные от нуля коэффициенты, длина серии представляет количество нулевых коэффициентов, которые предшествуют отличному от нуля коэффициенту, и знак указывает, является ли значение коэффициента положительным или отрицательным. После знака последнего отличного от нуля коэффициента кодер 32 улучшающего слоя может закодировать символ EOB, чтобы указать, что больше нет оставшихся отличных от нуля коэффициентов.
Кодер 30 базового слоя и кодер 32 улучшающего слоя выводят закодированные битовые потоки базового слоя и битовые потоки улучшающего слоя соответственно (этап 136). Методика статистического кодирования, используемая кодером 32 улучшающего слоя, может дать возможность кодирования остаточных коэффициентов улучшающего слоя с более низкой вычислительной сложностью и сложностью осуществления без большой потери эффективности кодирования. Методики статистического кодирования этого раскрытия могут дать возможность кодирования добавочных видеоданных, например, в форме уточнений, в битовом потоке улучшающего слоя в одном проходе кодирования, тем самым уменьшая сложность кодирования, задержку кодирования и требования к памяти. Например, кодер 32 улучшающего слоя может закодировать каждый отличный от нуля коэффициент вектора коэффициентов улучшающего слоя, не зная какие-либо последующие коэффициенты, тем самым давая возможность кодирования вектора коэффициентов в одном проходе и избавляя от необходимости выполнять первый проход для анализа вектора коэффициентов и второй проход для кодирования вектора коэффициентов на основе анализа.
Фиг.10 является блок-схемой последовательности операций, иллюстрирующей примерную работу кодера улучшающего слоя, такого как кодер 32 улучшающего слоя на Фиг.2, кодирующего остаточные коэффициенты видеоблока улучшающего слоя в соответствии с одним аспектом этого раскрытия. Кодер 32 улучшающего слоя идентифицирует первый отличный от нуля коэффициент в векторе коэффициентов блока улучшающего слоя (этап 140). Кодер 32 улучшающего слоя кодирует символ EOB, указывающий, что в векторе коэффициентов блока улучшающего слоя имеется по меньшей мере один оставшийся отличный от нуля коэффициент (этап 142). Кодер 32 улучшающего слоя может закодировать символ EOB с использованием одного бита, например закодировать нуль, когда имеется по меньшей мере один оставшийся ненулевой коэффициент, и закодировать единицу, когда больше нет оставшихся отличных от нуля коэффициентов.
Кодер 32 улучшающего слоя кодирует серию, которая указывает, количество нулевых коэффициентов, которые предшествуют отличному от нуля коэффициенту (этап 144). Кодер 32 улучшающего слоя в некоторых случаях может закодировать серию с использованием таблицы кодирования VLC, которая уже сохранена для кодирования CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC. Например, кодер 32 улучшающего слоя может закодировать серию с использованием таблицы кодирования VLC, используемой для кодирования общей суммы серий (sumRuns), когда общее количество коэффициентов (TotalCoeffs) равно одному. В качестве альтернативы, кодер 32 улучшающего слоя может поддерживать отдельную таблицу кодирования VLC, специально созданную для кодирования серий вектора коэффициентов улучшающего слоя.
Кодер 32 улучшающего слоя может закодировать знак отличного от нуля коэффициента (этап 146). Кодер 32 улучшающего слоя, например, может закодировать '1', если знак отличного от нуля коэффициента положителен, и закодировать '0', если знак отличного от нуля коэффициента отрицателен. В некоторых случаях кодер 32 улучшающего слоя может не кодировать величину отличных от нуля коэффициентов. В этом методе кодер 32 улучшающего слоя может ограничить величину отличных от нуля коэффициентов единицей. Таким образом, любой отличный от нуля коэффициент с величиной, большей единицы, устанавливается равным единице. Отсутствие кодирования величин коэффициентов улучшающего слоя может привести к некоторой потере отношения пикового сигнала к шуму (PSNR), но сокращает количество битов, используемых для кодирования коэффициентов.
Кодер 32 улучшающего слоя определяет, имеются ли в блоке улучшающего слоя какие-либо оставшиеся отличные от нуля коэффициенты (этап 148). Когда в блоке улучшающего слоя имеется по меньшей мере один оставшийся отличный от нуля коэффициент, кодер 32 улучшающего слоя продолжает кодировать символ EOB, серию и знак для каждого из оставшихся отличных от нуля коэффициентов. Когда в блоке улучшающего слоя больше нет оставшихся отличных от нуля коэффициентов, кодер 32 улучшающего слоя кодирует символ EOB для указания, что в векторе коэффициентов блока улучшающего слоя больше нет оставшихся отличных от нуля коэффициентов (этап 149). Как описано выше, улучшающий слой передается вместе с базовым слоем.
Поскольку методика кодирования улучшающего слоя, описанная на Фиг.10, не кодирует символов, которые ссылаются более чем на один коэффициент, методика кодирования улучшающего слоя может позволить кодеру 32 улучшающего слоя отказываться от одного или более квантованных остаточных коэффициентов вектора коэффициентов во время кодирования в зависимости от доступной скорости передачи битов. Кроме того, методика кодирования улучшающего слоя уменьшает сложность кодирования и упрощает осуществление.
Фиг.11 является блок-схемой последовательности операций, иллюстрирующей примерную работу декодера улучшающего слоя, такого как декодер 36 улучшающего слоя на Фиг.2, декодирующего битовый поток улучшающего слоя для получения вектора остаточных коэффициентов преобразования. Декодер 36 улучшающего слоя получает битовый поток улучшающего слоя (этап 150). Декодер 36 улучшающего слоя анализирует символ EOB, чтобы определить, имеются ли какие-либо оставшиеся отличные от нуля коэффициенты (этап 152). Декодер 36 улучшающего слоя, например, может определить, что имеется по меньшей мере один оставшийся отличный от нуля коэффициент, когда символ EOB равен нулю, и определить что больше нет оставшихся отличных от нуля коэффициентов, когда символ EOB равен единице.
Когда декодер 36 улучшающего слоя определяет, что имеется по меньшей мере один оставшийся отличный от нуля коэффициент, например, символ EOB равен нулю, декодер 36 улучшающего слоя декодирует серию, ассоциированную со следующим отличным от нуля коэффициентом (этап 154). Серия, ассоциированная со следующим отличным от нуля коэффициентом, представляет количество нулевых коэффициентов, предшествующих отличному от нуля коэффициенту. Декодер 36 улучшающего слоя декодирует серию с использованием той же самой таблицы кодирования VLC, которая используется кодером 32 улучшающего слоя. В одном случае декодер 36 улучшающего слоя может декодировать серию с использованием таблицы кодирования VLC, используемой при кодировании CAVLC, как определено в стандарте H.264/MPEG-4, часть 10, AVC, для использования при кодировании общей суммы серий (sumRuns), когда общее количество коэффициентов (TotalCoeffs) равно одному. Однако могут использоваться другие таблицы кодирования VLC, пока это та же самая таблица, которая используется кодером 32 улучшающего слоя. Декодер 36 улучшающего слоя устанавливает равными нулю коэффициенты в количестве, равном длине серии, предшествующей отличному от нуля коэффициенту (этап 156). Если длина серии, например, равна двум, декодер 36 улучшающего слоя может установить два коэффициента, предшествующие отличному от нуля коэффициенту, равными нулю.
Декодер 36 улучшающего слоя декодирует знак отличного от нуля коэффициента (этап 158). Знак отличного от нуля коэффициента может быть декодирован как положительный, когда символ знака равен единице, и как отрицательный, когда символ знака равен нулю. После декодирования знака отличного от нуля коэффициента декодер 36 улучшающего слоя может установить отличный от нуля коэффициент равным плюс единице или минус единице на основе декодированного знака (этап 160). Как описано выше, улучшающий слой может не кодировать величину коэффициентов улучшающего слоя. Таким образом, декодер 36 улучшающего слоя может быть сконфигурирован с возможностью устанавливать величину всех отличных от нуля коэффициентов равной единице.
Декодер 36 улучшающего слоя продолжает декодировать серии и знаки отличного от нуля коэффициента, пока декодер 36 улучшающего слоя не определит, что больше нет оставшихся отличных от нуля коэффициентов, например, символ EOB равен единице. В этот момент декодер 36 улучшающего слоя устанавливает равными нулю оставшиеся коэффициенты вектора, если остались какие-либо коэффициенты (этап 162). Как подробно описано в отношении Фиг.2, декодер 36 улучшающего слоя использует вектор коэффициентов вдобавок к блоку предсказания и другим данным для воссоздания видеоблока для представления на дисплее 28.
Фиг.12-15 являются блок-схемами, иллюстрирующими различные конфигурации кодеров и/или декодеров для использования при масштабируемом кодировании видео. Эти примерные кодеры и декодеры представлены в целях иллюстрации типов кодеров, в которых могут быть употреблены методики этого раскрытия. Однако примерные конфигурации никоим образом не должны ограничивать описанные методики. Методики могут использоваться в любом масштабируемом видеокодере.
Каждый из примерных видеокодеров и декодеров, проиллюстрированных на Фиг.12-15, может употреблять методики статистического кодирования, описанные в этом раскрытии, для содействия эффективному кодированию битовых потоков улучшающего слоя. Методики статистического кодирования этого раскрытия могут дать возможность кодирования добавочных видеоданных, например, в форме уточнений, в битовом потоке улучшающего слоя в одном проходе кодирования, тем самым уменьшая сложность кодирования, задержку кодирования и требования к памяти. Как будет описано в дополнительных подробностях, каждый отличный от нуля коэффициент вектора коэффициентов улучшающего слоя может быть закодирован без информации о каких-либо последующих коэффициентах, то есть каких-либо коэффициентов после отличного от нуля коэффициента, кодируемого в настоящее время. Кодирование улучшающего слоя в одном проходе может избавить от необходимости выполнять первый проход для анализа вектора коэффициентов и второй проход для кодирования вектора коэффициентов на основе анализа.
Фиг.12 является блок-схемой, иллюстрирующей примерный масштабируемый видеокодер 170. Масштабируемый видеокодер 170, например, может соответствовать видеокодеру 20 на Фиг.2. В примере на Фиг.12 масштабируемый видеокодер 170 включает в себя кодер 30 базового слоя, который включает в себя модуль 172 предсказания, хранилище 173 кадров, модуль 174 преобразования, модули 175 A и 175B квантования, модули 176A и 176B обратного квантования, модуль 177 обратного преобразования, модуль 178 мультиплексирования и сумматоры 179A-179C. Отражение различных отличительных признаков на Фиг.12 как модулей предназначено для выделения различных функциональных аспектов проиллюстрированных устройств и не обязательно подразумевает, что такие модули должны быть реализованы посредством отдельных аппаратных или программных компонентов. Напротив, функциональные возможности, ассоциированные с одним или более модулями, могут быть интегрированы в обыкновенных или в отдельных аппаратных или программных компонентах.
Модуль 712 предсказания формирует блок предсказания с использованием внутреннего или внешнего предсказания. Блок предсказания может являться предсказанной версией текущего закодированного видеоблока. Как описано выше, модуль 172 предсказания может формировать блок предсказания с использованием внутреннего предсказания на основе одного или более ранее закодированных блоков базового слоя в пределах того же самого кадра, что и текущий кодируемый блок. В качестве альтернативы модуль предсказания может формировать блок предсказания с использованием внешнего предсказания на основе одного или более ранее закодированных блоков в пределах одного или более смежных кадров базового слоя. Модуль 172 предсказания может извлекать ранее закодированный блок из хранилища 173 кадров.
После внутреннего или внешнего предсказания видеоблоков кодер 30 базового слоя формирует остаточный блок посредством вычитания блока предсказания, созданного модулем 172 предсказания, из текущего видеоблока в сумматоре 179A. Остаточный блок включает в себя множество значений разности пикселей, которые определяют количество различий между значениями пикселей текущего видеоблока и значениями пикселей блока предсказания. Остаточный блок может быть представлен в формате двумерного блока (например, двумерной матрицы или массива значений пикселей). Другими словами, остаточный блок является двумерным представлением значений пикселей.
Модуль 174 преобразования применяет преобразование к остаточному блоку для получения остаточных коэффициентов преобразования. Модуль 174 преобразования, например, может применить преобразование DCT, целочисленное преобразование, направленное преобразование, вейвлетное преобразование или их комбинацию. После применения преобразования к остаточному блоку значений пикселей модуль 175A квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. Выходные данные модуля 175A квантования, которые соответствуют квантованным коэффициентам, ассоциированным с базовым слоем, предоставляются на модуль 178 мультиплексирования.
После квантования модуль 176A обратного квантования применяет обратное квантование для формирования воссозданной версии остаточного блока коэффициентов преобразования. Сумматор 179B вычитает воссозданную версию остаточного блока коэффициентов преобразования, выведенную из модуля 176A обратного квантования, из первоначального остаточного блока коэффициентов преобразования, выведенного модулем 174 преобразования. Этот блок, который называется здесь блоком разности преобразования, предоставляется на модуль 175B квантования. Модуль 175B квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. Выходные данные модуля 175B квантования, которые соответствуют квантованным коэффициентам, ассоциированным с улучшающим слоем, предоставляются на модуль 178 мультиплексирования. В одном примере модуль 175A квантования может квантовать остаточные коэффициенты с использованием первого параметра QP, и модуль 175B квантования может квантовать остаточные разности коэффициентов с использованием второго параметра QP. Второй параметр QP, например, может представлять собой половину значения первого параметра QP, то есть быть равным QP/2.
После квантования модулем 175B квантования модуль 176B обратного квантования применяет обратное квантование для формирования воссозданной версии блока разности преобразования. Сумматор 179C добавляет воссозданную версию остаточного блока коэффициентов преобразования, выведенную из модуля 176A обратного квантования, с воссозданной версией блока разности преобразования, выведенного модулем 176B обратного квантования, для формирования воссозданного остаточного блока.
Модуль 177 обратного преобразования применяет обратное преобразование к воссозданной версии видеоблока. Воссозданная версия видеоблока сохраняется в хранилище 173 кадров и может использоваться модулем 172 предсказания для внутреннего или внешнего кодирования последующего видеоблока. Модуль 172 предсказания может предоставить данные управления, такие как векторы движения, размеры разделения, режимы внутреннего кодирования и т.п., модулю 178 мультиплексирования. Модуль 178 мультиплексирования может комбинировать данные базового и улучшающего слоя. В некоторых случаях модуль 178 мультиплексирования может включать в себя статистические кодеры для статистического кодирования данных базового и улучшающего слоя. В других случаях кодеры базового и улучшающего слоя могут быть отдельными от модуля мультиплексирования.
Фиг.13 является блок-схемой, иллюстрирующей примерный масштабируемый видеодекодер 180. Масштабируемый видеодекодер 180, например, может соответствовать видеодекодеру 26 на Фиг.2. Масштабируемый видеодекодер 180 на Фиг.13 включает в себя модуль 181 демультиплексирования, модули 182A и 182B обратного квантования, модуль 183 обратного преобразования, модуль 184 предсказания, хранилище 185 кадров и сумматоры 186A и 186B.
Модуль 181 демультиплексирования принимает масштабируемое закодированное видео и демультиплексирует сигналы. В некоторых случаях модуль 181 демультиплексирования может включать в себя статистические декодеры для статистического декодирования данных базового и улучшающего слоя. В других случаях декодеры базового и улучшающего слоя могут быть отдельными от модуля демультиплексирования.
Модуль 182A обратного квантования выполняет обратное квантование квантованных остаточных коэффициентов, ассоциированных с базовым слоем, и модуль 182B обратного квантования выполняет обратное квантование квантованных остаточных коэффициентов, ассоциированных с улучшающим слоем. В одном примере модуль 182A обратного квантования может квантовать остаточные коэффициенты c использованием первого параметра QP, и модуль 182B обратного квантования может квантовать остаточные разности коэффициентов с использованием второго параметра QP. Второй параметр QP, например, может представлять собой половину значения первого параметра QP, то есть быть равным QP/2. Соответствующие множества подвергнутых обратному квантованию коэффициентов преобразования, выведенные модулями 182A и 182B обратного квантования, складываются в сумматоре 186A для формирования воссозданного остаточного блока преобразования. Как описано выше, подвергнутые обратному квантованию коэффициенты преобразования, выведенные модулем 182A обратного квантования, могут соответствовать основному уровню качества, и подвергнутые обратному квантованию коэффициенты преобразования, выведенные модулем 182B обратного квантования, при их добавлении к выходным данным модуля 182A обратного квантования дают в результате увеличенный уровень качества.
Модуль 183 обратного преобразования применяет обратное преобразование, например обратное преобразование DCT, обратное целочисленное преобразование, обратное вейвлетное преобразование или обратное направленное преобразование, к сумме остаточных блоков коэффициентов, подвергнутых обратному квантованию, для получения остаточного блока значений пикселей. Сумматор 186B складывает блок предсказания, сформированный модулем 184 предсказания, с остаточным блоком значений пикселей для образования воссозданного видеоблока базового слоя. Как подробно описано выше, модуль 184 предсказания может сформировать блок предсказания с использованием одного или более смежных блоков в пределах обыкновенного кадра в случае внутреннего предсказания или один или более блоков в пределах смежных кадров в случае внешнего предсказания, которые могут быть сохранены в хранилище 185 кадров.
Фиг.14 является блок-схемой, иллюстрирующей еще один примерный масштабируемый видеодекодер 190. Масштабируемый видеодекодер 190, например, может соответствовать видеодекодеру 26 на Фиг.2. Масштабируемый видеодекодер 190 на Фиг.14 включает в себя модуль 191 демультиплексирования, модули 192A и 192B обратного квантования, модули 193A и 193B обратного преобразования, модуль 194 предсказания, хранилище 195 кадров и сумматоры 196A и 196B.
Модуль 191 демультиплексирования принимает масштабируемое закодированное видео и демультиплексирует сигналы. В некоторых случаях модуль 181 демультиплексирования может включать в себя статистические декодеры для статистического декодирования данных базового и улучшающего слоя. В других случаях декодеры базового и улучшающего слоя могут быть отдельными от модуля демультиплексирования.
Модуль 192A обратного квантования и модуль 193A обратного преобразования применяют операции обратного квантования и обратного преобразования к декодированным остаточным коэффициентам, ассоциированным с базовым слоем, для получения воссозданной версии остаточного блока базового слоя. Модуль 192B обратного квантования и модуль 193B обратного преобразования применяют операции обратного квантования и обратного преобразования к декодированным остаточным коэффициентам, ассоциированным с улучшающим слоем, для получения воссозданной версии остаточного блока улучшающего слоя. В одном примере модуль 192A обратного квантования может квантовать остаточные коэффициенты с использованием первого параметра QP, и модуль 192B обратного квантования может квантовать остаточные разности коэффициентов с использованием второго параметра QP. Второй параметр QP, например, может представлять собой половину значения первого параметра QP, то есть быть равным QP/2.
Модуль 194 предсказания может сформировать блок предсказания с использованием одного или более смежных блоков в пределах обыкновенного кадра в случае внутреннего предсказания или один или более блоков в пределах смежных кадров в случае внешнего предсказания, которые могут быть сохранены в хранилище 195 кадров. Сумматор 196A добавляет блок предсказания, сформированный модулем 194 предсказания, к воссозданному остаточному блоку, выведенному из модуля 193 обратного преобразования, для формирования декодированных видеоданных на базовом уровне качества. Декодированные видеоданные, имеющие базовый уровень качества, выводятся из масштабируемого видеокодера 190.
Декодированные видеоданные, имеющие базовый уровень качества, также предоставляются на сумматор 196B. Сумматор 196B складывает выходные данные сумматора 196 с воссозданной версией остаточного блока улучшающего слоя, выведенной из модуля обратного 193B преобразования, для формирования декодированных видеоданных на втором, более высоком уровне качества. Декодированные видеоданные, имеющие базовый уровень качества, выводятся из масштабируемого видеокодера 190.
Фиг.15 является блок-схемой, иллюстрирующей еще один примерный видеокодер 200. В примере на Фиг.15 кодер 30 базового слоя включает в себя модуль 33A предсказания, хранилище 35A кадров, модуль 38A преобразования, модуль 40A квантования, модуль 41A сканирования коэффициентов, модуль 42A обратного квантования, модуль 44A обратного преобразования, статистический кодер 46 базового слоя, сумматоры 48A-48C и модуль 40A внутреннего предсказания. Отражение различных отличительных признаков на Фиг.15 как модулей предназначено для выделения различных функциональных аспектов проиллюстрированных устройств и не обязательно подразумевает, что такие модули должны быть реализованы посредством отдельных аппаратных или программных компонентов. Напротив, функциональные возможности, ассоциированные с одним или более модулями, могут быть интегрированы в обыкновенных или в отдельных аппаратных или программных компонентах.
Модуль 33A предсказания формирует блок предсказания с использованием внешнего предсказания, например предсказание с компенсацией движения. Блок предсказания может являться предсказанной версией текущего кодируемого видеоблока. Как описано выше, модуль 33A предсказания может формировать блок предсказания с использованием внешнего предсказания на основе одного или более ранее закодированных блоков в пределах одного или более смежных кадров базового слоя. Модуль 33A предсказания может извлекать ранее закодированный блок из хранилища 35A кадров.
После внешнего предсказания видеоблоков кодер 30 базового слоя формирует остаточный блок посредством вычитания блока предсказания, созданного модулем 33A предсказания, из текущего видеоблока в сумматоре 48A. Остаточный блок включает в себя множество значений разностей пикселей, которые определяют количество различий между значениями пикселей текущего видеоблока и значениями пикселей блока предсказания. Остаточный блок может быть представлен в формате двумерного блока (например, двумерной матрицей или массивом значений пикселей). Другими словами, остаточный блок является двумерным представлением значений пикселей.
Модуль 38A преобразования применяет преобразование к остаточному блоку для получения остаточных коэффициентов преобразования. Модуль 38A преобразования, например, может применить преобразование DCT, целочисленное преобразование, направленное преобразование, вейвлетное преобразование или их комбинацию. После применения преобразования к остаточному блоку значений пикселей модуль 40A квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. После квантования модуль 42A обратного квантования и модуль 44A обратного преобразования могут применить обратное квантование и обратное преобразование соответственно для воссоздания остаточного блока. Сумматор 48B добавляет воссозданный остаточный блок к блоку предсказания, созданному модулем 33A предсказания, для получения воссозданного видеоблока для сохранения в хранилище 35A кадров. Воссозданный видеоблок, сохраненный в хранилище 34 кадров, может использоваться модулем 32 предсказания из кодера 30 базового слоя для внутреннего или внешнего кодирования последующего видеоблока. Вдобавок, как будет описано более подробно ниже, воссозданный видеоблок, сохраненный в хранилище 35A кадров, может использоваться модулем 33B предсказания кодера 32 улучшающего слоя для внутреннего или внешнего кодирования уточнений видеоблока в улучшающем слое.
После квантования сумматор 48C вычитает из квантованных остаточных коэффициентов внутренне предсказанный блок, сформированный модулем 40A внутреннего предсказания. Модуль 40A внутреннего предсказания может формировать блок предсказания с использованием внутреннего предсказания на основе одного или более ранее закодированных блоков в пределах того же самого кадра, что и текущий кодируемый блок. Статистический кодер 46 базового слоя статистически кодирует коэффициенты, выведенные из сумматора 48C, например, с использованием кодирования CAVLC, как определено в стандарте H.264/MPEG-4, часть 10 AVC и подробно описано выше в отношении Фиг.2.
Кодер 72 улучшающего слоя включает в себя модуль 33B предсказания, хранилище 35B кадров, модуль 38B преобразования, модуль 40B квантования, модуль 41B сканирования коэффициентов, модуль 42B обратного квантования, модуль 44B обратного преобразования, статистический кодер 49 улучшающего слоя и сумматоры 48D-48F. Модули кодера 32 улучшающего слоя в значительной степени сходны с аналогично пронумерованными модулями кодера 30 базового слоя. Таким образом, будут описаны только различия.
Модуль 33B предсказания кодера 32 улучшающего слоя формирует блок предсказания, который является предсказанной версией текущего видеоблока. В отличие от модуля 33A предсказания кодера 30 базового слоя, который использует ранее закодированные блоки базового слоя для формирования блоков предсказания, модуль 33B предсказания кодера 32 улучшающего слоя может формировать блок предсказания на основе одного или более ранее закодированных блоков улучшающего слоя. Воссозданный видеоблок улучшающего слоя может иметь второй, более высокий уровень качества, чем блок предсказания базового слоя.
Добавочное различие между кодером 32 улучшающего слоя и кодером 30 базового слоя состоит в том, что выходные данные модуля 42B обратного квантования кодера 32 улучшающего слоя комбинируются с выходными данными модуля 42A обратного квантования кодера 30 улучшающего слоя в сумматоре 48F. Сложение выходных данных модулей 42A и 42B обратного квантования формирует воссозданный видеоблок более высокого качества, тем самым давая возможность лучшего предсказания описанным выше модулем предсказания.
Методики, описанные в этом раскрытии, могут быть осуществлены в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые отличительные признаки, описанные как модули или компоненты, могут быть осуществлены вместе в интегрированном логическом устройстве или раздельно как отдельные, но взаимодействующие логические устройства. При осуществлении в программном обеспечении методики могут быть осуществлены по меньшей мере частично посредством машиночитаемого носителя, содержащего такие команды, которые при их исполнении выполняют один или более описанных выше способов. Машиночитаемый носитель может образовывать часть компьютерного программного продукта, который может включать упаковочные материалы. Машиночитаемый носитель может содержать оперативное запоминающее устройство (ОЗУ; RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ПЗУ; ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ; EEPROM), флэш-память, магнитный или оптический носитель данных и т.п. Методики вдобавок или в качестве альтернативы могут быть осуществлены по меньшей мере частично посредством машиночитаемой передающей среды связи, которая несет или передает код в форме команд или структур данных, к которым можно получить доступ, которые можно прочитать и/или исполнить посредством компьютера.
Код может быть исполнен одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. В соответствии с этим используемый здесь термин "процессор" может обозначать любую предшествующую структуру или любую другую структуру, подходящую для осуществления описанных здесь методик. Вдобавок, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в пределах специализированных программных модулей или аппаратных модулей, сконфигурированных с возможностью кодирования и декодирования, или встроенных в комбинированный кодер-декодер (CODEC) видео. Описание различных отличительных признаков как модулей предназначено для выделения различных функциональных аспектов проиллюстрированных устройств и необязательно подразумевает, что такие модули должны быть реализованы посредством отдельных аппаратных или программных компонентов. Напротив, функциональные возможности, ассоциированные с одним или более модулями, могут быть интегрированы в обыкновенных или в отдельных аппаратных или программных компонентах.
Были описаны разнообразные варианты воплощения. Эти и другие варианты воплощения находятся в объеме следующей формулы изобретения.