УРОВЕНЬ ТЕХНИКИ
[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] Частотой цветовой дискретизации (иногда называемой частотой дискретизации цветности) называется относительное пространственное разрешение между цветовыми компонентами. Например, для частоты цветовой дискретизации 4:4:4 информация для вторичных компонентов (например, компонентов U и V для цветового пространства YUV) имеет такое же пространственное разрешение, как информация для первичного компонента (например, компонента Y для YUV). Для частоты цветовой дискретизации 4:2:2 или 4:2:0 информация для вторичных компонентов дискретизирована с понижением относительно информации для первичного компонента. Формат YUV 4:2:0 обычно используется для кодирования/декодирования. В качестве принципа разработки решение использовать формат YUV 4:2:0 для кодирования/декодирования основывается на понимании того, что в большинстве случаев зрители не замечают больших визуальных различий между видеоизображением, закодированным/декодированным в формате YUV 4:2:0, и видео, кодированным/декодированным в формате YUV 4:4:4. Таким образом, востребованы преимущества для формата YUV 4:2:0, имеющего меньше отсчетов на кадр.
[005] Битовой глубиной называется количество битов на значение отсчета. Обычно битовая глубина составляет 8 битов на отсчет, 10 битов на отсчет и 12 битов на отсчет. В целом наличие большего количества битов на отсчет позволяет более точные градации цветов для видео, но использует больший объем памяти для хранения видео. Наличие меньшего количества битов на отсчет обычно уменьшает скорость цифрового потока за счет уменьшенного качества.
[006] Многие серийно выпускаемые видеокодеры и декодеры поддерживают только формат YUV 4:2:0. Другие серийно выпускаемые кодеры и декодеры (например, для стандарта H.264/AVC или стандарта H.265/HEVC) позволяют кодеру задавать цветовое пространство, частоту цветовой дискретизации и битовую глубину для данной последовательности. Заданные цветовое пространство, частота цветовой дискретизации и битовая глубина используются для всей видеопоследовательности. Эти подходы не обеспечивают достаточную гибкость для системы кодека общего назначения, которая может обрабатывать очень разные виды видеоизображений в пределах одной видеопоследовательности.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[007] Таким образом, подробное описание представляет новшества в области адаптивного кодирования и декодирования. Например, некоторые новшества относятся к кодеру, который переключает цветовые пространства между элементами в пределах видеопоследовательности во время кодирования, а также к соответствующему декодеру. Другие новшества относятся к кодеру, который переключает частоты цветовой дискретизации между элементами в пределах видеопоследовательности во время кодирования, а также к соответствующему декодеру. Еще одни новшества относятся к кодеру, который переключает битовые глубины между элементами в пределах видеопоследовательности во время кодирования, а также к соответствующему декодеру. Эти новшества могут улучшить эффективность кодирования во многих сценариях.
[008] В соответствии с первым аспектом описанных здесь новшеств, кодер изображений или видеокодер кодирует видеоинформацию в последовательности. Как часть кодирования кодер переключает цветовые пространства, частоты цветовой дискретизации и/или битовые глубины пространственным и/или временным образом по меньшей мере между некоторыми элементами (например, изображениями последовательности, слайсами данного изображения последовательности, блоками данного изображения последовательности) видеоинформации в пределах последовательности. Кодер выводит закодированные данные в битовом потоке. Закодированные данные включают в себя один или более сигналов, указывающих, каким образом цветовые пространства, частоты цветовой дискретизации и/или битовые глубины переключаются по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности.
[009] Соответствующий декодер принимает закодированные данные в битовом потоке. Закодированные данные включают в себя один или более сигналов, указывающих, каким образом цветовые пространства, частоты цветовой дискретизации и/или битовые глубины переключаются по меньшей мере между некоторыми элементами (например, изображениями последовательности, слайсами данного изображения последовательности, блоками данного изображения последовательности) видеоинформации в пределах последовательности. Декодер декодирует закодированные данные. Как часть декодирования декодер переключает цветовые пространства, частоты цветовой дискретизации и/или битовые глубины пространственным и/или временным образом по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности.
[010] Например, во время кодирования или декодирования переключение включает в себя изменение между двумя цветовыми пространствами с использованием операций преобразования цветовых пространств. Для операций преобразования цветовых пространств цветовые пространства могут включать в себя по меньшей мере одно цветовое пространство типа YUV и по меньшей мере одно цветовое пространство типа RGB.
[011] Или в качестве другого примера во время кодирования или декодирования переключение включает в себя изменение между двумя цветовыми пространствами с использованием операций переупорядочения цветовых пространств. Для операций переупорядочения цветовых пространств цветовые пространства могут включать в себя несколько цветовых пространств типа RGB.
[012] Или в качестве другого примера во время кодирования или декодирования переключение включает в себя изменение между двумя частотами цветовой дискретизации. Частоты цветовой дискретизации могут включать в себя две или более из 4:4:4, 4:2:2, 4:2:0 и 4:0:0.
[013] Или в качестве другого примера во время кодирования или декодирования переключение включает в себя изменение между двумя битовыми глубинами. Битовые глубины могут включать в себя две или более из 12 битов на отсчет, 10 битов на отсчет и 8 битов на отсчет. Кроме того, разные цветовые компоненты данного элемента видеоинформации могут иметь разные битовые глубины.
[014] Синтаксис и семантика для сигнала (сигналов), которые указывают, каким образом переключаются цветовые пространства, частоты цветовой дискретизации и/или битовые глубины, зависят от реализации. Например, сигнал (сигналы) включает в себя значение флага для данного элемента видеоинформации. Значение флага указывает выбор между двумя вариантами для цветовых пространств, частот цветовой дискретизации или битовых глубин. Или сигнал (сигналы) включает в себя синтаксический элемент для данного элемента видеоинформации. Синтаксический элемент указывает выбор между тремя или более вариантами для цветовых пространств, частот цветовой дискретизации или битовых глубин. Сигнал может быть закодирован с предсказанием, и в этом случае разностное значение для параметра для данного элемента видеоинформации представляет разность между фактическим значением параметра и его предиктором. Предиктор может являться параметром уровня последовательности. Или предиктор может быть основан на одном или более фактических значениях параметра для одного или более предыдущих элементов видеоинформации.
[015] В дополнение к сигналу (сигналам) закодированные данные могут включать в себя информацию, идентифицирующую или определяющую цветовые пространства, частоты цветовой дискретизации и/или битовые глубины. Например, информация может включать в себя матрицу значений, применимых для операций преобразования цветовых пространств между двумя цветовыми пространствами.
[016] Кодирование или декодирование могут включать в себя предсказание значений отсчетов текущего блока в текущем изображении по меньшей мере частично на основе набора значений отсчетов ранее воссозданного контента. Для предсказания внутри изображения набор значений отсчетов ранее воссозданного контента представляет собой часть текущего изображения. Для предсказания между изображениями набор значений отсчетов ранее воссозданного контента представляет собой часть опорного изображения. Как часть предсказания кодер или декодер может оценить, находятся ли набор значений отсчетов ранее воссозданного контента и значения отсчетов текущего блока в разных форматах.
[017] В некоторых случаях набор значений отсчетов ранее воссозданного контента сохранен в первом формате, и значения отсчетов текущего блока закодированы во втором формате, отличающемся от первого формата. В этом случае как часть предсказания кодер или декодер может (a) преобразовывать набор значений отсчетов ранее воссозданного контента из первого формата во второй формат (например, выполняя преобразование между двумя цветовыми пространствами, преобразование между двумя частотами цветовой дискретизации и/или преобразования между двумя битовыми глубинами), (b) предсказывать значения отсчетов текущего блока с использованием набора преобразованных значений отсчетов ранее воссозданного контента и (c) воссоздавать значения отсчетов текущего блока по меньшей мере частично на основе предсказанных значений отсчетов текущего блока. Или как часть предсказания кодер или декодер может (a) предсказывать значения отсчетов текущего блока с использованием набора значений отсчетов ранее воссозданного контента, (b) преобразовывать предсказанные значения отсчетов текущего блока из первого формата во второй формат и (c) воссоздавать значения отсчетов текущего блока по меньшей мере частично на основе преобразованных предсказанных значений отсчетов текущего блока. После предсказания кодер или декодер может (d) преобразовывать воссозданные значения отсчетов текущего блока из второго формата в первый формат и (e) сохранять преобразованные воссозданные значения отсчетов текущего блока (в первом формате) как часть ранее воссозданного контента.
[018] Кодирование или декодирование могут также включать в себя удаление блочности ранее воссозданного контента в соответствии с одним или более правилами. Например, как часть удаления блочности кодер или декодер регулирует силу фильтра удаления блочности в зависимости от того, имеют ли первичные компоненты двух смежных блоков ненулевые остаточные значения. Или как часть удаления блочности кодер или декодер регулирует силу фильтра удаления блочности в зависимости от того, имеют ли соответствующие компоненты двух смежных блоков ненулевые остаточные значения. Таким образом, правило (правила) может учитывать разные цветовые пространства двух смежных блоков.
[019] Новшества для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин могут быть реализованы как часть способа, как часть вычислительного устройства, выполненного с возможностью выполнять способ, или как часть материальных машиночитаемых носителей, хранящих исполняемые компьютером команды для того, чтобы побуждать вычислительное устройство выполнить способ. Различные новшества могут использоваться в комбинации или отдельно. В частности, видеокодер и декодер могут адаптивно переключать только цветовые пространства в пределах видеопоследовательности (с фиксированной частотой цветовой дискретизации и фиксированной битовой глубиной). Или видеокодер и декодер могут адаптивно переключать только частоты цветовой дискретизации в пределах видеопоследовательности (с фиксированным цветовым пространством и фиксированной битовой глубиной). Или видеокодер и декодер могут адаптивно переключить только битовые глубины в пределах видеопоследовательности (с фиксированным цветовым пространством и фиксированной частотой цветовой дискретизации). Или видеокодер и декодер могут адаптивно переключать (1) цветовые пространства и частоты цветовой дискретизации, но не битовые глубины, в пределах видеопоследовательности, (2) цветовые пространства и битовые глубины, но не частоты цветовой дискретизации, в пределах видеопоследовательности или (3) частоты цветовой дискретизации и битовые глубины, но не цветовые пространства, в пределах видеопоследовательности. Или видеокодер и декодер могут адаптивно переключать цветовые пространства, частоты цветовой дискретизации и битовые глубины в пределах видеопоследовательности.
[020] Упомянутые выше и другие объекты, признаки и преимущества изобретения станут более понятны на основе следующего подробного описания, которое ссылается на прилагаемые чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[021] Фиг. 1 - схема иллюстративной вычислительной системы, в которой могут быть реализованы некоторые описанные варианты осуществления.
[022] Фиг. 2a и 2b - схемы иллюстративной сетевой среды, в которой могут быть реализованы некоторые описанные варианты осуществления.
[023] Фиг. 3 - схема иллюстративной системы кодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления.
[024] Фиг. 4 - схема иллюстративной системы декодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления.
[025] Фиг. 5a и 5b - схемы, демонстрирующие иллюстративный видеокодер, совместно с которым могут быть реализованы некоторые описанные варианты осуществления.
[026] Фиг. 6 - схема, демонстрирующая иллюстративный видеодекодер, вместе с которым могут быть реализованы некоторые описанные варианты осуществления.
[027] Фиг. 7 - схема, иллюстрирующая компьютерную настольную среду с контентом, которое может обеспечить ввод для снимка экрана.
[028] Фиг. 8 - схема, иллюстрирующая составную видеоинформацию с естественным видеоизображением и искусственным видеоизображением.
[029] Фиг. 9 - схема, иллюстрирующая адаптивные по изображениям цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для изображений в последовательности.
[030] Фиг. 10 - схема, иллюстрирующая адаптивные по слайсам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для слайсов изображения в последовательности.
[031] Фиг. 11 - схема, иллюстрирующая адаптивные по блокам цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для блоков слайса изображения в последовательности.
[032] Фиг. 12 - блок-схема последовательности операций, иллюстрирующая обобщенную методику для адаптивного переключения цветовых пространств, показателей цветовой дискретизации и/или битовых глубин во время кодирования, и фиг. 13 - блок-схема последовательности операций, иллюстрирующая более подробную иллюстративную методику для адаптивного переключения по элементам во время кодирования.
[033] Фиг. 14 - блок-схема последовательности операций, иллюстрирующая обобщенную методику для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин во время декодирования, и фиг. 15 - блок-схема последовательности операций, иллюстрирующая более подробную иллюстративную методику для адаптивного переключения по элементам во время декодирования.
[034] Фиг. 16 - блок-схема последовательности операций, иллюстрирующая методику для предсказания значений отсчетов блока, закодированного в одном формате, из набора значений отсчетов ранее воссозданного контента в другом формате.
ПОДРОБНОЕ ОПИСАНИЕ
[035] Подробное описание представляет новшества в областях адаптивного кодирования и декодирования. Например, некоторые новшества относятся к кодеру, который переключает цветовые пространства между блоками в пределах видеопоследовательности во время кодирования, а также к соответствующему декодеру. Другие новшества относятся к кодеру, который переключает частоты цветовой дискретизации между блоками в пределах видеопоследовательности во время кодирования, а также r соответствующему декодеру. Еще одни новшества относятся к кодеру, который переключает битовые глубины между блоками в пределах видеопоследовательности во время кодирования, а также к соответствующему декодеру. Эти новшества могут улучшить эффективность кодирования во многих сценариях.
[036] В общем смысле цветовое пространство (иногда называемое цветовой моделью) представляет собой модель для представления цветов как n значений на физическую позицию, для n>1, причем каждое из n значений обеспечивает значение цветового компонента для этой позиции.
[037] Например, в цветовом пространстве YUV, значение компонента яркости (Y) представляет приблизительную яркость в позиции, и несколько значений компонентов цветности (U и V) представляют цветовые разности в позиции. Точные определения значений цветовой разности (и операций преобразования в/из цветового пространства YUV в другое цветовое пространство, такое как RGB) зависят от реализации. Как правило, в целях кодирования и декодирования компонент Y является первичным компонентом, и компоненты U и V являются вторичными компонентами. В целом, используемый здесь термин "цветовое пространство типа YUV" указывает на любое цветовое пространство с компонентом яркости и одним или более компонентов цветности, в том числе Y"UV, YIQ, Y'IQ и YDbDr, а также такие вариации, как YCbCr и YCoCg.
[038] Количественные показатели сигналов компонентов, которые используются, могут быть отрегулированы через применение нелинейной характеристической функции преобразования (известной как ʺпредварительная гамма-компенсацияʺ и часто обозначаемой при помощи символа "штрих", хотя символ "штрих" часто опускается для типографского удобства). Или количественные показатели сигналов компонентов могут находиться в домене, который имеет линейное соотношение со световой амплитудой. Сигналы компонентов яркости и цветности могут быть хорошо выровнены с восприятием яркости и цвета для зрительной системы человека, или сигналы компонентов яркости и цветности могут несколько отклониться от количественных показателей (например, как в вариации YCoCg, в которой применяются формулы, которые упрощают вычисление значений цветовых компонентов).
[039] В качестве другого примера, в цветовом пространстве RGB значение компонента красного (R) представляет интенсивность красного цвета, значение компонента зеленого (G) представляет интенсивность зеленого цвета, и значение компонента синего (B) представляет интенсивность синего цвета в позиции. Используемы здесь термин "цветового пространство типа RGB" указывает на цветовое пространство с цветовыми компонентами R, G и В в любом порядке. Примеры включают в себя цветовые пространства RGB, BGR и GBR, которые отличаются с точки зрения первичного компонента в целях кодирования и декодирования. Первичный компонент обозначен первой буквой цветового пространства (например, R для RGB).
[040] Частотой цветовой дискретизации (иногда называемой частотой дискретизации цветности) называется относительное пространственное разрешение между цветовыми компонентами. Например, для частоты цветовой дискретизации 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, но могут иметь другую частоту цветовой дискретизации в соответствии с тем, для каких вторичных цветовых компонентов понижена частота дискретизации.
[041] Хотя формат YUV 4:2:0 традиционно используется для кодирования и декодирования видеоинформации, имеются некоторые варианты использования, для которых видеоинформация имеет более богатую цветовую информацию, и может быть оправдана более достоверная цветопередача. В таких вариантах использования различия между форматами YUV 4:4:4 и YUV 4:2:0 дискретизации цветности более просто воспринимаются зрителями. Например, для кодирования/декодирования текстового контента экрана компьютера, мультипликационных видеоизображений с искусственными резкими границами или некоторых признаков видеоизображений в более общем случае (таких как прокрутка титров и графики с резкими границами или видеоизображения с информацией, сосредоточенной в каналах цветности), формат 4:4:4 может быть предпочтителен по сравнению с форматом 4:2:0.
[042] Битовой глубиной называется количество битов на значение отсчета. Обычно битовая глубина составляет 8 битов на отсчет, 10 битов на отсчет и 12 битов на отсчет. Другие возможные битовые глубины включают в себя 4 бита на отсчет и 16 битов на отсчет.
[043] Хотя описанные здесь операции находятся в местах, описанных как выполняемые видеокодером или видеодекодером, во многих случаях операции могут быть выполнены инструментом обработки мультимедиа другого типа (например, кодером или декодером изображений). Например, операции могут быть выполнены для таких применений, как кодирование/декодирование статических изображений, кодирования/декодирования контента медицинского сканирования, кодирование/декодирование контента многоспектральных изображений, и т.д.
[044] Некоторые описанные здесь новшества, проиллюстрированы со ссылкой на синтаксические элементы и операции, заданные для стандарта H.265/HEVC. Например, делается ссылка на предварительную версию JCTVC-P1005 стандарта H.265/HEVC - "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6", JCTVC-P1005_v1, февраль 2014 года. Описанные здесь новшества также могут быть реализованы для других стандартов или форматов.
[045] В более общем случае возможны различные альтернативы описанным здесь примерам. Например, некоторые описанные здесь способы могут быть изменены посредством изменения порядка описанных действий способа, посредством разбиения, повторения или опускания некоторых действий способа и т.д. Различные аспекты раскрытой технологии могут использоваться в комбинации или отдельно. Различные варианты осуществления используют одно или более описанных новшеств. Некоторые из описанных здесь новшеств обращены к одной или более проблем, упомянутых в описании уровня техники. Как правило, заданная методика/инструмент не решают все такие проблемы.
I. Иллюстративные вычислительные системы.
[046] Фиг. 1 иллюстрирует обобщенный пример подходящей вычислительной системы (100), в которой могут быть реализованы несколько из описанных новшеств. Не предполагается, что вычислительная система (100) предлагает какие-либо ограничения относительно объема использования или функциональности, поскольку новшества могут быть реализованы в разнообразных вычислительных системах специального или общего назначения.
[047] Со ссылкой на фиг. 1, вычислительная система (100) включает в себя один или более процессоров (110, 115) и память (120, 125). Процессоры (110, 115) исполняют исполняемые компьютером команды. Процессор может представлять собой центральный процессор общего назначения (ЦП; CPU), процессор в специализированной интегральной схеме (СИС; ASIC) или процессор любого другого типа. В многопроцессорной системе несколько процессоров исполняют исполняемые компьютером команды для увеличения вычислительной мощности. Например, фиг. 1 показывает центральный процессор (110), а также графический процессор или сопроцессор (115). Материальная память (120, 125) может представлять собой энергозависимую память (например, регистры, кэш, оперативное запоминающее устройство (ОЗУ; RAM)), энергонезависимую память (например, постоянное запоминающее устройство (ПЗУ; ROM), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ; EEPROM), флеш-память и т.д.) или некоторую комбинацию из них двух, доступную посредством процессора (процессоров). Память (120, 125) хранит программное обеспечение (180), реализующее одно или более новшеств для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин в форме исполняемых компьютером команд, подходящих для выполнения процессором (процессорами).
[048] Вычислительная система может иметь дополнительные функции. Например, вычислительная система (100) включает в себя хранилище (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода и одно или более соединений (170) связи. Механизм взаимосвязи (не показан), такой как шина, контроллер или сеть, взаимно связывает компоненты вычислительной системы (100). Как правило, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, выполняющегося в вычислительной системе (100), и координирует действия компонентов вычислительной системы (100).
[049] Материальное хранилище (140) может являться сменным или несменным и включает в себя магнитные диски, магнитные ленты или кассеты, компакт-диски (CD-ROM), цифровые универсальные диски (DVD) или любой другой носитель, который может использоваться для хранения информации и к которому можно осуществить доступ в пределах вычислительной системы (100). Хранилище (140) хранит команды для программного обеспечения (180), реализующего одно или более новшеств для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин.
[050] Устройство (устройства) (150) ввода может представлять собой устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство речевого ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную систему (100). Для видеоинформации устройством (устройствами) (150) ввода может являться камера, видеокарта, карта ТВ-тюнера, модуль снимка экрана или аналогичное устройство, которое принимает ввод видеоинформации в аналоговой или цифровой форме, или компакт-диск (CD-ROM или CD-RW), который считывает ввод видеоинформации в вычислительную систему (100). Устройство (устройства) (160) вывода может представлять собой дисплей, принтер, динамик, устройство для записи компакт-дисков или другое устройство, которое обеспечивает вывод из вычислительной системы (100).
[051] Соединение (соединения) (170) связи обеспечивают возможность связи через носитель связи с другим вычислительным объектом. Носитель связи переносит информацию, такую как исполняемые компьютером команды, ввод или вывод аудиоинформации или видеоинформации или другие данные в модулированном сигнале данных. Модулированный сигнал данных представляет собой сигнал, который имеет одну или более из множества его характеристик измененными таким образом, чтобы закодировать информацию в сигнале. В качестве примера, но без ограничения, носители связи могут использовать электрическую, оптическую, радиочастотную или другую несущую среду.
[052] Новшества могут быть описаны в общем контексте машиночитаемых носителей. Машиночитаемые носители представляют собой любые доступные материальные носители, к которым можно осуществить доступ в пределах вычислительной среды. В качестве примера, но без ограничения, вычислительной системы (100) машиночитаемые носители включают в себя память (120, 125), хранилище (140) и комбинации любых из упомянутых выше.
[053] Новшества могут быть описаны в общем контексте исполняемых компьютером команд, таких как включенные в программные модули, исполняемые в вычислительной системе на целевом реальном или виртуальном процессоре. Обычно программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д. которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Функциональность программных модулей может быть объединена или разбита между программными модулями по желанию в различных вариантах осуществления. Исполняемые компьютером команды для программных модулей могут исполняться в пределах системы локальных или распределенных вычислений.
[054] Термины "система" и "устройство" используются здесь взаимозаменяемым образом. Если контекст ясно не указывает иначе, никакой термин не подразумевает ограничения на тип вычислительной системы или вычислительного устройства. В целом вычислительная система или вычислительное устройство могут быть локальными или распределенными и могут включать в себя любую комбинацию аппаратных средств специального назначения и/или аппаратных средств общего назначения с программным обеспечением, реализующим описанную здесь функциональность.
[055] Раскрытые способы также могут быть реализованы с использованием специализированных вычислительных аппаратных средств, выполненных с возможностью выполнять любой из раскрытых способов. Например, раскрытые способы могут быть реализованы посредством интегральной схемы (например, специализированной интегральной схемы (СИС; ASIC) (такой как процессор цифровых сигналов (DSP) на СИС), графический процессор (GPU) или программируемое логическое устройство (PLD), такое как программируемая пользователем вентильная матрица (FPGA)), специально разработанной или сконфигурированной для реализации любого из раскрытых способов.
[056] С целью представления подробное описание использует такие термины, как "определять" и "использовать", для описания компьютерных операций в вычислительной системе. Эти термины представляют собой абстракции высокого уровня для операций, выполняемых компьютером, и не должны быть перепутаны с действиями, совершаемыми человеком. Фактические компьютерные операции, соответствующие этим терминам, варьируются в зависимости от реализации.
II. Иллюстративные сетевые среды.
[057] Фиг. 2a и 2b показывают иллюстративные сетевые среды (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединены по сети (250) с использованием подходящего протокола связи. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.
[058] В сетевой среде (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) связи в реальном времени, которые участвуют в связи с несколькими сторонами.
[059] Инструмент (210) связи в реальном времени управляет кодированием посредством кодера (220). Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (210) связи в реальном времени (210). В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему кодера. Инструмент (210) связи в реальном времени (210) также управляет декодированием посредством декодера (270). Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (210) связи в реальном времени. В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему декодера.
[060] В сетевой среде (202), показанной на фиг. 2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видеоизображение для доставки нескольким инструментам (214) воспроизведения, которые включают в себя декодеры (270). Однонаправленная связь может быть обеспечена для системы видеонаблюдения, системы контроля веб-камеры, модуля снимка экрана, презентации на конференции с использованием удаленного рабочего стола или другого сценария, в котором видеоинформация кодируется и отправляется из одного местоположения в одного или более других местоположений. Хотя сетевая среда (202) на фиг. 2b включает в себя два инструмента (214) воспроизведения, сетевая среда (202) может включать в себя больше или меньше инструментов (214) воспроизведения. В целом инструмент (214) воспроизведения взаимодействует с инструментом (212) кодирования для определения видеопотока для приема инструментом (214) воспроизведения. Инструмент (214) воспроизведения принимает поток, буферизует принятые закодированные данные в течение подходящего периода и начинает декодирование и воспроизведение.
[061] Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (212) кодирования. В качестве альтернативы, инструмент (212) кодирования использует другую систему кодера. Инструмент (212) кодирования также может включать в себя серверную логическую схему контроллера для управления соединениями с одним или более инструментами (214) воспроизведения. Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (214) воспроизведения. В качестве альтернативы, инструмент (214) воспроизведения использует другую систему декодера. Инструмент (214) воспроизведения также может включать в себя клиентскую логическую схему контроллера для управления соединениями с инструментом (212) кодирования.
III. Иллюстративные системы кодера.
[062] Фиг. 3 является блок-схемой иллюстративной системы (300) кодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления. Система (300) кодера может представлять собой инструмент кодирования общего назначения, способный работать в любом из нескольких режимов кодирования, таких как режим кодирования с низкой задержкой для связи в реальном времени, режим транскодирования и режим кодирования с более высокой задержкой для создания носителей для воспроизведения из файла или потока, или она может представлять собой инструмент кодирования специального назначения, адаптированный к одному такому режиму кодирования. Система (300) кодера может быть выполнена с возможностью кодировать контент конкретного типа (например, контент снимка экрана), или она может быть выполнена с возможностью кодировать контент любых из нескольких разных типов (например, контент снимка экрана и естественное видеоизображение). Система (300) кодера может быть реализована как модуль операционной системы, как часть библиотеки приложений или как автономное приложение. В целом система (300) кодера принимает последовательность исходных видеокадров (311) из источника (310) видеоинформации и производит закодированные данные как выходную информацию в канал (390). Закодированные данные, выведенные в канал, могут включать в себя контент, закодированный с помощью адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин.
[063] Источником (310) видеоинформации может быть камера, карта ТВ-тюнера, запоминающий носитель, модуль снимка экрана или другой источник цифровой видеоинформации. Источник (310) видеоинформации производит последовательность видеокадров с частотой кадров, например, 30 кадров в секунду. Используемый здесь термин "кадр" обычно относится к исходным, закодированным или воссозданным данным изображения. Для видеоинформации с прогрессивной разверткой кадр представляет собой видеокадр с прогрессивной разверткой. Для видеоинформации с чересстрочной разверткой в иллюстративных вариантах осуществления видеокадр с чересстрочной разверткой может быть подвергнут удалению чересстрочной развертки перед кодирования. В качестве альтернативы, два взаимодополняющих видеополя с чересстрочной разверткой кодируются вместе как один видеокадр или кодируются как два отдельно закодированных поля. Кроме указания на видеокадр с прогрессивной разверткой или видеокадр с чересстрочной разверткой термин "кадр" или "изображение" может указывать на одно не спаренное видеополе, взаимодополняющую пару видеополей, плоскость видеообъекта, которая представляет видеообъект в заданное время или интересующую область в увеличенном изображении. Плоскость или область видеообъекта могут являться частью увеличенного изображения, которое включает в себя несколько объектов или областей сцены.
[064] Прибывающий исходный кадр (311) сохраняется в области (320) памяти временного хранения исходных кадров, которая включает в себя несколько областей (321, 322..., 32n) хранения буфера кадра. Буфер (321, 322, и т.д.) кадра удерживает один исходный кадр в области (320) хранения исходных кадров. После того, как один или более исходных кадров (311) были сохранены в буферах (321, 322, и т.д.) кадров, селектор (330) кадра выбирает индивидуальный исходный кадр из области (320) хранения исходных кадров. Порядок, в котором кадры выбираются селектором (330) кадра для ввода в кодер (340), может отличаться от порядка, в котором кадры произведены источником (310) видеоинформации, например, кодирование некоторых кадров может быть отсрочено по порядку, чтобы некоторые более поздние кадры могли быть закодированы сначала, и чтобы тем самым обеспечить возможность временного обратного предсказания. Перед кодером (340) система (300) кодера может включать в себя препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием.
[065] Кодер (340) кодирует выбранный кадр (331), чтобы произвести закодированный кадр (341), а также производит сигналы (342) операции управления распределения памяти (MMCO) или информацию множества опорных изображений (RPS). Информация RPS представляет собой множество кадров, которые могут использоваться для ссылки при компенсации движения для текущего кадра или любого последующего кадра. Если текущий кадр не является первым кадром, который был закодирован, при выполнении процесса его кодирования кодер (340) может использовать один или несколько ранее закодированных/декодированных кадров (369), которые были сохранены в области (360) памяти временного хранения декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для межкадрового предсказания контента текущего исходного кадра (331). Информация (342) MMCO/RPS указывает декодеру, какие воссозданные кадры могут быть использованы в качестве опорных кадров, и, следовательно, должны быть сохранены в области хранения кадров.
[066] Кодер (340) принимает видеоизображение в конкретном цветовом пространстве (например, в цветовом пространстве типа YUV, в цветовом пространстве типа RGB), с конкретной частотой цветовой дискретизации (например, 4:4:4) и конкретным количеством битов на отсчет (например, 12 битов на отсчет). Во время кодирования для разных изображений, слайсов, блоков или других блоков видеоинформации кодер (340) может выполнить преобразования цветового пространства, чтобы выполнить преобразование между цветовым пространством типа YUV и цветовым пространством типа RGB, или в/из некоторого другого цветового пространства. Кодер (340) также может выполнить преобразования цветового пространства, чтобы переупорядочить цветовые компоненты, изменяя цветовой компонент, который является первичным компонентом (например, выполняя преобразование между форматами RGB, BGR и GBR). Во время кодирования кодер (340) также может выполнить обработку изменения дискретизации, чтобы изменить частоты цветовой дискретизации (например, между форматами 4:4:4, 4:2:2 и 4:2:0) для разных изображений, слайсов, блоков или других блоков видеоинформации. Кодер (340) также может изменить битовую глубину (например, между 12 битами на отсчет, 10 битами на отсчет и 8 битами на отсчет) во время кодирования для разных изображений, слайсов, блоков или других блоков видеоинформации. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого изображения во время кодирования.
[067] Обычно кодер (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) или другого формата.
[068] Кодер (340) может разделить кадр на несколько плиток одинакового размера или разных размеров. Например, кодер (340) разбивает кадр вдоль строк плиток и столбцов плиток, которые вместе с границами кадра определяют горизонтальные и вертикальные границы плиток в пределах кадра, причем каждая плитка представляет собой прямоугольную область. Плитки часто используются для обеспечения возможности параллельной обработки. Кадр также может быть организован как один или несколько слайсов, где слайс может представлять собой весь кадр или область кадра. Слайс может декодироваться независимо от других слайсов в кадре, что улучшает устойчивость к ошибкам. Контент слайса или плитки далее разделяется на блоки или другие набора значений отсчетов в целях кодирования и декодирования. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого слайса во время кодирования.
[069] Для синтаксиса в соответствии со стандартом 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) может быть сообщен в битовом потоке.
[070] Обычно элемент 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 и т.д.
[071] В реализациях H.265/HEVC слайс может включать в себя единственный сегмент слайса (независимый сегмент слайса) или быть разделен на несколько сегментов слайса (независимый сегмент слайса и один или более зависимых сегментов слайса). Сегмент слайса представляет собой целое число элементов CTU, упорядоченных последовательно при сканировании плиток, содержащихся в одном блоке сетевого уровня абстракции (NAL). Для независимого сегмента слайса заголовок сегмента слайса включает в себя значения синтаксических элементов, которые применяются для независимого сегмента слайса. Для зависимого сегмента слайса усеченный заголовок сегмента слайса включает в себя несколько значений синтаксических элементов, которые применяются для этого зависимого сегмента слайса, и значения других синтаксических элементов для зависимого сегмента слайса выводятся из значений для предыдущего независимого сегмента слайса в порядке декодирования.
[072] Используемый здесь термин "блок" может указывать на макроблок, элемент предсказания, разностный элемент данных или блок СВ, блок PB или блок ТВ или некоторый другой набор значений отсчетов в зависимости от контекста. В некоторых иллюстративных реализациях кодер (340) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого блока во время кодирования.
[073] Далее на фиг. 3 кодер представляет закодированный с внутренним предсказанием блок исходного кадра (331) с точки зрения предсказания на основе других, ранее воссозданных значений отсчетов в кадре (331). Для предсказания внутри копии блока (BC) модуль оценки внутри изображения оценивает смещение блока относительно других, ранее воссозданных значений отсчетов. Опорная область внутрикадрового предсказания представляет собой область значений отсчетов в кадре, которые используются для формирования значений предсказания BC для блока. Область внутрикадрового предсказания может быть указана с помощью значения вектора блока (BV) (определенного при оценке вектора BV). Для внутреннего пространственного предсказания для блока модуль оценки внутри изображения оценивает экстраполяцию соседних воссозданных значений отсчетов в блок. Модуль оценки внутри изображения может выводить информацию предсказания (такую как значения вектора BV для предсказания внутри BC или режим предсказания (направление) для внутреннего пространственного предсказания), которая закодирована с помощью энтропийного кодирования. Модуль предсказания внутрикадрового предсказания применяет информацию предсказания для определения значений внутреннего предсказания.
[074] Кодер (340) представляет закодированный с межкадровым предсказанием блок исходного кадра (331) с точки зрения предсказания на основе опорных кадров. Модуль оценки движения оценивает движение блока относительно одного или более опорных кадров (369). Когда используются несколько опорных кадров, несколько опорных кадров могут быть из разных временных направлений или из одного и того же временного направления. Опорная область предсказания с компенсацией движения представляет собой область значений отсчетов в опорном кадре (кадрах), которые используются для формирования значения предсказания с компенсацией движения для блока значений отсчетов текущего кадра. Модуль оценки движения выводит информацию движения, такую как информация вектора движения (вектора MV), которая является закодированной с помощью энтропийного кодирования. Модуль компенсации движения применяет векторы MV к опорным кадрам (369) для определения значений предсказания с компенсацией движения для межкадрового предсказания.
[075] Кодер может определить разности (если таковые имеются) между значениями предсказания блока (внутреннего или внешнего) и соответствующие исходные значения. Эти разностные значения предсказания далее кодируются с использованием частотного преобразования, квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра квантования (параметра QP) для изображения, плитки, слайса и/или другого участка видеоинформации и квантует коэффициенты преобразования соответствующим образом. Энтропийный кодер кодера (340) сжимает квантованные значения коэффициентов преобразования, а также некоторую вспомогательную информацию (например, информацию вектора MV, значения индексов для модулей предсказания вектора BV, дифференциалы векторов BV, значения параметра QP, решения для режимов, выбор параметров). Типичные методики энтропийного кодирования включают в себя экспоненциальное кодирование Голомба, кодирование Голомба-Райса, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, перекодирование из кода с переменной длиной в код переменной длиной (V2V) перекодирование из кода с переменной длиной в код с фиксированной длиной (V2F), кодирование Лемпеля-Зива (LZ), кодирование с помощью словаря, энтропийное кодирование с разделением на интервалы вероятности (PIPE) и комбинации упомянутого выше. Энтропийный кодер может использовать разные методики кодирования для разных видов информации, может применять несколько методик в комбинации (например, применяя кодирование Голомба-Райса и затем арифметическое кодирование) и может делать выбор из нескольких кодовых таблиц в пределах конкретной методики кодирования.
[076] Адаптивный фильтр удаления блочности включен в контур компенсации движения в кодере (340) для сглаживания неоднородностей по граничным строкам и/или столбцам блоков в декодированном кадре. Другая фильтрация (такая как фильтрация с подавлением периодических помех, адаптивная петлевая фильтрация (ALF) или фильтрация с адаптивным по отсчетам смещением (SAO); не показаны) в качестве альтернативы или дополнительно может быть применена как операции в петлевой фильтрации.
[077] Закодированные данные, произведенные кодером (340), включают в себя синтаксические элементы для различных уровней синтаксиса битового потока. Для синтаксиса в соответствии со стандартом H.265/HEVC, например, множество параметров изображения (множество PPS) является синтаксической структурой, содержащей синтаксические элементы, которые могут иметь отношение к изображению. В некоторых иллюстративных реализациях множество PPS может включать в себя один или несколько сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к изображению (или нескольким изображениям, которые используют множество PPS), а также другую информацию, идентифицирующую или определяющую доступные цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины. Множество PPS может использоваться для отдельного изображения, или множество PPS может быть многократно использовано для нескольких изображений в последовательности. Множество PPS обычно сообщается отдельно от закодированных данных для изображения (например, один элемент NAL для множества PPS и один или несколько других элементов NAL для закодированных данных для изображения). В пределах закодированных данных для изображения синтаксический элемент указывает, какое множество PPS следует использовать для изображения. Аналогичным образом, для синтаксиса в соответствии со стандартом H.265/HEVC множество параметров последовательности (множество SPS) является синтаксической структурой, содержащей синтаксические элементы, которые могут иметь отношение к последовательности изображений. Битовый поток может включать в себя единственное множество SPS или несколько множеств SPS. Множество SPS обычно сообщается отдельно от других данных для последовательности, и синтаксический элемент в других данных указывает, какое множество SPS, следует использовать. В некоторых иллюстративных реализациях множество SPS для последовательности может включать в себя информацию, идентифицирующую или определяющую доступные цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины, на которые делается ссылка при переключении цветовых пространств, частот цветовой дискретизации и/или битовых глубин в пределах последовательности.
[078] Для уровня слайса заголовок слайса (например, заголовок сегмента слайса) включает в себя значения синтаксических элементов, которые применяются для слайса (например, независимый сегмент слайса и любые последующие зависимые сегменты слайса). В некоторых иллюстративных реализациях заголовок слайса может включать в себя один или несколько сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к слайсу. В некоторых иллюстративных реализациях заголовок слайса также может включать в себя информацию, идентифицирующую или определяющую доступных цветовые пространства, доступные частоты цветовой дискретизации и/или доступные битовые глубины, на которые делается ссылка при переключении цветовых пространств, частот цветовой дискретизации и/или битовых глубин в слайсе. Для уровня блока (например, для элемента CTU) синтаксическая структура включает в себя значения синтаксических элементов, которые применяются к блоку. В некоторых иллюстративных реализациях синтаксическая структура для блока может включать в себя один или более сигналов, указывающих цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, которые применяются к блоку.
[079] Закодированные кадры (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) хранения как часть процесса декодирования.
[080] Область (360) памяти временного хранения декодированных кадров включает в себя несколько областей (361, 362,..., 36n) хранения буфера кадра. Методом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования управляет контентом области (360) хранения, чтобы идентифицировать любые буферы (361, 362, и т.д.) кадра с кадрами, которые больше не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет недавно декодированный кадр (351) в буфере (361, 362, и т.д.) кадра, который был идентифицирован этим методом.
[081] Закодированные кадры (341) и информация (342) MMCO/RPS буферизуются во временной области (370) закодированных данных. Закодированные данные, которые агрегированы в области (370) закодированных данных, содержат как часть синтаксиса элементарного закодированного видеопотока закодированные данные для одного или более изображений. Закодированные данные, которые агрегированы в области (370) закодированных данных, также могут включать в себя метаданные мультимедиа, относящиеся к закодированным видеоданным (например, как один или более параметров в одном или более сообщениях дополнительной информации улучшения (SEI) или сообщениях информации об удобстве использования видеоданных (VUI)).
[082] Агрегированные данные (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. Иллюстративные системы декодера.
[083] Фиг. 4 является блок-схемой иллюстративной системы (400) декодера, совместно с которой могут быть реализованы некоторые описанные варианты осуществления. Система (400) декодера может представлять собой инструмент декодирования общего назначения, способный работать в любом из нескольких режимов декодирования, таких как режим декодирования с низкой задержкой для связи в реальном времени и режим декодирования с более высокой задержкой для воспроизведения мультимедиа из файла или потока, или она может представлять собой инструмент декодирования специального назначения, адаптированный к одному такому режиму декодирования. Система (400) декодера может быть выполнена с возможностью декодировать контент конкретного типа (например, контент снимка экрана), или она может быть выполнена с возможностью декодировать контент любых из нескольких разных типов (например, контент снимка экрана и естественное видеоизображение). Система (400) декодера может быть реализована как модуль операционной системы, как часть библиотеки приложений или как автономное приложение. В целом система (400) декодера принимает закодированные данные из канала (410) и производит воссозданные кадры как выходную информацию для адресата (490) назначения вывода. Закодированные данные могут включать в себя контент, закодированный с помощью адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин.
[084] Система декодера (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 и демодуляции аналогового сигнала.
[085] Закодированные данные (421), который является выходной информацией из декодера (420) канала, сохраняются во временной области (430)закодированных данных, пока не будет принято достаточное количество таких данных. Закодированные данные (421) включают в себя закодированные кадры (431) и информацию (432) MMCO/RPS. Закодированные данные (421) в области (430) закодированных данных содержат как часть синтаксиса элементарного закодированного видеопотока закодированные данные для одного или более изображений. Закодированные данные (421) в области (430) закодированных данных также могут включать в себя метаданные мультимедиа, относящиеся к закодированным видеоданным (например, как один или более параметров в одном или более сообщениях SEI или сообщениях VUI).
[086] В целом область (430) закодированных данных временно хранит закодированные данные (421), пока такие закодированные данные (421) не используются декодером (450). В тот момент закодированные данные для закодированного кадра (431) и информация (432) MMCO/RPS переносятся из области (430) закодированных данных (430) в декодер (450). В то время как продолжается декодирование, новые закодированные данные добавляются в область (430) закодированных данных (430), и самые поздние закодированные данные, остающиеся в области (430) закодированных данных, переносятся в декодер (450).
[087] Декодер (450) декодирует закодированный кадр (431), чтобы произвести соответствующий декодированный кадр (451). По мере необходимости при выполнении своего процесса декодирования декодер (450) может использовать один или более ранее декодированных кадров (469) в качестве опорных кадров для межкадрового предсказания. Декодер (450) считывает такие ранее декодированные кадры (469) из области (460) памяти временного хранения декодированных кадров.
[088] Во время декодирования для разных изображений, слайсов, блоков или других блоков видеоинформации декодер (450) может выполнить преобразования цветового пространства, чтобы выполнить преобразование между цветовым пространством типа YUV и цветовым пространством типа RGB, или в/из некоторого другого цветового пространства. Декодер (450) также может выполнить преобразования цветового пространства, чтобы переупорядочить цветовые компоненты для разных изображений, слайсов, блоков или других блоков видеоинформации, изменяя цветовой компонент, который является первичным компонентом (например, выполняя преобразования между форматами RGB, BGR и GBR). Во время декодирования декодер (450) также может выполнить обработку изменения дискретизации, чтобы изменить частоты цветовой дискретизации и/или изменить битовые глубины для разных изображений, слайсов, блоков или других блоков видеоинформации. В некоторых иллюстративных реализациях декодер (450) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого изображения во время декодирования. В качестве альтернативы декодер (450) может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для каждого слайса или для каждого блока во время декодирования.
[089] Обычно декодер (450) включает в себя несколько модулей декодирования, которые выполняют задачи декодирования, такие как энтропийное декодирование, адаптация цветового пространства, частоты цветовой дискретизации и/или битовой глубины, внутрикадровое предсказание, межкадровое предсказание с компенсацией движения, обратное квантование, обратное частотное преобразование и слияние плиток. Точный перечень операций, выполняемых декодером (450), может изменяться в зависимости от формата сжатия.
[090] Например, декодер (450) принимает закодированные данные для сжатого кадра или последовательности кадров и производит выходную информацию, включающую в себя декодированный кадр (451). В декодере (450) буфер принимает закодированные данные для сжатого кадра и в подходящее время делает принятые закодированные данные доступными для энтропийного декодера. Энтропийный декодер выполняет энтропийное декодирование подвергнутых энтропийному кодированию квантованных данных, а также подвергнутой энтропийному кодированию вспомогательной информации, обычно применяя инверсию энтропийного кодирования, выполненного в кодере. Компенсатор движения применяет информацию движения к одному или более опорным кадрам, чтобы сформировать значения предсказания с компенсацией движения для любых закодированных с внешним предсказанием блоков воссоздаваемого кадра. Модуль внутрикадрового предсказания может пространственным образом предсказать значения отсчетов текущего блока на основе соседних, ранее воссозданных значений отсчетов, или для предсказания внутри BC предсказать значения отсчетов текущего блока c использованием ранее воссозданных значений отсчетов опорной области внутрикадрового предсказания в кадре. Опорная область может быть указана посредством значения вектора BV. Декодер (450) также воссоздает разностные значения предсказания. Модуль обратного квантования выполняет обратное квантование подвергнутых энтропийному декодированию данных. Например, декодер (450) устанавливает значения для параметра QP для изображения, плитки, слайса и/или другой части видеоинформации на основе синтаксических элементов в битовом потоке и соответствующим образом выполняет обратное квантование коэффициентов преобразования. Обратный частотный преобразователь преобразовывает квантованные данные частотной области в данные пространственной области. Для подвергнутого межкадровому предсказанию блока декодер (450) объединяет воссозданные разностные значения предсказания со значениями предсказания с компенсацией движения. Декодер (450) может аналогичным образом объединить разностные значения предсказания со значениями предсказания для внутреннего предсказания. Адаптивный фильтр удаления блочности включен в цикл компенсации движения в видеодекодере (450) для сглаживания неоднородностей по границам строк или столбцов в декодированном кадре (451). Другая фильтрация (такая как фильтрация с подавлением периодических помех, ALF или фильтрация SAO; не показаны) может в качестве альтернативы или дополнительно быть применена как операции в петлевой фильтрации.
[091] Область (460) памяти временного хранения декодированных кадров включает в себя несколько областей (461, 462,..., 46n) хранения буфера кадра. Область (460) хранения декодированных кадров является примером буфера декодированных изображений. Декодер (450) использует информацию (432) MMCO/RPS, чтобы идентифицировать буфер (461, 462, и т.д.) кадра, в котором он может сохранить декодированный кадр (451). Декодер (450) сохраняет декодированный кадр (451) в этом буфере кадра.
[092] Модуль (480) выходной последовательности идентифицирует, когда следующий кадр, который должен быть произведен в порядке вывода, доступен в области (460) хранения декодированных кадров. Когда следующий кадр (481), который должен быть произведен в порядке вывода, доступен в области (460) хранения декодированных кадров, он считывается модулем (480) выходной последовательности и выводится адресату (490) назначения вывода (например, на дисплей). В целом порядок, в котором кадры выводятся из области (460) хранения декодированных кадров модулем (480) выходной последовательности, может отличаться от порядка, в котором кадры декодируются декодером (450).
V. Иллюстративные видеокодеры.
[093] Фиг. 5a и 5b являются блок-схемами обобщенного видеокодера (500), совместно с которым могут быть реализованы некоторые описанные варианты осуществления. Кодер (500) принимает последовательность видеоизображений, включающую в себя текущее изображение, в качестве входного видеосигнала (505) и производит закодированные данные в закодированном видеопотоке (595) как выходную информацию.
[094] Кодер (500) основан на блоках и использует формат блока, который зависит от реализации. Блоки могут быть далее разделены на разных стадиях, например, на стадиях предсказания, частотного преобразования и/или энтропийного кодирования. Например, изображение может быть разделено на блоки размером 64×64, блоки размером 32×32 или блоки размером 16×16, которые в свою очередь могут быть разделены на более мелкие блоки значений отсчетов для кодирования и декодирования. В реализациях кодирования для стандарта H.265/HEVC кодер делит изображение на элементы CTU (блоки CTB), элементы CU (блоки CB), элементы PU (блоки PB) и элемент TU (блоки TB).
[095] Кодер (500) сжимает изображения с использованием кодирования с предсказанием внутри изображения и/или кодирования с предсказанием между изображениями. Многие компоненты кодера (500) используются как для кодирования с предсказанием внутри изображения, так и для кодирования с предсказанием между изображениями. Точный перечень операций, выполняемых этими компонентами, может изменяться в зависимости от типа сжимаемой информации.
[096] Модуль (510) разделения на плитки факультативно делит изображение на несколько плиток одинакового размера или разных размеров. Например, модуль (510) разделения на плитки разбивает изображение вдоль строк плиток и столбцов плиток, которые вместе с границами изображения определяют горизонтальные и вертикальные границы плиток в пределах изображения, причем каждая плитка представляет собой прямоугольную область. В реализациях H.265/HEVC кодер (500) разделяет изображение на один или более слайсов, причем каждый слайс включает в себя один или несколько сегментов слайса.
[097] Модуль (520) общего управления кодированием принимает изображения для входного видеосигнала (505), а также информацию обратной связи (не показана) от различных модулей кодера (500). В целом модуль (520) общего управления кодированием обеспечивает управляющие сигналы (не показаны) другим модулям (таким как модуль (510) разделения на плитки, модуль (530) преобразования/масштабирования/квантования, модуль (535) масштабирования/обратного преобразования, модуль (540) оценки внутри изображения, модуль (550) оценки движения и переключатель внутреннего/внешнего режима предсказания), чтобы устанавливать и изменять параметры кодирования во время кодирования. В частности, модуль (520) общего управления кодированием может решать, каким образом следует адаптивно переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины во время кодирования по изображениям, по слайсам, по блокам или на некотором другом основании. Модуль (520) общего управления кодированием также может оценивать промежуточные результаты во время кодирования. Модуль (520) общего управления кодированием производит общие управляющие данные (522), которые указывают на решения, принятые во время кодирования, с тем чтобы соответствующий декодер мог принять совместимые решения. Общие управляющие данные (522) обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка.
[098] Если текущее изображение предсказано с использованием предсказания между изображениями, модуль (550) оценки движения оценивает движение блоков значений отсчетов текущего изображения входного видеосигнала (505) относительно одного или более опорных изображений. Буфер (570) декодированных изображений буферизует одно или более воссозданных ранее закодированных изображений для использования в качестве опорных изображений. Когда используются несколько опорных изображений, несколько опорных изображений могут быть из разных временных направлений или из одного и того же временного направления. Модуль (550) оценки движения производит в качестве вспомогательной информации данные (522) движения, такие как данные векторов MV, значения индексов режима слияния и данные выбора опорного изображения. Данные (552) движения обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка, а также модулю (555) компенсации движения.
[099] Модуль (555) компенсации движения применяет векторы MV к воссозданному опорному изображению (изображениям) из буфера (570) декодированных изображений. Модуль (555) компенсации движения производит предсказания с компенсацией движения для текущего изображения. Когда вторичные компоненты для изображения имеют такое же разрешение, как первичный компонент (например, форматом является формат YUV 4:4:4 или формат RGB 4:4:4), значение вектора MV, которое применяется для блока вторичного компонента, может совпадать со значением вектора MV, применяемого к соответствующему блоку первичного компонента. С другой стороны, когда вторичные компоненты для изображения имеют уменьшенное разрешение относительно первичного компонента (например, когда форматом является формат YUV 4:2:0), значение вектора MV, которое применяется для блока вторичного компонента, может быть уменьшено и возможно округлено, чтобы отрегулировать различия в разрешении (например, посредством деления вертикальных и горизонтальных составляющих значения вектора MV на два и отбрасывания дробной части или округления их до целочисленных значений).
[0100] На отдельном тракте в пределах кодера (500) модуль (540) оценки внутри изображения определяет, каким образом следует выполнить предсказание внутри изображения для блоков значений отсчетов текущего изображения входного видеосигнала (505). Текущее изображение может быть полностью или частично закодировано с использованием кодирования с предсказанием внутри изображения. С использованием значений воссоздания (538) из текущего изображения для внутреннего пространственного предсказания модуль (540) оценки внутри изображения определяет, каким образом следует пространственно предсказать значения отсчетов текущего блока текущего изображения на основе соседних, ранее воссозданных значений отсчетов текущего изображения. Или для предсказания внутри BC с использованием значений вектора BV модуль (540) оценки внутри изображения оценивает смещение значений отсчетов текущего блока к различным потенциальным опорным областям в текущем изображении. На фиг. 5b потенциальные опорные области включают в себя воссозданные значения отсчетов. В качестве альтернативы, в целях оценки вектора BV потенциальные опорные области могут включать в себя входные значения отсчетов.
[0101] Модуль (540) оценки внутри изображения производит в качестве вспомогательной информации данные (542) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или предсказание внутри BC (например, значение флага на каждый блок внутреннего предсказания), направление режима предсказания (для внутреннего пространственного предсказания) и значения вектора BV (для предсказания внутри BC). Данные (542) внутреннего предсказания обеспечиваются модулю (590) форматирования и энтропийного кодирования заголовка, а также модулю (545) предсказания внутри изображения.
[0102] В соответствии с данными (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 на два и отбрасывания дробной части или округления их до целочисленных значений).
[0103] Переключатель внутреннего/внешнего режима предсказания выбирает, будет ли предсказание (558) для данного блока предсказанием с компенсацией движения или предсказанием внутри изображения. Разность (если таковая имеется) между блоком предсказания (558) и соответствующей частью первоначального текущего изображения входного видеосигнала (505) обеспечивает значения разности (518) для блока не в режиме пропуска (SKIP). Во время воссоздания текущего изображения для блока не в режиме пропуска воссозданные разностные значения объединяются с предсказанием (558), чтобы произвести приблизительное или точное воссоздание (538) первоначального контента из видеосигнала (505). (В сжатии с потерями некоторая информация теряется из видеосигнала (505).)
[0104] В модуле (530) преобразования/масштабирования/квантования частотный преобразователь преобразовывает видеоинформацию пространственной области в данные частотной области (т.е., спектральное преобразование). Для основанного на блоках видеокодирования частотный преобразователь применяет дискретное косинусное преобразование (DCT), его целочисленное приближение или другой тип прямого преобразования блоков (например, дискретное синусное преобразование или его целочисленное приближение) к блокам разностных данных предсказания (или к данным значений отсчетов, если предсказание (558) равно нулю), производя блоки коэффициентов частотного преобразования. Кодер (500) также может указывать, что такой этап преобразования пропущен. Модуль масштабирования/квантования масштабирует и квантует коэффициенты преобразования. Например, модуль квантования применяет скалярное квантование с нулевой зоной к данным частотной области с размером шага квантования, который варьируется по изображениям, по плиткам, по слайсам, по блокам, по заданной частоте или на другом основании. Данные (532) квантованных коэффициентов преобразования предоставляются модулю (590) форматирования и энтропийного кодирования заголовка.
[0105] В модуле (535) масштабирования/обратного преобразования модуль масштабирования/обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воссозданных разностных значений предсказания или значений отсчетов. Для блока не в режиме пропуска кодер (500) объединяет воссозданные разностные значения со значениями предсказания (558) (например, со значениями предсказания с компенсацией движения, значениями предсказания внутри изображения), чтобы сформировать воссоздание (538). Для блока в режиме пропуска кодер (500) использует значения предсказания (558) как воссоздание (538).
[0106] Для предсказания внутри изображения значения воссоздания (538) могут быть возвращены модулю (540) оценки внутри изображения и модулю (545) предсказания внутри изображения. Кроме того, значения воссоздания (538) могут использоваться для предсказания с компенсацией движения последующих изображений. Значения воссоздания (538) могут быть затем отфильтрованы. Модуль (560) управления фильтрацией определяет, каким образом выполнить фильтрацию удаления блочности и фильтрацию SAO над значениями воссоздания (538) для данного изображения видеосигнала (505). Модуль (560) управления фильтрацией производит управляющие данные (562) фильтра, которые предоставляются модулю (590) форматирования и энтропийного кодирования заголовка и модулю слияния/фильтру (фильтрам) (565).
[0107] В модуле слияния/фильтре (фильтрах) (565) кодер (500) выполняет слияние контента из разных плиток в воссозданную версию изображения. Кодер (500) выборочно выполняет фильтрацию удаления блочности и фильтрацию SAO в соответствии с управляющими данными (562) фильтра для адаптивного сглаживания неоднородностей на границах в изображениях. Другая фильтрация (такая как фильтрация с подавлением периодических помех или ALF; не показаны) может быть применена в качестве альтернативы или дополнительно. Границы плиток быть выборочно отфильтрованы или не фильтрованы вообще в зависимости от настроек кодера (500), и кодер (500) может обеспечить синтаксис в пределах закодированного битового потока, чтобы указать, была ли такая фильтрация применена. Буфер (570) декодированных изображений буферизует воссозданное текущее изображение для использования при последующем предсказании с компенсацией движения.
[0108] Модуль (590) форматирования и энтропийного кодирования заголовка форматирует и/или подвергает энтропийному кодированию общие управляющие данные (522), данные (532) квантованных коэффициентов преобразования (532), данные (542) внутреннего предсказания, данные (552) движения и управляющие данные (562) фильтра. Общие управляющие данные (522) включают в себя сигналы, указывающие цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для изображений, слайса, блоков или других элементов видеоинформации. Такие сигналы могут быть включены, например, в множество PPS, заголовок слайса, синтаксическую структуру блока или другую синтаксическую структуру и могут быть закодированы посредством энтропийного кодирования или сообщены как значения фиксированной длины. Модуль (590) форматирования и энтропийного кодирования заголовка может также выполнить форматирование и/или энтропийное кодирование информации, идентифицирующей или определяющей доступные цветовые пространства (например, список предопределенных цветовых пространств, специфические матрицы для операций преобразования цветовых пространств), информации, идентифицирующей или определяющей доступные частоты цветовой дискретизации (например, список предопределенных частот цветовой дискретизации, другие частоты цветовой дискретизации или идентификация операций для понижающей дискретизации и повышающей дискретизации), и/или информации, идентифицирующей или определяющей доступные битовые глубины (например, список предопределенных битовых глубин, другие битовые глубины или идентификация операций для преобразования битовых глубин), которая применяется декодером во время адаптивного переключения.
[0109] Модуль (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) или другого формата.
[0110] В зависимости от реализации и типа желаемого сжатия модули кодера (500) могут быть добавлены, опущены, разбиты на несколько модулей, объединены с другими модулями и/или заменены подобными модулями. В альтернативных вариантах осуществления кодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или более описанных методик. Конкретные варианты осуществления кодеров обычно используют вариацию или дополненную версию кодера (500). Соотношения, показанные между модулями в пределах кодера (500), указывают общие потоки информации в кодере; другие соотношения ради простоты не показаны.
VI. Иллюстративные видеодекодеры.
[0111] Фиг. 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) или другого формата.
[0112] Декодер (600) основан на блоках и использует формат блока, который зависит от реализации. Блоки могут быть далее подразделены на различных стадиях. Например, изображение может быть разделено на блоки размером 64×64, блоки размером 32×32 или блоки размером 16×16, которые могут в свою очередь быть разделены на более мелкие блоки значений отсчетов. В реализациях декодирования для стандарта H.265/HEVC изображение делится на элементы CTU (блоки CTB), элементы CU (блоки CB), элементы PU (блоки PB) и элемент TU (блоки TB).
[0113] Декодер (600) распаковывает изображения с использованием декодирование внутри изображения и/или декодирования между изображениями. Многие компоненты декодера (600) используются и для декодирования внутри изображения, и для декодирования между изображениями. Точный перечень операций, выполняемых его компонентами, может изменяться в зависимости от типа распаковываемой информации.
[0114] Буфер принимает закодированные данные в закодированном видеопотоке (605) и делает принятые закодированные данные доступными для модуля (610) анализа/энтропийного декодирования. Модуль (610) анализа/энтропийного декодирования подвергает энтропийному декодированию закодированные посредством энтропийного кодирования данные, обычно применяя инверсию энтропийного кодирования, выполненного в кодере (500) (например, контекстно-адаптивное двоичное арифметическое декодирование). В результате анализа и энтропийного декодирования модуль (610) анализа/энтропийного декодирования производит общие управляющие данные (622), данные (632) квантованных коэффициентов преобразования, данные (642) внутреннего предсказания, данные (652) движения и управляющие данные (662) фильтра. Общие управляющие данные (622) включают в себя сигналы, указывающие цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для изображений, слайса, блоков или других элементов видеоинформации. Такие сигналы могут быть включены, например, в множество PPS, заголовок слайса, синтаксическую структуру блока или другую синтаксическую структуру и могут быть закодированы посредством энтропийного кодирования или сообщены как значения фиксированной длины. Модуль (610) анализа/энтропийного декодирования также может выполнить анализ и/или энтропийное декодирование информации, идентифицирующей или определяющей доступные цветовые пространства (например, список предопределенных цветовых пространств, специфические матрицы для операций преобразования цветовых пространств), информации, идентифицирующей или определяющей доступные частоты цветовой дискретизации (например, список предопределенных частот цветовой дискретизации, другие частоты цветовой дискретизации или идентификация операций для понижающей дискретизации и повышающей дискретизации), и/или информации, идентифицирующей или определяющей доступные битовые глубины (например, список предопределенных битовых глубин, другие битовые глубины или идентификация операций для преобразования битовых глубин), которая применяется декодером (600) во время адаптивного переключения.
[0115] Модуль (620) общего управления декодированием принимает общие управляющие данные (622) и обеспечивает управляющие сигналы (не показаны) другим модулям (таким как модуль (635) масштабирования/обратного преобразования, модуль (645) предсказания внутри изображения, модуль (655) компенсации движения и переключатель внутреннего/внешнего режима предсказания), чтобы устанавливать и изменять параметры декодирования во время декодирования. В частности, модуль (620) общего управления декодированием может заставить декодер (600) переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины во время декодирования по изображениям, по слайсам, по блокам или на некотором другом основании.
[0116] Если текущее изображение предсказано с использованием предсказания между изображениями, модуль (655) компенсации движения принимает данные (652) движения, такие как данные векторов MV, данные выбора опорного изображения и значения индексов режима слияния. Модуль (655) компенсации движения применяет векторы MV к воссозданному опорному изображению (изображениям) из буфера (670) декодированных изображений. Модуль (655) компенсации движения производит предсказания с компенсацией движения для закодированных с внешним предсказанием блоков текущего изображения. Буфер (670) декодированных изображений сохраняет одно или более воссозданных ранее изображений для использования в качестве опорных изображений.
[0117] В отдельном тракте в пределах декодера (600) модуль (645) предсказания внутри изображения принимает данные (642) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или предсказание между BC (например, значение флага на каждый блок внутреннего предсказания), направление режима предсказания (для внутреннего пространственного предсказания) и значения векторов BV (для предсказания между BC). Для внутреннего пространственного предсказания с использованием значения воссоздания (638) текущего изображения в соответствии с данными режима предсказания модуль (645) прогнозирования внутри изображения пространственно предсказывает значения отсчетов текущего блока текущего изображения на основе соседних, ранее воссозданных значений отсчетов текущего изображения. Или для предсказания между BC с использованием значений векторов BV модуль (645) предсказания внутри изображения предсказывает значения отсчетов текущего блока с использованием ранее воссозданных значений отсчетов опорной области предсказания внутри изображения, которая указана значением вектора BV для текущего блока.
[0118] Переключатель внутреннего/внешнего режима предсказания выбирает, является ли предсказание (658) для данного блока предсказанием с компенсацией движения или предсказанием внутри изображения. Например, когда соблюдается синтаксис H.265/HEVC, переключателем внутреннего/внешнего режима предсказания можно управлять на основе синтаксического элемента, закодированного для элемента CU изображения, которое может содержать предсказанные с использованием внутреннего предсказания элементы CU и предсказанные с использованием внешнего предсказания элементы CU. Для блока не в режиме пропуска декодер (600) объединяет предсказание (658) с воссозданными разностными значениями, чтобы произвести воссоздание (638) из контента из видеосигнала. Для блока в режиме пропуска декодер (600) использует значения предсказания (658) как воссоздание (638).
[0119] Для воссоздания разности для блока не в режиме пропуска модуль (635) масштабирования/обратного преобразования принимает и обрабатывает данные (632) квантованных коэффициентов преобразования. В модуле (635) масштабирования/обратного преобразования модуль масштабирования/обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воссозданных разностных значений предсказания или значений отсчетов. Например, обратный частотный преобразователь применяет, обратное преобразование блоков к коэффициентам частотного преобразования, производя данные значений отсчетов или данные разности предсказания. Обратное частотное преобразование может представлять собой обратное преобразование DCT, его целочисленное приближение или обратное частотное преобразование другого типа (например, обратное дискретное синусное преобразование или его целочисленное приближение).
[0120] Для предсказания внутри изображения значения воссоздания (638) могут быть возвращены модулю (645) предсказания внутри изображения (645). Для предсказания между изображениями значения воссоздания (638) могут быть затем отфильтрованы. В модуле слияния/фильтре (фильтрах) (665) декодер (600) выполняет слияние контента из разных плиток в воссозданную версию изображения. Декодер (600) выборочно выполняет фильтрацию удаления блочности и фильтрацию SAO в соответствии с управляющими данными (662) фильтра и правилами для адаптации фильтра, чтобы адаптивно сглаживать неоднородности на границах в изображениях. Другая фильтрация (такая как фильтрация с подавлением периодических помех или ALF; не показаны) может применена в качестве альтернативы или дополнительно. Границы плитки могут быть выборочно отфильтрованы или не отфильтрованы вообще в зависимости от настроек декодера (600) или синтаксических указаний в пределах закодированных данных битового потока. Буфер (670) декодированных изображений буферизует воссозданное текущее изображение для использования при последующем предсказании с компенсацией движения.
[0121] Декодер (600) также может включать в себя фильтр последующей обработки. Фильтр (608) последующей обработки может включать в себя фильтрацию с подавлением периодических помех, адаптивную фильтрацию Винера, фильтрацию воспроизведения зернистости фотопленки, фильтрацию SAO или фильтрацию другого вида.
[0122] В зависимости от реализации и типа желаемой распаковки модули декодера (600) могут быть добавлены, опущены, разбиты на несколько модулей, объединены с другими модулями и/или заменены подобными модулями. В альтернативных вариантах осуществления декодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или более описанных методик. Конкретные варианты осуществления декодеров обычно используют вариацию или дополненную версию декодера (600). Соотношения, показанные между модулями в пределах декодера (600), указывают общие потоки информации в декодере; другие соотношения ради простоты не показаны.
VII. Адаптивное переключение цветовых пространств, частот цветовой дискретизации и/или битовых глубин.
[0123] Во время кодирования кодер может обрабатывать первичный цветовой компонент более тщательно, чем вторичные цветовые компоненты в различных отношениях (например, больше вариантов для режимов кодирования, потенциально меньший размер шага квантования). Кроме того, посредством уменьшения частоты дискретизации вторичных цветовых компонентов кодер может распределить относительно больше битов (и, следовательно, улучшить качество) для первичного цветового компонента.
[0124] Значения отсчетов разных изображений, слайсов или блоков видеопоследовательности могут иметь разные статистические характеристики. Эти разные статистические характеристики могут затронуть эффективность кодирования, которая может быть измерена с точки зрения соотношения скорости и искажений (более низкое или более высокое качество для заданной скорости цифрового потока; или более низкая или более высокая скорость цифрового потока для заданного качества).
[0125] Этот раздел представляет различные признаки адаптивного кодирования и декодирования для элементов видеопоследовательности. Элемент может представлять собой изображение, слайс, блок или другую часть видеопоследовательности. Например, некоторые признаки относятся к кодированию/декодированию, которые включают в себя адаптивное переключение цветовых пространств между элементами в пределах видеопоследовательности. Другие признаки относятся к кодированию/декодированию, которые включают в себя адаптивное переключение частот цветовой дискретизации между элементами в пределах видеопоследовательности. Еще одни признаки относятся к кодированию/декодированию, которые включают в себя адаптивное переключение битовых глубин между элементами в пределах видеопоследовательности. Эти признаки могут улучшить эффективность кодирования во многих сценариях и могут быть использованы в комбинации или отдельно.
[0126] В частности, адаптивное переключение цветовых пространств, частот цветовой дискретизации и/или битовых глубин может улучшить соотношение скорости и искажений при кодировании некоторых "искусственно" созданных видеоизображений, например, контента снимка экрана, или при кодировании смеси естественного видеоизображения и искусственно созданных видеоизображений. Общие сценарии для кодирования/декодирования контента снимка экрана включают в себя конференции с использованием удаленного рабочего стола и кодирование/декодирование графических наложений на естественное видеоизображение или другой видеоинформации со "смешанным контентомʺ.
A. Типы видеоинформации.
[0127] В целом видеоинформация снимка экрана представляет вывод экрана компьютера или другого дисплея. Фиг. 7 показывает среду (710) рабочего стола компьютера с контентом, которое может обеспечить ввод для снимка экрана. Например, видеоинформация снимка экрана может представлять последовательность изображений всего компьютерного рабочего стола (711). Или видеоинформация снимка экрана может представлять последовательность изображений для одного из окон компьютерной настольной среды, такого как окно (713) приложения, включающего в себя игровой контент, окно (712) браузера с контентом веб-страницы или окно (714) с контентом текстового процессора.
[0128] Будучи машинно-генерируемым, искусственно созданным видеоизображением, контент снимка экрана, как правило, имеет относительно немного дискретных значений отсчетов, по сравнению с контентом естественного видеоизображения, которое снято с использованием видеокамеры. Например, область контента снимка экрана часто включает в себя единственный цвет, тогда как область в контенте естественного видеоизображения более вероятно включает в себя цвета, которые постепенно изменяются. Кроме того, контент снимка экрана обычно включает в себя четкие структуры (например, графику, текстовые символы), которые точно повторяются из кадра в кадр, даже если контент может быть смещено в пространстве (например, вследствие прокрутки). Контент снимка экрана часто кодируется в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением дискретизации цветности, хотя оно также может быть закодировано в формате с более низким разрешением дискретизации цветности (например, YUV 4:2:0, YUV 4:2:2).
[0129] Фиг. 8 показывает составную видеоинформацию (820), которая включает в себя естественное видеоизображение (821) и искусственно созданные видеоизображения. Искусственно созданные видеоизображения включают в себя графику (822) рядом с естественным видеоизображением (821) и бегущую строку (823) под естественным видеоизображением (821). Как и контент снимка экрана, показанный на фиг. 7, искусственно созданные видеоизображения, показанные на фиг. 8, обычно имеют относительно немного дискретных значений отсчетов. Они также обычно имеют четкие структуры (например, графику, текстовые символы), которые точно повторяются из кадра в кадр (например, вследствие прокрутки).
B. Примеры адаптивного переключения.
[0130] Для адаптивного переключения цветовых пространств разные элементы видеоинформации в последовательности кодируются в разных цветовых пространствах. Например, некоторые элементы закодированы в цветовом пространстве типа YUV (например, YCbCr, YCoCg), и другие элементы закодированы в цветовом пространстве типа RGB (например, RGB, BGR, GBR). В этом случае кодер или декодер по мере необходимости выполняет операции преобразования цветового пространства над значениями отсчетов для переключения между цветовым пространством типа YUV и цветовым пространством типа RGB. Как правило операции преобразования цветового пространства могут быть представлены как операции умножения матриц, выполняемые для каждой позиции, где n значений отсчетов в первом цветовом пространстве для позиции умножаются на матрицу размером n x n, чтобы произвести n значений отсчетов во втором цветовом пространстве для этой позиции. На практике операции преобразования цветового пространства могут быть реализованы с использованием другой арифметики.
[0131] В качестве другого примера адаптивного переключения цветовых пространств разные элементы могут быть закодированы в разных цветовых пространствах типа RGB, которые отличаются с точки зрения их первичного компонента и порядка, в котором компоненты сообщаются (например, для разностных данных). В этом случае кодер или декодер по мере необходимости выполняет операции переупорядочения цветового пространства над блоками или плоскостями значений отсчетов, чтобы изменить цветовой компонент, который является первичным цветовым компонентом.
[0132] В некоторых иллюстративных реализациях для кодирования с потерями кодер может переключаться между любыми из разных цветовых пространств. Однако для кодирования без потерь кодер выполняет только обратимые преобразования цветовых пространств (например, переупорядочение цветовых компонентов между цветовыми пространствами RGB, BGR и GBR или в некоторых реализациях преобразование в/из YCoCg с использованием увеличенной промежуточной битовой глубины).
[0133] Для адаптивного переключения частот цветовой дискретизации разные элементы видеоинформации в последовательности кодируются с разными частотами цветовой дискретизации. Например, некоторые элементы закодированы в формате 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.
[0134] При понижении частоты дискретизации значений отсчетов для вторичного компонента по горизонтали или по вертикали кодер или декодер может выполнять простое понижение частоты дискретизации, низкочастотную фильтрацию плюс понижение частоты дискретизации или другую фильтрацию плюс понижение частоты дискретизации. Для соответствующего повышения частоты дискретизации значений отсчетов вторичного компонента кодер или декодер выполняет обратную дискретизацию с использованием, например, повторения значения отсчета и/или фильтрации.
[0135] Для адаптивного переключения битовых глубин различные элементы видеоинформации в последовательности кодируются с различными битовыми глубинами. Например, некоторые элементы закодированы с помощью 12-битовых значений отсчетов, в то время как другие элементы закодированы с помощью 10-битовых значений отсчетов или 8-битовых значений отсчетов. При преобразовании между битовыми глубинами кодер или декодер может отбрасывать значения отсчетов более высокой битовой глубины (с добавлением или без добавления округляющегося коэффициента), чтобы произвести значения отсчетов более низкой битовой глубины, или масштабировать значения отсчетов более низкой битовой глубины, чтобы произвести значения отсчетов более высокой битовой глубины.
[0136] Кодер обычно принимает входную видеоинформацию в заданном формате, таком как RGB 4:4:4 с 12-битовыми значениями отсчетов. Кодер может выполнить преобразование между входным форматом и другим форматом (с другим цветовым пространством, другой частотой цветовой дискретизации и/или другой битовой глубиной) для данного элемента видеоинформации. Адаптация цветового пространства может быть выполнена на уровне изображения, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией частоты цветовой дискретизации и/или адаптацией битовой глубины. Аналогичным образом, адаптация частоты цветовой дискретизации может быть выполнена на уровне изображения, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией цветового пространства и/или адаптацией битовой глубины. Адаптация битовой глубины может быть выполнена на уровне изображения, на уровне слайса, на уровне блока или некотором другом уровне, отдельно или в сочетании с адаптацией цветового пространства и/или адаптацией частоты цветовой дискретизации.
[0137] Фиг. 9 показывает адаптивные по изображениям цветовые пространства, частоты цветовой дискретизации и/или битовые глубины для изображений в последовательности (900). Последовательность (900) включает в себя последовательность изображений. По мере необходимости кодер преобразовывает входную видеоинформацию из входного видеоформата в формат, выбранный для данного изображения. Форматом изображения 1 является YCbCr 4:2:0 с 8-битовыми значениями отсчетов, и форматом изображения 2 является RGB 4:4:4 с 8-битовыми значениями отсчетов. Изображения 3 и 4 представляют собой видеоинформацию BGR 4:4:4, но ее значения отсчетов имеют разные битовые глубины.
[0138] Фиг. 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-битовыми значениями отсчетов.
[0139] Фиг. 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. Примеры адаптивного переключения во время кодирования.
[0140] Фиг. 12 показывает обобщенную методику (1200) для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин во время кодирования. Кодер изображения или видеокодер, такой как описан со ссылкой на фиг. 3 или фиг. 5a-5b, может выполнить методику (1200).
[0141] Кодер кодирует (1210) видеоинформацию в последовательности. Как часть кодирования кодер переключает цветовые пространства, частоты цветовой дискретизации и/или битовые глубины по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности во время кодирования. Кодер может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины пространственным образом в пределах изображения. Кодер также может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины временным образом от изображения к изображению. В целях адаптивного переключения элементы видеоинформации могут представлять собой изображения последовательности, слайсы данного изображения последовательности, блоки данного изображения последовательности или другие части видеопоследовательности.
[0142] Например, переключение может включать в себя изменение между двумя из цветовых пространств с использованием операций преобразования цветовых пространств. Для операций преобразования цветовых пространств цветовые пространства могут включать в себя по меньшей мере одно цветовое пространство типа YUV и по меньшей мере одно цветовое пространство типа RGB. Или в качестве другого примера переключение может включать в себя изменение между двумя из цветовых пространств с использованием операций переупорядочения цветовых пространств. Для операций переупорядочения цветовых пространств цветовые пространства могут включать в себя несколько цветовых пространств типа RGB. В качестве альтернативы цветовые пространства включают в себя другие и/или дополнительные цветовые пространства.
[0143] Или в качестве другого примера переключение может включать в себя изменение между двумя частотами цветовой дискретизации. Частоты цветовой дискретизации могут включать в себя две или более из 4:4:4, 4:2:2, 4:2:0 и 4:0:0. В качестве альтернативы частоты цветовой дискретизации включают в себя другие и/или дополнительные частоты цветовой дискретизации.
[0144] Или в качестве другого примера переключение может включать в себя изменение между двумя битовыми глубинами. Битовые глубины могут включать в себя две или больше из 12 битов на отсчет, 10 битов на отсчет и 8 битов на отсчет. Разные цветовые компонентов данного элемента видеоинформации могут иметь одну и ту же битовую глубину или разные битовые глубины. В качестве альтернативы битовые глубины включают в себя другие и/или дополнительные битовые глубины.
[0145] Во время кодирования кодер может предсказывать значения отсчетов текущего блока в текущем изображении по меньшей мере частично на основе набора значений отсчетов ранее воссозданного контента. Для предсказания внутри изображения набор значений отсчетов представляет собой часть текущего изображения. Для предсказания между изображениями набор значений отсчетов представляет собой часть опорного изображения. Когда значения отсчетов текущего блока и набор значений отсчетов ранее воссозданного контента находятся в разных форматах, кодер может выполнить операции преобразования, чтобы обеспечить возможность предсказания. Примеры таких операций преобразования описаны в разделе VII.E.
[0146] Во время кодирования кодер также может выполнять адаптивное удаление блочности в контуре для ранее воссозданного контента в соответствии с одним или более правил. Правило (правила) может учитывать разные цветовые пространства двух смежных блоков в пределах ранее воссозданного контента. Примеры правил для адаптивного удаления блочности описаны в разделе VII.F.
[0147] Кодер выводит (1220) закодированные данные в битовом потоке. Закодированные данные включают в себя один или несколько сигналов, указывающих, каким образом цветовые пространства, частоты цветовой дискретизации и/или битовые глубины переключаются по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности. Примеры синтаксических элементов для одного или более сигналов описаны в разделе VII.D.
[0148] Фиг. 13 показывает более подробную методику (1300) для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин во время кодирования. Кодер изображения или видеокодер, такой как описан со ссылкой на фиг. 3 или фиг. 5a-5b, может выполнить методику (1300). В частности, фиг. 13 показывает решения по каждому элементу, принимаемые кодером, но иные варианты для кодирования являются такими, как описано со ссылкой на фиг. 12.
[0149] Кодер получает (1310) следующий элемент (например, изображение, слайс, блок) и устанавливает (1320) цветовое пространство, частоту цветовой дискретизации и/или битовую глубину для элемента. По мере необходимости кодер преобразовывает значения отсчетов в другое цветовое пространство, частоту цветовой дискретизации и/или битовую глубину, установленные для элемента, затем кодирует (1330) элемент. Кодер выводит (1340) закодированные данные для элемента, включающие в себя один или несколько сигналов, которые указывают цветовое пространство, частоту цветовой дискретизации и/или битовую глубину для элемента. Кодер проверяет (1350), следует ли продолжать выполнение для следующего элемента, и если да, получает (1310) следующий элемент.
C. Примеры адаптивного переключения во время декодирования.
[0150] Фиг. 14 показывает обобщенную методику (1400) для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин во время декодирования. Декодер изображения или видеодекодер, такой как описан со ссылкой на фиг. 4 или фиг. 6, может выполнить методику (1400).
[0151] Декодер принимает (1410) закодированные данные в битовом потоке. Закодированные данные включают в себя один или несколько сигналов, которые указывают, каким образом цветовые пространства, частоты цветовой дискретизации и/или битовые глубины переключаются по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности. Примеры синтаксических элементов для одного или более сигналов описаны в разделе VII.D.
[0152] Декодер декодирует (1420) видеоинформацию в последовательности. Как часть декодирования декодер переключает цветовые пространства, частоты цветовой дискретизации и/или битовые глубины по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности во время декодирования. Декодер может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины пространственным образом в пределах изображения. Декодер также может переключать цветовые пространства, частоты цветовой дискретизации и/или битовые глубины временным образом от изображения к изображению. В целях адаптивного переключения элементы видеоинформации могут представлять собой изображения последовательности, слайсы данного изображения последовательности, блоки данного изображения последовательности или другие части видеопоследовательности
[0153] Например, переключение может включать в себя изменение между двумя из цветовых пространств с использованием операций преобразования цветовых пространств. Для операций преобразования цветовых пространств цветовые пространства могут включать в себя по меньшей мере одно цветовое пространство типа YUV и по меньшей мере одно цветовое пространство типа RGB. Или в качестве другого примера переключение может включать в себя изменение между двумя из цветовых пространств с использованием операций переупорядочения цветовых пространств. Для операций переупорядочения цветовых пространств цветовые пространства могут включать в себя несколько цветовых пространств типа RGB. В качестве альтернативы цветовые пространства включают в себя другие и/или дополнительные цветовые пространства.
[0154] Или в качестве другого примера переключение может включать в себя изменение между двумя частотами цветовой дискретизации. Частоты цветовой дискретизации могут включать в себя две или более из 4:4:4, 4:2:2, 4:2:0 и 4:0:0. В качестве альтернативы частоты цветовой дискретизации включают в себя другие и/или дополнительные частоты цветовой дискретизации.
[0155] Или в качестве другого примера переключение может включать в себя изменение между двумя битовыми глубинами. Битовые глубины могут включать в себя две или больше из 12 битов на отсчет, 10 битов на отсчет и 8 битов на отсчет. Разные цветовые компонентов данного элемента видеоинформации могут иметь одну и ту же битовую глубину или разные битовые глубины. В качестве альтернативы битовые глубины включают в себя другие и/или дополнительные битовые глубины.
[0156] Во время декодирования декодер может предсказывать значения отсчетов текущего блока в текущем изображении по меньшей мере частично на основе набора значений отсчетов ранее воссозданного контента. Для предсказания внутри изображения набор значений отсчетов представляет собой часть текущего изображения. Для предсказания между изображениями набор значений отсчетов представляет собой часть опорного изображения. Когда значения отсчетов текущего блока и набор значений отсчетов ранее воссозданного контента находятся в разных форматах, декодер может выполнить операции преобразования, чтобы обеспечить возможность предсказания. Примеры таких операций преобразования описаны в разделе VII.E.
[0157] Во время декодирования декодер также может выполнять адаптивное удаление блочности в контуре для ранее воссозданного контента в соответствии с одним или более правил. Правило (правила) может учитывать разные цветовые пространства двух смежных блоков в пределах ранее воссозданного контента. Примеры правил для адаптивного удаления блочности описаны в разделе VII.F.
[0158] Фиг. 15 показывает более подробную методику (1500) для адаптивного переключения цветовых пространств, частот цветовой дискретизации и/или битовых глубин во время декодирования. Декодер изображения или видеодекодер, такой как описан со ссылкой на фиг. 4 или фиг. 6, может выполнить методику (1500). В частности, фиг. 15 показывает решения для каждого элемента, принимаемые декодером, но иные варианты для декодирования являются какими, как описано со ссылкой на фиг. 14.
[0159] Декодер получает (1510) закодированные данные для следующего элемента (например, изображения, слайса, блока). Закодированные данные включают в себя один или более сигналов, которые указывают цветовое пространство, частоту цветовой дискретизации и/или битовую глубину для элемента. Декодер определяет (1520) цветовое пространство, частоту цветовой дискретизации и/или битовую глубину для элемента. Декодер декодирует (1530) элемент, преобразовывая значения отсчетов по мере необходимости из цветового пространства, частоты цветовой дискретизации и/или набора битовой глубины для элемента. Декодер проверяет (1540), следует ли продолжить выполнение для следующего элемента, и если да, получает (1510) закодированные данные для следующего элемента.
D. Примеры сигнализации информации адаптивного переключения.
[0160] Этот раздел описывает примеры сигналов, которые указывают, каким образом цветовые пространства, частоты цветовой дискретизации и/или битовые глубины переключаются по меньшей мере между некоторыми элементами видеоинформации в пределах последовательности. В целом сигнал в битовом потоке указывает выбор между двумя или более вариантами для кодирования/декодирования элемента. Для адаптации цветового пространства сигнал указывает выбор между двумя или более цветовыми пространствами, используемыми для кодирования/декодирования элемента. Для адаптации частоты цветовой дискретизации сигнал указывает выбор между двумя или более частотами цветовой дискретизации, используемыми для кодирования/декодирования элемента. Для адаптации битовой глубины сигнал указывает выбор между двумя или более битовыми глубинами, используемыми для кодирования/декодирования элемента. Разные битовые глубины могут быть сообщены для разных цветовых компонентов элемента.
[0161] Сигнал может представлять собой значение флага для данного элемента, указывающего выбор между двумя вариантами для цветовых пространств (или частот цветовой дискретизации или битовых глубин) для кодирования/декодирования данного элемента. Или сигнал может представлять собой некоторый другой синтаксический элемент для данного элемента (или несколько флагов для данного элемента), указывающий выбор между тремя или более вариантами для цветовых пространств (или частот цветовой дискретизации или битовых глубин) для кодирования/декодирования данного элемента.
[0162] Сигнал для данного элемента может присутствовать на любом из различных уровней синтаксиса битового потока. Для адаптации по изображениям, например, синтаксический элемент, указывающий выбор цветового пространства (или частоты цветовой дискретизации или битовой глубины), может являться частью множества PPS. Или для адаптации по слайсам синтаксический элемент, указывающий выбор цветового пространства (или частоты цветовой дискретизации или битовой глубина), может являться частью заголовка слайса. Или для адаптации по блокам синтаксический элемент, указывающий выбор цветового пространства (или частоты цветовой дискретизации или битовой глубины), может являться частью синтаксической структуры для блока (например, синтаксической структуры элемента CU). В целом адаптация по изображениям является менее гибкой, чем адаптация по слайсам или адаптация по блокам, но использует меньше сигнальных битов. Адаптация по блокам использует больше сигнальных битов, чем адаптация по слайсам, но является более гибкой.
[0163] Сигнал для данного элемента может быть закодирован посредством энтропийного кодирования, например, с использованием CABAC, или форматирован как значение фиксированной длины. Сигнал для данного элемента может быть закодирован с предсказанием. В этом случае разностное значение для параметра для данного элемента представляет разность между фактическим значением параметра и его предиктором. Предиктор может представлять собой быть значением параметра, сообщенное на более высоком уровне синтаксиса (например, как часть множества SPS или как другой параметр уровня последовательности). Например, значение битовой глубины для текущего блока или слайса может быть сообщено как разностное значение относительно определенной множеством SPS битовой глубины. Или предиктор может быть основан на одном или более фактических значениях параметра для одного или более предыдущих элементов видеоинформации (например, фактического значения параметра для последнего закодированного элемента или медиана фактических значений параметра по соседству вокруг данного элемента). Например, битовая глубина для текущего блока может быть сообщена как разностное значение относительно битовой глубины предыдущего закодированного блока.
[0164] Закодированные данные также могут включать в себя информацию, идентифицирующую или определяющую доступные цветовые пространства, информацию, идентифицирующую или определяющую доступные частоты цветовой дискретизации, и/или информацию, идентифицирующую или определяющую доступные битовые глубины. Такая информация может быть сообщена как часть множества SPS, множества PPS, заголовка слайса или другой структуры синтаксиса битового потока. Доступные цветовые пространства, частоты цветовой дискретизации или битовые глубины могут быть выбраны из числа предопределенных вариантов, известных кодеру и декодеру. Или кодер может определить специфическое цветовое пространство (или частоту цветовой дискретизации или битовую глубину) в закодированных данных для использования кодером и декодером. Например, информация может включать в себя матрицу значений, применяемых для операций преобразования цветового пространства между двумя цветовыми пространствами. Определение специфического варианта использует больше битов, но является более гибким, чем идентификация множества предопределенных вариантов. Другая возможность состоит в том, чтобы использовать предопределенные варианты, известные кодеру и декодеру, без какой-либо идентифицирующей информации, сообщенной как часть множества SPS, множества PPS, заголовка слайса и т.д. При этом не используются биты для дополнительной информации, но это может привести к менее эффективному кодированию сигналов, когда многие варианты вообще не используются во время кодирования для последовательности.
[0165] Информация, идентифицирующая или определяющая доступные цветовые пространства (или частоты цветовой дискретизации или битовые глубины) используются вместе с сигналами, которые указывают выбор вариантов для элементов видеоинформации. Например, множество SPS может включать в себя информацию, идентифицирующую доступные цветовые пространства, и информацию о том, какие преобразования цветового пространства разрешены для последовательности, и синтаксический элемент в каждом множестве PPS (или в заголовке слайса или в синтаксической структуре блока) указывает выбор из заданного списка доступных цветовых пространств. Или заголовок слайса может включать в себя информацию, идентифицирующую доступные частоты цветовой дискретизации, и синтаксический элемент в каждой синтаксической структуре блока указывает выбор из заданного списка доступных частот цветовой дискретизации. Или может использоваться некоторая комбинация предыдущих вариаций. Например, множество SPS может указывать список предопределенных цветовых пространств, а множество PPS или заголовок слайса включают в себя выбор одного из предопределенных цветовых пространств или включают в себя информацию для специфического пользовательского пространства.
[0166] В некоторых иллюстративных реализациях дополнительные правила применяются к сигнализации уровня элемента CU индикаторов цветового пространства. Если текущий элемент CU представляет собой элемент CU с внутренним пространственным предсказанием, индикатор цветового пространства может быть сообщен как часть синтаксической структуры элемента CU. Если текущий элемент CU представляет собой элемент CU с предсказанием внутри BC или элемент CU с предсказанием между изображениями, индикатор цветового пространства может быть сообщен как часть синтаксической структуры элемента CU, когда имеется разность, но не разрешены преобразования цветового пространства, которые предусматривают только переупорядочение (например, между RGB, BGR и GBR). В этом контексте такие преобразования цветовых пространств не улучшают производительность, и биты, потраченные на сигнализацию того, каким образом следует переупорядочить цветовые компоненты, будут потрачены впустую.
E. Примеры операций преобразования для предсказания.
[0167] Во время кодирования или декодирования кодер или декодер может предсказывать значения отсчетов текущего блока в текущем изображении по меньшей мере частично на основе набора значений отсчетов ранее воссозданного контента. Для предсказания внутри изображения набор значений отсчетов представляет собой часть текущего изображения (например, значения отсчетов в пространственно смежных позициях для внутреннего пространственного предсказания или воссозданные значения отсчетов предыдущих блоков для предсказания между BC). Для предсказания между изображениями набор значений отсчетов представляет собой часть опорного изображения. Если значения отсчетов текущего блока и набор значений отсчетов ранее воссозданного контента находятся в разных форматах, кодер или декодер выполняет операции преобразования, чтобы обеспечить возможность предсказания значений отсчетов текущего блока.
[0168] Например, если набор значений отсчетов ранее воссозданного контента находится в цветовом пространстве GBR, а текущий блок закодирован в цветовом пространстве YCbCr, кодер или декодер может преобразовать набор значений отсчетов ранее воссозданного контента в цветовое пространство YCbCr перед предсказанием внутри изображения или предсказанием между изображениями с использованием набора преобразованных значений отсчетов.
[0169] Для упрощения реализации кодер и декодер могут сохранять значения отсчетов ранее воссозданного контента в "основном" формате. Основной формат обеспечивает общее представление для воссозданного контента в конкретном цветовом пространстве с конкретной частотой цветовой дискретизации и значениями отсчетов, имеющими конкретную битовую глубину. В зависимости от реализации основным форматом может являться GBR 4:4:4 с 12-битовыми значениями отсчетов, YUV 4:4:4 с 12-битовыми значениями отсчетов или некоторая другая комбинация цветового пространства, частоты цветовой дискретизации и битовой глубины. Основной формат предопределен для кодера и декодера. В качестве альтернативы основной формат может быть определен посредством сигнала в битовом потоке, указывающего цветовое пространство, частоту цветовой дискретизации и/или битовую глубину для хранения воссозданного контента. Основной формат может быть выбран, например, как наиболее распространенный формат кодирования для элементов видеопоследовательности, чтобы избежать операций преобразованию во многих случаях. Использование GBR 4:4:4 с 12-битовыми значениями отсчетов в качестве основного формата может являться эффективным для контента снимка экрана, когда переключение цветового пространства происходит часто, а переключение частоты цветовой дискретизации происходит редко. Использование YUV 4:4:4 с 12-битовыми значениями отсчетов в качестве основного формата может являться эффективным, когда часто происходит и переключение цветового пространства, и переключение частоты цветовой дискретизации.
[0170] Фиг. 16 показывает методику (1600) для предсказания значений отсчетов блока, закодированного в одном формате, из набора значений отсчетов ранее воссозданного контента в другом формате. Кодер или декодер может выполнить методику (1600) во время кодирования или декодирования.
[0171] Для начала кодер или декодер получает (1610) набор значений отсчетов ранее воссозданного контента, которое будет использоваться для предсказания значений отсчетов текущего блока текущего изображения. Набор значений отсчетов может являться частью текущего изображения или опорного изображения в зависимости от типа предсказания.
[0172] Значения отсчетов ранее воссозданного контента сохранены в первом формате (например, в основном формате). Кодер или декодер проверяет (1620), закодирован ли текущий блок в первом формате. В более общем случае кодер или декодер оценивает, находятся ли набор значений отсчетов ранее воссозданного контента и значений отсчетов текущего блока в разных форматах.
[0173] Если текущий блок закодирован в первом формате (например, в основном формате), кодеру или декодеру не нужно выполнять операции преобразования перед предсказанием. Кодер или декодер предсказывает (1640) значения отсчетов текущего блока с использованием набора значений отсчетов ранее воссозданного контента. Во время кодирования кодер может затем сформировать, закодировать и воссоздать (1650) разностные значения. Во время декодирования декодер может воссоздать (1650) разностные значения. Кодер или декодер затем воссоздает (1660) значения отсчетов текущего блока по меньшей мере частично на основе предсказанных значений отсчетов. Для блока не в режиме пропуска кодер или декодер может объединить предсказанные значения отсчетов с воссозданными разностными значениями, чтобы произвести воссозданные значения отсчетов. Кодер или декодер затем сохраняет (1670) воссозданные значения отсчетов текущего блока как часть ранее воссозданного контента. Поскольку текущий блок закодирован в первом формате (например, в основном формате), кодеру или декодеру не нужно выполнять операции преобразования после предсказания.
[0174] С другой стороны, если текущий блок не закодирован в первом формате, кодер или декодер преобразовывает (1632) набор значений отсчетов ранее воссозданного контента из первого формата во второй формат, в котором закодирован текущий блок. Например, если первый и второй форматы имеют разные цветовые пространства, кодер или декодер выполняет операции преобразования цветового пространства и/или операции переупорядочения цветового пространства, чтобы заменить цветовое пространство набора значений отсчетов ранее воссозданного контента на второй формат. Например, кодер или декодер может преобразовать множество P значений отсчетов ранее воссозданного контента из цветового пространства RGB в цветовое пространство YCoCg следующим образом.
[0175] Предположим, что значениями отсчетов для позиции в цветовом пространстве RGB являются PsR, PsG и PsB, соответственно, и текущая битовая глубина составляет bit_depthcurrent. Минимальное значение отсчета равно 0, и максимальное значение отсчета составляет (1<<bit_depthcurrent) - 1 (например, 255 для 8-битовых значений отсчетов). Чтобы отрегулировать динамический компонентов Co и Cg, член add_value определяется как 1<<(bit_depthcurrent - 1) (например, 128 для 8-битовых значений отсчетов). Значения отсчетов PsY, PsCo и PsCg для позиции в цветовом пространстве YCoCg могут быть вычислены как:
PsY=(PsR+(2 * PsG)+PsB)>>2
PsCo=((PsR - PsB)>>1)+add_value
PsCg=(((2 * PsG - PsR - PsB)>>2)+add_value
[0176] Значения отсчетов PsY, PsCo и PsCg отсекаются в диапазоне, заданном минимальным значением отсчета и максимальным значением отсчета.
[0177] В более общем случае матрица цветового преобразования CC_matrix1_to_2 для преобразования из первого цветового пространства во второе цветовое пространство может быть определена как:
[c00, c01, c02
c10, c11, c12
c20, c21, c22]
[0178] Чтобы отрегулировать динамический диапазон на выходе, может быть использована матрица смещений CC_offsets1_to_2. Смещения CC_offsets1_to_2 могут быть определены как:
[o0,
o1,
o2]
[0179] Предположим, что значениями отсчетов для позиции в первом цветовом пространстве являются PsCC1=[Ps00, Ps01, Ps02]T. Значения отсчетов PsCC2 для позиции во втором цветовом пространстве могут быть вычислены как:
Ps CC2=CC_matrix1_to_2 * PsCC1+CC_offsets1_to_2
[0180] Значения отсчетов PsCC2 отсекаются до подходящего диапазона.
[0181] Операции переупорядочения цветового пространства для множества P значений отсчетов ранее воссозданного контента могут быть реализованы посредством переупорядочения цветовых компонентов блока или плоскости значений отсчетов для изменения порядка первичного и вторичного цветовых компонентов.
[0182] Если первый и второй форматы имеют разные частоты цветовой дискретизации, кодер или декодер выполняет понижающую дискретизацию или повышающую дискретизацию (с фильтрацией или без фильтрации) для замены частоты цветовой дискретизации набора значений отсчетов ранее воссозданного контента на второй формат. Например, кодер или декодер может преобразовать множество P значений отсчетов ранее воссозданного контента из частоты цветовой дискретизации 4:4:4 в частоту цветовой дискретизации 4:2:0 следующим образом.
[0183] Предположим, что значениями отсчетов ранее воссозданного контента являются значения отсчетов YUV 4:4:4. Пространственное разрешение видеоинформации YUV 4:4:4 представляет собой width x height для всех цветовых компонентов. После преобразования частоты цветовой дискретизации пространственное разрешение видеоинформации YUV 4:2:0 представляет собой width x height для компонента Y и (width /2) x (height /2) для компонентов U и V. Для каждой позиции (i,j), для 0 ≤ i < width, и 0 ≤ j < height, кодер или декодер может вычислить значения отсчетов для видеоинформации YUV 4:2:0 как:
Y 420[i][j]=Y444[i][j]
U 420[i][j]=(U444[2*i][2*j]+U444[2*i+1][2*j]+U444[2*i][2*j+1]+U444[2*i+1][2*j+1])>>2
V 420[i][j]=(V444[2*i][2*j]+V444[2*i+1][2*j]+V444[2*i][2*j+1]+V444[2*i+1][2*j+1])>>2
[0184] В этом подходе значения отсчетов для компонентов U и V определены без фильтрации. В качестве альтернативы кодер или декодер может использовать фильтрацию при получении дискретизированных с понижением компонентов U и V.
[0185] Если первый и второй форматы имеют разные битовые глубины, кодер или декодер изменяет множество P значений отсчетов ранее воссозданного контента с битовой глубины bit_depthref на битовую глубину bit_depthcurrent значений отсчетов текущего блока следующим образом.
если bit_depthref > bit_depthcurrent
shift=bit_depthref - bit_depthcurrent
add=1<<(shift-1)
P=(P+add)>>shift
иначе если bit_depthref < bit_depthcurrent
shift=bit_depthcurrent - bit_depthref
P<<=shift
[0186] Например, предположим, что битовая глубина первого формата составляет 10 битов на отсчет, битовая глубина второго формата составляет 8 битов на отсчет, и текущий блок использует внутреннее пространственное предсказание. Кодер или декодер получает 10-битовые значения отсчетов соседних позиций, используемых во внутреннем пространственном предсказании. 10-битовые значения отсчетов преобразовываются в 8-битовые значения отсчетов, которые затем используются, чтобы сформировать 8-битовые предсказанные значения отсчетов для текущего блока.
[0187] После преобразования (1632) кодер или декодер предсказывает (1642) значения отсчетов текущего блока с использованием набора преобразованных значений отсчетов ранее воссозданного контента. Во время кодирования кодер может затем сформировать, закодировать и воссоздать (1652) разностные значения. Во время декодирования декодер может воссоздать (1652) разностные значения. Кодер или декодер затем воссоздает (1662) значения отсчетов текущего блока по меньшей мере частично на основе предсказанных значений отсчетов. Для блока не в режиме пропуска кодер или декодер может объединить предсказанные значения отсчетов с воссозданными разностными значениями, чтобы произвести воссозданные значения отсчетов.
[0188] В этот момент воссозданные значения отсчетов текущего блока находятся во втором формате. Воссозданные значения отсчетов текущего блока преобразовываются в первый формат перед сохранением как часть воссозданного контента. Кодер или декодер преобразовывает (1672) воссозданные значения отсчетов текущего блока из второго формата в первый формат и сохраняет (1670) преобразованные воссозданные значения отсчетов текущего блока, теперь в первом формате (например, в основном формате), как часть ранее воссозданного контента.
[0189] Например, если первый и второй форматы имеют разные цветовые пространства, кодер или декодер выполняет операции преобразования цветового пространства и/или операции переупорядочения цветового пространства, чтобы заменить цветовое пространство воссозданных значений отсчетов текущего блока на первый формат. (Операции преобразования цветового пространства из второго формата в первый формат обычно зеркально отражают более ранние операции преобразования цветового пространства из первого формата во второй формат.) Например, кодер или декодер может преобразовать воссозданные значения отсчетов R текущего блока из цветового пространства YCoCg в цветовое пространство RGB следующим образом.
[0190] Предположим, что значениями отсчетов для позиции в цветовом пространстве YCoCg являются RsY, RsCo и RsCg, соответственно, и текущая битовая глубина составляет bit_depthcurrent. Чтобы отрегулировать динамический диапазон, член add_value определяется как 1<<(bit_depthcurrent - 1) (например, 128 для 8-битовых значений отсчетов). Значения отсчетов RsR, RsG и RsB для позиции в цветовом пространстве RGB могут быть вычислены следующим образом:
RsCo -= add_value
RsCg -= add_value
RsR=RsY+RsCo - RsCg
RsG=RsY+RsCg
RsB=RsY - RsCo - RsCg
[0191] Значения отсчетов RsR, RsG и RsB отсекаются в диапазоне, определенном минимальным значением отсчета и максимальным значением отсчета.
[0192] В более общем случае матрица цветового преобразования CC_matrix2_to_1 для преобразования из второго цветового пространства обратно в первое цветовое пространство может быть определена как:
[c'00, c'01, c'02
c'10, c'11, c'12
c'20, c'21, c'22]
[0193] Чтобы отрегулировать динамический диапазон на выходе, может быть использована матрица смещений CC_offsets2_to_1. Смещения CC_offsets2_to_1 могут быть определены как:
[o'0,
o'1,
o'2]
[0194] Предположим, что значениями отсчетов для позиции во втором цветовом пространстве являются RsCC2=[Rs00, Rs01, Rs02]T. Значения отсчетов RsCC1 для позиции в первом цветовом пространстве могут быть вычислены как:
Rs CC1=CC_matrix2_to_1 * (RsCC2+CC_offsets2_to_1)
[0195] Значения отсчетов RsCC1 отсекаются до подходящего диапазона.
[0196] Операции переупорядочения цветового пространства для воссозданных значений отсчетов R могут быть реализованы посредством переупорядочения цветовых компонентов блока или плоскости значений отсчетов для изменения порядка первичного и вторичного цветовых компонентов.
[0197] Если первый и второй форматы имеют разные частоты цветовой дискретизации, кодер или декодер выполняет понижающую дискретизацию или повышающую дискретизацию (с фильтрацией или без фильтрации) для замены частоты цветовой дискретизации воссозданных значений отсчетов текущего блока на первый формат. (Операции преобразования частоты цветовой дискретизации из второго формата в первый формат обычно зеркально отражают более ранние операции преобразования частоты цветовой дискретизации из первого формата во второй формат.) Например, кодер или декодер может преобразовать воссозданные значения отсчетов R текущего блока из частоты цветовой дискретизации 4:2:0 в частоту цветовой дискретизации 4:4:4 посредством дискретизации с повышением дискретизированных с понижением цветовых компонентов.
[0198] Если первый и второй форматы имеют разные битовые глубины, кодер или декодер изменяет воссозданные значения отсчетов R текущего блока с битовой глубины bit_depthcurrent на битовую глубину bit_depthref значений отсчетов воссозданного контента следующим образом.
если bit_depthref > bit_depthcurrent
shift=bit_depthref - bit_depthcurrent
R <<= shift
иначе если bit_depthref < bit_depthcurrent
shift=bit_depthcurrent - bit_depthref
add=1<<(shift-1)
R=(R+add)>>shift
[0199] Кодер или декодер может повторить методику (1600) для других блоков слайса или изображения.
[0200] На фиг. 16 преобразование (1632) происходит перед предсказанием (1642). В качестве альтернативы для некоторых типов предсказания (например, внутреннего пространственного предсказания, предсказания между BC) преобразование может следовать за предсказанием. В этом случае кодер или декодер предсказывает значения отсчетов текущего блока с использованием набора значений отсчетов ранее воссозданного контента, затем преобразовывает предсказанные значения отсчетов текущего блока из первого формата во второй формат. Кодер или декодер воссоздает значения отсчетов текущего блока по меньшей мере частично на основе преобразованных предсказанных значений отсчетов текущего блока.
[0201] Например, предположим, что битовая глубина первого формата составляет 10 битов на отсчет, битовая глубина второго формата составляет 8 битов на отсчет, и текущий блок использует внутреннее пространственное предсказание. Кодер или декодер получает 10-битовые значения отсчетов соседних позиций, используемых при внутреннем пространственном предсказании. 10-битовые значения отсчетов используются для формирования 10-битовых предсказанных значений отсчетов, которые затем преобразовываются в 8-битовые значения отсчетов.
[0202] В качестве альтернативы значения отсчетов элементов воссозданного контента могут быть сохранены в формате, в котором закодированы элементы. Также сохраняется некоторый показатель относительно форматов кодирования для соответствующих элементов. Значения отсчетов воссозданного контента преобразовываются в другой формат для предсказания по мере необходимости.
F. Примеры операций удаления блочности.
[0203] Во время кодирования или декодирования кодер или декодер может выполнить адаптивное удаление блочности в цикле для ранее воссозданного контента в соответствии с одним или более правил. В некоторых случаях удаление блочности может быть применено по границе между двумя блоками, закодированными с разными цветовыми пространствами.
[0204] Например, в некоторых реализациях адаптивного удаления блочности сила фильтра удаления блочности для границы между двумя блоками по меньшей мере частично основана на том, имеются ли у любого из смежных блоков ненулевые остаточные значения. Когда два смежных блока имеют разные цветовые пространства, сила фильтра удаления блочности для границы между блоками может зависеть от того, имеют ли первичные компоненты двух смежных блоков ненулевые остаточные значения. Например, оценивается первичный компонент первого смежного блока, и оценивается первичный компонент второго смежного блока, даже при том, что цветовые пространства двух блоков разные. Сила фильтра зависит от того, имеются ли у любого первичного компонента для блоков ненулевые остаточные значения.
[0205] В качестве альтернативы правило (правила) может учитывать разные цветовые пространства двух смежных блоков. В этом случае, когда два смежных блока имеют разные цветовые пространства, сила удаления блочности фильтра для границы между блоками зависит от того, имеют ли соответствующие компоненты двух смежных блоков ненулевые остаточные значения. Например, предположим, что цветовым пространством одного смежного блока является GBR, и цветовым пространством другого смежного блока является RGB. Оба цветовых пространства представляют собой цветовые пространства типа RGB. При определении силы фильтра для компонента G кодер или декодер рассматривает разностные значения первого компонента (G) первого блока и разностные значения второго компонента (G) второго блока. Эта вариация адаптивного удаления блочности может использоваться для блоков с разными цветовыми пространствами типа RGB.
[0206] С учетом многих возможных вариантов осуществления, к которым могут быть применены принципы раскрытого изобретения, следует понимать, что проиллюстрированные варианты осуществления являются лишь предпочтительными примерами изобретения и не должны быть взяты в качестве ограничения объема изобретения. Вместо этого объем изобретения определен следующей формулой изобретения. Таким образом, мы заявляем в качестве нашего изобретения все, что подпадает под объем и сущность этой формулы изобретения.
Группа изобретений относится к технологиям кодирования/декодирования видео. Техническим результатом является повышение эффективности кодирования/декодирования видео. Предложен способ кодирования видео для вычислительного устройства с видеокодером или кодером изображения. Способ содержит этап, на котором кодируют видео в последовательности, в том числе переключают цветовые пространства пространственным и/или временным образом по меньшей мере между некоторыми элементами видео в пределах последовательности во время кодирования, причем цветовые пространства включают в себя цветовое пространство типа RGB и цветовое пространство YCoCg, при этом кодирование содержит предсказание значений отсчетов текущего элемента видео по меньшей мере частично на основе значений отсчетов ранее воссозданного контента. Далее согласно способу выводят закодированные данные в битовом потоке, причем закодированные данные включают в себя один или более сигналов, указывающих, каким образом цветовые пространства переключаются по меньшей мере между некоторыми элементами видео в пределах последовательности. 6 н. и 6 з.п. ф-лы, 18 ил.
1. Способ кодирования видео для вычислительного устройства с видеокодером (500) или кодером изображения, причем способ содержит этапы, на которых:
кодируют (1210) видео в последовательности (900), в том числе переключают цветовые пространства пространственным и/или временным образом по меньшей мере между некоторыми элементами видео в пределах последовательности (900) во время кодирования (1210), причем цветовые пространства включают в себя цветовое пространство типа RGB и цветовое пространство YCoCg, при этом кодирование (1210) содержит предсказание значений отсчетов текущего элемента видео по меньшей мере частично на основе значений отсчетов ранее воссозданного контента; и
выводят (1220) закодированные данные в битовом потоке, причем закодированные данные включают в себя один или более сигналов, указывающих, каким образом цветовые пространства переключаются по меньшей мере между некоторыми элементами видео в пределах последовательности (900),
причем способ отличается тем, что значения отсчетов ранее воссозданного контента находятся в первом цветовом пространстве из упомянутых цветовых пространств, а значения отсчетов текущего элемента находятся во втором другом цветовом пространстве из упомянутых цветовых пространств, и тем, что предсказание включает в себя:
преобразование (1632) значений отсчетов ранее воссозданного контента из первого цветового пространства во второе цветовое пространство;
предсказание (1642) значений отсчетов текущего элемента с использованием преобразованных значений отсчетов ранее воссозданного контента;
воссоздание (1662) значений отсчетов текущего элемента по меньшей мере частично на основе предсказанных значений отсчетов текущего элемента;
преобразование (1672) воссозданных значений отсчетов текущего элемента из второго цветового пространства в первое цветовое пространство; и
сохранение (1670) преобразованных воссозданных значений отсчетов текущего элемента как часть ранее воссозданного контента,
при этом каждый этап (1632, 1672) преобразования содержит для кодирования с потерями использование операций преобразования цветовых пространств для переключения между цветовыми пространствами или для кодирования без потерь - использование операций обратимого преобразования цветовых пространств и увеличенной промежуточной битовой глубины для переключения между цветовыми пространствами.
2. Способ декодирования видео для вычислительного устройства с видеодекодером (600) или декодером изображения, причем способ содержит этапы, на которых:
принимают (1410) закодированные данные в битовом потоке, причем закодированные данные включают в себя один или более сигналов, указывающих, каким образом цветовые пространства переключаются по меньшей мере между некоторыми элементами видео в пределах последовательности (900), причем цветовые пространства включают в себя цветовое пространство типа RGB и цветовое пространство YCoCg; и
декодируют (1420) закодированные данные, в том числе переключают цветовые пространства пространственным и/или временным образом по меньшей мере между некоторыми элементами видео в пределах последовательности (900) во время декодирования (1420), причем декодирование дополнительно включает в себя предсказание значений отсчетов текущего элемента видео по меньшей мере частично на основе значений отсчетов ранее воссозданного контента,
причем способ отличается тем, что значения отсчетов ранее воссозданного контента находятся в первом цветовом пространстве из упомянутых цветовых пространств, а значения отсчетов текущего элемента находятся во втором другом цветовом пространстве из упомянутых цветовых пространств, и тем, что предсказание включает в себя:
преобразование (1632) значений отсчетов ранее воссозданного контента из первого цветового пространства во второе цветовое пространство;
предсказание (1642) значений отсчетов текущего элемента с использованием преобразованных значений отсчетов ранее воссозданного контента;
воссоздание (1662) значений отсчетов текущего элемента по меньшей мере частично на основе предсказанных значений отсчетов текущего элемента;
преобразование (1672) воссозданных значений отсчетов текущего элемента из второго цветового пространства в первое цветовое пространство; и
сохранение (1670) преобразованных воссозданных значений отсчетов текущего элемента как часть ранее воссозданного контента,
при этом каждый этап (1632, 1672) преобразования содержит для кодирования с потерями использование операций преобразования цветовых пространств для переключения между цветовыми пространствами или для кодирования без потерь - использование операций обратимого преобразования цветовых пространств и увеличенной промежуточной битовой глубины для переключения между цветовыми пространствами.
3. Способ по п. 1 или 2, в котором элементами видео являются блоки преобразования некоторого изображения (1000) последовательности (900).
4. Способ по п. 1 или 2, в котором закодированные данные дополнительно включают в себя информацию, идентифицирующую или определяющую цветовые пространства.
5. Способ по п. 1 или 2, в котором разные цветовые компоненты некоторого элемента из элементов видео имеют разные битовые глубины.
6. Способ по п. 1 или 2, в котором один или более сигналов включают в себя значение флага для некоторого элемента из элементов видео, при этом значение флага указывает выбор между цветовыми пространствами, причем значение флага было энтропийно закодировано с использованием контекстно-адаптивного двоичного арифметического кодирования.
7. Способ по п. 1 или 2, в котором кодирование или декодирование включает в себя удаление блочности ранее воссозданного контента в соответствии с одним или более правилами.
8. Способ по п. 7, в котором удаление блочности включает в себя регулировку силы фильтра удаления блочности в зависимости от того, имеют ли первичные компоненты двух смежных блоков ненулевые остаточные значения.
9. Вычислительное устройство, содержащее:
один или более буферов (321, 322, 32n), выполненных с возможностью хранения видео в последовательности (900); и
видеокодер (500) или кодер изображения, приспособленный для выполнения способа по любому из пп. 1 или 3-8 при их зависимости от упомянутого п. 1.
10. Машиночитаемый носитель (120, 125, 140), хранящий исполняемые компьютером команды для побуждения запрограммированного с их помощью вычислительного устройства по п. 9 выполнять способ по любому из пп. 1 или 3-8 при их зависимости от упомянутого п. 1.
11. Вычислительное устройство, содержащее видеодекодер (600) или декодер изображения, приспособленный для выполнения способа по любому из пп. 2 или 3-8 при их зависимости от упомянутого п. 2.
12. Машиночитаемый носитель (120, 125, 140), хранящий исполняемые компьютером команды для побуждения запрограммированного с их помощью вычислительного устройства по п. 11 выполнять способ по любому из пп. 2 или 3-8 при их зависимости от упомянутого п. 2.
статья D | |||
Marpe et al | |||
Очаг для массовой варки пищи, выпечки хлеба и кипячения воды | 1921 |
|
SU4A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
CN 101076125 A, 21.11.2007 | |||
CN 1921627 A, 28.02.2007 | |||
CN 102572475 A, 11.07.2012 | |||
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ | 2011 |
|
RU2470480C1 |
Авторы
Даты
2018-05-07—Публикация
2014-03-04—Подача