Корректировка квантования/масштабирования и обратного квантования/масштабирования при переключении цветовых пространств

Иллюстрации

Показать все

Изобретение относится к области адаптивного кодирования и декодирования. Технический результат заключается в повышении эффективности кодирования при переключении между цветовыми пространствами во время кодирования и декодирования. Предложено кодирование элементов изображения, включающее в себя корректировку квантования или масштабирования для цветовых компонентов второго цветового пространства в соответствии с коэффициентами корректировки цветового пространства для каждого компонента при переключении из RGB в YCoCg цветовое пространство между двумя из элементов. Корректировка включает в себя корректировку окончательных или промежуточных значений параметра квантования (QP) для цветовых компонентов YCoCg цветового пространства, причем переменная QpY указывает промежуточное значение QP для первого цветового компонента для RGB цветового пространства, и при этом коэффициенты корректировки цветового пространства для каждого компонента корректируют QpY посредством -5, -3 и -5 для компонентов Y, Co и Cg соответственно. 6 н. и 12 з.п. ф-лы, 17 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

[001] Инженеры используют сжатие (также называемое кодированием источника), чтобы уменьшить скорость (частоту следования битов) цифрового видео. Сжатие уменьшает затраты на хранение и передачу видеоинформации посредством преобразования информации в форму с меньшей частотой следования битов. Распаковка (также называемая декодированием) воссоздает версию первоначальной информации из сжатой формы. "Кодек" представляет собой систему кодера/декодера.

[002] За прошлые два десятилетия были приняты различные стандарты видеокодеков, в том числе стандарты ITU-T H.261, H.262 (MPEG 2 или ISO/IEC 13818-2), H.263 и H.264 (MPEG-4 АVC или ISO/IEC 14496-10), стандарты MPEG-1 (ISO/IEC 11172-2) и MPEG-4 Visual (ISO/IEC 14496-2) и стандарт SMPTE 421M (VC-1). Позже был одобрен стандарт H.265/HEVC (ITU-T H.265 или ISO/IEC 23008-2). В настоящее время разрабатываются расширения стандарта H.265/HEVC (например, для масштабируемого кодирования/декодирования видео для кодирования/декодирования видео с более высокой достоверностью с точки зрения глубины отсчета в битах или частоты отсчетов цветности, для содержания захвата экрана или для многоракурсного кодирования/декодирования). Стандарт видеокодека обычно определяет варианты для синтаксиса закодированного битового видеопотока, детализируя параметры в битовом потоке, когда конкретные функции использованы при кодировании и декодировании. Во многих случаях стандарт видеокодека также предоставляет подробную информацию об операциях декодирования, которые декодер должен выполнить, чтобы достигнуть соответствующих результатов при декодировании. Кроме стандартов кодека различные собственные форматы кодеков определяют другие варианты для синтаксиса закодированного битового видеопотока и соответствующие операции декодирования.

[003] Источник видео, такой как камера, вывод анимации, модуль захвата экрана и т.д., обычно обеспечивает видео в конкретном цветовом пространстве. В общем смысле цветовое пространство (иногда называемое цветовой моделью) представляет собой модель для представления цветов как n значений на физическую позицию, для n>1, где каждое из n значений обеспечивает значение цветового компонента для этой позиции. Например, в цветовом пространстве YUV значение компонента яркости (Y) представляет приблизительную яркость в позиции, и несколько значений компонентов цветности (U и V) представляют цветовые разности в позиции. Или в цветовом пространстве RGB значение компонента красного (R) представляет интенсивность красного цвета, значение компонента зеленого (G) представляет интенсивность зеленого цвета, и значение компонента синего (B) представляет интенсивность синего цвета в позиции. Исторически различные цветовые пространства имеют преимущества для разных применений, таких как отображение на дисплее, печать, широковещательная передача и кодирование/декодирование. Значения отсчетов могут быть преобразованы между цветовыми пространствами с использованием операций преобразования цветового пространства.

