КОМБИНИРОВАННОЕ КОДИРОВАНИЕ ДЛИН СЕРИЙ КОЭФФИЦИЕНТОВ УТОЧНЕНИЯ И ЗНАЧИМЫХ КОЭФФИЦИЕНТОВ НА УРОВНЯХ РАСШИРЕНИЯ МАСШТАБИРУЕМОГО КОДИРОВАНИЯ ВИДЕО
COMBINED CODING OF LENGTHS OF SERIES OF REFINEMENT RATIOS AND SIGNIFICANT RATIOS AT LEVELS OF EXPANSION OF SCALABLE VIDEO CODING

По данной заявке испрашивается приоритет нижеследующей предварительной заявки на патент США, полное содержание которой включено в настоящий документ путем ссылки:
предварительная заявка на патент США с порядковым номером № 60/893586, поданная 7 марта 2007 г.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Данное раскрытие относится к кодированию цифрового видео и, более конкретно, к кодированию длин серий коэффициентов преобразования на уровнях расширения в схеме масштабируемого кодирования (SVC) видео.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Технические возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровое телевидение, системы цифрового прямого вещания, устройства беспроводной связи, беспроводные широковещательные системы, персональные цифровые ассистенты (ПЦА, PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, видеоигровые устройства, видеоигровые пульты, сотовые или спутниковые радиотелефоны и т.п. Устройства цифрового видео осуществляют способы сжатия видео, такие как стандарты (кодеки) Экспертной группы по вопросам движущегося изображения MPEG-2, MPEG-4 или H.264/MPEG-4, Часть 10, Advanced Video Coding (усовершенствованное кодирование видео, AVC), чтобы передавать и принимать цифровое видео более эффективно. Способы сжатия видеоизображения выполняют пространственное и временное предсказание, чтобы уменьшать или удалять избыточность, присущую в видеопоследовательностях.
В кодировании видео сжатие видео обычно включает в себя пространственное предсказание, оценку движения и компенсацию движения. Интракодирование основывается на пространственном предсказании, чтобы уменьшать или удалять пространственную избыточность между видеоблоками внутри данного видеокадра. Интеркодирование основывается на временном предсказании, чтобы уменьшать или удалять временную избыточность между видеоблоками последовательных видеокадров из видеопоследовательности. Для интеркодирования видеокодер выполняет оценку движения, чтобы отслеживать перемещение совпадающих видеоблоков между двумя или более смежными кадрами. Оценка движения формирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих видеоблоков предсказания в одном или более опорных кадрах. Компенсация движения использует вектор движения, чтобы формировать видеоблок предсказания из опорного кадра. После компенсации движения формируется остаточный видеоблок путем вычитания видеоблока предсказания из исходного видеоблока, подлежащего кодированию.
Видеокодер может применять процессы преобразования, квантования и кодирования длин серий, чтобы дополнительно уменьшить битовую скорость передачи, связанную с передачей остаточного блока. В кодировании длин серий последовательность коэффициентов может быть кодирована с использованием значения серии, значения уровня и значения знака. Алгоритмы кодирования длин серий могут сканировать через коэффициенты преобразования видеоблока, например, зигзагообразно, для того чтобы обозначить последовательности нулей, которые могут быть кодированы вместе. Значение серии обозначает последовательность нулей, и значение уровня обозначает значение коэффициента, следующего за последовательностью нулей. Может полагаться, что в некоторых случаях значением уровня будет 1, например, когда величина любого коэффициента ограничена значениями в -1, 0 или 1. Значение знака обозначает знак, связанный со значением уровня.
В некоторых случаях может использоваться таблица кодирования с переменной длиной (VLC), чтобы кодировать различные значения серий способом, который способствует эффективности кодирования, и могут использоваться различные таблицы VLC для различного видеоконтента. Видеодекодер выполняет обратные операции, чтобы восстановить коэффициенты, и затем обратные преобразования коэффициентов. Видеодекодер затем декодирует видеоинформацию на основе информации движения и остаточной информации, связанной с видеоблоками.
Некоторое кодирование видео использует масштабируемые способы. Например, масштабируемое кодирование видео (SVC) относится к кодированию видео, в котором используются базовый уровень и один или более масштабируемых уровней расширения. В отношении SVC базовый уровень обычно несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные видеоданные, чтобы поддерживать более высокие уровни: пространственные, временные и/или отношения сигнал/шум (SNR). Базовый уровень может передаваться способом, который является более надежным, чем передача уровней расширения. Например, могут использоваться наиболее надежные порции модулируемого сигнала, чтобы передавать базовый уровень, тогда как менее надежные порции модулированного сигнала могут использоваться, чтобы передавать уровни расширения. Уровни расширения могут задавать различные типы коэффициентов, именуемые как значимые коэффициенты и коэффициенты уточнения.
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
В целом в данном раскрытии описаны способы для кодирования уровня расширения в схеме масштабируемого кодирования видео (SVC). Способы касаются кодирования длин серий значимых коэффициентов и коэффициентов уточнения уровня расширения. Предпочтительнее выполнению двух различных проходов длин серий, чтобы отдельно кодировать значимые коэффициенты и коэффициенты уточнения, способы по данному раскрытию выполняют комбинированное кодирование длин серий значимых коэффициентов и коэффициентов уточнения. Другими словами, кодирование длин серий значимых коэффициентов и коэффициентов уточнения выполняется вместе в одном проходе кодирования. Следовательно, значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения. Также описаны дополнительные способы, которые могут устранять необходимость посылки информации знака для некоторых из коэффициентов уточнения. Вместо этого эта информация знака для некоторых из коэффициентов уточнения может быть выводимой в декодере на основе значений знаков соответствующих коэффициентов ранее закодированных уровней по схеме SVC, каковое может дополнительно повышать эффективность сжатия.
В одном примере данное раскрытие представляет способ кодирования уровня расширения в схеме SVC, содержащий кодирование по длинам серий значимых коэффициентов и коэффициентов уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами обработки.
В другом примере данное раскрытие представляет устройство, содержащее блок кодирования длин серий, сконфигурированный для кодирования уровня расширения в схеме SVC, причем блок кодирования длин серий кодирует по длинам серий значимые коэффициенты и коэффициенты уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения.
В другом примере данное раскрытие представляет устройство, содержащее средство для кодирования уровня расширения в схеме SVC, причем средство для кодирования выполняет кодирование длин серий относительно значимых коэффициентов и коэффициентов уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения.
Описанные в этом раскрытии способы могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации таковых. В случае реализации в программном обеспечении программное обеспечение может исполняться в одном или более процессорах, таких как микропроцессор, проблемно-ориентированная интегральная микросхема (ASIC), программируемая вентильная матрица (БМК, FPGA) или цифровой процессор сигналов (ЦПС, DSP). Программное обеспечение, которое исполняет способы, может быть первоначально хранимым в машиночитаемом носителе и загружаемым и исполняемым в процессоре.
Соответственно, это раскрытие также рассматривает машиночитаемый носитель, содержащий команды, которые при исполнении в устройстве кодирования видео предписывают устройству кодировать уровень расширения в схеме SVC, причем команды предписывают устройству кодировать по длинам серий значимые коэффициенты и коэффициенты уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения. В некоторых случаях машиночитаемый носитель может составлять часть компьютерного программного продукта, который может поставляться на производства и/или использоваться в устройствах кодирования видео. Компьютерный программный продукт может включать в себя машиночитаемый носитель и в некоторых случаях может также включать в себя упаковку.
В других случаях это раскрытие может быть направлено на схему, такую как интегральная схема, микропроцессорный комплект, проблемно-ориентированная интегральная микросхема (ASIC), программируемая вентильная матрица (FPGA), логическая схема или различные комбинации таковых, сконфигурированные для выполнения одного или более способов, описанных в документе.
Подробности одного или более аспектов раскрытия изложены в сопроводительных чертежах и описании ниже. Другие признаки, задачи и преимущества способов, описанных в этом раскрытии, будут очевидными из описания и чертежей, и из пунктов формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - примерная блок-схема, иллюстрирующая систему кодировки и декодирования видео.
Фиг.2 - концептуальная схема, иллюстрирующая видеокадры базового уровня и уровня расширения масштабируемого битового видеопотока.
Фиг.3 - блок-схема, иллюстрирующая пример видеокодера, согласующегося с данным раскрытием.
Фиг.4 - блок-схема, иллюстрирующая пример видеодекодера, согласующегося с данным раскрытием.
Фиг.5 - примерная блок-схема блока кодирования длин серий, который может использоваться для кодировки.
Фиг.6 - примерная блок-схема блока кодирования длин серий, который может использоваться для декодирования.
Фиг.7 - график, показывающий иллюстративный пример, согласующийся с данным раскрытием.
Фиг.8 - схема последовательности операций, иллюстрирующая методику кодировки длин серий, согласующуюся с данным раскрытием.
Фиг.9 - схема последовательности операций, иллюстрирующая методику декодирования длин серий, согласующуюся с данным раскрытием.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
На фиг.1 показана блок-схема, иллюстрирующая систему 10 кодировки и декодирования видео. Как показано на фиг.1, система 10 включает в себя устройство 12 источника, которое передает кодированное видео на приемное устройство 16 через канал 15 связи. Устройство 12 источника может включать в себя источник 20 видео, видеокодер 22 и модулятор/передатчик 24. Приемное устройство 16 может включать в себя приемник/демодулятор 26, видеодекодер 28 и устройство 30 отображения. Система 10 может быть сконфигурирована для применения способов для кодирования длин серий видеоинформации, связанной с уровнем расширения в схеме масштабируемого кодирования видео (SVC). Передатчик устройства 12 источника и приемник приемного устройства 16 оба являются примерами средств для обмена информацией.
SVC относится к кодированию видео, в котором используются базовый уровень и один или более масштабируемых уровней расширения. Для SVC базовый уровень обычно несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные видеоданные, чтобы поддерживать более высокие уровни - пространственные, временные и/или отношения сигнал/шум (SNR). Уровни расширения могут задаваться относительно ранее закодированного уровня. Уровни расширения задают, по меньшей мере, два различных типа коэффициентов, именуемых как значимые коэффициенты и коэффициенты уточнения. Коэффициенты уточнения могут задавать значения относительно соответствующих значений ранее закодированного уровня.
Коэффициенты уточнения относятся к коэффициентам уровня расширения, для которого соответствующие коэффициенты предыдущего уровня в схеме SVC имели ненулевые значения. Напротив, значимые коэффициенты относятся к коэффициентам уровня расширения, для которых соответствующие коэффициенты предыдущего уровня в схеме SVC имели нулевые значения. Традиционно, кодирование длин серий уровней расширения предполагает двухпроходный подход. Первый проход выполняется, чтобы кодировать по длинам серий значимые коэффициенты, и еще один проход выполняется, чтобы кодировать коэффициенты уточнения.
В соответствии с данным раскрытием, однако, устройства 12 и 16 выполняют кодирование длин серий значимых коэффициентов и коэффициентов уточнения вместе. Следовательно, значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения. Кроме того, устройства 12 и 16 могут выполнять дополнительные способы, которые могут устранять необходимость устройства 12 источника для посылки информации знака для некоторых из коэффициентов уточнения. Вместо этого эта информация знака для некоторых из коэффициентов уточнения может быть выведена в приемном устройстве 16, которое может дополнительно повысить эффективность сжатия.
В примере по фиг.1 канал 15 связи может содержать любую среду беспроводной или проводной связи, такую как спектр радиочастот (РЧ, RF), или одну или более физических линий передачи, или любую комбинацию беспроводных и проводных сред. Канал 15 связи может составлять часть сети на основе передачи пакетов, такой как локальная (вычислительная) сеть, широкомасштабная сеть или глобальная сеть, такая как Internet. Канал 15 связи обычно представляет любую подходящую среду связи или совокупность различных сред связи, для передачи видеоданных от устройства 12 источника на приемное устройство 16.
Устройство 12 источника формирует кодированные видеоданные для передачи на приемное устройство 16. В некоторых случаях, однако, устройства 12, 16 могут работать, по существу, симметричным образом. Например, каждое из устройств 12, 16 может включать в себя компоненты кодировки и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видеоустройствами 12, 16, например, для потокового видео, видеовещания или видеотелефонии.
Источник 20 видеоустройства 12 источника может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий предварительно захваченное видео, или внешний видеосигнал от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 20 видео может формировать данные на основе компьютерной графики в качестве источника видео или комбинацию реального видео и машинно-генерируемого видео. В некоторых случаях, если источником 20 видео является видеокамера, устройство 12 источника и приемное устройство 16 могут составлять так называемые телефоны с камерой или видеотелефоны. В каждом случае захваченное, предварительно захваченное или машинно-генерируемое видео может кодироваться посредством видеокодера 22 для передачи от устройства 12 источника видео на видеодекодер 28 устройства 16 приема видео через модулятор/передатчик 22, канал 15 связи и приемник/демодулятор 26. Процессы кодировки и декодирования видео могут осуществлять описанные в документе способы кодирования длин серий, чтобы улучшать процессы. Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое из различных устройств отображения, такое как электронно-лучевая трубка, жидкокристаллический индикатор (ЖКИ, LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
Видеокодер 22 и видеодекодер 28 могут быть сконфигурированы для поддержки SVC для масштабируемости пространственной, временной и/или отношения сигнал-шум (SNR). В некоторых аспектах видеокодер 22 и видеодекодер 28 могут быть сконфигурированы для поддержки кодирования с мелкозернистой SNR масшабируемостью (FGS) для SVC. Кодер 22 и декодер 28 могут поддерживать различные степени масштабируемости путем поддержки кодировки, передачи и декодирования базового уровня и одного или более масштабируемых уровней расширения. Вновь для масштабируемого кодирования видео базовый уровень несет видеоданные с базовым уровнем качества. Один или более уровней расширения несут дополнительные данные, чтобы поддерживать более высокие уровни пространственные, временные и/или SNR. Базовый уровень может передаваться способом, который является более надежным, чем передача уровней расширения. Например, могут использоваться наиболее надежные порции модулированного сигнала, чтобы передавать базовый уровень, тогда как менее надежные порции модулированного сигнала могут использоваться, чтобы передавать уровни расширения.
Чтобы поддерживать SVC, видеокодер 22 может включать в себя кодер 32 базового уровня и один или более кодеров 34 уровня расширения, чтобы выполнять кодировку базового уровня и одного или более уровней расширения соответственно. Способы по данному раскрытию, которые касаются кодирования длин серий значимых коэффициентов с коэффициентами расширения, являются применимыми к кодированию видеоблоков уровней расширения в SVC.
Видеодекодер 28 может включать в себя комбинированный декодер базового уровня/уровня расширения, который декодирует видеоблоки, связанные и с базовыми уровнями, и с уровнями расширения. Видеодекодер 28 может декодировать видеоблоки, связанные и с базовыми уровнями, и с уровнями расширения, и комбинировать декодированное видео, чтобы восстанавливать кадры видеопоследовательности. Устройство 30 отображения принимает декодированные видеопоследовательности и представляет видеопоследовательность пользователю.
Видеокодер 22 и видеодекодер 28 могут работать в соответствии со стандартом сжатия видео, таким как MPEG-2, MPEG-4, разработанным Международным союзом электросвязи, сектором телекоммуникаций (ITU-T) стандартом H.263 или разработанным ITU-T стандартом H.264/MPEG-4, Часть 10, Усовершенствованное Кодирование Видео (AVC). Хотя на фиг.1 не показано, в некоторых аспектах видеокодер 22 и видеодекодер 28 могут каждый быть интегрированными с кодером и декодером аудио и могут включать в себя надлежащие блоки MUX-DEMUX (мультиплексор/демультиплексор) или иные аппаратные средства и программное обеспечение, чтобы вести кодировку и аудио, и видео в общем потоке данных или в отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу H.223 ITU для мультиплексора или другим протоколам, таким как протокол (UDP) дейтаграмм пользователя.
Стандарт H.264/MPEG-4 (AVC) был разработан Экспертной группой (ЭГКВ, VCEG) по кодированию видео из ITU-T вместе с Экспертной группой (MPEG) по вопросам движущегося изображения из Международной организации по стандартизации/Международной электротехнической комиссии (МОС/МЭК, ISO/IEC), в качестве продукта совместного партнерства, известного как Joint Video Team (JVT) (Совместная группа по видео, СГВ). В некоторых аспектах описанные в данном раскрытии способы могут применяться для устройств, которые обычно соответствуют стандарту H.264. Стандарт H.264, который описан Исследовательской группой ITU-T в Рекомендациях ITU-T по H.264, Усовершенствованное Кодирование Видео (AVC) для общих аудиовизуальных услуг, и датирован мартом 2005 г., в документе может именоваться стандартом или техническим описанием H.264, или стандартом или техническим описанием H.264/AVC.
Совместная группа (JVT) по видео продолжает работу над расширением SVC к H.264/MPEG-4 AVC. Техническое описание эволюции расширения SVC представлено в форме Совместного проекта (JD). Созданная группой JVT модель Joint Scalable Video Model (JSVM) (Объединенная модель масштабируемого видео, ОММВ) реализует инструментальные средства для использования в масштабируемом видео, которые могут использоваться в рамках системы 10 для различных задач кодирования, описанных в данном раскрытии. Подробную информацию, касающуюся кодирования с мелкозернистой SNR масшабируемостью (FGS), можно найти в документах Совместного проекта и конкретно в Совместном проекте 6 (SVC JD6), авторов Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien "Joint Draft 6: Scalable Video Coding," JVT-S 201, апрель 2006 г., Женева, и в Совместном проекте 9 (SVC JD9), авторов Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien "Joint Draft 9 of SVC Amendment" (Поправки к SVC по Совместному проекту 9), JVT-V 201, январь 2007 г., Марракеш, Марокко.
В некоторых аспектах относительно (широко)вещания видео описанные в данном раскрытии способы могут применяться к расширенному стандарту H.264 кодирования видео для доставки услуг видео реального времени в системах наземной мобильной мультимедийной многоадресной передачи (НМ3, TM3) с использованием Технического описания радиоинтерфейса передачи «по прямому каналу только» (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast", который будет опубликован в виде Технического стандарта TIA-1099 ("FLO Specification"). То есть канал 15 связи может содержать беспроводной информационный канал, используемый для беспроводного вещания видеоинформации согласно Спецификация FLO, или подобного. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока, и процессы декодирования, подходящие для радиоинтерфейса FLO. Альтернативно, вещание видео может осуществляться в соответствии с другими стандартами, такими как DVB-H (цифровое телевидение для переносных устройств, ЦТВ-П), ISDB-T (цифровое вещание с интегрированными услугами для наземных систем, ЦВИУ-Н), или DMB (цифровое мультимедийное вещание, ЦМВ). Следовательно, устройство 12 источника может быть мобильным беспроводным терминалом, сервером потокового видео или сервером вещания видео. Однако описанные в данном раскрытии способы не ограничиваются каким-либо конкретным типом системы широковещательной, многоадресной или двухточечной передачи. В случае широковещания устройство 12 источника может осуществлять вещание нескольких каналов видеоданных на множество приемных устройств, каждое из которых может быть подобным приемному устройству 16 по фиг.1.
Видеокодер 22 и видеодекодер 28 каждый может быть реализован в виде одного или более микропроцессоров, цифровых процессоров сигналов (DSP), проблемно-ориентированных интегральных микросхем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых таковых комбинаций. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, и тот, и другой могут быть встроенными в виде части комбинированного кодера/декодера (кодека, CODEC) в соответствующем мобильном устройстве, абонентском устройстве, устройстве вещания, сервере или подобном. Кроме того, устройство 12 источника и приемное устройство 16 каждое может включать в себя, в качестве применимых, надлежащие компоненты модуляции, демодуляции, преобразования частоты, фильтрации и усилителя, предназначенные для передачи и приема кодированного видео, включая радиочастотные (РЧ, RF) беспроводные компоненты и антенны, достаточные для поддержания беспроводной связи. Для простоты иллюстрации, однако, такие компоненты складываются в виде модулятора/передатчика 24 устройства 12 источника и приемника/демодулятора 26 приемного устройства 16 на фиг.1.
Видеопоследовательность включает в себя ряд видеокадров. Видеокодер 22 оперирует с видеоблоками внутри отдельных видеокадров, для того чтобы закодировать видеоданные. Видеоблоки могут иметь фиксированные или переменные размеры, и могут отличаться по размеру в соответствии с указанным стандартом кодирования. Каждый видеокадр включает в себя ряд слоев. Каждый слой может включать в себя ряд макроблоков, которые могут быть организованы в подблоки. В качестве примера стандарт H.264 ITU-T поддерживает интрапредсказание с блоками различных размеров, таких как 16 на 16, 8 на 8, или 4 на 4 для яркостных составляющих, и 8 на 8 для составляющих цветности, а также интерпредсказание с блоками различных размеров, таких как 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для яркостных составляющих и соответствующих масштабированных размеров для составляющих цветности. Видеоблоки могут содержать блоки пиксельных данных или блоки коэффициентов преобразования, например, следуя процессу преобразования, такому как дискретное косинусное преобразование. Способы кодирования длин серий по данному раскрытию применяются к видеоблокам коэффициентов преобразования.
Более мелкие видеоблоки могут обеспечивать лучшую разрешающую способность и могут использоваться для положений видеокадра, которые включают в себя более высокие степени детализации. В целом, может рассматриваться, что видеоблоками будут макроблоки (MB) и различные подблоки. Кроме того, может рассматриваться, что слой будет последовательностью видеоблоков, таких как макроблоки и/или подблоки. Каждый слой может быть независимо декодируемой единицей видеокадра. После предсказания может выполняться преобразование над остаточным блоком 8×8 или остаточным блоком 4×4 и может применяться дополнительное преобразование к коэффициентам DC (дискретного косинусного преобразования) блоков 4×4 для составляющих цветности или яркостных составляющих, если используется интрапредсказание 16×16. Вновь после преобразования данные все еще могут рассматриваться являющимися видеоблоками, то есть блоками коэффициентов преобразования.
Следуя кодированию на основе интра- или интерпредсказания и способам преобразования (таким как целочисленное преобразование 4×4 или 8×8, используемое в H.264/AVC, или дискретное косинусное преобразование (ДКП, DCT)), может выполняться кодирование длин серий. Данное раскрытие представляет способы для комбинированного кодирования длин серий коэффициентов уточнения и значимых коэффициентов уровня расширения, которое может выполняться в кодере 22, чтобы кодировать данные, и в декодере 26, чтобы декодировать данные. Вновь значимые коэффициенты относятся к коэффициентам, которые имели нулевые значения на предыдущем уровне, и коэффициенты уточнения относятся к коэффициентам, которые имели ненулевые значения на предыдущем уровне. Традиционно кодирование длин серий уровней расширения предполагает двухпроходной подход, один проход для кодирования по длинам серий значимых коэффициентов и другой проход для кодирования по длинам серий коэффициентов уточнения.
Согласно способам по данному раскрытию кодирование длин серий уровней расширения предполагает однопроходный подход, который кодирует значимые коэффициенты с коэффициентами обработки. В схеме кодирования длин серий могут использоваться таблицы кодирования (VLC) с переменной длиной. Например, таблицы VLC могут использоваться для кодирования длин серий, и в некоторых случаях могут выбираться различные таблицы на основе контента, который может быть представлен посредством различной статистики, такой как подсчет длин серий, подсчет позиций «конец-блока» или подобного. Информация длины серии может задавать индекс таблицы и может задавать последовательность закодированных нулей видеоинформации, которая может быть значимыми коэффициентами и коэффициентами уточнения, имеющими такие значения нулей. Информация длины серии может использоваться, чтобы выбирать надлежащее кодовое слово из выбранной таблицы VLC для передачи на устройство декодирования.
Кодер 22 и декодер 28 могут выполнять взаимно обратные способы, которые кодируют уровень расширения в схеме SVC путем кодирования по длинам серий значимых коэффициентов и коэффициентов уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения. Термин «кодирование» обычно относится к процессам либо кодировки, либо декодирования. Видеокодер 22 кодирует данные, тогда как видеодекодер 28 декодирует данные.
На фиг.2 показана схема, иллюстрирующая видеокадры внутри базового уровня 17 и уровня 18 расширения битового потока масштабируемого видео. Как отмечено выше, способы по данному раскрытию являются применимыми к кодированию данных уровней расширения. Базовый уровень 17 может содержать битовый поток, содержащий кодированные видеоданные, который представляет первый уровень масшабируемости пространственной, временной или SNR. Уровень 18 расширения может содержать битовый поток, содержащий кодированные видеоданные, который представляет второй уровень масшабируемости пространственной, временной и/или SNR. Хотя показан один уровень расширения, в некоторых случаях могут использоваться несколько уровней расширения. Битовый поток уровня расширения может быть декодируемым только вместе с базовым уровнем (или предыдущим уровнем расширения, если существует многочисленный уровень расширения). Уровень 18 расширения содержит ссылки на декодированные видеоданные в базовом уровне 17. Такие ссылки могут использоваться или в области преобразования, или в пиксельной области, чтобы сформировать окончательные декодированные видеоданные.
Базовый уровень 17 и уровень 18 расширения могут содержать ключевые (I), промежуточные (P) и двунаправленные (B) кадры. P Кадры на уровне 18 расширения основываются на ссылках на P кадры в базовом уровне 17. Посредством декодирования кадров на уровне 18 расширения и базовом уровне 17, видеодекодер способен повышать качество видео декодированного видео. Например, базовый уровень 17 может включать в себя видео, кодированное с минимальной скоростью передачи кадров, например 15 кадров в секунду, тогда как уровень 18 расширения может включать в себя видео, кодированное с более высокой скоростью передачи кадров, например 30 кадров в секунду. Чтобы поддерживать кодировку с различными уровнями качества, базовый уровень 17 и уровень 18 расширения могут кодироваться, соответственно, с более высоким параметром квантования (QP) и более низким QP. Кроме того, базовый уровень 17 может передаваться способом, который является более надежным, чем передача уровня 18 расширения. В качестве примера могут использоваться наиболее надежные порции модулированного сигнала, чтобы передавать базовый уровень 17, тогда как менее надежные порции модулированного сигнала могут использоваться, чтобы передавать уровень 18 расширения. В некоторых случаях скорость передачи кадров базового уровня 17 может быть меньше таковой для уровня 18 расширения. Иллюстрация на фиг.2 является просто примерной, поскольку базовый уровень и уровни расширения могут задаваться многими различными способами.
Фиг.3 является блок-схемой, иллюстрирующей пример видеокодера 50, который включает в себя блок 47 кодирования длин серий, чтобы кодировать данные в соответствии с данным раскрытием. Видеокодер 50 по фиг.3 может соответствовать кодеру 24 уровня расширения устройства 2 источника на фиг.1. То есть компоненты кодировки базового уровня не иллюстрируются на фиг.3 для простоты. Следовательно, видеокодер 50 может считаться кодером уровня расширения. В качестве альтернативы, проиллюстрированные компоненты видеокодера 50 также могут быть реализованы в комбинации с модулями или блоками кодировки базового уровня, например, в схемы пирамидального кодера, которая поддерживает масштабируемое кодирование видео базового уровня и уровня расширения.
Видеокодер 50 может выполнять интра- и интеркодирование блоков внутри видеокадров. Интракодирование основывается на пространственном предсказании, чтобы уменьшать или удалять пространственную избыточность в видео внутри данного видеокадра. Интеркодирование основывается на временном предсказании, чтобы уменьшать или удалять пространственную избыточность в видео внутри смежных кадров видеопоследовательности. Для интеркодирования видеокодер 50 выполняет оценку движения, чтобы отслеживать перемещение совпадающих видеоблоков между двумя или более смежным кадрами. Для интракодирования пространственное предсказание используется, чтобы идентифицировать другие блоки внутри кадра, которые близко соответствует кодируемому блоку. Интракодирование, компоненты пространственного предсказания не иллюстрируются на фиг.3.
Как показано на фиг.3, видеокодер 50 принимает текущий видеоблок 31 (например, видеоблок уровня расширения) внутри видеокадра, подлежащего кодированию. В примере фиг.3 видеокодер 50 включает в себя блок 33 оценки движения, хранилище 35 опорных кадров, блок 37 компенсации движения, модуль 39 преобразования блока, блок 41 квантования, блок 42 обратного квантования, блок 44 обратного преобразования и блок 46 VLC. Может быть включен деблокирующий фильтр (не показан), чтобы фильтровать границы блока для удаления артефактов блочности. Видеокодер 50 также включает в себя сумматор 48 и сумматор 51. На фиг.3 иллюстрируются компоненты временного предсказания видеокодера 50 для интеркодирования видеоблоков. Хотя для простоты иллюстрации на фиг.3 не показано, видеокодер 50 также может включать в себя компоненты пространственного предсказания для интракодирования некоторых видеоблоков. Компоненты пространственного предсказания, однако, обычно используются только для кодирования базового уровня.
Блок 33 оценки движения сравнивает видеоблок 31 с блоками в одном или более смежных видеокадрах, чтобы сформировать один или более векторов движения. Смежный кадр или кадры могут быть извлечены из хранилища 35 опорных кадров, которое может содержать любой тип запоминающего устройства или устройства хранения данных, чтобы хранить видеоблоки, восстановленные из ранее закодированных блоков. Оценка движения может выполняться для блоков переменных размеров, например, 16×16, 16×8, 8×16, 8×8 или блоков меньших размеров. Блок 33 оценки движения идентифицирует блок в смежном кадре, который наиболее близко соответствует текущему видеоблоку 31, например, на основе модели случайного искажения, и определяет смещение между блоками. На этой основе блок 33 оценки движения выдает вектор движения (MV) (или множество MV в случае двунаправленного предсказания), который указывает величину и траекторию смещения между текущим видеоблоком 31 и прогнозным блоком, используемым для кодирования текущего видеоблока 31.
Векторы движения могут иметь полу- или четверть-пиксельную точность или даже более тонкую точность, давая возможность видеокодеру 50 отслеживать движение с точностью более высокой, чем целочисленные положения пикселов и получать более подходящий блок предсказания. При использовании векторов движения с дробными значениями пикселов операции интерполяции выполняются в блоке 37 компенсации движения. Блок 33 оценки движения может идентифицировать наилучший вектор движения для видеоблока, используя модель случайного искажения. Используя результирующий вектор движения, блок 37 компенсации движения формирует видеоблок предсказания посредством компенсации движения.
Видеокодер 50 формирует остаточный видеоблок путем вычитания в сумматоре 48 видеоблока предсказания, созданного блоком 37 компенсации движения, из исходного, текущего видеоблока 31. Модуль 39 преобразования блока применяет к остаточному блоку преобразование, такое как дискретное косинусное преобразование (DCT), создающее остаточные коэффициенты блока преобразования. Блок 41 квантования квантует остаточные коэффициенты блока преобразования, чтобы дополнительно уменьшить битовую скорость передачи. Сумматор 49A принимает информации коэффициентов базового уровня, например, от кодера базового уровня (не показано) и установлен между модулем 39 преобразования блока и блоком 41 квантования, чтобы подавать эту информацию коэффициентов базового уровня на кодирование уровня расширения. В частности, сумматор 49A вычитает информацию коэффициентов базового уровня из выходной информации модуля 39 преобразования блока. Подобным образом сумматор 49B, который установлен между блоком 44 обратного преобразования и блоком 42 обратного квантования, также принимает информацию коэффициентов базового уровня от кодера базового уровня (не показано). Сумматор 49B суммирует информацию коэффициентов базового уровня с выходной информацией блока 42 обратного квантования.
Кодирование с пространственным предсказанием действует весьма подобно кодированию с временным предсказанием. Однако тогда как кодирование с временным предсказанием для выполнения кодирования основывается на блоках смежных кадров (или других кодируемых единиц), пространственное предсказание для выполнения кодирования основывается на блоках внутри общего кадра (другой кодируемой единицы). Кодирование с пространственным предсказанием кодирует внутри блоков, тогда как кодирование с временным предсказанием кодирует между блоками. Вновь компоненты пространственного предсказания не показаны на фиг.3 для простоты.
Блок 47 кодирования длин серий кодирует квантованные коэффициенты преобразования согласно методике кодирования переменной длины, чтобы дополнительно уменьшать битовую скорость передачи передаваемой информации. В частности, блок 47 кодирования длин серий применяет способы по данному раскрытию для кодирования по длинам серий значимых коэффициентов уровня расширения с коэффициентами уточнения. Кроме того, блок 47 кодирования длин серий может выполнять дополнительные способы, чтобы устранять необходимость посылки информации знака, по меньшей мере, для некоторых из коэффициентов уточнения. Дополнительные подробности этих способов представлены в описании ниже.
После кодирования длин серий закодированное видео может передаваться на другое устройство. Кроме того, блок 42 обратного квантования и блок 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока. Сумматор 51 суммирует восстановленный остаточный блок с блоком предсказания с компенсированным движением, который создается блоком 37 компенсации движения, чтобы создать восстановленный видеоблок для сохранения в хранилище 35 опорных кадров. Восстановленный видеоблок используется блоком 33 оценки движения и блоком 37 компенсации движения для кодирования блока в последующем видеокадре.
Фиг.4 является блок-схемой, иллюстрирующей пример видеодекодера 60, который может соответствовать видеодекодеру 28 на фиг.1 или декодеру другого устройства. Видеодекодер 60 включает в себя блок 52A кодирования длин серий для информации уровня расширения, который выполняет взаимно обратную функцию блока 47 кодирования длин серий по фиг.3. То есть подобно блоку 47 кодирования длин серий блок 52A кодирования длин серий кодирует по длинам серий значимые коэффициенты уровня расширения с коэффициентами уточнения. Кроме того, блок 52A кодирования длин серий может выполнять дополнительные способы для выведения информации знака, по меньшей мере, для некоторых из коэффициентов уточнения, которая может быть исключена из битового потока.
Видеодекодер 60 может также включать в себя другой блок 52B кодирования длин серий для информации базового уровня. Блок 55 интрапредсказания необязательно может выполнять любое пространственное декодирование видеоблоков базового уровня, и выход блока 55 интрапредсказания может поставляться на сумматор 53. Контур уровня расширения может включать в себя блок 58A обратного квантования, и контур базового уровня может включать в себя блок 56B обратного квантования. Информация в контурах базового уровня и уровня расширения может быть скомбинирована посредством сумматора 57.
Видеодекодер 60 может выполнять интра- и интердекодирование блоков внутри видеокадров. В примере на фиг.4 видеодекодер 60 включает в себя блоки 52A и 52B кодирования длин серий (упомянутые выше), блок 54 компенсации движения, блоки 56A и 56B обратного квантования, блок 58 обратного преобразования и хранилище 62 опорных кадров. Видеодекодер 60 также включает в себя сумматор 64. Необязательно видеодекодер 60 может также включать в себя деблокирующий фильтр (не показан), который фильтрует выходную информацию сумматора 64. Вновь сумматор 57 комбинирует информацию в контуре базового уровня и контуре уровня расширения, и блок 55 интрапредсказания и сумматор 53 содействуют любому пространственному декодированию видеоблоков базового уровня.
В соответствии с данным раскрытием блок 52A кодирования длин серий принимает кодированный битовый поток и применяет методику кодирования длин серий, как описано в данном раскрытии. Это может давать в результате квантованные остаточные коэффициенты, режим кодирования макроблока и подблока и информацию движения, которая может включать в себя векторы движения и разделения блоков. В частности, блок 52A кодирования длин серий использует методику декодирования длин серий, которая полагает, что коэффициенты уточнения и значимые коэффициенты были кодированы по длинам серий вместе.
После декодирования, выполненного посредством блока 52A кодирования длин серий, блок 54 компенсации движения принимает векторы движения и один или более восстановленных опорных кадров из хранилища 62 опорных кадров. Блок 56A обратного квантования выполняет обратное квантование, то есть осуществляет деквантование квантованных коэффициентов блоков. После комбинирования информации уровней расширения и базового посредством сумматора 57 блок 58 обратного преобразования применяет к коэффициентам обратное преобразование, например обратное DCT, чтобы сформировать остаточные блоки. Блок 54 компенсации движения формирует компенсированные по движению блоки, которые суммируются посредством сумматора 64 с остаточными блоками, чтобы создать декодированные блоки. Если желательно, также может применяться деблокирующий фильтр, чтобы фильтровать декодированные блоки, для того чтобы удалять артефакты блочности. Фильтрованные блоки затем помещаются в хранилище 62 опорных кадров, которое обеспечивает опорные блоки от компенсации движения, а также выдает декодированное видео на ведущее устройство отображения (такое как устройство 30 на фиг.1).
Фиг.5 является блок-схемой, иллюстрирующей примерный блок 70 кодирования длин серий, который может соответствовать блоку 47 кодирования длин серий по фиг.3. Блок 70 кодирования длин серий включает в себя модуль 72 получения кода длин серий, модуль 74 правил кадра/слоя, модуль 76 правил блока и одну или более таблиц 78 VLC. Таблицы 78 VLC обычно относятся к таблицам, которые могут храниться в любом местоположении, например, локально или вне микросхемы в местоположении отдельной памяти. Таблицы 78 VLC могут обновляться время от времени или периодически в течение процесса кодирования, как желательно.
Модуль 72 получения кода длин серий кодирует по длинам серий значимые коэффициенты и коэффициенты уточнения уровня расширения вместе, так что значения серий кодирования длин серий кодируют значимые коэффициенты с коэффициентами уточнения. Другими словами, предпочтительнее выполнения двух различных проходов кодирования длин серий для значимых коэффициентов и коэффициентов уточнения, модуль 72 длин серий кодирует значимые коэффициенты и коэффициенты уточнения вместе в одном проходе длин серий. Кодирование длин серий может сканировать все коэффициенты преобразованного видеоблока, например, в зигзагообразном порядке, безотносительно, являются ли они коэффициентами уточнения или значимыми коэффициентами. Конечно, порядок, в котором сканируется видеоблок, например, зигзагообразный или иной, может быть изменен без выхода за рамки данного раскрытия.
n
n-1
n-1
Коэффициенты уточнения могут иметь значения, ограниченные 1, 0 и 1, которые могут кодироваться двумя битами информации. Первый бит может указывать, является ли коэффициент равным 0 или нет, и второй бит может указывать, является ли знак (обозначенный как s) коэффициента уточнения таким же как (coeff_ref_dir_flag=0) или отличающимся (coeff_ref_dir_flag=l) от знака (обозначенного как s) соответствующего коэффициента предыдущего уровня. Предыдущий уровень обозначается в виде s. Если знак текущего коэффициента является таким же, как таковой предыдущего уровня, то coeff_ref_dir_flag=0. Если знак текущего коэффициента отличен от такового предыдущего уровня, то coeff_ref_dir_flag=l. Два бита уточнения могут быть скомбинированы в алфавит из трех символов уточнения, как изложено ниже в Таблице 1.
ТАБЛИЦА 1
coeff_ref_flag
coeff_ref_dir_flag
ref_symbol
0
-
0
1
0
1
1
1
2
Данное раскрытие признает, что имеется высокая степень корреляции знака коэффициентов уточнения по отношению к соответствующим коэффициентам предыдущих уровней по схеме SVC. Используя эту основу, могут быть определены правила, чтобы давать возможность, чтобы из кодированной по длинам серий информации для этих коэффициентов была устранена информация знака для некоторых из коэффициентов уточнения. Вместо этого эта информация знака может быть выводимой в декодере. Коэффициенты уточнения могут кодироваться в виде 1, 0 или -1, и нулевые значения могут включаться в значения серий, которые включают в себя коэффициенты уточнения, и значимые коэффициенты.
Чтобы воспользоваться преимуществом этой корреляции, блок 70 кодирования длин серий может включать в себя модуль 74 правил и модуль 76 правил. Модули 74 и 76 правил задают одно или более правил коэффициентов уточнения, чтобы содействовать определению информации знака, связанной, по меньшей мере, с некоторыми из коэффициентов уточнения. В этом случае такая информация знака может быть исключена из кодированной по длинам серий информации.
Модуль 74 правил кадра/слоя обычно задает одно или более правил для кодируемой единицы (например, кадра, слоя или другого типа кодируемой единицы). Модуль 76 правил блока задает одно или более правил для данного видеоблока внутри кодируемой единицы. Например, первое правило, задаваемое модулем 74, может указывать для каждого из двух или более типов видеоблоков (например, интракодированные блоки и интеркодированные блоки), следует ли информацию знака сохранять той же или изменять относительно соответствующих коэффициентов предыдущего уровня в схеме SVC. Второе правило, задаваемое модулем 76, может указывать, следует ли применять или игнорировать первое правило для данного видеоблока.
Более конкретно, первое правило может указывать для интракодированных блоков или интеркодированных блоков, следует ли знаки коэффициентов уточнения оставлять теми же или следует инвертировать (то есть «перебросить») относительно соответствующих коэффициентов предыдущего уровня в схеме SVC. Если для данного видеоблока это достигает эффективности, второе правило может указывать, что первое правило следует соблюдать для этого блока. В качестве альтернативы, если для данного видеоблока первое правило не достигает эффективности, второе правило может указывать, что первое правило для этого блока следует игнорировать. Первое правило может устанавливаться в начале каждого кадра (или слоя), подлежащего кодированию, и второе правило может устанавливаться в начале каждого видеоблока, подлежащего кодированию. Таким образом, первое правило может называться правилом кодируемой единицы и второе правило может называться правилом блока.
Когда второе правило указывает, что первое правило следует игнорировать для данного видеоблока, информация знака для коэффициентов уточнения данного видеоблока включается в кодированную по длинам серий информацию для данного видеоблока. Когда второе правило указывает, что первое правило следует применять, информация знака коэффициентов уточнения данного видеоблока не включается в кодированную по длинам серий информацию для данного видеоблока. Передаваемый битовый поток может включать в себя и кодированную по длинам серий информацию, и дополнительную информацию, которая задает правила коэффициентов уточнения.
Таблицы 78 VLC могут задавать карты отображения между различными значениями серий и кодами переменной длины, которые могут пересылаться, чтобы передать различные значения серий. Могут выполняться обновления таблиц 78 VLC, как необходимо, и могут выбираться различные таблицы на основе контента, который может быть представлен посредством различной статистики, такой как подсчеты длин серий, подсчеты позиций «конец блока», или подобного. В любом случае таблицы VLC могут отображать высоковероятные значения серий на более короткие коды переменной длины и могут отображать менее вероятные значения серий на более длинные коды переменной длины.
В качестве альтернативы, кодирование длин серий, выполняемое модулем 72, может включать в себя операции табличного поиска в таблицах 78 VLC на основе нескольких входных значений, например, пар значений. Пары значений могут включать в себя значения серий и вторые значения, которые зависят от типа, связанного с кодируемым видеоблоком (например, интра или интер). В этом случае могут быть включены различные правила для различных типов кодируемых блоков в виде части операций табличного поиска. Таким образом, вторые значения, которые зависят от типа кодируемых видеоблоков (например, интра или интер), могут заменять одно или более правил, описанных выше. Вместо этого информация, передаваемая посредством правил, может вкладываться в таблицы VLC, и операции табличного поиска могут быть основаны на значениях серий и вторых значениях, которые зависят от типа, связанного с кодируемым видеоблоком.
Кроме того, могут задаваться даже более сложные таблицы, имеющие более двух входных элементов для определения кодовых слов. Эти альтернативные способы также могут устранять необходимость посылки информации знака, по существу, вкладывая такую выводимую информацию знака в операции табличного поиска. Однако количество кодовых слов в таблице будет повышаться относительно способов, которые используют одновходовые таблицы на основе значений серий, и передают информацию правил, чтобы давать возможность вывода в декодере информации знака для некоторых из коэффициентов уточнения. В этом случае информация "правила", по существу, может заменяться поиском по многовходовой таблице.
Фиг.6 является блок-схемой, иллюстрирующей примерный блок 80 кодирования длин серий, который может соответствовать блоку 52 кодирования длин серий по фиг.4. Блок 80 кодирования длин серий является, по существу, подобным блоку 70 кодирования длин серий, но выполняет взаимно обратные функции декодирования относительно кодировки, которое выполняется блоком 70 кодирования длин серий. Таким образом, тогда как блок 70 кодирования длин серий принимает квантованные остаточные коэффициенты и формирует битовый поток, блок 80 кодирования длин серий принимает битовый поток и формирует квантованные остаточные коэффициенты. Блок 80 кодирования длин серий включает в себя модуль 82 выполнения декодирования длин серий, модуль 84 правил кадра/слоя, модуль 86 правил блока и одну или более таблиц 88 VLC. Как в блоке 70, таблицы 88 VLC блока 80 кодирования длин серий обычно относятся к таблицам, которые могут храниться в любом местоположении, например, локально или вне микросхемы в местоположении отдельной памяти. Таблицы 88 VLC могут обновляться периодически, как желательно.
Модуль 82 выполнения декодирования длин серий выполняет декодирование по длинам серий значимых коэффициентов и коэффициентов уточнения уровня расширения вместе. Значения серий кодирования длин серий охватывают вместе значимые коэффициенты с коэффициентами уточнения. Таким образом, модуль 82 выполнения декодирования длин серий выполняет один проход длин серий, чтобы декодировать всю информацию, и не выполняет отдельные проходы для значимых коэффициентов и коэффициентов уточнения. Коэффициенты уточнения могут иметь значения, ограниченные -1, 0 и 1, которые могут кодироваться посредством двух битов информации, как пояснено выше.
Битовый поток, принимаемый модулем 82 выполнения декодирования длин серий, может включать в себя кодированную по длинам серий информацию, а также одно или более правил коэффициентов уточнения. Кодированная по длинам серий информация включает в себя информацию знака, связанную с ненулевыми значимыми коэффициентами, но не включает в себя информацию знака, связанную, по меньшей мере, с некоторыми из ненулевых коэффициентов уточнения. Однако модуль 82 выполнения декодирования длин серий может определять информацию знака, связанную, по меньшей мере, с некоторыми из ненулевых коэффициентов уточнения, на основе правил коэффициентов уточнения и соответствующей информации знака, связанной с коэффициентами предыдущего уровня в схеме SVC. В частности, модуль 84 правил кадра/слоя и модуль 86 правил блока применяют соответственные правила, чтобы определить отсутствующую информацию знака. Вновь первое правило может применяться по отношению к кодируемой единице (например, слою или кадру), и второе правило может применяться для данного видеоблока внутри кодируемой единицы.
Если второе правило указывает, что первое следует игнорировать, модуль 82 выполнения декодирования длин серий определяет информацию знака ненулевых коэффициентов уточнения данного видеоблока из кодированной по длинам серий информации для данного видеоблока. Когда второе правило указывает, что следует применять первое правило, модуль 82 выполнения декодирования длин серий определяет информацию знака ненулевых коэффициентов уточнения данного видеоблока, связанную со вторым правилом, на основе соответствующей информации знака, связанной с коэффициентами базового или предыдущего уровня в схеме SVC.
n
n_1
Как в блоке 80 кодирования длин серий на фиг.6, так и в блоке 70 кодирования длин серий на фиг.5, коэффициенты прохода уточнения кодируются вместе со значимыми коэффициентами, то есть они не пропускаются при вычислении или декодировании длин серий. Знак s коэффициента уточнения на уровне n мелкозернистой SNR масшабируемостью (FGS) является высококоррелированным со знаком s близко расположенного коэффициента на базовом или предыдущем уровне и, следовательно, может быть восстановлен на основе информации, принятой на предыдущем уровне FGS. Вероятность, что знак имеет такое же или противоположное значение, зависит от используемого квантования и более конкретно от значения так называемого "параметра мертвой зоны", используемого в кодере.
0
0
Квантование коэффициентов преобразования в кодеке H.264/MPEG4-AVC или кодеке SVC обычно основано на квантователях с равномерной реконструкцией (URQ). Правило классификации для квантования данных может определяться кодером, но обычно оно предполагает так называемый подход «мертвая зона плюс равномерное квантование с порогом» (DZ-UTQ). Уравнение 1 дает определение квантователя с мертвой зоной с применением подхода DZ-UTQ, где f обозначает параметр мертвой зоны, причем 0<f<0,5, и Δ обозначает размер шага.
0
0
0
0
В Уравнении 1 c обозначает исходный коэффициент преобразования и c является уровнем, соответствующим базовому уровню в H.264/MPEG4-AVC или в SVC. Соответствующий уровень относится к соответственному значению коэффициента на базовом уровне в той же позиции. Концептуально реконструированное значение r, которое соответствует уровню c, выводится посредством умножения c с соответствующим размером Δ шага:
Уравнение 2 является упрощенной версией того, что фактически указывается для AVC и SVC. Масштабные коэффициенты, которые могут также включаться для нормализации соответствующих базисных функций, исключены для ясности.
n-1
Основываясь на стратегии DZ-UTQ, Уравнение 3 определяет (обратное) реквантование c на n-ом уровне FGS, при заданном восстановленном коэффициенте r (n-1)-го уровня, который может быть предыдущим уровнем расширения или базовым уровнем.
n-1
n
n-1
Более конкретно, Уравнение 3 означает, что восстановленное значение r предшествующего уровня вычитается из исходного коэффициента и что результирующая разность квантуется с использованием половины размера шага предшествующего уровня. Обратите внимание, что для n>0 c отсекается в область интервала [-1, 1] в случае, если r не является равным 0.
n
n
На фиг.7 показан графический пример, где параметр f мертвой зоны равен 1/6, соответственно, для всех уровней n≥0. Позиция восстановленных значений для различных уровней показана в виде небольших сплошных треугольников на горизонтальных линиях, где каждая такая линия указывает другой уровень, начиная с базового уровня снизу вверх до третьего уровня FGS на верхней части графика. Также показываются пороги принятия решения, соответствующие правилу квантования по Уравнению 3 с фиксированным выбором f. График на фиг.7 иллюстрирует, что вероятность для coeff_ref_dir_flag=0 намного выше вероятности для coeff_ref_dir_flag=1.
Параметр мертвой зоны, по которому принимается решение, является ли 0 или 1 вероятность coeff_ref_dir_flag, обычно устанавливается в кодере в зависимости от макроблока и типа кадра (кадр I, P или B), и различается для Интер и Интра-макроблоков. Следовательно, является высокой вероятность, что coeff_ref_dir_flag будет различаться между соседними макроблоками, если они имеют различные типы.
n
n-1
Следовательно, вместо посылки знака для каждого отличного от нуля коэффициента с использованием одного бита, как это делается для значимых коэффициентов, в случае если значимые коэффициенты и коэффициенты уточнения кодируются вместе, могут использоваться статистические зависимости знака s коэффициента уточнения относительно знака s, чтобы дополнительно повышать эффективность кодирования. Кроме того, является ли 0 или 1 coeff_ref_dir_flag, зависит от типа макроблока. Таким образом, тип макроблока может использоваться, чтобы сигнализировать значение знака или выбор таблиц VLC.
n
n_1
n
n-1
n
n-1
n
n-1
n
n-1
В некоторых случаях для каждого кодируемого блока, который может содержать блок 4×4, 8×8 или 16×16, посылается дополнительная информация, указывающая, что знаки s всех коэффициентов уточнения в этом блоке могут быть выведены из знаков s соответствующих коэффициентов предыдущего уровня. В частности, то есть все знаки s имеют такое же значение, как s (s=s), или все знаки s имеют противоположное значение относительно s (s=-s). Вероятность этих двух вариантов зависит от типа макроблока и, следовательно, в начале кодируемой единицы (например, слоя или кадра), может посылаться информация правила, чтобы идентифицировать вариант, который должен использоваться для Интра-макроблоков, и вариант, который должен использоваться для Интер-макроблоков.
В качестве альтернативы, вместо назначения кодового слова только значению длин серий для таблицы VLC, кодовые слова VLC могут назначаться парам (серия, coeff_ref_dir_flag). Поскольку coeff_ref_dir_flag зависит от типа макроблока, можно сделать, чтобы таблица VLC была зависящей от номера цикла и типа макроблока. Номер цикла относится к позиции в зигзагообразном сканировании, которая кодируется в циклы длин серий. Каждый цикл длины серии может задавать значение серии, значение уровня и значение знака.
Эти альтернативы также могут быть объединены с техническим решением, в котором устройство кодера посылает информацию на устройство декодера, чтобы идентифицировать блоки, имеющие коэффициенты уточнения, которые все являются нулевыми. В этом случае, если на текущем уровне все коэффициенты уточнения равны 0, они могут пропускаться при вычислении длин серий, и декодер может получать информацию выводом в предположении, что эти значения пропускались при вычислении длин серий, на основе переданной информации, которая идентифицирует такие блоки в качестве имеющих коэффициенты уточнения, которые все являются нулевыми.
Фиг.8 является схемой последовательности операций, иллюстрирующей методику кодировки для кодирования по длинам серий коэффициентов уровня расширения, согласующуюся с данным раскрытием. Как показано на фиг.8, модуль 74 блока 70 кодирования длин серий задает правила коэффициентов уточнения для кодируемой единицы, такой как кадр или слой кадра (91). В качестве примера правила коэффициентов уточнения для кодируемой единицы могут указывать для различных типов блока (например, интра или интер-блоков), следует ли знаку быть таким же или инвертированным относительно знаков соответствующих коэффициентов предыдущего уровня. Модуль 76 затем задает правила коэффициентов уточнения для видеоблока внутри кодируемой единицы (92). В качестве примера правила коэффициентов уточнения для данного видеоблока могут указывать, следует ли для кодируемой единицы следовать правилам или игнорировать их.
На основе этих правил модуль 72 кодировки длин серий выполняет кодировку длин серий относительно коэффициентов уточнения и значимых коэффициентов видеоблока в одном проходе (93). Модуль 72 кодировки длин серий может осуществлять доступ к таблицам 88 VLC, чтобы содействовать этому кодированию. Модуль 72 кодировки длин серий может идентифицировать различные типы коэффициентов на основе контента предыдущего уровня, но также может рассматривать различные коэффициенты с целью определения значений серий из таблиц 88 VLC. В процессе кодировки значения знака для значимых коэффициентов могут включаться в кодированную по длинам серий информацию. Значения знака для коэффициентов уточнения, однако, в некоторых случаях могут исключаться, когда такая информация может быть выводимой в декодере на основе информации правил. Например, если второе правило указывает, что первое правило следует применять, информация знака для коэффициентов уточнения может быть исключена из кодированной по длинам серий информации, чтобы повышать эффективность сжатия в ходе кодирования данного видеоблока.
Блок 72 кодирования длин серий выводит кодированный битовый поток для передачи на другое устройство (94), например, посредством модулятора/передатчика 24, показанного на фиг.1. Передаваемый битовый поток может включать в себя и кодированную по длинам серий информацию и информацию правил. Для каждого блока кодируемой единицы (95) могут задаваться правила коэффициентов уточнения для этого блока. Для каждой кодируемой единицы (96) могут задаваться правила коэффициентов уточнения для этой кодируемой единицы. Таким образом, правила могут быть приспособлены к контенту и на основе блока, и на основе кодируемой единицы.
Как отмечено выше, альтернатива посылке информации правил может касаться использования более сложных таблиц VLC, например, имеющих многие входные индексные значения на стороне кодера и многие выходы на одно кодовое слово на стороне декодера. В этом случае кодирование длин серий, выполняемое модулем 72, может включать операции табличного поиска в таблице 78 VLC на основе пар значений, причем пары включают значения серий и вторые значения, которые зависят от типа, связанного с кодируемым видеоблоком. Таким образом, для кодируемых блоков в качестве части операций табличного поиска могут быть включены различные правила. Другими словами, в таблицы VLC может вкладываться информация, передаваемая посредством правил (согласно методике по фиг.8), и операции табличного поиска могут основываться на значениях серий и вторых значениях, которые зависят от типа, связанного с кодируемым видеоблоком. Эта альтернативная методика также может устранять необходимость посылки информации знака, по существу, вкладывая, по меньшей мере, часть выводимой на основе знака информации в операции табличного поиска. Такое исполнение на основе таблицы, однако, потребует больше кодовых слов в таблицах и может быть менее эффективным, чем использование менее сложных таблиц и посылка информации правил на декодер для каждой кодируемой единицы и каждого блока.
Фиг.9 является схемой последовательности операций, иллюстрирующей методику декодирования для кодирования по длинам серий коэффициентов уровня расширения, согласующуюся с данным раскрытием. Как показано на фиг.9, модуль 82 выполнения декодирования длин серий принимает битовый поток, включающий в себя кодированную по длинам серий информацию для значимых коэффициентов и коэффициентов уточнения и информацию (101) правил. Модуль 84 идентифицирует правила коэффициентов уточнения для кодируемой единицы, например, кадра или слоя, на основе информации правил, принятой в битовом потоке (102). Подобным образом модуль 86 идентифицирует правила коэффициентов уточнения для данного видеоблока внутри кодируемой единицы (103).
На основе этих правил модуль 82 выполнения декодирования длин серий выполняет декодирование длин серий относительно коэффициентов уточнения и значимых коэффициентов в одном проходе (104). В осуществлении этого модуль 82 выполнения декодирования длин серий может определять информацию знака, связанную, по меньшей мере, с некоторыми из коэффициентов уточнения, на основе правил коэффициентов уточнения и соответствующей информации знака, связанной с коэффициентами предыдущего уровня в схеме SVC, которая может быть хранимой в запоминающем устройстве, доступном для модуля 82 выполнения декодирования длин серий, таком как запоминающее устройство, связанное с таблицами 88 VLC.
Модуль 82 выполнения декодирования длин серий может идентифицировать различные типы коэффициентов на основе контента предыдущего уровня, но также может обрабатывать различные коэффициенты с целью декодирования значений серий. Значения серий могут формироваться на основе операций поиска кодовых слов в таблице 88 VLC. Значения знака для значимых коэффициентов могут декодироваться из битового потока. Значения знака коэффициентов уточнения, однако, могли быть исключены из битового потока. Для таких исключенных значений знака модуль 82 выполнения декодирования длин серий выводит значения знака на основе правил и соответствующей информации знака соответствующих коэффициентов из предыдущих уровней SVC.
В частности, когда второе правило (правило на основе блока) указывает, что первое правило (правило кодируемой единицы) следует игнорировать, модуль 82 выполнения декодирования длин серий определяет информацию знака коэффициентов уточнения данного видеоблока из кодированной по длинам серий информации. Однако, когда второе правило указывает, что следует применять первое правило, модуль 82 выполнения декодирования длин серий определяет информацию знака коэффициентов уточнения данного видеоблока на основе соответствующей информации знака, связанной с коэффициентами предыдущего уровня в схеме SVC.
Для каждого блока кодируемой единицы (105) в битовом потоке идентифицируются правила коэффициентов уточнения для этого блока. Также для каждой кодируемой единицы (106) могут задаваться правила коэффициентов уточнения для этой кодируемой единицы. Таким образом, правила могут идентифицироваться и на основе блока, и на основе кодируемой единицы, и затем использоваться, чтобы выполнять декодирование длин серий, имеющее место по отношению и к значимым коэффициентам, и коэффициентам уточнения, которые кодированы вместе (104).
Альтернатива приему и применению информации правил при декодировании может касаться использования более сложных таблиц VLC. Вновь в этом случае кодирование длин серий, выполняемое модулем 72, может включать в себя операции поиска в таблице 78 VLC на основе пар значений, причем пары включают в себя значения серий и вторые значения, которые зависят от типа, связанного с кодируемым видеоблоком. На стороне декодирования, взаимно обратные таблицы 88 VLC могут быть включены в блок 80 кодирования длин серий, так что переданное кодовое слово может быть отображено обратно на значения серий и вторые значения, которые зависят от типа, связанного с кодируемым видеоблоком. Вновь эта альтернативная методика может также устранять необходимость посылки информации знака, по существу, вкладывая выводимую основанную на знаке информацию в кодовые слова, которые являются декодируемыми посредством таблиц 88 VLC.
Обращаясь вновь на фиг.l, в дополнение к способам, описанным выше, в некоторых случаях видеокодер 22 может использовать дополнительную информацию, чтобы сигнализировать на видеодекодер 28, кодируются ли значения знака коэффициентов уточнения в информации длин серий или являются ли исключенными значения знака коэффициентов уточнения из информации длин серий и подлежат ли выводу в видеодекодере 28. Эта дополнительная информация именуется в документе "информацией кодового знака". Модуль 72 получения кода длин серий блока 70 кодирования длин серий (фиг.5) может определять, необходимо ли кодировать и посылать такую информацию кодового знака, и модуль 82 выполнения декодирования длин серий блока 80 кодирования длин серий (фиг.6) может интерпретировать любую принятую информацию кодового знака. Таким образом, кодер 22 и декодер 28 могут осуществлять передачу информации, которая указывает, включена ли информация знака для коэффициентов уточнения в информацию кодированных длин серий или исключена из нее.
Например, когда code_sign=l, знак каждого ненулевого коэффициента уточнения должен посылаться на декодер 28. В качестве альтернативы, когда code_sign=0, не требуется посылать информацию знака для ненулевых коэффициентов уточнения, поскольку такая информация может быть выводимой в декодере 28. В начале кодируемой единицы (например, кадра или слоя) может посылаться информация для указания типов видеоблоков (Интер и/или Интра), которая может включать в себя информацию кодового знака и правила, какие следует использовать для Интра-видеоблоков и Интер-видеоблоков. В качестве альтернативы кодер 22 и декодер 28 могут иметь соглашение о типах видеоблоков, которое может включать в себя информацию кодового знака, и соглашение о правилах, которые следует использовать, например, в зависимости от кодируемой единицы (например, кадра или слоя), типа видеоблока, и номера уровня FGS. Ниже описаны два дополнительных способа, каждый из которых может дополнительно уменьшать битовую скорость, связанную с передачей кодированного видео, путем ограничения количества видеоблоков, для которых передается кодовый знак.
В одном примере информация кодового знака передается только для видеоблоков, в которых количество коэффициентов уточнения больше X, где X является целым числом больше 0. В качестве примера X может быть равным 5. Для видеоблоков, которые имеют X или менее коэффициентов уточнения, информация кодового знака может не быть кодируемой или передаваемой в битовом потоке. Такие видеоблоки могут иметь ненулевые коэффициенты уточнения, для которых информация знака подлежит передаче. Однако поскольку вероятность, что какой-либо коэффициент уточнения есть 0, обычно находится внутри диапазона 85-95%, для большинства этих блоков (например, в которых X не больше 5) все коэффициенты уточнения наиболее вероятно будут равны 0.
В этом случае видеокодер 22 (например, блок 70 кодирования длин серий (фиг.5) кодера 34 уровня расширения) может формировать кодированную по длинам серий информацию для видеоблока на основе значимых коэффициентов и коэффициентов уточнения, причем кодированная по длинам серий информация включает в себя информацию значений серий и знака, связанную со значимыми коэффициентами. Видеокодер 22 может тогда определять, является ли число коэффициентов уточнения в видеоблоке больше X, причем X является целым числом. Видеокодер 22 может включать информацию знака, связанную с коэффициентами уточнения, в кодированную по длинам серий информацию, когда количество коэффициентов уточнения не больше X. Когда количество коэффициентов уточнения больше X, видеокодер 22 может задавать одно или более правил коэффициентов уточнения, чтобы содействовать определению информации знака, связанной, по меньшей мере, с некоторыми из коэффициентов уточнения, и исключать информацию знака, связанную, по меньшей мере, с некоторыми из коэффициентов уточнения, из кодированной по длинам серий информации.
Другая возможность состоит в том, чтобы кодировать и посылать информацию кодового знака и любую дополнительную информацию знака, являющуюся необходимой, только после кодирования и посылки всех коэффициентов уточнения внутри данного видеоблока. В этом случае информация кодового знака может кодироваться и посылаться только для видеоблоков, которые фактически имеют ненулевые коэффициенты уточнения. В этом случае информация кодового знака не кодируется и посылается, если нет ненулевых коэффициентов уточнения.
В этом случае видеокодер 22 (например, блок 70 кодирования длин серий (фиг.5) кодера 34 уровня расширения) может формировать кодированную по длинам серий информацию для видеоблока на основе значимых коэффициентов и коэффициентов уточнения, причем кодированная по длинам серий информация включает в себя информацию значений серий и знака, связанную со значимыми коэффициентами, и определять, имеют ли какие-либо из коэффициентов уточнения ненулевые значения. Когда один или более коэффициентов уточнения имеют ненулевые значения, видеокодер 22 может задать одно или более правил коэффициентов уточнения, чтобы содействовать определению информации знака, связанной с коэффициентами уточнения, имеющими ненулевые значения, и исключать информацию знака, связанную, по меньшей мере, с некоторыми из коэффициентов уточнения, имеющих ненулевые значения, из кодированной по длинам серий информации.
На стороне декодера видеодекодер 28 (например, блок 80 кодирования длин серий (фиг.6) декодера 40 базового уровня/уровня расширения) может выполнять способы декодирования, которые используют любую принятую информацию кодового знака. Например, видеодекодер 28 может принимать кодированную по длинам серий информацию для видеоблока на основе значимых коэффициентов и коэффициентов уточнения, причем кодированная по длинам серий информация включает в себя информацию значений серий и знака, связанную со значимыми коэффициентами. Кроме того, видеодекодер 28 может принимать информацию кодового знака, указывающую, что видеодекодер 28 должен применять одно или более правил коэффициентов уточнения, чтобы определить информацию знака, связанную, по меньшей мере, с некоторыми из коэффициентов уточнения. В этом случае видеодекодер 28 может на основе правил формировать информацию знака, связанную, по меньшей мере, с некоторыми из коэффициентов уточнения.
В добавление к описанным выше способам также могут использоваться дополнительные способы, чтобы дополнительно уменьшать битовую скорость, связанную с передачей видеоинформации. В частности информация, указывающая на некоторые из значений коэффициентов уточнения, может быть исключена из битового потока, который передается от устройства 12 источника на приемное устройство 16. Значения для таких исключенных коэффициентов уточнения могут быть выведены в видеодекодере 28 на основе предыстории, связанной с соответствующими коэффициентами преобразования. В частности, для заданного типа видеоблока может быть определено, что значения некоторых из коэффициентов уточнения будут нулевыми, на основе предыстории, связанной с соответствующими коэффициентами преобразования. В этом случае информация, указывающая значения для этих коэффициентов уточнения, может быть исключена из битового потока, поскольку значения могут быть выведены в декодере. Коэффициенты уточнения, которые на основе предыстории могут определяться, что будут нулевыми, могут именоваться коэффициентами типа 0, тогда как другие коэффициенты уточнения могут именоваться коэффициентами типа 1.
Обращаясь вновь к фиг.7, некоторые значения коэффициента уточнения могут принимать значения -1, 0 и 1, тогда как другие значения коэффициента уточнения могут принимать только подмножество этих значений. Некоторые значения коэффициента уточнения могут быть только нулевыми при данной прошлой предыстории. Например, если базовый уровень имел значение 1 коэффициента уточнения (как показано в 201), то при данной предыстории значений, показанной на фиг.7, единственно возможными значениями для соответствующего коэффициента уточнения на 1-м уровне FGS являются 0 и 1 (как показано в 202). Также, если базовый уровень имел значение 1 коэффициента уточнения (как показано в 201) и 1-й уровень FGS имел значение 1 коэффициента уточнения (самый правый треугольник в 202), то единственно возможными значениями для соответствующего коэффициента уточнения на 2-м уровне FGS являются 0 и 1 (как показано в 203). При этой предыстории соответствующее значение коэффициента уточнения для 3-го уровня FGS может иметь значение 0 (как показано в 204). В этом случае при данной предыстории значений коэффициентов уточнения (базовый уровень=1, 1-й уровень FGS=1, и 2-й FGS=1) известно, что 3-й уровень FGS должен иметь коэффициент уточнения, равный нулю. Таким образом, может использоваться предыстория значений коэффициентов уточнения (вместе со способами, описанными выше) и, таким образом, устранять необходимость посылки некоторой информации коэффициента уточнения для значений коэффициентов, которые могут быть выведены на основе предыстории соответствующих коэффициентов на предыдущих уровнях.
Способы, описанные в документе, могут быть осуществлены в виде аппаратных средств, программного обеспечения, микропрограммного обеспечения или любой комбинации таковых. Любые признаки, описанные в виде модулей или компонент, могут быть реализованы вместе в интегрированном логическом устройстве или отдельно в виде дискретных, но имеющих возможность взаимодействия логических устройств. Если реализованы в программном обеспечении, способы могут осуществляться, по меньшей мере, частично посредством машиночитаемых носителей, содержащих команды, которые при исполнении выполняют один или более способов, описанных выше. Машиночитаемый носитель для хранения данных может составлять часть компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемый носитель может содержать оперативное запоминающее устройство (ОЗУ, RAM), такое как синхронное динамическое ОЗУ (SDRAM), постоянное запоминающее устройство (ПЗУ, ROM), энергонезависимое ОЗУ (NVRAM), электрически-стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM), флэш-память, магнитные или оптические носители для хранения данных и т.п. Способы, дополнительно или в качестве альтернативы, могут быть осуществлены, по меньшей мере, частично посредством машиночитаемой среды передачи информации, которая осуществляет перенос или передачу кода в форме команд или структур данных и которая может быть доступной, считываемой и/или исполняемой посредством компьютера.
Код может исполняться посредством одного или более процессоров, таких как один или более цифровых процессоров сигналов (DSP), универсальные микропроцессоры, проблемно-ориентированные интегральные микросхемы (ASIC), программируемые вентильные матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется в документе, может относиться к любой из предшествующих структур или любой другой структуре, подходящей для осуществления способов, описанных в документе. Кроме того, в некоторых аспектах описанную в документе функциональность можно обеспечивать в рамках специализированных программных модулей или аппаратных модулей, сконфигурированных для кодировки и декодирования или встроенных в комбинированный видеокодер/декодер (кодек, CODEC).
Если осуществлено в аппаратных средствах, данное раскрытие может быть направлено на схему, такую как интегральная схема, проблемно-ориентированная интегральная микросхема (ASIC), программируемая вентильная матрица (FPGA), логическая схема или различные комбинации таковых, сконфигурированные для выполнения одного или более способов, описанных в документе.
Были описаны различные варианты осуществления изобретения. Эти и другие варианты осуществления находятся в рамках объема нижеследующей формулы изобретения.