КОРРЕКТИРОВКА КВАНТОВАНИЯ/МАСШТАБИРОВАНИЯ И ОБРАТНОГО КВАНТОВАНИЯ/МАСШТАБИРОВАНИЯ ПРИ ПЕРЕКЛЮЧЕНИИ ЦВЕТОВЫХ ПРОСТРАНСТВ
QUANTIZATION/SCALING AND INVERSE QUANTIZATION/SCALING ADJUSTMENT WHEN SWITCHING COLOR SPACES

УРОВЕНЬ ТЕХНИКИ
[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) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого слайса во время кодирования. В некоторых иллюстративных реализациях кодер (340) может установить значения параметра квантования (QP) для каждого слайса.
[056] Для синтаксиса в соответствии со стандартом H.265/HEVC кодер разбивает содержание кадра (или слайса, или плитки) на элементы кодового дерева. Элемент кодового дерева (элемент CTU) включает в себя значения отсчетов яркости, организованные как блок кодового дерева яркости (блок CTB) и соответствующие значения отсчетов цветности, организованные как два блока CTB цветности. Размер элемента CTU (и его блоков CTB) выбирается кодером и может составлять, например, 64×64, 32×32 или 16×16 значений отсчетов. Элемент CTU включает в себя один или более элементов кодирования. Элемент кодирования (элемент CU) имеет кодовый блок (блок CB) яркости и две соответствующих блока CB цветности. Например, элемент CTU с блоком CTB яркости размером 64×64 и два блока CTB цветности размером 64×64 (формат YUV 4:4:4) могут быть разбиты на четыре элемента CU, и каждый элемент CU включает в себя блок CB яркости размером 32×32 и два блока СВ цветности размером 32×32, и каждый элемент CU может быть далее разбит на меньшие элементы CU. Или в качестве другого примера элемент CTU с блоком CTB яркости размером 64×64 и два блока CTB цветности размером 32×32 (формат YUV 4:2:0) могут быть разбиты на четыре элемента CU, и каждый элемент CU включает в себя блок CB яркости размером 32×32 и два блока CB цветности размером 16×16, и каждый элемент CU может быть далее разбит на меньшие элементы CU. Наименьший допустимый размер элемента CU (например, 8×8, 16×16) может быть сообщен в битовом потоке.
[057] Обычно элемент CU имеет режим предсказания, такой как внешнее или внутреннее предсказание. Элемент CU включает в себя один или более элементов предсказания в целях сообщить информацию предсказания (например, подробности режима предсказания, значения смещения и т.д.) и/или обработки предсказания. Элемент предсказания (элемент PU) имеет блок предсказания (PB) яркости и два блока PB цветности. Для элемента CU с внутренним предсказанием элемент PU имеет такой же размер, как элемент CU, если элемент CU не имеет наименьший размер (например, 8×8). В этом случае элемент CU может быть разбит на четыре меньших элемента PU (например, каждый по 4×4, если наименьший размер элемента CU составляет 8×8), или элемент PU может иметь наименьший размер элемента CU, как обозначено синтаксическим элементом для элемента CU. Элемент CU также имеет один или более элементов преобразования в целях разностного кодирования/декодирования, причем элемент преобразования (элемент TU) имеет блок преобразования (блок ТВ) яркости и два блока TB цветности. Элемент PU в элементе CU с внутренним предсказанием может содержать единственный элемент TU (равный по размеру элементу PU) или несколько элементов TU. Кодер решает, каким образом разделить видео на элементы CTU, элементы CU, элементы PU, элементы TU и т.д. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, показатели цветовой дискретизации и/или битовые глубины для каждого элемента во время кодирования для блоков CTU, элементов CU и т.д.
[058] В реализациях H.265/HEVC слайс может включать в себя единственный сегмент слайса (независимый сегмент слайса) или быть разделен на несколько сегментов слайса (независимый сегмент слайса и один или более зависимых сегментов слайса). Сегмент слайса представляет собой целое число элементов CTU, упорядоченных последовательно при сканировании плиток, содержащихся в одном блоке сетевого уровня абстракции (NAL). Для независимого сегмента слайса заголовок слайса включает в себя значения синтаксических элементов, которые применяются для независимого сегмента слайса. Для зависимого сегмента слайса усеченный заголовок слайса включает в себя несколько значений синтаксических элементов, которые применяются для этого зависимого сегмента слайса, и значения других синтаксических элементов для зависимого сегмента слайса выводятся из значений для предыдущего независимого сегмента слайса в порядке декодирования.
[059] Используемый здесь термин "блок" может указывать на макроблок, элемент предсказания, разностный элемент данных или блок СВ, блок PB или блок ТВ или некоторый другой набор значений отсчетов в зависимости от контекста. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого блока во время кодирования.
[060] Далее на фиг. 3 кодер представляет закодированный с внутренним предсказанием блок исходного кадра (331) с точки зрения предсказания на основе других, ранее воссозданных значений отсчетов в кадре (331). Для предсказания внутри копии блока (BC) модуль оценки внутри картинки оценивает смещение блока относительно других, ранее воссозданных значений отсчетов. Опорная область внутрикадрового предсказания представляет собой область значений отсчетов в кадре, которые используются для формирования значений предсказания BC для блока. Область внутрикадрового предсказания может быть указана с помощью значения вектора блока (BV) (определенного при оценке вектора BV). Для внутреннего пространственного предсказания для блока модуль оценки внутри картинки оценивает экстраполяцию соседних воссозданных значений отсчетов в блок. Модуль оценки внутри картинки может выдать информацию предсказания (такую как значения вектора BV для предсказания внутри BC или режим предсказания (направление) для внутреннего пространственного предсказания), которая закодирована с помощью энтропийного кодирования. Модуль предсказания внутрикадрового предсказания применяет информацию предсказания для определения значений внутреннего предсказания.
[061] Кодер (340) представляет закодированный с межкадровым предсказанием блок исходного кадра (331) с точки зрения предсказания на основе опорных кадров. Модуль оценки движения оценивает движение блока относительно одного или более опорных кадров (369). Когда используются несколько опорных кадров, несколько опорных кадров могут быть из разных временных направлений или из одного и того же временного направления. Опорная область предсказания с компенсацией движения представляет собой область значений отсчетов в опорном кадре (кадрах), которые используются для формирования значения предсказания с компенсацией движения для блока значений отсчетов текущего кадра. Модуль оценки движения выдает информацию движения, такую как информация вектора движения (вектора MV), которая является закодированной с помощью энтропийного кодирования. Модуль компенсации движения применяет векторы MV к опорным кадрам (369) для определения значений предсказания с компенсацией движения для межкадрового предсказания.
,
[062] Кодер может определить разности (если таковые имеются) между значениями предсказания блока (внутреннего или внешнего) и соответствующие исходные значения. Эти разностные значения предсказания далее кодируются с использованием частотного преобразования, квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра QP для картинки, слайса, элемента кодирования и/или другого участка видео и квантует коэффициенты преобразования соответствующим образом. Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства кодер (340) может корректировать квантование или масштабирование согласно настоящему описанию. Энтропийный кодер кодера (340) сжимает квантованные значения коэффициентов преобразования, а также некоторую вспомогательную информацию (например информацию вектора MV, значения индексов для модулей предсказания вектора BV, дифференциалы векторов BV, значения параметра QP, решения для режимов, выбор параметров). Типичные методики энтропийного кодирования включают в себя экспоненциальное кодирование Голомба, кодирование Голомба-Райса, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, перекодирование из кода с переменной длиной в код переменной длиной (V2V) перекодирование из кода с переменной длиной в код с фиксированной длиной (V2F), кодирование Лемпеля-Зива (LZ), кодирование с помощью словаря, энтропийное кодирование с разделением на интервалы вероятности (PIPE) и комбинации упомянутого выше. Энтропийный кодер может использовать разные методики кодирования для разных видов информации, может применять несколько методик в комбинации (например, применяя кодирование Голомба-Райса и затем арифметическое кодирование) и может делать выбор из нескольких кодовых таблиц в пределах конкретной методики кодирования.
[063] Адаптивный фильтр удаления блочности включен в контур компенсации движения в кодере (340) для сглаживания неоднородностей по граничным строкам и/или столбцам блоков в декодированном кадре. Другая фильтрация (такая как фильтрация с подавлением периодических помех, адаптивная петлевая фильтрация (ALF) или фильтрация с адаптивным по отсчетам смещением (SAO); не показаны) в качестве альтернативы или дополнительно может быть применена как операции в петлевой фильтрации.
[064] Закодированные данные, произведенные кодером (340), включают в себя синтаксические элементы для различных уровней синтаксиса битового потока. Для синтаксиса в соответствии со стандартом H.265/HEVC, например, множество параметров картинки (множество PPS) является синтаксической структурой, содержащей синтаксические элементы, которые могут быть ассоциированы с картинкой. В некоторых иллюстративных реализациях множество PPS может включать в себя один или несколько сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к картинке (или нескольким картинкам, которые используют множество PPS), а также другую информацию, идентифицирующую или определяющую доступные цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины. В некоторых иллюстративных реализациях множество PPS может включать в себя один или более синтаксических элементов, которые указывают значения параметра QP (например, начальное значение QP для картинки, начальное значение QP или смещение для значения QP для второго цветового пространства). Множество PPS может использоваться для отдельной картинки, или множество PPS может быть многократно использовано для нескольких картинок в последовательности. Множество PPS обычно сообщается отдельно от закодированных данных для картинки (например, один элемент NAL для множества PPS и один или несколько других элементов NAL для закодированных данных для картинки). В пределах закодированных данных для картинки синтаксический элемент указывает, какое множество PPS следует использовать для картинки. Аналогичным образом, для синтаксиса в соответствии со стандартом H.265/HEVC множество параметров последовательности (множество SPS) является синтаксической структурой, содержащей синтаксические элементы, которые быть ассоциированы с последовательностью картинок. Битовый поток может включать в себя единственное множество SPS или несколько множеств SPS. Множество SPS обычно сообщается отдельно от других данных для последовательности, и синтаксический элемент в других данных указывает, какое множество SPS, следует использовать. В некоторых иллюстративных реализациях множество SPS для последовательности может включать в себя информацию, идентифицирующую или определяющую доступные цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины, на которые делается ссылка при переключении цветовых пространств, частот цветовой дискретизации и/или битовых глубин в пределах последовательности.
[065] Для уровня слайса заголовок слайса (например, заголовок сегмента слайса) включает в себя значения синтаксических элементов, которые применяются для слайса (например, независимый сегмент слайса и любые последующие зависимые сегменты слайса). В некоторых иллюстративных реализациях заголовок слайса может включать в себя один или несколько сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к слайсу. В некоторых иллюстративных реализациях заголовок слайса также может включать в себя информацию, идентифицирующую или определяющую доступных цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины, на которые делается ссылка при переключении цветовых пространств, частот цветовой дискретизации и/или битовых глубин в слайсе. В некоторых иллюстративных реализациях заголовок слайса может включать в себя один или несколько синтаксических элементов для значений параметра QP (например, смещение для значения QP для слайса, смещения для значений параметра QP для цветовых компонентов слайса, смещение для второго цветового пространства, смещения для цветовых компонентов второго цветового пространства). Для уровня блока (например, для элемента CTU) синтаксическая структура включает в себя значения синтаксических элементов, которые применяются к блоку. В некоторых иллюстративных реализациях синтаксическая структура для блока может включать в себя один или более сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к блоку, и также может включать в себя один или более синтаксических элементов, которые указывают значение QP, которое применяется к блоку (или значения параметра QP, которые применяются к разным цветовым пространствам для блока).
[066] Закодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации (342) MMCO/RPS), поскольку зависимости и порядок структур для кадров уже известны в кодере (340)) обрабатываются эмулятором (350) процесса декодирования. Эмулятор (350) процесса декодирования реализует часть функциональности декодера, например, задачи декодирования для воссоздания опорных кадров. Методом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования определяет, нужно ли воссоздать и сохранить данный закодированный кадр (341) для использования в качестве опорного кадра при межкадровом предсказании последующих кадров, которые будут закодированы. Если нужно сохранить закодированный кадр (341), эмулятор (350) процесса декодирования моделирует процесс декодирования, который будет проведен декодером, который принимает закодированный кадр (341) и производит соответствующий декодированный кадр (351). При этом, когда кодер (340) использовал декодированный кадр (кадры) (369), который был сохранен в области (260) хранения декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный кадр (кадры) (369) из области (360) хранения как часть процесса декодирования.
[067] Область (360) памяти временного хранения декодированных кадров включает в себя несколько областей (361, 362,..., 36n) хранения буфера кадра. Методом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования управляет содержаниями области (360) хранения, чтобы идентифицировать любые буферы (361, 362, и т.д.) кадра с кадрами, которые больше не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет недавно декодированный кадр (351) в буфере (361, 362, и т.д.) кадра, который был идентифицирован этим методом.
[068] Закодированные кадры (341) и информация (342) MMCO/RPS буферизуются во временной области (370) закодированных данных. Закодированные данные, которые агрегированы в области (370) закодированных данных, содержат как часть синтаксиса элементарного закодированного видеопотока закодированные данные для одной или более картинок. Закодированные данные, которые агрегированы в области (370) закодированных данных, также могут включать в себя метаданные мультимедиа, относящиеся к закодированным видеоданным (например, как один или более параметров в одном или более сообщениях дополнительной информации улучшения (SEI) или сообщениях информации об удобстве использования видеоданных (VUI)).
[069] Агрегированные данные (371) из временной области (370) закодированных данных обрабатываются кодером (380) канала. Кодер (380) канала может пакетизировать и/или мультиплексировать агрегированные данные для передачи или хранения как потока мультимедиа (например, в соответствии с форматом потока программы мультимедиа или транспортного потока, таким как ITU-T H.222.0 | ISO/IEC 13818-1, или форматом транспортного протокола реального времени Интернета, таким как IETF RFC 3550), и в этом случае кодер (380) канала может добавить синтаксические элементы как часть синтаксиса потока передачи мультимедиа. Или кодер (380) канала может организовать агрегированные данные для хранения в виде файла (например, в соответствии с форматом контейнера мультимедиа, таким как ISO/IEC 14496-12), и в этом случае кодер (380) канала может добавить синтаксические элементы как часть синтаксиса файла хранения мультимедиа. Или в более общем случае кодер (380) канала может реализовать один или более системных протоколов мультиплексирования мультимедиа или транспортных протоколов, и в этом случае кодер (380) канала может добавить синтаксические элементы как часть синтаксиса протокола (протоколов). Кодер (380) канала обеспечивает вывод в канал (390), который представляет хранилище, соединение связи или другой канал для вывода. Кодер (380) канала или канал (390) также могут включать в себя другие элементы (не показаны), например, для кодирования с упреждающей коррекцией ошибок (FEC) и модуляции аналогового сигнала.
IV. Иллюстративные системы декодера.
[070] Фиг. 4 является блок-схемой иллюстративной системы (400) декодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления. Система (400) декодера может представлять собой инструмент декодирования общего назначения, способный работать в любом из нескольких режимов декодирования, таких как режим декодирования с низкой задержкой для связи в реальном времени и режим декодирования с более высокой задержкой для воспроизведения мультимедиа из файла или потока, или она может представлять собой инструмент декодирования специального назначения, адаптированный к одному такому режиму декодирования. Система (400) декодера может быть выполнена с возможностью декодировать содержание конкретного типа (например, содержание захвата экрана), или она может быть выполнена с возможностью декодировать содержание любых из нескольких разных типов (например, содержание захвата экрана и естественное видео). Система (400) декодера может быть реализована как модуль операционной системы, как часть библиотеки приложений или как автономное приложение. В целом система (400) декодера принимает закодированные данные из канала (410) и производит воссозданные кадры как выходную информацию для адресата (490) назначения вывода. Закодированные данные могут включать в себя содержание, закодированное с помощью адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин.
[071] Система декодера (400) включает в себя канал (410), который может представлять хранилище, соединение связи или другой канал для закодированных данных в качестве входной информации. Канал (410) производит закодированные данные, которые были закодированы для канала. Декодер (420) канала может обработать закодированные данные. Например, декодер (420) канала депакетизирует и/или демультиплексирует данные, которые были агрегированы для передачи или хранения как поток мультимедиа (например, в соответствии с форматом потоком программы мультимедиа или транспортного потока, таким как ITU-T H.222.0 | ISO/IEC 13818-1, или форматом транспортного протокола реального времени Интернета, таким как IETF RFC 3550), и в этом случае декодер (420) канала может проанализировать синтаксические элементы, добавленные как часть синтаксиса потока передачи мультимедиа. Или декодер (420) канала разделяет закодированные видеоданные, которые были агрегированы для хранения в виде файла (например, в соответствии с форматом контейнера мультимедиа, таким как ISO/IEC 14496-12), и в этом случае декодер (420) канала может проанализировать синтаксические элементы, добавленные как часть синтаксиса файла хранения мультимедиа. Или в более общем случае декодер (420) канала может реализовать один или более системных протоколов демультиплексирования мультимедиа или транспортных протоколов, и в этом случае декодер (420) канала может проанализировать синтаксические элементы, добавленные как часть синтаксиса протокола (протоколов). Канал (410) или декодер (420) канала также может включать в себя другие элементы (не показаны), например, для декодирования FEC и демодуляции аналогового сигнала.
[072] Закодированные данные (421), который является выходной информацией из декодера (420) канала, сохраняются во временной области (430) закодированных данных, пока не будет принято достаточное количество таких данных. Закодированные данные (421) включают в себя закодированные кадры (431) и информацию (432) MMCO/RPS. Закодированные данные (421) в области (430) закодированных данных содержат как часть синтаксиса элементарного закодированного видеопотока закодированные данные для одной или более картинок. Закодированные данные (421) в области (430) закодированных данных также могут включать в себя метаданные мультимедиа, относящиеся к закодированным видеоданным (например, как один или более параметров в одном или более сообщениях SEI или сообщениях VUI).
[073] В целом область (430) закодированных данных временно хранит закодированные данные (421), пока такие закодированные данные (421) не используются декодером (450). В тот момент закодированные данные для закодированного кадра (431) и информация (432) MMCO/RPS переносятся из области (430) закодированных данных (430) в декодер (450). В то время как продолжается декодирование, новые закодированные данные добавляются в область (430) закодированных данных (430), и самые поздние закодированные данные, остающиеся в области (430) закодированных данных, переносятся в декодер (450).
[074] Декодер (450) декодирует закодированный кадр (431), чтобы произвести соответствующий декодированный кадр (451). По мере необходимости при выполнении своего процесса декодирования декодер (450) может использовать один или более ранее декодированных кадров (469) в качестве опорных кадров для межкадрового предсказания. Декодер (450) считывает такие ранее декодированные кадры (469) из области (460) памяти временного хранения декодированных кадров.
[075]Во время декодирования для разных картинок, слайсов, блоков или других блоков видео декодер (450) может выполнить преобразования цветового пространства, чтобы выполнить преобразование между цветовым пространством типа YUV и цветовым пространством типа RGB, или в/из некоторого другого цветового пространства. Декодер (450) также может выполнить преобразования цветового пространства, чтобы переупорядочить цветовые компоненты для разных картинок, слайсов, блоков или других блоков видео, изменяя цветовой компонент, который является первичным компонентом (например, выполняя преобразования между форматами RGB, BGR и GBR). Во время декодирования декодер (450) также может выполнить обработку изменения дискретизации, чтобы изменить частоты цветовой дискретизации и/или изменить битовые глубины для разных картинок, слайсов, блоков или других блоков видео. В некоторых иллюстративных реализациях декодер (450) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждой картинки во время декодирования. В качестве альтернативы декодер (450) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого слайса, для каждого блока или для каждого другого элемента во время декодирования. Когда декодер (450) переключает цветовые пространства во время декодирования, декодер (450) может скорректировать обратное квантование или масштабирование согласно настоящему описанию для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства.
[076] Обычно декодер (450) включает в себя несколько модулей декодирования, которые выполняют задачи декодирования, такие как энтропийное декодирование, адаптация цветового пространства, частоты цветовой дискретизации и/или битовой глубины, внутрикадровое предсказание, межкадровое предсказание с компенсацией движения, обратное квантование, обратное частотное преобразование и слияние плиток. Точный перечень операций, выполняемых декодером (450), может изменяться в зависимости от формата сжатия.
[077] Например, декодер (450) принимает закодированные данные для сжатого кадра или последовательности кадров и производит выходную информацию, включающую в себя декодированный кадр (451). В декодере (450) буфер принимает закодированные данные для сжатого кадра и в подходящее время делает принятые закодированные данные доступными для энтропийного декодера. Энтропийный декодер выполняет энтропийное декодирование подвергнутых энтропийному кодированию квантованных данных, а также подвергнутой энтропийному кодированию вспомогательной информации, обычно применяя инверсию энтропийного кодирования, выполненного в кодере. Компенсатор движения применяет информацию движения к одному или более опорным кадрам, чтобы сформировать значения предсказания с компенсацией движения для любых закодированных с внешним предсказанием блоков воссоздаваемого кадра. Модуль внутрикадрового предсказания может пространственным образом предсказать значения отсчетов текущего блока на основе соседних, ранее воссозданных значений отсчетов, или для предсказания внутри BC предсказать значения отсчетов текущего блока c использованием ранее воссозданных значений отсчетов опорной области внутрикадрового предсказания в кадре. Опорная область может быть указана посредством значения вектора BV. Декодер (450) также воссоздает разностные значения предсказания. Модуль обратного квантования выполняет обратное квантование подвергнутых энтропийному декодированию данных. Например, декодер (450) устанавливает значения для параметра QP для картинки, слайса, элемента кодирования и/или другого участка видео на основе синтаксических элементов в битовом потоке и соответствующим образом выполняет обратное квантование коэффициентов преобразования. Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства декодер (450) может скорректировать обратное квантование или масштабирование согласно настоящему описанию. Обратный частотный преобразователь преобразовывает квантованные данные частотной области в данные пространственной области. Для подвергнутого межкадровому предсказанию блока декодер (450) объединяет воссозданные разностные значения предсказания со значениями предсказания с компенсацией движения. Декодер (450) может аналогичным образом объединить разностные значения предсказания со значениями предсказания для внутреннего предсказания. Адаптивный фильтр удаления блочности включен в цикл компенсации движения в видеодекодере (450) для сглаживания неоднородностей по границам строк или столбцов в декодированном кадре (451). Другая фильтрация (такая как фильтрация с подавлением периодических помех, ALF или фильтрация SAO; не показаны) может в качестве альтернативы или дополнительно быть применена как операции в петлевой фильтрации.
[078] Область (460) памяти временного хранения декодированных кадров включает в себя несколько областей (461, 462,..., 46n) хранения буфера кадра. Область (460) хранения декодированных кадров является примером буфера декодированных картинок. Декодер (450) использует информацию (432) MMCO/RPS, чтобы идентифицировать буфер (461, 462, и т.д.) кадра, в котором он может сохранить декодированный кадр (451). Декодер (450) сохраняет декодированный кадр (451) в этом буфере кадра.
[079] Модуль (480) выходной последовательности идентифицирует, когда следующий кадр, который должен быть произведен в порядке выдачи, доступен в области (460) хранения декодированных кадров. Когда следующий кадр (481), который должен быть произведен в порядке выдачи, доступен в области (460) хранения декодированных кадров, он считывается модулем (480) выходной последовательности и выдается адресату (490) назначения вывода (например, на дисплей). В целом порядок, в котором кадры выдаются из области (460) хранения декодированных кадров модулем (480) выходной последовательности, может отличаться от порядка, в котором кадры декодируются декодером (450).
V. Иллюстративные видеокодеры.
[080] Фиг. 5a и 5b являются блок-схемами обобщенного видеокодера (500), совместно с которым могут быть реализованы некоторые описанные варианты осуществления. Кодер (500) принимает последовательность видеокартинок, включающую в себя текущую картинку, в качестве входного видеосигнала (505) и производит закодированные данные в закодированном видеопотоке (595) как выходную информацию.
[081] Кодер (500) основан на блоках и использует формат блока, который зависит от реализации. Блоки могут быть далее разделены на разных стадиях, например, на стадиях предсказания, частотного преобразования и/или энтропийного кодирования. Например, картинка может быть разделена на блоки размером 64×64, блоки размером 32×32 или блоки размером 16×16, которые в свою очередь могут быть разделены на более мелкие блоки значений отсчетов для кодирования и декодирования. В реализациях кодирования для стандарта H.265/HEVC кодер делит картинку на элементы CTU (блоки CTB), элементы CU (блоки CB), элементы PU (блоки PB) и элемент TU (блоки TB).
[082] Кодер (500) сжимает картинки с использованием кодирования с предсказанием внутри картинки и/или кодирования с предсказанием между картинками. Многие компоненты кодера (500) используются как для кодирования с предсказанием внутри картинки, так и для кодирования с предсказанием между картинками. Точный перечень операций, выполняемых этими компонентами, может изменяться в зависимости от типа сжимаемой информации.
[083] Модуль (510) разделения на плитки факультативно делит картинку на несколько плиток одинакового размера или разных размеров. Например, модуль (510) разделения на плитки разбивает картинку вдоль строк плиток и столбцов плиток, которые вместе с границами картинки определяют горизонтальные и вертикальные границы плиток в пределах картинки, причем каждая плитка представляет собой прямоугольную область. В реализациях H.265/HEVC кодер (500) разделяет картинку на один или более слайсов, причем каждый слайс включает в себя один или несколько сегментов слайса.
[084] Модуль (520) общего управления кодированием принимает картинку для входного видеосигнала (505), а также информацию обратной связи (не показана) от различных модулей кодера (500). В целом модуль (520) общего управления кодированием обеспечивает управляющие сигналы (не показаны) другим модулям (таким как модуль (510) разделения на плитки, модуль (530) преобразования/масштабирования/квантования, модуль (535) масштабирования/обратного преобразования, модуль (540) оценки внутри картинки, модуль (550) оценки движения и переключатель внутреннего/внешнего режима предсказания), чтобы устанавливать и изменять параметры кодирования во время кодирования. В частности, модуль (520) общего управления кодированием может решать, каким образом следует адаптивно переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины во время кодирования по картинкам, по слайсам, по блокам или по другим элементам. Когда кодер (500) переключает цветовые пространства, модуль (520) общего управления кодированием может определить, каким образом следует скорректировать квантование или масштабирование для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства. Модуль (520) общего управления кодированием также может оценивать промежуточные результаты во время кодирования. Модуль (520) общего управления кодированием производит общие управляющие данные (522), которые указывают на решения, принятые во время кодирования, с тем чтобы соответствующий декодер мог принять совместимые решения. Общие управляющие данные (522) обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка.
[085] Если текущая картинка предсказана с использованием предсказания между картинками, модуль (550) оценки движения оценивает движение блоков значений отсчетов текущей картинки входного видеосигнала (505) относительно одного или более опорных картинок. Буфер (570) декодированных картинок буферизует одно или более воссозданных ранее закодированных картинок для использования в качестве опорных картинок. Когда используются несколько опорных картинок, несколько опорных картинок могут быть из разных временных направлений или из одного и того же временного направления. Модуль (550) оценки движения производит в качестве вспомогательной информации данные (522) движения, такие как данные векторов MV, значения индексов режима слияния и данные выбора опорной картинки. Данные (552) движения обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка, а также модулю (555) компенсации движения.
[086] Модуль (555) компенсации движения применяет векторы MV к воссозданной опорной картинке (картинкам) из буфера (570) декодированных картинок. Модуль (555) компенсации движения производит предсказания с компенсацией движения для текущей картинки. Когда вторичные компоненты для картинки имеют такое же разрешение, как первичный компонент (например, форматом является формат YUV 4:4:4 или формат RGB 4:4:4), значение вектора MV, которое применяется для блока вторичного компонента, может совпадать со значением вектора MV, применяемого к соответствующему блоку первичного компонента. С другой стороны, когда вторичные компоненты для картинки имеют уменьшенное разрешение относительно первичного компонента (например, когда форматом является формат YUV 4:2:0), значение вектора MV, которое применяется для блока вторичного компонента, может быть уменьшено и возможно округлено, чтобы скорректировать различия в разрешении (например, посредством деления вертикальных и горизонтальных составляющих значения вектора MV на два и отбрасывания дробной части или округления их до целочисленных значений).
[087] На отдельном тракте в пределах кодера (500) модуль (540) оценки внутри картинки определяет, каким образом следует выполнить предсказание внутри картинки для блоков значений отсчетов текущей картинки входного видеосигнала (505). Текущая картинка может быть полностью или частично закодировано с использованием кодирования с предсказанием внутри картинки. С использованием значений воссоздания (538) из текущей картинки для внутреннего пространственного предсказания модуль (540) оценки внутри картинки определяет, каким образом следует пространственно предсказать значения отсчетов текущего блока текущей картинки на основе соседних, ранее воссозданных значений отсчетов текущей картинки. Или для предсказание внутри BC с использованием значений вектора BV модуль (540) оценки внутри картинки оценивает смещение значений отсчетов текущего блока к различным потенциальным опорным областям в текущей картинке.
[088] Модуль (540) оценки внутри картинки производит в качестве вспомогательной информации данные (542) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или предсказание внутри BC (например, значение флага на каждый блок внутреннего предсказания), направление режима предсказания (для внутреннего пространственного предсказания) и значения вектора BV (для предсказания внутри BC). Данные (542) внутреннего предсказания обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка, а также модулю (545) предсказания внутри картинки.
[089] В соответствии с данными (542) внутреннего предсказания модуль (545) предсказания внутри картинки пространственно предсказывает значения отсчетов текущего блока текущей картинки на основе соседних, ранее воссозданных значений отсчетов текущей картинки. Или для предсказания внутри BC модуль (545) предсказания внутри картинки предсказывает значения отсчетов текущего блока с использованием ранее воссозданных значений отсчетов опорной области предсказания внутри картинки, которая указана значением вектора BV для текущего блока. В некоторых случаях значение вектора BV может являться прогнозом вектора BV (предсказанным значением вектора BV). В других случаях значение вектора BV может отличаться от предсказанного значения вектора BV, и в этом случае дифференциал вектора BV указывает на разность между предсказанным значением вектора BV и значением вектора BV. Когда вторичные компоненты для картинки имеют такое же разрешение, как первичный компонент (например, когда форматом является формат YUV 4:4:4 или формат RGB 4:4:4), значение вектора BV, которое применяется для блока вторичного компонента, может совпадать со значением вектора BV, применяемым к соответствующему блоку первичного компонента. С другой стороны, когда вторичные компоненты для картинки имеют уменьшенное разрешение относительно первичного компонента (например, когда форматом является формат YUV 4:2:0), значение вектора BV, которое применяется для блока вторичного компонента, может быть уменьшено и возможно округлено, чтобы скорректировать различия в разрешении (например, посредством деления вертикальных и горизонтальных составляющих значения вектора BV на два и отбрасывания дробной части или округления их до целочисленных значений).
[090] Переключатель внутреннего/внешнего режима предсказания выбирает, будет ли предсказание (558) для данного блока предсказанием с компенсацией движения или предсказанием внутри картинки. Разность (если таковая имеется) между блоком предсказания (558) и соответствующей частью первоначального текущей картинки входного видеосигнала (505) обеспечивает значения разности (518) для блока не в режиме пропуска (SKIP). Во время воссоздания текущей картинки для блока не в режиме пропуска воссозданные разностные значения объединяются с предсказанием (558), чтобы произвести приблизительное или точное воссоздание (538) первоначального содержания из видеосигнала (505). (При сжатии с потерями некоторая информация теряется из видеосигнала (505).)
[091] В модуле (530) преобразования/масштабирования/квантования частотный преобразователь преобразовывает видеоинформацию пространственной области в данные частотной области (т.е., спектральное преобразование). Для основанного на блоках видеокодирования частотный преобразователь применяет дискретное косинусное преобразование (DCT), его целочисленное приближение или другой тип прямого преобразования блоков (например, дискретное синусное преобразование или его целочисленное приближение) к блокам разностных данных предсказания (или к данным значений отсчетов, если предсказание (558) равно нулю), производя блоки коэффициентов частотного преобразования. Кодер (500) также может указывать, что такой этап преобразования пропущен. Модуль масштабирования/квантования масштабирует и квантует коэффициенты преобразования. Например, модуль квантования применяет скалярное квантование с нулевой зоной к данным частотной области с размером шага квантования, который варьируется по картинкам, по слайсам, по блокам, по заданной частоте или на другом основании. Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства модуль масштабирования/квантования может скорректировать квантование или масштабирование согласно настоящему описанию. Данные (532) квантованных коэффициентов преобразования предоставляются модулю (590) форматирования и энтропийного кодирования заголовка.
[092] В модуле (535) масштабирования/обратного преобразования модуль масштабирования/обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства модуль масштабирования может скорректировать обратное квантование или масштабирование согласно настоящему описанию. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воссозданных разностных значений предсказания или значений отсчетов. Для блока не в режиме пропуска кодер (500) объединяет воссозданные разностные значения со значениями предсказания (558) (например, со значениями предсказания с компенсацией движения, значениями предсказания внутри картинки), чтобы сформировать воссоздание (538). Для блока в режиме пропуска кодер (500) использует значения предсказания (558) как воссоздание (538).
[093] Для предсказания внутри картинки значения воссоздания (538) могут быть возвращены модулю (540) оценки внутри картинки и модулю (545) предсказания внутри картинки. Кроме того, значения воссоздания (538) могут использоваться для предсказания с компенсацией движения последующих картинок. Значения воссоздания (538) могут быть затем отфильтрованы. Модуль (560) управления фильтрацией определяет, каким образом выполнить фильтрацию удаления блочности и фильтрацию SAO над значениями воссоздания (538) для данной картинки видеосигнала (505). Модуль (560) управления фильтрацией производит управляющие данные (562) фильтра, которые предоставляются модулю (590) форматирования и энтропийного кодирования заголовка и модулю слияния/фильтру (фильтрам) (565).
[094] В модуле слияния/фильтре (фильтрах) (565) кодер (500) выполняет слияние содержания из разных плиток в воссозданную версию картинки. Кодер (500) выборочно выполняет фильтрацию удаления блочности и фильтрацию SAO в соответствии с управляющими данными (562) фильтра для адаптивного сглаживания неоднородностей на границах в изображениях. Другая фильтрация (такая как фильтрация с подавлением периодических помех или ALF; не показаны) может быть применена в качестве альтернативы или дополнительно. Границы плиток быть выборочно отфильтрованы или не фильтрованы вообще в зависимости от настроек кодера (500), и кодер (500) может обеспечить синтаксис в пределах закодированного битового потока, чтобы указать, была ли такая фильтрация применена. Буфер (570) декодированных картинок буферизует воссозданное текущая картинка для использования при последующем предсказании с компенсацией движения.
[095] Модуль (590) форматирования и энтропийного кодирования заголовка форматирует и/или подвергает энтропийному кодированию общие управляющие данные (522), данные (532) квантованных коэффициентов преобразования, данные (542) внутреннего предсказания, данные (552) движения и управляющие данные (562) фильтра. Общие управляющие данные (522) включают в себя сигналы, указывающие цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для картинок, слайса, блоков или других элементов видео. Такие сигналы могут быть включены, например, в множество PPS, заголовок слайса, синтаксическую структуру блока или другую синтаксическую структуру и могут быть закодированы посредством энтропийного кодирования или сообщены как значения фиксированной длины. Модуль (590) форматирования и энтропийного кодирования заголовка может также выполнить форматирование и/или энтропийное кодирование информации, идентифицирующей или определяющей доступные цветовые пространства (например, список предопределенных цветовых пространств, специфические матрицы для операций преобразования цветовых пространств), информации, идентифицирующей или определяющей доступные частоты цветовой дискретизации (например, список предопределенных частот цветовой дискретизации, другие частоты цветовой дискретизации или идентификация операций для понижающей дискретизации и повышающей дискретизации), и/или информации, идентифицирующей или определяющей доступные битовые глубины (например, список предопределенных битовых глубин, другие битовые глубины или идентификация операций для преобразования битовых глубин), которая применяется декодером во время адаптивного переключения. Модуль (590) форматирования и энтропийного кодирования заголовка также может выполнить форматирование и/или энтропийное кодирование синтаксических элементов, которые указывают значения параметра QP, например, в множестве PPS, в заголовке слайса, в синтаксической структуре блока или в другой синтаксической структуре.
[096] Модуль (590) форматирования и энтропийного кодирования заголовка обеспечивает закодированные данные в закодированном видеопотоке (595). Формат закодированного видеопотока (595) может представлять собой вариацию или расширение формата 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) или другого формата.
[097] В зависимости от реализации и типа желаемого сжатия модули кодера (500) могут быть добавлены, опущены, разбиты на несколько модулей, объединены с другими модулями и/или заменены подобными модулями. В альтернативных вариантах осуществления кодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или более описанных методик. Конкретные варианты осуществления кодеров обычно используют вариацию или дополненную версию кодера (500). Соотношения, показанные между модулями в пределах кодера (500), указывают общие потоки информации в кодере; другие соотношения ради простоты не показаны.
VI. Иллюстративные видеодекодеры.
[098] Фиг. 6 является блок-схемой обобщенного декодера (600), совместно с которым могут быть реализованы некоторые описанные варианты осуществления. Декодер (600) принимает закодированные данные в закодированном видеопотоке (605) и производит выходную информацию, включающую в себя изображения для воссозданного видео (695). Формат закодированного видеопотока (605) может представлять собой вариацию или расширение формата 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) или другого формата.
[099] Декодер (600) основан на блоках и использует формат блока, который зависит от реализации. Блоки могут быть далее подразделены на различных стадиях. Например, изображение может быть разделено на блоки размером 64×64, блоки размером 32×32 или блоки размером 16×16, которые могут в свою очередь быть разделены на более мелкие блоки значений отсчетов. В реализациях декодирования для стандарта H.265/HEVC изображение делится на элементы CTU (блоки CTB), элементы CU (блоки CB), элементы PU (блоки PB) и элемент TU (блоки TB).
[0100] Декодер (600) распаковывает изображения с использованием декодирование внутри картинки и/или декодирования между изображениями. Многие компоненты декодера (600) используются и для декодирования внутри картинки, и для декодирования между изображениями. Точный перечень операций, выполняемых его компонентами, может изменяться в зависимости от типа распаковываемой информации.
[0101] Буфер принимает закодированные данные в закодированном видеопотоке (605) и делает принятые закодированные данные доступными для модуля (610) анализа/энтропийного декодирования. Модуль (610) анализа/энтропийного декодирования подвергает энтропийному декодированию закодированные посредством энтропийного кодирования данные, обычно применяя инверсию энтропийного кодирования, выполненного в кодере (500) (например, контекстно-адаптивное двоичное арифметическое декодирование). В результате анализа и энтропийного декодирования модуль (610) анализа/энтропийного декодирования производит общие управляющие данные (622), данные (632) квантованных коэффициентов преобразования, данные (642) внутреннего предсказания, данные (652) движения и управляющие данные (662) фильтра. Общие управляющие данные (622) включают в себя сигналы, указывающие цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для картинок, слайса, блоков или других элементов видео. Такие сигналы могут быть включены, например, в множество PPS, заголовок слайса, синтаксическую структуру блока или другую синтаксическую структуру и могут быть закодированы посредством энтропийного кодирования или сообщены как значения фиксированной длины. Модуль (610) анализа/энтропийного декодирования также может выполнить анализ и/или энтропийное декодирование информации, идентифицирующей или определяющей доступные цветовые пространства (например, список предопределенных цветовых пространств, специфические матрицы для операций преобразования цветовых пространств), информации, идентифицирующей или определяющей доступные частоты цветовой дискретизации (например, список предопределенных частот цветовой дискретизации, другие частоты цветовой дискретизации или идентификация операций для понижающей дискретизации и повышающей дискретизации), и/или информации, идентифицирующей или определяющей доступные битовые глубины (например, список предопределенных битовых глубин, другие битовые глубины или идентификация операций для преобразования битовых глубин), которая применяется декодером (600) во время адаптивного переключения. Модуль (610) анализа/энтропийного декодирования также может выполнить анализ и/или энтропийное декодирование синтаксических элементов, которые указывают значения параметра QP, например, из множества PPS, из заголовка слайса, из синтаксической структуры блока или из другой синтаксической структуры.
[0102] Модуль (620) общего управления декодированием принимает общие управляющие данные (622) и обеспечивает управляющие сигналы (не показаны) другим модулям (таким как модуль (635) масштабирования/обратного преобразования, модуль (645) предсказания внутри картинки, модуль (655) компенсации движения и переключатель внутреннего/внешнего режима предсказания), чтобы устанавливать и изменять параметры декодирования во время декодирования. В частности, модуль (620) общего управления декодированием может заставить декодер (600) переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины во время декодирования по изображениям, по слайсам, по блокам или по некоторым другим элементам. Когда кодер (600) переключает цветовые пространства, модуль (620) общего управления декодированием может определить, каким образом следует скорректировать обратное квантование или масштабирование для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства.
[0103] Если текущая картинка предсказано с использованием предсказания между изображениями, модуль (655) компенсации движения принимает данные (652) движения, такие как данные векторов MV, данные выбора опорной картинки и значения индексов режима слияния. Модуль (655) компенсации движения применяет векторы MV к воссозданной опорной картинке (картинкам) из буфера (670) декодированных картинок. Модуль (655) компенсации движения производит предсказания с компенсацией движения для закодированных с внешним предсказанием блоков текущей картинки. Буфер (670) декодированных картинок сохраняет одно или более воссозданных ранее картинок для использования в качестве опорных картинок.
[0104] В отдельном тракте в пределах декодера (600) модуль (645) предсказания внутри картинки принимает данные (642) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или предсказание между BC (например, значение флага на каждый блок внутреннего предсказания), направление режима предсказания (для внутреннего пространственного предсказания) и значения векторов BV (для предсказания между BC). Для внутреннего пространственного предсказания с использованием значения воссоздания (638) текущей картинки в соответствии с данными режима предсказания модуль (645) прогнозирования внутри картинки пространственно предсказывает значения отсчетов текущего блока текущей картинки на основе соседних, ранее воссозданных значений отсчетов текущей картинки. Или для предсказания между BC с использованием значений векторов BV модуль (645) предсказания внутри картинки предсказывает значения отсчетов текущего блока с использованием ранее воссозданных значений отсчетов опорной области предсказания внутри картинки, которая указана значением вектора BV для текущего блока.
[0105] Переключатель внутреннего/внешнего режима предсказания выбирает, является ли предсказание (658) для данного блока предсказанием с компенсацией движения или предсказанием внутри картинки. Например, когда соблюдается синтаксис H.265/HEVC, переключателем внутреннего/внешнего режима предсказания можно управлять на основе синтаксического элемента, закодированного для элемента CU изображения, которое может содержать предсказанные с использованием внутреннего предсказания элементы CU и предсказанные с использованием внешнего предсказания элементы CU. Для блока не в режиме пропуска декодер (600) объединяет предсказание (658) с воссозданными разностными значениями, чтобы произвести воссоздание (638) из содержания из видеосигнала. Для блока в режиме пропуска декодер (600) использует значения предсказания (658) как воссоздание (638).
[0106] Для воссоздания разности для блока не в режиме пропуска модуль (635) масштабирования/обратного преобразования принимает и обрабатывает данные (632) квантованных коэффициентов преобразования. В модуле (635) масштабирования/обратного преобразования модуль масштабирования/обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства модуль масштабирования может скорректировать обратное квантование или масштабирование согласно настоящему описанию. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воссозданных разностных значений предсказания или значений отсчетов. Например, обратный частотный преобразователь применяет, обратное преобразование блоков к коэффициентам частотного преобразования, производя данные значений отсчетов или данные разности предсказания. Обратное частотное преобразование может представлять собой обратное преобразование DCT, его целочисленное приближение или обратное частотное преобразование другого типа (например, обратное дискретное синусное преобразование или его целочисленное приближение).
[0107] Для предсказания внутри картинки значения воссоздания (638) могут быть возвращены модулю (645) предсказания внутри картинки (645). Для предсказания между изображениями значения воссоздания (638) могут быть затем отфильтрованы. В модуле слияния/фильтре (фильтрах) (665) декодер (600) выполняет слияние содержания из разных плиток в воссозданную версию изображения. Декодер (600) выборочно выполняет фильтрацию удаления блочности и фильтрацию SAO в соответствии с управляющими данными (662) фильтра и правилами для адаптации фильтра, чтобы адаптивно сглаживать неоднородности на границах в изображениях. Другая фильтрация (такая как фильтрация с подавлением периодических помех или ALF; не показаны) может применена в качестве альтернативы или дополнительно. Границы плитки могут быть выборочно отфильтрованы или не отфильтрованы вообще в зависимости от настроек декодера (600) или синтаксических указаний в пределах закодированных данных битового потока. Буфер (670) декодированных картинок буферизует воссозданное текущая картинка для использования при последующем предсказании с компенсацией движения.
[0108] Декодер (600) также может включать в себя фильтр последующей обработки. Фильтр (608) последующей обработки может включать в себя фильтрацию с подавлением периодических помех, адаптивную фильтрацию Винера, фильтрацию воспроизведения зернистости фотопленки, фильтрацию SAO или фильтрацию другого вида.
[0109] В зависимости от реализации и типа желаемой распаковки модули декодера (600) могут быть добавлены, опущены, разбиты на несколько модулей, объединены с другими модулями и/или заменены подобными модулями. В альтернативных вариантах осуществления декодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или более описанных методик. Конкретные варианты осуществления декодеров обычно используют вариацию или дополненную версию декодера (600). Соотношения, показанные между модулями в пределах декодера (600), указывают общие потоки информации в декодере; другие соотношения ради простоты не показаны.
VII. Корректировка квантования/масштабирования или обратного квантования/масштабирования при переключении цветовых пространств.
[0110] Этот раздел представляет различные признаки адаптивного кодирования и декодирования для элементов видеопоследовательности. Элемент может представлять собой картинку, слайс, блок или другую часть видеопоследовательности. Например, некоторые признаки относятся к корректировке квантования или масштабирования, когда кодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время кодирования. Другие признаки относятся к корректировке обратного квантования или масштабирования, когда декодер переключает цветовые пространства между элементами в пределах видеопоследовательности во время декодирования. Эти характеристики могут улучшить эффективность кодирования при переключении между цветовыми пространствами во время кодирования и декодирования.
[0111] В общем смысле цветовое пространство (иногда называемое цветовой моделью) представляет собой модель для представления цветов как n значений на физическую позицию, для n>1, причем каждое из n значений обеспечивает значение цветового компонента для этой позиции. Например, в цветовом пространстве YUV, значение компонента яркости (Y) представляет приблизительную яркость в позиции, и несколько значений компонентов цветности (U и V) представляют цветовые разности в позиции. Точные определения значений цветовой разности (и операций преобразования в/из цветового пространства YUV в другое цветовое пространство, такое как RGB) зависят от реализации. Как правило, в целях кодирования и декодирования компонент Y является первичным компонентом, и компоненты U и V являются вторичными компонентами. В целом, используемый здесь термин "цветовое пространство типа YUV" указывает на любое цветовое пространство с компонентом яркости и одним или более компонентов цветности, в том числе Y"UV, YIQ, Y'IQ и YDbDr, а также такие вариации, как YCbCr и YCoCg.
[0112] Количественные показатели сигналов компонентов, которые используются, могут быть скорректированы через применение нелинейной характеристической функции преобразования (известной как ʺпредварительная гамма-компенсацияʺ и часто обозначаемой при помощи символа "штрих", хотя символ "штрих" часто опускается для типографского удобства). Или количественные показатели сигналов компонентов могут находиться в домене, который имеет линейное соотношение со световой амплитудой. Сигналы компонентов яркости и цветности могут быть хорошо выровнены с восприятием яркости и цвета для зрительной системы человека, или сигналы компонентов яркости и цветности могут несколько отклониться от количественных показателей (например, как в вариации YCoCg, в которой применяются формулы, которые упрощают вычисление значений цветовых компонентов).
[0113] В качестве другого примера, в цветовом пространстве RGB значение компонента красного (R) представляет интенсивность красного цвета, значение компонента зеленого (G) представляет интенсивность зеленого цвета, и значение компонента синего (B) представляет интенсивность синего цвета в позиции. Используемы здесь термин "цветового пространство типа RGB" указывает на цветовое пространство с цветовыми компонентами R, G и В в любом порядке. Примеры включают в себя цветовые пространства RGB, BGR и GBR, которые отличаются с точки зрения первичного компонента в целях кодирования и декодирования. Первичный компонент обозначен первой буквой цветового пространства (например, R для RGB).
[0114] Частотой цветовой дискретизации (иногда называемой частотой дискретизации цветности) называется относительное пространственное разрешение между цветовыми компонентами. Например, для частоты цветовой дискретизации 4:4:4 информация для вторичных компонентов (например, компонентов U и V для YUV) имеет такое же пространственное разрешение, как информация для первичного компонента (например, компонента Y для YUV). Для частоты цветовой дискретизации 4:2:2 или 4:2:0 информация для вторичных компонентов дискретизирована с понижением относительно информации для первичного компонента. Формат YUV 4:2:0 является форматом, который имеет пониженную частоту дискретизации информации цветности по сравнению с форматом YUV 4:4:4 таким образом, что разрешение цветности вдвое меньше, чем разрешение яркости, и по горизонтали, и по вертикали. Формат YUV 4:2:2 является форматом, который имеет пониженную частоту дискретизации информации цветности по горизонтали по сравнению с форматом YUV 4:4:4 таким образом, что разрешение цветности вдвое меньше чем, разрешение яркости по горизонтали. Другими примерами частот цветовой дискретизации являются 4:1:1 (вторичные компоненты имеют в четыре раза меньшее разрешение по горизонтали) и 4:0:0 (вторичные компоненты отброшены). Понижение частоты цветовой дискретизации обычно применяется к цветовым пространствам типа YUV. Цветовые пространства типа RGB обычно имеют частоту цветовой дискретизации 4:4:4, но могут иметь другую частоту цветовой дискретизации в соответствии с тем, для каких вторичных цветовых компонентов понижена частота дискретизации.
[0115] Хотя формат YUV 4:2:0 традиционно используется для кодирования и декодирования видео, имеются некоторые варианты использования, для которых видео имеет более богатую цветовую информацию, и может быть оправдана более достоверная цветопередача. В таких вариантах использования различия между форматами YUV 4:4:4 и YUV 4:2:0 дискретизации цветности более просто воспринимаются зрителями. Например, для кодирования/декодирования текстового содержания экрана компьютера, мультипликационного видеосодержания с искусственными резкими границами или некоторых признаков видеосодержания в более общем случае (таких как прокрутка титров и графики с резкими границами или видео с информацией, сосредоточенной в каналах цветности), формат 4:4:4 может быть предпочтителен по сравнению с форматом 4:2:0.
[0116] Битовая глубина относится к количеству битов на значение отсчета. Обычно битовая глубина составляет 8 битов на отсчет, 10 битов на отсчет и 12 битов на отсчет. Другие возможные битовые глубины включают в себя 4 бита на отсчет и 16 битов на отсчет.
[0117] Адаптивное переключение цветовых пространств, частот цветовой дискретизации и/или битовых глубин может улучшить соотношение скорости и искажений при кодировании некоторых "искусственно" созданных видеосодержаний, например, информационного содержания захвата экрана, или при кодировании смеси естественного видео и искусственно созданного видеосодержания. Общие сценарии для кодирования/декодирования содержания захвата экрана включают в себя конференции с использованием удаленного рабочего стола и кодирование/декодирование графических наложений на естественное видео или другое видео со "смешанным содержаниемʺ.
A. Типы видео.
[0118] В целом видео захвата экрана представляет вывод экрана компьютера или другого дисплея. Фиг. 7 показывает среду (710) рабочего стола компьютера с содержанием, которое может обеспечить ввод для захвата экрана. Например, видео захвата экрана может представлять последовательность изображений всего компьютерного рабочего стола (711). Или видео захвата экрана может представлять последовательность изображений для одного из окон компьютерной настольной среды, такого как окно (713) приложения, включающего в себя игровое содержание, окно (712) браузера с содержанием веб-страницы или окно (714) с содержанием текстового процессора.
[0119] Будучи машинно генерируемым, искусственно созданным видеосодержанием, содержание захвата экрана, как правило, имеет относительно немного дискретных значений отсчетов, по сравнению с содержанием естественного видеосодержания, которое захвачено с использованием видеокамеры. Например, область содержания захвата экрана часто включает в себя единственный цвет, тогда как область в естественном видеосодержании более вероятно включает в себя цвета, которые постепенно изменяются. Кроме того, содержание захвата экрана обычно включает в себя четкие структуры (например, графику, текстовые символы), которые точно повторяются из кадра в кадр, даже если содержание может быть смещено в пространстве (например, вследствие прокрутки). Содержание захвата экрана часто кодируется в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением дискретизации цветности, хотя оно также может быть закодировано в формате с более низким разрешением дискретизации цветности (например, YUV 4:2:0, YUV 4:2:2).
[0120] Фиг. 8 показывает составное видео (820), которое включает в себя естественное видео (821) и искусственно созданное видеосодержание. Искусственно созданное видеосодержание включает в себя графику (822) рядом с естественным видео (821) и бегущую строку (823) под естественным видео (821). Как и содержание захвата экрана, показанное на фиг. 7, искусственно созданное видеосодержание, показанное на фиг. 8, обычно имеет относительно немного дискретных значений отсчетов. Они также обычно имеют четкие структуры (например, графику, текстовые символы), которые точно повторяются из кадра в кадр (например, вследствие прокрутки).
B. Примеры адаптивного переключения.
[0121] Для адаптивного переключения цветовых пространств разные элементы видео в последовательности кодируются в разных цветовых пространствах. Например, некоторые элементы закодированы в цветовом пространстве типа YUV (например, YCbCr, YCoCg), и другие элементы закодированы в цветовом пространстве типа RGB (например, RGB, BGR, GBR). В этом случае кодер или декодер по мере необходимости выполняет операции преобразования цветового пространства над значениями отсчетов для переключения между цветовым пространством типа YUV и цветовым пространством типа RGB. Как правило операции преобразования цветового пространства могут быть представлены как операции умножения матриц, выполняемые для каждой позиции, где n значений отсчетов в первом цветовом пространстве для позиции умножаются на матрицу размером n x n, чтобы произвести n значений отсчетов во втором цветовом пространстве для этой позиции. На практике операции преобразования цветового пространства могут быть реализованы с использованием другой арифметики.
[0122] В качестве другого примера адаптивного переключения цветовых пространств разные элементы могут быть закодированы в разных цветовых пространствах типа RGB, которые отличаются с точки зрения их первичного компонента и порядка, в котором компоненты сообщаются (например, для разностных данных). В этом случае кодер или декодер по мере необходимости выполняет операции переупорядочения цветового пространства над блоками или плоскостями значений отсчетов, чтобы изменить цветовой компонент, который является первичным цветовым компонентом.
[0123] В некоторых иллюстративных реализациях для кодирования с потерями кодер может переключаться между любыми из разных цветовых пространств. Однако для кодирования без потерь кодер выполняет только обратимые преобразования цветовых пространств (например, переупорядочение цветовых компонентов между цветовыми пространствами RGB, BGR и GBR или в некоторых реализациях преобразование в/из YCoCg с использованием увеличенной промежуточной битовой глубины).
[0124] Для адаптивного переключения частот цветовой дискретизации разные элементы видео в последовательности кодируются с разными частотами цветовой дискретизации. Например, некоторые элементы закодированы в формате 4:2:2 или 4:2:0 (таком как YUV 4:2:2 или YUV 4:2:0), в то время как другие элементы закодированы в формате 4:4:4 (таком как YUV 4:4:4). Цветовое пространство типа RGB обычно имеет частоту цветовой дискретизации 4:4:4, но его цветовые компоненты вместо этого могут быть изменены в соответствии с частотой цветовой дискретизации 4:2:2 или 4:2:0, например, если первичный цветовой компонент намного более доминирующий, чем вторичные цветовые компоненты.
[0125] При понижении частоты дискретизации значений отсчетов для вторичного компонента по горизонтали или по вертикали кодер или декодер может выполнять простое понижение частоты дискретизации, низкочастотную фильтрацию плюс понижение частоты дискретизации или другую фильтрацию плюс понижение частоты дискретизации. Для соответствующего повышения частоты дискретизации значений отсчетов вторичного компонента кодер или декодер выполняет обратную дискретизацию с использованием, например, повторения значения отсчета и/или фильтрации.
[0126] Для адаптивного переключения битовых глубин различные элементы видео в последовательности кодируются с различными битовыми глубинами. Например, некоторые элементы закодированы с помощью 12-битовых значений отсчетов, в то время как другие элементы закодированы с помощью 10-битовых значений отсчетов или 8-битовых значений отсчетов. При преобразовании между битовыми глубинами кодер или декодер может отбрасывать значения отсчетов более высокой битовой глубины (с добавлением или без добавления округляющегося коэффициента), чтобы произвести значения отсчетов более низкой битовой глубины, или масштабировать значения отсчетов более низкой битовой глубины, чтобы произвести значения отсчетов более высокой битовой глубины.
[0127] Кодер обычно принимает входное видео в заданном формате, таком как RGB 4:4:4 с 12-битовыми значениями отсчетов. Кодер может выполнить преобразование между входным форматом и другим форматом (с другим цветовым пространством, другой частотой цветовой дискретизации и/или другой битовой глубиной) для данного элемента видео. Адаптация цветового пространства может быть выполнена  на уровне картинки, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией частоты цветовой дискретизации и/или адаптацией битовой глубины. Аналогичным образом, адаптация частоты цветовой дискретизации может быть выполнена  на уровне картинки, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией цветового пространства и/или адаптацией битовой глубины. Адаптация битовой глубины может быть выполнена  на уровне картинки, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией цветового пространства и/или адаптацией частоты цветовой дискретизации.
[0128] Фиг. 9 показывает адаптивные по изображениям цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для картинок в последовательности (900). Последовательность (900) включает в себя последовательность картинок. По мере необходимости кодер преобразовывает входное видео из входного видеоформата в формат, выбранный для данной картинки. Форматом изображения 1 является YCbCr 4:2:0 с 8-битовыми значениями отсчетов, и форматом изображения 2 является RGB 4:4:4 с 8-битовыми значениями отсчетов. Изображения 3 и 4 представляют собой видео BGR 4:4:4, но его значения отсчетов имеют разные битовые глубины.
[0129] Фиг. 10 показывает адаптивные по слайсам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для слайсов картинки (1000) в последовательности. Картинка (1000) включает в себя пять слайсов, границы которых показаны пунктирными линиями. Например, слайсы 0, 1, 3 и 4 могут быть ассоциированы с содержанием захвата экрана или другим искусственно созданным видеосодержанием, в то время как слайс 2 ассоциирован с естественным видеосодержанием. Форматом слайсов 0 и 3 является BGR 4:4:4 с 10-битовыми значениями отсчетов. Слайс 1 включает в себя 12-битовые значения отсчетов видео GBR 4:4:4. Форматом слайса 2 является YCbCr 4:2:0 с 8-битовыми значениями отсчетов, и форматом слайса 4 является RGB 4:4:4 с 8-битовыми значениями отсчетов.
[0130] Фиг. 11 показывает адаптивные по блокам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для блоков слайса (1100) картинки в последовательности. Слайс (1100) включает в себя 16 блоков, имеющих три разных размера блока. Форматом первых двух блоков является YCbCr 4:2:0 с 8-битовыми значениями отсчетов, и форматом последнего блока является YCbCr 4:2:0 с 10-битовыми значениями отсчетов. Блоки 2-15 включают в себя 12-битовые значения отсчетов в цветовом пространстве типа RGB с частотой дискретизации 4:4:4. Цветовое пространство для блоков 2-15 варьируется между RGB, BGR и GBR.
C. Корректировка квантования/масштабирования или обратного квантования/масштабирования при переключении цветовых пространств - Введение.
[0131] Когда кодер адаптивно переключает цветовые пространства между элементами видео, кодер может скорректировать квантование и/или масштабирование. Соответствующий декодер может скорректировать обратное квантование и/или масштабирование, когда декодер переключает цветовые пространства между элементами видео. Например, кодер и декодер могут использовать разные размеры шага квантования для разных цветовых компонентов, когда происходит переключение цветового пространства. Корректировка квантования/масштабирования во время кодирования и корректировка обратного квантования/масштабирования во время соответствующего декодирования может улучшить эффективность кодирования при переключении между цветовыми пространствами.
[0132] Рассмотрим пример адаптивного переключения между цветовыми пространствами RGB и YCoCg по блокам. В целом кодер или декодер может преобразовать значения отсчетов из цветового пространства RGB в цветовое пространство YCoCg, как показано в следующей операции.
Ps
, Ps
Ps
,
bit_depth
bit_depth
add_value
(bit_depth
Ps
, Ps
Ps
R
G
B
current
current
current
Y
Co
Cg
Динамический диапазон выходных значений отсчетов в цветовом пространстве YCoCg может быть скорректирован посредством добавления смещения. Предположим, что значениями отсчетов для позиции в цветовом пространстве RGB являются и  соответственно, и текущая битовая глубина составляет . Минимальное значение отсчета равно 0, и максимальное значение отсчета составляет (1<<) - 1 (например, 255 для 8-битовых значений отсчетов). Для корректировки динамического диапазона компонентов Co и Cg член  определяется как 1<< - 1) (например, 128 для 8-битовых значений отсчетов, чтобы удерживать выходные значения в диапазоне 0...255). Значения отсчетов и  для позиции в цветовом пространстве YCoCg могут быть вычислены как:
Ps
=
Ps
+
Ps
Ps
Y
R
G
B
((2 * )+)>>2
Ps
=
Ps
- Ps
+add_value
Co
R
B
(()>>1)
Ps
=
* Ps
Ps
- Ps
+add_value
Cg
G
R
B
(((2 - )>>2)
Ps
, Ps
Ps
Y
Co
Cg
Значения отсчетов и  отсекаются в диапазоне, заданном минимальным значением отсчета и максимальным значением отсчета.
[0133] В целом кодер или декодер могут преобразовать значения отсчетов из цветового пространства YCoCg обратно в цветовое пространство RGB, как показано в следующей операции.
Rs
, Rs
Rs
,
bit_depth
add_value
bit_depth
Rs
, Rs
Rs
Y
Co
Cg
current
current
R
G
B
Если смещение было добавлено к значениям отсчетов в цветовом пространстве YCoCg, смещение сначала вычитается. Например, предположим, что значениями отсчетов для позиции в цветовом пространстве YCoCg являются и  соответственно, и текущая битовая глубина составляет . Для корректировки динамического диапазона член  определяется как 1<<( - 1) (например, 128 для 8-битовых значений отсчетов, в диапазоне 0...255). Значения отсчетов  и  для позиции в цветовом пространстве RGB могут быть вычислены следующим образом:
Rs
add_value
Co
-=
Rs
add_value
Cg
-=
Rs
Rs
Rs
Rs
R
Y
Co
Cg
=+ -
Rs
Rs
Rs
G
Y
Cg
=+
Rs
Rs
Rs
Rs
B
Y
Co
Cg
= -  -
Rs
, Rs
Rs
R
G
B
Значения отсчетов  и  отсекаются в диапазоне, определенном минимальным значением отсчета и максимальным значением отсчета.
2
2
2
2
2
2
2
2
2
[0134] В соответствии с обратной матрицей преобразования цветового пространства значение отсчета компонента Y окажет влияние на значения отсчетов R, G и В. Полный вклад энергии для него через обратные преобразования цветового пространства составляет (1)+(1)+(1)=3. Значение отсчета компонента Co окажет влияние на значения отсчетов R и В, и полный вклад энергии для него через обратные преобразования цветового пространства составляет (1)+(0)+(-1)=2. Аналогичным образом, значение отсчета компонента Cg окажет влияние на значения отсчетов R, G и В, и полный вклад энергии для него через обратные преобразования цветового пространства составляет (-1)+(1)+(-1)=3. Таким образом, отношение вкладов энергии для компонентов Y, Co и Cg составляет 3:2:3.
[0135] Вследствие отношения энергии энергия погрешности квантования в компонентах Y, Co и Cg будет усилена обратными операциями преобразования цветового пространства. Если блоки в слайсе или картинке будут иметь одинаковое значение QP, когда блоки, закодированные в цветовом пространстве YCoCg, будут преобразованы обратно в цветовое пространство RGB, то энергия погрешности квантования для этих блоков (закодированных в пространстве YCoCg, затем преобразованных обратно в пространство RGB) будет усилена относительно энергии погрешности квантования для блоков, которые были закодированы в цветовом пространстве RGB. Чтобы иметь сопоставимые уровни энергии погрешности квантования между закодированными в YCoCg блоками и закодированными в RGB блоками, кодер и декодер могут скорректировать значения параметра QP или масштабирование, примененные к закодированным в YCoCg блокам, относительно значений параметра QP или масштабирования, примененных к закодированным в RGB блокам.
QP_RGB.
QP_Y.
QP_RGB
QSS
QSS
QP_RGB
QSS
.
QP_RGB
QP_Y
QP_RGB.
(
QP
_
RGB
-4)/6
1/6
2
(
QP
_
RGB
-4)/6
(
QP
_
RGB
-4)/3
2
2
2
[0136] Например, предположим, что значение параметра QP, используемое для компонентов R, G и В закодированного в RGB блока картинки или слайса, составляет  Для компонента Y закодированного в YCoCg блока картинки или слайса значение параметра QP составляет  Для данного значения размер шага квантования  задан как =2. Когда  увеличивается на 1 или уменьшения на 1, размера шага квантования увеличивается или уменьшается в 2 раз. Энергия погрешности квантования для данного значения параметра QP обычно может быть измерена как линейная функция от  Таким образом, для  энергия погрешности квантования может быть измерена как (2)=2. Чтобы иметь сопоставимые уровни энергии погрешности квантования между (a) блоками, закодированными в пространстве RGB, и (b) блоками, закодированными в пространстве YCoCg, затем преобразованными обратно в пространство RGB, значение  корректируются относительно значения  Поскольку вклад энергии от компонента Y через обратное преобразование цветового пространства составляет (1)+(1)+(1)=3, корректировка вычисляется в соответствии со следующими уравнениями, исходя из установки энергии погрешности квантования для закодированных в RGB блоков равной усиленной энергии погрешности квантования для блоков YCoCg.
(
QP
_
RGB
-4)/3=
(
QP
_
Y
-4)/3
23*2
2
2
2
(
QP
_
RGB
-4)/3
(
QP
_
Y
-4)/3
log(2)=log(3)+log(2)
QP_RGB
QP_Y
2
(-4)/3=log(3)+(-4)/3
QP_Y
QP_RGB
QP_RGB
QP_RGB
2
= - 3*log(3)= - 4,755 ≈  - 5
QP_Y
QP_RGB
QP_Co
QP_Cg
QP_RGB.
QP_Co
QP_RGB
QP_RGB
QP_Y,
QP_Cg
QP_RGB
QP_RGB
QP_RGB
QP_RGB
QP_Y=QP_Cg=
QP_ Co
QP_RGB
QP_Y=QP_Cg=
QP_Co
2
2
2
2
2
Таким образом, значение  может быть приближено как значение  - 5. Аналогичным образом, значения  и  корректируются относительно значения  Поскольку вклад энергии от компонента Co через обратные преобразования цветового пространства составляет (1)+(0)+(-1)=2, значение  равно значению  - 3*log(3)=-3. Как и значение  значение  может быть приближено как значение - 3*log(3)= - 4,755 ≈  - 5. Таким образом, для компенсации отношения энергии 3:2:3 при преобразовании компонентов Y, Co и Cg обратно в пространство RGB значения параметра QP, используемые для компонентов Y, Co и Cg, составляют приблизительно -5, -3 и -5 относительно значения QP, используемого для компонентов R, G и В. Например, если  равен 16, то 11, и =13. Или, если  равен 28, то 23, и =25.
[0137] Корректировка на -5 для значения параметра QP соответствует масштабированию в 25/6 =1,78 раз. Корректировка на -3 для значения параметра QP соответствует масштабированию в 23/6 =1,41 раз.
QP_R
QP_G
QP_B
QP_Y=
QP_Co
QP_Cg
QP_Y=
QP_Co
QP_Cg
[0138] Если значения параметра QP компонентов R, G, и В закодированного в RGB блока картинки или слайса отличаются, корректировка значений параметра QP или масштабных коэффициентов для компонентов Y, Co и Cg может быть вычислена следующим образом. Значения параметра QP компонентов R, G, и В присваиваются компонентам Y, Co и Cg, затем корректируются посредством коэффициентов корректировки параметра QP, которые основаны на усилении энергии для цветовых компонентов Y, Co и Cg в операциях обратного преобразования цветового пространства. Например, предположим, что равен 19,  равен 28, и  равен 33. В этом случае кодер и декодер могут присвоить значения параметра QP первому, второму и третьему цветовым компонентам в том же самом порядке, затем применить корректировки значения QP: 19-5=14, =28-3=25, и =33-5=28. Или кодер и декодер могут присвоить значения параметра QP первому, второму и третьему цветовым компонентам в другом порядке, затем применить корректировки значения параметра QP. Например,28-5=23, =33-3=30, и =19-5=14. Или корректировки значения параметра QP могут зависеть только от значения параметра QP, используемого для первого цветового компонента в первом цветовом пространстве. Или корректировки значения параметра QP могут зависеть от только минимального значения параметра QP, используемого для цветовых компонентов первого цветового пространства. Независимо от этого энергия погрешности квантования для закодированных в RGB блоков (без преобразования цветового пространства) примерно эквивалентна энергии квантования для закодированных в YCoCg блоков при преобразовании обратно в цветовое пространство RGB.
QSS
QPAdjustOffset
component_ID
QP_CS1
2
[0139] Как отмечено выше, погрешность квантования обычно может быть смоделирована как функция значения параметра QP (измеряющая погрешность квантования как линейная функция от ). В частности, это соотношение поддерживается для более малых значений параметра QP (и QSS). Однако, соотношение может не быть столь же точным для более высоких значений параметра QP. Таким образом, в некоторых иллюстративных реализациях кодер или декодер могут использовать разные корректировки значения QP цветовых компонентов второго цветового пространства в зависимости от значения (значений) параметра QP цветовых компонентов первого цветового пространства. Например, кодер/декодер может использовать таблицу поиска или другую структуру, чтобы определить корректировки значения параметра QP цветовых компонентов второго цветового пространства в зависимости от значений параметра QP, используемых для первого цветового пространства, причем таблица поиска или другая структура связывают разные корректировки значений параметра QP (для цветовых компонентов второго цветового пространства) с разными значениями параметра QP, используемыми для первого цветового пространства. Таблица поиска или другая структура могут включать в себя значения для конкретной пары цветовых пространств (первое цветовое пространство, второе цветовое пространство). Например, таблица поиска  может быть организована как цветовой компонент () второго цветового пространства и значение параметра QP () в первом цветовом пространстве.
QPAdjustOffset
component_ID
QP_CS1
[][]
component_ID
QP_CS1
QP_CS1
component_ID
component_ID
Для данного цветового компонента второго цветового пространства таблица поиска включает в себя корректировки значений параметра QP для других значений параметра QP , используемых в первом цветовом пространстве. Для данного значения параметра QP , используемого в первом цветовом пространстве, и данного цветового компонента  второго цветового пространства кодер/декодер может определить корректировку значения параметра QP для использования для этого цветового компонента  второго цветового пространства.
QP_Y=
QP_Co=
QPCg=
QP_Y
QP_Cg
QP_Y
QP_Cg
[0140] Кодер и декодер могут также скорректировать значения параметра QP для цветовых компонентов второго цветового пространства, исходя из значений параметра QP первого, второго и третьего цветовых компонентов для первого цветового пространства с примененными корректировками значения параметра QP. Например, кодер увеличивает значение параметра QP для одного из цветовых компонентов второго цветового пространства (и это увеличивает усиленную энергию погрешности квантования), затем уменьшает значение параметра QP для другого цветового компонента второго цветового пространства, чтобы компенсировать увеличение. Или кодер уменьшает значение параметра QP для одного из цветовых компонентов второго цветового пространства (и это уменьшает усиленную энергию погрешности квантования), затем увеличивает значение параметра QP для другого цветового компонента второго цветового пространства, чтобы компенсировать уменьшение. Например, исходя из 23, 30 и 14, кодер может уменьшить  до 18 и увеличить  до 22 без существенного изменения полной энергии погрешности квантования. (Уменьшение энергии погрешности квантования примерно на 166 (от изменения  с 23 до 18) смещается посредством увеличения энергии погрешности квантования примерно на 162 (от изменения  с 14 до 22).)
CC_matrix
1_
to
_2
[0141] Кодер и декодер могут аналогичным образом определить корректировки цветового пространства для каждого цветового компонента при преобразовании между другими цветовыми пространствами во время кодирования или декодирования в зависимости от усиления энергии для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства. В целом матрица преобразования цветового пространства  для преобразования из первого цветового пространства во второе цветовое пространство может быть определена как:
CC_offsets
CC_offsets
1_
to
_2
1_
to
_2
Для корректировки динамического диапазона на выходе может быть использована матрица смещений . Смещения  могут быть определены как:
Ps
=
Ps
Ps
Ps
Ps
CC1
00
01
02
CC2
T
Предположим, что значениями отсчетов для позиции в первом цветовом пространстве являются [,,]. Значения отсчетов  для позиции во втором цветовом пространстве могут быть вычислены как:
Ps
CC_matrix
Ps
CC_offsets
CC2
1_to_2
CC1
1_to_2
= * +
Ps
CC2
Значения отсчетов  отсекаются до подходящего диапазона.
CC_matrix
2_
to
_1
[0142] Матрица преобразования цветового пространства  для преобразования из второго цветового пространства обратно в первое цветовое пространство может быть определена как:
CC_offsets
CC_offsets
2_
to
_1
2_
to
_1
Для корректировки динамического диапазона на выходе может быть использована матрица смещений . Смещения  могут быть определены как:
Rs
=
Rs
Rs
Rs
Rs
CC2
00
01
02
CC1
T
Предположим, что значениями отсчетов для позиции во втором цветовом пространстве являются [,,]. Значения отсчетов  для позиции в первом цветовом пространстве могут быть вычислены как
Rs
CC_matrix
Rs
CC_offsets
CC1
2_to_1
CC2
2_to_1
= * (+)
Rs
CC1
Значения отсчетов  отсекаются до подходящего диапазона.
cs2to1_0
=
c'
c'
c'
cs2to1_1
=
c'
c'
c'
,
cs2to1_2
=
c'
c'
c'
.
QP_CS1
QP_CS2_0
QP_CS2_0=QP_CS1-
cs2to1_0
,
cs2to1_0
QP_CS2_1
QP_CS2_2
cs2to1_1
cs2to1_2
.
contribution
00
10
20
contribution
01
11
21
contribution
02
12
22
2
contribution
2
contribution
contribution
contribution
2
2
2
2
2
2
2
2
2
[0143] Коэффициенты корректировки цветового пространства для каждого компонента могут быть определены на основе усиления энергии (отношения энергии) для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства. Например, полный вклад энергии для первого компонента в обратных преобразованиях цветового пространства составляет ()+()+(). Полный вклад энергии для второго компонента составляет ()+()+() и полный вклад энергии для третьего компонента через обратные преобразования цветового пространства составляет ()+()+() От этих вкладов энергии кодер и декодер могут определить корректировки значений параметра QP или масштабные коэффициентов для соответствующих компонентов второго цветового пространства относительно значения параметра QP  для первого цветового пространства. Значение параметра QP  для первого компонента второго цветового пространства может быть определено как 3*log() где - 3*log() указывает корректировку значения QP. Значения параметров QP  и  для второго и третьего цветовых компонентов второго цветового пространства могут быть определены аналогичным образом с использованием  и В качестве альтернативы могут быть вычислены масштабные коэффициенты, соответствующие корректировкам значений параметров QP.
QP_CS1_R, QP_CS1_G, QP_CS1_B
[0144] Если значения параметра QP цветовых компонентов первого цветового пространства имеют разные значения (например,), значения параметра QP цветовых компонентов второго цветового пространства могут быть присвоены как описано выше, исходя из значений параметра QP цветовых компонентов первого цветового пространства, и применяя корректировки значения параметров QP. После того, как они будут присвоены и скорректированы, значения параметра QP для цветовых компонентов второго цветового пространства могут быть увеличены или уменьшены, как описано выше, при поддержании уровня энергии погрешности квантования примерно одинаковым.
[0145] В некоторых иллюстративных реализациях (см. раздел VII.D) кодер присваивает значения параметра QP цветовым компонентам второго цветового пространства с использованием синтаксических элементов, сообщенных в битовом потоке, и декодер присваивает значения параметра QP цветовым компонентам второго цветового пространства в соответствии с сообщенными синтаксическими элементами. В этих реализациях кодер имеет гибкость, чтобы присвоить более низкое значение параметра QP цветовому компоненту второго цветового пространства, который имеет самую высокую энергию или информационное содержание, и присвоить более высокие значения параметра QP другим цветовым компонентам, или иначе присваивать значения параметра QP, которые кодер считает подходящими. В других иллюстративных реализациях (см. секцию VII.E) кодер и декодер присваивают модифицированные значения параметра QP цветовым компонентам в соответствии с правилами. Например, кодер и декодер присваивают модифицированные значения параметра QP цветовым компонентам второго цветового пространства в порядке значений параметра QP для цветовых компонентов первого цветового пространства. Или кодер и декодер присваивают самое низкое значение QP, если таковое имеется, первому цветовому компоненту второго цветового пространства (например, цветовому компоненту, который, как ожидается, будет иметь самую высокую энергию или информационное содержание) и присваивают другие значения параметра QP другим цветовым компонентам второго цветового пространства.
D. Примеры синтаксических элементов для указания значений параметра QP для коэффициентов корректировки цветового пространства для каждого компонента.
[0146] Для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства кодер и декодер могут использовать разные значения параметра QP для цветовых компонентов во втором цветовом пространстве. Кодер может определить и присвоить значения параметра QP для цветовых компонентов второго цветового пространства с использованием любого из подходов, описанных в разделе VII.C. Как только значения параметра QP присвоены, кодер может сообщить их с использованием синтаксических элементов в битовом потоке. Этот раздел описывает различные методы сообщить синтаксические элементы, которые указывают значения параметра QP для цветовых компонентов во втором цветовом пространстве.
[0147] В целом значения параметра QP для цветовых компонентов во втором цветовом пространстве могут быть сообщены дифференциально (как смещения) относительно значений параметра QP соответствующих цветовых компонентов в первом цветовом пространстве. Или значения параметра QP для второго и третьего цветовых компонентов во втором цветовом пространстве могут быть сообщены дифференциально (как смещения) относительно значения QP для первого цветового компонента во втором цветовом пространстве, которое само может быть сообщено дифференциально относительно значения QP для первого цветового пространства. Или значения параметра QP для цветовых компонентов во втором цветовом пространстве могут быть сообщены некоторым другим образом.
slice_qp_delta
[0148] Например, значения параметра QP для первого цветового пространства и второго цветового пространства могут быть сообщены на уровне слайса (например, в заголовке слайса). В некоторых реализациях H.265/HEVC (см.JCTVC-P1003) синтаксический элемент  сообщается в заголовке слайса и указывает смещение для значения параметра QP слайса относительно начального значения параметра QP для картинки, которая включает в себя слайс.
slice_qp_delta
slice_qp_delta_cs2
slice_qp_delta_cs2
slice_qp_delta_cs2
init_qp_minus_26+slice_qp_delta,
init_qp_minus_26
slice_qp_delta
slice_qp_delta_cs2.
slice_qp_delta_cs2
init_qp_minus_26
slice_qp_delta_cs2.
[0149] Вместо того, чтобы использовать единственный синтаксический элемент для смещения параметра QP слайса, два разных синтаксических элемента могут указать смещение параметра QP слайса для первого цветового пространства и смещение параметра QP слайса для второго цветового пространства, соответственно. Например,  может указывать смещение параметра QP для слайса, когда в слайсе используется первое цветовое пространство, и  может указывать смещение параметра QP для слайса, когда в слайсе используется второе цветовое пространство. Синтаксический элемент  может быть сообщен по условию, когда используются по меньшей мере два цветовых пространства. Синтаксический элемент  может указывать разность относительно значения параметра QP для слайса для первого цветового пространства. Таким образом, значение параметра QP для слайса для первого цветового пространства равно 26+ и значение параметра QP для слайса для второго цветового пространства равно 26+++В качестве альтернативы синтаксический элемент  может указывать разность относительно начального значения параметра QP для картинки. Таким образом, значение параметра QP для слайса, когда используется второе цветовое пространство, равно 26++
init_qp_minus_26
init_qp_diff_cs2
init_qp_minus_26
init_qp_minus_26+init_qp_diff_cs2.
init_qp_minus_26_cs2
slice_qp_delta,
slice_qp_delta.
[0150] Или, вместо того, чтобы сообщать два значения параметра QP в заголовке слайса, значения параметра QP для второго цветового пространства могут быть сообщены  на уровне картинки (например, в множестве PPS). В некоторых реализациях H.265/HEVC синтаксический элемент  сообщается в множестве PPS и указывает начальное значение параметра QP  для картинки. Другой синтаксический элемент  в множестве PPS может указывать начальное значение параметра QP  для картинки для второго цветового пространства (или первого цветового компонента второго цветового пространства) относительно начального значения параметра QP  для картинки для первого цветового пространства (указанного с помощью ). Таким образом, значение параметра QP  для картинки для второго цветового пространства равно 26+ В качестве альтернативы синтаксический элемент  в множестве PPS может непосредственно указывать начальное значение параметра QP  для картинки для второго цветового пространства (или первого цветового компонента второго цветового пространства). В любом случае значения параметра QP для слайса для первого цветового пространства и второго цветового пространства могут быть получены с использованием смещения параметра QP слайса. Например, значение параметра QP для слайса для первого цветового пространства представляет собой начальное значение параметра QP  для картинки для первого цветового пространства+ и значение параметра QP для слайса для второго цветового пространства представляет собой начальное значение QP  для картинки для второго цветового пространства+
pps_cb_qp_offset
pps_cr_qp_offset
pps_cb_qp_offset_cs2
pps_cr_qp_offset_cs2
pps_cb_qp_offset_cs2
pps_cr_qp_offset_cs2
[0151] Вместо того, чтобы сообщать единственное значение QP для каждого цветового пространства (для слайса или картинки), разные значения параметра QP могут быть сообщены для разных цветовых компонентов во втором цветовом пространстве. Например,  на уровне картинки (например, в множестве PPS) смещения для второго и третьего цветовых компонентов изображения для второго цветового пространства могут быть сообщены как смещения относительно значений параметра QP соответствующих цветовых компонентов в первом цветовом пространстве  для картинки. В некоторых реализациях H.265/HEVC синтаксические элементы  и указывают смещения для второго и третьего цветовых компонентов первого цветового пространства (либо YCbCr, либо другого цветового пространства) относительно начального значения QP  для картинки (для первого цветового компонента первого цветового пространства). Два дополнительных синтаксических элементаимогут указать, что смещения для второго и третьего цветовых компонентов второго цветового пространства (либо YCbCr, либо другого цветового пространства) относительно значений параметра QP для второго и третьего цветовых компонентов первого цветового пространства, соответственно. Или смещения для второго и третьего цветовых компонентов второго цветового пространства могут быть сообщены как смещения относительно начального значения параметра QP  для картинки для второго цветового пространства. Например, синтаксические элементы  и  могут указывать смещения для второго и третьего цветовых компонентов второго цветового пространства относительно значения параметра QP  для картинки (и первого цветового компонента) для второго цветового пространства.
slice_cb_qp_offset
slice_cr_qp_offset
slice_cb_qp_offset_cs2
slice_cr_qp_offset_cs2
slice_cb_qp_offset_cs2
slice_cr_qp_offset_cs2
[0152] Или на уровне слайса (например, в заголовке слайса), смещения для второго и третьего цветовых компонентов слайса для второго цветового пространства могут быть сообщены как смещения относительно значений параметра QP соответствующих цветовых компонентов в первом цветовом пространстве для слайса. В некоторых реализациях H.265/HEVC синтаксические элементы  и  указывают смещения для второго и третьего цветовых компонентов первого цветового пространства (либо YCbCr, либо другого цветового пространства) относительно значения QP для слайса (для первого цветового компонента первого цветового пространства). Два дополнительных синтаксических элемента  и  могут указывать, что смещения для второго и третьего цветовых компонентов второго цветового пространства (либо YCbCr, либо другого цветового пространства) относительно значений параметра QP для второго и третьего цветовых компонентов первого цветового пространства, соответственно. Или смещения для второго и третьего цветовых компонентов слайса для второго цветового пространства могут быть сообщены как смещения относительно значения параметра QP для первого цветового компонента слайса для второго цветового пространства. Например, синтаксические элементы  и  могут указывать смещения для второго и третьего цветовых компонентов второго цветового пространства относительно значения параметра QP для первого цветового компонента слайса для второго цветового пространства.
[0153] Таким образом, значения параметра QP сообщаются  для картинки или слайса для первого цветового пространства и для второго цветового пространства. Когда кодер или декодер переключают цветовые пространства между элементами (например, между блоками или слайсами картинки, или между блоками слайса) кодер или декодер имеет подходящие значения параметра QP для применения. В качестве альтернативы синтаксические элементы, которые указывают значения параметра QP для цветовых компонентов второго цветового пространства, сообщаются некоторым другим способом.
E. Примеры правил вывода для значений параметра QP для коэффициентов корректировки цветового пространства для каждого компонента.
[0154] Вместо того, чтобы сообщить разные значения параметра QP для цветовых компонентов во втором цветовом пространстве, кодер и декодер могут получить значения параметра QP в соответствии с правилами в зависимости от идентификационной информации второго цветового пространства, исходя из значений параметра QP цветовых компонентов в первом цветовом пространстве. Таким образом, кодер и декодер могут модифицировать значения параметра QP, используемые во время кодирования и декодирования, чтобы компенсировать усиление энергии погрешности квантования в операциях обратного преобразования цветового пространства. Раздел VII.C описывает методы определения корректировки значения QP в зависимости от обратных операций преобразования цветового пространства, используемых при преобразовании из второго цветового пространства обратно в первое цветовое пространство. Один из этих подходов может быть применен автоматически кодером и декодером без сообщения синтаксических элементов, которые указывают корректировки значения QP цветовых компонентов второго цветового пространства.
QP_RGB,
Qp'Y
Qp'Cb
Qp'Cr
Qp'Y
Qp'Cb
Qp'Cr
Qp'Y
Qp'Cb
Qp'Cr
[0155] Кодер и декодер могут модифицировать окончательные значения параметра QP для цветовых компонентов первого цветового пространства после того, как значения параметра QP для цветовых компонентов первого цветового пространства будут определены иным образом. Например, для блока, закодированного в цветовом пространстве YCoCg, кодер и декодер могут скорректировать окончательное значение параметра QP  используемое для закодированных в RGB блоков на -5, -3 и -5 для значений параметра QP для компонентов Y, Co и Cg, соответственно. (Вывод коэффициентов корректировки -5, -3 и -5 описан выше.) В некоторых реализациях H.265/HEVC переменные ,  и  указывают окончательные значения параметра QP для первого, второго и третьего цветовых компонентов для YCbCr, RGB или другого первого цветового пространства (имена переменных могут изменяться). Если цветовое для кодирования использовано пространство YCoCg, чтобы определить значения параметра QP для цветовых компонентов Y, Co и Cg, окончательные значения параметра QP ,  и  корректируются следующим образом:  -= 5,  -= 3 и  -= 5. Корректировки цветового пространства для каждого цветового компонента -5, -3 и -5 представляют собой часть правил вывода. Скорректированные значения параметра QP могут быть отсечены до минимального разрешенного значения параметра QP.
Qp'Y
Qp'Cb,
Qp'Cr
[0156] Для другого второго цветового пространства корректировки окончательных значений параметра QP , и  могут быть аналогичным образом модифицированы в зависимости от усиления энергии для компонентов соответствующего цвета этого второго цветового пространства в операциях обратного преобразования цветового пространства.
qPiCb
qPiCr
QpY
, Qp
qPiCb
qPiCr
[0157] Или, вместо того, чтобы модифицировать окончательные значения параметра QP цветовых компонентов для первого цветового пространства, кодер и декодер могут модифицировать промежуточные значения параметра QP по меньшей мере для некоторых цветовых компонентов для первого цветового пространства. Например, для блока, закодированного в цветовом пространстве YCoCg, кодер и декодер могут скорректировать промежуточные значения параметра QP для компонентов Co и Cg, соответственно. В некоторых реализациях H.265/HEVC переменные  и  указывают промежуточные значения параметра QP для второго и третьего цветовых компонентов для YCbCr, RGB или другого первого цветового пространства (имена переменных могут изменяться), и переменная указывает промежуточное значение параметра QP для первого цветового компонента для первого цветового пространства. Если цветовое для кодирования использовано пространство YCoCg, чтобы определить значения параметра QP для цветовых компонентов Y, Co и Cg, окончательное значение параметра QP У и промежуточные значения параметра QP  и  определяются следующим образом:
Qp'Y=QpY+QpBdOffsetY
- 5
qPiCb=
-QpBdOffsetC,
QpY
pps_cb_qp_offset+slice_cb_qp_offset
Clip3( 57,  - 3+)
qPiCr=
-QpBdOffsetC,
QpY
pps_cr_qp_offset+slice_cr_qp_offset
Clip3( 57,  - 5+)
pps_cb qp_offset
slice_cb_qp_offset, pps_cr_qp_offset
slice_cr_qp_offset),
Эти уравнения используют синтаксические элементы, которые указывают значения параметра QP для цветовых компонентов первого цветового пространства (например,,  и  но не синтаксические элементы, которые указывают корректировки цветового пространства цветового компонента. Вместо этого корректировки цветового пространства для каждого цветового компонента -5, -3 и -5 представляют собой часть правил вывода. Скорректированные значения параметра QP могут быть отсечены до минимального разрешенного значения параметра QP.
[0158] Для другого второго цветового пространства корректировки промежуточных значений параметра QP могут быть аналогичным образом модифицированы в зависимости от усиления энергии для компонентов соответствующего цвета этого второго цветового пространства в операциях обратного преобразования цветового пространства.
[0159] По правилу кодер и декодер могут присвоить модифицированные значения параметра QP цветовым компонентам второго цветового пространства в порядке значений параметра QP для цветовых компонентов первого цветового пространства. Или по правилу кодер и декодер могут присвоить самое низкое модифицированное значение параметра QP, если таковое имеется, первому цветовому компоненту второго цветового пространства (например, цветовому компоненту, который, как ожидается, будет иметь самую высокую энергию или информационное содержание) и присваивают другие модифицированные значения параметра QP другим цветовым компонентам второго цветового пространства.
F. Примеры масштабных коэффициентов для коэффициентов корректировки цветового пространства для каждого компонента.
[0160] Вместо того, чтобы модифицировать значения параметра QP для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства, кодер и декодер могут модифицировать процесс масштабирования коэффициентов преобразования.
m
x
y
m
x
y
cIdx
m
x
y
cIdx
m
x
y
cIdx
m
x
y
m
x
y
5/6
3/6
5/6
[0161] Например, может быть модифицирован список масштабных коэффициентов, которые будут применены к коэффициентам преобразования. После определения специфичных для частоты масштабных коэффициентов [][], если используется второе цветовое пространство использовано, [][] могут быть модифицированы в зависимости от цветового компонента, коэффициенты преобразования которого масштабируются. Переменная  указывает индекс цветового компонента. Когда первым цветовым пространством является RGB и вторым цветовым пространством является YCoCg, например, [][] могут быть модифицированы посредством специфичных для компонента масштабных коэффициентов 1,78, 1.41 и 1,78 для компонентов Y, Co и Cg, соответственно. Специфичные для компонента масштабные коэффициенты 1,78, 1.41 и 1,78 соответствуют изменениям QSS на 2, 2 и 2, соответственно, и примерно соответствуют корректировкам значения параметра QP на -5, -3 и -5, соответственно. Если  равен 0 или 2, [][]=1,78. Иначе, если  равен 1, [][]=1,41. В качестве альтернативы, вместо того, чтобы использовать операции с плавающей точкой, [][] могут быть модифицированы с использованием целочисленных операций.
[0162] Для другого второго цветового пространства специфичные для компонента масштабные коэффициенты модифицируются в зависимости от усиления энергии для компонентов соответствующего цвета этого второго цветового пространства в операциях обратного преобразования цветового пространства.
m
x
y
factor
cIdx
factor
cIdx
TransCoeffLevel
[0163] Или, без модификации [][], кодер и декодер могут отдельно учитывать специфичные для компонента масштабные коэффициенты для разных цветовых компонентов второго цветового пространства при выполнении операций масштабирования. Например, массив [] хранит специфичные для компонента масштабные коэффициенты для цветовых компонентов второго цветового пространства. Когда вторым цветовым пространством является YCoCg, например, [] представляет собой {1,78, 1,41, 1,78}. Для другого второго цветового пространства специфичные для компонента масштабные коэффициенты модифицируются в зависимости от усиления энергии для компонентов соответствующего цвета этого второго цветового пространства в операциях обратного преобразования цветового пространства. Коэффициенты преобразования в массиве  подвергаются обратному квантованию и масштабированию следующим образом.
d
x
y
TransCoeffLevel
xTbY
yTbY
cIdx
x
y
m
x
y
* factor
cIdx
levelScale
qP%6
qP/6
bdShift
bdShift
[][]=Clip3(-32768, 32767, (([][][][][]*[][] [] * []<<())+(1<<(-1)))>>)
factor
cIdx
factor2
cIdx
factor
cIdx
factor2
cIdx
factor
cIdx
.
[0164] Или кодер и декодер могут выполнить операции масштабирования с использованием только целочисленных операций, где [] и [] включают в себя целочисленные значения, определенные таким образом, что []/[]является приближением []
d
x
y
TransCoeffLevel
xTbY
yTbY
cIdx
x
y
m
x
y
* factor
cIdx
factor2
cIdx
levelScale
qP%6
qP/6
bdShift
bdShift
[][]=Clip3(-32768, 32767, (([][][][][]*[][] []/[] * []<<())+(1<<(-1)))>>)
[0165] Специфичные для компонента масштабные коэффициенты для цветовых компонентов второго цветового пространства могут быть сообщены в битовом потоке или выведены с использованием правил воссоздания в кодере и декодере.
m
x
y
m_cs2
x
y
[0166] В качестве альтернативы кодер и декодер могут использовать разные специфичные для частоты масштабные коэффициенты [][] и [][] для разных цветовых пространств или для разных цветовых компонентов разных цветовых пространств. Специфичные для частоты масштабные коэффициенты для разных цветовых пространств/цветовых компонентов могут быть сообщены в битовом потоке или выведены с использованием правил воссоздания в кодере и декодере.
G. Примеры дополнительных изменений на стороне кодера.
1/3
1/3
-5/3
-3/3
-5/3
=
_Y=
RGB
_Со=
RGB
_Cg
GB
RGB
[0167] Кроме изменений в квантовании или масштабировании процессы принятия решений на стороне кодера могут быть модифицированы, чтобы отразить корректировки значений параметра QP или масштабирования. Кодер может модифицировать множитель Лагранжа λ, используемый в квантовании с оптимизацией соотношения скорости и искажения (RDOQ), для соответствия значениям параметра QP, используемым для разных цветовых компонентов разных цветовых пространств. Например, если значение параметра QP увеличивается на 1, соответствующий множитель Лагранжа увеличивается на 2: λλ*2 для квантования RDOQ. Если значение параметра QP изменяется на некоторую другую величину, множитель Лагранжа увеличивается или уменьшается соответствующим образом. Таким образом, если значения параметра QP для компонентов Y, Co и Cg определены посредством корректировки значений параметра QP компонентов R, G и В на -5, -3 и -5, соответствующие множители Лагранжа для квантования RDOQ устанавливаются равными λλ_ * 2, λλ_ * 2 и λ=λ_ * 2, соответственно, где λ_ - множитель Лагранжа для квантования RDOQ в цветовом пространстве RGB.
[0168] В качестве альтернативы кодер может модифицировать множители Лагранжа для квантования RDOQ во втором цветовом пространстве, не изменяя значения параметра QP.
[0169] Для другого второго цветового пространства множители Лагранжа для квантования RDOQ могут быть аналогичным образом модифицированы в зависимости от корректировок, внесенных в значения параметра QP или масштабирование.
[0170] Кроме квантования RDOQ множитель Лагранжа λ для другого процесса принятия решения с учетом соотношения скорости и искажения может быть модифицирован в зависимости от корректировок, внесенных в значения параметра QP или масштабирование. Например, значение λ, используемое при анализе соотношения скорости и искажения при принятии решения между режимами или вариантами кодирования (например, направления внутреннего предсказания) для кодирования во втором цветовом пространстве, может быть модифицировано в соответствии с разностью значений параметра QP между первым цветовым пространством и вторым цветовым пространством. Кодер может выбрать наилучший режим или вариант в соответствии с затратами соотношения скорости и искажения, которые нагружены модифицированным значением λ для второго цветового пространства.
H. Альтернативный подход с изменениями только на стороне кодера.
[0171] В качестве альтернативы кодер может скорректировать значения параметра QP по элементам, чтобы скомпенсировать усиление энергии погрешности квантования в операциях обратного преобразования цветового пространства. Кодер устанавливает значения параметра QP по элементам с использованием существующих синтаксических элементов для определения значений параметра QP для соответствующих элементов. На основе сообщенных синтаксических элементов декодер определяет значения параметра QP по элементам для соответствующих элементов, не внося корректировки цветового пространства в значения параметра QP. Например, для первого элемента, закодированного в первом цветовом пространстве (например, RGB), кодер использует первое множество значений параметра QP и сообщает синтаксические элементы, указывающие первое множество значений параметра QP для первого элемента. Затем для второго элемента, закодированного во втором цветовом пространстве (например, YCoCg), кодер использует второе множество значений параметра QP и сообщает синтаксические элементы, указывающие второе множество значений параметра QP для второго элемента. Второе множество значений параметра QP может быть определено, как описано выше, для компенсации усиления энергии погрешности квантования в операциях обратного преобразования цветового пространства. Например, значения параметра QP для второго элемента корректируются посредством коэффициентов -5, -3 и -5 для компонентов Y, Co и Cg, соответственно. Для другого второго цветового пространства корректировки, внесенные в значения параметра QP, модифицируются соответствующим образом.
cu_qp_delta_abs
cu_qp_delta_sign_flag
cu_qp_delta_abs
cu_qp_delta_sign_flag
[0172] Корректировки значений параметра QP могут быть сообщены по элементам CU, когда переключение цветового пространства может произойти по элементам CU. В некоторых реализациях H.265/HEVC смещения для значений параметра QP сообщаются как часть синтаксиса уровня элемента TU для разных элементов CU. Например, синтаксические элементы  и  могут использоваться, чтобы указать первое смещение параметра QP для первого элемента CU, который закодирован в первом цветовом пространстве, таком как RGB, и синтаксические элементы  и  могут использоваться позже, чтобы указать второе смещение параметра QP для второго элемента CU, который закодирован во втором цветовом пространстве, таком как YCoCg. Значения параметра QP для каждого цветового компонента во втором цветовом пространстве могут быть определены с использованием других значений смещения параметра QP для второго и третьего цветовых компонентов.
slice_qp_delta, slice_cb_qp_offset
slice_cr_qp_offset
slice_qp_delta, slice_cb_qp_offset
slice_cr_qp_offset
slice_qp_delta, slice_cb_qp_offset
slice_cr_qp_offset
[0173] Или корректировки значений параметра QP могут быть сообщены по слайсам, когда переключение цветового пространства может произойти по слайсам. В некоторых реализациях H.265/HEVC значения параметра QP могут быть установлены в заголовках слайса с использованием синтаксических элементов  и , чтобы указать значения параметра QP для данного слайса. Например, синтаксические элементы  и  могут использоваться, чтобы указать значения параметра QP для первого слайса, который закодирован в первом цветовом пространстве, таком как RGB, и синтаксические элементы  и  могут использоваться позже, чтобы указать значения параметра QP для второго слайса, который закодирован во втором цветовом пространстве, таком как YCoCg. Или корректировки значений параметра QP могут быть сообщены по некоторым другим элементам, когда переключение цветового пространства может произойти между такими элементами.
I. Примеры корректировки квантования/масштабирования или обратного квантования/масштабирования при переключении цветовых пространств во время кодирования или декодирования.
[0174] Фиг. 12 показывает обобщенную методику (1200) для корректировки квантования или масштабирования при переключении цветовых пространств во время кодирования, и фиг. 13 показывает более подробную иллюстративную методику (1300) для корректировки квантования или масштабирования при переключении цветовых пространств по элементам. Кодер изображения или видеокодер, такой как описан со ссылкой на фиг. 3 или фиг. 5a-5b, или другой кодер может выполнить методику (1200) или методику (1300).
[0175] Фиг. 14 показывает обобщенную методику (1400) для корректировки обратного квантования или масштабирования при переключении цветовых пространств во время декодирования, и фиг. 15 показывает более подробную иллюстративную методику (1500) для корректировки обратного квантования или масштабирования при переключении цветовых пространств по элементам. Декодер изображения или видеодекодер, такой как описан со ссылкой на фиг. 4 или фиг. 6, или другой декодер может выполнить методику (1400) или методику (1500).
[0176] Со ссылкой на фиг. 12 кодер кодирует (1210) элементы изображения или видео (например, картинки, слайсы, элементы CU, блоки), чтобы произвести закодированные данные. Как часть кодирования при переключении из первого цветового пространства во второе цветовое пространство между двумя из элементов (например, из цветового пространства типа RGB в цветовое пространство типа YUV или из цветового пространства типа YUV в цветовое пространство типа RGB) кодер корректирует квантование или масштабирование для цветовых компонентов второго цветового пространства в соответствии с коэффициентами корректировки цветового пространства для каждого компонента. Кодер выдает (1220) закодированные данные как часть битового потока.
[0177] Со ссылкой на фиг. 13 кодер определяет (1310) корректировки значений параметра QP или масштабные коэффициенты для компонентов второго цветового пространства. Например, кодер определяет корректировки значения параметра QP или масштабные коэффициенты с использованием любого из описанных здесь подходов. Кодер также определяет значения параметра QP и масштабные коэффициенты для компонентов первого цветового пространства. Кодер получает (1320) следующий элемент (например, картинка, слайс, элемент CU) видео и устанавливает (1330) цветовое пространство для элемента. Например, кодер выбирает между цветовым пространством типа RGB и цветовым пространством типа YUV (таким как YCoCg) для элемента. Кодер затем кодирует (1340) элемент с использованием подходящих значений параметра QP и масштабных коэффициентов для выбранного цветового пространства. Кодер выдает (1350) закодированные данные для элемента, которые включают в себя один или несколько сигналов, которые указывают цветовое пространство для элемента. Кодер (1360) проверят, следует ли продолжать выполнение для следующего элемента, и если да, получает (1320) следующий элемент.
[0178] Со ссылкой на фиг. 14 декодер принимает (1410) закодированные данные как часть битового потока. Декодер декодирует (1420) закодированные данные для воссоздания элементов изображения или видео (например, картинок, слайсов, элементов CU, блоков). Как часть декодирования при переключении из первого цветового пространства во второе цветовое пространство между двумя из элементов (например, из цветового пространства типа RGB в цветовое пространство типа YUV или из цветового пространства типа YUV в цветовое пространство типа RGB) декодер корректирует обратное квантование или масштабирование для цветовых компонентов второго цветового пространства в соответствии с коэффициентами корректировки цветового пространства для каждого компонента.
[0179] Со ссылкой на фиг. 15 декодер определяет (1510) корректировки значений параметра QP или масштабные коэффициенты для компонентов второго цветового пространства. Например, декодер определяет корректировки значений параметра QP или масштабные коэффициенты с использованием любого из описанных выше подходов. Декодер также определяет значения параметра QP и масштабные коэффициенты для компонентов первого цветового пространства. Декодер получает (1520) закодированные данные для следующего элемента (например, картинки, слайса, элемента CU) видео, которая включает в себя один или более сигналов, которые указывают цветовое пространство для элемента. Декодер определяет (1530) цветовое пространство для элемента. Например, на основе сигнале (сигналов) декодер выбирает между цветовым пространством типа RGB и цветовым пространством типа YUV (таким как YCoCg) для элемента. Декодер декодирует (1540) элемент с использованием подходящего значения параметра QP и масштабных коэффициентов для пространства выбранного цвета. Декодер (1550) проверят, следует ли продолжать выполнение для следующего элемент, и если да, получает (1520) закодированные данные для следующего элемента.
[0180] В целом коэффициенты корректировки цветового пространства для каждого компонента компенсируют усиление энергии погрешности квантования при преобразовании из второго цветового пространства обратно в первое цветовое пространство. Иначе, если значения параметра QP и масштабные коэффициенты из первого цветового пространства просто применены к значениям отсчетов во втором цветовом пространстве, погрешность квантования во втором цветовом пространстве усиливается посредством обратных операций преобразования цветового пространства обратно в первое цветовое пространство.
[0181] Для примеров, показанных на фиг. 12-15, один или более синтаксических элементов в битовом потоке могут указать коэффициенты корректировки цветового пространства для каждого компонента. Синтаксический элемент (элементы) может быть сообщен  на уровне картинки, на уровне слайса, на уровне синтаксиса для элемента кодирования или блока или на некотором другом уровне синтаксиса. Синтаксический элемент (элементы) может включать в себя синтаксический элемент, который указывает значение параметра QP для первого цветового компонента второго цветового пространства, а также синтаксические элементы, которые указывают смещения для второго и третьего цветовых компонентов второго цветового пространства. Раздел VII.D описывает примеры сигнализации значений параметра QP для цветовых компонентов второго цветового пространства.
[0182] Или, вместо обозначения синтаксическими элементами в битовом потоке коэффициенты корректировки цветового пространства для каждого компонента для цветовых компонентов второго цветового пространства могут быть выведены по правилу в зависимости от второго цветового пространства, исходя из значений параметра QP цветовых компонентов первого цветового пространства. Раздел VII.E описывает примеры правил вывода для значений параметра QP для цветовых компонентов второго цветового пространства.
[0183] Действие корректировки квантования или обратного квантования может включать в себя корректировку окончательных значений параметра QP или промежуточных значений параметра QP цветовых компонентов для первого цветового пространства, чтобы определить значения параметра QP для цветовых компонентов второго цветового пространства. Например, если первым цветовым пространством является RGB и вторым цветовым пространством является YCoCg, коэффициенты корректировки цветового пространства для каждого компонента могут быть равны -5,-3 и-5 для компонентов Y, Co и Cg. В более общем случае коэффициенты корректировки цветового пространства для каждого компонента для квантования и обратного квантования могут зависеть от усиления энергии для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства.
[0184] Скорректированное масштабирование во время кодирования или декодирования может включать в себя масштабирование коэффициентов преобразования с использованием коэффициентов корректировки цветового пространства для каждого компонента. Масштабирование может использовать только целочисленные операции или операции с плавающей точкой. Коэффициенты корректировки цветового пространства для каждого компонента могут быть включены в специфичные для частоты масштабные коэффициенты или применены отдельно. Например, если первым цветовым пространством является- RGB, и вторым цветовым пространством является YCoCg, специфичные для компонента масштабные коэффициенты могут быть равны 1,78, 1,41 и 1,78 для компонентов Y, Co и Cg. В более общем случае коэффициенты корректировки цветового пространства для каждого компонента для масштабирования могут зависеть от усиления энергии для компонентов соответствующего цвета второго цветового пространства в операциях обратного преобразования цветового пространства. Для дополнительных сведений см. раздел VIII.F.
[0185] Или для изменений во время кодирования, которые не требуют соответствующих изменений во время декодирования, кодер может установить значения параметра QP для каждого компонента по элементам. В этом случае битовый поток включает в себя синтаксические элементы, которые указывают значения параметра QP для каждого компонента для соответствующих элементов. Для дополнительных сведений см. раздел VIII.H.
[0186] С учетом многих возможных вариантов осуществления, к которым могут быть применены принципы раскрытого изобретения, следует понимать, что проиллюстрированные варианты осуществления являются лишь предпочтительными примерами изобретения и не должны быть взяты в качестве ограничения объема изобретения. Вместо этого объем изобретения определен следующей формулой изобретения. Таким образом, мы заявляем в качестве нашего изобретения все, что подпадает под объем и сущность этой формулы изобретения.