УЛУЧШЕНИЯ CAVLC ДЛЯ КОДИРОВАНИЯ УРОВНЯ УЛУЧШЕНИЯ SVC CGS
CAVLC IMPROVEMENTS FOR CODING OF SVC CGS IMPROVEMENT LEVEL

Перекрестная ссылка на родственные заявки
Данная заявка испрашивает приоритет в соответствии с патентной заявкой США № 60/883961, поданной 8 января 2007 г., которая полностью включена в настоящую заявку посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к обработке изображений.
Описание предшествующего уровня техники
Развитие технологий связи привело к увеличению обмена видеосигналами в дополнение к обмену текстовыми и голосовыми данными. Видеоданные обычно являются объемными, и при их передаче используется большая часть ширины полосы пропускания. Для снижения потребления ширины полосы можно использовать схемы кодирования со сжатием, для передачи видеопоследовательностей в широкий диапазон устройств, включающих в себя цифровые телевизоры, цифровые системы прямой широковещательной передачи, беспроводные устройства связи, карманные персональные компьютеры (PDA), переносные компьютеры, настольные компьютеры, консоли для видеоигр, цифровые камеры, устройства цифровой записи, сотовые или спутниковые радиотелефоны, и т.п.
Различные стандарты кодирования видеосигнала были установлены для кодирования цифровой видеопоследовательности. Например, Группа экспертов в области движущегося изображения (MPEG) разработала ряд стандартов, включающих в себя MPEG-1, MPEG-2 и MPEG-4. Другие примеры включают в себя стандарт Международного союза электросвязи (ITU)-T H.263 и стандарт ITU-T H.264 и его дубликат ISO/IEC MPEG-4, часть 10, то есть Усовершенствованное кодирование видеосигнала (AVC) и Масштабируемое кодирование видеосигнала (SVC). Эти стандарты кодирования видеосигнала поддерживают улучшенную эффективность передачи видеопоследовательностей, благодаря кодированию данных со сжатием.
Адаптивное основанное на контексте кодирование с переменной длиной (CAVLC) может представлять собой способ, используемый для кодирования остаточных блоков 4×4 и 2×2 зигзагообразного сканирования для H.264/AVC и SVC. В крупной гранулярной масштабируемости (CGS) SVC на всех уровнях используют CAVLC для H.264/AVC, и этот же метод CAVLC применяют как для кодирования базового уровня, так и для уровня улучшения. Однако из-за разных структур прогнозирования и разных статистик остаточного результата уровня улучшения CGS, по сравнению с базовым уровнем, приводит к неэффективности остаточного кодирования CAVLC уровня улучшения CGS.
Раскрытие изобретения
Адаптивное основанное на контексте кодирование с переменной длиной (CAVLC) для кодирования уровня улучшения с крупной гранулярной масштабируемостью (CGS) при масштабируемом кодировании видеосигнала (SVC), может быть выполнено путем использования количества квантованных коэффициентов входных данных изображения, больших единицы (NLrg1), как элемента синтаксиса. Кодирование coeff_token может быть основано на TotalCoeff и NLrg1. Кодирование уровня может быть выполнено с использованием VLC таблицы, выбранной на основе количества коэффициентов, которые больше единицы, в оставшихся коэффициентах. Кодирование Total_zeros может быть выполнено путем адаптивного выбора VLC таблиц на основе оценки total_zeros, определенной с использованием количества total_zeros в блоке, расположенном выше, и блоке слева от текущего блока.
Данный раздел "Раскрытие изобретения" предусмотрен для представления набора концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании изобретения. Данное раскрытие не предназначено для идентификации ключевых свойств или существенных свойств заявленного объекта изобретения, и при этом он не предназначен для использования в качестве ограничения объема заявленного объекта изобретения.
Краткое описание чертежей
На Фиг.1 показана блок-схема, иллюстрирующая систему цифровой мультимедийной широковещательной передачи, которая поддерживает масштабируемость видеосигнала.
На Фиг.2 показана схема, иллюстрирующая видеокадры в пределах базового уровня и уровня улучшения битового потока масштабируемого видеосигнала.
На Фиг.3 показана блок-схема, иллюстрирующая примерные компоненты сервера широковещательной передачи и устройства абонента в системе цифровой мультимедийной широковещательной передачи по Фиг.1.
На Фиг.4A и 4B показаны виды, поясняющие порядок сканирования.
На Фиг.5 показана блок-схема устройства кодирования с переменной длиной на основе схемы кодирования H.264.
На Фиг.6 показан вид, представляющий порядок элементов синтаксиса в H.264.
На Фиг.7 представлен вариант осуществления устройства кодирования с переменной длиной на основе модифицированной схемы кодирования H.264.
На Фиг.8 показаны этапы процесса CAVLC для кодирования уровня улучшения с крупной гранулярной масштабируемостью (CGS) масштабируемого кодирования видеосигнала (SVC).
На Фиг.9 показаны этапы процесса определения элементов синтаксиса и вывода кодированного потока.
Осуществление изобретения
Масштабируемое кодирование видеосигнала можно использовать для обеспечения временной и пространственной масштабируемости видеосигнала таким образом, что содержание видеосигнала может быть однажды кодировано, и потоки, имеющие различное качество, могут быть предложены провайдеру содержания. В качестве примера, кодированный видеосигнал может включать в себя базовый уровень и уровень улучшения. Базовый уровень переносит минимальное количество данных, необходимых для декодирования видеосигнала и обеспечивает базовый уровень качества. Уровень улучшения переносит дополнительные данные, которые повышают качество декодированного видеосигнала.
Обычно базовым уровнем можно назвать битовый поток, содержащий кодированные видеоданные, который представляет первый уровень пространственно-временной-SNR (отношение сигнал/шум) масштабируемости. Уровень улучшения может относиться к битовому потоку, содержащему кодированные видеоданные, который представляет второй уровень пространственно-временной-SNR масштабируемости. Битовый поток уровня улучшения может быть декодирован совместно с базовым уровнем, то есть, он содержит ссылки на видеоданные декодированного базового уровня, которые используются для генерирования конечных декодированных видеоданных.
Используя иерархическую модуляцию на физическом уровне, базовый уровень и уровень улучшения могут быть переданы на одной несущей или поднесущей, но с различными характеристиками передачи, в результате чего получается различная частота ошибки пакета (PER). Базовый уровень имеет более низкий показатель PER благодаря более надежному приему в области покрытия. Декодер может декодировать только базовый уровень или базовый уровень с уровнем улучшения, если уровень улучшения будет надежно принят, и/или в соответствии с другими критериями.
В некоторых вариантах осуществления раскрытые здесь методы можно применять для осуществления расширений масштабирования видеосигнала с малой сложностью для устройств, которые могут соответствовать стандарту H.264. Например, расширения могут представлять собой потенциальные модификации для будущих версий или расширений стандарта H.264 или других стандартов. Стандарт H.264 был разработан Группой экспертов кодирования видеосигнала ITU-T и Группой экспертов движущегося изображения (MPEG) ISO/IEC как продукт партнерства, известного как Объединенная видеогруппа (JVT). Кодированные видеоданные и масштабируемые расширения могут переноситься в блоках уровня абстракции сети (NAL). Каждый блок NAL представляет собой блок передачи в сети, который может принимать форму пакета, который содержит целое число байтов. Блоки NAL могут переносить либо данные базового уровня, либо данные уровня улучшения. Синтаксис и семантика битового потока базового уровня в модуле NAL могут, в общем, соответствовать применимому стандарту, такому как стандарт H.264, возможно, с некоторыми ограничениями и/или модификациями.
Описанные в данном раскрытии методы можно использовать в комбинации с любым из различных стандартов прогнозируемого кодирования видеосигнала, таким как стандарты MPEG-1, MPEG-2 или MPEG-4, или стандарты ITU H.263 или H.264, или стандарт MPEG ISO/IEC-4, часть 10, то есть Усовершенствованное кодирование видеосигнала (AVC), который, по существу, идентичен стандарту H.264. Применение таких методов для поддержки расширений малой сложности для масштабирования видеосигнала, ассоциированных со стандартом H.264, будет описано здесь с целью иллюстрации.
Если декодирование выполняют в клиентском устройстве, таком как мобильный телефон или другое портативное устройство с малыми размерами, могут возникнуть ограничения, связанные со сложностью расчетов и требованием к объемам и конфигурации памяти. В соответствии с этим масштабируемое кодирование может быть разработано таким образом, чтобы декодирование базового уровня вместе с уровнем улучшения незначительно увеличивало сложность расчетов и требования к объему и конфигурации памяти по сравнению с декодированием одного уровня. Соответствующие элементы синтаксиса и ассоциированная семантика могут поддерживать эффективное декодирование данных базового уровня и уровня улучшения.
На Фиг.1 показана блок-схема, иллюстрирующая систему 10 цифровой мультимедийной широковещательной передачи, поддерживающую масштабируемость видеосигнала. В примере по Фиг.1 система 10 включает в себя сервер 12 широковещательной передачи, передающую вышку 14 и множество устройств 16A, 16B абонента. Сервер 12 широковещательной передачи получает цифровое мультимедийное содержание из одного или больше источников и кодирует мультимедийное содержание, например, в соответствии с любым из стандартов кодирования видеосигнала, описанных здесь, таких как стандарт H.264 или его модификации. Мультимедийное содержание, кодированное сервером 12 широковещательной передачи, может быть скомпоновано в отдельные битовые потоки для поддержки различных каналов для выбора пользователем, ассоциированным с устройством 16 абонента. Сервер 12 широковещательной передачи может получать цифровое мультимедийное содержание, либо как на прямую передачу, либо как архивированный мультимедиа сигнал из различных источников провайдеров содержания.
Сервер 12 широковещательной передачи может включать в себя или может быть соединен с модулятором/передатчиком, который включает в себя соответствующие компоненты радиочастотной (RF, РЧ) модуляции, фильтрации и усилителя для управления одной или больше антенн, ассоциированных с вышкой 14 передачи, для доставки кодированных мультимедийных сигналов, полученных из сервера 12 широковещательной передачи, по беспроводному каналу. В некоторых аспектах сервер 12 широковещательной передачи может, в общем, иметь конфигурацию, предназначенную для доставки видеоуслуг в режиме реального времени, в соответствии с любым из различных методов беспроводной передачи данных, таких как множественный доступ с кодовым разделением (CDMA), множественный доступ с временным разделением (TDMA), множественный доступ c частотным разделением (FDMA), ортогональное мультиплексирование с частотным разделением (OFDM), или любой комбинацией таких методов.
Каждое устройство 16 абонента может находиться в любом устройстве, выполненном с возможностью декодировать и представлять цифровые мультимедийные данные, в системе прямой цифровой широковещательной передачи, в беспроводном устройстве связи, таком как сотовый телефон или спутниковый радиотелефон, карманный персональный компьютер (PDA), переносной компьютер, настольный компьютер, консоль для видеоигр или тому подобное. Устройства 16 абонента могут поддерживать проводной прием и/или беспроводный прием мультимедийных данных. Кроме того, некоторые устройства 16 абонента могут быть оборудованы для кодирования и передачи мультимедийных данных, а также передачи голосовых данных, и данных приложений, включающих в себя видеотелефонию, потоковую передачу видеосигнала и т.п.
В некоторых вариантах осуществления для поддержки передачи масштабируемого видеосигнала, сервер 12 широковещательной передачи может кодировать видеосигнал источника для получения отдельных битовых потоков базового уровня и уровня улучшения для множества каналов видеоданных. Каналы могут передаваться, в целом, одновременно таким образом, чтобы устройства 16A, 16B абонента могли выбирать разные каналы для просмотра в любой момент времени. В соответствии с этим устройства 16A, 16B абонента, под управлением пользователя, могут выбрать один канал для просмотра спорта и затем выбрать другой канал для просмотра новостей или некоторого другого в включенного в программу события, во многом аналогично просмотру телевизора. Обычно каждый канал включает в себя базовый уровень и уровень улучшения, которые передаются с разными уровнями PER.
В примере, показанном на Фиг.1, показаны два устройства 16A, 16B абонента. Однако система 10 может включать в себя любое количество устройств 16A, 16B абонента в заданной области покрытия. Следует отметить, что множество устройств 16A, 16B абонента могут осуществлять доступ к одним и тем же каналам, для просмотра одного и того же содержания одновременно. На Фиг.1 представлено расположение устройств 16A и 16B абонента относительно вышки 14 передачи таким образом, что одно устройство 16A абонента расположено ближе к вышке передачи, и другое устройство 16B абонента расположено дальше от вышки передачи. Поскольку базовый уровень кодирован с более низким PER, должен обеспечиваться надежный прием и декодирование этого уровня любым устройством 16 абонента в пределах применимой области покрытия. Как показано на Фиг.1, оба устройства 16A, 16B абонента принимают базовый уровень. Однако абонент 16B, расположен дальше от передающей вышки 14 и может не принимать надежно уровень улучшения.
Для расположенного ближе устройства 16A абонента доступен видеосигнал более высокого качества, поскольку для него доступны как базовый уровень, так и уровень улучшения, в то время как устройство 16B абонента, расположенное дальше, имеет возможность представлять только минимальный уровень качества, обеспечиваемый данными базового уровня. Следовательно, видеосигналы, полученные устройствами 16 абонентов, являются масштабируемыми в том смысле, что уровень улучшения может быть декодирован и может быть добавлен к базовому уровню для повышения отношения сигнал-шум декодированного видеосигнала.
На Фиг.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, соответственно.
На Фиг.3 показана блок-схема, иллюстрирующая примерные компоненты сервера 12 широковещательной передачи и устройства 16 абонента в системе 10 цифровой мультимедийной широковещательной передачи по Фиг.1. Как показано на Фиг.3, сервер 12 широковещательной передачи включает в себя один или больше источников 20 видеосигнала, или интерфейсов с различными источниками видеосигнала. Сервер 12 широковещательной передачи также включает в себя видеокодер 22, модуль 23 блока NAL и модулятор/передатчик 24. Устройство 16 абонента включает в себя приемник/демодулятор 26, модуль 27 блока NAL, видеодекодер 28 и устройство 30 отображения видеосигнала. Приемник/демодулятор 26 принимает видеосигнал из модулятора/передатчика 24 через канал 15 передачи данных. Видеокодер 22 включает в себя модуль 32 кодера базового уровня и модуль 34 кодера уровня улучшения. Видеодекодер 28 включает в себя модуль 38 комбинирования базового уровня/уровня улучшения (базового/улучшения) энтропийный декодер 39 базового уровня/уровня улучшения.
Кодер 32 базового уровня и кодер 34 уровня улучшения принимают общие видеоданные. Кодер 32 базового уровня кодирует видеоданные на первом уровне качества. Кодер 34 уровня улучшения кодирует мелкие детали, которые при добавлении их к базовому уровню улучшают видеосигнал до второго, более высокого уровня качества. Модуль 23 блока NAL обрабатывает кодированный битовый поток из видеокодера 22 и формирует блоки NAL, содержащие кодированные видеоданные, из базового уровня и уровня улучшения. Модуль 23 блока NAL может представлять собой отдельный компонент, как показано на Фиг.3, или может быть включен в состав, или по-другому интегрирован с видеокодером 22. Некоторые блоки NAL переносят данные базового уровня, в то время как другие блоки NAL переносят данные уровня улучшения.
В некоторых вариантах осуществления некоторые из блоков NAL могут включать в себя элементы синтаксиса и семантики для помощи видеодекодера 28 при декодировании данных базового уровня и уровня улучшения, без существенного увеличения сложности. Например, один или больше элементов синтаксиса, которые обозначают присутствие видеоданных уровня улучшения в блоке NAL, могут обеспечиваться в блоке NAL, который включает в себя видеоданные уровня улучшения, в блоке NAL, который включает в себя видеоданные базового уровня, или в них обоих.
Модулятор/передатчик 24 может включать в себя соответствующий модем, усилитель, фильтр, компоненты преобразования частоты для поддержки модуляции и беспроводной передачи блоков NAL, формируемых модулем 23 блока NAL. Приемник/демодулятор 26 может включать в себя соответствующий модем, усилитель, фильтр и компоненты преобразования частоты для поддержки беспроводного приема блоков NAL, передаваемых сервером 12 широковещательной передачи. В некоторых аспектах сервер 12 широковещательной передачи и устройство 16 абонента могут быть оборудованы с возможностью двусторонней связи таким образом, что сервер 12 широковещательной передачи, устройство 16 абонента, или они оба включают в себя как компоненты передачи, так и приема, и оба выполнены с возможностью кодирования и декодирования видеосигнала. В других аспектах сервер 12 широковещательной передачи может представлять собой устройство 16 абонента, которое выполнено с возможностью кодировать, декодировать, передавать и принимать видеосигнал, используя кодирование на базовом уровне и на уровне улучшения. Следовательно, также предусматривается возможность масштабируемой обработки видеосигнала для видеосигнала, передаваемого между двумя или больше устройствами абонента.
Модуль 27 блока NAL выделяет элементы синтаксиса из принятых блоков NAL и предоставляет соответствующую информацию в видеодекодер 28 для использования при декодировании видеоданных базового уровня и уровня улучшения. Модуль 27 блока NAL может представлять собой отдельный компонент, как показано на Фиг.3, или может быть включен в состав, или другим образом интегрирован в видеодекодер 28. Энтропийный декодер 39 базового уровня/уровня улучшения применяет энтропийное декодирование к принятым видеоданным. Если данные уровня улучшения доступны, модуль 38 комбинирования базового уровня/уровня улучшения комбинирует коэффициенты из базового уровня и уровня улучшения, используя указатели, предоставляемые модулем 27 блока NAL, для поддержки декодирования одного уровня комбинированной информации. Видеодекодер 28 декодирует комбинированные видеоданные для получения выходного видеосигнала для управления устройством 30 отображения. Элементы синтаксиса присутствуют в каждом блоке NAL, и семантика элементов синтаксиса направляет видеодекодер 28 в комбинировании и при декодировании принятых видеоданных базового уровня и уровня улучшения.
Различные компоненты в сервере 12 широковещательной передачи и в устройстве 16 абонента могут быть реализованы с использованием любой соответствующей комбинации аппаратных средств, программных средств и встроенного программного обеспечения. Например, видеокодер 22 и модуль 23 блока NAL, а также модуль 27 блока NAL и видеодекодер 28 могут быть реализованы на основе одного или больше микропроцессоров общего назначения, цифровых сигнальных процессоров (DSP), аппаратных ядер, с использованием специализированных интегральных микросхем (ASIC), программируемых вентильных матриц (FPGA), или любой их комбинации. Кроме того, различные компоненты могут осуществляться в видеокодере-видеодекодере (CODEC). В некоторых случаях, некоторые аспекты раскрытых методов могут исполняться с помощью DSP, который обращается к различным компонентам аппаратных средств в аппаратном ядре для ускорения процесса кодирования.
Что касается аспектов, в которых функции реализованы в виде программных средств, таких как функции, выполняемые процессором или DSP, настоящее раскрытие также предусматривает машиночитаемые носители, содержащие коды в компьютерном программном продукте. При исполнении в машине коды побуждают машину выполнять один или более аспектов методов, описанных в данном раскрытии. Машиночитаемый носитель может содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), запоминающее устройство типа флэш и т.п.
Как показано на Фиг.4A, при энтропийном кодировании, в соответствии с H.264, коэффициенты преобразования обрабатываются на основе блока 4×4 после ортогонального преобразования. В схеме кодирования H.264, пять элементов синтаксиса (описаны ниже) генерируются и кодируются с переменной длиной путем выполнения обработки в обратном порядке (то есть, в порядке обратного сканирования) относительно зигзагообразного порядка сканирования, показанного на Фиг.4A для блока 4×4. Каждый коэффициент преобразования в блоке выражен как Level (уровень) [I], где "I" представляет собой номер зигзага сканирования.
Дальше будет описана обработка энтропийного кодирования блока 4×4, который включает в себя коэффициенты преобразования, показанные на Фиг.4B, с помощью схемы адаптивного основанного на контексте кодирования с переменной длиной CAVLC, которая основана на схеме кодирования H.264. На Фиг.5 показана блок-схема устройства кодирования с переменной длиной (например, видеокодера 22) на основе схемы кодирования H.264. На Фиг.6 показан порядок, в котором коды с переменной длиной, соответствующие пяти элементам синтаксиса на основе блока размером 4×4, комбинируются для формирования кодированного потока.
Модуль 44 определения TotalCoeffs рассчитывает количество коэффициентов преобразования в блоке 4×4, которые не имеют значение = 0. Например, как показано на Фиг.4B, TotalCoeffs=6. Модуль 46 определения total_zeros рассчитывает количество коэффициентов преобразования, значение Level [I] которых равно 0 между Level [9] и Level [0], в качестве конечных значимых коэффициентов. В этом случае total_zeros=4. Модуль 45 определения trailing_ones рассчитывает количество коэффициентов преобразования, вплоть до трех, абсолютные значения которых равны 1, начиная с Level [9], в качестве конечных значимых коэффициентов. В этом случае поскольку Level [9] и Level [7] соответствуют абсолютному значению 1, trailing_ones=2. Следует отметить, что модуль 49 генерирования кода с переменной длиной coeff_token рассчитывает coeff_token как элемент синтаксиса в двумерных событиях из значения TotalCoeffs, рассчитанного модулем 44 определения TotalCoeffs и значения trailing_ones, рассчитывают с помощью модуля 45 trailing_ones.
Поскольку значения "Level" как элемента синтаксиса последовательно генерируются в обратном порядке сканирования, значения "Level" последовательно генерируются начиная с Level [9], в качестве конечного значимого коэффициента. Однако значения "Level" должны быть скорректированы в соответствии со значением trailing_ones, рассчитанного модулем 45 определения trailing_ones. Модуль 41 выбора Level выполняет этот процесс. Модуль 41 выбора Level последовательно выводит коэффициенты преобразования, значения которых для Level [I] не равны 0, в модуль 42 определения порогового значения и в модуль 43 генерирования кода c переменной длиной Level (уровня). Если значение trailing_ones меньше, чем 3, вычитаются 1 из абсолютного значения первого Level [I], абсолютное значение которого не равно 1. В этом случае, поскольку trailing_ones=2, выводят значение "5", полученное путем вычитания 1 из абсолютного значения "6" Level [6]. Кроме того, модуль 42 определения порогового значения определяет suffixLength и выводит его значение в модуль 43 генерирования кода с переменной длиной Level.
SuffixLength определяют путем сравнения таблицы порогового значения, заранее заданной в соответствии со спецификациями H.264, со входным значением Level [I]. Модуль 43 генерирования кода с переменной длиной Level выбирает таблицу с переменной длиной (не показана), предназначенную для использования при кодировании с переменной длиной, в соответствии со значением SuffixLength.
Модуль 47 определения run_before последовательно рассчитывает нулевые проходы в обратном порядке сканирования. Например, run_before=1 между Level [9] и Level [7], и run_before=0 между Level [7] и Level [6]. Следует отметить, что модуль управления zeros_left выводит значения, получаемые путем вычитания последовательно рассчитываемых значений run_before из значений total_zeros, как zeros_left, в модуль 51 генерирования кода с переменной длиной run_before. Модуль 51 генерирования кода с переменной длиной run_before генерирует код с переменной длиной из значений run_before и zeros_left.
Модуль 52 комбинирования кода с переменной длиной последовательно комбинирует код с переменной длиной выводимый из модуля 49 генерирования кода с переменной длиной coeff_token, trailing_ones_sign, выводимых из модуля 45 определения trailing_ones, кода с переменной длиной, выводимого из модуля 43 генерирования кода с переменной длиной Level, кода с переменной длиной, выводимого из модуля 50 генерирования кода с переменной длиной total_zeros, и кода с переменной длиной, выводимого из модуля 51 генерирования кода с переменной длиной run_before в соответствии с порядком, показанным на Фиг.6.
Ввиду различных характеристик сцены при кодировании уровня улучшения кодирование CAVLC для кодирования уровня улучшения SVC CGS может быть неэффективным. Например, во многих случаях для кодирования уровня улучшения CGS остаточные коэффициенты преобразования после квантования равны нулю или единице. Таким образом, вероятность того, что коэффициенты будут больше 1, чрезвычайно мала. На основании этого, в одном варианте осуществления, элементы синтаксиса CAVLC могут быть модифицированы, как показано на Фиг.7, на которой представлен вариант осуществления устройства 40 кодирования с переменной длиной на основе схемы кодирования модифицированного H.264. На Фиг.7 элементы, которые являются общими с устройством кодирования по Фиг.5, показаны как имеющие номера ссылочных позиций, и не описаны дополнительно ниже.
В данных изображения 4×4 после ортогонального преобразования количество квантованных коэффициентов преобразования, имеющих абсолютное значение, большее 1, определяют с помощью модуля 53 определения NLrg1. По сравнению с Фиг.5 определение coeff_token модифицировано таким образом, что модуль 55 генерирования coeff_token кодирует выход модуля 44 определения TotalCoeff и модуля 53 определения NLrg1. В некоторых вариантах осуществления VLC таблицы, показанные ниже в Таблицах 1-3, можно использовать для кодирования coeff_token на основе оценки или прогнозирующего параметра (nC) количества ненулевых коэффициентов (nnz), которые определяются из nnz левого блока (nA) и nnz верхнего блока (nB) текущих данных изображения 4x4. Оценка (nC) определена в ISO/IEC 14496-10 и она может быть определена следующим образом:
Если доступен только верхний блок, тогда nC = nB.
Если доступен только левый блок, тогда nC = nA.
Если ни один не доступен, тогда nC = 0.
Если доступны оба, тогда nC = round((nA+nB)/2).
Таблица 1coeff_token VLC0
Nnz\NLrg1
0
1
>=2
0
1
-
-
1
01
00010
-
2
001
000010
000000101
3
00011
0000011
000000100
4
000011
00000100
000000011
5
00000101
000000110
0000000011
6
000000111
0000000100
0000000010
7
000000010
00000000011
00000000010
8
0000000000101
0000000000100
000000000011
9
00000000000101
00000000000100
0000000000011
10
0000000000001001
0000000000001000
00000000000011
11
00000000000001101
00000000000000111
000000000000101
12
00000000000001100
00000000000000110
0000000000000111
13
00000000000001011
00000000000000101
00000000000000011
14
00000000000001010
00000000000000100
00000000000000010
15
00000000000001001
000000000000000011
000000000000000001
16
00000000000001000
000000000000000010
000000000000000000
Таблица 2coeff_token VLC 1
Nnz\NLrg1
0
1
>=2
0
11
-
-
1
10
000110
-
2
011
00100
00000101
3
010
000101
0000100
4
0011
000100
0000011
5
00101
0000110
00000100
6
000111
0000101
00000011
7
0000111
000000100
000000011
8
000000101
0000000101
0000000100
9
00000000101
00000000100
0000000011
10
000000000101
0000000000111
00000000011
11
00000000001101
00000000000111
000000000100
12
00000000001100
00000000000110
00000000000100
13
00000000001011
00000000000101
00000000000011
14
00000000001010
000000000000101
000000000000010
15
00000000001001
000000000000100
000000000000001
16
00000000001000
000000000000011
000000000000000
Таблица 3coeff_token VLC2
Nnz\ NLrg1
0
1
>=2
0
0111
-
-
1
0110
00000110
-
2
111
001000
000000101
3
110
01000
0000110
4
101
00111
000110
5
100
00110
000101
6
0101
00101
000100
7
01001
000111
0000101
8
001001
0000111
0000100
9
00000111
00000101
00000100
10
000000111
000000110
000000100
11
00000001101
00000000111
0000000111
12
00000001100
00000000110
00000000011
13
00000001011
00000000101
000000000011
14
00000001010
00000000100
000000000010
15
00000001001
000000000101
000000000001
16
00000001000
000000000100
000000000000
Если nC > 8, тогда кодовое слово фиксированной длины может быть записано следующим образом:
Если TotalCoeff=0, код 00
В противном случае можно использовать 6-битный код фиксированной длины, который включает в себя 2 бита min(NLrg1+1,3) и 4 бита TotalCoeff-1.
В некоторых вариантах осуществления, когда выход модуля 53 определения NLrg1 больше, чем 2, к нему присоединяют унарный код (NLrg1-2).
Модуль 54 определения кодирования уровня может выбирать VLC таблицу для кодирования уровня на основе количества коэффициентов, которые больше 1, в оставшихся коэффициентах, предназначенных для кодирования. В некоторых вариантах осуществления, когда величина всех остающихся коэффициентов, предназначенных для кодирования, меньше чем или равна 1, тогда кодируются знаковые биты. Когда количество коэффициентов, имеющих абсолютное значение большее чем 1, равно 1, тогда используют VLC таблицу 0, в противном случае используют VLC таблицы 1 для уровней кода.
Модуль 56 генерирования total_zeros адаптивно выбирает VLC таблицы на основе оценки total_zeros, которая может быть определена так же, как nC (то есть, используя количество total_zeros в блоке выше и слева от текущего блока). Индекс VLC таблицы назначают, как показано ниже в Таблице 4. Такой вариант осуществления учитывает статистику total_zeros для уровней улучшения, которые могут отличаться не только от базового уровня, но также и от уровня к уровню. Назначение VLC для total_zeros может зависеть от значений TotalCoeff. Таблицы 5 и 6 представляют VLC таблицы для total_zeros.
Таблица 4Назначения индекса VLC таблицы total_zeros
Оценка total zeros
Индекс VLC таблицы
0,1,2
0
3,4,...,15
1
Таблица 5total_zeros VLC таблица 0
TotalCoeffTotal_zeros
1
2
3
4
5
6
7
0
1
11
0011
0011
0011
000001
00001
1
011
101
111
111
111
0011
0011
2
010
100
110
110
110
101
101
3
0011
011
101
101
101
100
100
4
0010
010
100
100
100
0010
011
5
0001
0011
011
011
011
011
11
6
000011
0010
010
0010
0010
11
010
7
000010
0001
0010
0001
010
010
0010
8
000001
00001
00001
010
0001
00001
0001
9
0000001
0000001
0001
00001
000001
0001
00000
10
000000001
000001
000001
000001
00001
000000
-
11
00000001
00000001
00000001
0000001
000000
-
-
12
0000000001
000000001
0000001
0000000
-
-
-
13
00000000001
0000000001
00000000
-
-
-
-
14
000000000001
0000000000
-
-
-
-
-
15
000000000000
-
-
-
-
-
-
TotalCoeffTotal_zeros
8
9
10
11
12
13
14
15
0
00001
00001
00001
0001
0001
001
01
1
1
101
0001
0001
001
001
01
1
0
2
0001
011
11
11
01
1
00
-
3
100
11
10
10
1
000
-
-
4
11
010
001
01
0000
-
-
-
5
011
001
01
0000
-
-
-
-
6
010
10
00000
-
-
-
-
-
7
001
00000
-
-
-
-
-
-
8
00000
-
-
-
-
-
-
-
9
-
-
-
-
-
-
-
-
10
-
-
-
-
-
-
-
-
11
-
-
-
-
-
-
-
-
12
-
-
-
-
-
-
-
-
13
-
-
-
-
-
-
-
-
14
-
-
-
-
-
-
-
-
15
-
-
-
-
-
-
-
-
Таблица 6total_zeros VLC таблица 1
TotalCoeffTotal_zeros
1
2
3
4
5
6
7
0
11
0101
00011
000001
000001
000001
000001
1
101
111
0101
00001
000000
000000
000000
2
100
110
0100
0101
0011
00001
00001
3
011
101
111
0100
0010
0011
0011
4
0011
100
110
111
111
0010
0010
5
010
011
101
110
110
101
11
6
0010
0100
100
101
101
11
011
7
00011
0011
011
0011
100
100
010
8
00010
0010
0011
100
011
011
10
9
000011
00001
0010
011
0001
010
0001
10
000010
0001
00010
0010
010
0001
-
11
000001
000001
00001
0001
00001
-
-
12
0000001
0000001
000001
000000
-
-
-
13
00000001
00000001
000000
-
-
-
-
14
000000001
0000000
-
-
-
-
-
15
000000000
-
-
-
-
-
-
TotalCoeffTotal_zeros
8
9
10
11
12
13
14
15
0
000001
00001
00001
0001
0001
001
01
1
1
000000
00000
00000
0000
0000
000
1
0
2
00001
0001
0001
001
01
1
00
-
3
0001
011
001
11
1
01
-
-
4
011
010
11
10
001
-
-
-
5
010
11
10
01
-
-
-
-
6
11
10
01
-
-
-
-
-
7
10
001
-
-
-
-
-
-
8
001
-
-
-
-
-
-
-
9
-
-
-
-
-
-
-
-
10
-
-
-
-
-
-
-
-
11
-
-
-
-
-
-
-
-
12
-
-
-
-
-
-
-
-
13
-
-
-
-
-
-
-
-
14
-
-
-
-
-
-
-
-
15
-
-
-
-
-
-
-
-
Модуль 52 комбинирования кода с переменной длиной последовательно комбинирует и выводит: код с переменной длиной, подаваемый из модуля 55 генерирования кода с переменной длиной coeff_token, код с переменной длиной, подаваемый из модуля 54 генерирования кода с переменной длиной Level, код с переменной длиной, подаваемый из модуля 56 генерирования кода с переменной длиной Total_zeros, и код с переменной длиной, подаваемый из модуля 51 генерирования кода с переменной длиной run_before.
На Фиг.8 показаны этапы процесса 100 CAVLC для кодирования уровня улучшения с крупной гранулярной масштабируемостью для масштабируемого кодирования видеосигнала (SVC) (CGS). На этапе 102 принимают данные изображения. Например, кодер 22 может принимать ортогонально преобразованный блок данных изображения. На этапе 104 определяют элементы синтаксиса. Например, элементы синтаксиса могут задавать кодирование в соответствии с коэффициентами в пределах блока данных изображения. На этапе 106 выполняют кодирование. Например, кодирование может быть выполнено путем адаптивного применения VLC таблиц для кодирования данных изображения. На этапе 108 выводят кодированный поток. Например, кодированный поток может быть выведен из видеокодера для обработки и передачи.
На Фиг.9 показаны этапы процесса 120 определения элементов синтаксиса и вывода кодированного потока. На этапе 122 определяют количество квантованных коэффициентов преобразования, имеющих абсолютное значение, большее 1 (NLrg1). Например, модуль 51 определения NLrg1 может определять это значение из введенного блока данных изображения. На этапе 124 определяют TotalCoeffs. Например, модуль 44 определения TotalCoeffs может рассчитывать количество коэффициентов преобразования в блоке данных изображения, которые не имеют значение =0.
На этапе 126 выполняют кодирование coeff_token в соответствии с NLrg1 и TotalCoeffs. Например, модуль 49 генерирования кода с переменной длиной coeff_token рассчитывает coeff_token как элемент синтаксиса из значения TotalCoeffs, рассчитанного модулем 55 определения TotalCoeffs, и выхода модуля 53 определения NLrg1. На этапе 128 выполняют кодирование уровня на основе количества коэффициентов, которые больше единицы в оставшихся коэффициентах. Например, модуль 54 генерирования кода уровня может выбирать VLC таблицу для кодирования уровня на основе количества коэффициентов, которые больше 1, в оставшихся коэффициентах, предназначенных для кодирования. На этапе 130 выполняют кодирование total_zeros в соответствии с оценкой. Например, модуль 56 генерирования total_zeros может адаптивно выбирать VLC таблицы на основе определенной оценки total_zeros, используя количество total_zeros в блоке выше и слева от текущего блока.
На этапе 132 выполняют кодирование run_before. Например, модуль 47 определения run_before может последовательно рассчитывать нулевые проходы в порядке обратного сканирования. На этапе 134 комбинируют коды с переменной длиной, определенные на этапах 126, 128, 130 и 132. На этапе 136 комбинированные коды выводят как кодированный поток. Например, кодированный поток может быть выведен из кодера 22.
Варианты осуществления, описанные здесь, могут быть реализованы в виде аппаратных средств, программных средств, встроенного программного обеспечения, межплатформного программного обеспечения, микрокода или любой их комбинации. Когда системы и/или способы осуществляются в программных средствах, в виде встроенного программного обеспечения, межплатформного программного обеспечения или микрокода, программного кода или сегментов кода, они могут быть сохранены на машиночитаемом носителе, таком как компонент накопителя. Сегмент кода может представлять собой процедуру, функцию, подпрограмму, программу, стандартную программу, стандартную подпрограмму, модуль, пакет программ, класс или любую комбинацию инструкций, структур данных, или операторов программирования. Сегмент кода может быть соединен с другим сегментом кода или аппаратной цепью путем передачи и/или приема информации, данных, аргументов, параметров или содержания запоминающего устройства. Информация, аргументы, параметры, данные и т.д. могут быть переданы, перенаправлены или отправлены с использованием любого соответствующего средства, включающего в себя совместное использование памяти, передачу сообщений, передачу маркера, передачу по сети и т.д.
Для варианта осуществления в виде программных средств описанные здесь методы могут быть реализованы с использованием модулей (например, процедур, функций и так далее), которые выполняют описанные здесь функции. Программные коды могут быть сохранены в ячейках памяти и могут выполняться с помощью процессора. Ячейки памяти могут быть реализованы внутри процессора или могут быть внешними для процессора, и в этом случае они могут быть соединены с процессором с возможностью обмена данными через различные средства, как известно в данной области техники.
Этапы способа или алгоритма, описанные в связи с раскрытыми здесь вариантами осуществления, могут быть осуществлены непосредственно в виде аппаратных средств, в виде программного модуля, выполняемого процессором, или в комбинации этих двух подходов. Программный модуль может находиться в оперативном запоминающем устройстве ("RAM"), запоминающем устройстве типа флэш, постоянном запоминающем устройстве ("ROM"), стираемом программируемом постоянном запоминающем устройстве ("EPROM"), электрически стираемом программируемом постоянном запоминающем устройстве ("EEPROM"), в регистрах, на жестком диске, съемном диске, в CD-ROM, или в любой другой форме носителя, известной в данной области техники. Примерный носитель информации соединен с процессором таким образом, что процессор может считывать информацию из, и записывать информацию на носитель информации. В качестве альтернативы, носитель информации может быть выполнен интегрально с процессором. Процессор и носитель информации могут быть построены на основе специализированной интегральной микросхемы ("ASIC"). ASIC может быть установлена в терминале пользователя. В качестве альтернативы, процессор и носитель информации могут постоянно находиться как дискретные компоненты в терминале пользователя.
Следует отметить, что способы, описанные здесь, могут быть осуществлены в различных аппаратных средствах, процессорах и системах, известных специалистам в данной области техники. Например, устройство, которое используется в варианте осуществления, может иметь дисплей для отображения содержания и информации, процессор для управления операциями клиента и запоминающее устройство для сохранения данных и программ, относящихся к работе устройства. В некоторых вариантах осуществления устройство представляет собой сотовый телефон. В некоторых вариантах осуществления устройство представляет собой портативный компьютер или телефонную трубку, обладающую возможностями связи. В еще одном варианте осуществления устройство представляет собой персональный компьютер, обладающий возможностями передачи данных.
Различные представленные в качестве иллюстрации логические элементы, логические блоки, модули и схемы, описанные в связи с раскрытыми здесь вариантами осуществления, могут быть реализованы или выполнены в процессоре общего назначения, DSP, ASIC, программируемой вентильной матрице (FPGA), или другом программируемом логическом устройстве на основе дискретных логических элементов или транзисторной логики, дискретных аппаратных компонентов или любой их комбинации, разработанной для выполнения описанных здесь функций. Процессор общего назначения может представлять собой микропроцессор, но, в качестве альтернативы, процессор может представлять собой любой обычный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован как комбинация вычислительных устройств, например комбинация DSP и микропроцессора, множества микропроцессоров, одного или больше микропроцессоров совместно с ядром DSP, или как любая другая подобная конфигурация.
Хотя объект изобретения был описан с использованием формулировок, специфичных для конструктивных свойств и/или методологических действий, следует понимать, что объект изобретения, определенный в приложенной формуле изобретения, не обязательно ограничен конкретными свойствами или действиями, описанными выше. Скорее, специфичные свойства и действия, описанные выше, раскрыты в качестве примеров осуществления формулы изобретения.