кодирование коэффициентов уточнения, основанное на предыстории соответствующих значений коэффициентов преобразования
Классы МПК: | H04N7/26 с использованием уменьшения ширины полосы частот H04N7/50 включающие преобразование и прогнозное кодирование |
Автор(ы): | КАРЧЕВИЧ Марта (US) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2007-10-11 публикация патента:
10.06.2011 |
Изобретение относится к цифровому видеокодированию и более конкретно к кодированию коэффициентов преобразования в улучшающих слоях схемы масштабируемого видеокодирования (SVC). Техническим результатом является повышение эффективности масштабируемого видеокодирования, основываясь на предыстории значений коэффициента преобразования. Указанный технический результат достигается тем, что используют оценку предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и оценку одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории. На стороне кодирования процесс кодирования может включать в себя исключение информации для одного или нескольких значений коэффициента уточнения из битового потока и сигнализирование декодеру, что такая информация исключена из битового потока. На стороне декодирования осуществляют синтаксический разбор битового потока для идентификации информации, которая сигнализирует декодеру, что информация исключена из битового потока, и генерирование такой информации, основываясь на предыстории, ассоциированной с одним или несколькими предыдущими слоями схемы SVC. 5 н. и 20 з.п ф-лы, 11 ил., 2 табл.
Формула изобретения
1. Способ кодирования коэффициентов уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC), причем способ содержит этапы, на которых: оценивают предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; и оценивают каждое из одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, как нулевые или ненулевые, основываясь на предыстории; определяют первый поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0, каждый из коэффициентов уточнения типа 0 имеет оцененное нулевое значение; и определяют второй поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, каждый из коэффициентов уточнения типа 1 имеет оцененное ненулевое значение; при этом информация, указывающая значения коэффициентов уточнения типа 0, исключена из закодированного битового потока и информация, указывающая значения коэффициентов уточнения типа 1, включена в закодированный битовый поток, и при этом информация, указывающая значения коэффициентов уточнения типа 0, выводится, основываясь на предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC.
2. Способ по п.1, в котором процесс кодирования содержит закодирование, причем способ дополнительно содержит этап, на котором исключают информацию для оцененных значений коэффициента уточнения из закодированного битового потока.
3. Способ по п.2, дополнительно содержащий этап, на котором сигнализируют декодеру, что информация для оцененных значений коэффициента уточнения исключена из закодированного битового потока, как определено посредством оценки предыстории.
4. Способ по п.1, в котором, если закодированный битовый поток не имеет информации для оцененных значений коэффициента уточнения, закодированный битовый поток декодируют для генерации оцененных значений коэффициента уточнения.
5. Способ по п.4, дополнительно содержащий этап, на котором принимают сигнал, указывающий, что информация для оцененных значений коэффициента уточнения исключена из закодированного битового потока, как определено посредством оценки предыстории.
6. Способ по п.1, в котором кодирование коэффициентов уточнения улучшающего слоя содержит кодирование коэффициентов уточнения n-го слоя схемы SVC, в котором этап оценки предыстории содержит этап, на котором определяют, имели ли значения коэффициента уточнения, ассоциированные с (n-1)-м слоем схемы SVC, ненулевые значения, и в котором этап оценки одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем, содержит этап, на котором назначают значения нуля коэффициентам n-го слоя, для которых соответствующие коэффициенты (n-1)-го слоя имели ненулевые значения.
7. Способ по п.1, в котором этап оценки предыстории содержит этап, на котором назначают индексные значения коэффициентам уточнения текущего слоя, причем индексные значения зависят от соответствующих значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; и в котором этап оценки одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, содержит этап, на котором назначают значения нуля коэффициентам уточнения текущего слоя, которые имеют индексные значения, которые соответствуют одному или нескольким заданным индексным значениям.
8. Способ по п.1, в котором процесс кодирования содержит закодирование, причем способ дополнительно содержит этапы, на которых: включают информацию для коэффициентов уточнения типа 1 в закодированный битовый поток и исключают информацию для коэффициентов уточнения типа 0 в закодированном битовом потоке.
9. Способ по п.1, дополнительно содержит этапы, на которых: декодируют информацию для коэффициентов уточнения типа 1 из закодированного битового потока и генерируют информацию для коэффициентов уточнения типа 0, причем информация для коэффициентов уточнения типа 0 исключена из закодированного битового потока.
10. Устройство, кодирующее коэффициенты уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC), причем устройство содержит: модуль предыстории, который оценивает предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, определяет первый поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0, каждый из коэффициентов уточнения типа 0 имеет оцененное нулевое значение;
и определяет второй поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, каждый из коэффициентов уточнения типа 1 имеет оцененное ненулевое значение; и модуль процесса кодирования, который оценивает каждый из одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC как нулевое или ненулевое, основываясь на предыстории, при этом информация, указывающая значения коэффициентов уточнения типа 0, исключена из закодированного битового потока и информация, указывающая значения коэффициентов уточнения типа 1, включена в закодированный битовый поток, и при этом информация, указывающая значения коэффициентов уточнения типа 0, выводится, основываясь на предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC.
11. Устройство по п.10, в котором модуль процесса кодирования содержит модуль закодирования, в котором модуль закодирования исключает информацию для оцененных значений коэффициента уточнения из закодированного битового потока.
12. Устройство по п.11, в котором модуль процесса кодирования генерирует сигнал для указания того, что информация для оцененных значений коэффициента уточнения исключена из закодированного битового потока, как определено посредством оценки предыстории.
13. Устройство по п.10, в котором модуль процесса кодирования содержит модуль декодирования, который декодирует закодированный битовый поток, причем закодированный битовый поток не имеет информации для оцененных значений коэффициента уточнения и при этом модуль декодирования генерирует оцененные значения коэффициента уточнения.
14. Устройство по п.13, в котором модуль процесса кодирования принимает сигнал, указывающий, что информация для оцененных значений коэффициента уточнения исключена из закодированного битового потока, как определено посредством оценки предыстории.
15. Устройство по п.10, в котором модуль процесса кодирования кодирует коэффициенты уточнения n-го слоя схемы SVC, в котором модуль предыстории определяет, имели ли значения коэффициента уточнения, ассоциированные с (n-1)-м слоем схемы SVC, ненулевые значения, и в котором модуль процесса кодирования назначает значения нуля коэффициентам n-го слоя, для которого соответствующие коэффициенты (n-1)-го слоя имели ненулевые значения.
16. Устройство по п.10, в котором модуль предыстории назначает индексные значения коэффициентам уточнения текущего слоя, причем индексные значения зависят от соответствующих значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; и в котором модуль процесса кодирования назначает значения нуля коэффициентам уточнения текущего слоя, которые имеют индексные значения, которые соответствуют одному или нескольким заданным индексным значениям.
17. Устройство по п.10, в котором модуль процесса кодирования содержит модуль закодирования, в котором: модуль закодирования включает в себя информацию для коэффициентов уточнения типа 1 в кодированный битовый поток и исключает информацию для коэффициентов уточнения типа 0 в закодированном битовом потоке.
18. Устройство по п.10, в котором модуль процесса кодирования содержит модуль декодирования, в котором: модуль декодирования декодирует информацию для коэффициентов уточнения типа 1 из закодированного битового потока и генерирует информацию для коэффициентов уточнения типа 0, причем информация для коэффициентов уточнения типа 0 исключена из закодированного битового потока.
19. Устройство по п.10, при этом устройство является устройством беспроводной передачи данных.
20. Машиночитаемый носитель, содержащий инструкции, которые при исполнении в устройстве видеокодирования побуждают устройство выполнять кодирование коэффициентов уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC), причем инструкции побуждают устройство выполнять: оценку предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; и оценку каждого из одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, как нулевые или ненулевые, основываясь на предыстории, определяют первый поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0, каждый из коэффициентов уточнения типа 0 имеет оцененное нулевое значение; и определяют второй поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, каждый из коэффициентов уточнения типа 1 имеет оцененное ненулевое значение; при этом информация, указывающая значения коэффициентов уточнения типа 0, исключена из закодированного битового потока и информация, указывающая значения коэффициентов уточнения типа 1, включена в закодированный битовый поток, и при этом информация, указывающая значения коэффициентов уточнения типа 0, выводится, основываясь на предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC.
21. Машиночитаемый носитель по п.20, в котором инструкции побуждают устройство выполнять закодирование коэффициентов уточнения улучшающего слоя и в котором инструкции вызывают исключение устройством информации для оцененных значений коэффициента уточнения из закодированного битового потока.
22. Машиночитаемый носитель по п.21, в котором инструкции побуждают устройство выполнять включение сигнала в закодированный битовый поток, указывающий, что информация для оцененных значений коэффициента уточнения исключена из закодированного битового потока, как определено посредством оценки предыстории.
23. Машиночитаемый носитель по п.21, в котором инструкции побуждают устройство выполнять закодирование коэффициентов уточнения улучшающего слоя и в котором инструкции побуждают устройство выполнять: включение информации для коэффициентов уточнения типа 1 в закодированный битовый поток и исключение информации для коэффициентов уточнения типа 0 в закодированном битовом потоке.
24. Устройство, кодирующее коэффициенты уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC), причем устройство содержит: средство для оценки предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; средство для кодирования, которое оценивает каждое из одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC как нулевые или ненулевые, основываясь на предыстории; средство для определения первого поднабора коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0, каждый из коэффициентов уточнения типа 0 имеет оцененное нулевое значение;
и средство для определения второго поднабора коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, каждый из коэффициентов уточнения типа 1 имеет оцененное ненулевое значение; при этом информация, указывающая значения коэффициентов уточнения типа 0, исключена из закодированного битового потока и информация, указывающая значения коэффициентов уточнения типа 1, включена в закодированный битовый поток, и при этом информация, указывающая значения коэффициентов уточнения типа 0, выводится, основываясь на предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC.
25. Схема для кодирования коэффициентов уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC), причем схема содержит средство для оценки предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC; и средство для оценки каждого из одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, как нулевые или ненулевые, основываясь на предыстории; средство для определения первого поднабора коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0, каждый из коэффициентов уточнения типа 0 имеет оцененное нулевое значение; и средство для определения второго поднабора коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, каждый из коэффициентов уточнения типа 1 имеет оцененное ненулевое значение; при этом информация, указывающая значения коэффициентов уточнения типа 0, исключена из закодированного битового потока и информация, указывающая значения коэффициентов уточнения типа 1, включена в закодированный битовый поток, и при этом информация, указывающая значения коэффициентов уточнения типа 0, выводится, основываясь на предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC.
Описание изобретения к патенту
Настоящая заявка испрашивает приоритет на основании следующих предварительных заявок США, все содержимое которых включено в данный документ путем ссылки:
предварительная заявка США № 60/829274, поданная 12 октября 2006 г.,
предварительная заявка США № 60/883741, поданная 5 января 2007 г., и
предварительная заявка США № 60/829276, поданная 12 октября 2006 г.
Область техники, к которой относится изобретение
Настоящее описание относится к цифровому видеокодированию и более конкретно - к кодированию коэффициентов преобразования в улучшающих слоях схемы масштабируемого видеокодирования (SVC).
Уровень техники
Возможности цифровых видеоданных могут быть включены в широкий спектр устройств, включая цифровые телевизоры, цифровые системы непосредственного широковещания, устройства беспроводной связи, беспроводные широковещательные системы, карманные персональные компьютеры (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, видеоигровые устройства, видеоигровые приставки, сотовые или спутниковые радиотелефоны и тому подобное. Цифровые видеоустройства реализуют методы сжатия видеоданных, такие как MPEG-2 (Экспертной группы по видеоизображению), MPEG-4 или H.264/MPEG-4, Part 10, Advanced Video Coding (AVC) (усовершенствованное видеокодирование), для более эффективной передачи и приема цифровых видеоданных. Методы сжатия видеоданных выполняют пространственное и временное прогнозирование для уменьшения или устранения избыточности, присущей видеопоследовательностям.
При видеокодировании сжатие видеоданных часто включает в себя пространственное прогнозирование, оценку движения и компенсацию движения. Внутреннее кодирование основывается на пространственном прогнозировании для уменьшения или устранения пространственной избыточности между видеоблоками в данном видеокадре. Внешнее кодирование основывается на временном прогнозировании для уменьшения или устранения временной избыточности между видеоблоками последовательных видеокадров видеопоследовательности. Для внешнего кодирования видеокодер выполняет оценку движения для отслеживания движения соответствующих видеоблоков между двумя или более соседними кадрами. Оценка движения генерирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих видеоблоков прогнозирования в одном или нескольких опорных кадрах. Компенсация движения использует векторы движения для генерирования видеоблоков прогнозирования из опорного кадра. После компенсации движения остаточный видеоблок формируется путем вычитания видеоблока прогнозирования из исходного видеоблока, подлежащего кодированию.
Видеокодер обычно применяет процессы преобразования, квантования и кодирования коэффициентов преобразования, чтобы дополнительно уменьшить скорость передачи битов, ассоциированную с передачей остаточного блока. Кодирование коэффициентов преобразования остаточных блоков, например, может включать в себя кодирование с переменной длиной кодов (VLC) или другие процессы кодирования, чтобы дополнительно сжать остаточные коэффициенты, создаваемые операциями преобразования и квантования. Например, таблица VLC может использоваться для сопоставления различных наборов коэффициентов с кодовыми словами переменной длины таким способом, который способствует эффективному кодированию. Различные таблицы VLC могут использоваться для различного видеоконтента. В качестве альтернативы, остаточные коэффициенты могут кодироваться в качестве структур коэффициентов, например структур кодированных блоков. В любом случае видеодекодер выполняет обратные операции для восстановления коэффициентов и затем выполняет обратное преобразование коэффициентов для восстановления видеоинформации. Видеодекодер может декодировать видеоинформацию, основываясь на информации о движении и остаточной информации, ассоциированной с видеоблоками.
Некоторые типы видеокодирования используют масштабируемые методы. Например, масштабируемое видеокодирование (SVC) относится к видеокодированию, в котором используется базовый слой и один или несколько масштабируемых улучшающих слоев. Для SVC базовый слой обычно переносит видеоданные с базовым уровнем качества. Один или несколько улучшающих слоев переносят дополнительные видеоданные для поддержки более высоких пространственных, временных уровней и/или уровней SNR (отношение сигнал-шум). Базовый слой может передаваться таким способом, который является более надежным, чем передача улучшающих слоев. Улучшающие слои могут добавлять пространственное разрешение кадрам базового слоя или могут добавлять дополнительные кадры для повышения общей частоты кадров. В одном примере, наиболее надежные части модулированного сигнала могут использоваться для передачи базового слоя, тогда как менее надежные части модулированного сигнала могут использоваться для передачи улучшающих слоев. Улучшающие слои могут определять различные типы коэффициентов преобразования, упоминаемые как значимые коэффициенты и коэффициенты уточнения.
Раскрытие изобретения
Настоящее раскрытие в общем описывает методы кодирования коэффициентов уточнения улучшающего слоя в схеме масштабируемого видеокодирования (SVC). Коэффициенты уточнения относятся к коэффициентам улучшающего слоя, для которых соответствующие коэффициенты предыдущего слоя, то есть или базового слоя, или предыдущего улучшающего слоя, в схеме SVC имели ненулевые значения. В противоположность этому значимые коэффициенты относятся к коэффициентам улучшающего слоя, для которого соответствующие коэффициенты предыдущего слоя в схеме SVC имели значения нуля. Кодирование коэффициентов уточнения может выполняться отдельно от кодирования значимых коэффициентов, хотя методы настоящего описания также могут применяться, если коэффициенты уточнения кодируются со значимыми коэффициентами. Термин «коэффициент преобразования» в контексте настоящего документа означает как коэффициенты уточнения, так и значимые коэффициенты.
Согласно методам настоящего описания некоторые из значений коэффициента уточнения могут исключаться из битового потока, который передается с устройства кодирования на устройство декодирования с целью передачи видеоданных или мультимедийного контента. Значения таких коэффициентов уточнения могут выводиться в декодере, основываясь на предыстории, ассоциированной с этими коэффициентами уточнения. В частности, для данного типа видеоблока может быть определено, что значения некоторых из коэффициентов уточнения имеют высокую вероятность быть равными нулю, основываясь на предыстории, ассоциированной с этими коэффициентами уточнения, то есть предыстории соответствующих коэффициентов преобразования предыдущих слоев схемы SVC. В данном случае значения для этих коэффициентов уточнения могут исключаться из битового потока, так как значения могут быть выведены в декодере.
В одном примере настоящее описание обеспечивает способ кодирования коэффициентов уточнения улучшающего слоя в схеме SVC, причем способ содержит этап, на котором оценивают предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и оценивают одно или несколько значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
В другом примере настоящее описание обеспечивает устройство, которое кодирует коэффициенты уточнения улучшающего слоя в схеме SVC, причем устройство содержит модуль предыстории, который оценивает предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и модуль кодирования, который оценивает одно или несколько значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
В другом примере настоящее описание обеспечивает устройство, которое кодирует коэффициенты уточнения улучшающего слоя в схеме SVC, причем устройство содержит средство для оценки предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и средство для кодирования, которое оценивает одно или несколько значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
Методы, описанные в настоящем описании, могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. Если они реализованы программными средствами, программные средства могут исполняться в одном или нескольких процессорах, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая вентильная матрица (FPGA) или процессор цифровой обработки сигналов (DSP). Программные средства, которые исполняют методы, могут исходно храниться на машиночитаемом носителе и загружаться и исполняться в процессоре.
Следовательно, настоящее описание также предусматривает машиночитаемый носитель, содержащий инструкции, которые при исполнении в устройстве видеокодирования побуждают устройство выполнять кодирование коэффициентов уточнения улучшающего слоя в схеме SVC, причем инструкции побуждают устройство выполнять оценку предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и оценку одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
В некоторых случаях машиночитаемый носитель может составлять часть компьютерного программного продукта, который может продаваться изготовителям и/или использоваться в устройстве видеокодирования. Компьютерный программный продукт может включать в себя машиночитаемый носитель и в некоторых случаях также может включать в себя упаковочные материалы.
В другом примере настоящее описание может относиться к схеме, выполненной с возможностью кодирования коэффициентов уточнения улучшающего слоя в схеме SVC, причем схема выполнена с возможностью оценки предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и оценки одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
Подробности одного или нескольких аспектов описания приведены на сопровождающих чертежах и в нижеследующем описании. Другие признаки, задачи и преимущества методов, описанных в настоящем описании, очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
Фиг.1А и 1В представляют собой схемы отображения, которые иллюстрируют возможные значения коэффициента уточнения, основанные на предыстории соответствующих коэффициентов преобразования в различных слоях схемы масштабируемого видеокодирования (SVC).
Фиг.2 представляет собой примерную блок-схему, иллюстрирующую систему видеокодирования и видеодекодирования.
Фиг.3 представляет собой концептуальную схему, иллюстрирующую видеокадры базового слоя и улучшающего слоя масштабируемого битового потока видеоданных.
Фиг.4 представляет собой блок-схему, иллюстрирующую пример видеокодера, соответствующего настоящему описанию.
Фиг.5 представляет собой блок-схему, иллюстрирующую пример видеодекодера, соответствующего настоящему описанию.
Фиг.6 представляет собой примерную блок-схему узла закодирования коэффициентов, соответствующего настоящему описанию.
Фиг.7 представляет собой примерную блок-схему узла декодирования коэффициентов, соответствующего настоящему описанию.
Фиг.8 представляет собой блок-схему последовательности операций, иллюстрирующую метод кодирования для кодирования коэффициентов уточнения, соответствующий настоящему описанию.
Фиг.9 представляет собой блок-схему последовательности операций, иллюстрирующую методы закодирования и передачи информации о коэффициентах уточнения, соответствующие настоящему описанию.
Фиг.10 представляет собой блок-схему последовательности операций, иллюстрирующую методы приема и декодирования информации о коэффициентах уточнения, соответствующие настоящему описанию.
Осуществление изобретения
Настоящее описание описывает методы кодирования коэффициентов уточнения улучшающих слоев в схеме масштабируемого видеокодирования (SVC). Коэффициенты уточнения относятся к коэффициентам преобразования улучшающего слоя, для которых соответствующие коэффициенты предыдущего слоя в схеме SVC имели ненулевые значения. В противоположность этому значимые коэффициенты относятся к коэффициентам преобразования улучшающего слоя, для которых соответствующие коэффициенты предыдущего слоя в схеме SVC имели значения нуля. Термин «коэффициент преобразования» в контексте настоящего документа означает как коэффициенты уточнения, так и значимые коэффициенты и в общем означает коэффициенты, генерируемые процессом преобразования, таким как дискретное косинусное преобразование (DCT). Кодирование коэффициентов уточнения может выполняться отдельно от кодирования значимых коэффициентов. Кодирование коэффициентов уточнения и значимых коэффициентов обычно включает в себя методологию кодирования с переменной длиной кодов (VLC), в которой различные наборы коэффициентов отображаются на коды с переменной длиной в таблице VLC.
Согласно методам настоящего описания информация, указывающая некоторые значения коэффициента уточнения, может исключаться из битового потока, который передается с устройства кодирования на устройство декодирования с целью передачи видео- или мультимедийного контента. Значения для таких исключенных коэффициентов уточнения могут выводиться в декодере, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования. В частности, для данного типа видеоблока может быть определено, что значения некоторых коэффициентов уточнения имеют высокую вероятность быть равными нулю, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования. В данном случае информация, указывающая значения для этих коэффициентов уточнения, может быть исключена из битового потока, так как значения могут быть выведены в декодере. Коэффициенты уточнения, для которых может быть определено, что они имеют высокую вероятность быть равными нулю, основываясь на предыстории, названы в настоящем документе коэффициентами типа 0, тогда как другие коэффициенты уточнения названы в настоящем документе коэффициентами типа 1.
Устройство кодирования может закодировать сигнал, чтобы инструктировать устройство декодирования для вывода некоторых коэффициентов уточнения, основываясь на предыстории. Такой сигнал может быть простым как однобитовый или многобитовый заголовок для кадра или видеоблока, который инструктирует устройство декодирования для вывода коэффициентов уточнения, например для макроблока конкретного типа, как, например, для блоков с внутренним кодированием. Кодер и декодер могут выполнять взаимно обратные способы процесса кодирования (закодирование и декодирование), в которых оценивается предыстория коэффициентов преобразования для определения, может ли быть исключена информация о коэффициентах уточнения из битового потока кодером и может ли она быть выведена в декодере. Устройство закодирования может посылать информацию на устройство декодирования, указывая, что для некоторого типа кадра или типа макроблока вследствие используемого квантования значительное большинство уровней уточнения, выполняющих некоторые критерии, будет равно 0 (коэффициенты уточнения типа 0). Кроме того, устройство закодирования может сигнализировать устройству декодирования, что равны нулю или не равны нулю все уровни коэффициентов типа 0 в некоторой области, например в блоке или макроблоке. В некоторых случаях может предполагаться, что все коэффициенты типа 0 равны 0. Кроме того, устройство закодирования может сигнализировать устройству декодирования критерии, которые могут использоваться для различения между коэффициентами типа 0 и типа 1, например значения предыстории h (описанной ниже), для которой коэффициенты могут быть определены как коэффициенты типа 0.
Фиг.1А и 1В представляют собой схемы отображения, которые иллюстрируют возможные значения для коэффициентов уточнения, основываясь на предыстории соответствующих коэффициентов преобразования на различных слоях схемы масштабируемого видеокодирования (SVC). Фиг.1А и 1В изображают возможные значения коэффициентов преобразования базового слоя и 1-го, 2-го и 3-го FGS улучшающих слоев (также называемых FGS-слоями). FGS представляет масштабируемость отношения сигнал-шум тонкой гранулярности и объясняется более подробно ниже.
Предыстория любого коэффициента уточнения может отслеживаться по предыдущим коэффициентам преобразования (которыми могут быть коэффициенты уточнения или значимые коэффициенты) предыдущих слоев. На фиг.1А заштрихованная серая область 1-го, 2-го и 3-го FGS улучшающих слоев определяет значимые коэффициенты, которые имеют значения нуля. Также каждая пара коэффициентов по обеим сторонам закрашенной серой области (фиг.1А) 1-го, 2-го и 3-го FGS улучшающих слоев представляет собой значимые коэффициенты, насколько все предыдущие слои определяли значения нуля для этого коэффициента. Все другие незакрашенные области на фиг.1А соответствуют коэффициентам уточнения, для которых соответствующий коэффициент по меньшей мере одного предыдущего слоя определял ненулевое значение для этого коэффициента.
Схемы отображения на фиг.1А и 1В могут соответствовать конкретному параметру {f) зоны нечувствительности. Так называемый параметр зоны нечувствительности обычно определяется как:
f=Q/x,
где Q представляет размер-шаг квантования, и х представляет постоянную для видеоблока данного типа. В стандарте Международного союза электросвязи - сектора телекоммуникаций ITU Н.264 f=Q/3 для блоков с внутренним кодированием и f=Q/6 для блоков с внешним кодированием. Основываясь на этом наблюдении, различные схемы отображения (подобно схемам на фиг.1А и 1В) могут быть созданы для блоков с внутренним кодированием и блоков с внешним кодированием.
Схемы отображения по фиг.1А и 1В соответствуют f=Q/3. Поэтому в данном примере, как применимо к Н.264, схемы отображения на фиг.1А и 1В могут соответствовать блокам с внутренним кодированием. В данном случае, если устройство кодера кодирует сигнал для указания, что одно или несколько значений коэффициента уточнения исключены из кодированного битового потока, устройство декодера может вывести такие значения, основываясь на предыстории, например, посредством применения схемы отображения, подобной той, которая показана на фиг.1А и 1В.
Параметр зоны нечувствительности (f=Q/3) показан на фиг.1А, но Q (размер шага квантования) обозначен как на фиг.1А. На фиг.1А также обозначены расположения некоторых порогов принятия решения и расположения некоторых значений r n восстановления. Каждый коэффициент уточнения определяется относительно предыдущего слоя и может иметь значение -1, 0 или 1. Это также изображено на фиг.1А как возможные значения c 2. Каждый сплошной треугольник между порогами принятия решения представляет возможное значение для данного коэффициента преобразования. Особенно, однако, в некоторых случаях, показанных на фиг.1А и 1В, единственно возможным (или вероятным) значением для коэффициента уточнения (при заданной предыдущей предыстории) является значение нуля. В этих случаях настоящее описание предлагает исключить кодирование коэффициента уточнения в кодере и сделать возможным вывод коэффициента уточнения в декодере.
Фиг.1В конкретно обозначает некоторые различные возможности для некоторых коэффициентов уточнения. В области 104 имеется три возможных значения коэффициента уточнения для 3-го FGS слоя относительно 2-го, FGS слоя, т.е. -1, 0 и 1. В данном случае соответствующим значением коэффициента преобразования в базовом слое был 0, соответствующим значением коэффициента преобразования в 1-ом FGS слое была 1 и соответствующим значением коэффициента преобразования во 2-ом FGS слое был 0. При данной предыстории кодер и декодер могут знать, что имеется три возможных значения коэффициента уточнения для 3-го FGS слоя относительно 2-го FGS слоя, т.е. -1, 0 и 1.
В области 105 также имеется три возможных значения коэффициента уточнения для 2-го FGS слоя относительно 1-го FGS слоя, т.е. -1, 0 и 1. В данном случае соответствующим значением коэффициента преобразования в базовом слое была 1, а соответствующим значением коэффициента преобразования в 1-ом FGS слое был 0. При данной предыстории кодер и декодер могут знать, что имеется три возможных значения коэффициента уточнения для 2-го FGS слоя относительно 1-го FGS слоя, т.е. -1, 0 и 1.
Области 101, 102 и 103 иллюстрируют сценарии, в которых кодер и декодер знают (основываясь на предыстории соответствующих коэффициентов преобразования), что коэффициент уточнения будет иметь высокую вероятность того, что он равен нулю. Это можно видеть в областях 101, 102 и 103, поскольку имеется только одно возможное значение коэффициента для n-го слоя относительно (n-1)-го слоя.
В области 101, например, имеется одно возможное значение коэффициента уточнения для 2-го FGS слоя относительно 1-го FGS слоя, т.е. 0. В данном случае соответствующим значением коэффициента преобразования в базовом слое была -1, а соответствующим значением коэффициента преобразования в 1-ом FGS слое была -1. При данной предыстории кодер и декодер могут знать, что имеется одно возможное значение коэффициента уточнения для 2-го FGS слоя относительно 1-го FGS слоя, т.е. 0. В данном случае вероятность того, что коэффициент уточнения фактически равен нулю, очень высокая и может быть предположена на декодере.
В области 102 также имеется одно возможное значение коэффициента уточнения для 3-го FGS слоя относительно 2-го FGS слоя, т.е. 0. В данном случае соответствующим значением коэффициента преобразования в базовом слое была -1, соответствующим значением коэффициента преобразования в 1-ом FGS слое был 0, и соответствующим значением коэффициента преобразования во 2-ом FGS слое была -1. При данной предыстории кодер и декодер могут знать, что имеется одно возможное значение коэффициента уточнения для 3-го FGS слоя относительно 2-го FGS слоя, т.е. 0. В данном случае вероятность того, что коэффициент уточнения фактически равен нулю, очень высокая и может быть предположена на декодере.
В области 103 также имеется одно возможное значение коэффициента уточнения для 3-го FGS слоя относительно 2-го FGS слоя, т.е. 0. В данном случае соответствующим значением коэффициента преобразования в базовом слое была -1, соответствующим значением коэффициента преобразования в 1-ом FGS слое был 0, и соответствующим значением коэффициента преобразования во 2-ом FGS слое была 1. При данной предыстории кодер и декодер могут знать, что имеется одно возможное значение коэффициента уточнения для 3-го FGS слоя относительно 2-го FGS слоя, т.е. 0. В данном случае вероятность того, что коэффициент уточнения фактически равен нулю, очень высокая и может быть предположена на декодере.
Вкратце, для данного уровня квантования и/или параметра зоны нечувствительности вероятное значение для коэффициента уточнения может ограничиваться 0 (или, возможно, другим значением) во многих случаях. Эти случаи могут быть определены на основе предыстории соответствующего коэффициента преобразования в предыдущих слоях. Кроме того, тип квантования и/или параметр нечувствительной зоны, используемый при закодировании, могут быть определены типом кодируемого видеоблока, например с внутренним кодированием (I) или с внешним кодированием (Р или В). Кодер может исключить такие значения коэффициента уточнения из закодированного битового потока и может, возможно, сигнализировать декодеру, что такая информация исключена для одного или нескольких типов видеоблоков. Декодер может генерировать исключенную информацию, основываясь на предыстории, ассоциированной с данным коэффициентом уточнения, например значениях соответствующих коэффициентов преобразования, ассоциированных с данным коэффициентом уточнения. Таким образом может повышаться эффективность кодирования. В некоторых случаях предыстория может не отражать фактические значения коэффициента уточнения, которые генерируются, например, из-за ошибок квантования, но такие случае редкие и не должны ухудшать качество видеоданных на какую-либо существенную величину.
Фиг.2 представляет собой блок-схему, иллюстрирующую систему 10 видеокодирования и видеодекодирования. Как показано на фиг.2, система 10 включает в себя устройство 2 источника, которое передает закодированные видеоданные на устройство 6 приема по каналу 15 связи. Устройство 2 источника может включать в себя источник 11 видеоданных, видеокодер 12 и модулятор/передатчик 14. Устройство 6 приема может включать в себя приемник/демодулятор 16, видеодекодер 18 и устройство 20 отображения. Система 10 может быть выполнена с возможностью применения методов кодирования коэффициентов преобразования, описанных в настоящем документе, при которых значения одного или нескольких коэффициентов уточнения исключаются из передаваемого битового потока и выводятся в устройстве 6 приема, основываясь на предыстории.
Масштабируемое видеокодирование (SVC) ссылается на видеокодирование, при котором используется базовый слой и один или несколько масштабируемых улучшающих слоев. Для SVC базовый слой обычно переносит видеоданные с базовым уровнем качества. Один или несколько улучшающих слоев переносят дополнительные видеоданные для поддержки более высоких пространственных, временных уровней и/или уровней сигнал-шум SNR. Улучшающие слои могут быть определены относительно предыдущего закодированного слоя. Улучшающие слои определяют по меньшей мере два различных типа коэффициентов, упоминаемых как значимые коэффициенты и коэффициенты уточнения. Коэффициенты уточнения могут определять значения относительно соответствующих значений предыдущего закодированного слоя. Кадры улучшающих слоев иногда включают в себя только часть от общего количества видеоблоков в базовом слое или предыдущем улучшающем слое, например только те блоки, для которых выполняется улучшение.
Значимые коэффициенты ссылаются на коэффициенты, для которых соответствующие коэффициенты в предыдущих слоях имели значения нуля. Коэффициенты уточнения ссылаются на коэффициенты, для которых соответствующие коэффициенты в предыдущем слое имели ненулевые значения. Кодирование коэффициентов преобразования обычно включает в себя методологию кодирования с переменной длиной кода (VLC), при которой различные наборы коэффициентов отображаются на коды с переменной длиной в таблице VLC. Кодирование с переменной длиной кодов улучшающих слоев обычно включает в себя двухпроходный подход. Первый проход выполняется для кодирования с переменной длиной кодов значимых коэффициентов, и другой проход выполняется для кодирования с переменной длиной кодов коэффициентов уточнения. Методы настоящего описания особенно полезны для кодирования с переменной длиной кодов коэффициентов уточнения.
В примере по фиг.2 канал 15 передачи данных может содержать любую беспроводную или проводную среду передачи данных, такую как радиочастотный (РЧ) спектр, или одну или несколько физических линий передачи, или любую комбинацию беспроводных и проводных сред. Канал 15 передачи данных может формировать часть пакетной сети, такой как локальная сеть, региональная сеть или глобальная сеть, такая как Интернет. Канал 15 передачи данных в основном представляет любую подходящую среду передачи данных или совокупность различных сред передачи данных для передачи видеоданных с устройства 2 источника на устройство 6 приема.
Устройство 2 источника генерирует кодированные видеоданные для передачи на устройство 6 приема. В некоторых случаях, однако, устройства 2 и 6 могут работать, по существу, симметричным образом. Например, каждое из устройств 2, 6 может включать в себя компоненты видеокодирования и видеодекодирования. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видеоданных между видеоустройствами 2, 6, например, для потоковой передачи видеоданных, видеовещания или видеотелефонии.
Источник 11 видеоданных устройства 2 источника может включать в себя устройство захвата видеоданных, такое как видеокамера, видеоархив, содержащий ранее захваченные видеоданные, или внешний видеосигнал от провайдера видеоконтента. В качестве другой альтернативы источник 11 видеоданных может генерировать данные, основанные на компьютерной графике, в качестве видеоданных источника или комбинации видеоданных в реальном времени и сгенерированные компьютером видеоданные. В некоторых случаях если источник 11 видеоданных представляет собой видеокамеру, устройство 2 источника и устройство 6 приема могут образовывать так называемые камерофоны или видеотелефоны. В каждом случае захваченное, предварительно захваченные или сгенерированные компьютером видеоданные могут кодироваться видеокодером 12 для передачи с устройства 2 источника видеоданных на видеодекодер 18 устройства 6 приема видеоданных через модулятор/передатчик 14, канал 15 передачи данных и приемник/демодулятор 16. Процессы видеокодирования и видеодекодирования могут реализовывать методы настоящего описания для уменьшения количества данных, ассоциированных с передачей коэффициентов уточнения, основываясь на выводе коэффициентов типа 0 на устройстве 6 приема. Устройство 20 отображения отображает декодированные видеоданные пользователю и может содержать любое из многочисленных устройств отображения, таких как электронно-лучевая трубка, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
Видеокодер 12 и видеодекодер 18 могут быть выполнены с возможностью поддержки SVC для пространственной, временной масштабируемости и/или масштабируемости отношения сигнал-шум (SNR). В некоторых аспектах видеокодер 12 и видеодекодер 18 могут быть выполнены с возможностью поддержки кодирования масштабируемости SNR тонкой гранулярности (FGS) для SVC. Кодер 12 и декодер 18 могут поддерживать различные степени масштабируемости посредством поддержки закодирования, передачи и декодирования базового слоя и одного или нескольких масштабируемых улучшающих слоев. Снова для масштабируемого видеокодирования базовый слой переносит видеоданные с базовым уровнем качества. Один или несколько улучшающих слоев переносят дополнительные данные для поддержки более высоких пространственных, временных уровней и/или уровней SNR. Базовый слой может передаваться таким образом, который является более надежным, чем передача улучшающих слоев. Например, наиболее надежные части модулированного сигнала могут использоваться для передачи базового слоя, тогда как менее надежные части модулированного сигнала могут использоваться для передачи улучшающих слоев.
Для поддержки SVC видеокодер 12 может включать в себя кодер 22 базового слоя и один или несколько кодеров 24 улучшающего слоя для выполнения закодирования базового слоя и одного или нескольких улучшающих слоев соответственно. Методы настоящего описания, которые включают в себя закодирование коэффициентов улучшения, применимы к закодированию видеоблоков улучшающих слоев в SVC. Более конкретно, методы настоящего описания могут быть применимы к VLC коэффициентов уточнения видеоблоков улучшающих слоев, хотя настоящее описание необязательно ограничивается в данном отношении. Согласно настоящему описанию информация, указывающая выводимые коэффициенты типа 0, исключается из битового потока, и VLC применяется только в отношении коэффициентов типа 1. Значения коэффициентов типа 0 генерируются в декодере.
Видеодекодер 18 может включать в себя объединенный базовый/улучшающий декодер, который декодирует видеоблоки, ассоциированные как с базовым, так и улучшающим слоями, и объединяет декодируемые видеоданные для восстановления кадров видеопоследовательности. Устройство 20 отображения принимает декодируемую видеопоследовательность и представляет видеопоследовательность пользователю.
Видеокодер 12 и видеодекодер 18 могут работать по стандарту сжатия видеоданных, такому как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Part 10, Advance Video Coding (AVC). Хотя и не показано на фиг.2, в некоторых аспектах видеокодер 12 и видеодекодер 18 каждый может интегрироваться со звуковым кодером и декодером соответственно и может включать в себя соответствующие узлы MUX-DEMUX (мультиплексора-демультиплексора) или другие аппаратные и программные средства для обработки закодирования как звука, так и видеоданных в общем потоке данных или отдельных потоках данных. Если применимо, узлы MUX-DEMUX могут соответствовать протоколу мультиплексора ITU-T Н.223 или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
Стандарт Н.264/MPEG-4 (AVC) был сформулирован Группой экспертов по видеокодированию (VCEG) ITU-T вместе с Экспертной группой по вопросам движущегося изображения (MPEG) ISO (Международная организация по стандартизации)/IEC (Международная электротехническая комиссия) в качестве продукта коллективного партнерства, известного как Объединенная команда по видеоданным (JVT). В некоторых аспектах методы, описанные в настоящем описании, могут применяться к устройствам, которые в основном соответствуют стандарту Н.264. Стандарт Н.264 описан в ITU-T Recommendation Н.264, Advanced Video Coding for generic audiovisual services, исследовательской группой ITU-T и датирован мартом 2005 г., который может упоминаться в настоящем документе как стандарт Н.264 или спецификация Н.264 или стандарт или спецификация Н.264/AVC.
Объединенная команда по видеоданным (JVT) продолжает работать над расширением SVC к H.264/MPEG-4 AVC. Спецификация развивающегося расширения SVC находится в виде Совместного проекта (JD). Объединенная модель масштабируемых видеоданных (JSVM), созданная JVT, реализует инструментальные средства для использования в масштабируемых видеоданных, которые могут использоваться в системе 10 для различных задач кодирования, описанных в настоящем описании. Подробную информацию, касающуюся кодирования масштабируемости SNR тонкой гранулярности (FGS), можно найти в документах Совместного проекта и, в частности, в Joint Draft 6 (SVC JD6), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz and Mathias Wien, «Joint Draft 6: Scalable Video Coding,» JVT-S 201, April 2006, Geneva и в Joint Draft 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz and Mathias Wien, «Joint Draft 9 of SVC Amendment», JVT-V 201, January 2007, Marrakech, Morocco.
В некоторых аспектах для видеовещания методы, описанные в настоящем описании, могут применяться к усовершенствованному Н.264 видеокодированию для доставки видеоуслуг в реальном времени в системах наземной мобильной мультимедийной многоадресной передачи (ТМЗ), используя спецификацию радиоинтерфейса только по прямой линии связи (FLO) «Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast», публикуемой как Технический стандарт TIA-1099 («Спецификация FLO»). Т.е. канал 15 передачи данных может содержать беспроводной информационный канал, используемый для широковещательной передачи беспроводной видеоинформации согласно спецификации FLO, или т.п. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования, пригодные для радиоинтерфейса FLO. В качестве альтернативы, видеоданные могут широковещательно передаваться по другим стандартам, таким как DVB-H (цифровое видеовещание для карманных устройств), ISDB-T (наземное цифровое широковещание с интеграцией услуг) или DMB (цифровое мультимедийное широковещание). Следовательно, устройством 2 источника может быть мобильный беспроводной терминал, сервер поточной передачи видеоданных или сервер видеовещания. Однако методы, описанные в настоящем описании, не ограничиваются каким-то конкретным типом системы широковещания, многоадресной передачи или «точка-точка». В случае широковещания устройство 2 источника может выполнять широковещание по нескольким каналам видеоданных на многочисленные устройства приема, каждый из которых может быть подобен устройству 6 приема по фиг.2.
Видеокодер 12 и видеодекодер 18 каждый может быть реализован в виде одного или нескольких микропроцессоров, процессоров цифровой обработки сигналов (DSP), специализированных интегральных схем (специализированных ИС), программируемых вентильных матриц (FPGA), дискретных логических, программных, аппаратных, программно-аппаратных средств или любой их комбинации. Каждый из видеокодера 12 и видеодекодера 18 может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (кодек) в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере или т.п. Кроме того, устройство 2 источника и устройство 6 приема каждый может включать в себя соответствующие компоненты модуляции, демодуляции, преобразования частоты, фильтрации и усилителя для передачи и приема закодированных видеоданных, когда это применимо, включая радиочастотные (РЧ) беспроводные компоненты и антенны, достаточные для поддержки беспроводной связи. Для упрощения иллюстрации, однако, такие компоненты суммируются как модулятор/передатчик 14 устройства 2 источника и приемник/демодулятор 16 устройства 6 приема по фиг.2.
Видеопоследовательность включает в себя последовательность видеокадров. Видеокодер 12 работает с блоками пикселей (или блоками коэффициентов преобразования) в индивидуальных видеокадрах для закодирования видеоданных. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут отличаться размерами в соответствии с заданным стандартом закодирования. В некоторых случаях каждый видеокадр представляет собой закодированную единицу, тогда как в других случаях каждый видеокадр может быть разделен на последовательность слайсов, которые формируют закодированные единицы. Каждый слайс может включать в себя последовательность макроблоков, которые могут быть размещены в субблоках. В качестве примера, стандарт ITU-T Н.264 поддерживает внутреннее прогнозирование в различных размерах блока, таких как 16 на 16, 8 на 8 или 4 на 4 для яркостных составляющих и 8×8 для составляющих цветности, а также внешнее прогнозирование в различных размерах блока, таких как 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для яркостных составляющих и соответствующих масштабируемым размерам для составляющих цветности.
Меньшие видеоблоки могут обеспечивать лучшее разрешение и могут использоваться для расположений видеокадра, которые включают в себя более высокие уровни детализации. В общем, макроблоки (MB) и различные субблоки могут рассматриваться как видеоблоки. Кроме того, слайс может рассматриваться как последовательность видеоблоков, таких как MB, и/или субблоков. Как отмечено, каждый слайс может быть независимо декодируемой единицей видеокадра.
Вслед за кодированием с внутренним или внешним прогнозированием дополнительные методы кодирования могут применяться к передаваемому битовому потоку. Эти дополнительные методы кодирования могут включать в себя методы преобразования (такие как преобразование целых чисел 4×4 или 8×8, используемое в H.264/AVC или дискретном косинусном преобразовании DCT) и кодирование коэффициентов преобразования (такого как кодирование с переменной длиной коэффициентов преобразования). Блоки коэффициентов преобразования могут упоминаться как видеоблоки. Другими словами, термин «видеоблок» ссылается на блок видеоданных независимо от области информации. Таким образом, видеоблоки могут быть в пиксельной области или в области преобразованных коэффициентов.
Настоящее описание обеспечивает методы кодирования коэффициентов уточнения. Снова коэффициенты уточнения ссылаются на коэффициенты, которые имели ненулевые значения в предыдущих слоях схемы SVC, тогда как значимые коэффициенты ссылаются на коэффициенты, которые имели значения нуля в одном или нескольких предыдущих слоях. Согласно настоящему описанию информация, указывающая некоторые значения коэффициента уточнения, может исключаться из битового потока, который передается от устройства 2 источника на устройство 6 приема. Кодер 12 и декодер 18 могут выполнять взаимно обратные способы, которые основываются на предыстории, для идентификации коэффициентов уточнения типа 0, которые исключаются из битового потока, так как можно предположить, что их значения равны нулю. Как используется в настоящем документе, термин «кодирование» относится в основном к по меньшей мере части процессов или закодирования, или декодирования. Видеокодер 12 закодировывает данные, тогда как видеодекодер 18 декодирует данные.
Кодирование коэффициентов уточнения типа 1 может основываться на методологии VLC, которая использует таблицы VLC для назначения кодовых слов различным наборам коэффициентов уточнения. Наборы коэффициентов с нулевыми значениями могут представляться длинами серий нулей, и таблицы могут назначать более вероятные длины серий более коротким кодам VLC. Аналогично, таблицы VLC могут назначать менее вероятные длины серий более длинным кодам VLC. Таблицы VLC могут адаптироваться относительно таблиц соглашений, чтобы лучше учитывать тот факт, что только коэффициенты уточнения типа 1 кодируются с использованием таблиц, и информация для коэффициентов типа 0 исключается из битового потока. Снова значения коэффициентов типа 0 выводятся в декодере.
Формирование таблиц VLC может основываться на предшествующей статистике кодирования, но в большинстве случаев используются статические таблицы VLC. Снова, однако, таблицы VLC могут быть другими, чем обычные таблицы, так как информация для коэффициентов типа 0 исключается из битового потока. В случае статических таблиц VLC кодер 12 и декодер 18 просто выбирают одну или несколько соответствующих таблиц VLC из набора возможных таблиц для закодирования коэффициентов уточнения. Независимо от того, формируются ли таблицы VLC или являются статичными, может выполняться обновление таблиц VLC, если необходимо.
Фиг.3 представляет собой схему, иллюстрирующую видеокадры в базовом слое 17 и улучшающем слое 18 масштабируемого битового потока видеоданных. Как отмечено выше, методы настоящего описания применимы к закодированию данных улучшающих слоев. Базовый слой 17 может содержать битовый поток, содержащий закодированные видеоданные, которые представляют первый уровень пространственной временной масштабируемости или масштабируемости SNR. Улучшающий слой 18 может содержать битовый поток, содержащий закодированные видеоданные, которые представляют второй уровень пространственной временной масштабируемости и/или масштабируемости SNR. Хотя показан один улучшающий слой, в некоторых случаях могут использоваться несколько улучшающих слоев. Битовый поток улучшающего слоя может быть декодируемым только совместно с базовым слоем (или предыдущим улучшающим слоем, если существуют многочисленные улучшающие слои). Улучшающий слой 18 содержит ссылки на декодируемые видеоданные в базовом слое 17. Такие ссылки могут использоваться или в области преобразования, или в пиксельной области для генерирования окончательных декодированных видеоданных.
Базовый слой 17 и улучшающий слой 18 могут содержать I-кадры (кадры с внутренним кодированием), Р-кадры (кадры с внешним кодированием) и В-кадры (двунаправленные кадры). Кадры с внутренним кодированием могут включать в себя все видеоблоки с внутренним кодированием. I- и Р-кадры могут включать в себя по меньшей мере некоторые видеоблоки с внешним кодированием (блоки с внешним кодированием), но также могут включать в себя некоторые блоки с внутренним кодированием (блоки с внутренним кодированием). Различные кадры улучшающего слоя 17 не должны включать в себя все видеоблоки в базовом слое 17. Р-кадры в улучшающем слое 18 основываются на ссылках на Р-кадры в базовом слое 17. Посредством декодирования кадров в улучшающем слое 18 и базовом слое 17 видеодекодер может повысить качество видеоданных, декодируемых видеоданных.
Например, базовый слой 17 может включать в себя видеоданные, закодированные с минимальной частотой кадров, например 15 кадров в секунду, тогда как улучшающий слой 18 может включать в себя видеоданные, закодированные с более высокой частотой кадров, например 30 кадров в секунду. Чтобы поддерживать кодирование с различными уровнями качества, базовый слой 17 и улучшающий слой 18 могут закодироваться с более высоким параметром квантования (QP) и более низким QP соответственно. Кроме того, базовый слой 17 может передаваться таким образом, который является более надежным, чем передача улучшающего слоя 18. В качестве примера, наиболее надежные части модулированного сигнала могут использоваться для передачи базового слоя 17, тогда как менее надежные части модулированного сигнала могут использоваться для передачи улучшающего слоя 18. Иллюстрация фиг.3 является просто примерной, так как базовый и улучшающий слои могут быть определены многими различными путями.
Фиг.4 представляет собой блок-схему, иллюстрирующую пример видеокодера 50, который включает в себя узел 46 закодирования коэффициентов для закодирования данных, совместимых с настоящим описанием. Видеокодер 50 по фиг.4 может соответствовать кодеру 24 улучшающего слоя устройства 2 источника по фиг.2. Т.е. компоненты закодирования базового слоя не изображены на фиг.4 для упрощения. Поэтому видеокодер 50 может рассматриваться как кодер улучшающего слоя. В качестве альтернативы, изображенные компоненты видеокодера 50 также могут быть реализованы в комбинации с модулями или узлами закодирования базового слоя, например, в пирамидальной конструкции кодера, которая поддерживает масштабируемое видеокодирование базового слоя и улучшающего слоя.
Видеокодер 50 может выполнять внутреннее и внешнее кодирование блоков в видеокадрах. Внутреннее кодирование основывается на пространственном прогнозировании для уменьшения или устранения пространственной избыточности в видеоданных в данном видеокадре. Внешнее кодирование основывается на временном прогнозировании для уменьшения или устранения временной избыточности в видеоданных в соседних кадрах видеопоследовательности. Для внешнего кодирования видеокодер 50 выполняет оценку движения для отслеживания движения совпадающих видеоблоков между двумя или более соседними кадрами.
Как показано на фиг.4, видеокодер 50 принимает текущий видеоблок 31 (например, видеоблок улучшающего слоя) в видеокадре, подлежащем закодированию. В примере на фиг.4 видеокодер 50 включает в себя узел 33 оценки движения, хранилище 35 опорных кадров, узел 37 компенсации движения, узел 39 преобразования блока, узел 41 квантования, узел 42 обратного квантования, узел 44 обратного преобразования и узел 46 закодирования коэффициентов. Деблочный фильтр (не показан) также может быть включен для фильтрации границ блоков для устранения блочных артефактов. Видеокодер 50 также включает в себя сумматор 48 и сумматор 51. Фиг.4 иллюстрирует компоненты временного прогнозирования видеокодера 50 для внешнего закодирования видеоблоков. Хотя не показан на фиг.4 для упрощения иллюстрации видеокодер 50 также может включать в себя компоненты пространственного прогнозирования для внутреннего закодирования некоторых видеоблоков. Компоненты пространственного прогнозирования, однако, обычно используются только для закодирования базового слоя. Методы настоящего описания могут применяться в отношении преобразования коэффициентов остаточных блоков, которые являются с внутренним кодированием или с внешним кодированием.
Узел 33 оценки движения сравнивает видеоблок 31 с блоками в одном или нескольких соседних видеокадрах для генерирования одного или нескольких векторов движения. Соседний кадр или кадры могут извлекаться из хранилища 35 опорных кадров, которое может содержать любой тип устройства памяти или хранения данных для хранения видеоблоков, восстановленных из ранее закодированных блоков. Оценка движения может выполняться для блоков изменяемых размеров, например 16×16, 16×8, 8×16, 8×8 или меньших размеров блоков. Узел 33 оценки движения идентифицирует блок в соседнем кадре, который наиболее близко совпадает с текущим видеоблоком 31, например, основываясь на модели скорость-искажение, и определяет смещение между блоками. На этом основании узел 33 оценки движения создает вектор движения (MV) (или многочисленные MV в случае двунаправленного прогнозирования), который указывает величину и траекторию смещения между текущим видеоблоком 31 и блоком с прогнозированием, используемым для закодирования текущего видеоблока 31.
Векторы движения могут иметь полупиксельную или четвертьпиксельную точность, или даже более высокую степень точности, позволяя видеокодеру 50 отслеживать движение с более высокой точностью, чем целочисленные расположения пикселей, и получать блок с лучшим прогнозированием. Когда используются векторы движения со значениями долей пиксела, операции интерполяции выполняются в узле 37 компенсации движения. Узел 33 оценки движения может идентифицировать наилучший вектор движения для видеоблока, используя модель скорость-искажение. Используя результирующий вектор движения, узел 37 компенсации движения формирует видеоблок прогнозирования посредством компенсации движения.
Видеокодер 50 формирует остаточный видеоблок посредством вычитания видеоблока прогнозирования, созданного узлом 37 компенсации движения, из первоначального, текущего видеоблока 31 в сумматоре 48. Узел 39 преобразования блока применяет преобразование, такое как дискретное косинусное преобразование (DCT), к остаточному блоку, создавая остаточные коэффициенты преобразования блока. Узел 41 квантования квантует остаточные коэффициенты преобразования блока для дальнейшего снижения скорости передачи битов. Сумматор 49А принимает информацию о коэффициентах базового слоя, например, от кодера базового слоя (не показан) и располагается между узлом 39 преобразования блока и узлом 41 квантования для подачи данной информации о коэффициентах базового слоя на закодирование улучшающего слоя. В частности, сумматор 49А вычитает информацию о коэффициентах базового слоя из выходного результата узла 39 преобразования блока. Аналогичным образом сумматор 49В, который располагается между узлом 44 обратного преобразования и узлом 42 обратного квантования, также принимает информацию о коэффициентах базового слоя от кодера базового слоя (не показан). Сумматор 49В добавляет информацию о коэффициентах базового слоя обратно к выходному результату узла 42 обратного квантования.
Кодирование с пространственным прогнозированием работает почти аналогично кодированию с временным прогнозированием. Однако, так как кодирование с временным прогнозированием основывается на блоках соседних кадров (или других кодированных единицах) для выполнения кодирования, пространственное прогнозирование основывается на блоках в общем кадре (другой кодированной единице) для выполнения кодирования. Кодирование с пространственным прогнозированием кодирует блоки с внутренним кодированием, тогда как кодирование с временным прогнозированием кодирует блоки с внешним кодированием. Компоненты пространственного прогнозирования не показаны на фиг.4 для упрощения. Однако методы настоящего описания могут применяться в отношении коэффициентов преобразования, которые генерируются посредством преобразования, которое придерживается процесса кодирования с пространственным прогнозированием.
Узел 46 закодирования коэффициентов кодирует квантованные коэффициенты преобразования, например, в соответствии с методологией кодирования с переменной длиной кодов, чтобы еще более уменьшить скорость передачи битов передаваемой информации. В частности, узел 46 закодирования коэффициентов применяет методы настоящего описания для закодирования коэффициентов уточнения улучшающего слоя. Узел 46 закодирования коэффициентов может кодировать значимые коэффициенты отдельно от коэффициентов уточнения, хотя настоящее описание необязательно ограничивается в этом отношении. В отношении коэффициентов уточнения улучшающего слоя узел 46 закодирования коэффициентов может отличать коэффициенты типа 1, которые кодируются в битовый поток, от коэффициентов типа 0, которые не кодируются в битовый поток.
Узел 46 закодирования коэффициентов может генерировать внутриполосный или внеполосный сигнал для указания декодеру, что информация, указывающая на коэффициенты типа 0, исключена из битового потока, и такую информацию необходимо выводить в декодере, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования. Хотя методы, описанные в настоящем документе, предполагают двухпроходный подход, при котором значимые коэффициенты кодируются отдельно от коэффициентов уточнения, методы также могут применяться в однопроходном подходе, при котором значимые коэффициенты кодируются с коэффициентами уточнения. В любом случае согласно настоящему описанию информация, указывающая коэффициенты уточнения типа 0, исключается из битового потока и выводится в декодере, основываясь на предыстории соответствующих коэффициентов преобразования предыдущих слоев.
После закодирования коэффициентов преобразования (включающих в себя значимые коэффициенты, коэффициенты уточнения типа 1 и коэффициенты уточнения типа 0) закодированные видеоданные (например, кодовые слова с переменной длиной) могут передаваться на другое устройство. Кроме того, узел 42 обратного квантования и узел 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно для восстановления остаточного блока. Сумматор 51 добавляет восстановленный остаточный блок к блоку прогнозирования с компенсированным движением, созданным узлом 37 компенсации движения, для получения восстановленного видеоблока для хранения в хранилище 35 опорных кадров. Восстановленный видеоблок используется узлом 33 оценки движения и узлом 37 компенсации движения для закодирования блока в последующем видеокадре.
Фиг.5 представляет собой блок-схему, иллюстрирующую пример видеодекодера 60, который может соответствовать видеодекодеру 18 на фиг.1, который выполняет декодирование базового слоя и улучшающего слоя. Видеодекодер 60 включает в себя узел 52А декодирования коэффициентов, который выполняет взаимно обратную функцию узла 46 закодирования коэффициентов на фиг.4. Т.е. узел 52А декодирования коэффициентов кодирует коэффициенты уточнения улучшающего слоя таким образом, который предполагает, что информация, указывающая коэффициенты типа 0, исключается из битового потока. Узел 52А декодирования коэффициентов использует предысторию соответствующих коэффициентов преобразования, например соответствующих коэффициентам уточнения типа 0 кодируемого текущего слоя, для генерирования значений, ассоциированных с коэффициентами уточнения типа 0, которые исключаются из битового потока.
Видеодекодер 60 может выполнять внутреннее и внешнее декодирование блоков в видеокадрах. В примере на фиг.5 видеодекодер 60 включает в себя узлы 52А и 52В декодирования коэффициентов, узел 54 компенсации движения, узел 56 обратного квантования, узел 58 обратного преобразования и хранилище 62 опорных кадров. Видеодекодер 60 также включает в себя сумматор 64, который объединяет выходные результаты узла 58 обратной передачи и узла 54 компенсации движения. Необязательно, видеодекодер 60 также может включать в себя деблочный фильтр (не показан), который фильтрует выходной результат сумматора 64. Фиг.5 иллюстрирует компоненты временного прогнозирования видеодекодера 60 для внешнего декодирования видеоблоков. Видеодекодер 60 также может включать в себя компоненты пространственного прогнозирования для внутреннего декодирования некоторых видеоблоков, которые представляются узлом 55 внутреннего прогнозирования.
Видеодекодер 60 также может включать в себя другой узел 52В декодирования коэффициентов для информации базового слоя. Узел 52В декодирования коэффициентов может в основном работать обычным образом в отношении декодирования коэффициентов базового слоя. Узел 55 внутреннего прогнозирования может необязательно выполнять любое пространственное декодирование видеоблоков базового слоя, и выходной результат узла 55 внутреннего прогнозирования может подаваться на сумматор 53. Тракт улучшающего слоя может включать в себя узел 58А обратного квантования, и тракт базового слоя может включать в себя узел 56В обратного квантования. Информация в трактах базового слоя и улучшающего слоя может объединяться сумматором 57.
Видеодекодер 60 может выполнять внутреннее и внешнее декодирование блоков в видеокадрах. В примере на фиг.5 видеодекодер 60 включает в себя узлы 52А и 52В декодирования коэффициентов (упомянутые выше), узел 54 компенсации движения, узлы 56А и 56В обратного квантования, узел 58 обратного преобразования и хранилище 62 опорных кадров. Видеодекодер 60 также включает в себя сумматор 64. Необязательно, видеодекодер 60 также может включать в себя деблочный фильтр (не показан), который фильтрует выходной результат сумматора 64. Снова, сумматор 57 объединяет информацию в трактах базового слоя и улучшающего слоя, и узел 55 внутреннего прогнозирования и сумматор 53 способствуют любому пространственному декодированию видеоблоков базового слоя.
Снова, узел 52А декодирования коэффициентов принимает кодированный битовый поток видеоданных и применяет методы, описанные в настоящем описании. В частности, для значимых коэффициентов узел 52А декодирования коэффициентов может декодировать информацию, используя таблицу VLC. Аналогично, для коэффициентов уточнения типа 1 узел 52А декодирования коэффициентов может декодировать информацию, используя таблицу VLC, которая может быть другой таблицей VLC, чем используемая для значимых коэффициентов. Для коэффициентов уточнения типа 0, однако, узел 52А декодирования коэффициентов может генерировать надлежащие значения, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования предыдущих слоев схемы SVC.
После декодирования, выполняемого узлом 52А декодирования коэффициентов, узел 54 компенсации движения принимает векторы движения и один или несколько восстановленных опорных кадров из хранилища 62 опорных кадров. Узел 56А обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты блока. После объединения информации улучшающего и базового слоев посредством сумматора 57 узел 58 обратного преобразования применяет обратное преобразование, например обратное DCT, к коэффициентам для получения остаточных блоков. Узел 54 компенсации движения создает блоки с компенсированным движением, которые суммируются сумматором 64 с остаточными блоками для формирования декодированных блоков. Если требуется, деблочный фильтр также может применяться для фильтрации декодированных блоков, чтобы удалить блочные артефакты. Отфильтрованные блоки затем размещаются в хранилище 62 опорных кадров, которое обеспечивает опорные блоки от компенсации движения и также создает декодированные видеоданные для приведения в действие устройства отображения (такого, как устройство 20 на фиг.2).
Фиг.6 представляет собой блок-схему, иллюстрирующую примерный узел 46 закодирования коэффициентов, который может соответствовать узлу, показанному на фиг.4. Узел 46 закодирования коэффициентов включает в себя модуль 72 закодирования, модуль 74 предыстории, модуль 76 выбора таблицы и таблицы 78 кодирования. Таблицы 78 кодирования, в основном, ссылаются на таблицы, которые могут храниться в любом расположении, например локально или вне кристалла в отдельном расположении памяти. Таблицы 78 кодирования могут периодически обновляться, когда потребуется.
Модуль 72 закодирования закодировывает коэффициенты уточнения и значимые коэффициенты в отдельных проходах кодирования, хотя методы настоящего описания также могут применяться, если коэффициенты уточнения кодировались со значимыми коэффициентами. Выбор таблицы модулем 72 закодирования может выполняться, основываясь на информации (например, статистики), собираемой для ранее кодированного блока ранее кодированных кадров. Например, модуль 72 закодирования может выполнять статистический анализ ранее закодированных кадров, чтобы способствовать выбору таблицы.
Независимо от того, как выбираются таблицы из таблиц 78 кодирования, модуль 72 закодирования применяет методы настоящего описания для исключения информации, указывающей коэффициенты уточнения типа 0, из кодированного битового потока. Модуль 72 закодирования кодирует информацию, такую как один или несколько битов в заголовке кадра, для сигнализирования декодеру, что информация для значений коэффициента уточнения типа 0 исключена из битового потока.
Модуль 74 предыстории исследует предысторию, ассоциированную с коэффициентами уточнения с целью определения, являются ли коэффициенты уточнения коэффициентами типа 1 или коэффициентами типа 0. Более конкретно, при закодировании текущего FGS слоя модуль 74 предыстории исследует предысторию соответствующих коэффициентов преобразования предыдущих FGS слоев и базового слоя схемы SVC. Как показано на фиг.1А и 1В и как описано выше, некоторые коэффициенты уточнения могут иметь значения, которые, как можно предположить, равны нулю. Модуль 74 предыстории исследует предысторию для идентификации так называемых коэффициентов типа 0. Модуль 72 закодирования затем может исключать информацию, указывающую значения коэффициентов типа 0, из битового потока.
Как альтернатива кодирования полному анализу предыстории, модуль 72 предыстории может просто искать значения, ассоциированные с соответствующими коэффициентами предыдущего FGS слоя (например, только самая последняя предыстория). Т.е. при кодировании n-го слоя схемы SVC модуль 74 предыстории может оценивать предысторию посредством определения, имели ли значения коэффициента уточнения, ассоциированные с (n-1)-ым слоем схемы SVC, ненулевые значения. В данном случае модуль 72 закодирования может предположить, что значения коэффициента уточнения равны нулю для n-го слоя, когда соответствующие коэффициенты (n-1)-го слоя имели ненулевые значения.
В другом примере модуль 74 предыстории может оценивать предысторию посредством назначения индексных значений для коэффициентов уточнения текущего слоя, причем индексные значения зависят от соответствующих значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC. Другими словами, индексное значение (h) может назначаться, основываясь на соответствующих значениях коэффициента преобразования предыдущих слоев в схеме SVC. В качестве примера, индексное значение (h) может вычисляться следующим образом:
где i представляет собой номер слоя (т.е. i=0 соответствует базовому слою, i=1 соответствует первому базовому слою), а ci представляет собой значение сочетаемого коэффициента в слое i. i++ ссылается на i=i+1, а sig представляет собой промежуточную переменную.
Модуль 72 закодирования может сигнализировать декодеру, для каких индексных значений (h) коэффициенты уточнения, как предполагается, равны нулю. В данном случае оценка одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, может содержать назначение значений нуля коэффициентам уточнения текущего слоя, который имеет индексные значения, которые соответствуют одному или нескольким заданным индексным значениям.
В некоторых случаях все значения коэффициентов уточнения типа 0 устанавливаются в 0 и в кодере, и в декодере, даже если их квантованное значение отлично от нуля. Так как величина ненулевых значений будет очень малой, влияние на восстановленное качество может иметь меньшее значение, чем выигрыш в скорости передачи битов, который может являться результатом исключения информации из битового потока для этих коэффициентов типа 0.
В качестве альтернативы модуль 72 закодирования может сигнализировать декодеру, что все значения коэффициентов типа 0 с некоторой области, например в блоке или макроблоке, равны нулю. Если не все значения типа 0 равны фактически 0 (т.е. из-за квантования), они могут кодироваться вместе с оставшимися значениями коэффициентов уточнения типа 1. Способ кодирования коэффициента уточнения типа 1 для макроблоков, в которых все уровни коэффициентов уточнения типа 0 равны 0, должен быть другой (например, другое используемое VLC), чем кодирование коэффициентов уточнения в макроблоке, в котором некоторые из коэффициентов уточнения типа 0 являются ненулевыми. В первом случае вероятность того, что любой коэффициент уточнения равен нулю, значительно меньше второго случая.
В другом примере модуль 74 предыстории может определять первый поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0 и определять второй поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1, например, основываясь на предыстории, такой как изображенная на фиг.1А и 1В. Модуль 72 закодирования может включать в себя информацию для коэффициентов уточнения типа 1 в закодированном битовом потоке и исключать информацию для коэффициентов уточнения типа 0 в закодированном битовом потоке. Модуль 72 закодирования затем может сигнализировать декодеру, что исключена информация для коэффициентов уточнения типа 0.
Как описано в настоящем документе, коэффициенты уточнения могут иметь значения, ограниченные -1, 0 и 1. Такие значения могут кодироваться многочисленным образом. В одном примере два бита информации используются для закодирования коэффициентов уточнения. Первый бит может указывать, равен ли коэффициент 0 или нет, и второй бит может указывать, является ли знак (обозначаемый как sn) коэффициента уточнения таким же (coeff_ref_dir_flag=0) или другим (coeff_ref_dir_flag=l), чем знак (обозначаемый как sn-1) соответствующего коэффициента предыдущего слоя. Предыдущий слой обозначается как sn-1. Если знак текущего коэффициента является таким же, что и знак предыдущего слоя, тогда coeff_ref_dir_flag=0, и если знак текущего коэффициента отличен от знака предыдущего слоя, тогда coeff_ref_dir_flag=1. Два бита уточнения могут объединяться в алфавит из трех символов уточнения, как изложено в Таблице 1:
Таблица 1 | ||
coeff_ref_flag | coeff_ref_dir_flag | ref_symbol |
0 | - | 0 |
1 | 0 | 1 |
1 | 1 | 2 |
В качестве альтернативы также может использоваться другая схема для закодирования коэффициентов уточнения без отступления от методов настоящего описания.
Таблицы 78 кодирования могут содержать кодовые слова с переменной длиной, которые отображаются на различные наборы коэффициентов, которые могут быть определены символами, флагами или другими типами битов. Таблицы 78 кодирования могут обновляться при необходимости. Любое количество таблиц может быть включено в таблицы 78 кодирования. В некоторых случаях используется две таблицы, хотя может быть включено большее количество. Таблица кодирования, используемая в каждый конкретный момент в схеме кодирования, может выбираться модулем 72 закодирования, например, основываясь на содержимом или других факторах.
Таблица 2 обеспечивает один пример таблицы VLC, которая может использоваться для кодирования коэффициентов уточнения.
Как показано в Таблице 2, различные наборы коэффициентов уточнения (как определено в Таблице 1) могут отображаться на различные кодовые слова с переменной длиной. Таблица 2 также перечисляет соответствующие длины в битах, ассоциированные с различными кодовыми словами. Отображения кодовых слов на различные наборы коэффициентов уточнения могут различаться в различных таблицах VLC. Следовательно, посредством выбора надлежащей таблицы может достигаться эффективность кодирования. Согласно настоящему описанию могут использоваться различные таблицы кодирования в зависимости от того, включает ли в себя данный кадр или видеоблок коэффициенты типа 0, информация которых исключается из кодированного битового потока.
Фиг.7 представляет собой блок-схему, иллюстрирующую примерный узел 52А декодирования коэффициентов, который может соответствовать узлу, показанному на фиг.5. Узел 52А декодирования коэффициентов выполняет взаимно обратные функции декодирования относительно кодирования, которое выполняется узлом 46 закодирования коэффициентов. Таким образом, тогда как узел 46 закодирования коэффициентов принимает квантованные остаточные коэффициенты (упоминаемые в настоящем документе как коэффициенты преобразования) и генерирует битовый поток, узел 52А декодирования коэффициентов принимает битовый поток и генерирует квантованные остаточные коэффициенты. Узел 52А декодирования коэффициентов включает в себя модуль 82 декодирования, модуль 84 предыстории и набор таблиц 88 кодирования. Аналогично узлу 46 таблицы 88 кодирования узла 52А, в основном, ссылаются на таблицы, которые могут храниться в любом расположении, например локально или вне кристалла в отдельном расположении памяти. Таблицы 88 кодирования могут содержать таблицы VLC и могут периодически обновляться, когда потребуется. Любое количество таблиц может быть включено в таблицы 88 кодирования. В некоторых случаях используется две таблицы, хотя может быть включено большее количество.
Узел 82 декодирования коэффициентов может выполнять отдельные проходы декодирования для значимых коэффициентов и коэффициентов уточнения. В данном случае методы настоящего описания могут быть применимы только к закодированию коэффициентов уточнения. В качестве альтернативы, методы настоящего описания могут применяться к схеме кодирования, которая кодировала как значимые коэффициенты, так и коэффициенты уточнения вместе в проходе кодирования. В любом случае декодирование, выполняемое узлом 52А декодирования коэффициентов, может быть, в основном, взаимно обратным закодированию, выполняемому узлом 46 кодирования коэффициентов.
В частности, модуль 82 декодирования коэффициентов может декодировать битовый поток, имея сведения, что информация о некоторых значениях коэффициентов уточнения (например, коэффициентов типа 0) исключена из битового потока. Битовый поток может включать в себя сигнал для указания этого факта узлу 82 декодирования коэффициентов. В данном случае модуль 84 предыстории может выполнять, в основном, взаимно обратный метод оценки предыстории относительно метода, выполняемого модулем 74 предыстории (фиг.6).
В общем узел 52А декодирования коэффициентов кодирует коэффициенты уточнения улучшающего слоя в схеме SVC. Модуль 84 предыстории оценивает предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и модуль 82 декодирования оценивает одно или несколько значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории. Другие коэффициенты, которые включены в передаваемый битовый поток, декодируются с использованием таблиц 88 кодирования. В частности, модуль 82 декодирования выполняет табличные поиски по одной или нескольким таблицам 88 кодирования для декодирования кодовых слов в битовом потоке для генерирования кодированных коэффициентов.
Модуль 84 предыстории может определять первый поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 0 и определять второй поднабор коэффициентов уточнения улучшающего слоя в качестве коэффициентов уточнения типа 1. Модуль 82 декодирования затем может декодировать информацию для коэффициентов уточнения типа 1 из закодированного битового потока и генерировать информацию для коэффициентов уточнения типа 0. Снова, информация для коэффициентов уточнения типа 0 исключается из закодируемого битового потока.
Таблица 2 выше также может рассматриваться как одна из таблиц 88 кодирования. Однако, тогда как таблицы 78 кодирования (фиг.6) отображают наборы коэффициентов на кодовые слова с переменной длиной, таблицы 88 кодирования (фиг.7) отображают кодовые слова с переменной длиной обратно на наборы коэффициентов. Таким образом, декодирование, выполняемое узлом 52А декодирования коэффициентов, может рассматриваться как являющееся взаимно обратным закодированию, выполняемому узлом 46 закодирования коэффициентов.
Фиг.8 представляет собой блок-схему последовательности операций, иллюстрирующую метод кодирования для коэффициентов уточнения улучшающего слоя схемы SVC, согласующийся с настоящим описанием. Процесс кодирования по фиг.8 применяет как закодирование, так и декодирование. Как показано на фиг.8, модуль 74, 84 предыстории оценивает предысторию значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC (91). Модуль 72, 84 закодирования оценивает одно или несколько значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории (92). Модуль 72, 84 закодирования затем закодировывает битовый поток (93). На стороне закодирования процесс кодирования битового потока может включать в себя исключение информации для одного или нескольких значений коэффициента уточнения из битового потока и сигнализировать декодеру, что такая информация исключена из битового потока. На стороне декодирования процесс закодирования битового потока может включать в себя синтаксический разбор битового потока для идентификации информации, которая сигнализирует декодеру, что информация исключена из битового потока, и генерирование такой исключенной информации, основываясь на предыстории, ассоциированной с одним или несколькими предыдущими слоями схемы SVC.
Фиг.9 представляет собой блок-схему последовательности операций, иллюстрирующую методы кодирования и передачи информации о коэффициентах уточнения, совместимой с настоящим описанием. Как показано на фиг.9, модуль 74 предыстории определяет первый поднабор коэффициентов уточнения в качестве коэффициентов типа 0, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования одного или нескольких предыдущих слоев схемы SVC (94). Ссылаясь снова на фиг.1В, область 101 изображает коэффициент типа 0 во 2-ом FGS слое, область 102 изображает коэффициент типа 0 в 3-ем FGS слое, и область 103 изображает коэффициент типа 0 в 3-ем FGS слое. В каждом из этих случаев предшествующая предыстория предписывает или прогнозирует, что коэффициент, наиболее вероятно, будет иметь значение нуля. Хотя эффекты квантования могут вызывать то, что один или несколько коэффициентов типа 0 будут иметь ненулевое значение (в зависимости от вероятности), предположение, что коэффициенты типа 0 имеют значения нуля, может быть, в основном, устойчивым предположением, которое может применяться в декодере для вывода. Другими словами, коэффициенты типа 0 фактически могут быть нулевыми или ненулевыми, но имеют высокую вероятность, что будут нулевыми.
Модуль 74 предыстории также определяет второй поднабор коэффициентов уточнения в качестве коэффициентов типа 1, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования одного или нескольких предыдущих слоев схемы SVC (95). Ссылаясь снова на фиг.1В, область 104 изображает коэффициент типа 1 в 3-ем FGS слое, и область 105 изображает коэффициент типа 1 во 2-ом FGS слое. В каждом из этих случаев предшествующая предыстория предписывает или прогнозирует, что коэффициент может иметь несколько возможных значений, например 1, 0 или -1.
Модуль 72 закодирования кодирует битовый поток, чтобы включить информацию для коэффициентов типа 1 и чтобы включить или исключить информацию для коэффициентов типа 0 (96). В частности, модуль 72 закодирования может выполнять метод кодирования с переменной длиной кодов, такой как кодирование длин серий или кодирование структур кодированных блоков, в которых структуры коэффициентов или серии нулей отображаются на кодовые слова с переменной длиной при помощи таблиц кодирования. В данном случае более короткие кодовые слова с переменной длиной могут соответствовать более вероятным структурам или длинам серии нулей, и более длинные кодовые слова с переменной длиной могут соответствовать менее вероятным структурам или длинам серии нулей. В любом случае это кодирование рассматривает только коэффициенты типа 1 и, по существу, пропускает коэффициенты типа 0.
Модуль 72 закодирования также генерирует информацию для сигнализирования декодеру, включена ли или исключена информация (значения) для коэффициентов типа 0 из битового потока (97). Эта сгенерированная информация может сигнализировать, что информация исключена из битового потока для коэффициентов типа 0, и позволяет декодеру знать, применяется ли основанное на таблицах кодирование только к коэффициентам типа 1, и представляет собой значения для коэффициентов типа 0, исключенные из битового потока. Декодер может идентифицировать и отличать коэффициенты типа 0 от коэффициентов типа 1, так что декодер может генерировать информацию для коэффициентов типа 0, если они исключаются из битового потока, и декодировать битовый поток для восстановления коэффициентов типа 1. После того как будет выполнено закодирование для генерирования битового потока, битовый поток передается (98), например, с устройства 2 источника на устройство 6 приема при помощи модулятора/передатчика 14, канала 15 и приемника/демодулятора 16 (см. фиг.2).
Фиг.10 представляет собой блок-схему последовательности операций, иллюстрирующую методы приема и декодирования информации о коэффициентах уточнения, согласующейся с настоящим описанием. Как показано на фиг.10, приемник/демодулятор 16 принимает закодированный битовый поток (101). Приемник/демодулятор 16 может выполнять демодуляцию физического уровня и направлять битовый поток на декодер 18. В частности, видеодекодер 18 может выполнять методы настоящего описания для декодирования информации о коэффициентах уточнения. Чтобы это сделать, декодер 18 может включать в себя узел 52А декодирования коэффициентов, как описано выше.
Модуль 82 декодирования узла 52А идентифицирует сигнал в битовом потоке, указывающий, что информация для коэффициентов типа 0 исключается из битового потока (102). Сигнал может содержать заголовок кадра или блока, закодированный для передачи, что такая информация исключена из битового потока. Модуль 84 предыстории определяет первый поднабор коэффициентов уточнения в качестве коэффициентов типа 0, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования одного или нескольких предыдущих слоев схемы SVC (103). Снова, ссылаясь на фиг.1В, области 101, 102 и 103 показывают примерные коэффициенты типа 0 в различных FGS слоях. В каждой из этих областей 101, 102 и 103 предшествующая предыстория предписывает или прогнозирует, что коэффициент будет иметь высокую вероятность того, что он равен нулю.
Модуль 84 предыстории также определяет второй поднабор коэффициентов уточнения в качестве коэффициентов типа 1, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования одного или нескольких предыдущих слоев схемы SVC (104). Ссылаясь снова на фиг.1В, области 104 и 105 показывают примерные коэффициенты типа 1 различных FGS слоев. В каждом из этих случаев предшествующая предыстория предписывает или прогнозирует, что коэффициент может иметь несколько возможных значений, например 1, 0 или -1.
Модуль 82 декодирования декодирует информацию для коэффициентов типа 1 из битового потока (105). В частности, модуль 82 декодирования может выполнять декодирование с переменной длиной кодов посредством выполнения поиска кодовых слов в таблицах 88 кодирования. Кодовые слова могут быть частью битового потока и могут отображаться на наборы коэффициентов, которые соответствуют закодированным коэффициентам типа 1. Снова, более короткие кодовые слова с переменной длиной могут соответствовать более вероятным структурам коэффициентов или длинам серии нулей коэффициентов, и более длинные кодовые слова с переменной длиной могут соответствовать менее вероятным структурам коэффициентов или длинам серии нулей коэффициентов. В любом случае данное кодирование рассматривает только коэффициенты типа 1.
Модуль 82 декодирования генерирует информацию для коэффициентов 106 типа 0. Таким образом, модуль 82 декодирования может отличать коэффициенты типа 0 от коэффициентов типа 1, насколько модуль 84 предыстории идентифицирует такие различия, основываясь на предыстории, ассоциированной с соответствующими коэффициентами преобразования. В частности, модуль 82 декодирования может предположить, что все коэффициенты типа 0 имеют значения нуля, и может генерировать такие нули и вставлять их в декодированные видеоблоки, например, в расположении любого коэффициента типа 0, идентифицированного модулем 82 предыстории.
Методы, описанные в настоящем документе, могут быть реализованы аппаратными средствами, программными средствами, аппаратно-программными средствами или любой их комбинацией. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в интегральном логическом устройстве или отдельно в виде дискретных, но имеющих возможность взаимодействия логических устройств. Если методы реализованы программными средствами, они могут реализовываться, по меньшей мере частично, посредством машиночитаемого носителя, содержащего инструкции, которые, когда они исполняются, выполняют один или несколько способов, описанных выше. Машиночитаемый носитель может составлять часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Машиночитаемый носитель может содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители для хранения данных и т.п. Методы, в качестве дополнения или альтернативы, могут быть реализованы, по меньшей мере частично, посредством машиночитаемой среды передачи данных, которая переносит или передает код в виде инструкций или структур данных, к которым можно обращаться и которые можно считывать и/или исполнять компьютером.
Код может исполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровой обработки сигналов (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (специализированными ИС), программируемыми вентильными матрицами (FPGA) или другими эквивалентными интегральными или дискретными логическими схемами. Следовательно, термин «процессор» в контексте настоящего документа может означать любую вышеприведенную конструкцию или любую другую конструкцию, пригодную для реализации методов, описанных в настоящем документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в настоящем документе, могут обеспечиваться в предназначенных программных модулях или аппаратных модулях, выполненных с возможностью закодирования и декодирования, или включаться в объединенный кодер-декодер (кодек) видеоданных.
Настоящее описание также может относится к схеме, такой как интегральная схема, специализированная ИС набора микросхем, FPGA, логическая схема или их различные комбинации, выполненные с возможностью выполнения одного или нескольких методов, описанных в настоящем документе. Следовательно, настоящее описание также рассматривает схему, выполненную с возможностью выполнения любого метода, описанного выше. Например, настоящее описание может обеспечивать схему, выполненную с возможностью кодирования коэффициентов уточнения улучшающего слоя в схеме SVC, причем схема выполняется с возможностью оценки предыстории значений коэффициента преобразования, ассоциированных с одним или несколькими предыдущими слоями схемы SVC, и оценки одного или нескольких значений коэффициента уточнения, ассоциированных с текущим слоем схемы SVC, основываясь на предыстории.
Были описаны различные варианты осуществления изобретения. Эти и другие варианты осуществления входят в объем нижеследующей формулы изобретения.
Класс H04N7/26 с использованием уменьшения ширины полосы частот
Класс H04N7/50 включающие преобразование и прогнозное кодирование