МЕХАНИЗМЫ СИГНАЛИЗАЦИИ ДЛЯ РАВНЫХ ДИАПАЗОНОВ И ДРУГИЕ ПАРАМЕТРЫ DRA ДЛЯ КОДИРОВАНИЯ ВИДЕО
SIGNALIZATION MECHANISMS FOR EQUAL RANGES AND OTHER DRA PARAMETERS FOR CODING A VIDEO

ОБЛАСТЬ ТЕХНИКИ
[0001] Данная заявка имеет отношение к видеосистемам и способам. Например, данная заявка имеет отношение к области кодирования видеосигналов с представлениями расширенного динамического диапазона (HDR) и широкой цветовой гаммы (WCG). Заявка задает сигнализацию и операции, применяемые к видеоданным в некоторых цветовых пространствах для обеспечения более эффективного сжатия видеоданных HDR и WCG. Эффекты сущности изобретения в данной заявке включают в себя повышение эффективности сжатия в гибридных системах кодирования видео, используемых для кодирования видеоданных HDR и WCG.
УРОВЕНЬ ТЕХНИКИ
[0002] Примеры стандартов кодирования видео включают в себя H.261 ITU-T, MPEG-1 Visual ISO/IEC, H.262 ITU-T или MPEG-2 Visual ISO/IEC, H.263 ITU-T, MPEG-4 Visual ISO/IEC и H.264 ITU-T (также известный как MPEG-4 AVC ISO/IEC), включая его расширения Масштабируемого кодирования видео (SVC) и Многовидового кодирования видео (MVC). К тому же Объединенной командой по кодированию видео (JCT-VC) из Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC разработан новый стандарт кодирования видео, а именно Высокоэффективное кодирование видео (HEVC). Последний проект спецификации HEVC доступен под названием "Recommendation ITU-T H.265: High Efficiency Video Coding (HEVC)" по ссылке http://www.itu.int/rec/T-REC-H.265-201504-I/en.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] В различных реализациях предоставляются системы, например устройства кодирования и декодирования, способы и машиночитаемый носитель для кодирования и декодирования видеоданных. Регулировка динамического диапазона может использоваться для исправления искажений, которые могут возникать, когда в видео преобразуется динамический диапазон цветов. В различных примерах регулировка динамического диапазона может выполняться с использованием кусочно-линейной функции, которая в качестве входа берет диапазон значений цвета. Параметры, описывающие кусочно-линейную функцию, можно закодировать в поток битов, и эти параметры могут использоваться декодером для восстановления кусочно-линейной функции.
[0004] Регулировка динамического диапазона может использоваться для повышения эффективности сжатия видеоданных. Например, на устройстве кодирования может выполняться процесс, который преобразует видеоданные в формат, который может больше подходить для сжатия, так что может понадобиться меньше битов для кодирования видеоданных без ущерба для качества декодированных видеоданных. На устройстве декодирования может выполняться обратный процесс, который преобразует данные обратно в тот же формат, что и входные видеоданные.
[0005] Регулировка динамического диапазона дополнительно может использоваться для преобразования видеоданных в представление, которое подходит для конкретного типа дисплея. Характеристики дисплея, для которого можно преобразовать представление, могут включать в себя, например, максимальную светимость дисплея, динамический диапазон дисплея, цветовую гамму дисплея и/или основные цвета, используемые дисплеем. В некоторых примерах регулировка динамического диапазона может использоваться для преобразования видеоданных из SDR в HDR или наоборот, когда это может быть применимо.
[0006] Для сигнализации параметров, которые могут использоваться для регулировки динамического диапазона, можно использовать различные методики. Эти методики могут привести к сокращению количества битов, необходимых для кодирования параметров, в частности, когда диапазон входных значений для кусочно-линейной функции можно разделить на сегменты или разделы с одинаковой длиной. Из этих методик также можно извлечь преимущество, когда диапазон входных значений можно разделить на набор диапазонов с одинаковой длиной и один диапазон с другой длиной.
[0007] В соответствии по меньшей мере с одним примером предоставляется способ кодирования видео, который включает в себя получение видеоданных на устройстве кодирования, причем для части видеокадра видеоданных видеоданные включают в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов, причем множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, и причем первая длина отличается от второй длины. Способ дополнительно включает в себя формирование структуры данных для упомянутых параметров. Способ дополнительно включает в себя установку индикатора в структуре данных для указания, что множество неперекрывающихся диапазонов включает в себя набор диапазонов, имеющих вторую длину каждый. Способ дополнительно включает в себя установку первого значения в структуре данных для указания второй длины. Способ дополнительно включает в себя формирование кодированных видеоданных из видеоданных, причем структура данных включена в кодированные видеоданные.
[0008] В другом примере предоставляется устройство кодирования, которое включает в себя запоминающее устройство, сконфигурированное для хранения видеоданных, и процессор. Процессор сконфигурирован для и может формировать структуру данных для параметров. Процессор сконфигурирован для и может устанавливать индикатор в структуре данных для указания, что множество неперекрывающихся диапазонов включает в себя набор диапазонов, имеющих вторую длину каждый. Процессор сконфигурирован для и может устанавливать первое значение в структуре данных для указания второй длины. Процессор сконфигурирован для и может формировать кодированные видеоданные из видеоданных, причем структура данных включена в кодированные видеоданные.
[0009] В другом примере предоставляется машиночитаемый носитель с сохраненными на нем командами, которые при исполнении процессором побуждают процессор выполнять операции, включающие в себя получение видеоданных на устройстве кодирования, причем для части видеокадра видеоданных видеоданные включают в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов, причем множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, и причем первая длина отличается от второй длины. Команды дополнительно побуждают процессор сформировать структуру данных для упомянутых параметров. Команды дополнительно побуждают процессор установить индикатор в структуре данных для указания, что множество неперекрывающихся диапазонов включает в себя набор диапазонов, имеющих вторую длину каждый. Команды дополнительно побуждают процессор установить первое значение в структуре данных для указания второй длины. Команды дополнительно побуждают процессор сформировать кодированные видеоданные из видеоданных, причем структура данных включена в кодированные видеоданные.
[0010] В другом примере предоставляется устройство, которое включает в себя средство для получения видеоданных, причем для части видеокадра видеоданных видеоданные включают в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов, причем множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, и причем первая длина отличается от второй длины. Устройство дополнительно включает в себя средство для формирования структуры данных для параметров. Устройство дополнительно включает в себя средство для установки индикатора в структуре данных для указания, что множество неперекрывающихся диапазонов включает в себя набор диапазонов, имеющих вторую длину каждый. Устройство дополнительно включает в себя средство для установки первого значения в структуре данных для указания второй длины. Устройство дополнительно включает в себя средство для формирования кодированных видеоданных из видеоданных, причем структура данных включена в кодированные видеоданные.
[0011] В некоторых аспектах первое значение указывает вторую длину как разность между конечным значением и начальным значением каждого из набора диапазонов.
[0012] В некоторых аспектах первое значение указывает вторую длину путем указания разности между фиксированным значением и второй длиной.
[0013] В некоторых аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат установку второго значения в структуре данных для указания первой длины.
[0014] В некоторых аспектах первый диапазон включает в себя первый набор входных значений от начала диапазона входных значений, причем набор диапазонов включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0015] В некоторых аспектах множество неперекрывающихся диапазонов включает в себя второй диапазон с третьей длиной, причем третья длина отличается от второй длины. В этих аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат установку второго индикатора в структуре данных для указания, что множество неперекрывающихся диапазонов включает в себя первый диапазон и второй диапазон. Эти аспекты дополнительно содержат установку третьего значения в структуре данных для указания третьей длины.
[0016] В некоторых аспектах первое значение равно количеству диапазонов в наборе диапазонов, умноженному на вторую длину.
[0017] В некоторых аспектах набор диапазонов включает в себя первый набор входных значений от начала диапазона входных значений, причем первый диапазон включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0018] В некоторых аспектах параметры дополнительно включают в себя масштабные коэффициенты, ассоциированные с каждым из множества неперекрывающихся диапазонов. В этих аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат добавление масштабных коэффициентов в структуру данных.
[0019] В некоторых аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат включение структуры данных в сообщении с дополнительной информацией расширения (SEI), в заголовок секции или набор параметров.
[0020] В соответствии по меньшей мере с одним примером предоставляется способ декодирования видеоданных, который включает в себя определение структуры данных для части видеокадра из кодированных видеоданных, включающей в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов. Способ дополнительно включает в себя определение из индикатора в структуре данных, что множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, причем первая длина отличается от второй длины. Способ дополнительно включает в себя определение второй длины с использованием первого значения в структуре данных. Способ дополнительно включает в себя определение первой длины с использованием информации, предоставляемой структурой данных. Способ дополнительно включает в себя восстановление кусочно-линейной функции с использованием первой длины, второй длины и масштабных коэффициентов, ассоциированных с каждым из множества неперекрывающихся диапазонов, причем масштабные коэффициенты включены в структуру данных. Способ дополнительно включает в себя декодирование части видеокадра. Способ дополнительно включает в себя применение кусочно-линейной функции к цветам в части видеокадра для выполнения регулировки динамического диапазона.
[0021] В другом примере предоставляется устройство декодирования, которое включает в себя запоминающее устройство, сконфигурированное для хранения видеоданных, и процессор. Процессор сконфигурирован для и может определять структуру данных для части видеокадра из кодированных видеоданных, включающую в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов. Процессор сконфигурирован для и может определять из индикатора в структуре данных, что множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, причем первая длина отличается от второй длины. Процессор сконфигурирован для и может определять вторую длину с использованием первого значения в структуре данных. Процессор сконфигурирован для и может определять первую длину с использованием информации, предоставляемой структурой данных. Процессор сконфигурирован для и может восстанавливать кусочно-линейную функцию с использованием первой длины, второй длины и масштабных коэффициентов, ассоциированных с каждым из множества неперекрывающихся диапазонов, причем масштабные коэффициенты включены в структуру данных. Процессор сконфигурирован для и может декодировать часть видеокадра. Процессор сконфигурирован для и может применять кусочно-линейную функцию к цветам в части видеокадра для выполнения регулировки динамического диапазона.
[0022] В другом примере предоставляется машиночитаемый носитель с сохраненными на нем командами, которые при исполнении процессором побуждают процессор выполнять операции, включающие получение кодированных видеоданных. Команды могут дополнительно побуждать процессор определять структуру данных для части видеокадра из кодированных видеоданных, включающую в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов. Команды могут дополнительно побуждать процессор определять из индикатора в структуре данных, что множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, причем первая длина отличается от второй длины. Команды могут дополнительно побуждать процессор определять вторую длину с использованием первого значения в структуре данных. Команды могут дополнительно побуждать процессор определять первую длину с использованием структуры данных. Команды могут дополнительно побуждать процессор восстанавливать кусочно-линейную функцию с использованием первой длины, второй длины и масштабных коэффициентов, ассоциированных с каждым из множества неперекрывающихся диапазонов, причем масштабные коэффициенты включены в структуру данных. Команды могут дополнительно побуждать процессор декодировать часть видеокадра. Команды могут дополнительно побуждать процессор применять кусочно-линейную функцию к цветам в части видеокадра для выполнения регулировки динамического диапазона.
[0023] В другом примере предоставляется устройство, которое включает в себя средство для получения кодированных видеоданных. Устройство дополнительно содержит средство для определения структуры данных для части видеокадра из кодированных видеоданных, включающей в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на множество неперекрывающихся диапазонов. Устройство дополнительно содержит средство для определения из индикатора в структуре данных, что множество неперекрывающихся диапазонов включает в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, причем первая длина отличается от второй длины. Устройство дополнительно содержит средство для определения второй длины с использованием первого значения в структуре данных. Устройство дополнительно содержит средство для определения первой длины с использованием структуры данных. Устройство дополнительно содержит средство для восстановления кусочно-линейной функции с использованием первой длины, второй длины и масштабных коэффициентов, ассоциированных с каждым из множества неперекрывающихся диапазонов, причем масштабные коэффициенты включены в структуру данных. Устройство дополнительно содержит средство для декодирования части видеокадра. Устройство дополнительно содержит средство для применения кусочно-линейной функции к цветам в части видеокадра для выполнения регулировки динамического диапазона.
[0024] В некоторых аспектах первое значение предоставляет вторую длину, причем второе значение в структуре данных предоставляет первую длину.
[0025] В некоторых аспектах первое значение указывает вторую длину путем указания разности между фиксированным значением и второй длиной.
[0026] В некоторых аспектах второе значение в структуре данных предоставляет первую длину. В этих аспектах способы, устройства и машиночитаемый носитель дополнительно содержат определение из индекса, ассоциированного со вторым значением, что первый диапазон включает в себя первый набор входных значений от начала диапазона входных значений, причем набор диапазонов включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0027] В некоторых аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат определение из второго индикатора в структуре данных, что множество неперекрывающихся диапазонов включает в себя второй диапазон с третьей длиной, причем третья длина отличается от второй длины. Эти аспекты дополнительно содержат определение третьей длины из третьего значения в структуре данных.
[0028] В некоторых аспектах первая длина равна общей длине набора диапазонов, причем определение второй длины включает в себя деление первой длины на количество диапазонов в наборе диапазонов.
[0029] В некоторых аспектах описанные выше способы, устройства и машиночитаемый носитель дополнительно содержат определение на основе первого значения, что набор диапазонов включает в себя первый набор входных значений от начала диапазона входных значений, причем первый диапазон включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0030] В некоторых аспектах параметры включены в сообщение с дополнительной информацией расширения (SEI), в заголовок секции или набор параметров.
[0031] Данная сущность изобретения не предназначена для определения ключевых или существенных признаков заявленного предмета изобретения, и также не предназначена для использования отдельно для определения объема заявленного предмета изобретения. Предмет изобретения следует понимать с учетом подходящих частей всего описания данного патента, любого или всех чертежей и каждого пункта формулы изобретения.
[0032] Вышеизложенное вместе с другими признаками и вариантами осуществления станет очевиднее после обращения к нижеследующему описанию изобретения, формуле изобретения и прилагаемым чертежам.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0033] Ниже подробно описываются пояснительные примеры различных реализаций со ссылкой на следующие чертежи:
[0034] Фиг. 1 включает в себя блок-схему, иллюстрирующую систему, которая включает в себя устройство кодирования и устройство декодирования;
[0035] Фиг. 2 иллюстрирует динамический диапазон типичного человеческого зрения по сравнению с динамическим диапазоном различных типов дисплеев;
[0036] Фиг. 3 иллюстрирует пример цветового графика;
[0037] Фиг. 4 включает в себя схему, иллюстрирующую пример процесса для преобразования высокоточных видеоданных линейного RGB с целью кодирования видеоданных;
[0038] Фиг. 5 включает в себя схему, иллюстрирующую пример процесса для восстановления преобразованных видеоданных HDR, полученных из декодированного потока битов, созданного декодером;
[0039] Фиг. 6 включает в себя диаграмму, которая иллюстрирует примеры кривых светимости, созданных передаточными функциями;
[0040] Фиг. 7 включает в себя график, иллюстрирующий пример входных значений в PQ_TF;
[0041] Фиг. 8 включает в себя график, иллюстрирующий пример функции LCS;
[0042] Фиг. 9 включает в себя график, который изображает значение y для диапазона входных значений x в соответствии с кусочно-линейной функцией для регулировки динамического диапазона;
[0043] Фиг. 10 включает в себя график, который изображает значение y для диапазона значений x в соответствии с кусочно-линейной функцией для регулировки динамического диапазона;
[0044] Фиг. 11 включает в себя блок-схему алгоритма, которая иллюстрирует пример процесса для кодирования видеоданных;
[0045] Фиг. 12 включает в себя блок-схему алгоритма, иллюстрирующую пример процесса для декодирования видеоданных;
[0046] Фиг. 13 - блок-схема, иллюстрирующая примерное устройство кодирования; и
[0047] Фиг. 14 – блок-схема, иллюстрирующая примерное устройство декодирования.
ПОДРОБНОЕ ОПИСАНИЕ
[0048] Ниже предоставляются некоторые аспекты и варианты осуществления данного раскрытия изобретения. Некоторые из этих аспектов и вариантов осуществления могут применяться независимо, а некоторые из них могут применяться вместе, что было бы очевидно специалистам в данной области техники. В нижеследующем описании с целью пояснения излагаются характерные подробности, чтобы обеспечить всестороннее понимание вариантов осуществления данной заявки. Однако станет очевидно, что различные варианты осуществления можно применить на практике без этих характерных подробностей. Чертежи и описание не должны быть ограничивающими.
[0049] Последующее описание предоставляет только примеры и не предназначено для ограничения объема, применимости или конфигурации раскрытия изобретения. Точнее, последующее описание примеров предоставит специалистам в данной области техники достаточное описание для реализации примера. Следует понимать, что можно вносить различные изменения в функцию и компоновку элементов без отклонения от сущности и объема заявки, которые изложены в прилагаемой формуле изобретения.
[0050] В нижеследующем описании приводятся характерные подробности для обеспечения всестороннего понимания вариантов осуществления. Тем не менее среднему специалисту в данной области техники будет понятно, что варианты осуществления можно применить на практике без этих характерных подробностей. Например, схемы, системы, сети, процессы и другие компоненты можно показать в виде компонентов на блок-схеме, чтобы не перегружать варианты осуществления ненужными подробностями. В иных случаях хорошо известные схемы, процессы, алгоритмы, структуры и методики можно показать без лишних подробностей, чтобы не затруднять понимание вариантов осуществления.
[0051] Также отметим, что отдельные варианты осуществления можно описать как процесс, который изображается в виде блок-схемы алгоритма, схемы информационных потоков, структурной схемы или блок-схемы. Хотя блок-схема алгоритма может описывать операции как многостадийный процесс, многие операции могут выполняться параллельно или одновременно. К тому же можно перестроить порядок операций. Процесс завершается, когда его операции завершены, но могут быть дополнительные этапы, не включенные в чертеж. Процесс может соответствовать способу, функции, процедуре, стандартной подпрограмме, подпрограмме и т.д. Когда процесс соответствует функции, его завершение может соответствовать возврату функции к вызывающей функции или главной функции.
[0052] Термин "машинно-читаемый носитель" включает в себя, но не ограничивается, переносные или непереносные запоминающие устройства, оптические запоминающие устройства и различные другие носители, допускающие хранение, содержание или перенос команды (команд) и/или данных. Машиночитаемый носитель может включать в себя постоянный носитель, на котором можно хранить данные и который не включает в себя несущие и/или кратковременные электронные сигналы, распространяющиеся по беспроводной связи или по проводным соединениям. Примеры постоянного носителя могут включать в себя магнитный диск или ленту, оптические носители информации, например компакт-диск (CD) или универсальный цифровой диск (DVD), флэш-память или запоминающие устройства, но не ограничиваются ими. Машиночитаемый носитель может хранить код и/или исполняемые машиной команды, которые могут представлять собой процедуру, функцию, подпрограмму, программу, модуль, программный пакет, класс или любое сочетание команд, структур данных или операторов программ. Сегмент кода может быть связан с другим сегментом кода или аппаратной схемой через передачу и/или прием информации, данных, аргументов, параметров или содержимого памяти. Информация, аргументы, параметры, данные и т.д. могут пересылаться, перенаправляться или передаваться через любое подходящее средство, включая разделение памяти, передачу сообщений, эстафетную передачу, передачу по сети или т.п.
[0053] Кроме того, варианты осуществления можно реализовать посредством аппаратных средств, программного обеспечения, микропрограммного обеспечения, промежуточного программного обеспечения, микрокода, языков описания аппаратного обеспечения или любого их сочетания. При реализации в программном обеспечении, микропрограммном обеспечении, промежуточном программном обеспечении или микрокоде программный код или сегменты кода для выполнения необходимых задач (например, компьютерный программный продукт) могут храниться на машиночитаемом носителе. Процессор (процессоры) может выполнять необходимые задачи.
[0054] Поскольку больше устройств и систем предоставляют потребителям возможность получать цифровые видеоданные, становится важнее необходимость эффективных методик кодирования видео. Кодирование видео нужно для снижения требований к хранению и передаче, необходимых для обработки больших объемов данных в цифровых видеоданных. Различные методики кодирования видео могут использоваться для сжатия видеоданных в некий вид, который использует более низкую скорость передачи битов, поддерживая при этом высокое качество видео. При использовании в данном документе "кодирование" может относиться к "кодированию" и "декодированию".
[0055] Преобразование цветового объема является процессом, с помощью которого можно преобразовать диапазон цветов в видео, например, для уменьшения цветового объема с целью кодирования или сжатия видеоданных. Обратный процесс преобразования цветов может восстановить уменьшенный цветовой объем до исходного цветового объема. Преобразование может быть процессом с потерями, то есть в процессе преобразования может быть утрачена некоторая информация о цвете, которую нельзя восстановить, когда применяется обратное преобразование. Из-за потери данных или других проблем на видео могут возникать искажения в цветах, например размытие или несовпадающие цвета.
[0056] Регулировка динамического диапазона (DRA) является процессом для компенсации искажений, которые могут возникать во время преобразования цветового объема. Регулировка динамического диапазона может компенсировать изменения динамического диапазона цветов в видео, которые могут возникать во время преобразования цветового объема. Регулировка динамического диапазона может включать в себя представление динамического диапазона группы видеокадров, одного видеокадра и/или части видеокадра с использованием кусочно-линейной функции. Кодер может сигнализировать параметры, которые описывают кусочно-линейную функцию, в потоке двоичных сигналов (например, кодировать значения параметров и включать кодированные значения в поток битов) вместе с другими данными, которые представляют видеокадры. Тогда декодер может использовать эти параметры для восстановления кусочно-линейной функции и использовать кусочно-линейную функцию для регулировки динамического диапазона у соответствующей группы кадров, кадра и/или части видеокадра.
[0057] Видеоданные можно сжимать для того, чтобы уменьшить количество битов, используемых для представления данных. Сжатие может выполняться так, что компромисс между качеством восстановленного видео и количеством битов, используемых для представления данных, соответствует конкретному применению и/или показателю, определенному как удовлетворительный для потребителей контента. Регулировка динамического диапазона может применяться к видеоданным так, что видеоданные преобразуются в область, которая обеспечивает лучший компромисс между качеством и количеством битов. Обратный процесс может восстановить видеоданные обратно в исходную область.
[0058] Регулировка динамического диапазона также может применяться для преобразования видео, чтобы оно подходило для конкретного типа дисплея. Видеоданные могут кодироваться, как есть либо могут кодироваться после применения регулировки динамического диапазона. Результирующее видео может подходить для конкретного набора (например, Набора A) характеристик дисплея. Соответствующая регулировка динамического диапазона может применяться на декодере для преобразования декодированного видео так, что преобразованное видео подходит для другого набора (например, Набора B) характеристик дисплея. Когда характеристики дисплея соответствуют Набору A, на декодере не нужно выполнять регулировку динамического диапазона. Набор характеристик дисплея может включать в себя, среди прочих примеров, максимальную светимость дисплея, динамический диапазон, цветовую гамму и/или основные цвета дисплея. В некоторых примерах Набор A также может применяться к дисплею SDR (или дисплею HDR), а Набор B может применяться к дисплею HDR (или дисплею SDR). В этих примерах регулировка динамического диапазона отображает контент из SDR в HDR (или HDR в SDR).
[0059] Сигнализация (например, описанная в кодированном потоке двоичных сигналов) кусочно-линейной функции может потребовать некоторого количества битов, что может представлять собой избыточную информацию. Например, один из способов описать кусочно-линейную функцию – разделить диапазон входных значений для функции на сегменты, каждый из которых обладает постоянным наклоном, и в этом случае функцию можно сигнализировать путем включения в кодированные данные длины каждого сегмента и наклона каждого сегмента. Для некоторого контента функция может быть такой, что сегменты могут быть равной длины, и в этом случае компонента длины избыточна. В этом примере эффективность кодирования (например, плотность потока битов) можно повысить путем сигнализации только наклона каждого сегмента. Однако для некоторого контента только часть диапазона можно разделить на сегменты с постоянными наклонами. Например, для некоторого контента диапазон входных значений можно разделить на набор диапазонов с равными длинами и один диапазон с другой длиной. В этом примере одним вариантом для сигнализации в диапазонах является указание длины каждого диапазона и наклона. Это может быть менее эффективно, потому что компонента длины у диапазонов равной длины будет одинаковой и, таким образом, будет сигнализироваться избыточно. Альтернативный вариант – разделить весь диапазон входных значений, включая один диапазон неодинаковой длины, на равные длины и сигнализировать наклон каждого результирующего сегмента. Это также может быть менее эффективным, потому что в этом случае сигнализировалось бы несколько длин для диапазона, которые в противном случае сигнализировались бы с использованием одной длины.
[0060] В различных реализациях предоставляются системы, способы и команды, сохраненные на машиночитаемом носителе, для кодирования кусочно-линейной функции, используемой для регулировки динамического диапазона, и для декодирования параметров, которые можно использовать для восстановления кусочно-линейной функции. Параметры для кусочно-линейной функции можно включать в структуру данных, которая может предоставляться вместе с кодированными видеоданными, к которым применяют те параметры.
[0061] В различных примерах диапазон входных значений для кусочно-линейной функции можно разделить на неперекрывающиеся диапазоны. Когда диапазоны включают в себя набор с одинаковой длиной, в структуре данных можно указать одну длину. Это может уменьшить количество битов, необходимых для кодирования структуры данных, так как отдельные длины диапазонов не нужно включать в структуру данных. Когда диапазоны также включают в себя один или, возможно, два диапазона не такой же длины, как диапазоны, которые обладают одинаковой длиной, структура данных может включать в себя отдельные компоненты для указания одной или обеих этих других длин, либо одну или обе длины можно вывести из параметров, используемых для указания длин диапазонов с одинаковой длиной. Это дает возможность использовать одно значение для указания длин диапазонов с одинаковой длиной без необходимости отдельного указания длин каждого из диапазонов.
[0062] Ссылаясь на фиг. 1, источник 102 видео может предоставлять видеоданные устройству 104 кодирования. Источник 102 видео может быть частью устройства-источника или может быть частью устройства помимо устройства-источника. Источник 102 видео может включать в себя устройство видеозахвата (например, видеокамеру, камерофон, видеотелефон или т.п.), видеоархив, содержащий сохраненное видео, видеосервер или поставщика контента, предоставляющего видеоданные, интерфейс источника видеосигнала, принимающий видео от видеосервера или поставщика контента, систему компьютерной графики для формирования видеоданных компьютерной графики, сочетание таких источников или любой другой подходящий источник видео.
[0063] Видеоданные из источника 102 видео могут включать в себя одно или несколько входных изображений или кадров. Изображение или кадр видео является неподвижным изображением некоторой сцены. Кодирующий механизм 106 (или кодер) в устройстве 104 кодирования кодирует видеоданные для формирования кодированного потока битов видео. В некоторых примерах кодированный поток битов видео (или "поток битов видео", или "поток битов") является последовательностью одной или нескольких кодированных видеопоследовательностей. Кодированная видеопоследовательность (CVS) включает в себя последовательность единиц доступа (AU), начинающихся с AU, которая содержит изображение точки произвольного доступа на базовом слое и с некоторыми свойствами вплоть до, но не включая следующую AU, которая содержит изображение точки произвольного доступа на базовом слое и с некоторыми свойствами. Например, некоторые свойства изображения точки произвольного доступа, которое начинает CVS, могут включать в себя равный 1 признак RASL (например, NoRaslOutputFlag). В противном случае изображение точки произвольного доступа (с равным 0 признаком RASL) не начинает CVS. Единица доступа (AU) включает в себя одно или несколько кодированных изображений и управляющую информацию, соответствующую кодированным изображениям, которые совместно используют одно и то же время вывода. Кодированные секции изображений на уровне потока битов инкапсулируются в единицы данных, называемые единицами слоя абстракции сети (NAL). Например, поток битов видео HEVC может включать в себя одну или несколько CVS, включающих в себя единицы NAL. Каждая из единиц NAL содержит заголовок единицы NAL. В одном примере заголовок однобайтовый для H.264/AVC (за исключением многослойных расширений) и двухбайтовый для HEVC. Синтаксические элементы в заголовке единицы NAL получают предусмотренные биты и поэтому видны всем видам систем и транспортных уровней, например, среди прочих, транспортному потоку, транспортному протоколу реального времени (RTP), формату файла.
[0064] В стандарте HEVC существуют два класса единиц NAL, включая единицы NAL слоя видеокодирования (VCL) и не относящиеся к VCL единицы NAL. Единица NAL VCL включает в себя одну секцию или сегмент секции (описанный ниже) данных кодированных изображений, а не относящаяся к VCL единица NAL включает в себя управляющую информацию, которая относится к одному или нескольким кодированным изображениям. В некоторых случаях единица NAL может называться пакетом. AU HEVC включает в себя единицы NAL VCL, содержащие данные кодированных изображений, и не относящиеся к VCL единицы NAL (если есть), соответствующие данным кодированных изображений.
[0065] Единицы NAL могут содержать последовательность битов, образующих кодированное представление видеоданных (например, кодированный поток битов видео, CVS потока битов или т.п.), например кодированные представления изображений в видео. Кодирующий механизм 106 формирует кодированные представления изображений путем разделения каждого изображения на несколько секций. Секция не зависит от других секций, чтобы информация в секции кодировалась вне зависимости от данных из других секций в том же изображении. Секция включает в себя один или несколько сегментов секции, включая независимый сегмент секции и, при наличии, один или несколько зависимых сегментов секции, которые зависят от предыдущих сегментов секции. Затем секции разделяются на блоки дерева кодирования (CTB) с выборками яркости и выборками цветности. CTB с выборками яркости и один или несколько CTB с выборками цветности, вместе с синтаксисом для этих выборок, называются единицей дерева кодирования (CTU). CTU является базовой единицей обработки для кодирования HEVC. CTU можно разбить на несколько единиц кодирования (CU) с меняющимися размерами. CU содержит массивы выборок яркости и цветности, которые называются блоками кодирования (CB).
[0066] CB яркости и цветности можно разбить дальше на блоки предсказания (PB). PB является блоком выборок компоненты яркости или компоненты цветности, который использует одинаковые параметры движения для внешнего предсказания или предсказания копии внутри блока (когда доступно либо используется). PB яркости и один или несколько PB цветности вместе с ассоциированным синтаксисом образуют единицу предсказания (PU). Для внешнего предсказания набор параметров движения (например, один или несколько векторов движения, опорных индексов или т. п.) сигнализируется в потоке двоичных сигналов для каждой PU и используется для внешнего предсказания PB яркости и одного или нескольких PB цветности. Параметры движения также могут называться информацией о движении. CB также можно разделить на один или несколько блоков преобразования (TB). TB представляет собой квадратный блок выборок цветовой компоненты, к которому применяется одно и то же двумерное преобразование для кодирования остаточного сигнала предсказания. Единица преобразования (TU) представляет собой TB выборок яркости и цветности и соответствующие синтаксические элементы.
[0067] Размер CU соответствует размеру режима кодирования и может быть квадратным. Например, размер CU может быть равен 8x8 выборок, 16x16 выборок, 32x32 выборок, 64x64 выборок или любому другому подходящему размеру вплоть до размера соответствующей CTU. Фраза "N x N" используется в этом документе для указания пиксельных размеров видеоблока в виде вертикальных и горизонтальных размеров (например, 8 пикселей x 8 пикселей). Пиксели в блоке могут располагаться в строках и столбцах. В некоторых примерах блоки могут не содержать такого же числа пикселей в горизонтальном направлении, как в вертикальном направлении. Синтаксические данные, ассоциированные с CU, могут описывать, например, разделение CU на одну или несколько PU. Режимы разделения могут отличаться в зависимости от того, является ли CU кодированной в режиме внутреннего предсказания или кодированной в режиме внешнего предсказания. PU можно разделять для получения неквадратной формы. Синтаксические данные, ассоциированные с CU, также могут описывать, например, разделение CU на одну или несколько TU в соответствии с CTU. TU может быть квадратной или неквадратной.
[0068] В соответствии со стандартом HEVC преобразования могут выполняться с использованием единиц преобразования (TU). TU могут меняться для разных CU. Размер TU может основываться на размере PU в данной CU. TU могут быть такого же размера или меньше, чем PU. В некоторых примерах остаточные выборки, соответствующие CU, можно подразделить на меньшие единицы, используя структуру квадродерева, известную как остаточное квадродерево (RQT). Листы RQT могут соответствовать TU. Ассоциированные с TU значения разности пикселей можно преобразовать для создания коэффициентов преобразования. Затем коэффициенты преобразования можно квантовать с помощью кодирующего механизма 106.
[0069] Как только изображения в видеоданных разделяются на CU, кодирующий механизм 106 предсказывает каждую PU с использованием режима предсказания. Затем единицу предсказания или блок предсказания вычитают из исходных видеоданных для получения остатков (описаны ниже). Для каждой CU режим предсказания можно сигнализировать внутри потока битов с использованием синтаксических данных. Режим предсказания может включать в себя внутреннее предсказание (или предсказание внутри изображения) либо внешнее предсказание (или предсказание между изображениями). Внутреннее предсказание использует корреляцию между соседними в пространственном отношении выборками в пределах изображения. Например, с использованием внутреннего предсказания каждая PU предсказывается из данных соседнего изображения в том же изображении, используя, например, предсказание DC для нахождения среднего значения для PU, плоскостное предсказание для подгонки плоской поверхности к PU, предсказание направления для экстраполяции от соседних данных или любые другие подходящие типы предсказания. Внешнее предсказание использует временную корреляцию между изображениями, чтобы вывести предсказание с компенсированным движением для блока выборок изображения. Например, с использованием внешнего предсказания каждая PU предсказывается с использованием предсказания с компенсацией движения из данных изображения в одном или нескольких эталонных изображениях (до или после текущего изображения в порядке вывода). Решение о том, кодировать ли некую область изображения с использованием предсказания между изображениями или внутри изображения, может приниматься, например, на уровне CU.
[0070] В некоторых примерах одной или нескольким секциям изображения назначается тип секции. Типы секций включают в себя I-секцию, P-секцию и B-секцию. I-секция (внутрикадровая, независимо декодируемая) является секцией изображения, которая кодируется только с помощью внутреннего предсказания и поэтому декодируется независимо, поскольку I-секция требует только данных внутри кадра для предсказания любой единицы предсказания или блока предсказания в секции. P-секция (однонаправленные предсказанные кадры) является секцией изображения, которую можно кодировать с помощью внутреннего предсказания и с помощью однонаправленного внешнего предсказания. Каждая единица предсказания или блок предсказания в P-секции кодируется с помощью либо внутреннего предсказания, либо внешнего предсказания. Когда применяется внешнее предсказание, единица предсказания или блок предсказания предсказывается только по одному эталонному изображению, и поэтому эталонные выборки берутся только из одной эталонной области одного кадра. B-секция (двунаправленные предсказывающие кадры) является секцией изображения, которую можно кодировать с помощью внутреннего предсказания и внешнего предсказания (например, двунаправленное предсказание либо однонаправленное предсказание). Единицу предсказания или блок предсказания в B-секции можно предсказывать двунаправленно из двух эталонных изображений, причем каждое изображение вносит одну эталонную область, и наборы выборок двух эталонных областей взвешиваются (например, с равными весами или с разными весами) для создания сигнала предсказания двунаправленного предсказанного блока. Как объяснялось выше, секции одного изображения кодируются независимо. В некоторых случаях изображение может кодироваться как одна секция.
[0071] PU может включать в себя данные (например, параметры движения или другие подходящие данные), связанные с процессом предсказания. Например, когда PU кодируется с использованием внутреннего предсказания, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU кодируется с использованием внешнего предсказания, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальную составляющую вектора движения (Dc), вертикальную составляющую вектора движения (Ay), разрешение для вектора движения (например, целочисленная точность, точность в одну четверть пикселя или точность в одну восьмую пикселя), эталонное изображение, на которое указывает вектор движения, опорный индекс, список эталонных изображений (например, Список 0, Список 1 или Список C) для вектора движения или любое их сочетание.
[0072] Затем устройство 104 кодирования может выполнять преобразование и квантование. Например, кодирующий механизм 106 после предсказания может вычислять остаточные значения, соответствующие PU. Остаточные значения могут содержать значения разности пикселей между текущим кодируемым блоком пикселей (PU) и блоком предсказания, используемым для предсказания текущего блока (например, предсказанной версией текущего блока). Например, после формирования блока предсказания (например, в результате внешнего предсказания или внутреннего предсказания) кодирующий механизм 106 может формировать остаточный блок путем вычитания из текущего блока блока предсказания, созданного единицей предсказания. Остаточный блок включает в себя набор значений разности пикселей, которые количественно выражают разности между значениями пикселей текущего блока и значениями пикселей блока предсказания. В некоторых примерах остаточный блок можно представить в формате двумерного блока (например, двумерная матрица или массив значений пикселей). В таких примерах остаточный блок является двумерным представлением значений пикселей.
[0073] Любые остаточные данные, которые могут остаться после предсказания, преобразуются с использованием блочного преобразования, которое может основываться на дискретном косинусном преобразовании, дискретном синусном преобразовании, целочисленном преобразовании, вейвлет-преобразовании, другой подходящей функции преобразования или любом их сочетании. В некоторых случаях к остаточным данным в каждой CU может применяться одно или несколько блочных преобразований (например, с размерами 32x32, 16x16, 8x8, 4x4 или т.п.). В некоторых примерах TU может использоваться для процессов преобразования и квантования, реализованных кодирующим механизмом 106. Заданная CU с одной или несколькими PU также может включать в себя одну или несколько TU. Как подробнее описано ниже, остаточные значения можно преобразовать в коэффициенты преобразования с использованием блочных преобразований, а затем можно квантовать и сканировать с использованием TU для создания упорядоченных коэффициентов преобразования для энтропийного кодирования.
[0074] В некоторых примерах после кодирования с внутренним предсказанием или внешним предсказанием, использующего PU в CU, кодирующий механизм 106 может вычислить остаточные данные для TU в CU. PU могут содержать данные пикселей в пространственной области (или области пикселей). TU может содержать коэффициенты в области преобразования после применения блочного преобразования. Как отмечалось ранее, остаточные данные могут соответствовать значениям разности пикселей между пикселями некодированного изображения и значениями предсказания, соответствующими PU. Кодирующий механизм 106 может образовать TU, включающие в себя остаточные данные для CU, а затем может преобразовать TU для создания коэффициентов преобразования для CU.
[0075] Кодирующий механизм 106 может выполнять квантование коэффициентов преобразования. Квантование обеспечивает дополнительное сжатие путем квантования коэффициентов преобразования, чтобы уменьшить объем данных, используемый для представления коэффициентов. Например, квантование может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. В одном примере во время квантования коэффициент с n-битовым значением можно округлить в меньшую сторону до m-битового значения, причем n больше m.
[0076] Как только выполняется квантование, кодированный поток битов видео включает в себя квантованные коэффициенты преобразования, информацию предсказания (например, режимы предсказания, векторы движения, векторы блоков или т.п.), информацию разделения и любые другие подходящие данные, например другие синтаксические данные. Затем разные элементы кодированного потока битов видео можно энтропийно кодировать с помощью кодирующего механизма 106. В некоторых примерах кодирующий механизм 106 может использовать предопределенный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования для создания упорядоченного вектора, который можно энтропийно кодировать. В некоторых примерах кодирующий механизм 106 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для образования вектора (например, одномерного вектора) кодирующий механизм 106 может энтропийно кодировать тот вектор. Например, кодирующий механизм 106 может использовать контекстно-адаптивное кодирование с переменной длиной, контекстно-адаптивный двоичное арифметическое кодирование, синтаксическое контекстно-адаптивное двоичное арифметическое кодирование, энтропийное кодирование с разбиением на интервалы вероятности или другую подходящую методику энтропийного кодирования.
[0077] Как описывалось ранее, поток битов HEVC включает в себя группу единиц NAL, включающую в себя единицы NAL VCL и не относящиеся к VCL единицы NAL. Единицы NAL VCL включают в себя данные кодированных изображений, образующие кодированный поток битов видео. Например, в единицах NAL VCL присутствует последовательность битов, образующих кодированный поток битов видео. Не относящиеся к VCL единицы NAL в дополнение к иной информации могут содержать наборы параметров с высокоуровневой информацией, относящейся к кодированному потоку двоичных сигналов видео. Например, набор параметров может включать в себя набор параметров видео (VPS), набор параметров последовательности (SPS) и набор параметров изображения (PPS). Примеры целей наборов параметров включают в себя эффективность скорости передачи битов, устойчивость к ошибкам и предоставление интерфейсов системного уровня. Каждая секция ссылается на один активный PPS, SPS и VPS для доступа к информации, которую устройство 112 декодирования может использовать для декодирования той секции. Для каждого набора параметров можно кодировать идентификатор (ID), включая ID VPS, ID SPS и ID PPS. SPS включает в себя ID SPS и ID VPS. PPS включает в себя ID PPS и ID SPS. Каждый заголовок секции включает в себя ID PPS. Используя те ID, можно идентифицировать активные наборы параметров для данной секции.
[0078] PPS включает в себя информацию, которая применяется ко всем секциям в данном изображении. Благодаря этому все секции в изображении ссылаются на один и тот же PPS. Секции в разных изображениях также могут ссылаться на один и тот же PPS. SPS включает в себя информацию, которая применяется ко всем изображениям в упомянутой же кодированной видеопоследовательности (CVS) или потоке двоичных сигналов. Как описывалось ранее, кодированная видеопоследовательность является последовательностью единиц доступа (AU), которая начинается с изображения точки произвольного доступа (например, изображения мгновенного обращения декодирования (IDR) или изображения доступа с разомкнутым звеном (BLA), или другого подходящего изображения точки произвольного доступа) на базовом слое и с некоторыми свойствами (описаны выше) вплоть до, но не включая следующую AU, которая содержит изображение точки произвольного доступа на базовом слое и с некоторыми свойствами (либо конец потока битов). Информация в SPS может не меняться от изображения к изображению в рамках кодированной видеопоследовательности. Изображения в кодированной видеопоследовательности могут использовать один и тот же SPS. VPS включает в себя информацию, которая применяется ко всем слоям в кодированной видеопоследовательности или потоке двоичных сигналов. VPS включает в себя синтаксическую структуру с синтаксическими элементами, которые применяются ко всем кодированным видеопоследовательностям. В некоторых примерах VPS, SPS или PPS могут передаваться внутри полосы с кодированным потоком двоичных сигналов. В некоторых примерах VPS, SPS или PPS могут передаваться вне полосы в отдельной передаче от единиц NAL, содержащих кодированные видеоданные.
[0079] Поток битов видео также может включать в себя сообщения с дополнительной информацией расширения (SEI). Например, единица NAL SEI может быть частью потока битов видео. В некоторых примерах сообщение SEI можно сигнализировать отдельно от потока битов видео. В некоторых случаях сообщение SEI может содержать информацию, которая не нужна в процессе декодирования. Например, информация в сообщении SEI может быть не существенной для декодера, чтобы декодировать видеоизображения в потоке двоичных сигналов, но декодер может использовать ту информацию для улучшения отображения или обработки изображений (например, декодированного вывода). Информация в сообщении SEI может быть вложенными метаданными. В одном пояснительном примере информация в сообщении SEI могла бы использоваться объектами на стороне декодера для улучшения различимости контента. В некоторых случаях некоторые стандарты применения могут обязать наличие таких сообщений SEI в потоке двоичных сигналов, чтобы повышение качества можно было донести до всех устройств, которые соответствуют стандарту применения (например, перенос сообщения SEI с упаковкой кадров для совместимого с кадром плоско-стереоскопического формата видео 3DTV, причем сообщение SEI переносится для каждого кадра видео, обработка сообщения SEI точки восстановления, использование сообщения SEI прямоугольника пансканирования в DVB, в дополнение ко многим другим примерам).
TM
TM
[0080] Выход 110 устройства 104 кодирования может отправлять единицы NAL, составляющие кодированные видеоданные, по линии 120 связи устройству 112 декодирования в приемном устройстве. Вход 114 устройства 112 декодирования может принимать единицы NAL. Линия 120 связи может включать в себя канал, предоставленный беспроводной сетью, проводной сетью или сочетанием проводной и беспроводной сети. Беспроводная сеть может включать в себя любой беспроводной интерфейс или сочетание беспроводных интерфейсов и может включать в себя любую подходящую беспроводную сеть (например, Интернет или другую глобальную сеть, пакетную сеть, WiFi, радиочастотную (РЧ) сеть, UWB, WiFi-Direct, сотовую сеть, Систему долгосрочного развития (LTE), WiMax или т.п.). Проводная сеть может включать в себя любой проводной интерфейс (например, оптоволокно, Ethernet, Ethernet по линиям электросети, Ethernet по коаксиальному кабелю, цифровая сигнальная линия (DSL) или т.п.). Проводные и/или беспроводные сети можно реализовать с использованием различного оборудования, например, базовых станций, маршрутизаторов, точек доступа, мостов, шлюзов, коммутаторов или т.п. Кодированные видеоданные могут модулироваться в соответствии со стандартом связи, например протоколом беспроводной связи, и передаваться приемному устройству.
[0081] В некоторых примерах устройство 104 кодирования может хранить кодированные видеоданные в хранилище 108. Выход 110 может извлекать кодированные видеоданные из кодирующего механизма 106 или из хранилища 108. Хранилище 108 может включать в себя любой из широкого спектра распределенных или доступных локально носителей информации. Например, хранилище 108 может включать в себя жесткий диск, хранилище на дисках, флэш-память, энергозависимое или энергонезависимое запоминающее устройство или любые другие подходящие цифровые носители информации для хранения кодированных видеоданных.
[0082] Вход 114 устройства 112 декодирования принимает данные кодированного потока битов видео и может предоставить данные потока битов видео декодирующему механизму 116 или хранилищу 118 для последующего использования декодирующим механизмом 116. Декодирующий механизм 116 может декодировать данные кодированного потока битов видео путем энтропийного декодирования (например, с использованием энтропийного декодера) и извлечения элементов из одной или нескольких кодированных видеопоследовательностей, составляющих кодированные видеоданные. Затем декодирующий механизм 116 может изменить масштаб и выполнить обратное преобразование над данными кодированного потока битов видео. Остаточные данные затем передаются на этап предсказания в декодирующем механизме 116. Затем декодирующий механизм 116 предсказывает блок пикселей (например, PU). В некоторых примерах предсказание добавляется к выходу обратного преобразования (остаточные данные).
[0083] Устройство 112 декодирования может вывести декодированное видео в видеоустройство-адресат, которое может включать в себя дисплей или другое устройство вывода для отображения декодированных видеоданных потребителю контента. В некоторых аспектах видеоустройство-адресат 122 может быть частью приемного устройства, которое включает в себя устройство 112 декодирования. В некоторых аспектах видеоустройство-адресат 122 может быть частью отдельного устройства от приемного устройства.
[0084] В некоторых примерах устройство 104 кодирования видео и/или устройство 112 декодирования видео можно объединить с устройством кодирования аудио и устройством декодирования аудио соответственно. Устройство 104 кодирования видео и/или устройство 112 декодирования видео также может включать в себя другие аппаратные средства или программное обеспечение, необходимые для реализации описанных выше методик кодирования, например, один или несколько микропроцессоров, цифровые процессоры сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретную логику, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые их сочетания. Устройство 104 кодирования видео и устройство 112 декодирования видео можно объединить как часть объединенного кодера/декодера (кодека) в соответствующем устройстве. Пример характерных подробностей устройства 104 кодирования описывается ниже со ссылкой на фиг. 13. Пример характерных подробностей устройства 112 декодирования описывается ниже со ссылкой на фиг. 14.
[0085] Расширения к стандарту HEVC включают в себя расширение Многовидового кодирования видео, называемое MV-HEVC, и расширение Масштабируемого кодирования видео, называемое SHVC. Расширения MV-HEVC и SHVC совместно используют понятие многослойного кодирования, при этом в кодированный поток битов видео включены разные слои. Каждый слой в кодированной видеопоследовательности адресуется с помощью уникального идентификатора слоя (ID). ID слоя может присутствовать в заголовке единицы NAL для идентификации слоя, с которым ассоциируется единица NAL. В MV-HEVC разные слои обычно представляют разные виды одной и той же сцены в потоке двоичных сигналов видео. В SHVC предоставляются разные масштабируемые слои, которые представляют поток битов видео в разных пространственных разрешениях (или разрешении изображения) либо в разных точностях восстановления. Масштабируемые слои могут включать в себя базовый слой (с ID слоя=0) и один или несколько слоев расширения (с ID слоя=1, 2, … n). Базовый слой может соответствовать профилю из первой версии HEVC и представляет собой наименьший доступный слой в потоке двоичных сигналов. У слоев расширения по сравнению с базовым слоем увеличенное пространственное разрешение, временное разрешение или частота кадров, и/или точность восстановления (или качество). Слои расширения упорядочены иерархически и могут зависеть (или не зависеть) от нижних слоев. В некоторых примерах разные слои можно кодировать с использованием одного стандартного кодека (например, все слои кодируются с использованием HEVC, SHVC или другого стандарта кодирования). В некоторых примерах разные слои можно кодировать с использованием многостандартного кодека. Например, базовый слой можно кодировать с использованием AVC, тогда как один или несколько слоев расширения можно кодировать с использованием расширений SHVC и/или MV-HEVC к стандарту HEVC.
[0086] Также заданы различные стандарты, которые описывают цвета в захваченном видео, включая, в том числе, коэффициент контрастности (например, яркость или темноту пикселей на видео) и точность цвета. Параметры цвета могут использоваться, например, устройством отображения, которое способно использовать параметры цвета для определения того, как отображать пиксели на видео. Один примерный стандарт от Международного союза электросвязи (ITU), Рекомендация BT.709 ITU-R (в этом документе называемая "BT.709"), задает стандарт для телевидения высокой четкости (HDTV). Заданные в BT.709 параметры цвета обычно называются стандартным динамическим диапазоном (SDR) и стандартной цветовой гаммой. Другим примерным стандартом является Рекомендация BT.2020 ITU-R (в этом документе называемая "BT.2020"), которая задает стандарт для телевидения сверхвысокой четкости (UHDTV). Заданные в BT.2020 параметры цвета обычно называются расширенным динамическим диапазоном (HDR) и широкой цветовой гаммой (WCG). Динамический диапазон и цветовая гамма в этом документе вместе называются цветовым объемом.
[0087] Ожидается, что видеоприложения следующего поколения будут работать с видеоданными, представляющими захваченное окружение с HDR и WCG. Параметры используемого динамического диапазона и цветовой гаммы являются двумя независимыми атрибутами видеоконтента, и их спецификация для целей цифрового телевидения и мультимедийных услуг задается несколькими международными стандартами. Например, как отмечалось выше, BT.709 задает параметры для HDTV, например, SDR и стандартную цветовую гамму, а BT.2020 задает параметры UHDTV, например, HDR и широкую цветовую гамму. Также есть и другие документы от организаций-разработчиков стандартов, задающие эти атрибуты в других системах, например, цветовая гамма P3 задается в SMPTE-231-2, а некоторые параметры HDR задаются в STMPTE-2084.
[0088] Динамический диапазон можно задать как соотношение между минимальной и максимальной яркостью видеосигнала. Динамический диапазон также можно измерить в единицах диафрагмы. Например, в камерах единица диафрагмы равна отношению фокусного расстояния объектива к диаметру диафрагмы камеры. Одна единица диафрагмы может соответствовать удваиванию динамического диапазона видеосигнала. В качестве примера MPEG задает контент HDR как контент, который демонстрирует изменения яркости более чем 16 единиц диафрагмы. В некоторых примерах динамический диапазон между 10 и 16 единицами диафрагмы считается промежуточным динамическим диапазоном, хотя в других примерах это считается динамическим диапазоном HDR. Зрительная система человека допускает восприятие гораздо большего динамического диапазона, однако зрительная система человека включает в себя механизм адаптации для сужения одновременного диапазона.
2
[0089] Фиг. 2 иллюстрирует динамический диапазон типичного человеческого зрения 202 по сравнению с динамическим диапазоном различных типов дисплеев. Фиг. 2 иллюстрирует диапазон 200 светимости на логарифмической шкале нитов (например, на логарифмической шкале кд/м). В качестве примера свет звезд приблизительно составляет 0,0001 нита, или -4 в проиллюстрированном диапазоне 200 светимости, а лунный свет составляет около 0,01 нита (-2 в диапазоне 200 светимости). Типичное внутреннее освещение может быть между 1 и 100 нитами (0 и 2 в диапазоне 200 светимости). Солнечный свет может быть между 10000 нитами и 1000000 нитами (4 и 6 в диапазоне 200 светимости).
[0090] Человеческое зрение 202 допускает восприятие причем-то между менее 0,0001 нита и более 1000000 нитов, при этом точный диапазон меняется от человека к человеку. Динамический диапазон человеческого зрения 202 включает в себя одновременный динамический диапазон 204. Одновременный динамический диапазон 204 задается как соотношение между наибольшим и наименьшим значениями светимости, при которых можно обнаружить объекты, пока глаз полностью адаптирован. Полная адаптация происходит, когда глаз находится в устойчивом состоянии после приспособления к текущему окружающему свету или уровню светимости. Хотя в примере из фиг. 2 одновременный динамический диапазон 204 иллюстрируется между примерно 0,1 нита и примерно 3200 нитов, одновременный динамический диапазон 204 можно центрировать в других точках диапазона 200 светимости, и ширина может меняться при разных уровнях светимости. Более того, одновременный динамический диапазон 204 может меняться от одного человека к другому.
[0091] Фиг. 2 дополнительно иллюстрирует приблизительный динамический диапазон для дисплеев 206 SDR и дисплея 208 HDR. Дисплеи SDR включают в себя мониторы, телевизоры, экраны планшетов, экраны смартфонов и другие устройства отображения, которые допускают отображение контента SDR. Дисплеи HDR включают в себя, например, телевизоры сверхвысокой четкости и другие устройства отображения, которые допускают отображение контента HDR.
[0092] BT.709 предусматривает, что динамический диапазон дисплеев 206 SDR может быть от 0,1 до 100 нитов, или около 10 единиц диафрагмы, что значительно меньше динамического диапазона человеческого зрения 202. Динамический диапазон дисплеев 206 SDR также меньше проиллюстрированного одновременного динамического диапазона 204. Некоторые видеоприложения и услуги нормируются по Rec.709 и обеспечивают SDR, и обычно поддерживают диапазон яркости (или светимости) примерно от 0,1 до 100 нитов. Дисплеи SDR также неспособны точно воспроизводить ночные условия (например, свет звезд примерно с 0,0001 нита) или яркие внешние условия (например, около 1000000 нитов). Однако некоторые дисплеи SDR могут поддерживать максимальную яркость более 100 нитов и могут отображать контент SDR в диапазоне от 0,1 до 100 нитов.
[0093] Предполагается, что видеоуслуги следующего поколения обеспечат динамический диапазон вплоть до 16 единиц диафрагмы. Дисплеи HDR могут охватывать более широкий динамический диапазон, нежели дисплеи SDR. Например, у дисплеев HDR может быть динамический диапазон примерно от 0,01 нита до 5600 нитов (или 16 единиц диафрагмы). Хотя дисплеи HDR также не охватывают динамический диапазон человеческого зрения, дисплеи HDR могут приблизиться к охвату одновременного динамического диапазона 204 среднестатистического человека. Спецификации параметров динамического диапазона для дисплеев HDR можно найти, например, в BT.2020 и ST 2084.
[0094] Цветовая гамма описывает диапазон цветов, которые доступны на конкретном устройстве, например, дисплее или принтере. Цветовая гамма также может называться цветовым измерением. Фиг. 3 иллюстрирует пример цветового графика 300 с наложенным треугольником, представляющим цветовую гамму 304 SDR, и треугольником, представляющим цветовую гамму 302 HDR. Значения на кривой 306 на графике 300 являются спектром цветов; то есть цветами, вызванными длиной волны света в видимой части спектра. Цвета под кривой 306 относятся к неспектральным: прямая линия между нижними точками кривой 306 называется линией пурпурного, а цвета внутри графика 300 являются ненасыщенными цветами, которые представляют различные смеси спектрального цвета или пурпурного цвета с белым. Точка с меткой D65 указывает местоположение белого для проиллюстрированной спектральной кривой 306. Кривая 306 также может называться линией спектральных цветностей, представляющей пределы естественных цветов.
[0095] Треугольник, представляющий цветовую гамму 304 SDR, основывается на красном, зеленом и синем основных цветах, которые предусмотрены BT.709. Цветовая гамма 304 SDR является цветовым пространством, используемым HDTV, трансляциями SDR и другим цифровым мультимедийным контентом.
[0096] Треугольник, представляющий широкую цветовую гамму 302 HDR, основывается на красном, зеленом и синем основных цветах, которые предусмотрены BT.2020. Как проиллюстрировано фиг. 3, цветовая гамма 302 HDR обеспечивает примерно на 70% больше цветов, чем цветовая гамма 304 SDR. Цветовые гаммы, заданные другими стандартами, например P3 от Digital Cinema Initiatives (DCI) (называемый DCI-P3), предоставляют некоторые цвета вне цветовой гаммы 302 HDR, но не полностью содержат цветовую гамму 302 HDR. DCI-P3 используется для цифровой проекции фильмов.
[0097] Таблица 1 иллюстрирует примеры параметров колориметрии для выбранных цветовых пространств, включая предусмотренные в BT.709, BT.2020 и DCI-P3. Для каждого цветового пространства Таблица 1 дает координату x и y для цветового графика.
Таблица 1: параметры колориметрии для выбранных цветовых пространств
<b>Цветовое пространство</b>
<b>Точка белого</b>
<b>Основные цвета</b>
<b>x</b><sub><b>w</b></sub>
<b>y</b><sub><b>w</b></sub>
<b>x</b><sub><b>r</b></sub>
<b>y</b><sub><b>r</b></sub>
<b>x</b><sub><b>g</b></sub>
<b>y</b><sub><b>g</b></sub>
<b>x</b><sub><b>b</b></sub>
<b>y</b><sub><b>b</b></sub>
DCI-P3
0,314
0,351
0,68
0,32
0,265
0,69
0,15
0,06
BT.709
0,3127
0,329
0,64
0,33
0,3
0,6
0,15
0,06
BT.2020
0,3127
0,329
0,708
0,292
0,170
0,797
0,131
0,046
[0098] Видеоданные с большим цветовым объемом (например, видеоданные с расширенным динамическим диапазоном и широкой цветовой гаммой) можно получать и хранить с высокой степенью точности по каждой компоненте. Например, можно использовать значения с плавающей запятой для представления значений яркости и цветности каждого пикселя. В качестве дополнительного примера может использоваться формат цветности 4:4:4, причем каждая из компонент яркости, цветности синего и цветности красного обладает одинаковый частотой выборки. Запись "4:4:4" также может использоваться для отсылки к цветовому формату красный-зеленый-синий (RGB). В качестве дополнительного примера можно использовать очень широкое цветовое пространство, например 1931 XYZ, заданное Международной комиссией по освещению (CIE). Видеоданные, представленные с высокой степенью точности, математически могут быть почти без потерь. Однако высокоточное представление может включать в себя избыточности и может быть неоптимальным для сжатия. Таким образом, часто используется формат с меньшей точностью, который предназначен для отображения цветового объема, который может увидеть человеческий глаз.
[0099] Фиг. 4 включает в себя схему, иллюстрирующую пример процесса 400 для преобразования высокоточных видеоданных 402 линейного RGB с целью кодирования видеоданных. Преобразованные данные HDR могут обладать меньшей точностью и могут сжиматься легче. Примерный процесс 400 включает в себя нелинейную передаточную функцию 404, которая может уплотнять динамический диапазон, преобразование 406 цветов, которое может создавать более плотное или надежное цветовое пространство, и функцию квантования 408, которая может преобразовывать представления с плавающей запятой в целочисленные представления. Выход функции квантование 408 может быть входом в кодер 410, который может сжимать или кодировать данные для создания кодированного потока битов. Кодер 410 может использовать, например, HEVC AVC или стандарты VP8/VP9/VP10. Поток битов можно сохранить и/или передать.
[0100] В различных примерах данные линейного RGB 402, которые могут обладать расширенным динамическим диапазоном и представлением с плавающей запятой, можно уплотнять с использованием нелинейной передаточной функции 404. Примером нелинейной передаточной функции 404 является квантователь восприятия, заданный в ST 2084. Выход передаточной функции 404 можно преобразовать в целевое цветовое пространство с помощью преобразования 406 цветов. Целевое цветовое пространство может быть пространством, более подходящим для сжатия, например YCbCr. Затем можно использовать квантование 408 для преобразования данных в целочисленное представление. Выход квантования 408 можно предоставить кодеру 410, который может создать из данных кодированный поток битов.
[0101] Фиг. 5 включает в себя схему, иллюстрирующую пример процесса 500 для восстановления преобразованных видеоданных HDR, полученных из декодированного потока битов, созданного декодером 522. Несжатый или декодированный видеосигнал может передаваться конечному бытовому прибору с использованием, например, высокоскоростного цифрового интерфейса. Примеры бытовых электронных приборов и передающих сред включают в себя цифровые телевизоры, цифровой кабель, спутниковые или наземные ТВ-приставки, мобильные устройства и связанные периферийные устройства, например проигрыватели и/или устройства записи универсальных цифровых дисков (DVD), и другие связанные устройства декодирования и бытовые приборы. В некоторых примерах декодер 522 может выполнять этапы процесса 500. В некоторых примерах конечный бытовой электронный прибор может выполнять этапы процесса 500.
[0102] Процесс 500 может воздействовать на видеоданные HDR, которые были преобразованы в соответствии с процессом 400 из фиг. 4, и может создавать высокоточные видеоданные линейного RGB 402, которые входили в процесс 400. Как проиллюстрировано на фиг. 5, процесс 500 включает в себя обратное квантование 524 (например, для преобразования целочисленных представлений в представления с плавающей запятой), обратное преобразование 526 цветов и обратную передаточную функцию 528.
[0103] Обратное квантование 524 из фиг. 5 включает в себя выполнение инверсии вычислений, выполненных для квантования 408 из фиг. 4. Аналогичным образом обратное преобразование 526 цветов включает в себя выполнение инверсии вычислений, выполненных для преобразования 406 цветов, и обратная передаточная функция 528 включает в себя выполнение инверсии вычислений, выполненных для передаточной функции 402. Для ясности нижеследующее обсуждение предоставляет примеры передаточной функции 404, преобразования 406 цветов и квантования 408, понимая, что эти примеры также применяются к обратной передаточной функции 528, обратному преобразованию 526 цветов и обратному квантованию 524, если не предусмотрено иное. Более того, порядок этапов в примерных процессах 400 и 500 показывает порядок, в котором могут выполняться эти этапы. В других примерах этапы могут происходить в другом порядке. Например, преобразование 406 цветов может предшествовать передаточной функции 404. В другом примере обратное преобразование 526 цветов может выполняться после обратной передаточной функции 5284. В других примерах также может происходить дополнительная обработка. Например, к цветовым компонентам может применяться пространственная субдискретизация.
[0104] Передаточная функция может использоваться для отображения цифровых значений в изображении в световую энергию и обратно. Световая энергия, которая также называется оптической мощностью, является степенью, с которой объектив, зеркало или другая оптическая система сводит или разводит свет. Передаточная функция может применяться к данным в изображении для уплотнения динамического диапазона. Уплотнение динамического диапазона может позволить видеоконтенту представлять данные с помощью ограниченного количества битов. Передаточная функция может быть одномерной, нелинейной функцией, которая может либо отражать инверсию электрооптической передаточной функции (EOTF) у дисплея конечного потребителя (например, как задано для SDR в BT.709), либо приблизительно выражать восприятие изменений яркости зрительной системой человека (например, как предусмотрено для HDR с помощью передаточной функции квантователя восприятия (PQ), заданной в ST 2084). Электрооптическая передаточная функция описывает то, как превратить в видимый свет цифровые значения, называемые кодовыми уровнями или кодовыми значениями. Например, EOTF может отображать кодовые уровни обратно в значения светимости. Обратным процессом к электрооптическому преобразованию является оптоэлектронное преобразование(OETF), которое может создавать кодовые уровни из светимости.
[0105] Фиг. 6 включает в себя диаграмму, которая иллюстрирует примеры кривых светимости, созданных передаточными функциями. Каждая кривая изображает значение светимости на разных кодовых уровнях. Иллюстрируются кривые для передаточных функций, заданных BT.709 (кривая 602) и ST 2084 (кривая 604), а также показательная кривая 606 для 10-битных данных SDR. Фиг. 6 также иллюстрирует динамические диапазоны у каждой передаточной функции. В других примерах кривые можно начертить отдельно для красной (R), зеленой (G) и синей (B) цветовых компонент.
[0106] ST 2084 дает передаточную функцию, которая может эффективнее поддерживать данные с большим динамическим диапазоном. Передаточная функция из ST 2084 применяется к нормализованным, линейным значениям R, G и B, которые создают нелинейные представления, в этом документе называемые R’, G’ и B’. ST 2084 дополнительно задает нормализацию NORM=10000, которая ассоциируется с максимальной яркостью 10000 нитов. Значения R’, G’ и B’ можно вычислить следующим образом:
R’ = PQ_TF(max(0, min(R/NORM,1)))
G’ = PQ_TF(max(0, min(G/NORM,1))) (1)
B’ = PQ_TF(max(0, min(B/NORM,1)))
[0107] В уравнении (1) передаточная функция, PQ_TF, задается следующим образом:
[0108] Фиг. 7 включает в себя график, иллюстрирующий пример входных значений в PQ_TF (например, линейные значения цвета), нормализованных к диапазону 0 … 1, и соответствующих выходных значений (например, нелинейные значения цвета). Как проиллюстрировано на этом графике, 1% динамического диапазона входного сигнала (например, представляющего слабое освещение) преобразуется в 50% динамического диапазона выходного сигнала.
[0109] Электрооптическую передаточную функцию можно задать в зависимости от точности с плавающей запятой. При точности с плавающей запятой можно избежать внесения ошибок в сигнал, который заключает в себе нелинейность функции, когда применяется обратная функция (например, оптоэлектронная передаточная функция). Эта обратная передаточная функция, заданная ST 2048, выглядит следующим образом:
R=10000*inversePQ_TF(R’)
G=10000*inversePQ_TF(G’) (2)
B=10000*inversePQ_TF(B’)
[0110] В уравнении (2) обратная передаточная функция, inversePQ_TF, задается следующим образом:
[0111] При точности с плавающей запятой последовательное применение EOTF и OETF может обеспечить почти точное восстановление без ошибок. Однако представление линейных цветовых данных с использованием EOTF может быть неоптимальным для потоковых или вещательных услуг. Дополнительная обработка, которая описана ниже, может создать более плотное представление нелинейных данных R’G’B’, которое имеет фиксированную битовую точность.
[0112] Заданы другие передаточные функции и обратные передаточные функции. Система кодирования видео может использовать одну из этих других передаточных функций и обратных передаточных функций вместо или в дополнение к предоставленным ST 2084.
[0113] Преобразование цветов может уменьшить размер цветового пространства у входа линейного RGB. Системы захвата изображений часто захватывают изображения в виде данных RGB. Однако цветовое пространство RGB может обладать высокой степенью избыточности среди цветовых компонент. Соответственно, RGB не оптимально для создания плотного представления данных. Для достижения более плотного и более надежного представления компоненты RGB можно преобразовать в более некоррелированное цветовое пространство, например, YCbCr, которое может больше подходить для сжатия. Цветовое пространство YCbCr разделяет яркость в виде светимости и информацию о цвете в разных некоррелированных компонентах, включая яркость (Y), цветность синего (Cb) и цветность красного (Cr).
[0114] Цветовое пространство YCbCr является одним целевым цветовым пространством, используемым в BT.709. BT.709 обеспечивает следующее преобразование для нелинейных значений R’, G’ и B’ в непостоянное представление светимости Y’, Cb и Cr:
Y’ = 0,2126 * R’ + 0,7152 * G’ + 0,0722 * B’
[0115] Предоставленное уравнением (3) преобразование также можно реализовать с использованием следующих приближенных преобразований, которые избегают деления для компонент Cb и Cr:
Y’ = 0,212600 * R’ + 0,715200 * G’ + 0,072200 * B’
Cb = -0,114572 * R’ - 0,385428 * G’ + 0,500000 * B’ (4)
Cr=0,500000 * R’ - 0,454153 * G’ - 0,045847 * B’
[0116] BT.2020 задает следующий процесс преобразования из R’, G’ и B’ в Y, Cb и Cr:
Y’ = 0,2627 * R’ + 0,6780 * G’ + 0,0593 * B’
[0117] Предоставленное уравнением (5) преобразование также можно реализовать с использованием следующего приближенного преобразования, которое избегает деления для компонент Cb и Cr:
Y’ = 0,262700 * R’ + 0,678000 * G’ + 0,059300 * B’
Cb = -0,139630 * R’ - 0,360370 * G’ + 0,500000 * B’ (6)
Cr=0,500000 * R’ - 0,459786 * G’ - 0,040214 * B’
[0118] В этих и других примерах входное цветовое пространство (например, цветовое пространство R’G’B’) и выходное цветовое пространство (например, цветовое пространство Y’CbCr) остаются нормализованными. Таким образом, для входных значений, нормализованных в диапазоне 0 … 1, выходные значения также будут отображены в диапазон 0 … 1. В некоторых примерах значения Cb и Cr нормализуются в диапазоне от -0,5 до 0,5, причем значения Cb и Cr, равные 0, указывают серые цвета. Цветовые преобразования, реализованные с точностью с плавающей запятой, могут достичь безупречного восстановления, что приводит к процессу без потерь.
[0119] После преобразования цветов входные данные, теперь в целевом цветовом пространстве, можно по-прежнему представлять с большой битовой глубиной (например, с точностью с плавающей запятой), и они могут быть без потерь. Однако эта степень точности может быть избыточной и чрезмерной для большинства бытовой электроники. В некоторых примерах точности от 10 бит до 12 бит совместно с передаточной функцией PQ может быть достаточно, чтобы данные HDR содержали 16 единиц диафрагмы с искажением чуть ниже заметного для человеческого зрения. Данные HDR с 10-битовой точностью можно кодировать большинством систем кодирования видео.
[0120] Квантование может преобразовать данные к целевой битовой глубине. Квантование – процесс с потерями, то есть теряется некоторая информация, и он может быть источником неточности в выходных данных HDR.
[0121] Нижеследующие уравнения предоставляют пример квантования, которое может применяться к кодовым словам в целевом цветовом пространстве. В этом примере входные значения для Y, Cb, и Cr с точностью с плавающей запятой можно преобразовать в значения с фиксированной битовой глубиной BitDepthY для значения Y и BitDepthC для значений цветности (Cb и Cr).
[0122] В приведенном выше:
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 )
Sign ( x ) = -1 если x < 0, 0 если x=0, 1 если x > 0
Floor( x ) – наибольшее целое число, меньше либо равное x
Abs( x ) = x если x >= 0, -x если x < 0
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
Clip3( x,y,z ) = x если z < x, y если z > y, в противном случае z
[0123] В некоторых случаях преобразование видеоданных с большим цветовым объемом в видеоданные с более плотным цветовым объемом может привести к изменениям динамического диапазона. Эти изменения динамического диапазона могут быть видны на восстановленном видео в виде искажений, например, несовпадения цветов или размытие цвета, среди других примеров. Регулировка динамического диапазона (DRA) является методикой для компенсации изменений динамического диапазона и уменьшения возможных искажений. DRA предложена в "Dynamic Range Adjustment SEI to enable High Dynamic Range video coding with Backward-Compatible Capability", D. Rusanovskyy, A. K. Ramasubramonian, D. Bugdayci, S. Lee, J. Sole and M. Karczewicz, VCEG document COM16-C 1027-E, Sep. 2015, который настоящим полностью и во всех отношениях включается в этот документ посредством ссылки.
i
i+1
i
i+1
y
y,i
y,i
[0124] В различных примерах DRA можно реализовать с использованием кусочно-линейной функции f(x), которая задается для группы неперекрывающихся разделов динамического диапазона, которые в этом документе также называются диапазонами, причем каждый раздел диапазона или диапазон включает в себя набор входных значений x (например, входные значения цвета). Диапазоны в этом документе представляются с помощью {Ri}, причем i – индекс каждого соответствующего диапазона, и i=0 … N-1 включительно, причем N – общее количество диапазонов, используемых для задания функции DRA. В качестве примера можно допускать, что диапазоны задаются минимальным и максимальным значением x, которые принадлежат каждому соответствующему диапазону Ri; например, для входных значений [x,x-1] x и x могут обозначать минимальное значение диапазонов Ri и R(i+1) соответственно. Применяемая к цветовой компоненте Y видео (например, значению яркости), функцию DRA S можно задать с использованием значения масштаба S и значения смещения O, которые могут применяться к каждому входному значению (то есть для каждого ). Соответственно, функцию DRA можно задать как набор значений масштаба и смещения для каждого входного значения, или
[0125] Используя это определение для функции DRA, для любого диапазона Ri и для каждого  выходное значение X может вычисляться следующим образом:
y
y,i
y,i
[0126] Обратное отображение DRA для компоненты яркости Y можно проводить в декодере. В этом случае функцию DRA S можно задать с помощью инверсии значения масштаба S и значения смещения O. Обратное значение масштаба и значение смещения можно применить к каждому .
[0127] Используя это определение обратной функции DRA, для любого диапазона Ri и для каждого выходного значения  восстановленное значение x может вычисляться следующим образом:
(9)
u
u,i
u,i
[0128] Процесс отображения DRA (например, для кодирования) также можно задать для компонент цветности Cb и Cr. В следующем примере u обозначает выборку цветовой компоненты Cb, которая принадлежит диапазону Ri. В этом примере . Функцию DRA S для выборки цветности также можно задать с использованием значения масштаба S и значения смещения O, так что . Таким образом, выходное значение U может вычисляться следующим образом:
(10)
(bitdepth-1)
[0129] В уравнении (10) Offset (смещение) равно 2 и обозначает биполярное смещение сигнала Cb, Cr.
[0130] Обратное отображение DRA для компонент цветности Cb и Cr также можно задать и выполнить в декодере. В следующем примере U обозначает выборку повторно отображенной цветовой компоненты Cb из диапазона Ri, причем . В этом примере компоненту Cb можно восстановить с использованием следующего уравнения:
(11)
(bitdepth-1)
[0131] В уравнении (11) Offset (смещение) равно 2 и обозначает биполярное смещение сигнала Cb, Cr.
[0132] Дополнительной методикой для уменьшения искажения, которое может возникать при изменении цветового пространства видео, является яркостное масштабирование цветности (LCS). Яркостное масштабирование цветности предложено в JCTVC-W0101 HDR CE2: Report on CE2.a-1 LCS, A.K. Ramasubramonian, J. Sole, D. Rusanovskyy, D. Bugdayci, and M. Karczewicz, который настоящим полностью и во всех отношениях включается в этот документ посредством ссылки.
u
i
i
[0133] LCS является методикой, по которой информация о цветности (например, выборки Cb и Cr) регулируется путем задействования информации о светлоте, ассоциированной с обработанной выборкой цветности. Аналогично описанному выше подходу DRA LCS включает в себя применение масштабного коэффициента S для компоненты Cb и масштабного коэффициента Sv, i для компоненты Cr. Однако в LCS вместо задания функции DRA в виде кусочно-линейной функции (например, в виде  для набора диапазонов {R}, доступного по значениям цветности u или v, как в уравнениях (3) или (4)) подход LCS использует значение яркости Y для выведения масштабного коэффициента для выборки цветности. Например, отображение выборки цветности u (или v) для кодирования видеоданных может выполняться с использованием следующего уравнения:
(12)
[0134] Обратный процесс LCS для декодирования можно задать следующим образом:
(13)
Cb
Cr
[0135] В качестве дополнительного примера для заданного пикселя, расположенного в (x, y), выборки цветности Cb(x, y) и/или Cr(x, y) масштабируются с коэффициентом, выведенным из соответствующей функции LCS S (или S,) доступной с использованием значения яркости Y’(x, y).
Cb
Cr
[0136] В прямом процессе отображения (например, при обработке для кодирования) для выборок цветности значения Cb (или Cr) и ассоциированное значение яркости Y’ берутся в качестве входа в функцию масштабирования цветности S (или S), и Cb или Cr преобразуются в Cb’ и Cr’, как показано ниже в уравнении (14).
(14)
[0137] При декодировании применяется обратный процесс LCS, и восстановленные Cb’ или Cr’ преобразуются в Cb или Cr, как показано ниже в уравнении (15).
(15)
[0138] Фиг. 8 включает в себя график, иллюстрирующий пример функции LCS. В этом примере компоненты цветности пикселей с меньшим значением яркости умножаются на меньшие масштабные коэффициенты.
[0139] В различных примерах масштабирование выборок DRA может относиться к параметрам квантования, используемым в процессе кодирования или декодирования. Как дополнительно обсуждается ниже, процесс кодирования видео на основе блочного преобразования (например HEVC) использует скалярный квантователь для регулировки коэффициента сжатия. Квантование может применяться к коэффициентам преобразования. Скалярный квантователь может управляться параметром квантования (QP), при этом отношение между QP и скалярным квантователем задается следующим образом:
(16)
[0140] Отношение между скалярным квантователем и значением QP можно задать с помощью обратной функции следующим образом:
(17)
[0141] Рассмотренная выше методика DRA эффективно масштабирует данные пикселей. В связи со свойствами преобразования масштабирование DRA для большого класса сигналов можно отобразить в скаляр, применяемый в области преобразования. Например, можно задать следующее отношение:
(18)
[0142] В уравнении (18) dQP является приблизительным смещением QP, внесенным из-за применения DRA к входным данным.
[0143] В различных примерах параметры, которые описывают кусочно-линейную функцию, которая может использоваться для регулировки динамического диапазона, можно сигнализировать в потоке двоичных сигналов (например, кодировать в нем). Тогда кодированные параметры можно декодировать в декодере, который может использовать эти параметры для восстановления кусочно-линейной функции. Для описания кусочно-линейной функции диапазон входных значений (которые в некоторых примерах могут быть значениями яркости) для функции можно разделить на сегменты или диапазоны, каждый из которых обладает постоянным наклоном. Тогда параметры для кусочно-линейной функции могут включать в себя значения, которые описывают диапазоны (например, длины диапазонов, количество диапазонов и т.п.), и значения масштаба (например, описывающие наклон каждого диапазона). Примеры сигнализации параметров DRA описываются в "HDR CE6: Test 4.1 Reshaper from m37064", D. B. Sansli, A. K. Ramasubramonian, D. Rusanovskyy, J. Sole, and M. Karczewicz, JCTVC-W0103, San Diego, CA, February, 2016, который полностью и во всех отношениях включается в этот документ посредством ссылки. Параметры DRA можно включить, например, в сообщение SEI, заголовок секции и/или набор параметров (например, SPS, PPS или другой тип набора параметров).
[0144] Нижеследующее иллюстрирует частный пример структуры данных, которая может использоваться для кодирования параметров, которые описывают кусочно-линейную функцию. В различных примерах структура данных может включать в себя другие компоненты, которые здесь не проиллюстрированы для ясности. Значения в структуре данных могут применяться, например, к группе видеокадров, к одному видеокадру и/или к части видеокадра:
[0145] В этой примерной структуре данных компонент dra_enabled_flag может использоваться для указания, что задействована регулировка динамического диапазона. Компонент num_luma_dra_in_ranges может указывать количество диапазонов, на которое разделены входные значения (которые в этом примере являются значениями яркости). Компонент delta_luma_change_points[i] может указывать длинкаждого диапазона, а delta_scale_val[i] может указывать значение масштаба, которое указывает наклон, для каждого диапазона. В этом примере длины диапазонов указываются относительно входных значений; то есть длины указываются "точкой перехода" или входным значением, причем заканчивается один диапазон и начинается другой.
[0146] Для некоторого контента диапазоны могут быть равны по длине. В этих случаях можно уменьшить количество битов, необходимых для кодирования кусочно-линейной функции. Например, длину диапазонов не нужно указывать в потоке двоичных сигналов. Вместо этого в вышеупомянутую структуру данных можно включить признак, в этом документе называемый "equal_ranges_flag", который указывает, что длины диапазонов можно вывести из заданного значения (например, битовой глубины цветовых компонент или значения, указанного в потоке двоичных сигналов, среди других примеров) и количества диапазонов, указанных в потоке двоичных сигналов. В этом примере эффективность кодирования повышается, потому что нужно сигнализировать только значения масштаба и количество диапазонов.
[0147] Однако для некоторого контента даже сигнализация только значений масштаба и количества диапазонов может добавить в поток битов ненужные биты. Например, в некоторых случаях может быть известно, что входные значения (например, выборки яркости) ограничиваются определенным диапазоном, поскольку либо видео сделано с ограниченными значениями яркости, либо это указывает анализ гистограммы видео. В этом примере сигнализация значений масштаба для диапазонов, которые не заняты, потому что диапазоны выходят за ограниченный диапазон, может привести к ненужным битам, добавляемым к выходному потоку двоичных сигналов.
[0148] В иных случаях диапазоны входных значений могут быть такими, что часть диапазона можно разделить на сегменты или разделы равной длины, но у одной части или двух частей диапазона наклон таков, что эти части не могут быть одинаковой длины в других диапазонах. Фиг. 9 включает в себя график, который изображает значение y для диапазона входных значений x в соответствии с кусочно-линейной функцией для регулировки динамического диапазона. Значения x могут быть, например, значениями яркости из пикселей в видеокадре. В этом примере диапазон значений x включает в себя пять диапазонов, R0, R1, R2, R3 и R4, каждого из которых приблизительно постоянный наклон. Как проиллюстрировано в этом примере, у четырех диапазонов, R1, R2, R3 и R4, одинаковая длина, тогда как у одного диапазона, R0, длина другая.
[0149] Проиллюстрированная выше примерная структура данных может использоваться для кодирования кусочно-линейной функции, проиллюстрированной на фиг. 9, но использование этой структуры данных может привести к некоторым избыточным кодируемым данным. Например, эта структура данных может привести к тому, что каждый из диапазонов R1, R2, R3 и R4 отдельно кодируется в поток битов, и поскольку каждого одинаковая длина, одно значение длины будет три раза кодироваться в поток битов. В этом примере можно добиться большей эффективности, если только общее значение длины кодируется в поток битов один раз.
[0150] В качестве другого примера проиллюстрированная выше структура данных может использоваться вместе с equal_ranges_flag. В этом примере диапазон значений x можно разделить на равные части, и диапазоны с одинаковой длиной можно указываться с использованием equal_ranges_flag. В примере из фиг. 9 это привело бы к R0, разделенному на три части. Однако в этом случае также кодируются избыточные данные по той причине, что каждого из диапазонов, которые включают в себя R0, будет одинаковое значение масштаба. Можно добиться большей эффективности, если можно кодировать общее значение масштаба только один раз.
[0151] В различных примерах структуру данных, например описанную выше, можно изменить, чтобы кусочно-линейную функцию можно было эффективно кодировать, когда диапазон входных значений для функции можно разделить на диапазоны с равными длинами, можно частично разделить на диапазоны или разделы с равными длинами или нельзя разделить на диапазоны с равными длинами. Как и в примерной структуре данных выше, в структуре данных не нужно указывать такую информацию, как длины диапазонов либо начальные или конечные положения диапазонов. Вместо этого эти и другие параметры можно вывести в декодере с использованием детерминированного процесса выведения, который дополнительно обсуждается ниже.
[0152] В первом примере структура данных, которая может включать в себя индикатор, который может указывать декодеру, что диапазоны, на которые разделены входные значения, включают в себя набор диапазонов с одинаковой длиной. Набор диапазонов в этом документе может называться набором диапазонов равной длины. Индикатор в примере ниже называется "equal_ranges_flag" и может быть 1-битным значением. В этом примере, когда equal_ranges_flag равен нулю, диапазон входных значений не разделялся ни на какие диапазоны с одинаковой длиной или мог быть разделен на несколько диапазонов с одинаковой длиной и несколько с разными длинами, при этом диапазоны с одинаковой длиной прерывистые, меньше либо равны количеству диапазонов с разными длинами и/или расположены между диапазонами с разными длинами. В этом примере каждая длина каждого диапазона входных значений указывается в структуре данных. В примерах ниже компонент, используемый для указания длин диапазонов, называется "delta_luma_change_points", который может быть массивом с индексом для каждого диапазона входных значений.
[0153] В предыдущем примере, когда equal_ranges_flag устанавливается в 1, либо весь диапазон входных значений разделен на сегменты равной длины, либо диапазон входных значений разделен на один набор с одинаковой длиной и один с другой длиной. В любом из этих случаев один компонент в структуре данных может использоваться для указания длины у сегментов равной длины. В примерах ниже этот компонент называется "delta_luma_val".
[0154] В одном примере один диапазон с другой длиной (который в этом документе может называться диапазоном неодинаковой длины) находится в начале диапазона входных значений. То есть, как проиллюстрировано на фиг. 9, диапазон неодинаковой длины может включать в себя входные значения от начала диапазона входных значений, при этом оставшиеся входные значения разделяются на равные длины. В этом примере длину диапазона неодинаковой длины можно указать с использованием delta_luma_change_points[0] (например, индекс-нуля у компонента delta_luma_change_points). Когда у всех диапазонов одинаковая длина (например, нет диапазона неодинаковой длины), delta_luma_change_points[0] может указывать эту длину, так что никакая специальная обработка или дополнительные компоненты не нужны для различия между тем, есть один диапазон неодинаковой длины и нет диапазона неодинаковой длины. В некоторых других примерах, когда у всех диапазонов одинаковая длина, delta_luma_change_points[0] не нужно сигнализировать, и может использоваться delta_luma_val для выведения длины равных диапазонов.
[0155] Продолжая с первым примером, декодер, принимающий структуру данных, может вывести длины диапазонов (например, значение delta_luma_change_points для каждого диапазона) с использованием delta_luma_val. Например, delta_luma_val может указывать разность между конечным значением и начальным значением каждого из диапазонов равной длины.
[0156] В качестве другого примера delta_luma_val может задавать длины у диапазонов равной длины относительно фиксированного значения, которое одинаково в кодере и декодере. Например, фиксированное значение может быть максимальным значением, которое может иметь диапазон входных значений, когда у всех диапазонов, включая диапазон неодинаковой длины, одинаковая длина. В этом примере delta_luma_val может использоваться для указания разности между фиксированным значением (например, максимальным возможным значением у входных значений) и длиной диапазонов равной длины. В этом примере delta_luma_val может быть значением со знаком. В качестве примера допуская, что у содержимого видео максимальное значение яркости 1000, значения от 1 до 300 образуют один диапазон, а значения от 301 до 1000 образуют девять диапазонов равной длины, длина диапазонов равной длины составит около 78. В этом примере delta_luma_val можно установить в 22, чтобы на декодере длину диапазонов равной длины можно было определить следующим образом: (1000/10) – 22=78. В этом примере количество битов, необходимых для кодирования delta_luma_val, может быть меньше того, когда delta_lum_val указывает абсолютную длину у диапазонов равной длины.
[0157] В качестве другого примера delta_luma_val может использоваться для указания разности между длиной у диапазонов равной длины, если все диапазоны были заключены в диапазонах равной длины, и фактической длиной у диапазонов равной длины. В этом примере delta_luma_val может быть значением со знаком. В качестве примера допуская максимальное значение яркости 1000, что значения от 1 до 300 образуют диапазон неодинаковой длины, и что оставшиеся значения образуют девять равных диапазонов с длиной 78 каждый, delta_luma_val можно установить в -8, и декодер может вывести длину диапазонов равной длины следующим образом: ((1000–300) / 10) – (-8) = 78. Как и в предыдущем примере, в этом примере количество битов, необходимых для кодирования delta_luma_val, может быть меньше того, когда delta_luma_val указывает абсолютную длину у диапазонов равной длины.
[0158] Во втором примере могут быть ситуации, причем диапазон входных значений для кусочно-линейной функции можно разделить на набор с равными длинами, первый диапазон с другой длиной и второй диапазон, у которого может быть такая же длина, как у первого диапазона, или может быть совсем другая длина. Это может происходить, например, на графике, аналогичном графику из фиг. 9, причем наклон у значений y сначала немного изменяется, а затем меняется больше. В этом втором примере структура данных может включать в себя индикатор, который может указывать, включают ли диапазоны один диапазон неодинаковой длины или два диапазона неодинаковой длины. В примерах ниже этот индикатор называется "luma_range_scale_mode" и может быть 2-битовым значением. В этом примере equal_ranges_flag также может использоваться для указания, равны ли по длине все или некоторые диапазоны.
[0159] В этом втором примере, как и в предыдущем примере, delta_luma_change_points может указывать длины всех диапазонов, когда equal_ranges_flag указывает, что все длины сигнализируются (например, потому что либо нет диапазонов равной длины, либо диапазоны равной длины не упорядочены таким образом, который дает возможность описать диапазоны равной длины как группу), и delta_luma_val может указывать длину у диапазонов равной длины, когда equal_ranges_flag указывает, что есть диапазоны равной длины. delta_luma_change_points[0] может указывать длину первого диапазона неодинаковой длины, когда есть по меньшей мере один диапазон неодинаковой длины, и его можно установить в длину диапазонов равной длины, когда все диапазоны одинаковой длины.
[0160] Когда luma_range_scale_mode указывает, что диапазоны включают в себя два диапазона неодинаковой длины, delta_luma_change_points[1] может использоваться для указания длины у второго диапазона неодинаковой длины. В некоторых примерах у второго диапазона неодинаковой длины может быть такое же значение масштаба, как у первого диапазона неодинаковой длины, и в этом случае только одно значение масштаба нужно сигнализировать для обоих диапазонов неодинаковой длины.
[0161] В некоторых случаях кусочно-линейная функция может быть такой, что длину и смещение диапазона неодинаковой длины не нужно кодировать, а можно вывести на декодере на основе параметров для диапазонов равной длины. Фиг. 10 включает в себя график, который изображает значение y для диапазона значений x в соответствии с кусочно-линейной функцией для регулировки динамического диапазона. В этом примере кусочно-линейную функцию можно разделить на набор диапазонов равной длины (R0, R1, R2 и R3) и один диапазон с другой длиной (R4). Для этого примера структура данных может включать в себя equal_ranges_flag для указания, что диапазон входных значений полностью или частично разделен на диапазоны с одинаковой длиной. Когда equal_ranges_flag указывает, что предоставляются все длины диапазонов (например, потому что либо нет диапазонов равной длины, либо диапазоны равной длины не упорядочены таким образом, который дает возможность описать диапазоны равной длины как группу), для указания длины диапазонов может использоваться компонент в структуре данных, ниже называемый "range_length". Компонент range_length может быть массивом, который включает в себя индекс для каждого диапазона.
[0162] Когда equal_ranges_flag указывает, что диапазоны включают в себя набор диапазонов с одинаковыми длинами, может использоваться значение, ниже называемое "equal_range_length", для указания общей длины диапазонов равной длины, которая может вычисляться путем умножения количества диапазонов равной длины на длинкаждого из диапазонов равной длины. Как проиллюстрировано в примере из фиг. 10, equal_range_length также может указывать смещение, по которому можно найти диапазон неодинаковой длины. В этом примере диапазон неодинаковой длины заканчивается с максимальным возможным значением из входных значений.
[0163] В качестве примера допуская максимальное значение яркости 1000, что диапазон неодинаковой длины включает в себя значения от 701 до 1000, и что есть девять диапазонов равной длины, значением equal_range_length может быть 78. Тогда декодер может вывести объединенную длину диапазонов равной длины следующим образом: 78×9=702, или примерно 700. Декодер может дополнительно вывести длину диапазона неодинаковой длины следующим образом: 1000–700=300.
[0164] Сейчас будет описываться несколько примерных реализаций вышеописанных способов. Нижеследующие примеры реализуют один или несколько описанных выше примеров. Примерные реализации иллюстрируются с использованием синтаксических структур и семантики. Изменения синтаксической структуры и семантики указываются следующим образом: [[текст в двойных квадратных скобках]] указывает удаления, а подчеркнутый текст указывает добавления.
[0165] ПЕРВЫЙ ПРИМЕР
[0166] Синтаксис
[0167] Семантика
equal_ranges_flag
[0168] Равный 0  задает, что синтаксический элемент delta_luma_change_points[ i ] сигнализируется для i в диапазоне от 1 до num_luma_dra_in_ranges включительно. Равный 1 equal_ranges_flag задает, что delta_luma_change_points[ i ] сигнализируется для i в диапазоне от 1 до num_luma_dra_in_ranges включительно, не сигнализируется и выводится с использованием delta_luma_val.
delta_luma_val
[0169]  используется для выведения значения входных диапазонов, когда equal_ranges_flag устанавливается равным 0. Когда отсутствует, значение delta_luma_val подразумевается равным 0. Количество битов, используемых для сигнализации delta_luma_val, равно in_bit_depth.
[0170] Отметим, что хотя in_bit_depth относится к битовой глубине выборок компоненты, количество битов, используемых для сигнализации delta_luma_val, может сигнализироваться явно или выводиться из других синтаксических элементов в потоке двоичных сигналов.
[0171] Когда equal_ranges_flag равен 1, значение delta_luma_change_points[ i ] выводится следующим образом для i в диапазоне от 1 до num_luma_dra_in_ranges включительно:
delta_luma_change_points[ i ] = delta_luma_val
[0172] В качестве альтернативы сигнализированное значение delta_luma_val используется для задания разности между фиксированным значением длины диапазона и фактической длиной диапазона. В таких случаях delta_luma_val можно сигнализировать как число со знаком, например, кодированное как синтаксический элемент s(v). Пример выведения delta_luma_change_points[ i] выглядит следующим образом:
deltaVal = ( 1 << in_bit_depth ) / num_luma_dra_in_ranges – delta_luma_val
delta_luma_change_points[ i ] = deltaVal
[0173] Ниже приводится пример выведения входных диапазонов, но нужно понимать, что могут быть другие способы выведения, которые не заданы в данном раскрытии изобретения:
inRanges[ 0 ] = delta_luma_change_points[ 0 ]
for( i=1; i <= num_luma_dra_in_ranges; i++ )
inRanges[ i ] = inRanges[ i - 1 ] + delta_luma_change_points[ i ]
[0174] В качестве альтернативы значение deltaVal выводится следующим образом:
deltaVal = ( ( 1 << in_bit_depth ) - delta_luma_change_points[ 0 ]) / num_luma_dra_in_ranges – delta_luma_val
[0175] Выведенный таким образом inRanges[ ] и dra_scale_val[ ] могут использоваться для выведения справочной таблицы, которая используется для выполнения отображения DRA.
[0176] Если inRanges[ num_luma_dra_in_ranges ] меньше (1 << in_bit_depth), то значения масштаба, соответствующие значениям выборки в диапазоне от inRanges[ num_luma_dra_in_ranges ] до (1 << in_bit_depth) включительно, можно вывести равными 0 или равными inRanges[ num_luma_dra_in_ranges - 1 ].
[0177] Синтаксические элементы cont_cb_qp_offset, cont_cb_qp_offset и base_qp используются для выведения параметров DRA для отображения выборок цветности.
cont_cb_qp_offset
[0178]  используется для выведения значения масштаба для выборок контейнера Cb. Значение cont_cb_qp_offset находится в диапазоне от – 24 до 24 включительно.
cont_cr_qp_offset
[0179]  используется для выведения значения масштаба для выборок контейнера Cr. Значение cont_cb_qp_offset находится в диапазоне от – 24 до 24 включительно.
[0180] Пример значения масштаба, выведенного для Cb и Cr из cont_cb_qp_offset и cont_cb_qp_offset, выглядит следующим образом:
( - cont_cb_qp_offset/6)
scaleCb=2
( - cont_cr_qp_offset/6)
scaleCr=2
base_qp
[0181]  используется для выведения дополнительного значения масштаба для цветности на основе таблиц QP цветности, заданных в таблице 8-10 стандарта HEVC. Значение base_qp находится в диапазоне от 0 до 51 включительно.
[0182] В некоторых вариантах осуществления cont_cb_qp_offset и cont_cb_qp_offset могут использоваться для выведения значений масштаба у любых двух компонент сигнала. Вычисление значений масштаба из cont_cb_qp_offset и cont_cb_qp_offset можно реализовать в арифметике с фиксированной точкой или выполнить с использованием справочных таблиц.
[0183] В некоторых вариантах осуществления значение base_qp сигнализируется как разность с фиксированным числом для уменьшения количества необходимых для сигнализации битов. В других вариантах осуществления значение масштаба можно вывести из base_qp, используя другие таблицы, заданные аналогично таблице 8-10, и base_qp можно заменить сигнализацией индекса к той таблице.
[0184] ВТОРОЙ ПРИМЕР
[0185] Этот пример аналогичен примеру 1 за исключением сигнализации синтаксического элемента, задающего то, как выводятся значения масштаба для диапазонов, у которых нет явной сигнализации dra_scale_val.
[0186] Синтаксис
[0187] Семантика
luma_range_scale_mode
[0188]  используется для задания выведения значения масштаба dra_scale_val[ 1 ]. Когда luma_range_scale_mode равен 1, синтаксический элемент dra_scale_val[ 1 ] устанавливается равным (1 << num_scale_frac_bits). Когда luma_range_scale_mode равен 2, синтаксический элемент dra_scale_val[ 1 ] устанавливается равным 0. Когда luma_range_scale_mode равен 3, синтаксический элемент dra_scale_val[ 1 ] устанавливается равным dra_scale_val[ 2 ].
[0189] Значение delta_luma_change_points[ i ] может выводиться следующим образом для i в диапазоне от 2 до num_luma_dra_in_ranges включительно, или с использованием значения delta_luma_val:
deltaVal = ( ( 1 << in_bit_depth ) - delta_luma_change_points[ 0 ] - delta_luma_change_points[ 1 ]) / num_luma_dra_in_ranges
delta_luma_change_points[ i ] = deltaVal
[0190] В некоторых вариантах значение luma_range_scale_mode может не влиять на связь equal_ranges_flag и delta_luma_change_points[ 1 ].
[0191] В других вариантах синтаксический элемент delta_luma_change_points[ 0 ] может не сигнализироваться.
[0192] Значение luma_range_scale_mode описывается здесь для указания, как выводится значение масштаба, соответствующее одному значению диапазона, или как параметры DRA выводятся на основе этого значения. Нужно понимать, что аналогичные синтаксические элементы также можно задать для других диапазонов.
[0193] ТРЕТИЙ ПРИМЕР
[0194] Этот пример может использоваться, когда набор диапазонов равной длины численно предшествует диапазону неодинаковой длины, как проиллюстрировано на фиг. 10.
[0195] Синтаксис
[0196] Семантика
num_dra_ranges
[0197]  задает количество диапазонов, задающих функцию DRA.
dra_global_offset_value
[0198]  задает значение x, причем функция DRA приводит к y=0, и используется для выведения других параметров DRA (например, локального смещения для диапазона R0).
luma_change_points
[0199] [ 0 ] задает начальное значение x, причем диапазоны сигнализируются с использованием равной длины диапазона, либо задает длину диапазона. Значение luma_changes_points[ 0 ] может находиться в диапазоне от 0 до 1023 включительно.
[0200] В одном варианте добавляется следующее ограничение:
[0201] значение luma_change_points[ 0 ] может быть больше либо равно dra_global_offset_value.
equal_ranges_flag
[0202] Равный 1  задает, что функция DRA задается посредством диапазонов равной длины.
equal_range_length
[0203]  задает длину всех диапазонов равной длины, которые задают функцию DRA.
[0204] Если delta_luma_change_points[ 0 ] > dra_global_offset_value, то функцию DRA может понадобиться задать с дополнительным диапазоном, известным как R[-1], параметры которого не сигнализируются, но их можно вывести на стороне декодера следующим образом:
длина диапазона R[-1] = delta_luma_change_points[ 0 ] - dra_global_offset_value
[0205] Кусочно-линейный (PWL) масштаб для диапазона R[-1] = масштаб [0] является значением масштаба, сигнализированным для соседнего диапазона, параметры которого были сигнализированы, а именно диапазона R[0].
[0206] Если нельзя полностью задать функцию DRA для всех возможных значений x, например num_dra_ranges * equal_range_length < MAX_X, то функция DRA может задаваться с дополнительным диапазоном, так называемым R[num_dra_ranges], параметры которого не сигнализируются, но их можно вывести на стороне декодера следующим образом:
длина диапазона R[num_dra_ranges] = MAX_X - num_dra_ranges * equal_range_length,
[0207] причем MAX_X указывает максимальное значение, которое может принимать входной компонент x. В некоторых вариантах осуществления значения MAX_X могут определяться после учета других диапазонов, которые не сигнализируются. Например, если максимальное значение входного x равно 1023, и сигнализируется delta_luma_change_points[ 0 ], то MAX_X равно 1024 – delta_luma_changes_points[ 0 ].
[0208] PWL-масштаб для диапазона R[num_dra_ranges] = масштаб [num_dra_ranges-1] является значением масштаба, сигнализированным для соседнего диапазона, параметры которого были сигнализированы ранее, а именно диапазона R[num_dra_ranges-1].
[0209] Фиг. 11 включает в себя блок-схему алгоритма, которая иллюстрирует пример процесса 1100 для кодирования видеоданных. Процесс 1100 можно реализовать, например, с помощью устройства кодирования, которое включает в себя запоминающее устройство и процессор. В этом примере запоминающее устройство можно конфигурировать для хранения видеоданных, а процессор можно конфигурировать для выполнения этапов процесса 1100 из фиг. 11. Например, устройство кодирования может включать в себя постоянный машиночитаемый носитель, который может хранить команды, которые при исполнении процессором могут побудить процессор выполнить этапы процесса 1100. В некоторых примерах устройство кодирования может включать в себя камеру для захвата видеоданных.
[0210] На этапе 1102 процесс 1100 включает в себя получение видеоданных, причем видеоданные для части видеокадра в видеоданных включают в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на несколько неперекрывающихся диапазонов, причем неперекрывающиеся диапазоны включают в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, и причем первая длина отличается от второй длины. В некоторых примерах часть видеокадра включает в себя не весь видеокадр. В некоторых примерах часть видеокадра включает в себя весь видеокадр. В некоторых примерах параметры, которые описывают кусочно-линейную функцию, могут применяться более чем к одному видеокадру.
[0211] В некоторых примерах диапазоном входных значений являются значения яркости от пикселей в части видеокадра. В этих примерах значения цветности можно вывести из параметров. В этих и других примерах длина диапазона может указывать некоторое количество значений яркости из возможных значений яркости в части видеокадра, которые включены в диапазон.
[0212] В некоторых примерах первый диапазон включает в себя первый набор входных значений от начала диапазона входных значений. В этих примерах набор диапазонов включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0213] На этапе 1104 процесс 1100 включает в себя формирование структуры данных для параметров. Структура данных может включать в себя компоненты, например, значение, указывающее количество диапазонов в неперекрывающихся диапазонах и масштабный коэффициент для каждого из диапазонов, и другую информацию, которая описана ниже.
[0214] На этапе 1106 процесс 1100 включает в себя установку индикатора в структуре данных для указания, что неперекрывающиеся диапазоны включают в себя набор диапазонов, имеющих вторую длину каждый. В некоторых примерах у всех неперекрывающихся диапазонов одинаковая длина (например, первая длина является такой же, как и вторая длина), и в этом случае также применяются следующие этапы. В других примерах, когда неперекрывающиеся диапазоны не включают в себя диапазоны с одинаковой длиной или содержат диапазоны с одинаковой длиной, которые нельзя сгруппировать, следующие этапы не применяются, и каждая из длин указывается в структуре данных.
[0215] На этапе 1108 процесс 1100 включает в себя установку первого значения в структуре данных для указания второй длины. В некоторых примерах первое значение указывает вторую длину как разность между конечным значением и начальным значением каждого из набора диапазонов. В некоторых примерах первое значение указывает вторую длину путем указания разности между фиксированным значением и второй длиной. Например, фиксированное значение может быть максимальным возможным значением для диапазона входных значений или может быть значением, включенным в структуру данных. В этом примере длины набора диапазонов могут вычисляться путем деления фиксированного значения на общее количество диапазонов (например, количество диапазонов в наборе диапазонов плюс первый диапазон), а затем вычитания первого значения. В некоторых примерах длины могут вычисляться путем вычитания длины первого диапазона (которая может предоставляться в структуре данных) из фиксированного значения и деления результата на общее количество диапазонов, и затем вычитания первого значения.
[0216] В некоторых примерах первое значение равно количеству диапазонов в наборе диапазонов, умноженному на вторую длину. В этих примерах первое значение соответственно равно сумме длин набора диапазонов. Более того, в некоторых примерах первое значение может указывать смещение в диапазоне входных значений, причем начинается первый диапазон. Например, набор диапазонов может включать в себя первый набор входных значений от начала диапазона входных значений, и первый диапазон может включать в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений. В этом примере первое значение может указывать, причем начинается второй набор входных значений.
[0217] В некоторых примерах процесс 1100 может включать в себя установку второго значения в структуре данных для указания первой длины. В некоторых примерах второе значение не включается в структуру данных, а вместо этого выводится из других значений в структуре данных. Например, когда первое значение указывает смещение в диапазоне входных значений, первая длина может определяться путем вычитания смещения из максимального входного значения.
[0218] На этапе 1110 процесс 1100 включает в себя формирование кодированных видеоданных из видеоданных, причем структура данных включена в кодированные видеоданные. Формирование кодированных видеоданных может включать в себя выполнение этапов, которые обсуждаются ниже по отношению к фиг. 13. В некоторых примерах структуру данных можно включить в сообщение SEI, которое может включаться в кодированные видеоданные или может предоставляться отдельно. Сообщение SEI может применять параметры в структуре данных к группе видеокадров, одному видеокадру или секции видеокадра. В некоторых примерах структуру данных можно включить в заголовок секции или набор параметров, например, набор параметров последовательности, набор параметров изображения, набор параметров видео или другой тип набора параметров. В этом примере параметры в структуре данных могут применяться к части видеоданных, к которой применяется заголовок секции или набор параметров, которая может быть секцией из видеокадра, целым видеокадром или группой видеокадров.
[0219] В некоторых примерах неперекрывающиеся диапазоны включают в себя второй диапазон с третьей длиной, которая отличается от второй длины. В этом примере неперекрывающиеся диапазоны включают в себя соответственно два диапазона, чьи длины не такие же, как длины набора диапазонов. В этом примере процесс 1100 из фиг. 11 может дополнительно включать в себя установку второго индикатора в структуре данных для указания, что неперекрывающиеся диапазоны включают в себя первый диапазон и второй диапазон. Процесс также может включать в себя установку третьего значения в структуре данных для указания третьей длины.
[0220] Фиг. 12 включает в себя блок-схему алгоритма, иллюстрирующую пример процесса 1200 для декодирования видеоданных. Процесс 1200 можно реализовать, например, с помощью устройства декодирования, которое включает в себя запоминающее устройство и процессор. В этом примере запоминающее устройство можно конфигурировать для хранения кодированных видеоданных, а процессор можно конфигурировать для выполнения этапов процесса 1200 из фиг. 12. Например, устройство декодирования может включать в себя постоянный машиночитаемый носитель, который может хранить команды, которые при исполнении процессором могут побудить процессор выполнить этапы процесса 1200. В некоторых примерах устройство декодирования может включать в себя камеру для захвата видеоданных. В некоторых примерах устройство декодирования может включать в себя дисплей для отображения декодированных видеоданных. В некоторых примерах устройство декодирования является мобильным устройством с камерой для захвата видеоданных и дисплеем для отображения видеоданных.
[0221] На этапе 1202 процесс 1200 включает в себя получение кодированных видеоданных. Кодированные видеоданные можно получить, например, из места хранения в запоминающем устройстве в устройстве декодирования. В качестве альтернативы или дополнительно кодированные видеоданные можно получить из места хранения, внешнего по отношению к устройству декодирования, например, локально присоединенного жесткого диска или другого запоминающего устройства. В качестве альтернативы или дополнительно кодированные видеоданные можно получить из сетевого местоположения.
[0222] На этапе 1204 процесс 1200 включает в себя определение структуры данных для части видеокадра из кодированных видеоданных, включающей в себя параметры, описывающие кусочно-линейную функцию для регулировки динамического диапазона цветов в упомянутой части видеокадра, причем параметры разделяют диапазон входных значений для кусочно-линейной функции на несколько неперекрывающихся диапазонов. Часть видеокадра может быть не всем видеокадром, целым видеокадром или группой видеокадров. В некоторых примерах структура данных определяется из сообщения SEI, включенного в кодированные видеоданные или предоставленного вместе с кодированными видеоданными. В этих примерах параметры в сообщении SEI могут применяться к группе видеокадров, одному видеокадру или секции видеокадра. В некоторых примерах структура данных определяется из заголовка секции или набора параметров, например, набора параметров последовательности, набора параметров изображения, набора параметров видео или другого типа набора параметров. В этом примере параметры в структуре данных могут применяться к части видеоданных, к которой применяется заголовок секции или набор параметров, которая может быть секцией из видеокадра, целым видеокадром или группой видеокадров.
[0223] На этапе 1206 процесс 1200 включает в себя определение из индикатора в структуре данных, что неперекрывающиеся диапазоны включают в себя первый диапазон, имеющий первую длину, и набор диапазонов, имеющих вторую длину каждый, причем первая длина отличается от второй длины. Индикатор может указывать, например, присутствие набора диапазонов в неперекрывающихся диапазонах. В некоторых примерах определение, что неперекрывающиеся диапазоны включают в себя первый диапазон, основывается на втором значении в структуре данных, которое предоставляет первую длину. В некоторых примерах у всех диапазонов одинаковая длина, и в этом случае первую длину можно указать в структуре как такую же, как и вторая длина. В некоторых примерах никакие диапазоны не имеют одинаковой длины, либо невозможно описать диапазоны с одинаковой длиной как группу. В этих примерах диапазоны с каждой из длин диапазонов включены в структуру данных, и следующие этапы не применяются.
[0224] В некоторых примерах второе значение в структуре данных предоставляет первую длину. В этих примерах процесс может дополнительно включать в себя определение из индекса, ассоциированного со вторым значением, что первый диапазон включает в себя первый набор входных значений от начала диапазона входных значений, и что набор диапазонов включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0225] На этапе 1208 процесс 1200 включает в себя определение второй длины с использованием первого значения в структуре данных. В некоторых примерах первое значение предоставляет вторую длину (например, равно ей). В некоторых примерах первое значение указывает вторую длину путем указания разности между фиксированным значением и первой длиной. В некоторых примерах фиксированное значение может быть максимальным возможным значением для диапазона входных значений или может быть значением, включенным в структуру данных. В этих примерах устройство декодирования может определять вторую длину путем деления фиксированного значения на общее количество диапазонов (например, количество диапазонов в наборе диапазонов плюс первый диапазон), а затем вычитания первого значения. В некоторых примерах устройство декодирования может определять вторую длину путем вычитания длины первого диапазона (которая может предоставляться в структуре данных) из фиксированного значения и деления результата на общее количество диапазонов, и затем вычитания первого значения.
[0226] На этапе 1210 процесс 1200 включает в себя определение первой длины с использованием информации, предоставляемой структурой данных. В некоторых примерах первая длина указывается с использованием некоторого значения в структуре данных. В некоторых примерах первая длина равна общей длине набора диапазонов, и в этом случае устройство декодирования может определять первую длину путем вычитания первой длины из максимального значения диапазона входных значений. Также в этом примере устройство декодирования может определять вторую длину путем деления первой длины на количество диапазонов в наборе диапазонов. В некоторых примерах процесс 1200 также может включать в себя определение на основе первого значения, что набор диапазонов включает в себя первый набор входных значений от начала диапазона входных значений, причем первый диапазон включает в себя второй набор входных значений из диапазона входных значений, которые идут за первым набором входных значений.
[0227] На этапе 1212 процесс 1200 включает в себя восстановление кусочно-линейной функции с использованием первой длины, второй длины и масштабных коэффициентов, ассоциированных с каждым из неперекрывающихся диапазонов, причем масштабные коэффициенты включены в структуру данных. Восстановление кусочно-линейной функции может включать в себя, например, умножение каждого диапазона из неперекрывающихся диапазонов на масштабный коэффициент, ассоциированный с каждым диапазоном. После восстановления кусочно-линейная функция может предоставлять выходное значение для каждого возможного входного значения, причем входные значения являются значениями цвета из части входного видеокадра.
[0228] На этапе 1214 процесс 1200 включает в себя декодирование части видеокадра. Декодирование видеокадра может включать в себя выполнение этапов, которые, например, описываются ниже по отношению к фиг. 14.
[0229] На этапе 1216 из фиг. 12 процесс 1200 включает в себя применение кусочно-линейной функции к цветам в части видеокадра для выполнения регулировки динамического диапазона, как обсуждалось выше.
[0230] В некоторых примерах процесс 1200 дополнительно включает в себя определение из второго индикатора в структуре данных, что неперекрывающиеся диапазоны включают в себя второй диапазон с третьей длиной, причем третья длина отличается от второй длины. В этих примерах неперекрывающиеся диапазоны включают в себя два диапазона с отличными длинами от набора диапазонов. В этих примерах процесс 1200 может дополнительно включать в себя определение третьей длины из третьего значения в структуре данных.
[0231] Обсуждаемые в этом документе способы и операции можно реализовать с использованием сжатого видео и можно реализовать в примерной системе кодирования и декодирования видео (например, системе 100). В некоторых примерах система включает в себя устройство-источник, которое предоставляет кодированные видеоданные, которые нужно позднее декодировать с помощью устройства-адресата. Устройство-источник может, например, предоставлять видеоданные устройству-адресату на машиночитаемом носителе. В некоторых примерах машиночитаемый носитель – кратковременный. В некоторых примерах машиночитаемый носитель – постоянный. Устройство-источник и устройство-адресат могут быть любыми из широкого диапазона устройств, включая настольные компьютеры, блокнотные (то есть переносные) компьютеры, планшетные компьютеры, смартфоны, устройства сотовой связи, устройства беспроводной связи, ТВ-приставки, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, игровые приставки, устройство потоковой передачи видео или т.п. В некоторых случаях устройство-источник и устройство-адресат могут быть оборудованы для беспроводной связи.
[0232] Устройство-адресат может принимать кодированные видеоданные, которые нужно декодировать, посредством машиночитаемого носителя. Машиночитаемый носитель может быть любым типом носителя или устройства, допускающего перемещение кодированных видеоданных от устройства-источника к устройству-адресату. В одном примере машиночитаемый носитель может быть средством связи, чтобы дать устройству-источнику возможность передавать кодированные видеоданные непосредственно устройству-адресату в реальном масштабе времени. Кодированные видеоданные могут модулироваться в соответствии со стандартом связи, например протоколом беспроводной связи, и передаваться устройству-адресату. Средство связи может включать в себя любое средство беспроводной или проводной связи, например, радиочастотный (РЧ) спектр и/или одну или несколько физических линий передачи. Средство связи может образовывать часть пакетной сети, например, локальной сети, региональной сети или глобальной сети, такой как Интернет. Средство связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для упрощения связи от устройства-источника к устройству-адресату.
[0233] В некоторых примерах кодированные данные могут выводиться из интерфейса вывода в запоминающее устройство. Запоминающее устройство является одним примером постоянного машиночитаемого носителя. Аналогичным образом к кодированным данным можно обращаться из запоминающего устройства с помощью интерфейса ввода. Запоминающее устройство может включать в себя любой из широкого спектра распределенных или локально доступных носителей информации, например, магнитный, оптический или твердотельный накопитель, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители информации для хранения кодированных видеоданных. В дополнительном примере запоминающее устройство может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить кодированное видео, сформированное устройством-источником. Устройство-адресат может обращаться к сохраненным видеоданным из запоминающего устройства посредством потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, допускающего хранение кодированных видеоданных и передачу тех кодированных видеоданных устройству-адресату. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS) или локальный накопитель на дисках. Устройство-адресат может обращаться к кодированным видеоданным посредством любого стандартного информационного соединения, включая Интернет-соединение. Это соединение может включать в себя радиоканал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.п.) или сочетание их обоих, которое подходит для обращения к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из запоминающего устройства может быть потоковой передачей, загрузкой или их сочетанием.
[0234] Методики из данного раскрытия изобретения не ограничиваются беспроводными применениями или настройками. Методики могут применяться к кодированию видео для любого из широкого спектра мультимедийных применений, таких как эфирные телевизионные передачи, кабельные телевизионные передачи, спутниковые телевизионные передачи, передачи потокового видео по Интернету, например, динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носителе информации, декодирование цифрового видео, сохраненного на носителе информации, или других применений. В некоторых примерах система может конфигурироваться для поддержки однонаправленной или двунаправленной передачи видео для поддержки таких применений, как потоковая передача видео, воспроизведение видео, телевизионное вещание и/или видеотелефония.
[0235] В одном примере устройство-источник включает в себя источник видео, видеокодер и интерфейс вывода. Устройство-адресат может включать в себя интерфейс ввода, видеодекодер и устройство отображения. Видеокодер в устройстве-источнике может конфигурироваться для применения раскрытых в этом документе методик. В других примерах устройство-источник и устройство-адресат могут включать в себя другие компоненты или компоновки. Например, устройство-источник может принимать видеоданные из внешнего источника видео, например, внешней камеры. Также устройство-адресат может взаимодействовать с внешним устройством отображения вместо включения в себя встроенного устройства отображения.
[0236] Вышеприведенная примерная система является лишь одним примером. Методики для параллельной обработки видеоданных могут выполняться любым устройством кодирования и/или декодирования цифрового видео. Методики также могут выполняться кодером/декодером видео, обычно называемым "кодеком". Кроме того, методики из данного раскрытия изобретения также могут выполняться препроцессором видео. Устройство-источник и устройство-адресат – всего лишь примеры таких устройств кодирования, в которых устройство-источник формирует кодированные видеоданные для передачи устройству-адресату. В некоторых примерах устройства-источники и адресаты могут работать практически симметрично, так что каждое из устройств включает в себя компоненты кодирования и декодирования видео. Поэтому примерные системы могут поддерживать однонаправленную или двунаправленную передачу видео между видеоустройствами, например, для потоковой передачи видео, воспроизведения видео, телевизионного вещания или видеотелефонии.
[0237] Источник видео в устройстве-источнике может включать в себя устройство видеозахвата, например, видеокамеру, видеоархив, содержащий ранее захваченное видео, и/или интерфейс источника видеосигнала для приема видео от поставщика видеоконтента. В качестве дополнительного примера источник видео может формировать данные на основе компьютерной графики в качестве исходного видео, или сочетание "реального" видео, архивного видео и сформированного компьютером видео. В некоторых случаях, если источником видео является видеокамера, то устройство-источник и устройство-адресат могут образовывать, например, камерофоны или видеотелефоны. Однако, как упоминалось выше, описанные в данном раскрытии изобретения методики могут быть применимы к кодированию видео в целом и могут распространяться на беспроводные и/или проводные применения. В каждом случае захваченное, предварительно захваченное или сформированное компьютером видео может кодироваться видеокодером. Затем кодированная видеоинформация может выводиться с помощью интерфейса вывода на машиночитаемый носитель.
[0238] Как отмечалось, машиночитаемый носитель может включать в себя кратковременные носители, например, беспроводную широковещательную или проводную сетевую передачу, или носители информации (то есть постоянные носители информации), например жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, диск Blu-ray или другие машиночитаемые носители. В некоторых примерах сетевой сервер (не показан) может принимать кодированные видеоданные от устройства-источника и предоставлять кодированные видеоданные устройству-адресату, например, посредством сетевой передачи. Аналогичным образом вычислительное устройство из оборудования по производству носителей, например, оборудования по штамповке оптических дисков, может принимать кодированные видеоданные от устройства-источника и создавать диск, содержащий кодированные видеоданные. Поэтому в различных примерах можно понимать машиночитаемый носитель как включающий в себя один или несколько машиночитаемых носителей различных видов.
[0239] Интерфейс ввода в устройстве-адресате принимает информацию с машиночитаемого носителя. Информация с машиночитаемого носителя может включать в себя синтаксическую информацию, заданную видеокодером, которая также используется видеодекодером, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например, группы изображений (GOP). Устройство отображения отображает пользователю декодированные видеоданные и может включать в себя любое из широкого спектра устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения. Описаны различные варианты осуществления заявки.
[0240] Как отмечалось выше, устройство-источник может выполнять кодирование и, таким образом, включать в себя устройство кодирования для выполнения этой функции. Как также отмечалось выше, устройство-адресат может выполнять декодирование и, таким образом, может включать в себя устройство декодирования. Примерные подробности устройства 104 кодирования и устройства 112 декодирования из фиг. 1 показаны соответственно на фиг. 13 и фиг. 14. Фиг. 13 – блок-схема, иллюстрирующая примерное устройство 104 кодирования, которое может реализовать одну или несколько методик, описанных в данном раскрытии изобретения. Устройство 104 кодирования может, например, формировать описанные в этом документе синтаксические структуры (например, синтаксические структуры VPS, SPS, PPS или других синтаксических элементов). Устройство 104 кодирования может выполнять кодирование с внутренним предсказанием и внешним предсказанием видеоблоков в секциях видео. Как описывалось ранее, внутреннее кодирование опирается, по меньшей мере частично, на пространственное предсказание для уменьшения или устранения пространственной избыточности в заданном видеокадре или изображении. Внешнее кодирование опирается, по меньшей мере частично, на временное предсказание для уменьшения или устранения временной избыточности в соседних или окружающих кадрах видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких режимов пространственного сжатия. Внешние режимы, например, однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного сжатия.
[0241] Устройство 104 кодирования включает в себя узел 35 разделения, узел 41 обработки с предсказанием, фильтр 63, запоминающее устройство 64 изображений, сумматор 50, узел 52 обработки с преобразованием, узел 54 квантования и узел 56 энтропийного кодирования. Узел 41 обработки с предсказанием включает в себя узел 42 оценки движения, узел 44 компенсации движения и узел 46 обработки с внутренним предсказанием. Для восстановления видеоблока устройство 104 кодирования также включает в себя узел 58 обратного квантования, узел 60 обработки с обратным преобразованием и сумматор 62. Фильтр 63 предназначен для представления одного или нескольких контурных фильтров, например, фильтра уменьшения блочности, адаптивного контурного фильтра (ALF) и фильтра адаптивного смещения выборок (SAO). Хотя фильтр 63 показан на фиг. 13 как внутриконтурный фильтр, в других конфигурациях фильтр 63 можно реализовать в виде пост-контурного фильтра. Устройство 57 пост-обработки может выполнять дополнительную обработку над кодированными видеоданными, сформированными устройством 104 кодирования. Методики из данного раскрытия изобретения в некоторых случаях можно реализовать с помощью устройства 104 кодирования. Однако в иных случаях одну или несколько методик из данного раскрытия изобретения можно реализовать с помощью устройства 57 пост-обработки.
[0242] Как показано на фиг. 13, устройство 104 кодирования принимает видеоданные, и узел 35 разделения разделяет данные на видеоблоки. Разделение также может включать в себя разделение на секции, сегменты секции, фрагменты или другие более крупные единицы, а также разделение видеоблоков, например, в соответствии со структурой квадродерева в LCU и CU. В целом устройство 104 кодирования иллюстрирует компоненты, которые кодируют видеоблоки в секции видео, которую нужно кодировать. Секцию можно разделить на несколько видеоблоков (и, по возможности, на наборы видеоблоков, называемые фрагментами). Узел 41 обработки с предсказанием может выбирать один из нескольких возможных режимов кодирования, например, режимов кодирования с внутренним предсказанием или режимов кодирования с внешним предсказанием, для текущего видеоблока на основе результатов ошибок (например, скорости кодирования и уровня искажения, или т. п.). Узел 41 обработки с предсказанием может предоставить результирующий блок с внутренним или внешним кодированием в первый сумматор 50 для формирования данных остаточного блока и во второй сумматор 62 для восстановления кодированного блока для использования в качестве эталонного изображения.
[0243] Узел 46 обработки с внутренним предсказанием в узле 41 обработки с предсказанием может выполнять кодирование с внутренним предсказанием текущего видеоблока относительно одного или нескольких соседних блоков в том же кадре или секции в качестве текущего блока, который нужно кодировать для обеспечения пространственного сжатия. Узел 42 оценки движения и узел 44 компенсации движения в узле 41 обработки с предсказанием выполняют кодирование с внешним предсказанием текущего видеоблока относительно одного или нескольких блоков с предсказанием в одном или нескольких эталонных изображениях, чтобы обеспечить временное сжатие.
[0244] Узел 42 оценки движения может конфигурироваться для определения режима внешнего предсказания для секции видео в соответствии с заранее установленным шаблоном для видеопоследовательности. Заранее установленный шаблон может назначать секции видео в последовательности P-секциями, B-секциями или обобщенными P и B (GPB) секциями (секция, которая содержит идентичные списки эталонных изображений, список 0 и список 1). Узел 42 оценки движения и узел 44 компенсации движения могут быть существенно объединены, но иллюстрируются отдельно с концептуальной целью. Оценка движения, выполняемая узлом 42 оценки движения, является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения может, например, указывать перемещение единицы предсказания (PU) видеоблока в текущем видеокадре или изображении относительно блока с предсказанием в эталонном изображении.
[0245] Блок с предсказанием является блоком, который признан точно совпадающим с PU видеоблока, который нужно кодировать, в показателях разности пикселей, которая может определяться с помощью суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разности. В некоторых примерах устройство 104 кодирования может вычислять значения для положений субцелого пикселя в эталонных изображениях, сохраненных в запоминающем устройстве 64 изображений. Например, устройство 104 кодирования может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или положений другого дробного пикселя в эталонном изображении. Поэтому узел 42 оценки движения может выполнять поиск движения относительно положений полного пикселя и положений дробного пикселя и выводить вектор движения с точностью до дробного пикселя.
[0246] Узел 42 оценки движения вычисляет вектор движения для PU видеоблока в секции с внешним кодированием путем сравнения положения PU с положением блока с предсказанием в эталонном изображении. Эталонное изображение может выбираться из первого списка эталонных изображений (Список 0) или второго списка эталонных изображений (Список 1), каждый из которых идентифицирует одно или несколько эталонных изображений, сохраненных в запоминающем устройстве 64 изображений. Узел 42 оценки движения отправляет вычисленный вектор движения узлу 56 энтропийного кодирования и узлу 44 компенсации движения.
[0247] Компенсация движения, выполняемая узлом 44 компенсации движения, может включать в себя выборку или формирование блока с предсказанием на основе вектора движения, определенного путем оценки движения, по возможности выполняя интерполяции с точностью до субпикселя. После приема вектора движения для PU текущего видеоблока узел 44 компенсации движения может найти блок с предсказанием, на который указывает вектор движения, в списке эталонных изображений. Устройство 104 кодирования образует остаточный видеоблок путем вычитания значений пикселей блока с предсказанием из значений пикселей текущего кодируемого видеоблока, образуя значения разности пикселей. Значения разности пикселей образуют остаточные данные для блока и могут включать в себя компоненты разности яркости и цветности. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Узел 44 компенсации движения также может формировать синтаксические элементы, ассоциированные с видеоблоками и секцией видео, для использования устройством 112 декодирования при декодировании видеоблоков в секции видео.
[0248] Узел 46 обработки с внутренним предсказанием может внутренне предсказывать текущий блок в качестве альтернативы внешнему предсказанию, выполняемому узлом 42 оценки движения и узлом 44 компенсации движения, как описано выше. В частности, узел 46 обработки с внутренним предсказанием может определять режим внутреннего предсказания, чтобы использовать его для кодирования текущего блока. В некоторых примерах узел 46 обработки с внутренним предсказанием может кодировать текущий блок с использованием различных режимов внутреннего предсказания, например, во время отдельных проходов кодирования, и узел 46 обработки с внутренним предсказанием может выбирать для использования подходящий режим внутреннего предсказания из проверенных режимов. Например, узел 46 обработки с внутренним предсказанием может вычислять значения искажения в зависимости от скорости передачи, используя анализ искажения в зависимости от скорости передачи для различных проверенных режимов внутреннего предсказания, и может выбирать режим внутреннего предсказания с наилучшими характеристиками искажения в зависимости от скорости передачи среди проверенных режимов. Анализ искажения в зависимости от скорости передачи, как правило, определяет величину искажения (или ошибки) между кодированным блоком и исходным, некодированным блоком, который кодировался для создания кодированного блока, а также скорость передачи битов (то есть количество битов), используемую для создания кодированного блока. Узел 46 обработки с внутренним предсказанием может вычислять отношения из искажений и скоростей для различных кодированных блоков, чтобы определять, какой режим внутреннего предсказания демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0249] В любом случае после выбора режима внутреннего предсказания для блока узел 46 обработки с внутренним предсказанием может предоставить узлу 56 энтропийного кодирования информацию, указывающую выбранный режим внутреннего предсказания для того блока. Узел 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания. Устройство 104 кодирования может включать в передаваемые конфигурационные данные потока битов определения контекстов кодирования для различных блоков, а также указания наиболее вероятного режима внутреннего предсказания, таблицу индексов режимов внутреннего предсказания и таблицу индексов измененного режима внутреннего предсказания для использования для каждого из контекстов. Конфигурационные данные потока битов могут включать в себя таблицы индексов режима внутреннего предсказания и таблицы индексов измененного режима внутреннего предсказания (также называемые таблицами отображения кодовых слов).
[0250] После того, как узел 41 обработки с предсказанием формирует блок с предсказанием для текущего видеоблока посредством внешнего предсказания либо внутреннего предсказания, устройство 104 кодирования образует остаточный видеоблок путем вычитания блока с предсказанием из текущего видеоблока. Остаточные видеоданные в остаточном блоке можно включить в одну или несколько TU и применить к узлу 52 обработки с преобразованием. Узел 52 обработки с преобразованием преобразует остаточные видеоданные в остаточные коэффициенты преобразования с использованием некоего преобразования, например, дискретного косинусного преобразования (DCT) или концептуально сходного преобразования. Узел 52 обработки с преобразованием может преобразовывать остаточные видеоданные из области пикселей в область преобразования, например, частотную область.
[0251] Узел 52 обработки с преобразованием может отправить результирующие коэффициенты преобразования узлу 54 квантования. Узел 54 квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования можно изменять путем регулирования параметра квантования. В некоторых примерах узел 54 квантования затем может выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы или дополнительно сканирование может выполнить узел 56 энтропийного кодирования.
[0252] После квантования узел 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, узел 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервалы вероятности (PIPE) или другую методику энтропийного кодирования. После энтропийного кодирования узлом 56 энтропийного кодирования кодированный поток битов можно передавать устройству 112 декодирования или архивировать для последующей передачи или извлечения устройством 112 декодирования. Узел 56 энтропийного кодирования также может энтропийно кодировать векторы движения и другие синтаксические элементы для текущей кодируемой секции видео.
[0253] Узел 58 обратного квантования и узел 60 обработки с обратным преобразованием применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в области пикселей для последующего использования в качестве эталонного блока эталонного изображения. Узел 44 компенсации движения может вычислять эталонный блок путем добавления остаточного блока к блоку с предсказанием в одном из эталонных изображений в списке эталонных изображений. Узел 44 компенсации движения также может применять один или несколько интерполирующих фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелых пикселей для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, созданному узлом 44 компенсации движения, чтобы создать эталонный блок для сохранения в запоминающем устройстве 64 изображений. Эталонный блок может использоваться узлом 42 оценки движения и узлом 44 компенсации движения в качестве эталонного блока, чтобы внешне предсказывать блок в последующем видеокадре или изображении.
[0254] Таким образом, устройство 104 кодирования из фиг. 13 представляет пример видеокодера, сконфигурированного для формирования синтаксиса для кодированного потока битов видео. Устройство 104 кодирования может, например, формировать структуру данных, которая включает в себя параметры кусочно-линейной функции, как описано выше. Устройство 104 кодирования может выполнять любую из описанных в этом документе методик, включая процессы, описанные выше по отношению к фиг. 11 и 12. Методики в данном раскрытии изобретения в целом описаны по отношению к устройству 104 кодирования, но, как упоминалось выше, некоторые из методик в данном раскрытии изобретения также можно реализовать с помощью устройства 57 пост-обработки. Кроме того, можно использовать устройства помимо примерного устройства 104 кодирования с аналогичными или другими компонентами для выполнения описанных в этом документе методик.
[0255] Фиг. 14 – блок-схема, иллюстрирующая примерное устройство 112 декодирования. Устройство 112 декодирования включает в себя узел 80 энтропийного декодирования, узел 81 обработки с предсказанием, узел 86 обратного квантования, узел 88 обработки с обратным преобразованием, сумматор 90, фильтр 91 и запоминающее устройство 92 изображений. Узел 81 обработки с предсказанием включает в себя узел 82 компенсации движения и узел 84 обработки с внутренним предсказанием. В некоторых примерах устройство 112 декодирования может выполнять проход декодирования, в целом обратный по отношению к проходу кодирования, описанному по отношению к устройству 104 кодирования из фиг. 13.
[0256] Во время процесса декодирования устройство 112 декодирования принимает кодированный поток битов видео, который представляет собой видеоблоки кодированной секции видео и ассоциированные синтаксические элементы, отправленные устройством 104 кодирования. В некоторых примерах устройство 112 декодирования может принимать кодированный поток битов видео от устройства 104 кодирования. В некоторых примерах устройство 112 декодирования может принимать кодированный поток битов видео от сетевого объекта 79, например, сервера, информированного о среде сетевого элемента (MANE), пульта видеомонтажа или другого такого устройства, сконфигурированного для реализации одной или нескольких описанных выше методик. Сетевой объект 79 может включать или не включать в себя устройство 104 кодирования. Некоторые из описанных в данном раскрытии изобретения методик можно реализовать с помощью сетевого объекта 79 перед передачей сетевым объектом 79 кодированного потока битов видео в устройство 112 декодирования. В некоторых системах декодирования видео сетевой объект 79 и устройство 112 декодирования могут быть частями отдельных устройств, тогда как в иных случаях функциональные возможности, описанные по отношению к сетевому объекту 79, могут выполняться тем же устройством, что включает в себя устройство 112 декодирования.
[0257] Узел 80 энтропийного декодирования в устройстве 112 декодирования энтропийно декодирует поток битов для формирования квантованных коэффициентов, векторов движения и других синтаксических элементов. Узел 80 энтропийного декодирования перенаправляет векторы движения и другие синтаксические элементы в узел 81 обработки с предсказанием. Устройство 112 декодирования может принимать синтаксические элементы на уровне секции видео и/или уровне видеоблока. Узел 80 энтропийного декодирования может обрабатывать и анализировать синтаксические элементы фиксированной длины и синтаксические элементы переменной длины в одном или нескольких наборах параметров, например, VPS, SPS и PPS.
[0258] Когда секция видео кодируется в виде секции с внутренним кодированием (I), узел 84 обработки с внутренним предсказанием в узле 81 обработки с предсказанием может формировать данные предсказания для видеоблока текущей секции видео на основе сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в виде секции с внешним кодированием (то есть B, P или GPB), узел 82 компенсации движения в узле 81 обработки с предсказанием создает блоки с предсказанием для видеоблока текущей секции видео на основе векторов движения и других синтаксических элементов, принятых от узла 80 энтропийного декодирования. Блоки с предсказанием могут создаваться из одного из эталонных изображений в списке эталонных изображений. Устройство 112 декодирования может создавать списки эталонных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе эталонных изображений, сохраненных в запоминающем устройстве 92 изображений.
[0259] Узел 82 компенсации движения определяет информацию предсказания для видеоблока текущей секции видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков с предсказанием для текущего декодируемого видеоблока. Например, узел 82 компенсации движения может использовать один или несколько синтаксических элементов в наборе параметров для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков в секции видео, типа секции внешнего предсказания (например, B-секция, P-секция или GPB-секция), информации построения для одного или нескольких списков эталонных изображений для секции, векторов движения для каждого видеоблока с внешним кодированием в секции, состояния внешнего предсказания для каждого видеоблока с внешним кодированием в секции и другой информации для декодирования видеоблоков в текущей секции видео.
[0260] Узел 82 компенсации движения также может выполнять интерполяцию на основе интерполирующих фильтров. Узел 82 компенсации движения может использовать интерполирующие фильтры, которые использовались устройством 104 кодирования во время кодирования видеоблоков, чтобы вычислять интерполированные значения для субцелых пикселей эталонных блоков. В этом случае узел 82 компенсации движения может определять интерполирующие фильтры, используемые устройством 104 кодирования, из принятых синтаксических элементов и может использовать интерполирующие фильтры для создания блоков с предсказанием.
[0261] Узел 86 обратного квантования обратно квантует, или деквантует, квантованные коэффициенты преобразования, предоставленные в потоке двоичных сигналов и декодированные узлом 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного устройством 104 кодирования для каждого видеоблока в секции видео, чтобы определять степень квантования, а также степень обратного квантования, которую следует применять. Узел 88 обработки с обратным преобразованием применяет к коэффициентам преобразования обратное преобразование (например, обратное DCT или другое подходящее обратное преобразование), обратное целочисленное преобразование или концептуально сходный процесс обратного преобразования, чтобы создать остаточные блоки в области пикселей.
[0262] После того, как узел 82 компенсации движения сформирует блок с предсказанием для текущего видеоблока на основе векторов движения и других синтаксических элементов, устройство 112 декодирования образует декодированный видеоблок путем суммирования остаточных блоков от узла 88 обработки с обратным преобразованием с соответствующими блоками с предсказанием, сформированными узлом 82 компенсации движения. Сумматор 90 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. При желании контурные фильтры (либо в контуре кодирования, либо после контура кодирования) также могут использоваться для сглаживания переходов пикселей или иного повышения качества видео. Фильтр 91 предназначен для представления одного или нескольких контурных фильтров, например фильтра уменьшения блочности, адаптивного контурного фильтра (ALF) и фильтра адаптивного смещения выборок (SAO). Хотя фильтр 91 показан на фиг. 14 как внутриконтурный фильтр, в других конфигурациях фильтр 91 можно реализовать в виде пост-контурного фильтра. Затем декодированные видеоблоки в заданном кадре или изображении сохраняются в запоминающем устройстве 92 изображений, которое хранит эталонные изображения, используемые для последующей компенсации движения. Запоминающее устройство 92 изображений также хранит декодированное видео для последующего представления на устройстве отображения, например, видеоустройстве-адресате 122, показанном на фиг. 1.
[0263] Устройство 112 декодирования из фиг. 14 представляет пример видеодекодера, сконфигурированного для анализа синтаксиса кодированного потока битов видео и приблизительного воспроизведения исходных видеоданных для последующего отображения. Устройство декодирования может, например, анализировать структуру данных, которая включает в себя параметры кусочно-линейной функции, и применять кусочно-линейную функцию к декодированным данным для выполнения регулировки динамического диапазона, как обсуждалось выше. Устройство 112 декодирования может выполнять любую из обсуждаемых в этом документе методик, включая процессы, описанные выше по отношению к фиг. 11 и 12. Более того, можно использовать устройства помимо примерного устройства 112 декодирования с аналогичными или другими компонентами для выполнения описанных в этом документе методик.
[0264] В предшествующем описании аспекты заявки описываются со ссылкой на характерные варианты их осуществления, но специалисты в данной области техники признают, что заявка этим не ограничивается. Таким образом, хотя в этом документе подробно описаны пояснительные варианты осуществления заявки, нужно понимать, что идеи изобретения можно иным образом реализовать и применять, и что прилагаемую формулу изобретения нужно толковать как включающую в себя такие изменения за исключением ограничений от известного уровня техники. Различные признаки и аспекты вышеописанных примеров можно использовать отдельно или совместно. Кроме того, варианты осуществления можно использовать в любом количестве сред и применений помимо описанных в этом документе без отклонения от более широкой сущности и объема описания изобретения. Соответственно, описание изобретения и чертежи должны рассматриваться как пояснительные, а не ограничивающие. Для иллюстрации способы описывались в конкретном порядке. Следует принять во внимание, что в других вариантах осуществления способы могут выполняться в отличном от описанного порядке.
[0265] Там, причем компоненты описываются как "конфигурируемые" для выполнения некоторых операций, такой конфигурации можно достичь, например, путем проектирования электронных схем или других аппаратных средств для выполнения операции, путем программирования программируемых электронных схем (например, микропроцессоров или других подходящих электронных схем) для выполнения операции, или любого их сочетания.
[0266] Различные пояснительные логические блоки, модули, схемы и этапы алгоритмов, описанные применительно к раскрытым в этом документе вариантам осуществления, можно реализовать в виде электронных аппаратных средств, компьютерного программного обеспечения, микропрограммного обеспечения или их сочетаний. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные пояснительные компоненты, блоки, модули, схемы и этапы описаны выше в целом на основе их функциональных возможностей. Реализованы ли такие функциональные возможности как аппаратные средства или как программное обеспечение, зависит от конкретного применения и проектных ограничений, налагаемых на всю систему. Квалифицированные специалисты могут реализовать описанные функциональные возможности различными путями для каждого конкретного применения, но такие решения по реализации не следует интерпретировать как вызывающие отклонение от объема настоящей заявки.
[0267] Описанные в этом документе методики также можно реализовать в электронных аппаратных средствах, компьютерном программном обеспечении, микропрограммном обеспечении или любом их сочетании. Такие методики можно реализовать в любом из широкого спектра устройств, например, универсальных компьютерах, телефонах беспроводной связи или устройствах на интегральных схемах с несколькими использованиями, включая применение в телефонах беспроводной связи и других устройствах. Любые признаки, описанные в виде модулей или компонентов, можно реализовать вместе в интегральном логическом устройстве или отдельно в виде дискретных, но взаимодействующих логических устройств. При реализации в программном обеспечении методики можно осуществить, по меньшей мере, частично с помощью машиночитаемого носителя информации, который включает в себя программный код с командами, который при исполнении выполняет один или несколько описанных выше способов. Машиночитаемый носитель информации может образовывать часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Машиночитаемый носитель может включать в себя запоминающее устройство или носители информации, например оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители информации и т.п. Дополнительно или в качестве альтернативы методики можно осуществить по меньшей мере частично с помощью машиночитаемого средства связи, которое переносит либо сообщает программный код в виде команд или структур данных и к которому можно обращаться, считывать и/или исполнять с помощью компьютера, например распространяемых сигналов или волн.
[0268] Программный код может исполняться процессором, который может включать в себя один или несколько процессоров, например, один или несколько цифровых процессоров сигналов (DSP), универсальных микропроцессоров, специализированных интегральных схем (ASIC), программируемых пользователем логических матриц (FPGA) или других эквивалентных интегральных либо дискретных логических схем. Такой процессор может конфигурироваться для выполнения любой из методик, описанных в данном раскрытии изобретения. Универсальный процессор может быть микропроцессором; но в качестве альтернативы процессор может быть любым традиционным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также можно реализовать в виде сочетания вычислительных устройств, например, сочетания DSP и микропроцессора, нескольких микропроцессоров, одного или нескольких микропроцессоров совместно с ядром DSP или любой другой подобной конфигурации. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре, любому сочетанию вышеупомянутой структуры или к любой другой структуре или устройству, подходящих для реализации описанных в этом документе методик. К тому же в некоторых аспектах описанные в этом документе функциональные возможности могут быть предоставлены в специализированных программных модулях или аппаратных модулях, сконфигурированных для кодирования и декодирования, либо включены в объединенный кодер-декодер видео (кодек).