[004] Многие серийно выпускаемые кодеры и декодеры видео поддерживают только формат YUV. Другие серийно выпускаемые кодеры и декодеры (например, для стандарта H.264/AVC или стандарта H.265/HEVC) позволяют кодеру задавать цветовое пространство для данной последовательности. Конкретное цветовое пространство используется для всей видеопоследовательности. Эти подходы не обеспечивают достаточную гибкость для системы кодека общего назначения, которая может обрабатывать очень разные виды видеосодержания (видеоконтента) в пределах одной видеопоследовательности. Позже были рассмотрены подходы к переключению между цветовыми пространствами во время кодирования или декодирования, но эти подходы неадекватно учитывают изменение эффектов квантования, выполняемого в различных цветовых пространствах.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[005] Таким образом, подробное описание представляет новшества в области адаптивного кодирования и декодирования. Например, некоторые новшества относятся к корректировке квантования или масштабирования, когда кодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время кодирования. Другие новшества относятся к корректировке обратного квантования или масштабирования, когда декодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время декодирования. Эти новшества могут улучшить эффективность кодирования при переключении между цветовыми пространствами во время кодирования и декодирования.

[006] В соответствии с одним аспектом описанных здесь новшеств кодер изображений или видео кодирует элементы (например, картинки, слайсы, элементы кодирования, блоки) изображения или видео, чтобы произвести закодированные данные. Как часть кодирования при переключении из первого цветового пространства во второе цветовое пространство между двумя из элементов (например, из цветового пространства типа RGB в цветовое пространство типа YUV, или из цветового пространства типа YUV в цветовое пространство типа RGB) кодер корректирует квантование или масштабирование для цветовых компонентов второго цветового пространства в соответствии с коэффициентами корректировки цветового пространства для каждого компонента. Кодер выдает закодированные данные как часть битового потока.

[007] В соответствии с другим аспектом описанных здесь новшеств декодер изображений или видео принимает закодированные данные как часть битового потока и декодирует закодированные данные для воссоздания элементов (например, картинок, слайсов, элементов кодирования, блоков) изображения или видео. Как часть декодирования при переключении из первого цветового пространства во второе цветовое пространство между двумя из элементов (например, из цветового пространства типа RGB в цветовое пространство типа YUV, или из цветового пространства типа YUV в цветовое пространство типа RGB) декодер корректирует обратное квантование или масштабирование для цветовых компонентов второго цветового пространства в соответствии с коэффициентами корректировки цветового пространства для каждого компонента.

[008] В целом коэффициенты корректировки цветового пространства для каждого компонента компенсируют усиление энергии погрешности квантования при преобразовании из второго цветового пространства обратно в первое цветовое пространство. Иначе, если значения параметров квантования (параметр QP) и масштабные коэффициенты из первого цветового пространства просто применены к значениям отсчетов во втором цветовом пространстве, погрешности квантования во втором цветовом пространстве усиливаются посредством операций обратного преобразования цветового пространства обратно в первое цветовое пространство. Это может создать заметное несоответствие на уровнях энергии погрешности квантования между элементами, которые преобразованы во второе цветовое пространство для кодирования, и элементами, которые не преобразованы во второе цветовое пространство для кодирования.

[009] Например, один или более синтаксических элементов в битовом потоке могут указать коэффициенты корректировки цветового пространства для каждого компонента. Синтаксический элемент (элементы) может быть сообщен на уровне картинки, на уровне слайса, на уровне синтаксиса для элемента кодирования или блока или на некотором другом уровне синтаксиса. Синтаксический элемент (элементы) может включать в себя синтаксический элемент, который указывает значение параметра QP для первого цветового компонента второго цветового пространства, а также синтаксические элементы, которые указывают смещения для второго и третьего цветовых компонентов второго цветового пространства.

