МЕТОДИКИ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ЦИФРОВОГО ВИДЕО С ПЕРЕМЕННЫМ РАЗРЕШЕНИЕМ
METHODOLOGIES OF COPYING AND DECODING OF DIGITAL VIDEO WITH ALTERNATING RESOLUTION

Уровень техники
Цифровое видео требует большого объема памяти и большой пропускной способности. Типовая необработанная цифровая видеопоследовательность содержит 15, 30 или даже 60 кадров в секунду (кадр/с). Каждый кадр может включать в себя сотни тысяч пикселей. Каждый пиксель представляет крошечный элемент изображения. В необработанном виде компьютер обычно представляет один пиксель, например, 24-мя битами. Таким образом, битрейт, или количество бит в секунду, для типовой необработанной цифровой видеопоследовательности может составлять порядка 5 миллионов бит в секунду (бит/с) или более.
Большинство устройств мультимедийной обработки и сетей связи не имеют достаточных ресурсов для обработки необработанного цифрового видео. По этой причине инженеры для уменьшения битрейта цифрового видео используют сжатие (называемое также кодированием). Распаковка (или декодирование) является операцией, обратной сжатию.
Как правило, разработчики идут на компромиссы при выборе конкретного типа сжатия видео для данного устройства обработки и/или сети связи. Например, сжатие может быть выполнено без потерь, когда качество видео остается высоким за счет более высокого битрейта, или с потерями, когда страдает качество видео, но значительно уменьшается битрейт. В большинстве системных разработок допущены определенные компромиссы между качеством и битрейтом на основе заданного набора проектных ограничений и требований к рабочим характеристикам. Следовательно, данный способ сжатия видео, как правило, не подходит для разных типов устройств мультимедийной обработки и/или сетей связи.
Сущность изобретения
Этот раздел предназначен для ознакомления с концепциями изобретения в упрощенной форме, которые подробно описываются ниже в разделе «Подробное описание изобретения». Раздел «Сущность изобретения» не преследует своей целью идентифицировать ключевые или существенные признаки заявленного предмета изобретения, а также не предполагает его использование для ограничения объема заявленного предмета изобретения.
Различные варианты осуществления изобретения относятся в целом к цифровому кодированию, декодированию и обработке цифрового мультимедийного контента, такого как видео, изображения, снимки и т.д. В некоторых вариантах цифровое кодирование, декодирование и обработка цифрового мультимедийного контента могут основываться на ряде стандартов и вариантов видеокодека стандарта 421М (“VC-1”) Общества кино- и телеинженеров США (SMPTE). В частности, некоторые варианты изобретения относятся к способам видеокодирования и видеодекодирования с множественным разрешением, а также к тому, каким образом допускается использование указанных способов в битовом потоке VC-1 без потери полной совместимости с предыдущими версиями. В одном варианте устройство, например, может включать в себя видеокодер, скомпонованный для сжатия или кодирования цифровой видеоинформации в виде расширенного видеопотока или битового потока SMPTE VC-1. Этот видеокодер может кодировать цифровую видеоинформацию в виде множества уровней, например, один базовый уровень и один или несколько уровней пространственного и/или временного улучшения. Базовый уровень может предложить определенное минимальное пространственное разрешение и базовый уровень временного разрешения. Один или несколько уровней улучшения могут включать в себя кодированную видеоинформацию, которую можно использовать для повышения базового уровня пространственного разрешения и/или базового уровня временного разрешения для видеоинформации, закодированной в виде базового уровня. Видеодекодер может избирательно декодировать видеоинформацию из базового уровня и одного или нескольких уровней улучшения для проигрывания или воспроизведения видеоинформации с желаемым уровнем качества. Аналогичным образом, блок многоадресного управления аудио- видеоинформацией (AVMCU) может выбрать видеоинформацию из базового уровня и одного или нескольких уровней улучшения для одного участника видеоконференции на основе такой информации, как доступная в данный момент полоса пропускания сети и пропускная способность приемника при декодировании. Также описаны и заявлены другие варианты.
Краткое описание чертежей
Фиг. 1 иллюстрирует вариант системы видеозаписи и воспроизведения.
Фиг. 2 иллюстрирует вариант общей системы видеокодера.
Фиг. 3 иллюстрирует вариант общей системы видеодекодера.
Фиг. 4 иллюстрирует вариант иерархии уровней видео.
Фиг. 5 иллюстрирует вариант первого видеопотока.
Фиг. 6 иллюстрирует вариант второго видеопотока.
Фиг. 7 иллюстрирует вариант третьего видеопотока.
Фиг. 8 иллюстрирует вариант четвертого видеопотока.
Фиг. 9 иллюстрирует вариант логической блок-схемы.
Фиг. 10 иллюстрирует вариант первой модифицированной видеосистемы.
Фиг. 11 иллюстрирует вариант второй модифицированной видеосистемы.
Фиг. 12 иллюстрирует вариант вычислительной среды.
Подробное описание изобретения
В различных устройствах мультимедийной обработки могут быть реализованы видеокодер и/или видеодекодер (называемые вместе кодеком) для выполнения на некотором уровне сжатия цифрового мультимедийного контента, например, цифрового видео. Выбранный уровень сжатия может изменяться в зависимости от ряда факторов, таких как: тип источника видео; тип способа сжатия видео; полоса пропускания или протокол, доступный для линии связи; вычислительные ресурсы или ресурсы памяти, доступные для данного приемного устройства; тип устройства отображения, используемого для воспроизведения цифрового видео, и т.д. Будучи реализованным, устройство мультимедийной обработки, как правило, ограничено по уровню сжатия, установленному видеокодеком как для операций кодирования, так и операций декодирования. Такое решение, как правило, характеризуется очень малой гибкостью. Если желательно иметь разные уровни сжатия, устройство мультимедийной обработки, как правило, использует отдельный видеокодек для каждого уровня сжатия. Такое техническое решение может потребовать использование множества видеокодеков на одно устройство мультимедийной обработки, что повышает сложность и увеличивает затраты на устройство мультимедийной обработки.
Для решения этих и других проблем могут быть предложены различные варианты, связанные с методиками кодирования и декодирования с множественным разрешением. Масштабируемый видеокодер может кодировать цифровую видеоинформацию в виде множества уровней видео в общем видеопотоке, где каждый уровень видео предлагает один или несколько уровней пространственного разрешения и/или временного разрешения. Видеокодер может мультиплексировать цифровую видеоинформацию для множества уровней видео, например, базовый уровень и уровни улучшения, в один общий видеопоток. Видеодекодер может демультиплексировать или избирательно декодировать видеоинформацию из общего видеопотока для извлечения видеоинформации из базового уровня и одного или нескольких уровней улучшения с целью проигрывания или воспроизведения видеоинформации с желаемым уровнем качества, как правило, определенном в единицах отношения сигнал-шум (SNR) или других показателях. Видеодекодер может избирательно декодировать видеоинформацию с использованием различных стартовых кодов, определенных для каждого уровня видео. Аналогичным образом, блок AVMCU может напрямую выбрать указанный базовый уровень и только поднабор уровней улучшения для одного или нескольких участников на основе такой информации, как доступная в данный момент полоса пропускания и пропускная способность декодера. Блок AVMCU выбирает уровни, используя стартовые коды в битовом видеопотоке.
Пространственное разрешение может относиться в общем случае к мере точности в отношении деталей измеряемого пространства. В контексте цифрового видео пространственное разрешение может быть измерено или выражено в виде количества пикселей в одном кадре, снимке или изображении. Например, размер цифрового изображения, составляющий 640 × 480 пикселей, равен 326688 отдельным пикселям. В общем случае изображения с более высоким пространственным разрешением состоят из большего количества пикселей, чем изображения с более низким пространственным разрешением. Пространственное разрешение может влиять, среди прочего, на качество отображения для видеокадра, снимка или изображения.
Временное разрешение в общем случае может относиться к точности конкретного измерения в отношении времени. В контексте цифрового видео временное разрешение может измеряться или выражаться в виде частоты кадров или количества кадров видеоинформации, записываемых за одну секунду, например, 15 кадров/с, 30 кадров/с, 60 кадров/с и т.д. В общем случае более высокое временное разрешение связано с большим количеством кадров/с, чем более низкое временное разрешение. Временное разрешение может, среди прочего, влиять на формирование движения для последовательности видеоизображений или кадров. Видеопоток или битовый поток может относиться к непрерывной последовательности сегментов (например, бит или байт), представляющих аудио- и/или видеоинформацию.
В одном варианте масштабируемый видеокодер может, например, кодировать цифровую видеоинформацию в виде базового уровня и одного или нескольких уровней временного и/или пространственного улучшения. Базовый уровень может обеспечить базовый или минимальный уровень пространственного разрешения и/или временного разрешения для цифровой видеоинформации. Уровни временного и/или пространственного улучшения могут обеспечить улучшенные масштабируемые уровни пространственного разрешения и/или уровень временного разрешения для цифровой видеоинформации. Для схематического описания различных уровней видео в видеопотоке могут быть заданы различные типы точек входа и стартовых кодов. Таким образом, один масштабируемый видеокодер может обеспечить и мультиплексировать множество уровней пространственного разрешения и/или временного разрешения в одном видеопотоке.
В различных вариантах избирательное декодирование цифровой видеоинформации из данного уровня кодированного видеопотока для обеспечения желаемого уровня пространственного разрешения и/или временного разрешения для данного устройства мультимедийной обработки может быть обеспечено несколькими разными видеодекодерами. Например, один тип видеодекодера может быть способен декодировать базовый уровень из видеопотока, в то время как другой тип видеодекодера может декодировать базовый уровень и один или несколько улучшенных уровней из видеопотока. Устройство мультимедийной обработки может различными способами комбинировать цифровую видеоинформацию, декодированную из каждого уровня видео, для обеспечения различных уровней качества видео с точки зрения пространственного разрешения и/или временного разрешения. Затем устройство мультимедийной обработки может воспроизвести декодированную цифровую видеоинформацию с выбранным уровнем пространственного разрешения и временного разрешения на одном или нескольких дисплеях.
Масштабируемые видеокодер и видеодекодер, или видеокодер и видеодекодер с множественным разрешением могут обеспечить ряд преимуществ по сравнению со стандартными видеокодерами и видеодекодерами. Например, могут быть предложены различные услуги масштабированного или дифференцированного цифрового видео с использованием одного масштабируемого видеокодера и одного или нескольких типов видеодекодеров. Существующие видеодекодеры способны декодировать цифровую видеоинформацию из базового уровня видеопотока без необходимости обращения к уровням улучшения, в то время как усовершенствованные видеодекодеры способны обращаться как к базовому уровню, так и к одному или нескольким улучшенным уровням в том же видеопотоке. В другом примере для каждого уровня могут быть использованы разные способы шифрования, что обеспечивает управление доступом к каждому уровню. Аналогичным образом, каждому уровню для авторизации доступа к нему могут быть присвоены разные цифровые права. Еще в одном примере уровень пространственного и/или временного разрешения может быть увеличен или уменьшен на основе типа источника видео; типа способа сжатия видео; полосы пропускания или доступного протокола линии связи; вычислительных ресурсов или ресурсов памяти, доступных для данного приемного устройства; типа устройства отображения, используемого для воспроизведения цифрового видео, и т.д.
В частности, такой улучшенный вариант реализации переменного разрешения при видеокодировании имеет преимущество, состоящее в наличии параметров, которые задают в видеопотоке размеры разрешения при отображении. Разрешение при кодировании для участка видео передается на уровне точек входа. Точки входа находятся рядом или на стыке с одной или несколькими субпоследовательностями или группами изображений из видеопоследовательности, которая начинается с кадра с внутренним кодированием (называемого также «I-кадр») и также может содержать один или несколько кадров, закодированных с предсказанием (также называемых «P-кадр» или «B-кадр»), которые кодируются с предсказанием относительно указанного кадра с внутренним кодированием. Таким образом, разрешение при кодировании, сообщенное в данной точке входа, применяется к группе изображений, которые включают в себя I-кадр на базовом уровне и P-кадры или B-кадры, относящиеся к указанному I-кадру.
Последующее описание посвящено вариантам реализации улучшенного способа кодирования с переменным разрешением, который допускает кодирование участков видеопоследовательности с разным разрешением. Примером применения указанного способа является его применение в системе видеокодека. Соответственно способ кодирования с переменным разрешением описан в контексте примерного видеокодера/видеодекодера, использующего синтаксис кодированного битового потока. В частности, один описанный здесь вариант реализации способа кодирования с переменным разрешением реализуется в видеокодеке, который совместим с усовершенствованным профилем стандарта SMPTE 421M (VC-1). В альтернативном варианте этот способ может быть включен в различные варианты реализации и стандарты видеокодека, которые в деталях могут отличаться от описанного ниже примерного видеокодека и синтаксиса.
На фиг. 1 показан вариант реализации системы 100 видеозаписи и воспроизведения. На фиг. 1 показана система 100 видеозаписи и воспроизведения, использующая видеокодек, в котором реализован способ кодирования с переменным разрешением в типовом приложении или пользовательском сценарии. Система 100 видеозаписи и воспроизведения обычно включает в себя источник видео/кодер 12, который записывает и кодирует видеоконтент от источника 110 входного цифрового видео в виде сжатого битового видеопотока по каналу 140 связи, и видеоплеер/декодер 150, который принимает и декодирует видеоинформацию из канала и отображает ее на видеодисплее 170. Некоторые примеры указанных систем, в которых может быть реализован описанный ниже видеокодек с переменным разрешением при кодировании, охватывают системы, в которых видеозапись, кодирование, декодирование и воспроизведение выполняются в одном устройстве, а также системы, в которых эти операции выполняются в отдельных устройствах, находящихся в разных местах. Например, цифровой видеорекордер или персональный компьютер с картой селектора (тюнера) телевизионных каналов может записывать и кодировать видео в накопителе на жестких дисках, а также считывать, декодировать и отображать на мониторе видеоинформацию из накопителя на жестких дисках. В другом примере издатель или телевещатель коммерческого видео может использовать систему изготовления мастер-дисков, включающую в себя видеокодер, для создания видеопередач (например, через цифровой спутниковый канал или видеопоток Web) или запоминающего устройства (например, магнитная лента или диск), несущего закодированное видео, которое затем используют для распространения этого видео по пользовательским устройствам декодирования и воспроизведения (например, персональный компьютер, видеоплеер, видеоприемник и т.д.).
В показанной здесь системе 100 источник видео/кодер 120 включает в себя препроцессор 122 источника, кодер 124 сжатия источника, мультиплексор 126 и канальный кодер 128. Препроцессор 122 получает несжатое цифровое видео от источника 110 цифрового видео, например, такого как видеокамера, аналоговая телевизионная запись или другие источники, и обрабатывает это видео для ввода в кодер 124 сжатия. Кодер 124 сжатия, примером которого является видеокодер 200, описанный со ссылками на фиг. 2, выполняет сжатие и кодирование видео. Мультиплексор 126 составляет пакеты и доставляет результирующий сжатый битовый видеопоток в канальный кодер 128 для кодирования и передачи по каналу 140 связи. Канал 140 связи может представлять собой канал передачи видео, такой как цифровое телевизионное вещание, спутниковая или иная эфирная передача, либо кабельная, телефонная или иная проводная передача и т.д. Канал 140 связи также может представлять собой носитель записанного видео, такой как компьютерный накопитель на жестких дисках или диск другого типа, ленту, оптический диск (DVD) или иной съемный носитель с записью. Канальный кодер 128 кодирует сжатый битовый видеопоток в виде контейнера файлов, сигнала несущей для передачи или т.п.
В видеоплеере/декодере 150 канальный декодер 152 декодирует сжатый битовый видеопоток в канале 140 связи. Демультиплексор 154 демультиплексирует сжатый битовый видеопоток и доставляет его из канального декодера в декодер 156 сжатия, примером которого является видеодекодер 300, описанный со ссылками на фиг. 3. Затем декодер сжатия декодирует и восстанавливает видео из сжатого битового видеопотока. Наконец, постпроцессор 158 обрабатывает видео, подлежащее отображению на видеодисплее 170. Примеры операций постобработки включают в себя деблокирование, подавление периодически повторяющихся помех или иное устранение артефактов, преобразование со сжатием диапазона, цветовое преобразование и иные подобные операции.
На фиг. 2 представлена блок-схема обобщенного видеокодера 200, а на фиг. 3 - блок-схема обобщенного видеодекодера 300, в которых может быть реализован указанный способ кодирования с переменным разрешением. Взаимосвязи между модулями в кодере и декодере указывают на основной поток информации в кодере и декодере, в то время как другие взаимосвязи для ясности опущены. В частности, на фигурах 2 и 3 не показана вспомогательная информация, указывающая настройки кодера, режимы, таблицы и т.д., используемые для видеопоследовательности, кадра, макроблока, блока и т.д. Указанная вспомогательная информация пересылается в выходном битовом потоке, как правило, после энтропийного кодирования вспомогательной информации. Форматом выходного битового потока может быть, например, формат SMPTE VC-1, формат SMPTE VC-1, адаптированный для передачи в реальном времени, формат H.263, формат H.264 или другие форматы для видео.
В одном варианте кодер 200 и декодер 300 имеют, например, блочную основу и используют формат макроблока 4:2:0, причем каждый макроблок включает в себя 4 блока яркости 8 × 8 (время от времени рассматриваемые как один макроблок 16 × 16) и два блока цветности 8 × 8. В альтернативном варианте кодер 200 и декодер 300 имеют объектную основу, используют разные форматы макроблока или блока или выполняют операции на наборах пикселей разного размера или конфигурации, отличных от блоков 8 × 8 и макроблоков 16 × 16. Макроблок можно использовать для представления либо прогрессивного, либо чересстрочного видеоконтента.
Способы и инструменты масштабируемого видеокодирования и видеодекодирования в различных вариантах изобретения могут быть реализованы в видеокодере и/или видеодекодере. Видеокодеры и видеодекодеры могут реализовать указанные способы в различных модулях, причем эти различные модули могут быть связаны друг с другом и могут осуществлять друг с другом связь различными путями. Описанные здесь модули и взаимосвязи являются лишь примерами, а не ограничениями. В зависимости от варианта реализации и требуемого типа сжатия, модули видеокодера или видеодекодера могут быть добавлены, опущены, разбиты на множество модулей, объединены с другими модулями и/или заменены подобными модулями. В альтернативных вариантах видеокодеры или видеодекодеры с разными модулями и/или другими конфигурациями модулей могут выполнять один или несколько из описанных способов.
Обычно способы сжатия видео включают в себя внутрикадровое сжатие и межкадровое сжатие. В способах внутрикадрового сжатия сжимаются отдельные кадры, которые обычно называют I-кадрами, ключевыми кадрами или опорными кадрами. В способах межкадрового сжатия кадры сжимаются со ссылками на предыдущие и/или последующие кадры, и такие кадры обычно называют предсказанными кадрами. Примерами предсказанных кадров являются предсказуемый (P), суперпредсказуемый (SP) кадр и «бипредсказуемый» или двунаправленный (B) кадр. Предсказанный кадр представляют на основе предсказания с компенсацией движения (или различия), исходя из одного или нескольких других кадров. Предсказанный остаток представляет собой различие между тем, что было предсказано, и оригинальным кадром. В противоположность этому, I-кадр, или ключевой кадр, сжимают без обращения к другим кадрам.
Видеокодер, как правило, принимает последовательность видеокадров, включающую в себя текущий кадр, и создает на выходе сжатую видеоинформацию. Кодер сжимает предсказанные кадры и ключевые кадры. Большинство компонентов кодера используются для сжатия как ключевых кадров, так и предсказанных кадров. Конкретные операции, выполняемые указанными компонентами, могут изменяться в зависимости от типа сжимаемой информации.
На фиг. 2 представлена блок-схема общей системы 200 видеокодера. Система 200 кодера принимает последовательность видеокадров, включая текущий кадр 205, и создает на выходе сжатую видеоинформацию 295. В конкретных вариантах видеокодеров, как правило, используется один вариант или дополненная версия обобщенного кодера 200.
Система 200 кодера сжимает предсказанные кадры и ключевые кадры. В иллюстративных целях на фиг. 2 показан путь ключевых кадров через систему 200 кодера и путь кадров, предсказанных напрямую. Многие компоненты системы 200 кодера используются для сжатия как ключевых кадров, так и предсказанных кадров. Конкретные операции, выполняемые этими компонентами, могут изменяться в зависимости от типа сжимаемой информации.
Предсказанный кадр (например, P-кадр, SP-кадр и B-кадр) представляют на основе предсказания (или различия) исходя из одного или нескольких других кадров. Остаток предсказания представляет собой различие между тем, что было предсказано, и исходным кадром. В противоположность этому, ключевой кадр (например, I-кадр) сжимают без обращения к другим кадрам.
Если текущий кадр 205 является напрямую предсказанным кадром, то блок 210 оценки движения оценивает движение макроблоков или других наборов пикселей (например, блоков 16 × 8, 8 × 16 или 8 × 8) текущего кадра 205 относительно опорного кадра, который является восстановленным предыдущим кадром 225, хранящимся в хранилище 220 кадров. В альтернативных вариантах опорный кадр является более поздним кадром, либо текущий кадр является кадром с двунаправленным предсказанием. Блок 210 оценки движения в качестве дополнительной информации выводит информацию 215 о движении, например, векторы движения. Компенсатор 230 движения использует информацию 215 о движении для восстановленного предыдущего кадра 225 с целью формирования текущего кадра 235 с компенсацией движения. Однако предсказание редко бывает точным, и различие между текущим кадром 235 с компенсацией движения и исходным текущим кадром 205 представляет собой остаток 245 предсказания. В альтернативном варианте блок оценки движения и компенсатор движения используют оценку движения/компенсацию движения другого типа.
Преобразователь частоты преобразует видеоинформацию во временной области в данные частотной области (то есть спектральные). Для видеокадров на основе блоков преобразователь 260 частоты применяет преобразование, описанное в последующих разделах, свойства которого аналогичны дискретному косинусному преобразованию (DCT). В некоторых вариантах преобразователь 260 частоты применяет преобразование частоты к блокам остатков пространственного предсказания для ключевых кадров. Преобразователь 260 частоты может применять преобразования частоты 8 × 8, 8 × 4, 4 × 8 или другой размерности.
Затем квантователь 270 квантует блоки коэффициентов спектральных данных. Квантователь применяет к спектральным данным равномерное скалярное квантование с размером шага, который изменяется на покадровой или иной основе. В альтернативном варианте квантователь применяет к коэффициентам спектральных данных другой тип квантования, например, неравномерное, векторное или неадаптивное квантование, либо непосредственно квантует данные пространственной области в системе кодера, в которой не используются преобразования частоты. Вдобавок к адаптивному квантованию кодер 200 может использовать отбрасывание кадров, адаптивную фильтрацию или другие способы управления скоростью.
Если для последующей оценки/компенсации движения необходим восстановленный текущий кадр, обратный квантователь 276 выполняет обратное квантование квантованных коэффициентов спектральных данных. Затем обратный преобразователь 266 частоты выполняет операции, обратные операциям преобразователя 260 частоты, создавая восстановленный остаток предсказания (для предсказанного кадра) или восстановленный ключевой кадр. Если текущий кадр 205 был ключевым кадром, то в качестве восстановленного текущего кадра берется этот восстановленный ключевой кадр. Если текущий кадр 205 был предсказанным кадром, то восстановленный остаток предсказания добавляется к текущему кадру 235 с компенсацией движения для формирования восстановленного текущего кадра. В хранилище 220 кадров выполняется буферизация восстановленного текущего кадра для его использования при предсказании следующего кадра. В некоторых вариантах кодер использует деблокирующий фильтр для восстановленного кадра с целью адаптивного сглаживания разрывов в блоках кадров.
Энтропийный кодер 280 сжимает выходной сигнал квантователя 270, а также некоторую дополнительную информацию (например, информацию 215 о движении, размер шага квантования). Типовые способы энтропийного кодирования включают в себя арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, кодирование длин серий, LZ кодирование, словарное кодирование и их комбинации. Энтропийный кодер 280 обычно использует различные способы кодирования для разного вида информации (например, DC коэффициенты, AC коэффициенты, дополнительная информация разных видов) и может осуществлять выбор из множества кодовых таблиц в рамках конкретного способа кодирования.
Энтропийный кодер 280 помещает сжатую видеоинформацию 295 в буфер 290. В адаптивные модули битрейта возвращается индикатор уровня буфера. Сжатая видеоинформация 295 извлекается из буфера 290 с постоянным или относительно постоянным битрейтом и запоминается для последующей передачи потока с этим битрейтом. В альтернативном варианте кодер 200 обеспечивает потоковую передачу сжатой видеоинформации немедленно после сжатия.
До или после буфера 290 сжатая видеоинформация 295 может быть подвергнута канальному кодированию для передачи через сеть. При канальном кодировании может осуществляться обнаружение ошибок и коррекция данных применительно к сжатой видеоинформации 295.
На фиг. 3 представлена блок-схема общей системы 300 видеодекодера. Система 300 декодера принимает информацию 395 для сжатой последовательности видеокадров и создает выходной сигнал, содержащий восстановленный кадр 305. В конкретных вариантах видеодекодеров, как правило, используется конкретный вариант или дополненная версия обобщенного декодера 300.
Система 300 декодера выполняет распаковку предсказанных кадров и ключевых кадров. В иллюстративных целях на фиг. 3 показан путь для ключевых кадров через систему 300 декодера и путь для напрямую предсказанных кадров. Многие из компонентов системы 300 декодера используют для сжатия как ключевых кадров, так и предсказанных кадров. Конкретные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа сжимаемой информации.
Буфер 390 принимает информацию 395 для сжатой видеопоследовательности и обеспечивает доступ энтропийного декодера 380 к полученной информации. Буфер 390, как правило, принимает эту информацию со скоростью, практически постоянной во времени, причем буфер 390 включает в себя буфер дрожаний для сглаживания кратковременных изменений полосы пропускания или передачи. Буфер 390 может включать в себя буфер воспроизведения, а также другие буферы. В альтернативном варианте буфер 390 принимает информацию с переменной скоростью. До или после буфера 390 возможно канальное декодирование сжатой видеоинформации и ее обработка с целью обнаружения и коррекции ошибок.
Энтропийный декодер 380 осуществляет энтропийное декодирование подвергнутых энтропийному кодированию квантованных данных, а также подвергнутую энтропийному кодированию дополнительную информацию (например, информацию о движении, размер шага квантования), используя, как правило, операцию, обратную энтропийному кодированию, которая выполняется кодером. Способы энтропийного декодирования включают в себя арифметическое декодирование, дифференциальное декодирование, декодирование Хаффмана, декодирование длин серий, LZ декодирование, словарное декодирование и их комбинации. В энтропийном декодере 380 часто используют разные способы декодирования для информации разного вида (например, DC коэффициенты, AC коэффициенты, разного рода дополнительная информация), а также возможен выбор из множества кодовых таблиц в рамках конкретного способа декодирования.
Если кадр 305, подлежащий восстановлению, является напрямую предсказанным кадром, компенсатор 330 движения использует информацию 315 о движении для опорного кадра 325 с целью формирования предсказания 335 восстанавливаемого кадра 305. Например, компенсатор 330 движения использует вектор движения макроблока для обнаружения соответствующего макроблока в опорном кадре 325. Таким образом, предсказание 335 представляет собой набор видеоблоков с компенсацией движения из ранее декодированного видеокадра. Буфер 320 кадров запоминает ранее восстановленные кадры для их использования в качестве опорных кадров. В альтернативном варианте компенсатор движения применяет компенсацию движения другого типа. Предсказание, осуществляемое компенсатором движения, редко бывает безошибочным, так что декодер 300 также восстанавливает остатки предсказания.
Когда декодеру требуется восстановленный кадр для последующей компенсации движения, запоминающее устройство 320 кадров запоминает восстановленный кадр для его использования при предсказании следующего кадра. В некоторых вариантах кодер использует деблокирующий фильтр для восстановленного кадра с целью адаптивного сглаживания разрывов в блоках этого кадра.
Обратный квантователь 370 выполняет обратное квантование энтропийно декодированных данных. Обычно обратный квантователь использует для энтропийно декодированных данных равномерное скалярное обратное квантование с размером шага, который изменяется на покадровой основе или иной основе. В альтернативном варианте обратный квантователь применяет другой тип обратного квантования к этим данным, например, неравномерное, векторное или неадаптивное квантование, либо выполняет напрямую обратное квантование данных пространственной области в системе декодера, в которой не используются обратные преобразования частоты.
Обратный преобразователь 360 частоты преобразует квантованные данные частотной области в видеоинформацию пространственной области. Для видеокадров на блочной основе обратный преобразователь 360 частоты применяет обратное преобразование, описанное в последующих разделах. В некоторых вариантах обратный преобразователь 360 частоты применяет обратное преобразование частоты к блокам остатков пространственного предсказания для ключевых кадров. Обратный преобразователь 360 частоты может использовать обратные преобразования частоты 8 × 8, 8 × 4, 4 × 8 или другой размерности.
Методика кодирования с переменным разрешением позволяет декодеру поддерживать желаемое разрешение при отображении видео, что предоставляет кодеру возможность гибкого выбора для кодирования какого-либо участка или участков видео на множестве уровней разрешения при кодировании, которое может отличаться от разрешения при отображении. Кодер может кодировать некоторые изображения из видеопоследовательности при более низких значениях разрешения для достижения более низкого битрейта, размера отображения или качества отображения. Если необходимо использовать более низкое разрешение при кодировании, кодер выполняет фильтрацию и понижающую дискретизацию изображения (изображений) до более низкого разрешения. При декодировании декодер избирательно декодирует эти участки видеопотока с более низким разрешением при кодировании для отображения с данным разрешением при отображении. Декодер может также выполнить повышающую дискретизацию видео с более низким разрешением перед отображением на экране с адресуемостью с большим количеством пикселей. Аналогичным образом кодер может закодировать некоторые изображения из видеопоследовательности с более высокими значениями разрешения для достижения более высокого битрейта при кодировании, размера отображения или качества отображения. При необходимости использования более высокого разрешения при кодировании фильтр кодера сохраняет более крупный участок с разрешением исходного видео. Обычно это выполняется путем кодирования дополнительного уровня, представляющего различие между видео с более высоким разрешением и версией уровня с более низким разрешением, интерполированного для согласования размера видео с более высоким разрешением. Например, исходное видео может иметь разрешение по горизонтали и вертикали, составляющее 640 и 480 пикселей соответственно. Кодированный базовый уровень может иметь 160 × 120 пикселей. Первый уровень пространственного улучшения может обеспечить разрешение 320 × 240 пикселей. Этот уровень пространственного улучшения можно получить путем понижающей дискретизации исходного видео с коэффициентом 2 для разрешения по горизонтали и вертикали. Кодирование выполняется путем вычисления различия между видео 320 × 240 и базовым уровнем 160 × 120, интерполированным с коэффициентом 2 по горизонтали и вертикали, для согласования с разрешением 320 × 240 первого уровня улучшения. При декодировании декодер избирательно декодирует эти участки видеопотока с указанной базой и более высоким пространственным разрешением при кодировании для отображения с данным разрешением или для обеспечения более высокой степени детализации в видео независимо от разрешения для отображения.
В различных вариантах видеокодер 200 может обеспечить переменное разрешение при кодировании на покадровой или иной основе. Разрешения различного уровня при кодировании могут быть реализованы в виде множества уровней видео, где каждый уровень видео обеспечивает разный уровень пространственного разрешения и/или временного разрешения для данного набора видеоинформации. Например, видеокодер 200 может быть скомпонован для кодирования видеоинформации в виде видеопотока с базовым уровнем и уровнем улучшения. Видеоинформация может содержать, например, одну или несколько кадровых последовательностей, кадры, изображения, снимки, стоп-кадры, блоки, макроблоки, наборы пикселей или иной определенный набор видеоданных (называемых общим термином «кадры»). Базовый уровень может иметь первый уровень пространственного разрешения и первый уровень временного разрешения. Уровень улучшения может повысить первый уровень пространственного разрешения, первый уровень временного разрешения или оба уровня. Может быть множество уровней улучшения для обеспечения желаемого уровня зернистости при улучшении пространственного разрешения или временного разрешения для данного набора видеоинформации. Более подробно уровни видео описываются со ссылками на фиг. 4.
На фиг. 4 показан примерный вариант иерархии уровней видео. На фиг. 4 дано иерархическое представление множества независимых уровней (400) видео для кодированного цифрового видео в видеопотоке. Как показано на фиг. 4, уровни 400 видео могут содержать базовый уровень (BL). Уровень BL может представлять базовый уровень пространственного разрешения и базовый уровень временного разрешения (например, частота кадров) видеопотока. В одном варианте базовый уровень временного разрешения может содержать T кадров/с, где Т = 15 кадров. Кодирование видео осуществляется так, что декодирование последовательных видеокадров BL зависит только от предыдущих видеокадров из того же уровня (например, один или несколько P-, SP- или B-кадров в базовом уровне).
Уровни 400 видео могут также содержать один или несколько улучшенных уровней. Например, улучшенные уровни могут включать в себя один или несколько уровней пространственного улучшения, таких как первый уровень пространственного улучшения (SL0), второй уровень пространственного улучшения (SL1), третий уровень пространственного улучшения (SL2). Уровень SL0 представляет уровень пространственного улучшения, который можно добавить к уровню BL для обеспечения видео с более высоким разрешением при той же частоте кадров, что и в последовательности BL (например, 15 кадров/с). Уровень SL1 представляет уровень пространственного улучшения, который можно добавить к уровню BL для обеспечения видео с более высоким разрешением при средней частоте кадров, которая выше, чем в последовательности BL. В одном варианте средняя частота кадров может составлять, например, T/2 кадров/с, где T = 30 кадров. Уровень SL2 представляет уровень пространственного улучшения, который можно добавить к уровню BL для обеспечения видео с более высоким разрешением при более высокой частоте кадров, которая даже выше, чем в последовательности BL. В одном варианте более высокая частота кадров может составлять Т кадров/с, где Т = 60 кадров. Должно быть ясно, что приведенные значения Т являются лишь примерами, а не ограничением.
Улучшенные уровни также могут включать в себя один или несколько уровней временного улучшения, например, первый уровень временного улучшения (TL1) и второй уровень временного улучшения (TL2). Уровень TL1 представляет уровень временного улучшения, который можно добавить к уровню BL для создания того же видео с более низким разрешением, что и BL, но с частотой кадров, вдвое превышающей частоту кадров для кадров BL. В результате в этой последовательности улучшается воспроизведение движения. Уровень TL2 представляет уровень временного улучшения, который удваивает частоту кадров уровней BL и TL1. Качество воспроизведения движения на этом уровне выше, чем на уровне BL или TL.
Имеется множество комбинаций, доступных для использования базового уровня и уровней улучшения, как показано пунктирными стрелками на фиг. 4. Некоторые комбинации как пример, но не ограничение, могут включать в себя следующее:
BL
BL+SL0
BL+TL1
BL+TL1+TL2
BL+SL0+TL1+SL1
BL+SL0+TL1+SL1+TL2+SL2
Эти и другие комбинации уровней видео могут обеспечить постоянство качества видео во времени. В некоторых случаях, чтобы обеспечить постоянство качества видео во времени, может потребоваться выбор одинакового количества уровней пространственного улучшения для всех временных уровней.
Как более подробно описано ниже, кодер 200 задает максимальное разрешение в заголовке последовательности в сжатом битовом видеопотоке 295 (фиг. 2). Кодирование уровня разрешения при кодировании в заголовке последовательности битового видеопотока по сравнению с вариантом, когда информация заголовка передается вне битового потока, например, в информации заголовка в контейнерном файловом формате или формате несущей для передачи, имеет преимущество, состоящее в том, что это максимальное разрешение может непосредственно декодироваться видеодекодером. Максимальное разрешение не должно передаваться отдельно в видеодекодер декодером файла контейнера или несущей для передачи (например, канальным декодером 152).
Кодер 200 дополнительно сигнализирует о том, что группа из одного или нескольких изображений, следующих за точкой входа в битовом видеопотоке, кодируется с более низким разрешением с использованием заданного флага или стартового кода в заголовке точки входа. В некоторых вариантах, если этот флаг указывает на более низкое или более высокое разрешение при кодировании, указанный кодированный размер может быть закодирован также в заголовке точки входа.
Сжатый битовый видеопоток 295 (фиг. 2) включает в себя информацию для последовательности сжатых прогрессивных видеокадров или других изображений (например, чересстрочный кадр или изображение в чересстрочном формате полей). Битовый поток 295 сконфигурирован в виде нескольких иерархических уровней, которые декодируются декодером, например, декодером 300 на фиг. 3. Высшим уровнем является уровень последовательности, который содержит информацию для всей последовательности кадров. Кроме того, каждый сжатый видеокадр построен из данных, которые структурированы в виде трех иерархических уровней: изображение, макроблок и блок (сверху вниз). В альтернативных вариантах реализации, где применяется технология кодирования с переменным разрешением, можно использовать другие синтаксические структуры, имеющие множество различных сочетаний синтаксических элементов.
Кроме того, сжатый битовый видеопоток может содержать одну или несколько точек входа. Действительные точки входа в битовом потоке представляют собой позиции в элементарном битовом потоке, с которых система мультимедийной обработки может декодировать или обрабатывать битовый поток без необходимости иметь какую-либо предыдущую информацию (биты) в этом битовом потоке. Заголовок точки входа (называемый также заголовком группы изображений), как правило, содержит важную информацию об инициализации декодера, такую как, например, горизонтальный и вертикальный размеры видеокадров, требуемые состояния буфера элементарного потока и параметры квантователя. Кадры, которые можно декодировать без обращения к предшествующим кадрам, называют независимыми или ключевыми кадрами.
Сигнализация о точке входа в битовом потоке обеспечивается индикатором точки входа. Назначением индикатора точки входа является сигнализация о присутствии специальной позиции в битовом потоке для начала или возобновления декодирования, например, когда отсутствует зависимость от прошлых декодированных полей или кадров видео для декодирования видеокадра, следующего непосредственно за индикатором точки входа. Индикаторы точки входа и связанные с ними структуры точек входа могут быть введены в битовый поток с регулярными или нерегулярными интервалами. Таким образом, кодер может использовать разные стратегии управления вводом индикаторов точки входа в битовый поток. Как правило, индикаторы точки входа и соответствующие структуры вводят в битовый видеопоток на регулярных кадровых позициях, но в некоторых сценариях (например, восстановление после ошибок или быстрое изменение в канале) периодический характер ввода точек входа может быть изменен. В качестве примера ниже приведена таблица 1 для структуры точек входа в элементарном видеопотоке VC-1.
Таблица 1Битовый поток на уровне точек входа для улучшенного профиля
ENTRYPOINT LAYER() {
Количество бит
Дескриптор
BROKEN_LINK
1
uimsbf
CLOSED_ENTRY
1
uimsbf
PANSCAN_FLAG
1
uimsbf
REFDIST_FLAG
1
uimsbf
LOOPFILTER
1
uimsbf
FASTUVMC
1
uimsbf
EXTENDED_MV
1
uimsbf
DQUANT
2
uimsbf
VSTRANSFORM
1
uimsbf
OVERLAP
1
uimsbf
QUANTIZER
2
uimsbf
If(HRD_PARAM_FLAG == 1) {
HRD_FULLNESS()
}
CODED_SIZE_FLAG
1
uimsbf
If(CODED_SIZE_FLAG == 1) {
CODED_WIDTH
12
uimsbf
CODED_HEIGHT
12
uimsbf
}
If(EXTENDED_MV == 1) {
EXTENDED_DMV
1
uimsbf
}
RANGE_MAPY_FLAG
1
uimsbf
If(RANGE_MAPY_FLAG == 1) {
RANGE_MAPY
3
uimsbf
}
RANGE_MAPUV_FLAG
1
uimsbf
If(RANGE_MAPUV_FLAG == 1) {
RANGE_MAPUV
3
uimsbf
}
}
В различных вариантах индикаторы точки входа могут быть определены в соответствии с заданным стандартом, протоколом или архитектурой. В некоторых случаях индикаторы точки входа могут быть определены для расширения данного стандарта, протокола или архитектуры. В следующих таблицах 2 и 3 определены различные индикаторы точки входа в виде суффиксов стартового кода и даны их соответствующие значения, подходящие для сегментов битового потока, встроенных в битовый поток SMPTE 421М (VC-1). Стартовые коды должны уникально идентифицироваться, причем разные стартовые коды должны быть предназначены для разных уровней видео, таких как базовый уровень и один или несколько уровней улучшения. Однако стартовые коды могут использовать аналогичные структурные идентификаторы для уровней видео для облегчения выполнения синтаксического анализа и идентификации. Примерами структурных идентификаторов могут служить, но не только: заголовки последовательностей, заголовки точек входа, заголовки кадров, заголовки полей, заголовки слоев и т.д. Кроме того, для уменьшения вероятности случайного появления в видеопотоке стартовых кодов для данного уровня видео можно использовать способы эмуляции стартовых кодов.
В зависимости от конкретного стартового кода можно активизировать или запустить специальный синтаксический структурный анализатор и декодер для каждого уровня видео для декодирования видеоинформации из видеопотока. Этот специальный синтаксический структурный анализатор и декодер могут реализовать особый набор инструментов декодера, например, необходимые опорные кадры, квантователи, управление скоростью, режим компенсации движения и т.д., подходящие для данного уровня видео. Указанные варианты не ограничиваются этим контекстом.
В различных вариантах суффиксы стартового кода могут обладать обратной совместимостью с текущим битовым потоком VC-1, так что существующие VC-1 декодеры должны быть способны продолжать работу, даже если битовый поток VC-1 включает в себя указанные новые сегменты. Суффиксы стартового кода можно использовать для расширения и достраивания текущего формата битового видеопотока SMPTE 421М для поддержки масштабируемого представления видеоинформации.
Таблица 2
Суффикс стартового кода
Значение
0x00
Зарезервировано (SMPTE)
0x01-0x09
Зарезервировано (SMPTE)
0x0A
Конец последовательности
0x0B
Слой
0x0C
Поле
0x0D
Кадр
0x0E
Заголовок точки входа
0x0F
Заголовок последовательности
0x10-0x1A
Зарезервировано (SMPTE)
0x1B
Пользовательские данные уровня слоя
0x1C
Пользовательские данные уровня поля
0x1D
Пользовательские данные уровня кадра
0x1E
Пользовательские данные уровня точки входа
0x1F
Пользовательские данные уровня последовательности
0x20-0x7F
Зарезервировано (SMPTE)
0x80-0xFF
Запрещено
Суффиксы стартового кода, показанные в таблице 2, могут быть приложены в конце 3-байтовой последовательности 0х000001 для создания различных стартовых кодов. Указанные стартовые коды интегрированы в битовый поток VC-1, чтобы дать возможность видеодекодерам определять, какой участок битового потока они подвергают в данный момент синтаксическому анализу. Например, стартовый код последовательности объявляет о появлении заголовка последовательности в битовом потоке VC-1. Случаи появления битовых последовательностей, выглядящих как стартовые коды, могут быть исключены посредством предупреждения эмуляции стартового кода, которое разбивает указанные последовательности на несколько частей битового потока, которые больше не эмулируют стартовый код.
В различных вариантах добавление фрагментов битового потока, представляющих дополнительные уровни видео, достигается путем добавления новых стартовых кодов для идентификации и сигнализации о присутствии фрагментов уровня улучшения в битовом потоке. Например, при 2 пространственных уровнях и 3 временных уровнях, показанных на фиг. 4, можно присвоить следующие суффиксы для сигнализации о сегментах битового потока различных уровней применительно к контентам, которые они несут, как показано в таблице 3.
Таблица 3
Суффикс стартового кода
Значение
0x00
Зарезервировано (SMPTE)
0x01-0x09
Зарезервировано (SMPTE)
0x0A
Конец последовательности
0x0B
Слой
0x0C
Поле
0x0D
Кадр
0x0E
Заголовок точки входа
0x0F
Заголовок последовательности
0x10-0x1A
Зарезервировано (SMPTE)
0x1B
Пользовательские данные уровня слоя
0x1C
Пользовательские данные уровня поля
0x1D
Пользовательские данные уровня кадра
0x1E
Пользовательские данные уровня точки входа
0x1F
Пользовательские данные уровня последовательности
0x20
Уровень слоя-SL0
0x21
Уровень слоя-TL1
0x22
Уровень слоя-SL1
0x23
Уровень слоя-TL2
0x24
Уровень слоя-SL2
0x30
Уровень поля-SL0
0x31
Уровень поля-TL1
0x32
Уровень поля-SL1
0x33
Уровень поля-TL2
0x34
Уровень поля-SL2
0x40
Уровень кадра-SL0
0x41
Уровень кадра-TL1
0x42
Уровень кадра-SL1
0x43
Уровень кадра-TL2
0x44
Уровень кадра-SL2
0x50
Уровень точки входа-SL0
0x51
Уровень точки входа-TL1
0x52
Уровень точки входа-SL1
0x53
Уровень точки входа-TL2
0x54
Уровень точки входа-SL2
0x60
Уровень последовательности-SL0
0x61
Уровень последовательности-TL1
0x62
Уровень последовательности-SL1
0x63
Уровень последовательности-TL2
0x64
Уровень последовательности-SL2
0x80-0xFF
Запрещено
Ввод фрагментов должен соответствовать набору определенных правил обзора. Например, информация SL0 уровня последовательности должна следовать за информацией BL уровня последовательности и т.д. Более подробно это описывается со ссылками на фигуры 5-8, где исходный битовый поток VC-1 представляет собой, например, только уровень BL видеоинформации.
На фиг. 5 представлена схема синтаксиса для видеопотока 500. Фиг. 5 иллюстрирует видеопоток 500, который представляет битовый поток VC-1, имеющий только видеокадры, что означает, что контент является прогрессивным, а не чересстрочным видео. Это типично для различных сценариев связи в реальном времени, где источники видео создают только прогрессивное видео, например, Web-камеры и т.д.
Как показано на фиг. 5, видеопоток 500 может включать в себя первый блок, содержащий стартовый код последовательности и заголовок последовательности для последовательности видеокадров. Второй блок может содержать стартовый код точки входа и заголовок точки входа. Третий блок может содержать стартовый код кадра и заголовок кадра для первого видеокадра. Четвертый блок может содержать действительную полезную нагрузку кадра. Пятый блок может содержать стартовый код кадра и заголовок кадра для второго видеокадра. Так может продолжаться для каждого кадра в последовательности кадров для данного набора цифрового видеоконтента.
Для реализации кодирования с множественным разрешением с использованием разных уровней видео в видеопоток 500 можно ввести один или несколько стартовых кодов из таблицы 2 и/или таблицы 3 для указания или схематического описания видеосегмента BL и видеосегментов уровней улучшения (например, SL0, SL1, SL2, TL1, TL2 и т.д.). Стрелки внизу показывают позиции, куда вводятся дополнительные заголовки последовательности, заголовки точек входа, заголовки кадров и полезная нагрузка применительно к другим уровням видео в потоке BL VC-1.
На фиг. 6 представлена схема синтаксиса для видеопотока 600. На фиг. 6 показан видеопоток 600, представляющий поток VC-1, аналогичный видеопотоку 500 за исключением мест кодирования каждого кадра в виде набора независимых слоев. Кодирование слоев используют для обеспечения дополнительной устойчивости к ошибкам в сетях связи, где вероятна потеря пакета. При кодировании слоев под угрозой потери пакета оказывается только часть видеокадра, но не весь кадр. На фиг. 6 верхние стрелки указывают различные позиции в видеопотоке 600 для стартовых кодов слоев и заголовков слоев. Нижние стрелки указывают позиции, куда могут быть введены дополнительные уровни видео, связанные с указанными заголовками слоев и полезными нагрузками слоев.
На фиг. 7 показана схема синтаксиса для видеопотока 700. Фиг. 7 иллюстрирует видеопоток 700, представляющий битовый поток VC-1 с чересстрочным видео. В этом случае видеокадр формируется из двух полей видео. Стартовые коды, заголовки и полезные нагрузки видео, относящиеся к первому полю уровня BL, вставлены в битовый поток VC-1 перед стартовым кодом и заголовком второго поля уровня BL. Стартовые коды, заголовки и полезные видео нагрузки, относящиеся ко второму полю уровня BL, вставлены в битовый поток VC-1 перед началом следующего видеокадра.
На фиг. 8 представлена схема синтаксиса для видеопотока 800. Фиг. 8 иллюстрирует видеопоток 800, представляющий битовый поток VC-1, аналогичный видеопотоку 800, за исключением того, где кодируется каждый чересстрочный кадр в виде набора независимых слоев. Стартовые коды, заголовки и полезная нагрузка слоев, принадлежащих дополнительным уровням видео, показаны стрелками в нижней части фиг. 8. Заголовок второго поля BL разграничивает уровень BL и любые дополнительные видеоданные первого поля BL из уровня BL, а также любые дополнительные видеоданные второго поля уровня BL.
Операции для вышеуказанных вариантов могут быть более детально описаны со ссылками на последующие фигуры и сопровождающие их примеры. Некоторые из этих фигур могут включать в себя логическую блок-схему. Хотя представленные здесь фигуры могут включать в себя конкретную логическую блок-схему, должно быть очевидно, что эта логическая блок-схема представляет лишь пример того, как могут быть реализованы описанные здесь общие функциональные возможности. Кроме того, данная логическая блок-схема не обязательно должна выполняться в представленном порядке, пока не указано иное. Вдобавок, данная логическая блок-схема может быть реализована аппаратным элементом, программным элементом, исполняемым процессором, или их комбинацией. Упомянутые варианты не ограничиваются этим контекстом.
На фиг. 9 показан один вариант логической блок-схемы 900 декодера. Логическая блок-схема 900 может представлять операции, выполняемые одним или несколькими описанными здесь вариантами изобретения, такими как система 100 видеозаписи и воспроизведения, видеокодер 200 или видеодекодер 300. Как показано на фиг. 9, синтаксический анализатор для видеодекодера 300 осуществляет в ромбовидном блоке 902 непрерывный контроль видеопотока для стартового кода BL. Если синтаксический анализатор не распознает стартовый код BL, он продолжает цикл через ромбовидный блок 902 пока не произойдет распознавание. Как только синтаксический анализатор распознал стартовый код BL, он получает в блоке 904 заголовок или заголовок + полезную нагрузку, связанную со стартовым кодом. Как только это произошло, синтаксический анализатор проверяет наличие стартовых кодов для дополнительных уровней видео в ромбовидном блоке 906. Если синтаксический анализатор не распознает ни один стартовый код для дополнительных уровней видео в данном видеопотоке или временном интервале, управление переходит к ромбовидному блоку 902. Если синтаксический анализатор распознает стартовый код для дополнительного уровня видео в ромбовидном блоке 906, он получает заголовок или заголовок + полезную нагрузку, связанные с дополнительным уровнем видео, в блоке 908, и управление возвращается в ромбовидный блок 906. Цикл управления между ромбовидным блоком 906 и блоком 908 продолжается столько раз, сколько уровней видео используется в данном битовом потоке VC-1. Когда в ромбовидном блоке 906 стартовый код распознается как код, больше не являющийся одним из дополнительных масштабов видео, синтаксический анализатор возвращается назад и приступает к поиску стартового кода, принадлежащего базовому уровню VC-1 (в ромбовидном блоке 902).
На фиг. 10 показана блок-схема первой модифицированной системы 100 видеозаписи и воспроизведения, где источник видео/кодер 120 включает в себя модуль 1002 шифрования и множество видеоплееров/видеодекодеров 150-1-p, каждый из которых включает в себя модуль 1004 дешифрования. Модуль 1002 шифрования может быть использован для независимого шифрования каждого уровня видео отдельным шифровальным ключом. Модуль 1002 шифрования может обеспечить информацию 1012 для шифрования (например, ключи и шифры для дешифрования) для каждого уровня видео. Доставка этой информации обеспечивается внутри используемой полосы или с помощью других, внешних каналов связи. Кроме того, информация 1012 о шифровании может носить динамический характер и изменяться во времени для повышения безопасности. Как показано на фиг. 10, стрелки 1006-1-q могут представлять базовый уровень, стрелки 1008-1-r могут представлять уровень пространственного улучшения, а стрелки 1010-1-s могут представлять уровень временного улучшения. На основе информации 1012 для дешифрования, полученной от модуля 1002 шифрования, модуль 1004 дешифрования для каждого приемника способен (или не способен) дешифровать каждый уровень видео. Доступность ключей для дешифрования обычно связана со стратегиями безопасности или правами, выданными службой подписки/закупок. Например, видеоплеер/декодер 150-2 способен только принимать и дешифровывать базовый уровень и уровень пространственного улучшения видеопотока, в то время как видеоплеер/декодер 150-1 может декодировать только базовый уровень. Любая попытка со стороны видеоплеера/декодера 150-1-p принять и дешифровать уровень видео, который не авторизован, как показано пунктирными стрелками, будет безуспешной. Таким образом источник видео/кодер 120 может передавать видеопоток с более низким разрешением и видеопоток с более высоким разрешением, связанными с разными платежами или правами доступа. Например, доступность видеопотока с более высоким разрешением (например, для вызова на видеоконференцию) может быть связана с платежом с наценкой за более качественную услугу.
На фиг. 11 представлена блок-схема второй модифицированной системы 100 видеозаписи и воспроизведения, где источник видео/кодер 120 включает себя сервер 1102 управления цифровыми правами (DRM) и множество видеоплееров/декодеров 150-1-p, каждый из которых включает в себя модуль 1104 DRM. Сервер 1102 DRM можно использовать для присваивания каждому уровню видео собственного набора цифровых прав. При вариантах реализации, включающих в себя маршрутизатор 1114 для проведения мультимедийной конференции, каждый уровень видео можно связать с конкретным набором руководящих указаний или стратегий DRM. Маршрутизатор 1114 для проведения мультимедийной конференции под управлением сервера 1102 DRM направляет уровни видео согласно правам, которые были получены для каждого видеоплеера/декодера 150-1-p. Сервер 1102 DRM может предоставить видеоплеерам/декодерам 150-1-p информацию 1112 DRM для каждого уровня видео. Как показано на фиг. 11, стрелки 1106-1-q могут представлять базовый уровень, стрелки 1108-1-r могут представлять уровень пространственного улучшения, а стрелки 1110-1-s могут представлять уровень временного улучшения. Модуль 1104 DRM для каждого приемника на основании информации 1112 DRM, полученной от сервера 1102 DRM, авторизуется (или не авторизуется) для приема или доступа к каждому уровню видео. Доступность информации 1112 DRM обычно связана со стратегиями DRM. Например, видеоплеер/декодер 150-2 способен только принимать и обращаться к базовому уровню и уровню пространственного улучшения видеопотока, в то время как видеоплеер/декодер 150-1 может принимать и обращаться только к базовому уровню. Любая попытка со стороны видеоплеера/декодера 150-1-p принять и обратиться к уровню видео, который не авторизован (это показано пунктирными стрелками), обречена на неудачу. Мультимедийный маршрутизатор 1114 пересылает видеопотоки согласно стратегиям DRM, установленным для каждого из видеоплееров/декодеров 150-1-p. Наличие множества значений разрешения при кодировании, обеспечиваемых источником видео/кодером 120, позволяет организовать и диверсифицировать права доступа, которые могут иметь участники конференции в реальном времени.
На фиг. 12 представлена блок-схема вычислительной среды 1200. Вычислительная среда 1200 может представлять общую системную архитектуру, подходящую для реализации различных вариантов изобретения. Вычислительная среда 1200 может включать в себя множество элементов. Один элемент может иметь любую физическую или логическую структуру, скомпонованную для выполнения конкретных операций. Каждый элемент может быть реализован в виде аппаратного обеспечения, программного обеспечения или любой их комбинации, которые необходимы для данного набора проектных параметров или ограничений на функционирование. Примеры аппаратных элементов могут включать в себя устройства, компоненты, процессоры, микропроцессоры, схемы, элементы схем (например, транзисторы, резисторы, конденсаторы, катушки индуктивности и т.д.), интегральные схемы, прикладные специализированные интегральные схемы (ASIC), программируемые логические устройства (PLD), цифровые процессоры сигналов (DSP), вентильные матрицы, программируемые пользователем (FPGA), блоки памяти, логические элементы, регистры, полупроводниковые приборы, кристаллы, микрокристаллы, наборы микросхем и т.д. Примеры программного обеспечения могут включать в себя любые программные компоненты, программы, приложения, компьютерные программы, прикладные программы, системные программы, машинные программы, программы операционной системы, связующее программное обеспечение, программно-аппаратное обеспечение, программные модули, стандартные программы, стандартные подпрограммы, функции, способы, интерфейсы, программные интерфейсы, прикладные программные интерфейсы (API), наборы команд, вычислительный код, компьютерный код, кодовые сегменты, компьютерные кодовые сегменты, слова, значения, символы, программные объекты или любую их комбинацию. Хотя вычислительное устройство 1200 имеет, как показано на фиг. 1, ограниченное количество элементов, образующих определенную топологию, должно быть ясно, что вычислительная среда 1200 может включать в себя больше или меньше элементов в альтернативных топологиях, необходимых для данного варианта реализации. Указанные варианты не ограничиваются этим контекстом.
В различных вариантах изобретения вычислительная среда 1200 может быть реализована как часть целевого устройства, подходящего для обработки мультимедийной информации. Примеры целевых устройств могут включать в себя, но не только: компьютер, компьютерную систему, компьютерную подсистему, рабочую станцию, терминал, сервер, Web-сервер, виртуальный сервер, персональный компьютер (PC), настольный компьютер, переносной компьютер, компьютер типа «ультра лэптоп», портативный компьютер, карманный компьютер, персональный цифровой помощник (PDA), мобильное вычислительное устройство, сотовый телефон, мультимедийное устройство (например, аудиоустройство, видеоустройство, текстовое устройство и т.д.), мультимедийный плеер, устройство мультимедийной обработки, мультимедийный сервер, систему домашних развлечений, бытовую электронику, устройство для цифровых универсальных дисков (DVD), устройство бытовой видеосистемы (VHS), цифровое устройство VHS, персональный видеомагнитофон, игровую приставку, плеер для компакт-дисков (CD), цифровую камеру, цифровой камкордер, систему видеонаблюдения, систему для видеоконференций, видеотелефонную систему и любое другое электронное, электромеханическое или электрическое устройство. Упомянутые варианты не ограничиваются этим контекстом.
При реализации в виде устройства мультимедийной обработки вычислительная среда 1200 также может быть скомпонована для работы в соответствии с различными стандартами и/или протоколами для мультимедийной обработки. Примеры стандартов мультимедийной обработки включают в себя, но не только: стандарт SMPTE 421М (VC-1); стандарт VC-1, реализованный для осуществления связи в реальном времени; стандарт VC-1, реализованный в виде WMV-9 и его вариантов; стандарт наземного цифрового видеовещания (DVB-T), стандарт ITU/IEC H.263; стандарт видеокодирования для связи с низкой скоростью передачи в битах; Рекомендацию H.263v3 ITU-T, опубликованную в ноябре 2000 года, и/или стандарт ITU/IEC H.264; стандарт видеокодирования для связи со сверхнизким битрейтом; Рекомендацию ITU-T H.264, опубликованную в мае 2003 года; стандарты Экспертной группы по кинематографии (MPEG) (например, MPEG-1, MPEG-2, MPEG-4), и/или стандарты локальной сети высококачественной радиосвязи (HiperLAN). Примеры протоколов мультимедийной обработки включают в себя, но не только: протокол описания сессий (SDP); протокол потоковой передачи в реальном времени (RTSP); протокол транспортировки в реальном времени (RTP); протокол языка синхронизированной мультимедийной интеграции (SMIL); потоки MPEG-2 Transport и MPEG-2 Program и/или протокол Союза провайдеров потоковых мультимедийных интернет-услуг (ISMA). Один вариант реализации описанных здесь способов видеокодирования и видеодекодирования с множественным разрешением может быть включен, например, в усовершенствованный профиль версии 9 WINDOWS MEDIA VIDEO (WMV-9) видеокодека, распространяемого и лицензируемого корпорацией Microsoft (Redmond, Wash., USA), включая последующие исправления и варианты. Указанные варианты изобретения не ограничиваются этим контекстом.
Обратимся к фиг. 12, где вычислительная среда 1200 включает в себя, по меньшей мере, один блок 1210 обработки и память 1220. На фиг. 12 эта минимальная базовая конфигурация 1230 обведена пунктиром. Блок 1210 обработки может быть процессором любого типа, способным выполнять программы, таким как процессор общего назначения, специализированный процессор, мультимедийный процессор, контроллер, микроконтроллер, встроенный процессор, цифровой процессор сигналов (DSP) и т.д. Блок 1210 обработки выполняет считываемые компьютером команды и может представлять собой реальный или виртуальный процессор. В системе многопроцессорной обработки считываемые компьютером команды выполняются множеством блоков обработки для увеличения производительности. Память 1220 может быть реализована с использованием любой считываемой машиной или считываемой компьютером среды, способной запоминать данные, включая как энергозависимую, так и энергонезависимую память. Например, память 1220 может включать в себя память только для считывания (ROM), память с произвольной выборкой (RAM), динамическую RAM (DRAM), DRAM с удвоенной скоростью передачи данных (DDRAM), синхронную DRAM (SDRAM), статическую RAM (SRAM), программируемую ROM (PROM), стираемую программируемую ROM (EPROM), электрически стираемую программируемую ROM (EEPROM), флэш-память, полимерную память, такую как ферроэлектрическая полимерная память, память на аморфных полупроводниках, память на фазовых переходах или ферроэлектрическую память, память на основе кремний-оксид-нитрид-оксид-кремний (SONOS), магнитные или оптические карты, либо среду любого другого типа, подходящую для хранения информации. В различных вариантах изобретения память 1220 хранит программное обеспечение 1280, реализующее способы масштабируемого видеокодирования и/или видеодекодирования.
Вычислительная среда может иметь дополнительные признаки. Например, вычислительная среда 1200 содержит хранилище 1240, одно или несколько устройств 1250 ввода, одно или несколько устройств 1260 вывода и одно или несколько соединений 1270 связи. Механизм межсоединений, такой как шина, контроллер или сеть, соединяет между собой компоненты вычислительной среды 1200. Как правило, программное обеспечение операционной системы предоставляет рабочую среду для исполнения другого программного обеспечения в вычислительной среде 1200 и координирует действия компонентов вычислительной среды 1200.
Хранилище 1240 может быть съемным или несъемным и включает в себя магнитные диски, магнитные ленты или кассеты, память на компакт-диске (CD-ROM) только для считывания, записываемый компакт-диск (CD-R), перезаписываемый компакт-диск (CD-RW), оптический диск, магнитный носитель, магнитооптический носитель, съемные карты или диски памяти, различные типы цифровых универсальных дисков (DVD) или любой другой носитель, который можно использовать для хранения информации и к которому может быть осуществлен доступ в вычислительной среде 1200. Хранилище 1240 хранит команды программного обеспечения 1280, реализующие методики кодирования и/или декодирования с множеством значений пространственного разрешения.
Устройство (устройства) 1250 ввода может представлять собой сенсорное устройство ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство ввода речи, сканирующее устройство, сетевой адаптер или другое устройство, обеспечивающее ввод в вычислительную среду 1200. Применительно к видео устройству (устройствам) 1250 ввода может представлять собой карту селектора (тюнера) телевизионных каналов, видеоинтерфейс Web-камеры или видеокамеры либо аналогичное устройство, которое получает входной видеосигнал в аналоговой или цифровой форме, либо считыватель CD-ROM/DVD, который обеспечивает ввод видеоинформации в вычислительную среду. Устройство (устройства) 1260 вывода может представлять собой дисплей, проектор, принтер, громкоговоритель, устройство записи CD/DVD, сетевой адаптер, или иное устройство, которое обеспечивает вывод из вычислительной среды 1200.
В различных вариантах изобретения вычислительная среда 1200 может, кроме того, включать в себя одно или несколько соединений 1270 связи, которые позволяют вычислительной среде 1200 осуществлять связь с другими устройствами через среду 1290 связи. Соединения 1270 связи могут включать в себя стандартные элементы связи различных типов, такие как один или несколько интерфейсов связи, сетевые интерфейсы, карты сетевого интерфейса (NIC), радиостанции, беспроводные передатчики/приемники (приемопередатчики), проводную и/или беспроводную среду связи, физические соединители и т.д. Среда 1290 связи обычно воплощает считываемые компьютером команды, структуры данных, программные модули и иные данные в модулированном сигнале данных, таком как несущая волна или иной транспортный механизм, и включает в себя любую среду для доставки информации. Термин «модулированный сигнал данных» означает сигнал, имеющий одну или несколько своих характеристик установленными или измененными таким образом, чтобы кодировать информацию в сигнале. Например, но не как ограничение, среда 1290 связи включает в себя проводную среду связи и беспроводную среду связи. Примерами проводной среды связи могут быть провода, кабели, металлические проводники, печатные платы (PCB), объединительные платы, многовходовая система коммутации, полупроводниковый материал, кабель витой пары, коаксиальный кабель, оптическое волокно, распространяющийся сигнал и т.д. Примеры беспроводной среды связи могут включать в себя акустическую среду, радиочастотный (RF) спектр, инфракрасную или иную беспроводную среду. Используемые здесь термины «считываемая машиной среда» и «считываемая компьютером среда» подразумевают, например, но не только, память 1220, хранилище 1240, среду 1290 связи и любые комбинации из вышеперечисленного.
Некоторые варианты могут быть описаны в общем контексте считываемых компьютером команд, например, команд, включенных в программные модули, которые выполняются в вычислительной среде в целевом реальном или виртуальном процессоре. Обычно программные модули включают в себя стандартные программы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные типы абстрактных данных. Функциональные возможности программных модулей могут быть объединены или распределены между программными модулями в соответствии с требованиями в различных вариантах. Считываемые компьютером команды для программных модулей могут исполняться в локальной или распределенной вычислительной среде.
Многочисленные конкретные детали были изложены здесь для обеспечения полного понимания указанных вариантов изобретения. Однако специалистам в данной области техники очевидно, что эти варианты можно практически реализовать без описанных конкретных деталей. В других случаях хорошо известные операции, компоненты и схемы не были подробно описаны, чтобы не затемнять изложенные варианты изобретения. Очевидно, что раскрытые здесь конкретные структурные и функциональные детали могут носить иллюстративный характер и не обязательно ограничивать объем рассмотренных вариантов изобретения.
Также важно отметить, что любая ссылка на «один вариант» или «вариант» означает, что конкретный признак, структура или характеристика, описанная в связи с данным вариантом, входит, по меньшей мере, в один вариант изобретения. Случаи появления словосочетания «в одном варианте» в разных местах данного описания не обязательно связаны с одним и тем же вариантом изобретения.
Некоторые варианты изобретения могут быть описаны с использованием терминов «подключенный» и «соединенный» наряду с их аналогами. Следует понимать, что эти термины не подразумевают их употребление как синонимов друг для друга. Например, некоторые варианты могут быть описаны с использованием термина «соединенный» для указания о том, что два или более элементов находятся в прямом физическом или электрическом контакте друг с другом. В другом примере некоторые варианты могут быть описаны с использованием термина «подключенный» для указания на то, что два или несколько элементов находятся в прямом физическом или электрическом контакте. Однако, термин «соединенный» может также означать, что два или несколько элементов не находятся в непосредственном контакте друг с другом, а просто работают вместе или взаимодействуют друг с другом. Указанные варианты не ограничиваются этим контекстом.
Некоторые варианты могут быть реализованы, например, с использованием считываемого машиной носителя или изделия, которое может запоминать команду или набор команд, которые, при исполнении их машиной, могут заставить машину реализовать способ и/или операции согласно указанным вариантам изобретения. Такая машина может включать в себя, например, любую подходящую обрабатывающую платформу, вычислительную платформу, вычислительное устройство, вычислительную систему, обрабатывающую систему, компьютер, процессор или т.п. и может быть реализована с использованием любой подходящей комбинации аппаратного и/или программного обеспечения. Считываемый машиной носитель или изделие может включать в себя, например, любой подходящий тип блока памяти, устройство памяти, изделие памяти, среду памяти, устройство хранения, изделие хранения, носитель хранения и/или блок хранения, например, память, съемные или несъемные носители, стираемые или нестираемые носители, записываемые или перезаписываемые носители, цифровые или аналоговые носители, жесткий диск, гибкий диск, CD-ROM, CD-R, CD-RW, оптический диск, магнитные носители, магнитооптические носители, съемные карты или диски, различные типы DVD, ленту, кассету или т.п.
Хотя предмет изобретения был описан в терминах, привязанных к структурным признакам и/или действиям согласно определенным методикам, должно быть понятно, что предмет изобретения, определенный в прилагаемой формуле изобретения, необязательно сводится к конкретным, описанным здесь признакам или действиям. Наоборот, вышеописанные конкретные признаки и действия раскрыты в качестве примерных форм реализации формулы изобретения.