[010] Или вместо обозначения синтаксическими элементами в битовом потоке коэффициенты корректировки цветового пространства для каждого компонента для цветовых компонентов второго цветового пространства могут быть выведены по правилу в зависимости от второго цветового пространства. Например, кодер и декодер автоматически определяют коэффициенты корректировки цветового пространства для каждого компонента, исходя из значений параметра QP для первого цветового пространства, и внося изменения в зависимости от идентификационной информации второго цветового пространства.

[011] Действие корректировки квантования или обратного квантования может включать в себя корректировку окончательных значений параметра QP или промежуточных значений параметра QP для цветовых компонентов второго цветового пространства. Например, если первым цветовым пространством является RGB и вторым цветовым пространством является YCoCg, коэффициенты корректировки цветового пространства для каждого компонента могут быть равны -5, -3 и -5 для компонентов Y, Co и Cg, соответственно. В более общем случае коэффициенты корректировки цветового пространства для каждого компонента для квантования и обратного квантования могут зависеть от усиления энергии для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства.

[012] Корректирование масштабирования во время кодирования или декодирования может включать в себя масштабирование коэффициентов преобразования с использованием коэффициентов корректировки цветового пространства для каждого компонента. Масштабирование может использовать только целочисленные операции или операции с плавающей точкой. Коэффициенты корректировки цветового пространства для каждого компонента могут быть включены в список масштабного коэффициента или применены отдельно. Например, если первым цветовым пространством является RGB, и вторым цветовым пространством является YCoCg, коэффициенты корректировки цветового пространства для каждого компонента могут быть приблизительно равны 1,78, 1,41 и 1,78 для компонентов Y, Co и Cg, соответственно. В более общем случае коэффициенты корректировки цветового пространства для каждого компонента для масштабирования могут зависеть от усиления энергии для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства. Или корректировка масштабирования во время кодирования или декодирования может включать в себя применение разных списков масштабирования для разных цветовых компонентов второго цветового пространства.

[013] Или для изменений во время кодирования, которые не требуют соответствующих изменений во время декодирования, для корректировки квантования кодер может установить значения параметра QP для каждого компонента по элементам. В этом случае битовый поток включает в себя синтаксические элементы, которые указывают значения параметра QP для каждого компонента для соответствующих элементов.

[014] Новшества для корректирования квантования/масштабирования или обратного квантования/масштабирования могут быть реализованы как часть способа, как часть вычислительного устройства, выполненного с возможностью выполнять способ, или как часть материальных машиночитаемых носителей, хранящих исполняемые компьютером команды для того, чтобы побуждать вычислительное устройство выполнить способ. Различные новшества могут использоваться в комбинации или отдельно.

[015] Упомянутые выше и другие объекты, признаки и преимущества изобретения станут более понятны на основе следующего подробного описания, которое ссылается на прилагаемые чертежи.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[016] Фиг. 1 - схема иллюстративной вычислительной системы, в которой могут быть реализованы некоторые описанные варианты осуществления.

[017] Фиг. 2a и 2b - схемы иллюстративной сетевой среды, в которой могут быть реализованы некоторые описанные варианты осуществления.

[018] Фиг. 3 - схема иллюстративной системы кодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления.

[019] Фиг. 4 - схема иллюстративной системы декодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления.

[020] Фиг. 5a и 5b - схемы, демонстрирующие иллюстративный видеокодер, совместно с которым могут быть реализованы некоторые описанные варианты осуществления.

[021] Фиг. 6 - схема, демонстрирующая иллюстративный видеодекодер, вместе с которым могут быть реализованы некоторые описанные варианты осуществления.

[022] Фиг. 7 - схема, иллюстрирующая компьютерную настольную среду с содержанием, которое может обеспечить ввод для захвата экрана.

[023] Фиг. 8 - схема, иллюстрирующая составное видео с естественным видеосодержанием и искусственным видеосодержанием.

[024] Фиг. 9 - схема, иллюстрирующая адаптивные по картинке цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для картинок в последовательности.

[025] Фиг. 10 - схема, иллюстрирующая адаптивные по слайсам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для слайсов картинки в последовательности.

[026] Фиг. 11 - схема, иллюстрирующая адаптивные по блокам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для блоков слайса картинки в последовательности.

[027] Фиг. 12 - блок-схема последовательности операций, иллюстрирующая обобщенную методику для корректировки квантования или масштабирования при переключении цветовых пространств во время кодирования, и фиг. 13 - блок-схема последовательности операций, иллюстрирующая более подробную иллюстративную методику для корректировки квантования или масштабирования при переключении цветовых пространств по элементам во время кодирования.

[028] Фиг. 14 - блок-схема последовательности операций, иллюстрирующая обобщенную методику для корректировки обратного квантования или масштабирования при переключении цветовых пространств во время декодирования, и фиг. 15 - блок-схема последовательности операций, иллюстрирующая более подробную иллюстративную методику для корректировки обратного квантования или масштабирования при переключении цветовых пространств по элементам во время декодирования.

ПОДРОБНОЕ ОПИСАНИЕ

[029] Подробное описание представляет новшества в области адаптивного кодирования и декодирования. Например, некоторые новшества относятся к корректировке квантования или масштабирования, когда кодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время кодирования. Другие новшества относятся к корректировке обратного квантования или масштабирования, когда декодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время декодирования. Эти новшества могут улучшить эффективность кодирования при переключении между цветовыми пространствами во время кодирования и декодирования.

[030] Хотя описанные здесь операции находятся в местах, описанных как выполняемые видеокодером или видеодекодером, во многих случаях операции могут быть выполнены инструментом обработки мультимедиа другого типа (например, кодером или декодером изображений). Например, операции могут быть выполнены для таких применений, как кодирование или декодирование статических изображений, кодирования/декодирования содержания медицинского сканирования, кодирование или декодирование содержания многоспектральных изображений, и т.д.

[031] Некоторые описанные здесь новшества, проиллюстрированы со ссылкой на синтаксические элементы и операции, заданные для стандарта H.265/HEVC. Например, делается ссылка на предварительную версию JCTVC-P1005 стандарта H.265/HEVC - "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6", JCTVC-P1005_v1, февраль 2014 года и на JCTVC-P1003, ʺHigh Efficiency Video Coding (HEVC) Defect Report 3", JCTVC-P1003_v1, февраль 2014 года. Описанные здесь новшества также могут быть реализованы для других стандартов или форматов.

[032] В более общем случае возможны различные альтернативы описанным здесь примерам. Например, некоторые описанные здесь способы могут быть изменены посредством изменения порядка описанных действий способа, посредством разбиения, повторения или опускания некоторых действий способа и т.д. Различные аспекты раскрытой технологии могут использоваться в комбинации или отдельно. Различные варианты осуществления используют одно или более описанных новшеств. Некоторые из описанных здесь новшеств обращены к одной или более проблем, упомянутых в описании уровня техники. Как правило, заданная методика/инструмент не решают все такие проблемы.

I. Иллюстративные вычислительные системы.

[033] Фиг. 1 иллюстрирует обобщенный пример подходящей вычислительной системы (100), в которой могут быть реализованы несколько из описанных новшеств. Не предполагается, что вычислительная система (100) предлагает какие-либо ограничения относительно объема использования или функциональности, поскольку новшества могут быть реализованы в разнообразных вычислительных системах специального или общего назначения.

[034] Со ссылкой на фиг. 1, вычислительная система (100) включает в себя один или более процессоров (110, 115) и память (120, 125). Процессоры (110, 115) исполняют исполняемые компьютером команды. Процессор может представлять собой центральный процессор общего назначения (ЦП; CPU), процессор в специализированной интегральной схеме (СИС; ASIC) или процессор любого другого типа. В многопроцессорной системе несколько процессоров исполняют исполняемые компьютером команды для увеличения вычислительной мощности. Например, фиг. 1 показывает центральный процессор (110), а также графический процессор или сопроцессор (115). Материальная память (120, 125) может представлять собой энергозависимую память (например, регистры, кэш, оперативное запоминающее устройство (ОЗУ; RAM)), энергонезависимую память (например, постоянное запоминающее устройство (ПЗУ; ROM), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ; EEPROM), флеш-память и т.д.) или некоторую комбинацию из них двух, доступную посредством процессора (процессоров). Память (120, 125) хранит программное обеспечение (180), реализующее одно или более новшеств для корректировки квантования/масштабирования или обратного квантования/масштабирования при переключении цветовых пространств в форме исполняемых компьютером команд, подходящих для выполнения процессором (процессорами).

[035] Вычислительная система может иметь дополнительные функции. Например, вычислительная система (100) включает в себя хранилище (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода и одно или более соединений (170) связи. Механизм взаимосвязи (не показан), такой как шина, контроллер или сеть, взаимно связывает компоненты вычислительной системы (100). Как правило, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, выполняющегося в вычислительной системе (100), и координирует действия компонентов вычислительной системы (100).

[036] Материальное хранилище (140) может являться сменным или несменным и включает в себя магнитные диски, магнитные ленты или кассеты, компакт-диски (CD-ROM), цифровые универсальные диски (DVD) или любой другой носитель, который может использоваться для хранения информации и к которому можно осуществить доступ в пределах вычислительной системы (100). Хранилище (140) хранит команды для программного обеспечения (180), реализующего одно или более новшеств для корректировки квантования/масштабирования или обратного квантования/масштабирования при переключении цветовых пространств.

[037] Устройство (устройства) (150) ввода может представлять собой устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство речевого ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную систему (100). Для видео устройством (устройствами) (150) ввода может являться камера, видеокарта, карта ТВ-тюнера, модуль захвата экрана или аналогичное устройство, которое принимает ввод видео в аналоговой или цифровой форме, или компакт-диск (CD-ROM или CD-RW), который считывает ввод видео в вычислительную систему (100). Устройство (устройства) (160) вывода может представлять собой дисплей, принтер, динамик, устройство для записи компакт-дисков или другое устройство, которое обеспечивает вывод из вычислительной системы (100).

[038] Соединение (соединения) (170) связи обеспечивают возможность связи через носитель связи с другим вычислительным объектом. Носитель связи переносит информацию, такую как исполняемые компьютером команды, ввод или вывод аудио или видео или другие данные в модулированном сигнале данных. Модулированный сигнал данных представляет собой сигнал, который имеет одну или более из множества его характеристик измененными таким образом, чтобы закодировать информацию в сигнале. В качестве примера, но без ограничения, носители связи могут использовать электрическую, оптическую, радиочастотную или другую несущую среду.

[039] Новшества могут быть описаны в общем контексте машиночитаемых носителей. Машиночитаемые носители представляют собой любые доступные материальные носители, к которым можно осуществить доступ в пределах вычислительной среды. В качестве примера, но без ограничения, вычислительной системы (100) машиночитаемые носители включают в себя память (120, 125), хранилище (140) и комбинации любых из упомянутых выше.

[040] Новшества могут быть описаны в общем контексте исполняемых компьютером команд, таких как включенные в программные модули, исполняемые в вычислительной системе на целевом реальном или виртуальном процессоре. Обычно программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д. которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Функциональность программных модулей может быть объединена или разбита между программными модулями по желанию в различных вариантах осуществления. Исполняемые компьютером команды для программных модулей могут исполняться в пределах системы локальных или распределенных вычислений.

[041] Термины "система" и "устройство" используются здесь взаимозаменяемым образом. Если контекст ясно не указывает иначе, никакой термин не подразумевает ограничения на тип вычислительной системы или вычислительного устройства. В целом вычислительная система или вычислительное устройство могут быть локальными или распределенными и могут включать в себя любую комбинацию аппаратных средств специального назначения и/или аппаратных средств общего назначения с программным обеспечением, реализующим описанную здесь функциональность.

[042] Раскрытые способы также могут быть реализованы с использованием специализированных вычислительных аппаратных средств, выполненных с возможностью выполнять любой из раскрытых способов. Например, раскрытые способы могут быть реализованы посредством интегральной схемы (например, специализированной интегральной схемы (СИС; ASIC) (такой как процессор цифровых сигналов (DSP) на СИС), графический процессор (GPU) или программируемое логическое устройство (PLD), такое как программируемая пользователем вентильная матрица (FPGA)), специально разработанной или сконфигурированной для реализации любого из раскрытых способов.

[043] С целью представления подробное описание использует такие термины, как "определять" и "использовать", для описания компьютерных операций в вычислительной системе. Эти термины представляют собой абстракции высокого уровня для операций, выполняемых компьютером, и не должны быть перепутаны с действиями, совершаемыми человеком. Фактические компьютерные операции, соответствующие этим терминам, варьируются в зависимости от реализации.

II. Иллюстративные сетевые среды.

[044] Фиг. 2a и 2b показывают иллюстративные сетевые среды (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединены по сети (250) с использованием подходящего протокола связи. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.

[045] В сетевой среде (201), показанной на фиг. 2a, каждый инструмент (210) связи в реальном времени (RTC) включает в себя и кодер (220), и декодер (270) для двунаправленной связи. Данный кодер (220) может произвести вывод, совместимый с вариацией или расширением стандарта H.265/HEVC, стандарта SMPTE 421M, стандарта ISO-IEC 14496-10 (также известного как H.264 или AVC), другого стандарта или собственного формата, и соответствующий декодер (270) принимает закодированные данные от кодера (220). Двунаправленная связь может представлять собой часть видеоконференции, видеотелефонный вызов или другой сценарий связи с двумя сторонами или с несколькими сторонами. Хотя сетевая среда (201) на фиг. 2a включает в себя два инструмента (210) связи в реальном времени, сетевая среда (201) может вместо этого включать в себя три или более инструментов (210) связи в реальном времени, которые участвуют в связи с несколькими сторонами.

[046] Инструмент (210) связи в реальном времени управляет кодированием посредством кодера (220). Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (210) связи в реальном времени (210). В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему кодера. Инструмент (210) связи в реальном времени (210) также управляет декодированием посредством декодера (270). Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (210) связи в реальном времени. В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему декодера.

[047] В сетевой среде (202), показанной на фиг. 2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видео для доставки нескольким инструментам (214) воспроизведения, которые включают в себя декодеры (270). Однонаправленная связь может быть обеспечена для системы видеонаблюдения, системы контроля веб-камеры, модуля захвата экрана, презентации на конференции с использованием удаленного рабочего стола или другого сценария, в котором видео кодируется и отправляется из одного местоположения в одного или более других местоположений. Хотя сетевая среда (202) на фиг. 2b включает в себя два инструмента (214) воспроизведения, сетевая среда (202) может включать в себя больше или меньше инструментов (214) воспроизведения. В целом инструмент (214) воспроизведения взаимодействует с инструментом (212) кодирования для определения видеопотока для приема инструментом (214) воспроизведения. Инструмент (214) воспроизведения принимает поток, буферизует принятые закодированные данные в течение подходящего периода и начинает декодирование и воспроизведение.

[048] Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (212) кодирования. В качестве альтернативы, инструмент (212) кодирования использует другую систему кодера. Инструмент (212) кодирования также может включать в себя серверную логическую схему контроллера для управления соединениями с одним или более инструментами (214) воспроизведения. Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (214) воспроизведения. В качестве альтернативы, инструмент (214) воспроизведения использует другую систему декодера. Инструмент (214) воспроизведения также может включать в себя клиентскую логическую схему контроллера для управления соединениями с инструментом (212) кодирования.

III. Иллюстративные системы кодера.

[049] Фиг. 3 является блок-схемой иллюстративной системы (300) кодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления. Система (300) кодера может представлять собой инструмент кодирования общего назначения, способный работать в любом из нескольких режимов кодирования, таких как режим кодирования с низкой задержкой для связи в реальном времени, режим транскодирования и режим кодирования с более высокой задержкой для создания носителей для воспроизведения из файла или потока, или она может представлять собой инструмент кодирования специального назначения, адаптированный к одному такому режиму кодирования. Система (300) кодера может быть выполнена с возможностью кодировать содержание конкретного типа (например, содержание захвата экрана), или она может быть выполнена с возможностью кодировать содержание любых из нескольких разных типов (например, содержание захвата экрана и естественное видео). Система (300) кодера может быть реализована как модуль операционной системы, как часть библиотеки приложений или как автономное приложение. В целом система (300) кодера принимает последовательность исходных видеокадров (311) из источника (310) видео и производит закодированные данные как выходную информацию в канал (390). Закодированные данные, выведенные в канал, могут включать в себя содержание, закодированное с помощью адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин.

[050] Источником (310) видео может быть камера, карта ТВ-тюнера, запоминающий носитель, модуль захвата экрана или другой источник цифрового видео. Источник (310) видео производит последовательность видеокадров с частотой кадров, например, 30 кадров в секунду. Используемый здесь термин "кадр" обычно относится к исходным, закодированным или воссозданным данным изображения. Для видео с прогрессивной разверткой кадр представляет собой видеокадр с прогрессивной разверткой. Для видео с чересстрочной разверткой в иллюстративных вариантах осуществления видеокадр с чересстрочной разверткой может быть подвергнут удалению чересстрочной развертки перед кодирования. В качестве альтернативы, два взаимодополняющих видеополя с чересстрочной разверткой кодируются вместе как один видеокадр или кодируются как два отдельно закодированных поля. Кроме указания на видеокадр с прогрессивной разверткой или видеокадр с чересстрочной разверткой термин "кадр" или "картинка" может указывать на одно не спаренное видеополе, взаимодополняющую пару видеополей, плоскость видеообъекта, которая представляет видеообъект в заданное время или интересующую область в увеличенном изображении. Плоскость или область видеообъекта могут являться частью увеличенного изображения, которое включает в себя несколько объектов или областей сцены.

[051] Прибывающий исходный кадр (311) сохраняется в области (320) памяти временного хранения исходных кадров, которая включает в себя несколько областей (321, 322,..., 32n) хранения буфера кадра. Буфер (321, 322, и т.д.) кадра удерживает один исходный кадр в области (320) хранения исходных кадров. После того, как один или более исходных кадров (311) были сохранены в буферах (321, 322, и т.д.) кадров, селектор (330) кадра выбирает индивидуальный исходный кадр из области (320) хранения исходных кадров. Порядок, в котором кадры выбираются селектором (330) кадра для ввода в кодер (340), может отличаться от порядка, в котором кадры произведены источником (310) видео, например, кодирование некоторых кадров может быть отсрочено по порядку, чтобы некоторые более поздние кадры могли быть закодированы сначала, и чтобы тем самым обеспечить возможность временного обратного предсказания. Перед кодером (340) система (300) кодера может включать в себя препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием.

[052] Кодер (340) кодирует выбранный кадр (331), чтобы произвести закодированный кадр (341), а также производит сигналы (342) операции управления распределения памяти (MMCO) или информацию множества опорных картинок (RPS). Информация RPS представляет собой множество кадров, которые могут использоваться для ссылки при компенсации движения для текущего кадра или любого последующего кадра. Если текущий кадр не является первым кадром, который был закодирован, при выполнении процесса его кодирования кодер (340) может использовать один или несколько ранее закодированных/декодированных кадров (369), которые были сохранены в области (360) памяти временного хранения декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для межкадрового предсказания содержания текущего исходного кадра (331). Информация (342) MMCO/RPS указывает декодеру, какие воссозданные кадры могут быть использованы в качестве опорных кадров, и, следовательно, должны быть сохранены в области хранения кадров.

[053] Кодер (340) принимает видеоизображение в конкретном цветовом пространстве (например, в цветовом пространстве типа YUV, в цветовом пространстве типа RGB), с конкретной частотой цветовой дискретизации (например, 4:4:4) и конкретным количеством битов на отсчет (например, 12 битов на отсчет). Во время кодирования для разных картинок, слайсов, блоков или других блоков видео кодер (340) может выполнить преобразования цветового пространства, чтобы выполнить преобразование между цветовым пространством типа YUV и цветовым пространством типа RGB, или в/из некоторого другого цветового пространства. Кодер (340) также может выполнить преобразования цветового пространства, чтобы переупорядочить цветовые компоненты, изменяя цветовой компонент, который является первичным компонентом (например, выполняя преобразование между форматами RGB, BGR и GBR). В типичных реализациях кодер (340) выполнен с возможностью кодировать первичный компонент более тщательно, чем вторичные компоненты в различных отношениях (например, больше вариантов для режимов кодирования, потенциально меньший размер шага квантования). Делая цветовой компонент с наибольшим содержанием или энергией первичным цветовым компонентом, кодер может улучшить общую эффективность кодирования. Во время кодирования кодер (340) также может выполнить обработку изменения дискретизации, чтобы изменить частоты цветовой дискретизации (например, между форматами 4:4:4, 4:2:2 и 4:2:0) для разных картинок, слайсов, блоков или других блоков видео. Кодер (340) также может изменить битовую глубину (например, между 12 битами на отсчет, 10 битами на отсчет и 8 битами на отсчет) во время кодирования для разных картинок, слайсов, блоков или других блоков видео. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждой картинки во время кодирования. Когда кодер (340) переключает цветовые пространства во время кодирования, кодер (340) может скорректировать квантование или масштабирование согласно настоящему описанию для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства.

[054] Обычно кодер (340) включает в себя несколько модулей кодирования, которые выполняют задачи кодирования, такие как разделение на плитки, адаптация цветового пространства, частоты цветовой дискретизации и/или битовой глубины, оценка внутреннего предсказания и предсказание, оценка и компенсация движения, частотные преобразования, квантование и энтропийное кодирование. Точный перечень операций, выполняемых кодером (340), может изменяться в зависимости от формата сжатия. Формат выходных закодированных данных может представлять собой вариацию или расширение формата H.265/HEVC, формата Windows Media Video, формата VC 1, формат MPEG-x (например, MPEG 1, MPEG 2 или MPEG 4), формата H.26x (например, H.261, H.262, H.263, H.264) или другого формата.

[055] Кодер (340) может разделить кадр на несколько плиток одинакового размера или разных размеров. Например, кодер (340) разбивает кадр вдоль строк плиток и столбцов плиток, которые вместе с границами кадра определяют горизонтальные и вертикальные границы плиток в пределах кадра, причем каждая плитка представляет собой прямоугольную область. Плитки часто используются для обеспечения возможности параллельной обработки. Кадр также может быть организован как один или несколько слайсов, где слайс может представлять собой весь кадр или область кадра. Слайс может декодироваться независимо от других слайсов в кадре, что улучшает устойчивость к ошибкам. Содержание слайса или плитки далее разделяется на блоки или другие множества значений отсчетов в целях кодирования и декодирования. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого слайса во время кодирования. В некоторых иллюстративных реализациях