СПОСОБ КОНТЕНТНО-АДАПТИВНОГО ЭНТРОПИЙНОГО КОДИРОВАНИЯ ДАННЫХ О РЕЖИМАХ И ОПОРНЫХ ТИПАХ ДЛЯ ВИДЕО СЛЕДУЮЩЕГО ПОКОЛЕНИЯ
METHOD FOR CONTENT ADAPTIVE ENTROPY CODING OF DATA ON OPERATING CONDITIONS AND REFERENCE TYPES FOR NEXT GENERATION VIDEO

Уровень техники
Видео кодирующее устройство сжимает видеоинформацию таким образом, чтобы можно было больше информации передать в пределах заданной полосы частот. Сжатый сигнал может быть затем передан приемнику, имеющему декодер, осуществляющий декодирование или расширение сигнала перед его представлением на дисплее.
Стандарт «Высокоэффективного видео кодирования» (High Efficient Video Coding (HEVC)) представляет собой самый последний стандарт сжатия видео данных, разработанный Группой сотрудничества по видео кодированию (Joint Collaborative Team on Video Coding (JCT-VC)), созданной Группой экспертов по кинематографии МСО/МЭК (ISO/IEC Moving Picture Experts Group (MPEG)) и Группой экспертов по видео кодированию МСЭ (ITU-T Video Coding Experts Group (VCEG)). Стандарт HEVC был разработан в связи с тем, что предшествующий ему стандарт H.264/AVC (Advanced Video Coding) (усовершенствованное видео кодирование) не обеспечивал достаточного сжатия, необходимо для развивающихся видео приложений с повышенным разрешением. Аналогично предшествующим стандартам видео кодирования стандарт HEVC содержит базовые функциональные модули, такие как внутрикадровое/межкадровое прогнозирование, преобразование, квантование, контурную фильтрацию и энтропийное кодирование.
Современный стандарт HEVC может попытаться ослабить ограничения стандарта H.264/AVC, такие как ограниченный выбор допустимых единиц прогнозирования и единиц кодирования, ограничения допустимой генерации нескольких опор и прогнозов, ограничения размеров блоков преобразования и реальных преобразований, ограниченность механизмов для уменьшения артефактов, возникающих при кодировании, и неэффективные способы энтропийного кодирования. В то же время современный стандарт HEVC может использовать итеративный подход для решения этих проблем.
Например, при все более увеличивающемся разрешении видео, которое необходимо сжать, и ожиданиях достижения высокого качества изображения, соответствующие скорость передачи данных/ширина полосы пропускания, необходимые для стандартов кодирования, таких как Н.264, или даже более развитых и развивающихся стандартов, таких как H.265/HEVC, становятся относительно высокими. Упомянутые выше стандарты используют расширенные формы традиционных подходов, чтобы в неявном виде рассматривать проблему недостаточного сжатия/качества, но часто достигают лишь ограниченных результатов.
Настоящее изобретение, разработанное в контексте проекта кодека видео следующего поколения (Next Generation Video (NGV)), рассматривает общую проблему проектирования усовершенствованного видео кодека, который позволил бы максимально увеличить достижимую эффективность сжатия, оставаясь в то же время в достаточной степени практичным для применения в устройствах. Например, в условиях все возрастающего разрешения видео и ожиданий высокого качества изображения вследствие наличия хороших дисплеев, соответствующие скорость передачи данных/ширина полосы частот, требуемые при использовании существующих стандартов видео кодирования, таких как более ранние стандарты MPEG и даже сравнительно более недавний стандарт H.264/AVC, относительно высоки. Стандарт H.264/AVC не считается способным обеспечить достаточно высокую степень сжатия для развивающихся видео приложений с более высоким разрешением.
Краткое описание чертежей
Описываемый здесь материал проиллюстрирован прилагаемыми чертежами, служащими в качестве примеров, но не накладывающими ограничений на этот материал. Для простоты и ясности иллюстраций элементы, показанные на чертежах, не обязательно изображены в масштабе. Например, для большей ясности размеры некоторых элементов на чертеже могут быть увеличены относительно размеров других элементов. Кроме того, там, где это считается подходящим, позиционные обозначения и другие справочные надписи повторены на разных чертежах, чтобы отметить соответствующие или аналогичные элементы. На этих чертежах:
фиг. 1 представляет схему, иллюстрирующую пример видео кодирующего устройства следующего поколения;
фиг. 2 представляет схему, иллюстрирующую пример видео декодирующего устройства следующего поколения;
фиг. 3(a) представляет схему, иллюстрирующую пример видео кодирующего устройства и подсистем следующего поколения;
фиг. 3(b) представляет схему, иллюстрирующую пример видео декодирующего устройства и подсистем следующего поколения;
фиг. 4 представляет схему, иллюстрирующую пример модуля энтропийного кодирующего устройства;
фиг. 5 представляет схему, иллюстрирующую пример модуля энтропийного декодирующего устройства;
фиг. 6 представляет схему, иллюстрирующую пример модуля энтропийного кодирующего устройства;
фиг. 7 представляет схему, иллюстрирующую пример модуля энтропийного декодирующего устройства;
фиг. 8 представляет логическую схему, иллюстрирующую пример процесса;
фиг. 9 иллюстрирует пример потока битов данных;
фиг. 10 представляет логическую схему, иллюстрирующую пример процесса;
фиг. 11 представляет схему, иллюстрирующую пример системы видео кодирования и процесса видео кодирования;
фиг. 12 представляет логическую схему, иллюстрирующую пример процесса кодирования;
фиг. 13 иллюстрирует пример потока битов данных;
фиг. 14 представляет логическую схему, иллюстрирующую пример процесса декодирования;
фиг. 15(A), 15(B) и 15(C) представляет схему, иллюстрирующую пример системы видео кодирования и процесса видео кодирования;
фиг. 16 представляет схему, иллюстрирующую пример системы видео кодирования;
фиг. 17 представляет схему, иллюстрирующую пример системы;
фиг. 18 иллюстрирует пример устройства;
фиг. 19 представляет схему, иллюстрирующую пример структур кадров и зависимостей при прогнозировании;
фиг. 20 представляет схему, иллюстрирующую пример опорных типов прогнозирования;
фиг. 21 представляет логическую схему, иллюстрирующую пример процесса;
фиг. 22 представляет логическую схему, иллюстрирующую пример процесса;
фиг. 23 представляет логическую схему, иллюстрирующую пример процесса;
фиг. 24 представляет диаграмму, иллюстрирующую примеры разбиения и режимов для примера Р-кадра;
фиг. 25 представляет диаграмму, иллюстрирующую пример разбиения и режимов для примера Р-кадра;
фиг. 26 представляет диаграмму, иллюстрирующую пример разбиения и режимов для примера B/F-кадра;
фиг. 27 представляет диаграмму, иллюстрирующую пример разбиения и режимов для примера B/F-кадра;
фиг. 28 представляет диаграмму, иллюстрирующую пример межблочных опорных типов для примера Р-кадра;
фиг. 29 представляет диаграмму, иллюстрирующую пример межблочных опорных типов для примера Р-кадра;
фиг. 30 представляет диаграмму, иллюстрирующую пример межблочных опорных типов для примера B/F-кадра;
фиг. 31 представляет диаграмму, иллюстрирующую пример межблочных опорных типов для примера B/F-кадра, все организованы в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения.
Осуществление изобретения
Один или несколько вариантов реализации настоящего изобретения будут теперь описаны со ссылками на прилагаемые чертежи. Хотя здесь будут обсуждаться конкретные конфигурации и способы организации, следует понимать, что это делается исключительно для иллюстративных целей. Специалисты в соответствующей области должны понимать, что и другие конфигурации и способы могут быть использованы, не отклоняясь от смысла и объема настоящего изобретения. Специалистам в рассматриваемой области должно быть очевидно, что способы и/или конструкции, описываемые здесь, могут быть также применены в разнообразных других системах и приложениях, отличных от тех, которые рассматриваются здесь.
Хотя последующее описание предлагает разнообразные варианты реализации, которые могут быть выполнены в различных архитектурах, таких как архитектура системы на кристалле (system-on-a-chip (SoC)), например, реализация способов и/или конструкций, описываемых здесь, не ограничивается конкретными архитектурами и/или компьютерными системами и может быть осуществлена с использованием какой-либо другой архитектуры и/или компьютерной системы, подходящей для аналогичных целей. В качестве примера, для воплощения рассматриваемых здесь способов и/или конструкций могут быть использованы, например, несколько кристаллов и/или корпусов интегральных схем (integrated circuit (IC)), и/или разнообразные вычислительные устройства и/или устройства потребительской электроники (consumer electronic (СЕ)), такие как приставки, смартфоны и т.п. Далее, хотя в последующем описании могут быть приведены многочисленные конкретные подробности, такие как логические конфигурации, типы и взаимосвязи между компонентами системы, варианты логического разбиения/соединения и т.п., заявляемый предмет изобретения может быть реализован на практике и без таких конкретных подробностей. В других случаях некоторые материалы, такие как, например, структуры управления и полные последовательности команд программного обеспечения, могут быть не показаны подробно, чтобы не «затемнять» рассматриваемый здесь материал.
Рассматриваемый здесь материал может быть реализован в виде аппаратуры, встроенного программного обеспечения, загружаемого программного обеспечения или какого-либо сочетания этих компонентов. Рассматриваемый здесь материал может быть также реализован в виде команд, которые записаны на машиночитаемом носителе и которые могут быть прочитаны и выполнены одним или несколькими процессорами. Машиночитаемый носитель может представлять собой любой носитель и/или механизм для хранения или передачи информации в форме, читаемой машиной (например, компьютерным устройством). Например, такой машиночитаемый носитель может представлять собой постоянное запоминающее устройство (ПЗУ (ROM)); запоминающее устройство с произвольной выборкой (ЗУПВ (RAM)); магнитный диск для записи данных; оптический носитель записи; устройства флэш-памяти; электрические, оптические, акустические сигналы или распространяющиеся сигналы других видов (например, сигналы несущих, инфракрасные сигналы, цифровые сигналы и т.п.) и прочие носители.
Ссылки в настоящем описании на «один вариант реализации», «какой-либо вариант реализации», «пример варианта реализации» и т.п. указывают, что рассматриваемый вариант реализации может содержать конкретный признак, структуру или характеристику, но каждый вариант совсем не обязательно содержит этот конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно относятся к одному и тому же варианту реализации. Далее, когда какой-либо конкретный признак, структура или характеристика описаны в связи с каким-либо вариантом, предполагается, что знаний специалиста в рассматриваемой области будет достаточно, чтобы применить этот признак, структуру или характеристику в связи с другим вариантом реализации, независимо от того, было ли такое применение описано в явном виде, или нет.
Системы, устройства, изделия и способы, описанные ниже, относятся к контентно-адаптивному энтропийному кодированию для видео систем.
Ниже описаны видео системы, устройства, изделия и способы следующего поколения (Next generation video (NGV)). Видео кодирование NGV может обладать значительной адаптивностью на контентной основе в процессе видео кодирования, чтобы добиться более высокой степени сжатия. Как рассмотрено выше, стандарт H.264/AVC может иметь ряд ограничений, а современные попытки улучшить этот стандарт, такие как, например, стандарт HEVC, могут использовать итеративные подходы для решения проблем этих ограничений. Здесь будет рассмотрена NGV-система, содержащая кодирующее устройство и декодирующее устройство.
Например, стандарт Н.264 может поддерживать два режима энтропийного кодирования. В первом режиме коэффициенты преобразования адаптивного кодирования в коде переменной длины (Adaptive VLC (Variable Length Coding)) могут быть кодированы с использованием контекстно-зависимого адаптивного кодирования в коде переменной длины (Context Adaptive VLC (CAVLC)) а все другие синтаксические элементы (например, данные заголовка и другие служебные данные, режимы, векторы движения и т.п.) могут быть кодированы с использованием экспоненциального кодирования Голомба (Exponential Golomb coding). Данные, кодированные с применением способа CAVLC, и данные, кодированные с применением экспоненциальных кодов Голомба, могут быть мультиплексированы для генерации кодированного потока битов данных. Во втором режиме все данные могут быть кодированы с применением контекстно-зависимого адаптивного двоичного арифметического кодирования (Context Adaptive Binary Arithmetic Coding (CABAC)). Соответствующее декодирующее устройство также может работать в двух режимах - «разборки» и декодирования мультиплексированного потока битов данных в первом режиме и декодирования потока битов данных, кодированного способом САВАС, во втором режиме. Такие способы могут иметь ограничения. Например, кодирование способом САВАС может быть эффективно, но при этом оно может быть сложным, так что пропускная способность в контекстах с более высоким разрешением может быть ограничена. Далее, при группировании типов данных вместе для кодирования, эффективность и сложность энтропийного кодирования могут оказаться не оптимизированными.
В некоторых вариантах реализации видео кодека энтропийное кодирование и декодирование разнообразных данных, таких как данные заголовка и другие служебные данные, режимы, векторы движения и/или коэффициенты преобразования, могут вносить значительный вклад в эффективность кодирования и в сложность системы. В некоторых примерах, рассматриваемые здесь способы могут балансировать эффективность кодирования и сложность системы.
В некоторых вариантах модуль энтропийного кодирования может принимать первые видеоданные и вторые видеоданные для осуществления энтропийного кодирования этих видеоданных. Первые видеоданные и вторые видеоданные могут быть данными различных типов (например, данные заголовка, параметры морфинга, параметры синтеза, или данные глобального отображения, или векторы движения, или данные разбиения при внутрикадровом прогнозировании и т.п., как будет рассмотрено далее). Первый способ энтропийного кодирования может быть определен для первых видеоданных на основе параметра, ассоциированного с этими первыми видеоданными, такого как, например, число сжатых битов первых видеоданных, заданный индикатор или флаг, ассоциированный с первыми видеоданными, заданный пороговый уровень или эвристически определяемый пороговый уровень, либо другой подобный параметр. В некоторых примерах в качестве первого способа энтропийного кодирования может быть выбран способ адаптивного кодирования длин серий символов в коде переменной длины или адаптивное прокси-кодирование в коде переменной длины. Первые видеоданные могут быть кодированы посредством первого способа энтропийного кодирования. В некоторых примерах для вторых видеоданных может быть определен второй способ энтропийного кодирования на основе параметра, обсуждавшегося применительно к первым видеоданным. В некоторых примерах второй способ энтропийного кодирования может быть определен из совокупности опций, куда входят способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины, способ адаптивного векторного кодирования в коде переменной длины, способ адаптивного 1-мерного кодирования в коде переменной длины, способ адаптивного 2-мерного кодирования в коде переменной длины или какой-либо другой способ, как обсуждается здесь. В некоторых примерах второй способ энтропийного кодирования может быть задан заранее для типа данных, к которому относятся вторые видеоданные. В результате энтропийного кодирования первых видеоданных и вторых видеоданных можно получить первые сжатые видеоданные и вторые сжатые видеоданные. Первые и вторые сжатые видеоданные могут быть собраны воедино для генерации выходного потока битов данных.
Выходной поток битов данных может быть передан от кодирующего устройства декодирующему устройству, которое может «разобрать» этот поток битов данных для определения первых и вторых сжатых видеоданных. Сжатые видеоданные могут быть подвергнуты энтропийному кодированию для генерации энтропийно декодированных видеоданных, которые могут быть далее декодированы для получения видеокадра. Этот видеокадр может быть передан дисплейному устройству для представления пользователю.
В некоторых примерах для энтропийного кодирования в модуле энтропийного кодирования могут быть приняты видеоданные дополнительных типов. Например, третьи, четвертые, пятые, шестые, седьмые или более видеоданные могут быть подвергнуты энтропийному кодированию для генерации соответствующих сжатых видеоданных, которые могут быть собраны в выходном потоке битов данных, переданы и затем энтропийно декодированы в декодирующем устройстве. Такие разнообразные типы данных и возможные варианты (опции) способов кодирования/декодирования будут рассмотрены далее.
Используемый здесь термин «кодер» ("coder") может относиться к кодирующему устройству и/или к декодирующему устройству. Аналогично, используемый здесь термин «кодирующая обработка» ("coding") может относиться к осуществлению видео кодирования в кодирующем устройстве и/или к осуществлению видео декодирования в декодирующем устройстве. Например, и видео кодирующее устройство, и видео декодирующее устройство могут быть примерами кодеров, способных осуществлять кодирующую обработку видеоданных. Кроме того, используемый здесь термин «кодек» ("codec") может относиться к любому процессу, программе или набору операций, такому, например, как какое-либо сочетание загружаемого программного обеспечения, встроенного программного обеспечения и/или аппаратуры, которое может реализовать кодирующее устройство и/или декодирующее устройство. Кроме того, используемая здесь фраза «видеоданные» ("video data") может относиться к любому типу данных, ассоциированных с видео кодированием, таких как, например, видеокадры, данные изображения, кодированный поток битов данных или другие подобные данные.
Фиг. 1 представляет схему, иллюстрирующую пример кодирующего устройства 100 для кодирования видео следующего поколения, построенного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Как показано, кодирующее устройство 100 может принимать входное видео 101. Это входное видео 101 может представлять собой любое подходящее видео для кодирования, такое как, например, входные кадры видео последовательности. Как показано, входное видео может быть принято через модуль 102 предварительного анализа контента. Этот модуль 102 предварительного анализа контента может быть конфигурирован для осуществления анализа контента видеокадров входного видео 101 с целью определения разнообразных типов для повышения эффективности видео кодирования и скорости кодирования. Например, модуль 102 предварительного анализа контента может определить информацию о горизонтальном и вертикальном градиенте (например, Rs, Cs), дисперсии, пространственной сложности одного кадра, временной сложности одного кадра, обнаружении изменений сцены, оценке диапазона движения, определении усиления, оценке дистанции прогнозирования, оценке числа объектов, обнаружении границ области, вычислении карты пространственной сложности, оценке фокусировки, оценке зернистости пленки или других подобных параметрах. Параметры, генерируемые модулем 102 предварительного анализа контента, могут быть использованы кодирующим устройством 100 (например, через контроллер 103 кодирующего устройства) и/или квантованы и переданы декодирующему устройству. Как показано, видеокадры и/или другие данные могут быть переданы от модуля 102 предварительного анализа контента в модуль 104 адаптивной организации кадров, который может определить тип кадра (например, I-, Р- или F/B-кадр) для каждого видеокадра и переупорядочить видеокадры по мере необходимости. В некоторых примерах модуль 104 адаптивной организации кадров может содержать генератор фрагментов кадра, конфигурированный для генерации фрагментов кадров. В некоторых примерах модуль 102 предварительного анализа контента и модуль 104 адаптивной организации кадров можно совместно рассматривать как подсистему предварительного анализа в составе кодирующего устройства 100.
Как показано, видеокадры и/или другие данные могут быть переданы от модуля 104 адаптивной организации кадров в модуль 105 генератора единиц прогнозирования. В некоторых примерах этот модуль 105 генератора единиц прогнозирования может разбивать кадр на «плитки» или супер-фрагменты или на какие-то другие подобные части. В некоторых примерах устройство может содержать дополнительный модуль (например, между модулями 104 и 105) для разбиения кадра на «плитки» или супер-фрагменты. Модуль 105 генератора единиц прогнозирования может разбивать каждую плитку или супер-фрагмент на потенциальные единицы прогнозирования. В некоторых вариантах потенциальный тип разбиения на единицы прогнозирования может быть определен с использованием способа разбиения, такого как, например, как метод k-мерного (k-d) дерева, метод двоичного дерева или другой подобный способ, который может быть определен на основе типов (например, I-, Р- или F/B-кадр) индивидуальных видеокадров, характеристик фрагмента кадра, подвергаемого разбиению, или других подобных факторов. В некоторых примерах найденные потенциальные типы разбиения на единицы прогнозирования могут представлять единицы для конкретного прогнозирования (например, межкадрового или внутрикадрового прогнозирования) и могут быть описаны как единицы прогнозирования или блоки прогнозирования и т.п.
В некоторых примерах выбранный тип разбиения на единицы прогнозирования (например, единицы прогнозирования) может быть определен из совокупности потенциальных типов разбиения на единицы прогнозирования. Например, выбор типа разбиения на единицы прогнозирования может быть основан на определении, для каждого потенциального типа разбиения на единицы прогнозирования, прогнозов с использованием характеристик межкадрового прогнозирования на основе движения и нескольких опорных единиц или внутрикадрового прогнозирования, и определения параметров прогнозирования. Для каждого потенциального типа разбиения на единицы прогнозирования может быть найдена потенциальная погрешность прогнозирования посредством нахождения разности между исходными пикселями и прогнозируемыми пикселями, так что выбранный тип разбиения на единицы прогнозирования может представлять собой один из потенциальных типов разбиения на единицы прогнозирования, которому соответствует минимальная погрешность прогнозирования. В других примерах выбранный тип разбиения на единицы прогнозирования может быть определен на основе оптимизации искажений скорости, включая взвешенный подсчет на основе числа битов, используемых для кодирования единицы прогнозирования, и погрешности прогнозирования, ассоциированной с единицами прогнозирования для такого типа разбиения.
Как показано, в схеме вычитания 106 может быть найдена разность между исходными пикселями в выбранном разбиении на единицы прогнозирования (например, в единицах прогнозирования из состава текущего кадра) и прогнозируемыми пикселями (например, полученными в результате прогнозирования пикселей единицы прогнозирования в составе текущего кадра на основе опорного кадра или опорных кадров и других данных прогнозирования, таких как данные межкадрового или внутрикадрового прогнозирования). Процедура определения единиц прогнозирования будет рассмотрена ниже и может содержать контур декодирования, как показано на фиг. 1. Любые остатки или остаточные данные (например, данные погрешности единиц прогнозирования) после вычисления разности могут быть переданы в модуль 107 генератора единиц кодирования. В некоторых примерах, таких как внутрикадровое прогнозирование применительно к единицам прогнозирования в кадрах любого типа (I-, F7B- или Р-кадры), модуль 107 генератора единиц кодирования может быть обойден посредством переключателей 107а и 107b. В таких примерах может быть осуществлен только один уровень разбиения. Такие единицы разбиения могут быть описаны как единицы прогнозирования (как уже рассмотрено) или как единицы кодирования или и так, и так. В различных вариантах такое разбиение может быть выполнено посредством модуля 105 генератора единиц прогнозирования (как уже рассмотрено) или, как будет рассмотрено дальше, такое разбиение может быть осуществлено посредством модуля разбиения на единицы внутрикадрового прогнозирования/кодирования на основе k-мерного дерева или модуля разбиения на единицы внутрикадрового прогнозирования/кодирования на основе двумерного дерева, реализованного в виде модуля 107 генератора единиц кодирования.
В некоторых примерах данные погрешности единиц прогнозирования, если таковая имеется, могут быть не настолько значимыми, чтобы послужить основанием для кодирования этих данных. В других примерах, где может быть желательно кодировать данные погрешности единиц прогнозирования и где эти данные погрешности единиц прогнозирования ассоциированы с межкадровым прогнозированием или подобным прогнозированием, модуль 107 генератора единиц кодирования может определить единицы кодирования в составе единиц прогнозирования. В некоторых примерах модуль 107 генератора единиц кодирования может быть не нужен, поскольку разбиение может быть кодировано без выделения единиц кодирования (например, как показано по обходному пути, проходящему через переключатели 107а и 107b). Вместе с разбиением на единицы кодирования или без такого разбиения данные погрешностей единиц прогнозирования (которые в последующем в любом случае могут быть описаны как единицы кодирования) могут быть переданы в модуль 108 адаптивного преобразования, если остатки или остаточные данные требуют кодирования. В некоторых примерах модуль 105 генератора единиц прогнозирования и модуль 107 генератора единиц кодирования могут совместно рассматриваться в качестве подсистемы разбиения в составе кодирующего устройства 100. В различных примерах модуль 107 генератора единиц кодирования может оперировать над данными погрешностей единиц прогнозирования, данными исходных пикселей, остаточными данными или вейвлетными данными.
Модуль 107 генератора единиц кодирования может генерировать потенциальные типы разбиения на единицы кодирования (например, единицы кодирования) или, например, данные погрешностей единиц прогнозирования с использованием способов разбиения с применением двумерного и/или k-мерного дерева или других подобных способов. В некоторых примерах потенциальные единицы кодирования могут быть преобразованы с использованием адаптивного или фиксированного преобразования в блоки различного размера посредством модуля 108 адаптивного преобразования, а выбранный тип разбиения на единицы кодирования и выбранный вид преобразования (например, адаптивное или фиксированное) могут быть определены на основе оптимизации искажений скорости или на другой основе. В некоторых примерах выбранный тип разбиения на единицы кодирования и/или выбранные преобразования могут быть определены с применением заданного способа выбора на основе размера единиц кодирования или аналогичных факторов.
Например, модуль 108 адаптивного преобразования может содержать первую часть или компонент для осуществления параметрического преобразования, чтобы можно было произвести локально оптимальное кодирование с преобразованием применительно к блокам небольшого или среднего размера, и вторую часть или компонент для осуществления глобально устойчивого и обладающего небольшими издержками преобразования при кодировании с использованием фиксированного преобразования, такого как дискретное косинусное преобразование (discrete cosine transform (DCT)) или с преобразованием на основе кадров, из совокупности разнообразных преобразований, включая параметрическое преобразование, или какую-либо другую конфигурацию, как это будет обсуждаться далее. В некоторых примерах в качестве локально оптимального преобразования при кодировании может быть применено параметрическое преобразование Хаара (Parametric Haar Transform (РЫТ)), как это будет обсуждаться далее. В некоторых примерах преобразование может быть выполнено применительно к двумерным (2D) блокам прямоугольной формы с размерами в пределах от 4×4 пикселей до 64×64 пикселей, причем реальный размер блоков зависит от ряда факторов, таких как, являются ли преобразуемые блоки яркостными или цветностными, осуществляется ли межкадровое или внутрикадровое прогнозирование, или является применяемое преобразование параметрическим преобразованием Хаара (РНТ) или дискретным косинусным преобразованием (DCT) или еще каким-либо подобным преобразованием.
Как показано, полученные в результате коэффициенты преобразования могут быть переданы в модуль 109 адаптивного квантования. Этот модуль 109 адаптивного квантования может осуществлять квантование полученных коэффициентов преобразования. Кроме того, любые данные, ассоциированные с параметрическим преобразованием, могут быть, по мере необходимости, переданы либо в модуль 109 адаптивного квантования (если квантование нужно) или в модуль 110 адаптивного энтропийного кодирования. Кроме того, как показано на фиг. 1, квантованные коэффициенты можно сканировать и передать в модуль 110 адаптивного энтропийного кодирования. Этот модуль 110 адаптивного энтропийного кодирования может осуществить энтропийное кодирование квантованных коэффициентов и вставить их в выходной поток 111 битов данных. В некоторых примерах модуль 108 адаптивного преобразования и модуль 109 адаптивного квантования могут совместно считаться подсистемой преобразования при кодировании в составе кодирующего устройства 100.
Как показано на фиг. 1, кодирующее устройство 100 содержит локальный декодирующий контур. Этот локальный декодирующий контур может начинаться с модуля 112 адаптивного обратного квантования. Этот модуль 112 адаптивного обратного квантования может быть конфигурирован для осуществления операций, противоположных операциям модуля 109 адаптивного квантования, например, может быть выполнено обратное сканирование, и квантованные коэффициенты могут быть обратно пересчитаны для определения коэффициентов преобразования. Такая операция адаптивного квантования может быть операцией с потерями, например. Как показано, коэффициенты преобразования могут быть переданы в модуль 113 адаптивного обратного преобразования. Этот модуль 113 адаптивного обратного преобразования может осуществлять преобразование, обратное тому преобразованию, которое было выполнено модулем 108 адаптивного преобразования, например, для генерации остатков или остаточных величин или данных погрешностей единиц прогнозирования (или исходных данных, или вейвлетных данных, как обсуждается), ассоциированных с единицами кодирования. В некоторых примерах модуль 112 адаптивного обратного квантования и модуль 113 адаптивного обратного преобразования могут совместно считаться подсистемой преобразования при декодировании в составе кодирующего устройства 100.
Как показано, данные погрешностей единиц прогнозирования (или подобные данные) могут быть переданы в используемый в качестве опции модуль 114 сборки единиц кодирования. Этот модуль 114 сборки единиц кодирования может собирать единицы кодирования в декодированные единицы прогнозирования по мере необходимости (как показано, в некоторых примерах, модуль 114 сборки единиц кодирования может быть пропущен посредством переключателей 114а и 114b, так что такие декодированные единицы прогнозирования могли быть сформированы в модуле 113 адаптивного обратного преобразования) для генерации единиц прогнозирования с использованием данных погрешностей прогнозирования, или декодированных остаточных единиц прогнозирования или других подобных элементов.
Как показано, декодированные остаточные единицы прогнозирования могут быть суммированы с единицами прогнозирования (например, данными прогнозируемых пикселей) в сумматоре 115 для генерации реконструированных единиц прогнозирования. Эти реконструированные единицы прогнозирования могут быть переданы в модуль 116 сборки единиц прогнозирования. Этот модуль 116 сборки единиц прогнозирования может собирать реконструированные единицы прогнозирования для генерации реконструированных плиток или супер-фрагментов. В некоторых примерах модуль 114 сборки единиц кодирования и модуль 116 сборки единиц прогнозирования могут совместно считаться подсистемой устранения разбиения в составе кодирующего устройства 100.
Реконструированные плитки и супер-фрагменты могут быть переданы в модуль 117 анализа блочности и деблокирующей фильтрации. Этот модуль 117 анализа блочности и деблокирующей фильтрации может устранить блочные искажения и «дрожание» реконструированных плиток и супер-фрагментов (или единиц прогнозирования для таких плиток или супер-фрагментов). Сформированные параметры фильтра для устранения блочных искажений и дрожания могут быть использованы для работы фильтра в текущий момент и/или кодированы в выходном потоке 111 битов данных для использования декодирующим устройством, например. Выходной сигнал модуля 117 анализа блочности и деблокирующей фильтрации может быть передан в модуль 118 анализа качества и фильтрации для восстановления качества. Модуль 118 анализа качества и фильтрации для восстановления качества может определять параметры фильтрации для восстановления качества (QR-фильтрации) (например, для QR-разложения) и использовать найденные параметры для фильтрации. Параметры QR-фильтрации могут быть также кодированы в составе выходного потока 111 битов данных для использования декодирующим устройством. Как показано, выходной сигнал модуля 118 анализа качества и фильтрации для восстановления качества может быть передан в буфер 119 декодированных кадров. В некоторых примерах выходной сигнал модуля 118 анализа качества и фильтрации для восстановления качества может представлять собой конечный реконструированный кадр, который может быть использован для прогнозирования при кодировании других кадров (например, конечный реконструированный кадр может быть опорным кадром или подобным объектом). В некоторых примерах модуль 117 анализа блочности и деблокирующей фильтрации и модуль 118 анализа качества и фильтрации для восстановления качества могут совместно считаться подсистемой фильтрации в составе кодирующего устройства 100.
В кодирующем устройстве 100 операции прогнозирования могут представлять собой операции межкадрового и/или внутрикадрового прогнозирования. Как показано на фиг. 1(a), межкадровое прогнозирование может быть выполнено посредством одного или несколько модулей и в том числе модуля 120 анализа морфинга и генерации преобразованных кадров, модуля 121 анализа и генерации синтезированных кадров и модуля 123 прогнозирования характеристик и фильтрации с компенсацией движения. Модуль 120 анализа морфинга и генерации преобразованных кадров может анализировать текущий кадр с целью определения параметров для изменений коэффициента передачи, изменений в доминирующем движении, изменений в совмещении и изменений в размытости контура относительно опорного кадра или кадров, с использованием которых текущий кадр может быть кодирован. Найденные параметры морфинга могут быть квантованы/деквантованы и использованы (например, модулем 120 анализа морфинга и генерации преобразованных кадров) для генерации преобразованных опорных кадров, которые могут быть использованы модулем 122 оценки движения для вычисления векторов движения с целью эффективного прогнозирования текущего кадра с компенсацией движения (и характеристик). Модуль 121 анализа и генерации синтезированных кадров может генерировать кадры со сверхразрешением (super resolution (SR.)) кадры и проецируемые интерполированные (projected interpolation (PI)) кадры или подобные кадры для оценки движения с целью определения векторов движения для эффективного прогнозирования с компенсацией движения в этих кадрах.
Модуль 122 оценки движения может генерировать данные вектора движения на основе преобразованных опорных кадров и или кадров со сверхразрешением (SR) и проецируемых интерполированных (PI) кадров вместе с текущим кадром. В некоторых примерах модуль 122 оценки движения может считаться модулем межкадрового прогнозирования. Например, данные векторов движения могут быть использованы для межкадрового прогнозирования. Если применяется межкадровое прогнозирование, модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения может применять компенсацию движения в качестве части локального декодирующего контура, как обсуждалось.
Внутрикадровое прогнозирование может быть осуществлено посредством модуля 124 анализа и генерации при направленном внутрикадровом прогнозировании. Этот модуль 124 анализа и генерации при направленном внутрикадровом прогнозировании может быть конфигурирован для осуществления направленного пространственного прогнозирования и может использовать декодированные соседние единицы разбиения. В некоторых примерах модуль 124 анализа и генерации при направленном внутрикадровом прогнозировании осуществляет и определение направления, и генерацию прогноза. В некоторых примерах модуль 124 анализа и генерации при направленном внутрикадровом прогнозировании может считаться модулем внутрикадрового прогнозирования.
Как показано на фиг. 1, модуль 125 анализатора режимов прогнозирования и опорных типов может позволить выбрать режим прогнозирования из совокупности «пропуск» ("skip"), «авто» ("auto"), «межкадровый» ("inter"), «разбиение» ("split"), «мульти» ("multi") и «внутрикадровый» ("intra") для каждой единицы прогнозирования в составе плитки (или супер-фрагмента), так что все эти режимы могут быть применены к Р- и F/B-кадрам. В дополнение к режимам прогнозирования модуль позволяет также выбрать опорные типы, которые могут различаться в зависимости от режима "inter" или "multi", а также для Р- и F/B-кадров. Прогнозируемый сигнал на выходе модуля 125 анализатора режимов прогнозирования и опорных типов может быть фильтрован посредством модуля 126 анализа прогнозирования и фильтрации слияния при прогнозировании. Этот модуль 126 анализа прогнозирования и фильтрации слияния при прогнозировании может определять параметры (например, коэффициенты фильтрации, частоту, издержки) для использования при фильтрации и может осуществлять фильтрацию. В некоторых примерах фильтрация прогнозируемого сигнала может приводить к слиянию сигналов разных типов, представляющих различные режимы (например, «intra», «inter», «multi», «split», «skip» и «auto»). В некоторых примерах сигналы внутрикадрового прогнозирования могут отличаться от всех прочих сигналов межкадрового прогнозирования, так что правильная фильтрация может значительно повысить эффективность кодирования. В некоторых примерах параметры фильтрации могут быть кодированы в выходном потоке 111 битов данных для использования декодирующим устройством. Фильтрованный прогнозируемый сигнал может быть вторым входным сигналом (например, в качестве единиц прогнозирования) для схемы 106 вычитания, как обсуждается выше, и тем самым может определять разностный прогнозируемый сигнал (например, погрешность единиц прогнозирования) для кодирования, обсуждавшийся ранее. Далее, тот же самый фильтрованный прогнозируемый сигнал может быть вторым входным сигналом для сумматора 115, также уже обсуждавшегося выше. Как уже обсуждено выше, выходной поток 111 битов данных может быть эффективно кодированным потоком битов данных для использования декодирующим устройством при представлении видео.
Фиг. 1 иллюстрирует пример сигналов управления, ассоциированных с работой видео кодирующего устройства 100, где следующие аббревиатуры могут представлять ассоциированную информацию:
scnchg
Информация об изменениях сцены
spcpx
Информация о пространственной сложности
tpcpx
Информация о временной сложности
pdist
Информация о временной дистанции прогнозирования
рар
Параметры предварительного анализа (заместитель для всех других параметров предварительного анализа за исключением scnchg, spcpx, tpcpx, pdist)
ptyp
Информация о типе кадра
pgst
Информация о структуре группы кадров
pptn cand.
Кандидаты типов разбиения на единицы прогнозирования
cptn cand.
Кандидаты типов разбиения на единицы кодирования
prp
Предварительная обработка
xmtyp
Информация о типе преобразования
xmdir
Информация о направлении преобразования
xmmod
Режим преобразования
ethp
Прогнозирование движения до одной восьмой (1/8-ая) пикселя
pptn
Разбиение на единицы прогнозирования
cptn
Разбиение на единицы кодирования
mot&cod cost
Движение и цена кодирования
qs
набор информации квантования (включает выбор матрицы квантования (Quantizer matrix (QM))
mv
Векторы движения
mop
Параметры морфинга
syp
Параметры синтеза
ddi
Информация о деблокировании и дрожании
qri
Индекс/информация о фильтрации для восстановления качества
api
Индекс/информация о фильтрации с адаптивной точностью
fii
Индекс/информация о фильтрации слияния
mod
Информация о режиме
reftyp
Информация об опорном типе
idir
Направление внутрикадрового прогнозирования
Разнообразные сигналы и объекты данных, которые может понадобиться передать декодирующему устройству, а именно, pgst, ptyp, prp, pptn, cptn, modes, reftype, ethp, xmtyp, xmdir, xmmod, idir, mv, qs, mop, syp, ddi, qri, api, fii, коэффициенты квантования и другие параметры, могут быть подвергнуты энтропийному кодированию посредством модуля 110 адаптивного энтропийного кодирования, который может содержать различные энтропийные кодеры, коллективно именуемые подсистемой энтропийных кодирующих устройств. Хотя эти сигналы управления показаны, как ассоциированные с конкретными примерами функциональных модулей в составе кодирующего устройства 100, представленного на фиг. 1, другие варианты реализации могут иметь различные распределения сигналов управления между функциональными модулями в составе кодирующего устройства 300. Настоящее изобретение ничем не ограничивается в этом отношении и, в различных примерах, реализация сигналов управления может содержать только подмножество показанных конкретных сигналов управления, дополнительные сигналы управления и/или сочетания этих сигналов управления, отличные от показанных здесь сочетаний.
Фиг. 2 представляет схему, иллюстрирующую пример видео декодирующего устройства 200 следующего поколения, построенного в соответствии по меньшей с некоторыми вариантами реализациями настоящего изобретения. Как показано, декодирующее устройство 200 может принимать входной поток 201 битов данных. В некоторых вариантах входной поток 201 битов данных может быть кодирован посредством кодирующего устройства 100 и/или с использованием способов кодирования, описанных здесь. Как показано, входной поток 201 битов данных может быть принят модулем 202 адаптивного энтропийного декодирования. Этот модуль 202 адаптивного энтропийного декодирования может декодировать разнообразные типы кодированных данных (например, данные издержек (служебную информацию), векторы движения, коэффициенты преобразования и т.п.). В некоторых примерах модуль 202 адаптивного энтропийного декодирования может использовать способ декодирования кодов переменной длины. В некоторых примерах модуль 202 адаптивного энтропийного декодирования может осуществлять операции, обратные операциям модуля 110 адаптивного энтропийного кодирования, обсуждавшимся выше.
Декодированные данные могут быть переданы в модуль 203 адаптивного обратного квантования. Модуль 203 адаптивного обратного квантования может быть конфигурирован для обратного сканирования и обратного пересчета квантованных коэффициентов с целью определения коэффициентов преобразования. Такая операция адаптивного квантования может быть операцией с потерями, например. В некоторых примерах модуль 203 адаптивного обратного квантования может быть конфигурирован для выполнения операций, противоположных операциям модуля 109 адаптивного квантования (например, по существу таких же операций, как модуль 112 адаптивного обратного квантования). Как показано, коэффициенты преобразования (и, в некоторых примерах, данные преобразования для использования при параметрическом преобразовании) могут быть переданы в модуль 204 адаптивного обратного преобразования. Этот модуль 204 адаптивного обратного преобразования может осуществлять обратное преобразование применительно к коэффициентам преобразования для генерации остатков или остаточных величин или данных погрешностей единиц прогнозирования (или исходных данных или вейвлетных данных), ассоциированных с единицами кодирования. В некоторых примерах модуль 204 адаптивного обратного преобразования может быть конфигурирован для осуществления операций, противоположных операциям модуля 108 адаптивного преобразования (например, по существу таких же операций, как модуль 113 адаптивного обратного преобразования). В некоторых примерах модуль 204 адаптивного обратного преобразования может осуществлять обратное преобразование на основе других ранее декодированных данных, таких, например, как декодированные соседние единицы разбиения. В некоторых примерах модуль 203 адаптивного обратного квантования и модуль 204 адаптивного обратного преобразования могут совместно считаться подсистемой преобразования при декодировании в составе декодирующего устройства 200.
Как показано, остатки или остаточные величины или данные погрешностей единиц прогнозирования могут быть переданы в модуль 205 сборки единиц кодирования. Этот модуль 205 сборки единиц кодирования может собирать единицы кодирования в декодированные единицы прогнозирования по мере необходимости (как показано в некоторых примерах, модуль 205 сборки единиц кодирования может быть пропущен посредством переключателей 205а и 205b, так что декодированные единицы прогнозирования могут быть сформированы в модуле 204 адаптивного обратного преобразования). Декодированные данные единиц разбиения данных погрешностей прогнозирования (например, остатки единиц прогнозирования) могут быть суммированы с единицами прогнозирования (например, с данными прогнозируемых пикселей) в сумматоре 206 для генерации реконструированных единиц прогнозирования. Эти реконструированные единицы прогнозирования могут быть переданы в модуль 207 сборки единиц прогнозирования. Этот модуль 207 сборки единиц прогнозирования может собирать реконструированные единицы прогнозирования для генерации реконструированных плиток или супер-фрагментов. В некоторых примерах модуль 205 сборки единиц кодирования и модуль 207 сборки единиц прогнозирования могут совместно считаться подсистемой устранения разбиения в составе декодирующего устройства 200.
Реконструированные плитки или супер-фрагменты могут быть переданы в модуль 208 деблокирующей фильтрации. Этот модуль 208 деблокирующей фильтрации может устранять блочные искажения и «дрожание» реконструированных плиток или супер-фрагментов (или единиц прогнозирования в составе этих плиток или супер-фрагментов). Сформированные параметра фильтра для устранения блочных искажений и дрожания могут быть определены из входного потока 201 битов данных, например. Выходной сигнал модуля 208 деблокирующей фильтрации может быть передан в модуль 209 фильтрации для восстановления качества. Этот модуль 209 фильтрации для восстановления качества может применять фильтрацию качества на основе QR-параметров, которые могут быть определены из входного потока 201 битов данных, например. Как показано на фиг. 2, выходной сигнал модуля 209 фильтрации для восстановления качества может быть передан в буфер 210 декодированных кадров. В некоторых примерах выходной сигнал модуля 209 фильтрации для восстановления качества может представлять собой конечный реконструированный кадр, который может быть использован для прогнозирования при кодировании других кадров (например, такой конечный реконструированный кадр может быть опорным кадром или другим подобным объектом). В некоторых примерах модуль 208 деблокирующей фильтрации и модуль 209 фильтрации для восстановления качества могут совместно считаться подсистемой фильтрации в составе декодирующего устройства 200.
Как обсуждалось выше, компенсация в связи с операциями прогнозирования может быть компенсацией при межкадровом и/или внутрикадровом прогнозировании. Как показано, компенсация при межкадровом прогнозировании может быть выполнена одним или несколькими модулями, и в том числе модулем 211 генерации морфинга, модулем 212 генерации синтеза и модулем 213 прогнозирования характеристик и фильтрации с компенсацией движения. Модуль 211 генерации морфинга может использовать деквантованные параметры морфинга (например, определенные из входного потока 201 битов данных) для генерации преобразованных опорных кадров. Модуль 212 генерации синтеза может генерировать кадры со сверхразрешением (SR) и проецируемые интерполированные (PI) кадры или подобные кадры на основе параметров, определяемых из входного потока 201 битов данных. Если применяется межкадровое прогнозирование, модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения может выполнять компенсацию движения на основе принятых кадров и данных векторов движения или других подобных данных во входном потоке 201 битов данных.
Компенсация при внутрикадровом прогнозировании может быть осуществлена посредством модуля 214 генерации при направленном внутрикадровом прогнозировании. Этот модуль 214 генерации при направленном внутрикадровом прогнозировании может быть конфигурирован для осуществления направленного пространственного прогнозирования и может использовать декодированные соседние единицы в соответствии с данными внутрикадрового прогнозирования во входном потоке 201 битов данных.
Как показано на фиг. 2, модуль 215 селектора режимов прогнозирования может выбирать режим прогнозирования из совокупности режимов "skip", "auto", "inter", "multi" и "intra" для каждой единицы прогнозирования в составе плитки, так что все эти режимы могут применяться к Р- и F/B-кадрам, на основе данных выбора режима из входного потока 201 битов данных. В дополнение к режимам прогнозирования модуль может также выбирать опорные типы, которые могут различаться в зависимости от режима "inter" или "multi", равно как и для Р- и Е/В-кадров. Прогнозируемый сигнал на выходе модуля 215 селектора режимов прогнозирования может быть подвергнут фильтрации в модуле 216 фильтрации слияния при прогнозировании. Этот модуль 216 фильтрации слияния при прогнозировании может осуществлять фильтрацию на основе параметров (например, коэффициентов фильтрации, частоты, издержек), определяемых из входного потока 201 битов данных. В некоторых примерах при фильтрации прогнозируемого сигнала может происходить слияние сигналов различных типов, представляющих разные режимы (например, «intra», «inter», «multi», «skip» и «auto»). В некоторых примерах сигналы при внутрикадровом прогнозировании могут отличаться от всех других типов сигналов при межкадровом прогнозировании, так что правильная фильтрация способна значительно повысить эффективность кодирования. Фильтрованный прогнозируемый сигнал может быть вторым входным сигналом (например, единицы прогнозирования) для схемы 206 вычитания, как обсуждается выше.
Как обсуждалось, выходной сигнал модуля 209 фильтрации для восстановления качества может представлять собой конечный реконструированный кадр. Конечные реконструированные кадры могут быть переданы в модуль 217 адаптивной реорганизации кадров, который может переупорядочить или реорганизовать кадры, по мере необходимости, на основе параметров переупорядочения из входного потока 201 битов данных. Переупорядоченные кадры могут быть переданы в модуль 218 пост-восстановления контента. Этот модуль 218 пост-восстановления контента может быть необязательным модулем (опцией), конфигурированным для дальнейшего улучшения воспринимаемого качества декодированного видео. Такая совершенствующая обработка может быть произведена в соответствии с параметрами повышения качества во входном потоке 201 битов данных, либо может быть осуществлена в качестве автономной операции. В некоторых примерах модуль 218 пост-восстановления контента может использовать параметры для повышения качества, такие как, например, оценка шумов зернистости пленки или уменьшения остаточной блочности (например, даже после выполнения деблокирующих операций, обсуждавшихся в связи с модулем 208 деблокирующей фильтрации). Как показано, декодирующее устройство 200 может генерировать видео 219, которое может быть конфигурировано для представления на дисплейном устройстве (не показано).
Фиг. 2 иллюстрирует пример сигналов управления, ассоциированных с работой видео декодирующего устройства 200, где показанные аббревиатуры могут представлять информацию, аналогичную информации, обсуждавшейся выше применительно к фиг. 1. Тогда как эти сигналы управления показаны в привязке к конкретным примерам функциональных модулей декодирующего устройства 200, изображенного на фиг. 4, другие варианты реализации могут иметь другое распределение сигналов управления между функциональными модулями кодирующего устройства 100. Настоящее изобретение в этом отношении не ограничено, так что в различных примерах может быть использовано только подмножество показанных конкретных сигналов управления, могут быть добавлены дополнительные сигналы управления и/или конфигурация сигналов управления может отличаться от представленной на чертеже.
Хотя на фиг. 1 и 2 показаны конкретные кодирующее и декодирующее устройства, согласно настоящему изобретению могут быть использованы разнообразные другие кодирующие и декодирующие устройства или компоненты, не показанные на этих чертежах. Кроме того, настоящее изобретение не ограничивается конкретными компонентами, показанными на фиг. 1 и 2, и/или способом организации и связей этих компонентов. Разнообразные компоненты систем, описываемых здесь, могут быть реализованы посредством загружаемого программного обеспечения, встроенного программного обеспечения и/или аппаратуры и/или какого-либо сочетания перечисленных средств. Например, разнообразные компоненты кодирующего устройства 100 и/или декодирующего устройства 200 могут быть построены, по меньшей мере частично, на основе аппаратуры компьютерных систем-на-кристалле (System-on-a-Chip (SoC)), какие можно найти в такой компьютерной системе как, например, мобильный телефон.
Далее, понятно, что кодирующее устройство 100 может быть ассоциировано с и/или предоставлено системой провайдера контента, включая, например, систему сервера видео контента, и что выходной поток 111 битов данных может быть передан декодирующим устройствам, таким как, например, декодирующее устройство 200, с использованием различных компонентов и/или систем связи, таких как приемопередатчики, антенны, сетевые системы и другие подобные компоненты и системы, не показанные на фиг. 1 и 2. Понятно также, что декодирующее устройство 200 может быть ассоциировано с клиентской системой, такой как компьютерное устройство (например, настольный компьютер, портативный компьютер, планшетный компьютер, конвертируемый портативный компьютер, мобильный телефон или другое подобное устройство), удаленное от кодирующего устройства 100 и принимающего входной поток 201 битов данных через различные компоненты и/или системы связи, такие как приемопередатчики, антенны, сетевые системы и другие подобные компоненты, и системы, не показанные на фиг. 1 и 2. Таким образом, в различных вариантах, подсистемы кодирующего устройства 100 и декодирующего устройства 200 могут быть реализованы совместно или независимо одна от другой.
Фиг. 3(a) представляет схему, иллюстрирующую пример кодирующего устройства 300а для видео следующего поколения, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. На фиг. 3(a) представлено кодирующее устройство, аналогичное тому, что изображено на фиг. 1(a) и 1(b), так что подобные элементы для краткости повторены не будут. Как показано на фиг. 3(a), кодирующее устройство 300а может содержать подсистему 310а предварительного анализа, подсистему 320а разбиения, подсистему 330а прогнозирования при кодировании, подсистему 340а преобразования при кодировании, подсистему 350а фильтрации при кодировании, подсистему 360а энтропийного кодирования, подсистему 370а преобразования при декодировании и/или подсистему 380а устранения разбиения. Подсистема 310а предварительного анализа может содержать модуль 102 предварительного анализа контента и/или модуль 104 адаптивной организации кадров. Подсистема 320а разбиения может содержать модуль 105 генератора единиц прогнозирования и/или модуль 107 генератор единиц кодирования. Подсистема 330а кодирования с прогнозированием может содержать модуль 122 оценки движения, модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения и/или модуль 124 анализа и генерации при направленном внутрикадровом прогнозировании. Подсистема 340а преобразования при кодировании может содержать модуль 108 адаптивного преобразования и/или модуль 109 адаптивного квантования. Подсистема 350а фильтрации при кодировании может содержать модуль 117 анализа блочности и деблокирующей фильтрации, модуль 118 анализа качества и фильтрации для восстановления качества, модуль 122 оценки движения, модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения и/или модуль 126 анализа прогнозирования и фильтрации слияния при прогнозировании. Подсистема 360а энтропийного кодирования может содержать модуль 110 адаптивного энтропийного кодирования. Подсистем 370а преобразования при декодировании может содержать модуль 112 адаптивного обратного квантования и/или модуль 113 адаптивного обратного преобразования. Подсистема 380а устранения разбиения может содержать модуль 114 сборки единиц кодирования и/или модуль 116 сборки единиц прогнозирования.
Подсистема 320а разбиения в составе кодирующего устройства 300а может содержать две подсистемы разбиения: модуль 105 генератора единиц прогнозирования, который может осуществлять анализ и разбиение для прогнозирования, и модуль 107 генератора единиц кодирования, который может осуществлять анализ и разбиение для кодирования. Другой способ разбиения может использовать модуль 104 адаптивной организации кадров, который способен сегментировать кадры, разделяя их на области или срезы, и тоже может считаться частью этой подсистемы.
Подсистема 330а прогнозирования при кодировании в составе кодирующего устройства 300а может содержать модуль 122 оценки движения и модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения, которые могут осуществлять анализ и прогнозирование сигнала режима "inter", и модуль 124 анализа и генерации при направленном внутрикадровом прогнозировании, который может осуществлять анализ и прогнозирование сигнала режима "intra". Модуль 122 оценки движения и модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения могут позволить увеличить прогнозируемость посредством сначала компенсации других источников различий (таких как коэффициент передачи, глобальное движение, совмещение), а затем компенсации реального движения. Они могут также позволить использовать моделирование данных для создания синтезированных кадров (сверхразрешение и проекция), что может дать возможность улучшить прогнозирование с последующей компенсацией реального движения в таких кадрах.
Подсистема 340а преобразования при кодировании в составе кодирующего устройства 300а может осуществлять анализ для выбора типа и размерности преобразования и может содержать два главных типа компонентов. Первый тип компонентов может позволить использование параметрическое преобразования для кодирования с локально оптимальным преобразованием блоков небольшого или среднего размера; такое кодирование, однако, может потребовать некоторых издержек. Второй тип компонентов может позволить глобально устойчивое кодирование с небольшими издержками за счет использования обобщенного/фиксированного преобразования, такого как преобразование DCT, или преобразование на основе кадров, выбранного из небольшого числа возможных преобразований, включая параметрическое преобразование. Для локально адаптивного кодирования с преобразованием может быть использовано преобразование РЫТ (параметрическое преобразование Хаара). Преобразование может быть выполнено применительно к прямоугольным двумерным (2D) блокам с размерами в пределах от 4×4 и 64×64, где реальные размеры могут зависеть от ряда факторов, таких как, являются ли преобразуемые данные яркостными или цветностными данными, межкадровое или внутрикадровое прогнозирование, а также является ли используемое преобразование указанным преобразованием РНТ или DCT. Полученные в результате коэффициенты преобразования могут быть квантованы, сканированы и подвергнуты энтропийному кодированию.
Подсистема 360а энтропийного кодирования в составе кодирующего устройства 300а может содержать ряд эффективных, но несложных компонентов, каждый из которых предназначен для эффективного кодирования конкретного типа данных (разного рода издержки, векторы движения или коэффициенты преобразования). Компоненты этой подсистемы могут относиться к общему классу способов кодирования в коде переменной длины с низкой сложностью, однако для эффективного кодирования каждый компонент может быть специально оптимизирован для достижения наивысшей эффективностью. Например, одно специализированное решение может быть разработано для кодирования данных «Кодировано/не кодировано» ("Coded/Not Coded"), другое решение для данных «Режимов и опорных типов» ("Modes and Ref Types"), еще одно решение для данных «Векторов движения» ("Motion Vector") и еще одно решение для данных «Единиц прогнозирования и кодирования» ("Prediction and Coding Partitions"). Наконец, поскольку очень большая часть данных, подлежащих энтропийному кодированию, представляют собой данные «коэффициентов преобразования» ("transform coefficient"), могут быть использованы несколько подходов к эффективному обращению с блоками конкретных размеров, равно как и алгоритм, которые может быть адаптирован между несколькими таблицами.
Подсистема 350а фильтрации при кодировании в составе кодирующего устройства 300а может анализировать параметры и осуществлять несколько процедур фильтрации реконструированных кадров на основе этих параметров и может содержать несколько подсистем. Например, первая подсистема, модуль 117 анализа блочности и деблокирующей фильтрации может устранять блочные искажения и дрожание, чтобы уменьшить или замаскировать любые потенциальные артефакты, возникающие при блочном кодировании. Пример второй подсистемы, модуль 118 анализа качества и фильтрации для восстановления качества, может осуществлять общее восстановление качества для уменьшения артефактов, обусловленных квантованием, в кодированном видео. Пример третьей подсистемы, которая может содержать модуль 122 оценки движения и модуль 123 прогнозирования характеристик и фильтрации с компенсацией движения, может улучшить результаты компенсации движения с использованием фильтра, адаптируемого к характеристикам движения (скорость движения/степень размытости) контента. Пример четвертой подсистемы, модуль 126 анализа прогнозирования и фильтрации слияния при прогнозировании, может позволить произвести адаптивную фильтрацию прогнозируемого сигнала (которая может уменьшить паразитные артефакты при прогнозировании, часто возникающие при внутрикадровом прогнозировании), уменьшив тем самым объем погрешностей прогнозирования, которые нужно кодировать.
Модуль 103 контроллера в составе кодирующего устройства 300а может быть ответственен за общее качество видео в условиях ограниченности ресурсов и заданной скорости кодирования. Например, при кодировании полностью на основе RDO (Rate Distortion Optimization (Оптимизация искажений скорости)) без использования каких-либо средств быстрого доступа скорость кодирования с использованием загружаемого программного обеспечения может быть простым следствием наличия доступных компьютерных ресурсов (скорость процессора, число процессоров, многопоточность, память DDR3 и т.п.). В таком случае в модуль 103 контроллера кодирующего устройства может быть введено каждое сочетание единиц прогнозирования и единиц кодирования и по результатам реального кодирования может быть вычислена скорость передачи битов данных вместе с реконструированной погрешностью для каждого случая, после чего, с использованием уравнений оптимизации Лагранжа, может быть найдено наилучшее сочетание единиц прогнозирования и единиц кодирования для каждой плитки в каждом кадре, подлежащем кодированию. При кодировании полностью на основе RDO может быть достигнута наилучшая эффективность сжатия, но в то же время это может быть самый медленный режим кодировании. При использовании параметров анализа контента от модуля 102 предварительного анализа контента для упрощения способа RDO (не тестировать все возможные случаи) или для того, чтобы пропускать через режим полностью RDO только некоторую долю общего числа блоков, компромиссы между качеством и скоростью могут позволить добиться более высокой скорости кодирования. До настоящего момента мы рассматривали работу кодирующего устройства с переменной скоростью передачи данных (variable bitrate (VBR)). Модуль 103 контроллера кодирующего устройства может также содержать контроллер скорости передачи данных, который может быть привлечен в случае кодирования с постоянной скоростью передачи битов данных (constant bitrate (CBR)).
Наконец, подсистема 310а предварительного анализа в составе кодирующего устройства 300а может выполнять анализ контента для вычисления различных типов параметров, используемых для повышения эффективности и скорости видео кодирования. Например, он может вычислять информацию горизонтального и вертикального градиентов (Rs, Cs), дисперсии, пространственной сложности одного кадра, временной сложности одного кадра, обнаружения изменений сцены, оценки диапазона движения, определении усиления, оценки дистанции прогнозирования, оценки числа объектов, обнаружении границ области, вычисления карты пространственной сложности, оценки фокусировки, оценке зернистости пленки или других подобных параметрах. Параметры, генерируемые подсистемой 310а предварительного анализа, могут быть либо использованы кодирующим устройством, либо быть квантованы и переданы декодирующему устройству 200.
Хотя подсистемы с 310а по 380а показаны в связи с конкретным примером функциональных модулей в составе кодирующего устройства 300а, представленного на фиг. 3(a), другие варианты рассматриваемого здесь кодирующего устройства 300а могут иметь другое распределение функциональных модулей кодирующего устройства 300а между подсистемами с 310а по 380а. Настоящее изобретение в этом отношении не ограничивается, так что в различных вариантах реализация примеров подсистем с 310а по 380а может быть использовано только подмножество показанных функциональных модулей кодирующего устройства 300а, дополнительные функциональные модули и/или эти модули могут быть распределены и соединены иначе, чем показано на чертежах.
Фиг. 3(b) представляет схему, иллюстрирующую пример декодирующего устройства 300b для видео следующего поколения, построенного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Фиг. 3(b) представляет декодирующее устройство, аналогичное тому, что показано на фиг. 2, так что описание подобных элементов повторено не будет для краткости. Как показано на фиг. 3(b), декодирующее устройство 300b может содержать подсистему 330b прогнозирования при декодировании, подсистему 350b фильтрации при декодировании, подсистему 360b энтропийного декодирования, подсистему 370b преобразования при декодировании, подсистему 380b устранения разбиения_2, подсистему 351b устранения разбиения_1, подсистему 350b фильтрации при декодировании и/или подсистему 390b пост-восстановления. Подсистема 330b прогнозирования при декодировании может содержать модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения и/или модуль 214 генерации при направленном внутрикадровом прогнозировании. Подсистема 350b фильтрации при декодировании может содержать модуль 208 деблокирующей фильтрации, модуль 209 фильтрации для восстановления качества, модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения и/или модуль 216 фильтрации слияния при прогнозировании. Подсистема 360b энтропийного декодирования может содержать модуль 202 адаптивного энтропийного декодирования. Подсистема 370b преобразования при декодировании может содержать модуль 203 адаптивного обратного квантования и/или модуль 204 адаптивного обратного преобразования. Подсистема 380b устранения разбиения_2 может содержать модуль 205 сборки единиц кодирования. Подсистема 35lb устранения разбиения_1 может содержать модуль 207 сборки единиц прогнозирования. Подсистема 390b пост-восстановления может содержать модуль 218 пост-восстановления контента и/или модуль 217 адаптивной реорганизации кадров.
Подсистема 360b энтропийного декодирования в составе декодирующего устройства 300b может осуществлять операции, обратные операциям подсистемы 360а энтропийного кодирования в составе кодирующего устройства 300а, т.е. она может декодировать разнообразные типы данных (издержки, векторы движения, коэффициенты преобразования), кодированные посредством подсистемы 360а энтропийного кодирования, с использованием класса способов, в широком смысле именуемых декодированием кода переменной длины. В частности, разнообразные типы данных, подлежащие декодированию, могут содержать типы «Кодировано/не кодировано» ("Coded/Not Coded"), «Режимы и опорные типы» ("Modes and Ref Types"), «Векторы движения» ("Motion Vector"), «Единицы прогнозирования и кодирования» ("Prediction and Coding Partitions") и «Коэффициенты преобразования» ("Transform Coefficient").
Подсистема 370b преобразования при декодировании в составе декодирующего устройства 300b может выполнять операции, обратные операциям подсистемы 340а преобразования при кодировании в составе кодирующего устройств 300а. Подсистема 370b преобразования при декодировании может содержать два типа компонентов. Компоненты первого типа могут поддерживать использование обратного параметрического преобразования РНТ применительно к блокам небольшого и среднего размера, тогда как компоненты другого типа могут поддерживать обратное преобразование DCT для всех размеров блоков. Использование преобразования РНТ для блока может зависеть от анализа декодированных данных соседних блоков. Выходной поток 111 битов данных и/или входной поток 201 битов данных может нести информацию о размерах единиц прогнозирования/блоков для преобразования РНТ, а также, в каком направлении 2D-блока, подлежащего обратному преобразованию, может быть использовано преобразование РНТ (другое направление использует преобразование DCT). Для блоков, кодированных с применением только преобразования DCT, информация о размерах единицы разбиения/блока может быть также извлечена из выходного потока 111 битов данных и/или входного потока 201 битов данных и использована для применения обратного преобразования DCT подходящей размерности.
Подсистема 380b устранения разбиения в составе декодирующего устройства 300b может осуществлять операции, обратные операциям подсистемы 320а разбиения в составе кодирующего устройства 300а и может содержать две подсистемы устранения разбиения, модуль 205 сборки единиц кодирования, который может устранять разбиение кодированных данных, и модуль 207 сборки единиц прогнозирования, который может устранять разбиение для прогнозирования. Далее, если применяемый в качестве опции модуль 104 адаптивной организации кадров используется в кодирующем устройстве 300а для сегментации области или срезов, тогда в декодирующем устройстве может быть необходим модуль 217 адаптивной реорганизации кадров.
Подсистема 330b прогнозирования при декодировании в составе декодирующего устройства 300b может содержать модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения, который может осуществлять прогнозирование сигнала "inter", и модуль 214 генерации при направленном внутрикадровом прогнозировании, который может осуществлять прогнозирование сигнала "intra". Модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения может позволить увеличить предсказуемость посредством сначала компенсации других источников разностей (таких как коэффициент передачи, глобальное движение, совмещение) или создания синтезированных кадров (сверхразрешение и проекция) и затем компенсации реального движения.
Подсистема 350b фильтрации при декодировании в составе декодирующего устройства 300b может осуществлять разные виды фильтрации реконструированных кадров на основе параметров, передаваемых кодирующим устройством 300а, и может содержать несколько подсистем. В качестве первого примера подсистемы модуль 208 деблокирующей фильтрации может устранять блочные искажения и дрожание, чтобы уменьшить или маскировать какие-либо потенциальные артефакты, возникающие при блочном кодировании. В качестве второго примера подсистемы модуль 209 фильтрации для восстановления качества может осуществлять общее восстановление качества для уменьшения артефактов, возникающих в результате операции квантования при любом видео кодирования. В качестве третьего примера модуль 213 прогнозирования характеристик и фильтрации с компенсацией движения может усовершенствовать результаты компенсации движения с использованием фильтра, который может адаптироваться к характеристикам движения (скорость движения/степень размытости контура) контента. В качестве четвертого примера подсистемы модуль 216 фильтрации слияния при прогнозировании может позволить выполнять адаптивную фильтрацию прогнозируемого сигнала (которая может уменьшить паразитные артефакты при прогнозировании, часто при внутрикадровом прогнозировании) уменьшая тем самым погрешности прогнозирования, которые может потребоваться кодировать.
Подсистема 390b пост-восстановления в составе декодирующего устройства 300b является опцией, которая может осуществить дополнительное повышение воспринимаемого качества декодированного видео. Такая обработка может быть выполнена либо в соответствии с параметрами повышения качества, передаваемыми кодирующим устройством 100, либо это может быть автономным решением, принятым подсистемой 390b пост-восстановления. Такими вычисляемыми в кодирующем устройстве 100 конкретными параметрами, которые могут быть использованы для повышения качества в подсистеме 390b пост-восстановления, могут быть оценки шумов зернистости пленки и остаточной блочности в кодирующем устройстве 100 (даже после деблокирования). Что касается шумов зернистости пленки, если параметры могут быть вычислены и переданы в составе выходного потока 111 битов данных и/или входного потока 201 битов данных в декодирующем устройстве 200, тогда эти параметры могут быть использованы для синтеза шумов зернистости пленки. Аналогично, для любых остаточных блочных артефактов в кодирующем устройстве 100, если они могут быть измерены и соответствующие параметры переданы посредством выходного потока 111 битов данных и/или входном потоке 201 битов данных, подсистема 390b пост-восстановления может декодировать эти параметры и использовать их, чтобы в качестве опции, произвести дополнительное деблокирование перед представлением на дисплее. Кроме того, кодирующее устройство 100 также может иметь доступ к изменениям сцены, пространственной сложности, временной сложности, диапазону движения и информации о дистанции прогнозирования, которые могут помочь в восстановлении качества в подсистеме 390b пост-восстановления.
Хотя подсистемы с 330b по 390b показаны в связи с конкретными примерами функциональных модулей в составе декодирующего устройства 300b, представленного на фиг. 3(b), другие варианты реализации декодирующего устройства 300b могут иметь другое, отличное от этого распределение функциональных модулей в декодирующем устройстве 300b между подсистемами с 330b по 390b. Настоящее изобретение в этом отношении не ограничивается, так что в различных вариантах реализации примеров подсистем с 330b по 390b может быть использовано только подмножество показанных конкретных функциональных модулей декодирующего устройства 300b, дополнительные функциональные модули и/или эти модули могут быть распределены и соединены иначе, чем показано на чертежах.
Фиг. 4 представляет схему, иллюстрирующую пример модуля 110 энтропийного кодирования, построенного согласно по меньшей мере некоторым вариантам настоящего изобретения. Как показано, модуль 110 энтропийного кодирования может содержать модуль 401 кодирования заголовков потоков битов данных, параметров и данных картирования, модуль 402 кодирования разбиения кадров, единиц прогнозирования и единиц кодирования, модуль 403 кодирования данных о режимах кодирования и опорных типах, модуль 404 кодирования данных «кодировано/не кодировано», модуль 405 кодирования коэффициентов преобразования, модуль 406 кодирования прогнозируемого вектора движения и разностного вектора движения, модуль 407 кодирования данных типа и направления при внутрикадровом прогнозировании и/или модуль 408 сборки потока битов данных. При обсуждении в настоящей заявке название каждого из модулей 401-407 может быть для меньшей громоздкости укорочено до - модуль 401 кодирования, модуль 404 кодирования и т.д.
Как показано, модули 401-407 кодирования могут принимать видеоданные 411-417, соответственно, через модуль 110 энтропийного кодирования. В некоторых примерах принимаемые видеоданные 411-417 могут, как обсуждается здесь, поступать от кодирующего устройства 100. Как показано, модули 401-407 кодирования могут сжимать принятые ими видеоданные 411-417 для генерации сжатых видеоданных 421-427. Сжатые видеоданные 421-427 могут быть переданы в модуль 408 сборки потока битов данных, который может собрать сжатые видеоданные 421-427 для генерации выходного потока 111 битов данных.
В некоторых примерах каждый из модулей 401-407 кодирования может иметь в составе один или несколько специализированных компонентов для эффективного кодирования типов данных, ассоциированных с принимаемыми видеоданными 411-417. В некоторых примерах один или несколько модулей 401-407 кодирования могут осуществлять предварительную обработку принятых видеоданных 411-417 и/или выбирать способ энтропийного кодирования на основе параметров или характеристик принимаемых видеоданных 411-417 или другой системной информации.
Например, модуль 401 кодирования может принимать данные 411 издержек и служебной информации, которые могут содержать данные заголовков потоков битов данных (например, данные заголовков потоков битов данных на уровне последовательности и/или кадров), параметры морфинга, параметры синтеза или данные глобального картирования (например, карты квантователей кадров, указывающие квантователи, которые должны быть использованы на основе разбиения). Как обсуждается ниже со ссылками на фиг. 6, в некоторых примерах модуль 401 кодирования может применять способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины или способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины. В некоторых примерах модуль 401 кодирования может определять, какой из способов обеспечивает наивысшую эффективность сжатия (например, наименьшее число битов для сжатых видеоданных 421), так что параметры, ассоциированные с видеоданными 411, могут представлять число битов, необходимое для каждого способа кодирования или другую подобную информацию. Модуль 401 кодирования может осуществлять энтропийное кодирование видеоданных 411 для генерации сжатых видеоданных 421 (например, сжатых данных издержек и служебных данных), которые могут быть переданы в модуль 408 сборки потока битов данных, как показано.
Как обсуждалось выше, в некоторых примерах параметр, ассоциированный с видеоданными, (например, с какими-либо видеоданными 411-417) может представлять собой наименьшей достижимое число битов, указание наиболее эффективного способа кодирования или другую подобную информацию. В других примерах этот параметр, ассоциированный с видеоданными, может быть задан или определен заранее, так что способ кодирования оказывается предопределен. В некоторых примерах параметр, ассоциированный с видеоданными, может быть основан на характеристиках этих видеоданных, так что способ кодирования может быть адаптирован к применяемым видеоданным, как это будет обсуждено далее.
Как показано, в некоторых примерах модуль 402 кодирования может принимать данные 412 разбиения, которые могут содержать данные срезов или областей кадров, данные единиц внутрикадрового прогнозирования и/или данные единиц межкадрового прогнозирования и единиц кодирования. Как будет рассмотрено ниже применительно к фиг. 6, в некоторых примерах модуль 412 кодирования может осуществлять способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины для сжатия данных единиц внутрикадрового прогнозирования и/или данных единиц межкадрового прогнозирования в составе видеоданных 412 на основе параметра, ассоциированного с данными единиц внутрикадрового прогнозирования и/или данными единиц межкадрового прогнозирования, (например, наименьшее достижимое число битов, наиболее эффективный способ кодирования, заданный параметр, характеристики видеоданных 412 или другой подобный параметр), а также модуль 412 кодирования может осуществлять кодирование в коде переменной длины с использованием адаптивной кодовой таблицы для данных срезов или областей в составе видеоданных 412 для генерации сжатых видеоданных 422 (например, сжатых данных единиц разбиения), которые могут быть переданы в модуль 408 сборки потоков битов данных, как показано. В некоторых примерах данные единиц внутрикадрового прогнозирования и/или данные единиц межкадрового прогнозирования могут содержать данные, указывающие разделение плиток на единицы разбиения, разделение этих единиц разбиения на единицы разбиения меньшего размера (суб-единицы разбиения) или другие подобные данные. В некоторых примерах единицы разбиения и/или суб-единицы разбиения могут представлять собой единицы и/или суб-единицы прогнозирования. В некоторых примерах единицы разбиения и/или суб-единицы разбиения могут представлять собой единицы и/или суб-единицы кодирования.
Далее, как показано, в некоторых примерах модуль 403 кодирования может принимать данные 413 режимов и опорных типов, которые могут содержать данные режимов (например, «intra», «split», «skip», «auto», «inter» или «multi») и/или опорные (опорные) данные для каждой единицы прогнозирования. Например, информация режима «split» может указывать, является ли единица разбиения разделимой дальше. Если единица разбиения может быть дальше разделена, данные режима могут далее содержать информацию о направлении разбиения, указывающую, является ли разделение горизонтальным (например, «hor») или вертикальным (например, «vert»). Как обсуждается ниже со ссылками на фиг. 6, в некоторых примерах модуль 403 кодирования может осуществлять способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины для раздельного кодирования данных о единицах разбиения «разбито/не разбито» (split/non-split), раздельного кодирования данных о разбиении «разбито/не разбито» или опорных (опорных) данных прогнозирования на основе параметра, ассоциированного с этими данными, (например, наименьшее достижимое число битов, наиболее эффективный способ кодирования, заданный параметр, характеристики фрагментов видеоданных 413 или других подобных параметров), а также модуль 403 кодирования может осуществлять адаптивное кодирование в коде переменной длины для совместного кодирования информации о режимах и разбиении с целью генерации сжатых видеоданных 423 (например, сжатых данных режимов и опорных типов), которые могут быть переданы в модуль 408 сборки потоков битов данных, как показано.
Далее, в некоторых примерах модуль 404 кодирования может принимать данные 414 типа «кодировано/не кодировано», как обсуждается здесь. Например, единица (или суб-единица) разбиения может быть кодирована, если она содержит какие-либо ненулевые коэффициенты преобразования, и единица (или суб-единица) разбиения может быть не кодирована, если она содержит только нулевые коэффициенты преобразования. В некоторых примерах данные «кодировано/не кодировано» могут быть не нужны для единиц разбиения, имеющих режим «intra» или «skip». В некоторых примерах такие данные «кодировано/не кодировано» могут быть нужны для единиц разбиения, имеющих режим «auto, «inter» или «multi». Как обсуждается ниже применительно к фиг. 6, в некоторых примерах модуль 404 кодирования может осуществлять способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины для данных «кодировано/не кодировано» на основе параметра, ассоциированного с этими данными «кодировано/не кодировано», (например, наименьшее достижимое число битов, наиболее эффективный способ кодирования, заданный параметр, характеристики видеоданных или другого подобного параметра) для генерации сжатых видеоданных 424 (например, сжатых данных «кодировано/не кодировано»), которые могут быть переданы в модуль 408 сборки потоков битов данных, как показано.
В некоторых примерах модуль 405 кодирования может принимать данные 415 преобразования, которые могут содержать данные коэффициентов преобразования. Например, для кодированных (например, имеющих один или несколько ненулевых коэффициентов преобразования) блоков, или единиц разбиения, или суб-единиц разбиения данные коэффициентов преобразования могут быть приняты для энтропийного кодирования. Как будет рассмотрено далее применительно к фиг. 6, модуль 405 кодирования может осуществлять способ адаптивного векторного кодирования в коде переменной длины для блоков или единиц разбиения, либо суб-единиц разбиения, имеющих размер 2 в одном направлении (например, единицы разбиения размером 2×K или K×2). Далее, модуль 405 кодирования может осуществлять адаптивное 1-мерное кодирование в коде переменной длины для блоков или единиц разбиения, либо суб-единиц разбиения размером 4×4 и адаптивное 2-мерное кодирование в коде переменной длины для всех прочих размеров блоков или единиц разбиения, либо суб-единиц разбиения (например, 4×8, 8×4, 8×8, 16×16, 32×32, 64×64 и т.д.). Сформированные сжатые видеоданные 425 (например, сжатые данные преобразования) могут быть переданы в модуль 408 сборки потоков битов данных, как показано.
Например, данные коэффициентов преобразования могут быть получены в результате прямого преобразования данных пикселей или величин разностей пикселей для прямоугольных (или квадратных, или других подобных) единиц разбиения, осуществленного посредством модуля 108 адаптивного преобразования, с последующим квантованием полученных коэффициентов преобразования посредством модуля 109 адаптивного квантования. В некоторых примерах данные коэффициентов преобразования могут быть сканированы для преобразования в 1-мерную частотно упорядоченную единицу разбиения посредством модуля 405 кодирования. Такое преобразование может быть в высокой степени адаптивно к произвольному размеру единиц разбиения (например, 24 или более, либо 32 или более размеров единиц измерения), к различным типам данных (например, коэффициенты дискретного косинусного преобразования, или коэффициенты гибридного параметрического преобразования Хаара, или какого-либо другого подобного преобразования для единиц разбиения при внутрикадровом или межкадровом прогнозировании) и/или разным настройкам характеристик квантователя (например, различные сочетания параметров и/или матриц квантования). Далее, блок, или единица разбиения или суб-единица разбиения может относиться к различным типам кадров: I-кадр (например, только компенсация при внутрикадровом прогнозировании), Р-кадр (например, прогнозируемый) или F-кадр (например, функциональный) и/или могут представлять разные типы сигналов или данных (например, яркостные, или цветоразностные или другие подобные данные), которые могут быть квантованы с разными настройками квантователя.
Далее, в некоторых примерах модуль 406 кодирования может принимать данные 416 движения, которые могут содержать данные векторов движения. Как будет рассмотрено далее со ссылками на фиг. 6, прогнозирование векторов движения может быть выполнено на основе видеоданных 416 для генерации одного или нескольких прогнозируемых векторов движения. Может быть вычислена разность между прогнозируемым вектором движения и исходными данными движения в составе видеоданных 416 для генерации разностного вектора движения. В некоторых примерах модуль 406 кодирования может осуществлять адаптивное классифицированное кодирование в коде переменной длины применительно к разностным векторам движения для генерации сжатых видеоданных 426 (например, сжатых данных движения), которые могут быть переданы в модуль 408 сборки потоков битов данных, как показано.
Далее, в некоторых примерах модуль 407 кодирования может принимать данные 417 внутрикадрового прогнозирования, которые могут содержать указание типа внутрикадрового прогнозирования или данные о направлении внутрикадрового прогнозирования. Например, как обсуждается, при внутрикадровом кодировании может быть применено прогнозирование, которое может использовать соседние ранее кодированные единицы разбиения в том же самом кадре для генерации пространственного прогноза. В таких примерах могут быть применены предикторы для указания последней декодированной единицы разбиений или нескольких таких единиц. Например, возможны следующие предикторы «dc», «slope», «directional», «ВТРС», «feature matching» или другие подобные предикторы. Далее, в некоторых примерах предиктор «направленный» (directional) может быть адаптивным для разных размеров единиц разбиения. Например, спецификация предиктора «направленный» может содержать указание способа определения наклонных единиц разбиения совокупности прогнозируемых пикселей для кодирования с использованием каузальных соседних декодированных единиц разбиения и/или спецификацию способа энтропийного кодирования направлений пространственного прогнозирования. В некоторых примерах такие способы могут быть осуществлены посредством модуля 407 кодирования. Как обсуждается ниже применительно к фиг. 6, в некоторых примерах модуль 407 кодирования может осуществлять способ адаптивного кодирования в коде переменной длины или способ арифметического кодирования данных типа или направления при внутрикадровом прогнозировании на основе параметра, ассоциированного с этими данными типа или направления при внутрикадровом прогнозировании, (например, наименьшее достижимое число битов, наиболее эффективный способ кодирования, заданный параметр, характеристики видеоданных 417 или другой подобный параметр) для генерации сжатых видеоданных 427 (например, сжатых данных внутрикадрового прогнозирования), которые могут быть переданы в модуль 408 сборки потоков битов данных, как показано.
Как показано на фиг. 4, модуль 110 адаптивного энтропийного кодирования может содержать модуль 408 сборки потоков битов данных. В некоторых примерах некоторые или все модули 401-407 кодирования могут генерировать энтропийно кодированные сжатые видеоданные 421-427 в разные моменты времени. Далее, один или несколько потоков сжатых видеоданных 421-427 могут быть данными на основе кадров, на основе областей или срезов, на основе плиток, на основе единиц прогнозирования, на основе единиц кодирования или какого-либо сочетания этих типов данных. В некоторых примерах модуль сборки потоков битов данных может мультиплексировать (потенциально различные) потоки сжатых видеоданных 421-427 для создания действительного потока битов данных, такого как, например, выходной поток 111 битов данных. Например, такой действительный поток битов данных может представлять собой действительный поток битов данных, кодированный для видео следующего поколения (NGV), который может соответствовать спецификациям синтаксиса потока битов данных NGV. В некоторых примерах выходной поток 111 битов данных может быть потоком битов данных только видео. В некоторых примерах такой выходной поток 111 битов данных может быть мультиплексирован (например, в транспортном (Transport) формате или формате медиа-файлов (Media File Format)) с некодированными или кодированными аудиоданными для создания мультиплексированного аудиовизуального потока. В любом случае поток битов данных может быть использован для локального декодирования, хранения или передачи декодирующему устройству, как обсуждается здесь.
Фиг. 5 представляет схему, иллюстрирующую пример модуля 202 энтропийного декодирования, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Как показано, модуль 202 энтропийного декодирования может содержать модуль 501 декодирования заголовков потоков битов данных, параметров и данных картирования, модуль 502 декодирования разбиения кадров, единиц прогнозирования и единиц кодирования, модуль 503 декодирования данных о режимах кодирования и опорных типах, модуль 504 декодирования данных «кодировано/не кодировано», модуль 505 декодирования коэффициентов преобразования, модуль 506 декодирования прогнозируемого вектора движения и разностного вектора движения, модуль 507 декодирования данных типа и направления при внутрикадровом прогнозировании и/или модуль 508 разборки потока битов данных. При обсуждении в настоящей заявке название каждого из модулей 501-507 может быть для меньшей громоздкости укорочено до - модуль 501 декодирования, модуль 505 декодирования и т.д.
Как показано, модуль 508 разборки потока битов данных может принимать входной поток 201 битов данных. В некоторых примерах входной поток 201 битов данных может быть действительным потоком, таким как, например, действительный кодированный поток битов данных для видео следующего поколения (NGV), который может соответствовать спецификации синтаксиса потоков битов данных NGV. В некоторых примерах входной поток 201 битов может представлять собой поток битов данных только видео. В некоторых примерах входной поток 201 битов данных может представлять собой мультиплексированный аудиовизуальный поток, как обсуждается здесь. Модуль 508 разборки потока битов данных может разбирать входной поток 201 битов данных для определения сжатых видеоданных 511-517, как показано. Например, модуль 508 разборки потока битов данных может использовать заданный синтаксис или спецификации для разделения входного потока 201 битов данных на составляющие его сжатые видеоданные 511-517 по типам данных для расширения посредством модулей 501-507 декодирования. В некоторых вариантах модуль 508 разборки потока битов данных может осуществлять операции, обратные операциям, выполняемым модулем 508 сборки потока битов данных.
Как показано на фиг. 5, модули 501-507 декодирования могут принимать сжатые видеоданные 511-517, соответственно, и генерировать видеоданные 521-527. Эти видеоданные 521-527 могут быть переданы различным компонентам декодирующего устройства 200 для дальнейшего декодирования, как описано здесь. Декодирующее устройство 200 может тем самым генерировать видеокадры для представления пользователю посредством дисплейного устройства (не показано). В некоторых примерах модули 501-507 декодирования могут каждый выполнять операции, обратные операциям модулей 401-407. В некоторых примерах модули 501-507 декодирования могут каждый содержать один или несколько специализированных компонентов для эффективного энтропийного декодирования типов данных, ассоциированных с соответствующими сжатыми видеоданными 511-517.
Например, модуль 501 декодирования может принимать сжатые видеоданные 511 издержек, которые могут содержать сжатые данные заголовков потоков битов данных (например, заголовков потоков битов данных на уровне последовательности и/или кадров), параметры морфинга, параметры синтеза или данные глобального картирования (например, карты квантователей кадров, указывающие квантователи, которые должны быть использованы на основе разбиения). В некоторых примерах модуль 501 декодирования может осуществлять способ адаптивного декодирования длин серий символов в коде переменной длины, способ адаптивного прокси-декодирования в коде переменной длины, способ расширения данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины с целью расширения сжатых данных 511 издержек для генерации данных 521 издержек. В некоторых примерах модуль 501 декодирования может определять, какой способ кодирования применить, на основе параметра или индикатора, поступающего в поток 201 битов данных.
Как показано в некоторых примерах, модуль 502 декодирования может принимать сжатые данные 512 разбиения, которые могут содержать сжатые данные срезов или областей кадра, данные единиц внутрикадрового прогнозирования и/или данные единиц межкадрового прогнозирования. В некоторых примерах модуль 502 декодирования может осуществлять способ адаптивного декодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины для расширения данных единиц внутрикадрового прогнозирования и/или данных единиц межкадрового прогнозирования из состава сжатых данных 512 разбиения, а также модуль 502 декодирования может осуществлять адаптивное декодирование в коде переменной длины с использованием кодовой таблицы для расширения данных срезов или областей из состава сжатых данных 512 разбиения с целью генерации данных 522 разбиения. В некоторых примерах данные единиц внутрикадрового прогнозирования и/или данные единиц межкадрового прогнозирования могут содержать данные, указывающие разделение плиток на единицы разбиения, разделение единиц разбиения на суб-единицы разбиения и т.д. В некоторых вариантах единицы или суб-единицы разбиения могут представлять собой единицы и/или суб-единицы прогнозирования. В некоторых примерах такие единицы или суб-единицы разбиения могут представлять собой единицы или суб-единицы кодирования. В некоторых примерах модуль 502 декодирования может определять, какой способ кодирования применить для расширения данных единиц разбиения при внутрикадровом прогнозировании и/или данных единиц разбиения при межкадровом прогнозировании из состава сжатых видеоданных 512 на основе параметра или индикатора, поступающего в пакете 201 битов данных.
Далее, в некоторых примерах модуль 503 декодирования может принимать сжатые данные 513 режимов и опорных типов, которые могут содержать сжатые данные режимов (например, «intra», «split», «skip», «auto», «inter» или «multi») и/или опорные (опорные) данные для каждой единицы прогнозирования. Например, информация режима «split» может указывать, можно ли далее разделять единицу разбиения или нет. Если единица разбиения может быть разделена далее, данные режима могут дополнительно содержать информацию о направлении, указывающую, когда разделение является горизонтальным разделением (например, «hor») или вертикальным разделением (например, «vert»). В некоторых примерах модуль 503 декодирования может осуществлять способ адаптивного кодирования длин серий символов в коде переменной длины и способ адаптивного прокси-кодирования в коде переменной длины для расширения раздельно кодированных данных о единицах разбиения «разбито/не разбито» (split/non-split), раздельно кодированных данных о разбиении «разбито/не разбито» или опорных (опорных) данных прогнозирования и модуль 503 декодирования может осуществлять адаптивное декодирование в коде переменной длины с целью расширения совместно кодированной информации о режимах и разбиении для генерации данных 523 режимов и опорных типов. В некоторых примерах модуль 503 декодирования может определять, какой способ кодирования применить для расширения раздельно кодированных данных о единицах разбиения «разбито/не разбито» (split/non-split), раздельно кодированных данных о разбиении «разбито/не разбито» или опорных данных прогнозирования отдельно кодированных на основе параметра или индикатора, поступающего в составе потока 201 битов данных.
Далее, в некоторых примерах модуль 504 декодирования может принимать сжатые данные 514 «кодировано/не кодировано», которые могут содержать кодированные/некодированные данные, как обсуждается здесь. Например, единица (или суб-единица) разбиения может быть кодирована, если она имеет какие-либо ненулевые единицы преобразования, и единица (или суб-единица) разбиения может быть не кодирована, если она имеет только нулевые коэффициенты преобразования. В некоторые примерах данные «кодировано/не кодировано» могут быть не нужны для единиц разбиения в режимах «intra» или «skip». В некоторых примерах данные «кодировано/не кодировано» могут быть нужны для единиц разбиения в режимах «auto», «inter» или «multi». В некоторых примерах модуль 504 декодирования может применять способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины для расширения данных 514 «кодировано/не кодировано» с целью генерации данных 524 «кодировано/не кодировано». В некоторых примерах модуль 504 декодирования может определять, какой способ кодирования применить для расширения данных, на основе параметра или индикатора, поступающего в составе потока 201 битов данных.
Как показано, в некоторых примерах модуль 505 декодирования может принимать сжатые данные 515 преобразования, которые могут содержать данные коэффициентов преобразования. Например, для кодированных блоков или единиц разбиения или суб-единиц разбиения (например, имеющих один или несколько ненулевых коэффициентов преобразования) сжатые данные 515 преобразования могут содержать данные коэффициентов преобразования. В некоторых примерах модуль 505 декодирования может применять способ адаптивного векторного кодирования в коде переменной длины для расширения блоков или единиц разбиения или суб-единиц разбиения, имеющих размер 2 в одном направлении (например, единицы разбиения размером 2×K или размером K×2). Далее, модуль 505 декодирования может применять адаптивное 1-мерное кодирование в коде переменной длины для расширения блоков или единиц разбиения или суб-единиц разбиения размером 4×4 и адаптивное 2-мерное кодирование в коде переменной длины для расширения блоков или единиц разбиения или суб-единиц разбиения всех прочих размеров (например, 4×8, 8×4, 8×8, 16×16, 32×32, 64×64 и т.д.). Сформированные данные 525 преобразования могут быть переданы всем прочим модулям декодирующего устройства 200, как показано.
Далее, в некоторых примерах модуль 506 декодирования может принимать сжатые данные 516 движения, которые могут содержать данные векторов движения. Как обсуждается ниже применительно к фиг. 6, в некоторых примерах сжатые данные 516 движения могут быть расширены с использованием способа адаптивного классифицированного кодирования в коде переменной длины для генерации прогнозируемых разностных векторов движения. Прогнозируемые разностные векторы движения могут быть суммированы с прогнозируемыми векторами движения для генерации реконструированных векторов движения. Прогнозируемые векторы движения могут быть сформированы на основе ранее декодированных векторов движения соседних блоков или единиц разбиения с использованием способа, обратного способу, примененному в модуле 406 кодирования, например, и/или векторов движения. Реконструированные векторы движения могут быть переданы другим модулям декодирующего устройства 200 в виде данных 526 движения, как показано.
Далее, в некоторых примерах модуль 507 декодирования может принимать сжатые данные 517 внутрикадрового прогнозирования, которые могут содержать данные типа или направления внутрикадрового прогнозирования. Например, как обсуждается, для внутрикадрового кодирования может быть применено прогнозирование, которое может использовать соседние ранее декодированные единицы разбиения в том же самом кадре для генерации пространственного прогноза. В таких примерах могут быть применены предикторы для индикации ранее декодированных единиц разбиения. Например, возможны следующие предикторы «dc», «slope», «directional», «ВТРС», «feature matching» или другие подобные предикторы. Далее, в некоторых примерах «направленный» («directional») предиктор может быть адаптивным для разных размеров единиц разбиения. Например, спецификация предиктора «направленный» может содержать указание способа определения наклонных единиц разбиения совокупности прогнозируемых пикселей для кодирования с использованием каузальных соседних декодированных единиц разбиения и/или спецификацию способа энтропийного кодирования направлений пространственного прогнозирования. В некоторых примерах модуль 517 декодирования может применять способ адаптивного кодирования в коде переменной длины для расширения данных типа или направления при внутрикадровом прогнозировании с целью генерации данных 527 внутрикадрового прогнозирования. В некоторых примерах модуль 507 декодирования может определять, какой способ кодирования применить для расширения данных, на основе параметра или индикатора, поступающего в составе потока 201 битов данных.
Как обсуждается выше, разнообразные способы энтропийного кодирования могут быть применены к данным разных типов для сжатия без потерь видеоданных с целью генерации сжатых видеоданных в энтропийном кодирующем устройстве и для расширения сжатых видеоданных с целью генерации дубликата видеоданных в энтропийном декодирующем устройстве.
В некоторых примерах может быть применен способ адаптивного кодирования длин серий символов в коде переменной длины. Например, в модулях 401, 501, 402, 502, 403, 503 и/или 404, 504 кодирования и декодирования способ адаптивного кодирования длин серий символов в коде переменной длины может быть применен к некоторым или ко всем полученным видеоданным или сжатым видеоданным.
В некоторых примерах способ адаптивного кодирования длин серий символов в коде переменной длины может содержать кодирование относительных разностей адресов между не пропущенными в процессе видео кодирования блоками в кадре, что позволяет определить число последовательных пропущенных блоков. Например, в контексте данных «кодировано/не кодировано», которые кодируются и декодируются модулями 404, 504 кодирования и декодирования, вместо передачи одного бита данных (например, в составе битовой карты) для каждого блока, чтобы отметить кодированные/не кодированные (например, пропущенные) блоки, модуль 404 кодирования может, например, кодировать серию пропущенных блоков. В таких вариантах, чем длиннее серия пропущенных блоков, тем более эффективно могут быть сжаты данные.
Далее, в описываемый здесь способ адаптивного кодирования длин серий символов в коде переменной длины добавлены несколько видов адаптивности: адаптивность, которая может позволить использовать несколько таблиц, адаптивность, которая может позволить применить этот вид кодирования к данным исходной битовой карты, инвертированной битовой карты, разностной битовой карты или градиентной прогнозирующей битовой карты и т.п. Например, способ адаптивного кодирования длин серий символов в коде переменной длины может содержать преобразование первых видеоданных из данных битовой карты в данные по меньшей одной карты - инвертированной битовой карты, разностной битовой карты или градиентной прогнозирующей битовой карты, перед тем, как применить адаптивное кодирование длин серий символов в коде переменной длины. Например, способ адаптивного кодирования длин серий символов в коде переменной длины может быть использован для энтропийного кодирования по существу любого типа событий (например, сочетаний символ/серия). Далее, события символ/серия могут быть использованы для кодирования многоуровневых (например, 0, 1, 2, 3, и т.д.) или двоичных (например, 0,1) событий. В примерах, где кодируются многоуровневые события, способ адаптивного кодирования длин серий символов в коде переменной длины может быть применен последовательно несколько раз для разбиения многоуровневой карты на ряд двоичных суб-карт, где каждая предшествующая суб-карта исключена из суб-карты следующего уровня, и т.п.
В некоторых примерах, может быть применен способ адаптивного прокси-кодирования в коде переменной длины. Например, модули 401, 501, 402, 502, 403, 503 и/или 404, 504 кодирования и декодирования могут применять способ адаптивного прокси-кодирования в коде переменной длины к некоторым или ко всем полученным видеоданным или сжатым видеоданным.
В некоторых примерах, способ адаптивного прокси-кодирования в коде переменной длины может содержать замену исходных одномерных (1D) блоков (например, групп) битов фиксированной длины кодами переменной длины (например, структурами из последовательности битов), так что после такой замены получаемый в результате поток битов данных может быть меньше по размеру. В некоторых примерах в декодирующем устройстве этот процесс может быть повторен (или обращен), что приводит к получению исходного потока битов данных. В некоторых примерах заменяемые исходные блоки битов данных могут иметь небольшой фиксированный размер (например, группы из 2 бит, группы из 3 бит или группы из 4 бит и т.д.). В некоторых примерах замещающие коды могут по природе своей иметь небольшие размеры и переменную длину. В некоторых примерах адаптивное прокси-кодирование в коде переменной длины, рассматриваемое здесь, может быть охарактеризовано как кодирование в коротких кодах переменной длины (Short VLC) (например, коды переменной длины). Далее, описываемый здесь способ адаптивного прокси-кодирования в коде переменной длины может быть адаптивным относительно контента за счет создания нескольких возможных вариантов (опций) подстановок. В некоторых примерах 1-мерные блоки/группы из 2 бит могут быть заменены кодами длиной 1-3 бит. В некоторых примерах 1-мерные блоки/группы (или множества блоков/групп) размером по 3 бит с кодами могут быть заменены кодами длиной 1-5 бит. В некоторых примерах способ адаптивного прокси-кодирования в коде переменной длины может использовать статистическую избыточность в потоке битов данных. В некоторых примерах способ адаптивного прокси-кодирования в коде переменной длины может обеспечивать коэффициент сжатия в пределах примерно 1-1,3. В некоторых примерах, способ адаптивного прокси-кодирования в коде переменной длины может иметь то преимущество, что он допускает применение коротких последовательностей битов данных.
В некоторых примерах может быть применен способ адаптивного кодирования блоков символов в коде переменной длины. Например, модули 405, 505 кодирования и декодирования могут применять способ адаптивного кодирования блоков символов в коде переменной длины к некоторым или ко всем полученным видеоданным или сжатым видеоданным.
В некоторых примерах, способ адаптивного кодирования блоков символов в коде переменной длины может содержать два под-способа кодирования, как будет рассмотрено далее применительно к фиг. 7. Например, способ адаптивного кодирования блоков символов в коде переменной длины может содержать способ адаптивного векторного кодирования в коде переменной длины и способ адаптивного 1D/2D (1-мерное/2-мерное) кодирования в коде переменной длины. В некоторых примерах способ адаптивного кодирования блоков символов в коде переменной длины может быть использован для кодирования блоков близко связанных символов, таких как блоки коэффициентов преобразования, обсуждаемые здесь.
В некоторых примерах способ адаптивного векторного кодирования в коде переменной длины, являющийся вариантом способа адаптивного кодирования блоков символов в коде переменной длины, может кодировать небольшие двумерные (2D) блоки символов (или единицы разбиения множества символов) с использованием единственного объединенного кодового слова, так что кодирование блока символов может привести к кодовой таблице VLC (кодирование в коде переменной длины). В некоторых примерах, чем больше размер блока или единицы разбиения, тем больше размер кодовой таблицы. В некоторых примерах способ адаптивного векторного кодирования в коде переменной длины может быть применен к блокам или единицам разбиения, один размер которых равен 2 (например, блоки или единицы разбиения размером 2×K или K×2). Применение способа адаптивного векторного кодирования в коде переменной длины к блокам или единицам разбиения таких размеров позволяет предпочтительно ограничить размер кодовой таблицы для кода VLC.
В некоторых примерах способ адаптивного одномерного (1D) кодирования в коде переменной длины, являющийся вариантом способа адаптивного кодирования блоков символов в коде переменной длины, может быть использован для кодирования блока или единицы разбиения размером 4×4 коэффициентов преобразования, по существу так же, как кодер стандарта CAVLC. Этот кодер предпочтительно используется для кодирования блоков размером 4×4. В некоторых примерах способ адаптивного одномерного (1D) кодирования в коде переменной длины может быть осуществлен посредством способа контентно-адаптивного кодирования в коде переменной длины, использующего ряд различных кодовых таблиц для кода VLC на основе контекста кодируемых коэффициентов. Например, на основе контекста коэффициентов, обрабатываемых модулями 405, 505 кодирования и/или декодирования, эти модули могут переключать кодовые таблицы кода VLC.
В некоторых примерах способ адаптивного двумерного (2D) кодирования в коде переменной длины, являющийся вариантом способа адаптивного кодирования блоков символов в коде переменной длины, может использовать двумерные свойства блока символов для переключения между несколькими кодовыми таблицами кода VCL на основе контекста. В некоторых примерах способ адаптивного двумерного (2D) кодирования в коде переменной длины может быть охарактеризован аббревиатурой CA2DVLC (контентно-адаптивное двумерное кодирование в коде переменной длины (Content Adaptive 2D Variable Length)). В некоторых примерах способ адаптивного двумерного (2D) кодирования в коде переменной длины может быть использован для кодирования блоков или единиц преобразования совокупности коэффициентов преобразования всех прочих размеров помимо блоков размером 2×K, K×2 и блоков размером 4×4 (например, 4×8, 8×4, 8×8,16×16, 32×32, 64×64 и т.д.).
Фиг. 6 представляет схему, иллюстрирующую пример модуля 110 энтропийного кодирования, в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Как показано и обсуждается выше применительно к фиг. 4, модуль 110 энтропийного кодирования может содержать модуль 401 кодирования заголовков потоков битов данных, параметров и данных отображения, модуль 402 кодирования разбиения кадров, единиц прогнозирования и единиц кодирования, модуль 403 кодирования данных о режимах кодирования и опорных типах, модуль 404 кодирования данных «кодировано/не кодировано», модуль 405 кодирования коэффициентов преобразования, модуль 406 кодирования вектора движения и разностного вектора движения, модуль 407 кодирования данных типа и направления при внутрикадровом прогнозировании и/или модуль 408 сборки потока битов данных.
Как показано, модуль 401 кодирования может содержать модуль 611 для адаптивного кодирования в коде переменной длины (VLC), кодирования серий символов в коде VLC и/или прокси-кодирования в коде VLC данных заголовков потоков битов данных, параметров и карт данных и может принимать видеоданные 411. Эти видеоданные 411 могут иметь какой-либо тип данных, так что эти видеоданные 411 могут содержать данные заголовков потока битов данных (например, заголовков потока битов данных на уровне последовательности и/или кадров), параметры морфинга, параметры синтеза или данные глобального картирования (например, карты квантователей кадров, указывающие квантователи, которые должны быть использованы на основе разбиения). В некоторых примерах способ энтропийного кодирования может быть выбран для видеоданных 411 на основе параметра, параметров или характеристик видеоданных 411 или других системных параметров. В некоторых примерах способ энтропийного кодирования видеоданных 411 может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше, или способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины. Выбранный способ энтропийного кодирования может быть применен к видеоданным 411 для генерации сжатых видеоданных 421. Способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины может содержать контентно-адаптивное кодирование в коде переменной длины с использованием одной или нескольких кодовых таблиц на основе видеоданных 411, например. В некоторых примерах, модуль 404 кодирования может определять, какой способ обеспечивает наивысшую эффективность кодирования (например, наименьшее число битов в составе получаемых сжатых видеоданных 421), так что параметром, ассоциированным с видеоданными 411, может быть число битов, необходимых для каждого способа кодирования, или другой подобный параметр. В некоторых примерах такой параметр, ассоциированный с видеоданными 411, может быть основан на характеристиках видеоданных, так что выбранный способ кодирования может быть адаптивным к принимаемым видеоданным.
Как показано на фиг. 6, модуль 402 кодирования может содержать модуль 621 адаптивного кодирования в коде VLC с кодовой таблицей для кодирования единиц разбиения кадров, модуль 622 для кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиения при внутрикадровом прогнозировании, и/или модуль 623 кодирования для кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиения при межкадровом прогнозировании и единиц кодирования. Так же, как показано, модуль 402 кодирования может принимать видеоданные 412. В некоторых примерах видеоданные 412 могут содержать данные 624 срезов или областей кадров, данные 625 разбиения при внутрикадровом прогнозировании и/или данные 626 разбиения при межкадровом прогнозировании и единиц кодирования.
Как показано, данные 624 срезов и областей кадров могут быть приняты модулем 621 адаптивного кодирования в коде VLC с кодовой таблицей для кодирования единиц разбиения кадров, который может применить адаптивное кодирование в коде VLC к этим данным 624 срезов и областей кадров для генерации сжатых данных 627 срезов и областей кадров. В некоторых примерах данные 624 срезов и областей кадров могут содержать границы кадров, срезов, областей или других подобных объектов. В некоторых примерах, адаптивное кодирование в коде переменной длины с использованием кодовых таблиц может представлять собой адаптивное кодирование в коде переменной длины с использованием кодовых таблиц, адаптируемых к контенту данных 624 срезов или областей кадров или к другим системным параметрам и т.п.
Как показано, данные 625 разбиения при внутрикадровом прогнозировании могут быть приняты модулем 622 для кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиения при внутрикадровом прогнозировании. В некоторых примерах способ энтропийного кодирования может быть выбран для данных 625 разбиения при внутрикадровом прогнозировании на основе одного параметра, нескольких параметров или характеристик этих данных 625 разбиения при внутрикадровом прогнозировании или других системных параметров (например, эффективность кодирования, характеристик данных и т.д.), как обсуждается здесь. Выбранный способ энтропийного кодирования может быть применен к данным 625 разбиения при внутрикадровом прогнозировании для генерации сжатых данных 628 разбиения при внутрикадровом прогнозировании. Как показано, в некоторых примерах способ энтропийного кодирования для данных 625 разбиения при внутрикадровом прогнозировании может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше. В некоторых примерах данные 625 разбиения при внутрикадровом прогнозировании могут содержать данные разбиения на основе двоичного дерева или k-мерного дерева или другого подобного разбиения.
Как показано, данные 626 разбиения при межкадровом прогнозировании и единиц кодирования могут быть приняты модулем 623 кодирования для кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиения при межкадровом прогнозировании и единиц кодирования. В некоторых примерах способ энтропийного кодирования данных 626 разбиения при межкадровом прогнозировании и единиц кодирования на основе одного параметра, нескольких параметров или характеристик этих данных 626 разбиения при межкадровом прогнозировании и единиц кодирования или других системных параметров (например, эффективность сжатия, характеристики данных и т.д.), как обсуждается здесь. Найденный способ энтропийного кодирования может быть применен к данным 626 разбиения при межкадровом прогнозировании и единиц кодирования для генерации сжатых данных 629 разбиения при межкадровом прогнозировании и единиц кодирования. Как показано, в некоторых примерах способ энтропийного кодирования, выбранный для данных 626 разбиения при межкадровом прогнозировании и единиц кодирования, может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как рассмотрено выше. В некоторых примерах данные 626 разбиения при межкадровом прогнозировании и единиц кодирования могут содержать данные разбиения при межкадровом прогнозировании и дерева единиц кодирования или другие подобные данные.
Как показано на фиг. 6, модуль 403 кодирования может содержать модуль 631 адаптивного кодирования в коде VLC совместно для данных режимов и разбиения, модуль 632 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для режимов, модуль 633 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиений и/или модуль 634 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для опорных типов. Кроме того, как показано, модуль 403 кодирования может принимать видеоданные 412. В некоторых примерах видеоданные 412 могут содержать данные 635 совместного кодирования режимов и разбиений, данные 636 информации режимов, данные 637 информации «разбиение/нет разбиения» (split/not-split) и/или данные 638 опорной информации для прогнозирования.
Как показано, данные 635 совместного кодирования режимов и разбиений могут быть приняты модулем 631 адаптивного кодирования в коде VLC совместно для режимов и разбиения, который может применять адаптивное кодирование в коде переменной длины к данным 635 совместного кодирования режимов и разбиений для генерации сжатых данных 639 совместного кодирования режимов и разбиений. В некоторых примерах адаптивное кодирование в коде переменной длины может содержать кодирование в коде переменной длины адаптивно к контенту данных 635 совместного кодирования режимов и разбиений или других системных параметров или других подобных данных.
Как обсуждается, в некоторых примерах данные режимов и разбиений могут быть кодированы совместно посредством модуля 631 адаптивного кодирования в коде VLC совместно для режимов и разбиения. В некоторых примерах данные режимов и разбиений могут быть кодированы по отдельности посредством модуля 632 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для режимов и модуля 633 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиений, как это обсуждается ниже. В некоторых примерах кодирующее устройство 100 (через, например, адаптивное энтропийное кодирующее устройство 110 и/или контроллер 103 кодирующего устройства) для кодирования совместно или по отдельности на основе результатов сравнения способов кодирования для определения, какой способ обеспечивает сжатие данных наиболее эффективно.
Как показано, данные 636 информации о режимах могут быть приняты модулем 632 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для режимов. В некоторых примерах способ энтропийного кодирования может быть выбран для данных 636 информации о режимах на основе одного параметра, нескольких параметров или характеристик данных 636 информации о режимах или других системных параметров (например, эффективность сжатия, характеристики данных и т.д.), как обсуждается здесь. Найденный способ энтропийного кодирования может быть применен к данным 636 информации о режимах для генерации сжатых данных 642 информации о режимах. Как показано, в некоторых примерах способ энтропийного кодирования данных 636 информации о режимах может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше.
Как показано, данные 637 информации «разбиение/нет разбиения» могут быть приняты модулем 633 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для разбиений. В некоторых примерах способ энтропийного кодирования для данных 637 информации «разбиение/нет разбиения» может быть определен на основе одного из параметров, или нескольких параметров или характеристик данных 637 информации «разбиение/нет разбиения» или других системных параметров (например, эффективность сжатия, характеристики данных и т.д.), как обсуждаются здесь. Найденный способ энтропийного кодирования может быть применен к данным 637 информации «разбиение/нет разбиения» для генерации сжатых данных 643 информации «разбиение/нет разбиения». Как показано, в некоторых примерах способ энтропийного кодирования для данных 637 информации «разбиение/нет разбиения» может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше.
Как показано, данные 638 опорной информации для прогнозирования могут быть приняты модулем 634 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для опорных типов. В некоторых примерах способ энтропийного кодирования для данных 638 опорной информации для прогнозирования может быть определен на основе одного из параметров, нескольких параметров или характеристик этих данных 638 опорной информации для прогнозирования или других системных параметров (например, эффективность сжатия, характеристики данных и т.д.), как обсуждается здесь. Найденный способ энтропийного кодирования может быть применен к данным 638 опорной информации для прогнозирования для генерации сжатых данных 644 опорной информации для прогнозирования. Как показано, в некоторых примерах способ энтропийного кодирования для данных 638 опорной информации для прогнозирования может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше.
Как показано, модуль 404 кодирования может содержать модуль 641 кодирования длин серий в коде VLC и/или прокси-кодирования в коде VLC для данных «кодировано/не кодировано» и может принимать видеоданные 414. Видео данные 414 могут быть данными типа «кодировано/не кодировано». Например, единица (или суб-единица) разбиения может быть кодирована, если она содержит какие-либо ненулевые коэффициенты преобразования, и единица (или суб-единица) разбиения может быть не кодирована, если она содержит только нулевые коэффициенты преобразования. В некоторых примерах данные «кодировано/не кодировано» могут быть не нужны для единиц разбиения, имеющих режим «intra» или «skip». В некоторых примерах такие данные «кодировано/не кодировано» могут быть нужны для единиц разбиения, имеющих режим «auto», «inter» или «multi». В некоторых примерах способ энтропийного кодирования для видеоданных 414 может быть определен на основе одного из параметров, нескольких параметров или характеристик видеоданных 414 или других системных параметров. В некоторых примерах способ энтропийного кодирования для видеоданных 414 может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, как описано выше. Найденный способ энтропийного кодирования может быть применен к видеоданным 414 для генерации сжатых видеоданных 424. В некоторых примерах модуль 404 кодирования может определить, какой способ обеспечивает наивысшую эффективность сжатия данных, как обсуждается, так что указанный параметр, ассоциированный с видеоданными 411, может представлять собой число битов, необходимое для каждого способа кодирования, или другой подобный параметр. В некоторых примерах параметр, ассоциированный с видеоданными 411, может быть основан на характеристиках видеоданных, так что найденный способ кодирования может быть адаптивным к принятым видеоданным.
Как показано, в некоторых примерах модуль 405 кодирования может содержать модуль 651 для адаптивного векторного кодирования в коде VLC коэффициентов преобразования и/или модуль 652 адаптивного одномерного (1D) и двумерного (2D) кодирования в коде VLC для коэффициентов преобразования.
Как показано, модуль 651 для адаптивного векторного кодирования в коде VLC коэффициентов преобразования может принимать данные 653 коэффициентов преобразования, которые могут содержать данные коэффициентов преобразования для блоков или единиц разбиения или суб-единиц разбиения, имеющих размер 2 в одном направлении (например, единицы разбиения размером 2×K или K×2). Способ адаптивного векторного кодирования в коде переменной длины может быть применен к данным 653 коэффициентов преобразования для генерации сжатых данных 655 коэффициентов преобразования. В некоторых примерах способ адаптивного векторного кодирования в коде переменной длины может содержать разделение блоков или единиц разбиения в соответствии с деревом деления на четыре или представление каждого квадранта, образованного в результате деления на четыре, посредством одного векторного кодового слова, которое представляет все коэффициенты одним индексом, и энтропийного кодирования кодового слова с использованием способа кодирования в коде переменной длины или аналогичного способа.
Кроме того, как показано, модуль 652 адаптивного одномерного (1D) и двумерного (2D) кодирования в коде VLC для коэффициентов преобразования может принимать данные 654 коэффициентов преобразования и может применять адаптивное 1-мерное кодирование в коде переменной длины для блоков или единиц разбиения или суб-единиц разбиения размером 4×4 и адаптивное 2-мерное кодирование в коде переменной длины для блоков или единиц, либо суб-единиц разбиения со всеми прочими размерами (например, 4×8, 8×4, 8×8, 16×16, 32×32, 64×64 и т.п.) для генерации сжатых данных 656 коэффициентов преобразования. Как обсуждается, данные 653, 654 коэффициентов преобразования могут быть результатом преобразования имеющих прямоугольную форму (или квадратную или подобную форму) единиц разбиения разностных величин пикселей, выполненного посредством модуля 108 адаптивного преобразования с последующим квантованием полученных коэффициентов посредством модуля 109 адаптивного квантования. В некоторых примерах данные коэффициентов преобразования могут быть сканированы для преобразования их в 1-мерные частотно-упорядоченные единицы разбиения в модуле 405 кодирования. Такое преобразование может быть в высокой степени адаптивно к любым размерам единиц разбиения (например, 24 или более, либо 32 или более размеров единиц преобразования), различным типам данных (например, коэффициентам дискретного косинусного преобразования или коэффициентам гибридного параметрического преобразования Хаара или аналогичного преобразования применительно к единицам разбиения при внутрикадровом или межкадровом прогнозировании) и/или разному набору характеристик квантователя (например, различным сочетаниям параметров и/или матриц квантователя). Далее, блок или единица, либо суб-единица разбиения может принадлежать различным типам кадров: 1-кадр (например, только компенсация при внутрикадровом прогнозирования), Р-кадр (например, прогнозируемый) или F-кадр (например, функциональный) и/или может представлять разные типы сигналов или данных (например, яркостные или цветоразностные или другие подобные сигналы), которые могут быть квантованы с применением разных настроек квантователя.
Как показано, модуль 406 кодирования может содержать модуль 661 прогнозирования векторов движения, модуль 662 адаптивного кодирования в коде VLC для разностей векторов движения и/или схему 663 вычитания. Как показано, модуль 406 кодирования может принимать видеоданные 416, которые могут содержать данные векторов движения, через модуль 661 прогнозирования векторов движения. Этот модуль 661 прогнозирования векторов движения может прогнозировать векторы движения на основе видеоданных 416 (например, данных векторов движения из состава видеоданных 516) с использованием исходных векторов движения для генерации соответствующих прогнозируемых векторов движения. В некоторых примерах прогнозирование векторов движения может быть основано на ближайших соседях прогнозируемого вектора движения слева, справа, сверху или снизу. В некоторых примерах могут быть использованы другие соседи в пространстве, которые могут иметь такие же или подобные характеристики. Например, могут быть адаптивно выбраны несколько разных типов прогнозирования, а информация о выборе может быть передана декодирующему устройству 200 в потоке 111 битов данных. Схемы вычитания может вычислять разность между прогнозируемыми векторами движения и исходными векторами движения для генерации разностных векторов движения для энтропийного кодирования. Как показано, модуль 662 адаптивного кодирования в коде VLC для разностей векторов движения может применять способ адаптивного кодирования в коде переменной длины к разностным векторам движения для генерации сжатых видеоданных 526. В некоторых примерах, дифференциальные (например, разностные) векторы движения могут иметь диапазон вдвое больше, чем исходные векторы движения. Далее, компенсация движения с точностью 1/8-ая пикселя может расширить диапазон разностных векторов движения в 8 раз. В некоторых примерах для работы с таким расширением может быть использовано разбиение больших промежутков на меньшие подынтервалы с индексацией векторов внутри этих подынтервалов.
Как показано, модуль 407 кодирования может содержать модуль 671 адаптивного кодирования в коде VLC и/или арифметического кодирования для данных типа и направления при внутрикадровом прогнозировании и может принимать видеоданные 417. Видеоданные 517 могут иметь такой тип данных, что видеоданные 417 могут содержать данные типа внутрикадрового прогнозирования или данные направления внутрикадрового прогнозирования. В некоторых примерах способ энтропийного кодирования для видеоданных 417 может быть определен на основе одного из параметров, нескольких параметров или характеристик видеоданных 417 или других системных параметров (например, эффективности сжатия и т.п.), как осуждается здесь. В некоторых примерах способ энтропийного кодирования видеоданных 417 может представлять собой способ адаптивного кодирования в коде переменной длины или способ арифметического кодирования, как описано выше. Найденный способ энтропийного кодирования может быть применен к видеоданным 417 для генерации сжатых видеоданных 427. В некоторых примерах способ адаптивного кодирования в коде переменной длины может представлять собой контентно-адаптивное кодирование в коде переменной длины на основе содержания видеоданных 417. В некоторых примерах способ арифметического кодирования может представлять собой контентно-адаптивное двоичное арифметическое кодирование на основе содержания видеоданных 417. В некоторых примерах видеоданные 417 могут поддерживать 9 или более направлений прогнозирования и разнообразные типы прогнозирования, включая планарное (planar) прогнозирование, кодирование с прогнозированием на основе двоичного дерева (Binary Tree Predictive Coding (ВТРС)) или другое подобное прогнозирование.
Как показано на фиг. 6 и обсуждается выше применительно к фиг. 4, выходные сигналы модулей 401-407 кодирования (через соответствующие суб-модули) могут быть введены в модуль 408 сборки потоков битов данных, который может передавать на выход мультиплексированный поток битов данных, сформатированный в соответствии с синтаксисом потока битов данных, как обсуждается выше.
Фиг. 7 представляет схему, иллюстрирующую пример модуля 202 энтропийного декодирования, построенного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Как показано и как обсуждается выше применительно к фиг. 5, модуль 202 энтропийного декодирования может содержать модуль 501 декодирования заголовков, параметров и данных картирования, модуль 502 декодирования разбиения кадров, единиц прогнозирования и единиц кодирования, модуль 503 декодирования данных о режимах кодирования и опорных типах, модуль 504 декодирования данных «кодировано/не кодировано», модуль 505 декодирования коэффициентов преобразования, модуль 506 декодирования прогнозируемого вектора движения и разностного вектора движения, модуль 507 декодирования данных типа и направления при внутрикадровом прогнозировании, и/или модуль 508 разборки потока битов данных. В некоторых примерах модуль 202 энтропийного декодирования (и относящиеся к нему суб-модули) могут осуществлять способы, обратные способам, применяемым в модуле 110 энтропийного кодирования (и относящихся к нему суб-модулях), так что здесь может быть взаимно однозначное соответствие между модулями кодирования (и суб-модулями) и модулями декодирования (и суб-модулями).
Как показано, модуль 508 разборки потока битов данных может принимать входной поток 201 битов данных. В некоторых примерах входной поток 201 битов данных может представлять собой действительный поток битов данных, такой как, например, действительный кодированный поток битов данных для видео следующего поколения (NGV), который может соответствовать спецификации синтаксиса потоков битов данных NGV, или какой-либо другой действительный поток битов данных, как обсуждается здесь. Как обсуждается применительно к фиг. 5, модуль 508 разборки потока битов данных может разбирать входной поток 201 битов данных для выделения сжатых видеоданных 511-517, так что каждые такие видеоданные могут содержать одну или несколько составляющих, как обсуждается ниже. Например, модуль 508 разборки потока битов данных может использовать заданный синтаксис или спецификации для разделения входного потока 201 битов данных на составляющие его сжатые видеоданные 511-517 по типам данных для расширения посредством модулей 501-507 декодирования. В некоторых примерах, модуль 508 разборки потока битов данных может выполнять операции, обратные операциям модуля 408 сборки потока битов данных. В некоторых примерах разборка входного потока 201 битов данных может быть охарактеризована как демультиплексирование.
Как показано, модуль 501 декодирования может содержать модуль 711 адаптивного декодирования кода переменной длины (VLC), декодирования серий символов в коде VLC и/или прокси-декодирования в коде VLC данных заголовков, параметров и данных картирования и может принимать сжатые видеоданные 511. В некоторых примерах сжатые видеоданные 511 могут содержать данные заголовков (например, заголовков потоков битов данных на уровне последовательности и/или кадров), параметры морфинга, параметры синтеза или данные глобального картирования, энтропийно кодированные с использованием одного из способов - способа адаптивного кодирования длин серий символов в коде переменной длины, способа адаптивного прокси-кодирования в коде переменной длины или способа сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины. В некоторых примерах модуль 711 адаптивного декодирования кода VLC, декодирования серий символов в коде VLC и/или прокси-декодирования в коде VLC данных заголовков, параметров и данных картирования может определять способ энтропийного декодирования, применимый к сжатым видеоданным 511, и декодировать сжатые видеоданные 511 с использованием применимого способа для генерации видеоданных 521. В некоторых примерах применимый способ может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 502 декодирования может содержать модуль 721 адаптивного декодирования кода VLC с кодовой таблицей для декодирования единиц разбиения кадров, модуль 722 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при внутрикадровом прогнозировании и/или модуль 723 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при межкадровом прогнозировании и единиц кодирования и может принимать сжатые видеоданные 512.
Как показано, модуль 721 адаптивного декодирования кода VLC с кодовой таблицей для декодирования единиц разбиения кадров может принимать сжатые данные 724 срезов или областей кадров. В некоторых примерах этот модуль 721 адаптивного декодирования кода VLC с кодовой таблицей для декодирования единиц разбиения кадров может применять адаптивное декодирование кода переменной длины с кодовой таблицей к сжатым данным 724 срезов или областей кадров для генерации данных 727 срезов или областей кадров. Как обсуждается, способ адаптивного декодирования кода переменной длины с кодовой таблицей может представлять собой контентно-адаптивное декодирование кода переменной длины с кодовой таблицей, адаптируемое к контенту сжатых данных 724 срезов или областей кадров или к другим системным параметрам и т.д. В некоторых примерах кодовая таблица может быть реализована посредством модуля 721 адаптивного декодирования кода VLC с кодовой таблицей для декодирования единиц разбиения кадров.
Как показано, модуль 722 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при внутрикадровом прогнозировании может принимать сжатые данные 725 разбиения при внутрикадровом прогнозировании. В некоторых примерах сжатые данные 725 разбиения при внутрикадровом прогнозировании могут представлять собой сжатые данные разбиения при внутрикадровом прогнозировании, энтропийно кодированные с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины, как описано здесь. В некоторых примерах, модуль 722 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при внутрикадровом прогнозировании может определить способ энтропийного декодирования, применимый к сжатым данным 725 разбиения при внутрикадровом прогнозировании, и произвести энтропийное декодирование этих сжатых данных 725 разбиения при внутрикадровом прогнозировании с использованием найденного применимого способа генерации данных 728 разбиения при внутрикадровом прогнозировании. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 723 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при межкадровом прогнозировании и единиц кодирования может принимать сжатые данные 726 разбиения при межкадровом прогнозировании и единиц кодирования. В некоторых примерах, сжатые данные 726 разбиения при межкадровом прогнозировании и единиц кодирования могут представлять собой сжатые данные разбиения при межкадровом прогнозировании и единиц кодирования, энтропийно кодированные с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины, как описано здесь. В некоторых примерах, модуль 723 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных разбиения при межкадровом прогнозировании и единиц кодирования может определять способ энтропийного декодирования, применимый к сжатым данным 726 разбиения при межкадровом прогнозировании и единиц кодирования, и энтропийно декодировать эти сжатые данные 726 разбиения при межкадровом прогнозировании и единиц кодирования с использованием найденного применимого способа для генерации данных 729 разбиения при межкадровом прогнозировании и единиц кодирования. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 503 декодирования может содержать модуль 731 адаптивного декодирования кода VLC совместно для режимов и разбиения, модуль 732 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для режимов, модуль 733 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для разбиений и/или модуль 734 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для опорных типов и может принимать сжатые видеоданные 513.
Как обсуждается выше применительно к модулю 403 кодирования, в некоторых примерах данные режимов и разбиений могут быть кодированы совместно, а в некоторых примерах такие данные режимов и разбиений могут быть кодированы по отдельности. В некоторых примерах модуль 731 адаптивного декодирования кода VLC совместно для режимов и разбиения может декодировать совместно кодированные данные, а модуль 732 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для режимов и модуль 733 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для разбиений могут декодировать данные, кодированные по отдельности. В некоторых примерах, кодированы ли данные совместно или по отдельности, может быть указано во входном потоке 201 битов данных.
Как показано, сжатые данные 735 совместного кодирования режимов и разбиений могут быть приняты модулем 731 адаптивного декодирования кода VLC совместно для режимов и разбиения. В некоторых примерах, модуль 731 адаптивного декодирования кода VLC совместно для режимов и разбиения может применять адаптивное декодирование кода переменной длины к сжатым данным 735 совместного кодирования режимов и разбиений для генерации данных 739 совместного кодирования режимов и разбиений. Как обсуждается, адаптивное декодирование кода переменной длины может представлять собой контентно-адаптивное декодирование кода переменной длины, адаптируемое к содержанию сжатых данных 735 совместного кодирования режимов и разбиений или другим системным параметрам и т.п.
Как показано, модуль 732 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для режимов может принимать сжатые данные 736 информации режимов. В некоторых примерах, сжатые данные 736 информации режимов могут содержать сжатые данные информации режимов, полученные посредством энтропийного кодирования с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины, как описывается здесь. В некоторых примерах модуль 732 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для режимов может определять способ энтропийного декодирования, применимый к сжатым данным 736 информации режимов, и осуществлять энтропийное декодирование сжатых данных 736 информации режимов с использованием найденного применимого способа для генерации данных 742 информации режимов. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 733 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для разбиений может принимать сжатые данные 737 информации разбиения. В некоторых примерах, сжатые данные 737 информации разбиения могут представлять сжатые данные информации разбиения, полученные посредством энтропийного кодирования с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины, как описано здесь. В некоторых примерах модуль 733 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для разбиений может определять способ энтропийного декодирования, применимый к сжатым данным 737 информации разбиения, и осуществлять энтропийное декодирование сжатых данных 737 информации разбиения с использованием найденного применимого способа для генерации данных 743 информации разбиения. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 734 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для опорных типов может принимать сжатые данные 738 информации опорных типов. В некоторых примерах сжатые данные 738 информации опорных типов могут содержать сжатые данные информации опорных типов, полученные в результате энтропийного кодирования с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины, как описано здесь. В некоторых примерах модуль 734 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для опорных типов может определять способ энтропийного декодирования, применимый к сжатым данным 738 информации опорных типов, и осуществлять энтропийное декодирование этих сжатых данных 738 информации опорных типов с использованием найденного применимого способа для генерации данных 744 информации опорных типов. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как показано, модуль 504 декодирования может содержать модуль 741 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных «кодировано/не кодировано» и может принимать сжатые видеоданные 514. В некоторых примерах, сжатые видеоданные 514 содержать данные «кодировано/не кодировано», как обсуждается здесь, полученные в результате энтропийного кодирования с использованием способа адаптивного кодирования длин серий символов в коде переменной длины или способа адаптивного прокси-кодирования в коде переменной длины. В некоторых примерах модуль 741 декодирования длин серий в коде VLC и/или прокси-декодирования кода VLC для данных «кодировано/не кодировано» может определять способ энтропийного декодирования, применимый к сжатым видеоданным 514, и декодировать эти сжатые видеоданные 514 с использованием найденного применимого способа для генерации видеоданных 524. В некоторых примерах применимый способ декодирования может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных. В некоторых примерах применимый способ может представлять собой способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины.
Как показано, модуль 505 декодирования может содержать модуль 751 для адаптивного векторного декодирования кода VLC для коэффициентов преобразования и/или модуль 752 адаптивного одномерного (1D) и двумерного (2D) декодирования кода VLC для коэффициентов преобразования и может принимать сжатые видеоданные 515.
Как показано, модуль 751 для адаптивного векторного декодирования кода VLC для коэффициентов преобразования может принимать сжатые данные 753 коэффициентов преобразования, которые могут содержать сжатые данные коэффициентов преобразования для блоков или единиц разбиения или суб-единиц разбиения, имеющих размер 2 в одном направлении (например, единицы разбиения размером 2×K или K×2), как обсуждается здесь. В некоторых примерах модуль 751 для адаптивного векторного декодирования кода VLC для коэффициентов преобразования может применять способ адаптивного векторного декодирования кода переменной длины для энтропийного декодирования сжатых данных 753 коэффициентов преобразования с целью генерации данных 755 коэффициентов преобразования. Как обсуждается, в некоторых примерах способ адаптивного векторного декодирования кода переменной длины может содержать использование кодового слова переменной длины для генерации всех коэффициентов разбиения в соответствии с деревом деления на четыре для блока, которые могут быть сформированы посредством слияния блока, разделенного в соответствии с деревом деления на четыре.
Как показано, модуль 752 адаптивного одномерного (1D) и двумерного (2D) декодирования кода VLC для коэффициентов преобразования может принимать сжатые данные 754 коэффициентов преобразования, которые могут представлять собой сжатые данные коэффициентов преобразования для блоков или единиц, либо суб-единиц разбиения с размером 4×4 и со всеми прочими размерами блоков или единиц, либо суб-единиц разбиения (например, 4×8, 8×4, 8×8, 16×16, 32×32, 64×64 и т.п.). В некоторых примерах модуль 752 адаптивного одномерного (1D) и двумерного (2D) декодирования кода VLC для коэффициентов преобразования может применять адаптивное 1-мерное декодирование кода переменной длины для блоков или единиц разбиения или суб-единиц разбиения размером 4×4 и адаптивное 2-мерное декодирование кода переменной длины для блоков или единиц, либо суб-единиц разбиения со всеми прочими размерами (например, 4×8, 8×4, 8×8, 16×16, 32×32, 64×64 и т.п.) для энтропийного декодирования сжатых данных 754 коэффициентов преобразования и генерации данных 756 коэффициентов преобразования.
Как показано, модуль 506 декодирования может содержать модуль 762 адаптивного декодирования кода VLC для разностей векторов движения, модуль 761 прогнозирования векторов движения и сумматор 763 и может принимать сжатые видеоданные 516. В некоторых примерах модуль 762 адаптивного декодирования кода VLC для разностей векторов движения может декодировать сжатые видеоданные 516 для генерации разностей векторов движения. Далее, модуль 761 прогнозирования векторов движения может генерировать прогнозируемые векторы движения с использованием ранее декодированных соседних векторов движения аналогично способам, обсуждавшимся применительно к модулю 661 прогнозирования векторов движения. Как показано, декодированные разностные векторы движения могут быть суммированы посредством сумматора 763 с прогнозируемыми векторами движения для генерации реконструированных векторов движения, которые могут быть переданы на выход в качестве части видеоданных 526 и далее использованы для прогнозирования других векторов движения посредством модуля 761 прогнозирования векторов движения.
Как показано, модуль 507 декодирования может содержать модуль 771 адаптивного декодирования кода VLC и/или арифметического декодирования для данных типа и направления при внутрикадровом прогнозировании и может принимать сжатые видеоданные 517. В некоторых примерах сжатые видеоданные 517 могут содержать данные типа внутрикадрового прогнозирования и данные направления внутрикадрового прогнозирования, полученные посредством энтропийного кодирования с использованием способа адаптивного кодирования в коде VLC или способа арифметического кодирования. В некоторых примерах модуль 771 адаптивного декодирования кода VLC и/или арифметического декодирования для данных типа и направления при внутрикадровом прогнозировании может определять способ энтропийного декодирования, применимый к сжатым видеоданным 517, и декодировать эти сжатые видеоданные 517 с использованием найденного применимого способа для генерации видеоданных 527. В некоторых примерах применимый способ может быть определен на основе индикатора, параметра, данных заголовка или других подобных данных, передаваемых во входном потоке 201 битов данных.
Как обсуждается, видеоданные 521-527 (включая различные обсуждавшиеся составляющие) могут быть переданы разным компонентам декодирующего устройства 200. Далее, как обсуждается, декодирующее устройство 200 может использовать полученные в результате энтропийного декодирования видеоданные 521-527 для генерации видеокадров, которые могут быть переданы на выход в виде готового для дисплея видео 219 для представления пользователю на экране дисплейного устройства.
Фиг. 8 представляет логическую схему, иллюстрирующую пример процесса 800, организованного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Процесс 800 может содержать одну или несколько операций, функций или действий, представленных посредством одной или нескольких операций 802, 804, 806 и/или 808. Процесс 800 может составлять по меньшей мере часть процесса видео кодирования следующего поколения. Посредством неограничивающего примера процесс 800 может составлять по меньшей мере часть процесса кодирования для видео следующего поколения, осуществляемого системой 100 кодирования, показанной на фиг. 1, и/или модулем 110 энтропийного кодирования, показанным на фиг 5 или 7.
Процесс 800 может начаться с операции 802 «Получение первых и вторых видеоданных разных типов для энтропийного кодирования», на которой первые и вторые (или дополнительные) видеоданные разных типов могут быть получены или приняты для энтропийного кодирования. Например, могут быть приняты два или более типа видео данных из группы 411-417 (и/или какие-либо составляющие видеоданных 511-517). В некоторых примерах, видеоданные 411-417 могут быть приняты адаптивным энтропийным кодирующим устройством 110. Как обсуждалось, первые и вторые (или дополнительные) быть данными разных типов, таких как какие-либо типы или составляющие данных, обсуждавшиеся в связи с видеоданными 411-417 или где-либо еще в настоящем описании.
Процесс 800 может продолжиться операцией 804 «Определение способа энтропийного кодирования для первых видеоданных», где для первых видеоданных может быть выбран первый способ энтропийного кодирования. Как обсуждается, в некоторых примерах, один или несколько модулей 401-407 кодирования могут выбрать способ кодирования для видеоданных 411-417 из различных вариантов способов кодирования. Например, модуль 401 кодирования может определить способ кодирования для видеоданных 411 из группы, куда входят способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины и способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины. Далее, модуль 402 кодирования может определить способ кодирования для данных 625 разбиения при внутрикадровом прогнозировании из состава видеоданных 412 из группы, куда входят способ адаптивного кодирования длин серий символов в коде переменной длины и способ адаптивного прокси-кодирования в коде переменной длины, и т.д. Выше были приведены примеры в самом широком спектре при обсуждении фиг. 4 и 6, поэтому здесь, для краткости, эти примеры повторены не будут. Как обсуждалось, в некоторых примерах могут быть приняты два или несколько типов видеоданных. В некоторых примерах способ энтропийного кодирования может быть выбран для двух, трех или более типов видеоданных, как описано здесь.
Как обсуждается, для видеоданных может быть определен способ энтропийного кодирования. В некоторых примерах кодовая таблица, ассоциированная с первым способом кодирования, может быть выбрана из двух или более имеющихся кодовых таблиц. Например, выбор таблицы может быть сделан на основе сравнения числа битов, эффективности кодирования или других подобных характеристик между доступными кодовыми таблицами. Например, какой-либо из обсуждаемых здесь способов энтропийного кодирования может иметь несколько доступных таблиц. В некоторых примерах может быть сформирован индикатор таблицы и вставлен в поток 900 битов данных для указания выбранной таблицы для видеоданных. Например, поток 900 битов данных может содержать индикаторы, указывающие выбранный способ кодирования и выбранную кодовую таблицу. Далее, в поток 900 битов данных могут быть вставлены индикатор или несколько индикаторов, ассоциированных с длиной видеоданных. Например, может быть указана длина или число элементов видеоданных (например, длина строки видео), а какая-либо остаточная часть (например, если длина неравномерно разбита на элементы) может быть кодирована с использованием битовой карты и вставлена в выходной поток битов данных.
Процесс 800 может продолжиться операцией 806 «Энтропийное кодирование первых видеоданных с использованием первого способа энтропийного кодирования и энтропийное кодирование вторых видеоданных для генерации первых и вторых сжатых видеоданных», где первые видеоданные могут быть кодированы с использованием первого способа энтропийного кодирования для генерации первых сжатых видеоданных, а вторые видеоданные могут быть сжаты с использованием второго способа энтропийного кодирования для генерации первых и вторых сжатых видеоданных.
Процесс 800 может продолжиться операцией 808 «Сборка первых и вторых сжатых видеоданных для генерации выходного потока битов данных», где первые сжатые видеоданные и вторые сжатые видеоданные могут быть собраны для генерации выходного потока видеоданных. Например, модуль 508 сборки потоков битов данных может собрать или мультиплексировать первые сжатые видеоданные и вторые сжатые видеоданные для генерации выходного потока 111 битов данных, как обсуждается здесь.
Как обсуждается, в некоторых примерах выходной поток битов 111 данных может быть мультиплексирован с аудио потоком (кодированным или некодированным) для генерации мультиплексированного аудиовизуального потока. Далее, как обсуждается, в некоторых примерах, одна или несколько групп видеоданных могут быть предварительно обработаны или подвержены другим манипуляциям перед энтропийным кодированием. Например, для данных векторов движения может быть выполнено прогнозирование векторов движения для генерации прогнозируемых векторов движения, затем может быть вычислена разность между прогнозируемыми векторами движения и исходными векторами движения для генерации разностных векторов движения, а разностные векторы движения может быть энтропийно кодированы, как обсуждается здесь. Далее, в некоторых примерах каждый из семи модулей 401-407 кодирования может быть реализован одновременно для операции над семью типами видеоданных 411-417. Процесс 800 может быть реализован посредством модуля 110 адаптивного энтропийного кодирования, как обсуждается здесь. Далее, процесс 800 может быть повторен последовательно или параллельно на произвольном числе событий видеоданных.
Как обсуждается, видеоданные разных типов могут быть энтропийно кодированы с использованием различных найденных (или предварительно заданных) способов адаптивного энтропийного кодирования для генерации сжатых видеоданных. Эти сжатые видеоданные могут быть собраны для генерации выходного потока битов данных.
Фиг. 9 иллюстрирует пример потока 900 битов данных, организованного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. В некоторых примерах поток 900 битов данных может соответствовать выходному потоку 111 битов данных, как показано на фиг. 1, 3а, 4 и 6, и/или входному потоку 201 битов данных, как показано на фиг. 2, 3b, 5 и 7. Хотя, для большей ясности, это не показано на фиг. 9, в некоторых примерах поток 900 битов данных может содержать сегмент заголовка и сегмент данных. В различных примерах поток 900 битов данных может содержать данные, индикаторы, величины индексов, данные выбора режима или другие подобные данные, ассоциированные с кодированием сжатого видео, как обсуждается здесь. Как показано, в некоторых примерах поток 900 битов данных может содержать данные 901 индикаторов, сжатые видеоданные 421, сжатые видеоданные 422, сжатые видеоданные 423, сжатые видеоданные 424, сжатые видеоданные 425, сжатые видеоданные 426 и/или сжатые видеоданные 427. Показанные на чертеже данные могут присутствовать в потоке 900 битов данных в любом порядке и могут располагаться в потоке одни рядом с другими или могут быть отделены одни от других различными дополнительными данными для кодирования видео. Как обсуждается, поток 900 битов данных может также содержать индикаторы, указывающие выбранный способ кодирования и выбранную кодовую таблицу (например, данные 901 индикаторов). Далее, в поток 900 битов данных могут входить индикатор или несколько индикаторов, ассоциированных с длиной видеоданных. Например, в поток могут быть вставлены длина или число элементов видеоданных (например, длина строки видео), а любая остаточная часть (например, если длина неравномерно разбита на элементы) может быть кодирована с использованием битовой карты и вставлена в выходной поток битов данных.
В некоторых примерах сжатые видеоданные 421-427 могут содержать какие-либо сжатые видеоданные, кодированные каким-либо из обсуждаемых способов. В некоторых примерах данные 901 индикаторов могут содержать данные заголовка, данные индикатора режима и/или данные, указывающие способы энтропийного кодирования, ассоциированные со сжатыми видеоданными 421-427. Например, данные 901 индикаторов могут указывать способ энтропийного кодирования, используемый для сжатия видеоданных 421, способ энтропийного кодирования, используемый для сжатия частей видеоданных 422, способ энтропийного кодирования, используемый для сжатия частей видеоданных 423, способ энтропийного кодирования, используемый для сжатия видеоданных 424, и/или способ энтропийного кодирования, используемый для сжатия видеоданных 427, как обсуждается здесь применительно к фиг. 4 и 6.
Как обсуждается, поток 900 битов данных может быть сформирован кодирующим устройством 100 и/или принят декодирующим устройством 200 для декодирования, так что видеокадры могут быть представлены на экране дисплейного устройства.
Фиг. 10 представляет логическую схему, иллюстрирующую пример процесса 1000, организованного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Процесс 1000 может содержать одну или несколько операций, функций или действий, как иллюстрировано одной или несколькими операциями 1002, 1004, 1006 и/или 1008. Процесс 1000 может составлять по меньшей мере часть процесса декодирования видео следующего поколения. Посредством неограничивающего примера процесс 1000 может составлять по меньшей мере часть процесса декодирования для видео следующего поколения, осуществляемого системой 200 декодирования, показанной на фиг. 2.
Процесс 1000 может начинаться с операции 1002 «Прием энтропийно кодированного потока битов данных», на которой может быть принят кодированный поток битов данных. Например, поток битов данных, кодированный, как обсуждается здесь, может быть принят посредством видео декодирующего устройства. В некоторых примерах поток 100 или 900 битов данных или другой подобный поток данных может быть принят декодирующим устройством 200.
Процесс 1000 может продолжиться операцией 1004 «Разборка энтропийно кодированного потока битов данных на первые сжатые видеоданные и вторые сжатые видеоданные», где принятый поток битов данных может быть разобран для определения различных типов сжатых видеоданных. Например, поток 201 битов данных может быть разобран модулем 508 разборки битов данных для генерации сжатых видеоданных 511-517 (и каких-либо составляющих видеоданных), как показано на фиг. 7. Например, разобранные сжатые видеоданные содержат первые сжатые видеоданные и вторые сжатые видеоданные.
Процесс 1000 может продолжиться операцией 1006 «Энтропийное декодирование первых и вторых сжатых видеоданных для генерации первых видеоданных и вторых видеоданных», где первые и вторые сжатые видеоданные могут быть энтропийно декодированы для генерации (расширенных) первых и вторых видеоданных. Как обсуждается, в некоторых примерах один или несколько из модулей декодирования 501-507 могут определить способ кодирования для сжатых видеоданных 511-517 из различных вариантов способов кодирования. Например, модуль 501 декодирования может выбрать способ кодирования для сжатых видеоданных 511 из группы, куда входят способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины или способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины, на основе индикатора или нескольких индикаторов, входящих в состав входного потока битов данных. Далее, модуль 502 декодирования может определить способ кодирования для сжатых данных 725 разбиения при внутрикадровом прогнозировании из состава видеоданных 512 из группы, куда входят способ адаптивного кодирования длин серий символов в коде переменной длины и способ адаптивного прокси-кодирования в коде переменной длины, и т.д. Выше были приведены примеры в самом широком спектре при обсуждении фиг. 5 и 7, поэтому здесь, для краткости, эти примеры повторены не будут. Как обсуждается, в некоторых примерах могут быть приняты два или более типов видеоданных. В некоторых примерах может быть определен способ энтропийного декодирования для двух, трех или более типов видеоданных, как обсуждается здесь.
Процесс 1000 может продолжиться операцией 1008 «Декодирование первых и вторых видеоданных для генерации видеокадра», где первые и вторые видеоданные (и какие-либо другие энтропийно декодированные видеоданные) могут быть декодированы для генерации видеокадров. Эти видеокадры могут подходить для представления пользователю на экране дисплейного устройства, например.
Как обсуждается, в некоторых примерах одна или несколько групп энтропийно декодированных видеоданных могут быть подвергнуты пост-обработке или другим манипуляциям перед дальнейшим декодированием. Например, энтропийно декодированные разностные векторы движения могут быть суммированы с прогнозируемыми векторами движения для генерации реконструированных векторов движения, которые могут быть переданы на выход для использования при прогнозировании векторов движения (например, межкадровом прогнозировании) в декодирующем устройстве 200.
Различные компоненты описываемых здесь систем могут быть реализованы посредством загружаемого программного обеспечения, встроенного программного обеспечения и/или аппаратуры и/или какого-либо сочетания этих компонентов. Например, различные компоненты кодирующего устройства 100 или декодирующего устройства 200 могут быть реализованы, по меньшей мере частично, с использованием аппаратуры компьютерной системы на кристалле (SoC), такой как используются в компьютерных системах, например, в смартфонах. Специалисты в рассматриваемой области могут понимать, что описываемая здесь система может содержать дополнительные компоненты, не показанные на соответствующих чертежах. Например, обсуждаемые здесь системы могут содержать такие дополнительные компоненты, как модули мультиплексора или демультиплексора потоков битов данных или другие модули, которые не были изображены на чертежах для большей ясности.
Некоторые дополнительные и/или альтернативные подробности процессов 800, 1000 и других процессов, обсуждаемых здесь, могут быть проиллюстрированы на одном или нескольких примерах реализации, обсуждаемых здесь и, в частности, применительно к фиг. 11 ниже.
Фиг. 11 представляет схему, иллюстрирующую пример системы 1610 видео кодирования и процесса 1100 видео кодирования по операциям в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. В изображенном варианте процесс 1100 может содержать одну или несколько операций, функций или действий, как показано одним или несколькими действиями 1100-1112. В качестве неограничивающего примера процесс 1100 может быть описан со ссылками на пример системы 1610 видео кодирования, содержащей кодирующее устройство 100, показанное на фиг. 1, и декодирующее устройство 200, показанное на фиг. 2, как это обсуждается ниже со ссылками на фиг. 16. В различных примерах процесс 1100 может быть осуществлен системой, содержащей и кодирующее устройство, и декодирующее устройство, либо раздельными системами, так что одна система использует кодирующее устройство (и, в качестве опции, декодирующее устройство), а другая система использует декодирующее устройство (и, в качестве опции, кодирующее устройство). Следует также отметить, что, как обсуждается выше, кодирующее устройство может иметь в составе локальный декодирующий контур, использующий локальное декодирующее устройство, как часть системы кодирования.
В иллюстрируемом варианте система 1610 видео кодирования может содержать логическое устройство 1150 либо другое подобное устройство, и/или сочетание таких устройств. Например, логическое устройство 1150 может содержать кодирующее устройство 100 и может иметь в составе какие-либо модули, обсуждавшиеся применительно к фиг. 1 и/или фиг. 3 и 5, и декодирующее устройство 200 может иметь в составе какие-либо модули, обсуждавшиеся применительно к фиг. 2 и/или фиг. 4 и 6. Хотя система 1610 видео кодирования, как показано на фиг. 16, может иметь один конкретный набор блоков или действий, ассоциированных с конкретными модулями, эти блоки или действия могут быть ассоциированы с другими модулями, отличными от конкретных модулей, указанных на чертеже. Хотя процесс 1100, как он изображен, предназначен для кодирования и декодирования, принципы и операции, описываемые здесь, могут быть применен к кодированию и/или декодированию по отдельности и, в более общем смысле, к видео кодированию.
Процесс 1100 может начинаться с операции 1101 «Получение видеоданных различных типов», где эти видеоданные различных типов могут быть приняты для энтропийного кодирования. Например, для энтропийного кодирования могут быть приняты видеоданные двух или более типов. Например, два или болеет типа видеоданных 411-417 (и/или какие-либо составляющие этих видеоданных 411-417) могут быть приняты в модуле 110 адаптивного энтропийного кодирования. Как обсуждается, первые и вторые (или дополнительные) видеоданные могут быть разных типов, таких как какие-либо типы данных или составляющие типов данных, обсуждавшиеся применительно к видеоданным 411-417 или где-либо еще в настоящем описании.
Процесс 1100 может продолжиться переходом от операции 1101 к операции 1102 «Определение способов энтропийного кодирования для одного или нескольких типов видеоданных», где для рассматриваемых одного или нескольких типов видеоданных могут быть выбраны способы энтропийного кодирования. Как обсуждается, в некоторых примерах один или несколько модулей 401-407 кодирования могут выбирать способ кодирования для видеоданных 411-417 из группы различных вариантов (опций) способов кодирования. Например, модуль 401 кодирования может определить способ кодирования для видеоданных 411 из группы, содержащей способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины и способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины. Далее, модуль 402 кодирования может выбрать в качестве способа кодирования для данных 625 разбиения при внутрикадровом прогнозировании из состава видеоданных 412 способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, и т.д., как обсуждалось здесь.
Процесс 1100 может продолжиться операцией 1103 «Энтропийное кодирование видеоданных с использованием выбранных способов», на которой может быть выполнено энтропийное кодирование видеоданных с использованием найденных способов. Например, первые видеоданные могут быть энтропийно кодированы с применением первого способа энтропийного кодирования для генерации первых сжатых видеоданных. В некоторых примерах вторые, третьи и далее дополнительные видеоданные могут быть энтропийно кодированы с использованием второго, третьего и далее дополнительных способов энтропийного кодирования, как обсуждается здесь, для генерации соответствующих вторых, третьих и т.д. сжатых видеоданных.
Процесс 1100 может продолжиться от операции 1103 к операции 1104 «Сборка сжатых видеоданных», на которой сжатые видеоданные различных типов могут быть собраны воедино для генерации выходного потока битов данных. Например, модуль 408 сборки потоков битов данных может собирать или мультиплексировать сжатые видеоданные для генерации выходного потока 111 битов данных, как обсуждается здесь.
Процесс 1100 может продолжиться от операции 1104 к операции 1105 «Возможное мультиплексирование потока битов видеоданных с аудио потоком», на которой поток битов видеоданных может быть, в качестве опции, мультиплексирован при необходимости с кодированным или некодированным аудио потоком для генерации аудиовизуального потока битов данных.
Процесс 1100 может продолжиться от операции 1105 или операции 1104 к операции 1106 «Передача потока битов данных», на которой полученный поток битов данных может быть передан. Например, система 1610 видео кодирования может передавать выходной поток 111 битов данных или поток 800 битов данных или другой поток через антенну 1602 (пожалуйста, см. фиг. 16).
Операции 1101-1106 могут осуществлять способы видео кодирования и передачи потоков битов данных, которые могут быть использованы системой кодирования, как обсуждается здесь. Следующие операции - 1107-1112 могут осуществлять способы видео декодирования и представления видео на дисплее, которые могут быть использованы системой декодирования, как обсуждается здесь.
Процесс 1100 может продолжиться операцией 1107 «Прием потока битов данных», на которой может быть принят кодированный поток битов данных. Например, входной поток битов данных 100, 201 или поток 800 битов данных или другой подобный поток может содержать разные типы энтропийно кодированных данных, как обсуждается здесь.
Процесс 1100 может продолжиться от операции 1107 к операции 1108 «Разборка потока битов данных для генерации сжатых видеоданных различных типов», где принятый поток битов данных может быть разобран, чтобы выделить различные типы сжатых видеоданных. Например, поток 201 битов данных может быть разобран в модуле 508 разборки потоков битов данных для генерации сжатых видеоданных 511-517 (или каких-либо составляющих видеоданных), как показано на фиг. 7. Например, разобранные сжатые видеоданные могут содержать первые, вторые, третьи или более сжатые видеоданные.
Процесс 1100 может продолжиться от операции 1108 к операции 1109 «Определение способов энтропийного декодирования для одного или нескольких типов сжатых видеоданных», где для одного или нескольких типов сжатых видеоданных могут быть выбраны способы энтропийного декодирования. В некоторых примерах способы энтропийного декодирования могут быть определены на основе флага или другого индикатора или подобного признака, передаваемого в принимаемом потоке битов данных. Как обсуждается, в некоторых примерах один или несколько модулей 501-507 декодирования могут определять способ кодирования для сжатых видеоданных 511-517 из совокупности различных вариантов (опций) способов кодирования. Например, модуль 501 декодирования может определять способ кодирования для сжатых видеоданных из группы, содержащей способ адаптивного кодирования длин серий символов в коде переменной длины, способ адаптивного прокси-кодирования в коде переменной длины и способ сжатия данных с использованием кодовой таблицы или таблиц кодирования в коде переменной длины, на основе индикатора или нескольких индикаторов, содержащихся во входном потоке битов данных. Далее, модуль 502 декодирования может выбрать в качестве способа кодирования для сжатых данных 725 разбиения при внутрикадровом прогнозировании из состава видеоданных 512 способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, и т.д. Выше уже были приведены примеры в самом широком спектре, поэтому здесь, для краткости, эти примеры повторены не будут. Как обсуждается, в некоторых примерах могут быть приняты видеоданные двух или более типов. В некоторых примерах способ энтропийного декодирования может быть определен для двух, трех или более типов видеоданных, как описано здесь.
Процесс 1100 может продолжиться от операции 1109 к операции 1110 «Энтропийное декодирование сжатых видеоданных», где сжатые видеоданные могут быть энтропийно декодированы на основе выбранных способов энтропийного декодирования. Например, сжатые видеоданные 511-517 могут быть энтропийно декодированы посредством модулей 501-507 декодирования.
Процесс 1100 может продолжиться от операции 1110 к операции 1111 «Декодирование энтропийно декодированных видеоданных для генерации видеокадров», где первые и вторые видеоданные (и какие-либо другие энтропийно декодированные видеоданные) могут быть декодированы для генерации видеокадров. Эти видеокадры могут быть пригодны для представления пользователю, например, на экране дисплейного устройства. Например, видеокадры могут быть определены на основе использования способов декодирования, обсуждавшихся применительно к декодирующему устройству 200.
Процесс 1100 может продолжиться от операции 1111 к операции 1112 «Передача видеокадров для представления на дисплейном устройстве», где сформированные видеокадры могут быть переданы для представления на экране дисплейного устройства. Например, видеокадры могут быть переданы дисплейному устройству 1605 (как показано на фиг. 16) для представления. В некоторых вариантах, дисплейное устройство 1605 может представлять видеокадры на экране пользователю, например.
Хотя осуществление примеров описываемых здесь процессов может содержать выполнение все показанных операций в иллюстрируемом здесь порядке, настоящее изобретение в этом отношении не ограничено, так что в различных случаях осуществление примеров процессов, описываемых здесь, может содержать выполнение только подмножества показанных здесь операций и/или выполнение операций в порядке, отличном от иллюстрируемого здесь порядка.
Кроме того, одна или несколько из описываемых здесь операций могут быть выполнены в соответствии с командами, поступающими от одного или нескольких компьютерных программных продуктов. Такие программные продукты могут представлять собой носители сигнала, передающие команды, при выполнении которых, например, процессор может осуществлять описываемые здесь функции. Эти компьютерные программные продукты могут быть предоставлены в форме одного или нескольких машиночитаемых носителей. Таким образом, например, процессор, содержащий одно или несколько процессорных ядер, может выполнять одну или несколько операций из состава описываемых здесь примеров процессов в соответствии с программным кодом и/или командами или наборами команд, передаваемых процессору посредством одного или нескольких машиночитаемых носителей. В общем случае, машиночитаемый носитель может передавать программное обеспечение в форме программного кода и/или команд и/или наборов команд, в соответствии с которыми какие-либо устройства и/или системы, описываемые здесь, могут реализовать по меньшей мере части обсуждаемых здесь видео систем.
Как используется в любых описываемых здесь вариантах реализации, термин «модуль» ("module") относится к какому-либо сочетанию логики, реализуемой загружаемым программным обеспечением, логики, реализуемой встроенным программным обеспечением, и/или аппаратных логических устройств, конфигурируемых для выполнения описываемых здесь функций. Загружаемое программное обеспечение может быть воплощено в форме пакета программ, кода и/или набора команд или отдельных команд, а термин «аппаратура» ("hardware"), используемый в любом описываемом здесь варианте реализации, может обозначать, например, по отдельности или в каких-либо сочетаниях, аппаратные схемы с фиксированным монтажом, программируемые схемы, схемы конечных автоматов и/или программно-аппаратные средства, сохраняющие команды, выполняемые программируемыми схемами и устройствами. Модули могут быть, коллективно или индивидуально, реализованы в виде схем и устройств, образующих часть большей системы, например, интегральная схема (IC), система на кристалле (SoC) и т.д. Например, модуль может быть воплощен в логическом устройстве для реализации посредством загружаемого программного обеспечения, встроенного программного обеспечения или аппаратуры систем кодирования, обсуждаемых здесь.
На фиг. 12 представлена логическая схема, иллюстрирующая пример процесса 1200, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Процесс 1200 может содержать одну или несколько операций, функций или действий, иллюстрируемых одной или несколькими операциями. Процесс 1200 может составлять по меньшей мере часть процесса видео кодирования следующего поколения. В качестве неограничивающего примера процесс 1200 может составлять по меньшей мере часть процесса видео кодирования следующего поколения, осуществляемого системой 100 кодирования, показанной на фиг. 1, и/или какой-либо другой системой или подсистемой кодирования, описываемой здесь.
Процесс 1200 может начинаться с операции 1202 «Прием входных видеокадров в составе видео последовательности», где входные видеокадры в составе видео последовательности могут быть приняты кодирующим устройством 100, например.
Процесс 1200 может продолжиться операцией 1204 «Ассоциирование типа кадра с каждым видеокадром», где тип кадра может быть ассоциирован с каждым видеокадром в группе кадров, посредством модуля 102 предварительного анализа контента, например. Например, таким типом кадра может быть F/B-кадр, Р-кадр или I-кадр, ли другой подобный кадр. В некоторых примерах видео последовательность может содержать группу кадров, так что описываемая здесь процедура обработки данных (например, операции с 1203 по 1211) может быть выполнена применительно к какому-либо кадру из какой-либо группы кадров и повторена для всех кадров в группе и для всех групп кадров в видео последовательности.
Процесс 1200 может продолжиться операцией 1206 «Разбиение кадра на плитки и/или супер-фрагменты и в соответствии с потенциальными типами разбиения на единицы прогнозирования», где кадр может быть разделен на плетки или суперфрагменты и в соответствии с потенциальными типами разбиения на единицы прогнозирования посредством генератора 105 единиц прогнозирования, например.
Процесс 1200 может продолжиться операцией 1210 «Определение потенциальных погрешностей прогнозирования для потенциальных типов разбиения на единицы прогнозирования», где для каждого потенциального типа разбиения на единицы прогнозирования может быть определена потенциальная погрешность прогнозирования. Например, погрешность прогнозирования может быть определена для каждого типа разбиения на единицы прогнозирования (и ассоциированных единиц прогнозирования, прогнозов и параметров прогнозирования). Например, определение потенциальной погрешности прогнозирования может содержать вычисление разности между исходными пикселями (например, данными исходных пикселей в составе единицы прогнозирования) и прогнозируемыми пикселями. В некоторых примерах могут быть сохранены ассоциированные параметры прогнозирования. Как обсуждается, в некоторых примерах данные погрешности единицы прогнозирования могут содержать данные погрешности прогнозирования, генерируемые по меньшей мере частично на основе ранее декодированного кадра, сформированного с использованием по меньшей мере одного способа - способа морфинга или способа синтеза.
Процесс 1200 может продолжиться операцией 1212 «Выбор типа разбиения на единицы прогнозирования и типа прогнозирования и сохранение параметров», где могут быть выбраны тип разбиения на единицы прогнозирования и тип прогнозирования и могут быть сохранены ассоциированные с этим параметры. В некоторых примерах потенциальное разбиение на единицы прогнозирования может быть выбрано на основе оптимизации искажений скорости (RDO).
Процесс 1200 может продолжиться операцией 1214 «Преобразование потенциальных единиц кодирования», где фиксированное или контентно-адаптивное преобразование с различными размерами блоков может быть выполнено для различных вариантов потенциального разбиения на единицы кодирования для данных погрешностей единиц прогнозирования. Например, данные погрешностей единиц прогнозирования могут быть разделены для получения нескольких единиц кодирования. Например, данные погрешностей единиц прогнозирования могут быть разделены посредством модуля разбиения на единицы кодирования на основе двумерного дерева или модуля разбиения на единицы кодирования на основе k-мерного дерева в составе модуля 107 генератора единиц кодирования, как обсуждается здесь. В некоторых примерах данные погрешностей единиц прогнозирования, ассоциированных с F/B- или Р-кадром, могут быть разделены посредством модуля разбиения на единицы кодирования на основе двумерного дерева. В некоторых примерах видеоданные, ассоциированные с I-кадром (например, плитки или супер-фрагменты, в некоторых вариантах) могут быть разделены посредством модуля разбиения на единицы кодирования на основе k-мерного дерева. В некоторых примерах модуль разбиения на единицы кодирования может быть выбран посредством переключателя или нескольких переключателей. Например, единицы разбиения могут быть сформированы модулем 107 генератора единиц кодирования.
Процесс 1200 может продолжиться операцией 1216 «Определение наилучшего типа разбиения на единицы кодирования, размеров блоков преобразования и реального преобразования», где могут быть определены наилучший тип разбиения на единицы кодирования, размеры блоков преобразования и реальные преобразования. Например, различные варианты разбиения на единицы кодирования (например, имеющие различные единицы кодирования) могут быть оценены на основе оптимизации RDO или на другой основе, чтобы определить выбранный тип разбиения на единицы кодирование (которое может также содержать дальнейшее разбиение единиц кодирования на блоки преобразования, когда единицы кодирования не совпадают с размером блоков преобразования, как обсуждается). Например, реальное преобразование (или выбранное преобразование) может содержать контентно-адаптивное преобразование или фиксированное преобразование, выполняемое применительно к единицам кодирования или размерам блоков, как описано здесь.
Процесс 1200 может продолжиться операцией 1218 «Квантование и сканирование коэффициентов преобразования», где коэффициенты преобразования, ассоциированные с единицами кодирования (и/или блоками преобразования), могут быть квантованы и сканированы при подготовке к энтропийному кодированию.
Процесс 1200 может продолжиться операцией 1222 «Энтропийное кодирование данных, ассоциированных с декодированием каждой плитки или супер-фрагмента, таких как квантователи (Qp) и квантованные коэффициенты преобразования, данные векторов движения и опорных типов, характеристические параметры (например, mop, syp)», где данные могут быть энтропийно кодированы. Например, энтропийно кодированные данные могут содержать индикаторы единиц кодирования, данные о размерах блоков, данные о типах преобразования, квантователь (Qp), квантованные коэффициенты преобразования, данные векторов движения и опорных типов, характеристические параметры (например, mop, syp), другие подобные параметры и/или их сочетания. В дополнение или в качестве альтернативы энтропийно кодированные данные могут содержать разбиение на единицы прогнозирования, параметры прогнозирования, выбранное разбиение на единицы кодирования, данные выбранных характеристик, данные векторов движения, квантованные коэффициенты преобразования, параметры фильтрации, данные выбора (такие как данные выбора режима) и индикаторы.
Процесс 1200 может продолжиться операцией 1223 «Применение DD/DB-фильтра, реконструкция данных пикселей, сборка кадра», где может быть применена деблокирующая фильтрация (например, DD или DB-фильтры), могут быть реконструированы данные пикселей и собраны в кадр. Например, после локального декодирующего контура (например, содержащего обратное сканирование, обратное преобразование и сборку единиц кодирования) могут быть сформированы данные погрешностей единиц прогнозирования. Эти данные погрешностей единиц прогнозирования могут быть суммированы с единицами прогнозирования для генерации реконструированных единиц прогнозирования, которые могут быть собраны в плитки или супер-фрагменты. Собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством деблокирующей фильтрации и/или фильтрации для восстановления качества и затем собраны для формирования кадра.
Процесс 1200 может продолжиться операцией 1224 «Применение QR/LF-фильтров, сохранение в буферах опорных кадров», где может быть применена фильтрация для восстановления качества (например, QR или LF-фильтрация), а собранный кадр может быть сохранен в буфере опорных кадров. Например, в дополнение или в качестве альтернативы для DD/DB-фильтрации собранные плитки или супер-фрагменты могут быть в качестве опции подвергнуты фильтрации для восстановления качества и собраны для генерации кадра. Кадр может быть сохранен в буфере 119 декодированных кадров в качестве опорного кадра для прогнозирования других (например, следующих) кадров.
Процесс 1200 может продолжиться операцией 1225 «Применение АР/АМ-фильтрации, определение параметров модификации (например, морфинга или синтеза) характеристик для генерации преобразованных или синтезированных опорных элементов для прогнозирования и выполнение прогнозирования», где может быть выполнена модификация (например, морфинг или синтез) характеристических параметров и прогнозирование, а также может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация (например, АР/АМ-фильтрация). Например, может быть произведена модификация (например, морфинг или синтез) характеристических параметров для генерации преобразованных или синтезированных опорных элементов прогнозирования и может быть осуществлено прогнозирование. В этот момент процесса может быть дополнительно применена адаптивная фильтрация движения или адаптивная прецизионна фильтрация.
Как обсуждается, в некоторых примерах может быть выполнено межкадровое прогнозирование. В некоторых примерах до 4 декодированных прошлых и/или будущих кадров и несколько прогнозов морфинга/синтеза могут быть использованы для генерации большого числа опорных типов (например, опорных кадров). Например, в режиме «inter» до девяти опорных типов могут поддерживаться для Р-кадров, и до десяти опорных типов могут поддерживаться для F/B-кадров. Далее, режим «multi» может представлять собой тип режима межкадрового прогнозирования, в котором вместо 1 опорного кадра могут быть использованы 2 опорных кадра, а Р- и F/B-кадры, соответственно, могут допускать 3 и до 8 опорных типов. Например, прогнозирование может быть основано на ранее декодированном кадре, сформированном с использованием по меньшей мере одного из способов - морфинга и/или синтеза. В таких примерах и поток битов данных (обсуждается ниже применительно к операции 1212) может содержать опорный кадр, параметры морфинга или параметры синтеза, ассоциированные с единицей прогнозирования.
Процесс 1200 может продолжиться операцией 1229 «Применение в качестве опции ЕР-фильтрации и/или применение в качестве опции FI/FP-фильтрации», где в качестве опции может быть применена фильтрация расширенных единиц прогнозирования (например, ЕР-фильтрация) или FI/FP-фильтрация (например, фильтрация слияния или фильтрация для усовершенствования слияния). В некоторых примерах, может быть принято решение, следует ли использовать некоторую форму FI/FP-филырации (фильтрации для усовершенствования слияния/фильтрации слияния) или не использовать эту FI/FP-фильтрацию. Когда некоторую форму FI/FP-фильтрации (например, фильтрацию слияния или фильтрацию для усовершенствования слияния) нужно применить к выбранной единице прогнозирования, эти выбранная единица прогнозирования и вторая выбранная единица прогнозирования могут быть собраны для генерации по меньшей мере части собранного кадра. Здесь можно применить FI/FP-фильтрацию к части собранного кадра. Параметры FI/FP-фильтрации (например, параметры фильтрации слияния или параметры фильтрации для усовершенствования слияния), ассоциированные с FI/FP-фильтрацией, могут быть сформированы и переданы в подсистему энтропийного кодирования.
В вариантах реализации, где доступны и ЕР-фильтрация, и FI/FP-фильтрация, может быть сформирован индикатор, чтобы указать системе декодирования, следует ли использовать данные расширенной единицы прогнозирования (например, после ЕР-фильтрации) или данные единицы прогнозирования в качестве выбранной единицы прогнозирования.
Операции с 1202 по 1229 могут осуществлять способы видео кодирования и передачи потоков битов данных, которые могут быть использованы системой кодирования, как обсуждается здесь.
Фиг. 13 иллюстрирует пример потока 1300 битов данных, построенного в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. В некоторых примерах, поток 1300 битов данных может соответствовать выходному потоку 111 битов данных, как показано на фиг. 1 и/или входному потоку 201 битов данных, как показано на фиг. 2. Хотя на фиг. 29 это не показано для большой ясности, в некоторых примерах поток 1300 битов данных может содержать заголовок и данные. В различных примерах, поток 1300 битов данных может содержать данные, индикаторы, величины индексов, данные выбора режима или другие подобные данные, ассоциированные с кодированием видеокадра, как обсуждается здесь.
Как обсуждается, поток 1300 битов данных может быть сформирован кодирующим устройством, таким как кодирующее устройство 100, и/или принят декодирующим устройством 200 для декодирования, так что декодированные видеокадры могут быть представлены на экране дисплейного устройства.
Фиг. 14 представляет логическую схему, иллюстрирующую пример процесса 1400, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Процесс 1400 может содержать одну или несколько операций, функций или действий, иллюстрируемых этими одной или несколькими операциями. Процесс 1400 может составлять по меньшей мере часть процесса декодирования видео следующего поколения. Посредством неограничивающего примера процесс 1400 может составлять по меньшей мере часть процесса декодирования для видео следующего поколения, осуществляемого системой декодирования 200 и/или другой системой или подсистемой декодирования, описываемой здесь.
Процесс 1400 может начинаться с операции 1402 «Прием кодированного потока битов данных», на которой может быть принят поток битов данных. Например, видео декодирующее устройство может принимать поток битов данных, кодированный так, как обсуждается здесь. В некоторых примерах, декодирующим устройством 200 может быть принят поток 900 или 1300 битов данных.
Процесс 1400 может продолжиться операцией 1404 «Декодирование энтропийно кодированного потока битов данных для определения индикаторов единиц кодирования, данных о размерах блоков, данных о типах преобразования, квантователе (Qp), квантованных коэффициентах преобразования, данных о векторах движения и опорных типах, характеристических параметрах (например, mop, syp)», где поток битов данных может быть декодирован для определения индикаторов единиц кодирования, данных о размерах блоков, данных о типах преобразования, квантователе (Qp), квантованных коэффициентах преобразования, данных о векторах движения и опорных типах, характеристических параметрах (например, mop, syp) и других подобных данных и/или их сочетаний. Дополнительно или в качестве альтернативы энтропийно кодированные данные могут содержать единицы прогнозирования, параметры прогнозирования, выбранный тип разбиения на единицы кодирования, данные выбранных характеристик, данные векторов движения, квантованные коэффициенты преобразования, параметры фильтрации, данные о выборе (такие как данные о выборе режима) и индикаторы.
Процесс 1400 может продолжиться операцией 1406 «Применение квантователя (Qp) к квантованным коэффициентам для генерации обратно квантованных коэффициентов преобразования», где квантователь (Qp) может быть применен к квантованным коэффициентам преобразования для генерации обратно квантованных коэффициентов преобразования. Например, операция 1406 может быть выполнена посредством модуля 203 адаптивного обратного квантования.
Процесс 1400 может продолжиться операцией 1408 «Для каждого декодированного блока коэффициентов в единице кодирования (или внутрикадрового прогнозирования) осуществление обратного преобразования на основе данных о типе преобразования и о размере блока для генерации декодированной единицы погрешности прогнозирования», где для каждого декодированного блока коэффициентов преобразования в единице кодирования (или внутрикадрового прогнозирования) может быть выполнено обратное преобразование на основе данных о типе преобразования и о размере блока для генерации декодированных погрешностей единиц преобразования. В некоторых примерах, обратное преобразование может представлять собой фиксированное обратное преобразование. В некоторых примерах, может представлять собой контентно-адаптивное обратное преобразование. В таких примерах осуществление обратного контентно-адаптивного преобразования может содержать определение базисных функций, ассоциированных с обратным контентно-адаптивным преобразованием, на основе соседнего блока декодированных видеоданных, как обсуждается здесь. Любое прямое преобразование, используемое для кодирования, как обсуждается здесь, может быть применено для декодирования с использованием ассоциированного обратного преобразования. В некоторых примерах обратное преобразование может быть осуществлено посредством модуля 204 адаптивного обратного преобразования. В некоторых примерах генерация декодированных погрешностей единиц преобразования может содержать сборку единиц кодирования посредством модуля 205 сборки единиц кодирования.
Процесс 1400 может продолжиться операцией 1423 «Применение DD/DB-фильтра, реконструкция данных пикселей, сборка в кадр», где может быть применена деблокирующая фильтрация (например, DD или DB-фильтры), могут быть реконструированы данные пикселей и собраны в кадр. Например, после обратного сканирования, обратного преобразования и сборки единиц кодирования данные погрешностей единиц прогнозирования могут быть суммированы с единицами прогнозирования для генерации реконструированных единиц прогнозирования, которые могут быть собраны в плитки или супер-фрагменты. Собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством деблокирующей фильтрации.
Процесс 1400 может продолжиться операцией 1424 «Применение QR/LF-фильтрации и сохранение в буфере опорных кадров», где может быть применена фильтрация для восстановления качества (например, QR или LF-фильтрация), а собранные кадры могут быть сохранены в буфере опорных кадров. Например, в дополнение или в качестве альтернативы для DD/DB-фильтрации собранные плитки или супер-фрагменты могут быть в качестве опции обработаны фильтром для восстановления качества и собраны для генерации кадра. Кадр может быть сохранен в буфере 119 декодированных кадров в качестве опорного кадра для прогнозирования других (например, следующих) кадров.
Процесс 1400 может продолжиться операцией 1425 «Применение АР/АМ-фильтра, использование декодированных модифицирующих характеристик (например, mop, syp) для генерации модифицированных опорных элементов для прогнозирования и использование векторов движения и информации об опорных элементах, информация о единицах прогнозирования и модифицированных опорных элементов для генерации единиц прогнозирования», где могут быть сформированы модифицированные опорные элементы для прогнозирования, равно как и единицы прогнозирования, и где может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация (например, АР/АМ-фильтрация). Например, модифицированные опорные элементы для прогнозирования могут быть сформированы по меньшей мере частично на основе декодированных модифицирующих характеристик (например, mop, syp) и единицы прогнозирования могут быть сформированы по меньшей мере частично на основе векторов движения и информации об опорных элементах, информации о единицах прогнозирования и модифицированных опорных элементов. Кроме того, в этот момент в процессе может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация.
Процесс 1400 может продолжиться операцией 1429 «Применение в качестве опции ЕР-фильтрации и/или применение в качестве опции FI-FP-фильтрации», где может быть в качестве опции применена фильтрация расширенных единиц прогнозирования (например, ЕР-фильтрация) или FI/FP-фильтрация (например, фильтрация слияния или фильтрация для усовершенствования слияния). В некоторых примерах может быть принято решение, использовать ли в какой-то форме FI/FP-фильтрацию (фильтрация для усовершенствования слияния/фильтрация слияния) или не использовать такую FI/FP-фильтрацию. Когда нужно применить некоторую форму FI/FP-фильтрации (например, фильтрацию слияния или фильтрацию для усовершенствования слияния) к выбранной единице прогнозирования, эту выбранную единицу прогнозирования можно собрать с какой-либо второй выбранной единицей прогнозирования для генерации по меньшей мере части собранного кадра. Для фильтрации этой части собранного кадра может быть затем применена FI/FP-фильтрация. Параметры FI/FP-фильтрации (например, параметры фильтрации слияния или параметры фильтрации для усовершенствования слияния) могут быть сформированы и переданы в подсистему энтропийного кодера.
В вариантах реализации, где доступны и ЕР-фильтрация, и FI/FP-фильтрация, от системы кодирования может быть принят индикатор, указывающий системе декодирования, следует ли использовать данные расширенной единицы прогнозирования (например, после ЕР-фильтрации) или данные единицы прогнозирования в качестве выбранной единицы прогнозирования.
Процесс 1400 может продолжиться операцией 1430 «Суммирование единицы прогнозирования с декодированными данными погрешности единицы прогнозирования для генерации реконструированной единицы прогнозирования», где единица прогнозирования может быть суммирована с декодированными данными погрешности единицы прогнозирования для получения реконструированной единицы прогнозирования. Например, декодированные данные погрешности единицы прогнозирования могут быть суммированы с соответствующей единицей прогнозирования посредством сумматора 206.
Процесс 1400 может продолжиться операцией 1432 «Сборка реконструированных единиц прогнозирования для генерации плитки или супер-фрагмента», где реконструированные единицы прогнозирования могут быть собраны для генерации плиток или супер-фрагментов. Например, реконструированные единицы прогнозирования могут быть собраны для генерации плиток или супер-фрагментов посредством модуля 207 сборки единиц прогнозирования.
Процесс 1400 может продолжиться операцией 1434 «Сборка плиток или супер-фрагментов кадра для генерации полностью декодированного кадра», где плитки или супер-фрагменты кадра могут быть собраны воедино для генерации полностью декодированного кадра. Например, после выполняемой в качестве опции деблокирующей фильтрации и/или фильтрации для восстановления качества плитки или супер-фрагменты могут быть собраны воедино для генерации полного декодированного кадра, который может быть сохранен в буфере 210 декодированных кадров и/или передан для представления на экране дисплейного устройства после обработки в модуле 217 адаптивной реорганизации кадров и в модуле 218 пост-восстановления контента.
Фиг. 15(A), 15(B) и 15(C) представляют схему, иллюстрирующую пример системы 1600 видео кодирования и процесса 1500 видео кодирования в действии, построенных в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. В представленном варианте процесс 1500 может содержать одну или несколько операций, функций или действий, иллюстрируемых одним или несколькими действиями с 1501 по 1580. В качестве неограничивающего примера процесс 1500 будет здесь описан со ссылками на пример системы 1600 видео кодирования, содержащей кодирующее устройство 100, показанное на фиг. 1, и декодирующее устройство 200, показанное на фиг. 2, как обсуждается здесь ниже со ссылками на фиг. 16. В различных примерах процесс 1500 может быть осуществлен системой, содержащей и кодирующее устройство, и декодирующее устройство, либо раздельными системами, где одна система использует кодирующее устройство (и декодирующее устройство в качестве опции), а другая система использует декодирующее устройство (и кодирующее устройство в качестве опции). Следует также отметить, что, как обсуждается выше, кодирующее устройство может содержать локальный декодирующий контур, использующий локальное декодирующее устройство, как часть системы кодирования.
В иллюстрируемом варианте реализации система 1600 видео кодирования может содержать логическое устройство 1650, другое подобное устройство и/или сочетание устройств. Например, логическое устройство 1650 может содержать систему 100 кодирования, показанную на фиг. 1, и/или систему 200 декодирования, показанную на фиг. 2, и может иметь в составе любые модули, обсуждавшиеся применительно к какой-либо из систем или подсистем кодирования, описываемых здесь, и/или систем или подсистем декодирования, описываемых здесь. Хотя система 1600 видео кодирования, как показано на фиг. 15(А)-(С), может содержать один конкретный набор блоков или действий, ассоциированных с конкретными модулями, эти блоки или действия могут быть ассоциированы с другими модулями, отличными от показанных конкретных модулей. Хотя процесс 1500, как он здесь показан, направлен на кодирование и декодирование, принципы и/или операции, описываемые здесь, могут быть применены к кодированию и/или декодированию по отдельности, и, в более общем смысле, к видео кодирующей обработке.
Процесс 1500 может начинаться операцией 1501 «Прием видеокадров из состава видео последовательности», где поступающие на вход видеокадры из состава видео последовательности могут быть приняты кодирующим устройством 100, например.
Процесс 1500 может продолжиться операцией 1502 «Ассоциирование типа кадра с каждым видеокадром в группе кадров», где с каждым видеокадром в группе кадров может быть посредством модуля 102 предварительного анализа контента, например, ассоциирован тип кадра. Например, такой тип кадра может представлять собой F/B-кадр, Р-кадр или I-кадр, либо другой подобный кадр. В некоторых примерах видео последовательность может содержать группы кадров, а описываемая здесь обработка данных (например, операции с 1503 по 1511) может быть выполнена применительно к одному кадру из группы кадров, затем эта обработка может быть повторена для всех кадров в группе и далее обработка может быть повторена для всех групп кадров в видео последовательности.
Процесс 1500 может продолжиться операцией 1503 «Разбиение кадра на плитки и/или супер-фрагменты и потенциальные типы разбиения на единицы прогнозирования», где кадр может быть разбит на плитки или супер-фрагменты и потенциальные единицы прогнозирования посредством генератора 105 единиц прогнозирования, например.
Процесс 1500 может продолжиться операцией 1504 «Для каждого потенциального типа разбиения на единицы прогнозирования выполнение прогнозирования и определение параметров прогнозирования», где может быть выполнено прогнозирование для каждого потенциального типа разбиения на единицы прогнозирования и определены параметры прогнозирования. Например, может быть сформирован целый спектр потенциальных типов разбиений на единицы прогнозирования (каждый из которых имеет различные единицы прогнозирования) и могут быть определены соответствующие единицы прогнозирования и параметры прогнозирования. Например, такие единицы прогнозирования могут использовать характеристики и построенные на основе движения с использованием нескольких опорных элементов прогнозы или внутрикадровые прогнозы.
Как обсуждается, в некоторых примерах может быть выполнено межкадровое прогнозирование. В некоторых примерах до 4 декодированных в прошлом и/или в будущем кадров и/или несколько прогнозов морфинга/синтеза могут быть использованы для генерации большого числа опорных типов (например, опорных кадров). Например, в режиме «inter» до 9 опорных типов могут поддерживаться в Р-кадрах и до 10 опорных типов могут поддерживаться для F/B-кадров. Далее, режим «multi» может представлять собой такой тип режима межкадрового прогнозирования, в котором вместо 1 опорного кадра могут использоваться 2 опорных кадра, а Р- и F/B-кадры, соответственно, могут допускать 3 и до 8 опорных типов. Например, прогноз может быть основан на ранее декодированном кадре, сформированном с использованием по меньшей мере одного из способов - способа морфинга и/или способа синтеза. В таких примерах и поток битов данных (обсуждаемый ниже применительно к операции 1512) может содержать опорный кадр, параметры морфинга или параметры синтеза, ассоциированные с единицей прогнозирования.
Процесс 1500 может продолжиться операцией 1505 «Для каждого потенциального типа разбиения на единицы прогнозирования определение потенциальной погрешности прогнозирования», где для каждого потенциального типа разбиения на единицы прогнозирования может быть определена потенциальная погрешность прогнозирования. Например, погрешность прогнозирования может быть определена для каждого типа разбиения на единицы прогнозирования (и ассоциированных с ним единиц прогнозирования, прогнозов и параметров прогнозирования). Например, определение потенциальной погрешности прогнозирования может содержать вычисление разности между исходными пикселями (например, данными исходных пикселей в составе единицы прогнозирования) и прогнозируемыми пикселями. В некоторых примерах могут быть сохранены ассоциированные параметры прогнозирования. Как обсуждается, в некоторых примерах данные погрешности прогнозирования для единицы прогнозирования могут содержать данные погрешности прогнозирования, вычисленные на основе ранее декодированного кадра, сформированного с использованием по меньшей мере одного из способов - способа морфинга или способа синтеза.
Процесс 1500 может продолжиться операцией 1506 «Выбор типа разбиения на единицы прогнозирования и типа прогнозирования и сохранение параметров», где могут быть выбраны тип разбиения на единицы прогнозирования и тип прогнозирования и могут быть сохранены соответствующие параметры. В некоторых примерах может быть выбран потенциальный тип разбиения на единицы прогнозирования, которому соответствует минимальная погрешность прогнозирования. В некоторых примерах потенциальный тип разбиения на единицы прогнозирования может быть выбран на основе оптимизации искажений скорости (RDO).
Процесс 1500 может продолжиться операцией 1507 «Осуществление фиксированного или контентно-адаптивного преобразования при различных размерах блоков для разных потенциальных типов разбиения на единицы кодирования применительно к данным погрешности единиц прогнозирования», где может быть выполнено фиксированное или контентно-адаптивное преобразование при различных размерах блоков для разных потенциальных типов разбиения на единицы кодирования применительно к данным погрешности единиц прогнозирования. Например, данные погрешности единиц прогнозирования могут быть разбиты для генерации нескольких единиц кодирования. Например, данные погрешности единиц прогнозирования могут быть разделены посредством модуля разбиения на единицы кодирования на основе двоичного дерева или модуля разбиения на единицы кодирования на основе k-мерного дерева из состава модуля 107, как обсуждается здесь. В некоторых примерах, данные погрешности единиц прогнозирования, ассоциированные с F/B- или Р-кадром, могут быть разделены посредством модуля разбиения на единицы кодирования на основе двоичного дерева. В некоторых примерах видеоданные, ассоциированные с I-picture (например, плитки или супер-фрагменты в некоторых примерах) могут быть разделены посредством модуля разбиения на единицы кодирования на основе k-мерного дерева. В некоторых примерах модуль разбиения на единицы кодирования может быть выбран посредством одного или нескольких переключателей. Например, единицы разбиения могут быть сформированы модулем 107 генератора единиц кодирования.
Процесс 1500 может продолжиться операцией 1508 «Определение наилучших типа разбиения на единицы кодирования, размеров блоков преобразования и реального преобразования», где могут быть выбраны наилучшие тип разбиения на единицы кодирования, размеры блоков преобразования и реальные преобразования. Например, различные типы разбиения на единицы кодирования (например, имеющие разные единицы кодирования) могут быть оценены на основе оптимизации RDO или на другой основе для определения выбранного типа разбиения на единицы кодирования (который может также содержать дальнейшее разделение единиц кодирования на блоки (единицы) преобразования, когда единицы кодирования не совпадают с размером блоков преобразования, как обсуждается). Например, реальное преобразование (или выбранное преобразование) может представлять собой какое-либо контентно-адаптивное преобразование или фиксированное преобразование, выполняемое в соответствии с размерами единиц кодирования или блоков, как описывается здесь.
Процесс 1500 может продолжиться операцией 1509 «Квантование и сканирование коэффициентов преобразования», где коэффициенты преобразования, ассоциированные с единицами кодирования (и/или блоками (единицами) преобразования), могут быть квантованы и сканированы для подготовки к энтропийному кодированию.
Процесс 1500 может продолжиться операцией 1511 «Энтропийное кодирование данных, ассоциированных с каждой плиткой или супер-фрагментом», где данные, ассоциированные с каждой плиткой или супер-фрагментом, могут быть подвергнуты энтропийному кодированию. Например, данные, ассоциированные с каждой плиткой или супер-фрагментом, в составе каждого кадра из каждой группы кадров в каждой видео последовательности, могут содержать тип разбиения на единицы прогнозирования, параметры прогнозирования, выбранный разбиения на единицы кодирования, выбранные характеристические данные, данные векторов движения, квантованные коэффициенты преобразования, параметры фильтрации, данные выбора (такие как данные выбора режима) и индикаторы.
Процесс 1500 может продолжиться операцией 1512 «Генерация потока битов данных», на которой может быть сформирован поток битов данных на основе энтропийно кодированных данных. Как обсуждается, в некоторых примерах поток битов данных может содержать опорный кадр, параметры морфинга или параметры синтеза, ассоциированные с единицей прогнозирования.
Процесс 1500 может продолжиться операцией 1513 «Передача потока битов данных», на которой сформированный поток битов данных может быть передан. Например, система 2400 видео кодирования может передавать выходной поток 111 битов данных, поток 2100 битов данных или другой подобный поток через антенну 2402 (пожалуйста, см. фиг. 34).
Процесс 1500 может продолжиться операцией 1520 «Реконструкция данных пикселей, сборка в кадр и сохранение в буфере опорных кадров», где данные пикселей могут быть реконструированы, собраны в кадр и сохранены в буфере опорных кадров. Например, после локального декодирующего контура (например, содержащего обратное сканирование, обратное преобразование и сборку единиц прогнозирования), могут быть сформированы данные погрешностей единиц прогнозирования. Эти данные погрешностей единиц прогнозирования могут быть суммированы с единицами прогнозирования для генерации реконструированных единиц прогнозирования, которые могут быть собраны в плитки или супер-фрагменты. Собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством деблокирующей фильтрации и/или фильтрации для восстановления качества и собраны воедино для генерации кадра. Этот кадр может быть сохранен в буфере 119 декодированных кадров в качестве опорного кадра для прогнозирования других (например, следующих) кадров.
Процесс 1500 может продолжиться операцией 1523, «Применение DD/DB-фильтрации, реконструкция данных пикселей, сборка в кадр», где может быть применена деблокирующая фильтрация (например, DD или DB-фильтры) и данные пикселей могут быть реконструированы и собраны в кадр. Например, после локального декодирующего контура (например, содержащего обратное сканирование, обратное преобразование и сборку единиц прогнозирования), могут быть сформированы данные погрешностей единиц прогнозирования. Эти данные погрешностей единиц прогнозирования могут быть суммированы с единицами прогнозирования для генерации реконструированных единиц прогнозирования, которые могут быть собраны в плитки или супер-фрагменты. Собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством деблокирующей фильтрации и/или фильтрации для восстановления качества и собраны для генерации кадра.
Процесс 1500 может продолжиться операцией 1524 «Применение QR/LF-фильтрации и сохранение в буфере опорных кадров», где может быть применена фильтрация для восстановления качества (например, QR или LF-фильтрация), а собранный кадр может быть сохранен в буфере опорных кадров. Например, в дополнение или в качестве альтернативы для DD/DB-фильтрации собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством фильтрации для восстановления качества и собраны для генерации кадра. Этот кадр может быть сохранен в буфере 119 декодированных кадров в качестве опорного кадра для прогнозирования других (например, следующих) кадров.
Процесс 1500 может продолжиться операцией 1525 «Генерация модифицирующих характеристических параметров», на которой могут быть сформированы модифицирующие характеристические параметры. Например, второй модифицированный опорный кадр для прогнозирования и вторые модифицирующие характеристические параметры, ассоциированные с этим вторым модифицированным опорным кадром для прогнозирования, могут быть сформированы по меньшей мере частично на основе второго декодированного опорного кадра для прогнозирования, причем второй модифицированный опорный кадр может по типу отличаться от первого модифицированного опорного кадра.
Процесс 1500 может продолжиться операцией 1526 «Генерация модифицированных опорных кадров для прогнозирования», где могут быть сформированы модифицированные опорные кадры для прогнозирования, например, первый модифицированный опорный кадр для прогнозирования и первые модифицирующие характеристические параметры, ассоциированные с этим первым модифицированным опорным кадром для прогнозирования могут быть сформированы по меньшей мере частично на основе первого декодированного опорного кадра для прогнозирования.
Процесс 1500 может продолжиться операцией 1527 «Генерация данных движения», на которой могут быть сформированы данные оценки движения. Например, данные движения, ассоциированные с какой-либо единицей прогнозирования в составе текущего кадра, могут быть сформированы по меньшей мере частично на основе первого модифицированного опорного кадра для прогнозирования или второго модифицированного опорного кадра для прогнозирования.
Процесс 1500 может продолжиться операцией 1528 «Применение АР/АМ-фильтрации и осуществление компенсации движения», на которой может быть произведена компенсация движения. Например, компенсация движения может быть выполнена по меньшей мере частично на основе данных движения и по меньшей мере одного из кадров - первого модифицированного опорного кадра для прогнозирования или второго модифицированного опорного кадра для прогнозирования, с целью генерации данных единицы прогнозирования для рассматриваемой единицы прогнозирования, а также может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация (например, АР/АМ-фильтрация). Процесс 1500 может передать эту информацию назад - на операцию 1504, где декодированные погрешности для каждой единицы прогнозирования (например, включая единицы прогнозирования с нулевой погрешностью), могут быть суммированы с соответствующей единицей прогнозирования для генерации реконструированной единицы прогнозирования. Кроме того, в этом пункте процесса может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация.
Процесс 1500 может продолжиться операцией 1529 «Применение ЕР-фильтрации в качестве опции», где может быть в качестве опции применена расширенная единица прогнозирования (например, ЕР-фильтрация). В некоторых примерах, где доступны и ЕР-фильтрация, и FI/FP-фильтрация, может быть сформирован индикатор, указывающий системе декодирования, следует ли использовать данные расширенной единицы прогнозирования (например, после ЕР-фильтрации) или данные единицы прогнозирования в качестве выбранной единицы прогнозирования.
Процесс 1500 может продолжиться операцией 1530 «Применение в качестве опции FI/FP-фильтрации», где может быть, в качестве опции, применена FI/FP-фильтрация (например, фильтрация слияния или фильтрация для усовершенствования слияния). В некоторых примерах может быть принято решение относительно того, применять ли какую-то форму FI/FP-фильтрации (фильтрация для усовершенствования слияния/фильтрация слияния), или не использовать такую FI/FP-фильтрацию. Когда к выбранной единице прогнозирования нужно применить какую-то форму FI/FP-фильтрации (например, фильтрацию слияния или фильтрацию для усовершенствования слияния), эта выбранная единица прогнозирования может быть собрана с какой-либо второй выбранной единицей прогнозирования для генерации по меньшей мере части собранного кадра. Тогда FI/FP-фильтрация может быть применена для фильтрации этой части собранного кадра. Параметры этой FI/FP-фильтрации (например, параметры фильтрации слияния или фильтрации для усовершенствования слияния) могут быть сформированы и переданы в подсистему энтропийного кодера.
Операции с 1501 по 1530 могут быть осуществлены в рамках способов видео кодирования и передачи потоков битов данных, которые могут быть использованы в системе кодирования, обсуждавшейся здесь. Следующие операции - с 1554 по 1568, могут быть осуществлены в рамках способов видео декодирования и представления видео на дисплее, которые могут быть использованы в системе декодирования, обсуждавшейся здесь.
Процесс 1500 может продолжиться операцией 1554 «Прием потока битов данных», на которой может быть принят поток битов данных. Например, входной поток 201 битов данных, поток 2100 битов данных или другой подобный поток может быть принят декодирующим устройством 200. В некоторых примерах поток битов данных может содержать данные, ассоциированные с единицей кодирования, один или несколько индикаторов и/или данные, определяющие единицы кодирования, как обсуждается выше. В некоторых примерах поток битов данных может содержать указание типа разбиения на единицы прогнозирования, параметры прогнозирования, указание выбранного типа разбиения на единицы кодирования, выбранные характеристические данные, данные векторов движения, квантованные коэффициенты преобразования, параметры фильтрации, данные выбора (такие как данные выбора режима) и индикаторы.
Процесс 1500 может продолжиться операцией 1555 «Декодирование потока битов данных», на которой принятый поток битов данных может быть декодирован посредством модуля 202 адаптивного энтропийного декодирования, например. Например, принятый поток битов данных может быть энтропийно декодирован для определения типа разбиения на единицы прогнозирования, параметров прогнозирования, выбранного типа разбиения на единицы кодирования, выбранных характеристических данных, данных векторов движения, квантованных коэффициентов преобразования, параметров фильтрации, данных выбора (таких как данные выбора режима) и индикаторов.
Процесс 1500 может продолжиться операцией 1556 «Осуществление обратного сканирования и обратного квантования применительно к каждому блоку в каждой единице кодирования», где обратное сканирование и обратное квантование могут быть выполнены применительно к каждому блоку в каждой единице кодирования для обрабатываемых единиц прогнозирования. Например, обратное сканирование и обратное квантование могут быть выполнены посредством модуля 203 адаптивного обратного квантования.
Процесс 1500 может продолжиться операцией 1557 «Осуществление фиксированного или контентно-адаптивного обратного преобразования применительно к декодированным коэффициентам преобразования для определения декодированных данных погрешностей единиц прогнозирования», где фиксированное или контентно-адаптивное обратное преобразование может быть выполнено для декодирования коэффициентов преобразования с целью определения декодированных данных погрешностей единиц прогнозирования. Например, обратное преобразование может представлять собой обратное контентно-адаптивное преобразование, такое как обратное гибридное параметрическое преобразование Хаара, где это обратное гибридное параметрическое преобразование Хаара может содержать обратное параметрическое преобразование Хаара в направлении параметрического преобразования и обратное дискретное косинусное преобразование в направлении, ортогональном направлению параметрического преобразования. В некоторых примерах фиксированное обратное преобразование может представлять собой обратное дискретное косинусное преобразование или некое преобразование, аппроксимирующее обратное дискретное косинусное преобразование. Например, фиксированное или контентно-адаптивное преобразование может быть выполнено посредством модуля 204 адаптивного обратного преобразования. Как обсуждается, обратное контентно-адаптивное преобразование может быть основано на других ранее декодированных данных, таких как, например, декодированные соседние единицы разбиения или блоки. В некоторых примерах, генерация декодированных данных погрешностей единиц прогнозирования может содержать сборку декодированных единиц кодирования посредством модуля 205 сборки единиц кодирования.
Процесс 1500 может продолжиться операцией 1558 «Генерация данных прогнозируемых пикселей для каждой единицы прогнозирования», на которой данные прогнозируемых пикселей могут быть сформированы для каждой единицы прогнозирования. Например, данные прогнозируемых пикселей могут быть сформированы с использованием выбранного типа прогнозирования (например, на основе характеристик и движения, или межкадрового прогнозирования или других типов) и ассоциированных параметров прогнозирования.
Процесс 1500 может продолжиться операцией 1559 «Суммирование декодированных погрешностей для каждой единицы прогнозирования с соответствующей единицей прогнозирования для генерации реконструированной единицы прогнозирования», где декодированные погрешности для каждой единицы прогнозирования (например, включая единицы прогнозирования с нулевой погрешностью) могут быть суммированы с соответствующей единицей прогнозирования для генерации реконструированной единицы прогнозирования. Например, единицы прогнозирования могут быть сформированы посредством контура декодирования, показанного на фиг. 2, и суммированы с использованием сумматора 206 с декодированными погрешностями единиц прогнозирования.
Процесс 1500 может продолжиться операцией 1560 «Сборка реконструированных единиц прогнозирования для генерации декодированных плиток или супер-фрагментов», где реконструированные единицы прогнозирования могут быть собраны воедино для генерации декодированных плиток или супер-фрагментов. Например, единицы прогнозирования могут быть собраны воедино для генерации декодированных плиток или супер-фрагментов посредством модуля 207 сборки единиц прогнозирования.
Процесс 1500 может продолжиться операцией 1561 «Применение деблокирующей фильтрации и/или QR-фильтрации для генерации конечных декодированных плиток или супер-фрагментов», где деблокирующая фильтрация и/или фильтрация для восстановления качества могут быть в качестве опций применены к декодированным плиткам или супер-фрагментам для генерации конечных декодированных плиток или супер-фрагментов. Например, деблокирующая фильтрация может быть применена в качестве опции посредством модуля 208 деблокирующей фильтрации и/или фильтрация для восстановления качества может быть применена в качестве опции посредством модуля 209 фильтрации для восстановления качества.
Процесс 1500 может продолжиться операцией 1562 «Сборка декодированных плиток или супер-фрагментов для генерации декодированного видеокадра и сохранение его в буферах опорных кадров», где декодированные (или конечные декодированные) плитки или супер-фрагменты могут быть собраны для генерации декодированного видеокадра, а этот декодированный видеокадр может быть сохранен в буферах опорных кадров (например, буфере 210 декодированных кадров) для использования в будущем прогнозировании.
Процесс 1500 может продолжиться операцией 1563 «Передача декодированных видеокадров для представления на экране дисплейного устройства», на которой декодированные видеокадры могут быть переданы для представления на экране дисплейного устройства. Например, декодированные видеокадры могут быть дополнительно обработаны посредством модуля 217 адаптивной реорганизации кадров и модуля 218 пост-восстановления контента и затем переданы дисплейному устройству в качестве видео 219 для представления пользователю. Например, видеокадры могут быть переданы дисплейному устройству 2405 (как показано на фиг. 34) для представления.
Процесс 1500 может продолжиться операцией 1573 «Применение DD/DB-фильтрации, реконструкция данных пикселей и сборка в кадр», где может быть применена деблокирующая фильтрация (например, DD или DB-фильтры), данные пикселей могут быть реконструированы и собраны в кадр. Например, после обратного сканирования, обратного преобразования и сборки единицы кодирования данные погрешностей единиц прогнозирования могут быть суммированы с единицами прогнозирования для генерации реконструированных единиц прогнозирования, которые могут быть собраны воедино в плитки или супер-фрагменты. Собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством деблокирующей фильтрации.
Процесс 1500 может продолжиться операцией 1574 «Применение QR/LF-фильтрации и сохранение в буферах опорных кадров», где может быть применена фильтрация для восстановления качества (например, QR или LF-фильтрация), а собранный кадр может быть сохранен в буферах опорных кадров. Например, в дополнение или в качестве альтернативы DD/DB-фильтрации собранные плитки или супер-фрагменты могут быть в качестве опции обработаны посредством фильтрации для восстановления качества и собраны воедино для генерации кадра. Этот кадр может быть сохранен в буфере кадров в качестве опорного кадра для прогнозирования других (например, следующих) кадров.
Процесс 1500 может продолжиться операцией 1576 «Генерация модифицированных опорных кадров для прогнозирования», где, например, по меньшей мере часть третьего модифицированного опорного кадра для прогнозирования может быть сформирована по меньшей мере частично на основе третьих модифицирующих характеристических параметров. Аналогично по меньшей мере часть четвертого модифицированного опорного кадра для прогнозирования может быть сформирована по меньшей мере частично на основе указанных вторых модифицирующих характеристических параметров.
Процесс 1500 может продолжиться операцией 1577 «Генерация данных движения», на которой могут быть сформированы данные оценки движения. Например, данные движения, ассоциированные с одной из единиц прогнозирования из состава текущего кадра могут быть сформированы по меньшей мере частично на основе одного из кадров -третьего модифицированного опорного кадра для прогнозирования или четвертого модифицированного опорного кадра для прогнозирования.
Процесс 1500 может продолжиться операцией 1578 «Применение АР/АМ-фильтрации и осуществление компенсации движения», на которой может быть осуществлена компенсация движения и может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация (например, АР/АМ-фильтрация). Например, компенсация движения может быть осуществлена на основе по меньшей мере частично данных движения и по меньшей мере на основе одного из кадров - третьего модифицированного опорного кадра для прогнозирования или четвертого модифицированного опорного кадра для прогнозирования, с целью генерации данных единиц прогнозирования для рассматриваемой единицы прогнозирования. Процесс 1500 может передавать эту информацию назад, на операцию 1559, где декодированные погрешности для каждой единицы прогнозирования (например, включая единицы прогнозирования с нулевой погрешностью), могут быть суммированы с соответствующей единицей прогнозирования для генерации реконструированной единицы прогнозирования. Кроме того, в этом пункте процесса может быть применена адаптивная фильтрация движения или адаптивная прецизионная фильтрация.
Процесс 1500 может продолжиться операцией 1579 «Применение в качестве опции ЕР-фильтрации», на которой может быть в качестве опции применена расширенная единица прогнозирования (например, ЕР-фильтрация). В некоторых примерах, где доступны и ЕР-фильтрация, и FI/FP-фильтрация, от системы кодирования может быть принят индикатор, указывающий системе декодирования, следует ли использовать данные расширенной единицы прогнозирования (например, после ЕР-фильтрации) или данные единицы прогнозирования в качестве выбранной единицы прогнозирования.
Процесс 1500 может продолжиться операцией 1580 «Применение в качестве опции FI/FP-фильтрации», на которой может быть в качестве опции применена FI/FP-фильтрация (например, фильтрация слияния или фильтрация для усовершенствования слияния). В некоторых примерах может быть принято решение относительно того, следует ли использовать в некоторой форме FI/FP-фильтрацию (фильтрацию для усовершенствования слияния/фильтрации слияния), или не следует использовать FI/FP-фильтрацию вообще. Когда нужно применить в какой-то форме FI/FP-фильтрацию (например, фильтрацию слияния или фильтрацию для усовершенствования слияния) к выбранной единице прогнозирования эта выбранная единица прогнозирования может быть собрана с какой-либо второй выбранной единицей прогнозирования воедино для генерации по меньшей мере части собранного кадра. Указанная FI/FP-фильтрация может быть применена для фильтрации этой части собранного кадра. Параметры такой FI/FP-фильтрации (например, параметры фильтрации слияния или параметры фильтрации для усовершенствования слияния) могут быть сформированы и переданы в подсистему энтропийного кодера.
Процесс 1500 может быть осуществлен посредством какой-либо из обсуждаемых здесь систем кодирующей обработки. Далее, процесс 1500 может быть повторен последовательно или параллельно для произвольного числа реализаций видео данных, таких как данные погрешностей единиц прогнозирования, единицы разбиения исходных данных или вейвлетные данные или другие подобные данные.
Хотя варианты реализации примеров процессов, рассматриваемые здесь, могут использовать выполнение всех операций, показанных в порядке иллюстрации, настоящее изобретение в этом отношении ничем не ограничено, и, в различных примерах, варианты процессов, рассматриваемых здесь, могут использовать только подмножество показанных операций и/или выполнять эти операции в порядке, отличном от иллюстрируемого порядка.
Фиг. 16 представляет схему, иллюстрирующую пример системы 1600 видео кодирования, построенной в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. В иллюстрируемом варианте система 1600 видео кодирования может содержать устройства 1601 для считывания изображения, видео кодирующее устройство 100 и/или модуль видео кодирования, реализованный посредством логического устройства 1650 на основе процессорных модулей 1620, видео декодирующее устройство 200 и/или модуль видео декодирования, реализованный посредством логического устройства 1650 на основе процессорных модулей 1620, антенну 1602, один или несколько процессоров 1603, одно или несколько запоминающих устройств 1604 и/или дисплейное устройство 1605.
Как показано, устройство 1601 для считывания изображения, антенна 1602, процессорные модули 1620, логическое устройство 1650, видео кодирующее устройство 100, видео декодирующее устройство 200, процессоры 1603, запоминающие устройства 1604 и/или дисплейное устройство 1605 могут быть способны осуществлять связь одно с другим. Как обсуждается, хотя показаны и видео кодирующее устройство 100, и видео декодирующее устройство 200, система 1600 видео кодирования может в различных примерах содержать только видео кодирующее устройство 100 или только видео декодирующее устройство 200.
Как показано, в некоторых примерах система 1600 видео кодирования может содержать антенну 1602. Эта антенна 1602 может быть конфигурирована для передачи или приема кодированного потока битов видеоданных, например. Далее, в некоторых примерах, система 1600 видео кодирования может содержать дисплейное устройство 1605. Это дисплейное устройство 1605 может быть конфигурировано для представления видеоданных. Как показано, логическое устройство 1650 может быть реализовано посредством процессорных модулей 1620. Процессорные модули 1620 могут содержать логические устройства, построенные на основе специализированных интегральных схем (application-specific integrated circuit (ASIC)), графические процессоры, процессоры общего назначения или другие подобные устройства. Система 1600 видео кодирования может также содержать процессоры-опции 1603, которые могут аналогичным образом содержать логические устройства на основе специализированных схем ASIC, графические процессоры, процессоры общего назначения или другие подобные устройства. В некоторых примерах логические устройства 1650 могут быть реализованы в виде аппаратуры или специализированной аппаратуры для видео кодирования или другой подобной аппаратуры, а процессоры 1603 могут применять загружаемое программное обеспечение или операционные системы общего назначения или другие подобные программы. Кроме того, запоминающие устройства 1604 могут представлять собой запоминающие устройства любого типа, такие как энергозависимая память (например, статическое запоминающее устройство с произвольной выборкой (статическое ЗУПВ (Static Random Access Memory (SRAM))), динамическое запоминающее устройство с произвольной выборкой (динамическое ЗУПВ (Dynamic Random Access Memory (DRAM))) и т.п.) или энергонезависимая память (например, флэш-память) и т.д. В неограничивающем примере, запоминающее устройство 1604 может быть реализовано в виде кэш-памяти. В некоторых примерах, логическое устройство 1650 может обращаться к запоминающему устройству 1604 (для реализации буфера изображения, например). В других примерах логическое устройство 1650 и/или процессорные модули 1620 могут содержать запоминающие устройства (например, кэш-память или другая подобная память) для реализации буфера изображения и т.п.
В некоторых примерах, видео кодирующее устройство 100, выполненное в виде логического устройства, может содержать буфер изображения (например, в виде процессорных модулей 1620 или запоминающих устройств 1604) и графический процессор (например, на основе процессорных модулей 1620). Графический процессор может осуществлять связь с буфером изображения. Графический процессор может содержать видео кодирующее устройство 100, реализованное посредством логического устройства 1650 с целью воплощения различных модулей, как обсуждается со ссылками на фиг. 1 и фиг. 3 и 5. Например, графический процессор может содержать логическое устройство для энтропийного кодирования и т.д. Это логическое устройство может быть конфигурировано для осуществления различных операций, как обсуждается здесь. Например, такое логическое устройство для энтропийного кодирования может быть конфигурировано для приема первых видеоданных и вторых видеоданных различных типов для энтропийного кодирования, определения первого способа энтропийного кодирования для первых видеоданных на основе по меньшей мере частично параметра, ассоциированного с первыми видеоданными, так что первый способ энтропийного кодирования представляет собой по меньшей мере один из способов - способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, осуществления энтропийного кодирования первых видеоданных с использованием первого способа кодирования для генерации первых сжатых видеоданных и энтропийного кодирования вторых видеоданных с использованием второго способа кодирования для генерации вторых сжатых видеоданных, и затем сборки первых сжатых видеоданных и вторых сжатых видеоданных для генерации выходного потока битов данных. Видео декодирующее устройство 200 может быть реализовано аналогичным образом.
В некоторых примерах антенна 1602 системы 1600 видео кодирования может быть конфигурирована для приема энтропийно кодированного потока битов видеоданных. Как обсуждается, этот поток битов данных может содержать два или более типов сжатых видеоданных. Система 1600 видео кодирования может также содержать видео декодирующее устройство 200, соединенное с антенной 1602 и конфигурированное для декодирования кодированного потока битов данных. Например, видео декодирующее устройство 200 может быть конфигурировано для разборки энтропийно кодированного потока битов данных для выделения первых сжатых видеоданных и вторых сжатых видеоданных, определения первого способа энтропийного декодирования для первых сжатых видеоданных, так что этот первый способ энтропийного декодирования представляет собой по меньшей мере один способ - способ адаптивного кодирования длин серий символов в коде переменной длины или способ адаптивного прокси-кодирования в коде переменной длины, энтропийного декодирования первых сжатых видеоданных с использованием первого способа энтропийного декодирования для генерации первых видеоданных и энтропийного декодирования вторых сжатых видеоданных с использованием второго способа энтропийного декодирования для генерации вторых сжатых видеоданных, и декодирования первых видеоданных и вторых видеоданных для генерации видеокадра.
В некоторых вариантах описываемые здесь признаки могут быть реализованы в соответствии с командами, предоставляемыми в составе одного или нескольких компьютерных программных продуктов. Такие программные продукты могут представлять собой носители сигнала, содержащие команды, при выполнении которых, например, процессором, можно реализовать описываемые здесь функции. Такие компьютерные программные продукты могут быть предоставлены в форме одного или нескольких машиночитаемых носителей. Таким образом, например, процессор, содержащий одно или несколько процессорных ядер, может реализовать один или несколько описываемых здесь признаков в соответствии с программным кодом и/или командами или наборами команд, предоставляемых процессору на одном или нескольких машиночитаемых носителей. В общем случае, машиночитаемый носитель может нести загружаемое программное обеспечение в форме программного кода и/или команд или наборов команд, при выполнении которых какие-либо устройства и/или системы описываемые здесь могут реализовать по меньшей мере часть рассматриваемых здесь признаков.
Фиг. 17 представляет схему, иллюстрирующую пример системы 1700, построенной в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. В различных вариантах система 1700 может быть медиа-системой, хотя возможные варианты системы 1700 этим контекстом не ограничиваются. Например, система 1100 может быть встроена в персональный компьютер (PC), портативный компьютер, ультра-портативный компьютер, планшет, тачпад, переносной компьютер, ручной компьютер, блокнотный компьютер, персональный цифровой помощник (personal digital assistant (PDA)), сотовый телефон, сочетание сотового телефона с помощником PDA, телевизор, разумное (смарт) устройство (например, смартфон, смарт планшет или смарт телевизор), мобильное интернет-устройство (mobile internet device (MID)), устройство для обмена сообщениями, устройство для передачи данных, фото и видеокамеры (например, компактные камеры («мыльницы»), видеокамеры с трансфокатором, цифровые зеркальные камеры (digital single-lens reflex (DSLR))) и т.д.
В различных вариантах система 1700 содержит платформу 1702, соединенную с дисплеем 1720. Платформа 1702 может принимать контент от устройства-источника контента, такого как устройства 1730 для предоставления контентных услуг или устройства 1740 доставки контента или другие подобные источники контента. Для взаимодействия, например, с платформой 1702 и/или дисплеем 1720 может быть использован навигационный контроллер 1750, имеющий одну или несколько навигационных функций. Каждый из этих компонентов будет более подробно описан ниже.
В различных вариантах платформа 1702 может содержать какое либо сочетание чипсета 1705, процессора 1710, запоминающего устройства 1712, антенны 1713, памяти 1714, графической подсистемы 1715, приложений 1716 и/или радиоустройства 1718. Чипсет 1705 может обеспечивать внутренние связи между процессором 1710, запоминающим устройством 1712, памятью 1714, графической подсистемой 1715, приложениями 1716 и/или радиоустройством 1718. Например, чипсет 1705 может иметь в составе адаптер памяти (не показан), способный обеспечивать связь с памятью 1714.
Процессор 1710 может быть реализован в виде процессора компьютера с полным набором команд (Complex Instruction Set Computer (CISC)) или компьютера с сокращенным набором команд (Reduced Instruction Set Computer (RISC)), процессора совместимого с набором команд x86, многоядерного процессора или какого-либо другого микропроцессора или центрального процессора (CPU). В различных вариантах реализации процессор 1710 может представлять собой двухъядерный процессор, двухъядерный мобильный процессор или другой подобный процессор.
Запоминающее устройство 1712 может быть выполнено в виде энергозависимого запоминающего устройства, такого как, не ограничиваясь, ЗУПВ (RAM), динамическое ЗУПВ (DRAM) или статическое ЗУПВ (SRAM).
Память 1714 может быть выполнена в виде энергонезависимого запоминающего устройства, такого как накопитель на магнитных дисках, накопитель на оптических дисках, накопитель на магнитной ленте, внутреннее запоминающее устройство, присоединяемое внешнее запоминающее устройство, флэш-память, синхронное динамическое ЗУПВ (SDRAM (synchronous DRAM)) с резервным аккумулятором и/или доступное через сеть связи запоминающее устройство. В различных вариантах память 1714 может использовать технологию для улучшения характеристик хранения информации с усиленной защитой ценных цифровых носителей, когда в состав памяти входят несколько накопителей на жестких дисках.
Графическая подсистема 1715 может осуществлять обработку изображений, таких как неподвижные изображения или видео, для представления на дисплее. Эта графическая подсистема 1715 может представлять собой графический процессор (модуль графического процессора (GPU)) или видео процессор (visual processing unit (VPU)), например. Для связи между графической подсистемой 1715 и дисплеем 1720 может быть использован аналоговый или цифровой интерфейс. Например, это может быть мультимедийный интерфейс высокой четкости (High-Definition Multimedia Interface (HDMI)), интерфейс типа DisplayPort, беспроводный интерфейс HDMI и/или какой-либо беспроводный интерфейс, совместимый с системами высокой четкости (HD). Графическая подсистема 1715 может быть интегрирована в процессор 1710 или чипсет 1705. В некоторых вариантах реализации графическая подсистема 1715 может быть выполнена в виде автономного устройства, осуществляющего связь с чипсетом 1705.
Описываемые здесь способы обработки графики или видео могут быть реализованы в различных аппаратных архитектурах. Например, графические и/или видео функции могут быть интегрированы в чипсет. В альтернативных вариантах можно использовать дискретный графический и/или видео процессор. Еще в одном варианте графические и/или видео функции могут быть реализованы процессором общего назначения, включая многоядерный процессор. В других вариантах эти функции могут быть реализованы в устройстве потребительской электроники.
Радиоустройство 1718 может быть каким-либо из совокупности одного или нескольких радиоустройств, способных передавать и принимать сигналы с использованием разнообразных подходящих способов радиосвязи. Среди таких способов может быть связь через одну или несколько сетей радиосвязи. К примерам таких сетей относятся (не ограничиваясь) локальные сети радиосвязи (wireless local area network (WLAN)), персональные сети радиосвязи (wireless personal area network (WPAN)), городские сети радиосвязи (wireless metropolitan area network (WMAN)), сети сотовой связи и сети спутниковой связи. Осуществляя связь в таких сетях связи, радиоустройство 1718 может работать в соответствии с одним или несколькими применимыми стандартами в какой-либо версии.
В различных вариантах дисплей 1720 может представлять собой какого-либо типа телевизионный монитор или дисплей. Дисплей 1720 может содержать, например, экран компьютерного дисплея, сенсорный экран дисплея, видеомонитор, устройство типа телевизора и/или телевизор. Дисплей 1720 может быть цифровым или аналоговым. В различных вариантах дисплей 1720 может быть топографическим. Кроме того, дисплей 1720 может иметь прозрачную поверхность, на которую можно проецировать видео изображение. Такие проекции могут нести разного рода информацию, изображения и/или объекты. Например, такие проекции могут передавать визуальное наложенное изображение для мобильных приложений дополненной реальности (mobile augmented reality (MAR)). По командам одного или нескольких программных приложений 1716 платформа 1702 может представлять интерфейс 1722 пользователя на дисплее 1720.
В различных вариантах устройства 1730 для предоставления контентных услуг могут базироваться на хостинге какого-либо национального, международного и/или независимого сервиса и быть, таким образом, доступными для платформы 1702 через Интернет, например. Устройства 1730 для предоставления контентных услуг могут быть связаны с платформой 1702 и/или дисплеем 1720. Платформа 1702 и/или устройства 1730 для предоставления контентных услуг могут быть связаны с сетью 1760 связи для обмена (например, передачи и/или приема) информацией медиа с сетью 1760. Устройства 1740 доставки контента могут быть связаны с платформой 1702 и/или дисплеем 1720.
В различных вариантах устройство 1730 для предоставления контентных услуг может представлять собой приставку для кабельного телевидения, персональный компьютер, сеть связи, телефон, устройства, имеющие связь с Интернет, или аппаратуру, способную доставлять цифровую информацию и/или контент, и какое-либо другое подобное устройство, способное осуществлять передачу контента в одном или в обоих направлениях между провайдерами контента и платформой 1702 и/или дисплеем 1720 через сеть 1760 связи или непосредственно. Следует понимать, что контент может быть передан в одном или в обоих направления между одним из компонентов системы 1702 и провайдером контента через сеть 1760 связи. Среди примеров контента можно указать какую-либо медийную информацию, включая, например, видео, музыку, медицинскую и игровую информацию и т.п.
Устройства 1730 для предоставления услуг контента могут принимать контент, такой как программы кабельного телевидения, включая медийную информацию, цифровую информацию и/или другой контент. Среди примеров провайдеров контента можно указать каких-либо провайдеров кабельного или спутникового телевидения, либо провайдеров радио или Интернет. Приведенные примеры никоим образом не ограничивают возможные варианты реализации настоящего изобретения.
В различных вариантах платформа 1702 может принимать сигналы управления от навигационного контроллера 1750, имеющего одну или несколько функций навигации. Навигационные функции контроллера 1750 могут быть использованы для взаимодействия с интерфейсом 1722 пользователя, например. В различных вариантах навигационный контроллер 1750 может представлять собой указательное устройство, которое может быть компонентом аппаратуры компьютера (в частности, устройством человеко-машинного интерфейса), позволяющим пользователю вводить пространственные (например, непрерывные и многомерные) данные в компьютер. Многие системы, такие как графические интерфейсы пользователя (graphical user interface (GUI)), а также телевизоры и мониторы позволяют пользователю управлять и вводить данные в компьютер или телевизор с использованием физических жестов.
Перемещение элементов навигации из состава контроллера 1750 может быть воспроизведено на дисплее (например, дисплее 1720) перемещениями указателя, курсора, фокусного кольца или других визуальных индикаторов, представленных на экране дисплея. Например, под управлением программных приложений 1716 элементы навигации, расположенные на навигационном контроллере 1750, могут быть отображены в виртуальные навигационные элементы, представленных на интерфейсе 1722 пользователя, например. В различных вариантах контроллер 1750 может быть отдельным компонентом, а может быть встроен в платформу 1702 и/или в дисплей 1720. Настоящее изобретение, однако, не ограничивается только элементами или контекстом, показанными или описываемыми здесь.
В различных вариантах драйверы (не показаны) могут использовать технологию, позволяющую пользователю мгновенно включать и выключать платформу 1702, как телевизор, простым прикосновением к кнопке после первоначальной загрузки, если эта функция включена, например. Логика программы может позволить платформе 1702 направлять поток контента к медиа-адаптерам или другим устройствам 1730 для предоставления контентных услуг или устройствам 1740 для доставки контента, даже когда платформа «выключена». Кроме того, чипсет 1705 может содержать аппаратную и/или программную поддержку для систем звукового окружения в формате 5.1 и/или систем звукового окружения высокой четкости в формате 7.1, например. Среди драйверов может быть графический драйвер для платформ с интегрированной графикой. В различных вариантах графический драйвер может содержать графическую карту Express в стандарте соединения периферийных компонентов (peripheral component interconnect (PCD).
В различных вариантах реализации один или несколько компонентов, показанных в системе 1700, могут быть интегрированы. Например, могут быть интегрированы платформа 1702 и устройства 1730 для предоставления контентных услуг, либо могут быть интегрированы платформа 1702 и устройства 1740 для доставки контента, либо могут быть интегрированы платформа 1702, устройства 1730 для предоставления контентных услуг и устройства 1740 для доставки контента. В различных вариантах платформа 1702 и дисплей 1720 могут быть выполнены в виде интегрированного модуля. Например, могут быть также интегрированы дисплей 1720 и устройства 1730 для предоставления контентных услуг, либо могут быть интегрированы дисплей 1720 и устройства 1740 для доставки контента. Эти примеры не означают ограничений для настоящего изобретения.
В различных вариантах система 1700 может быть реализована в виде беспроводной системы, проводной системы или сочетания таких систем. В беспроводном варианте система 1700 может содержать компоненты и интерфейсы, подходящие для связи посредством совместно используемых радио ресурсов, такие как одна или несколько антенн, передатчиков, приемников, приемопередатчиков, усилителей, фильтров, управляющих логических устройств и т.д. В качестве примеров таких совместно используемых радио ресурсов можно указать участки спектра для радиосвязи, такого как высокочастотный спектр и т.п. В проводном варианте система 1700 может содержать компоненты и интерфейсы, подходящие для связи по проводным линиям связи, такие как адаптеры ввода/вывода, физические соединители, обеспечивающие соединение такие адаптеров ввода/вывода с соответствующей проводной линией связи, плата сетевого интерфейса (network interface card (NIC)), дисковый контроллер, видео контроллер, аудио контроллер или другие подобные компоненты. В качестве примеров проводных линий связи можно указать провода, кабель, металлические выводы, печатные платы, объединительные панели, коммутаторы, полупроводниковый материал, витую пару проводов, коаксиальный кабель, волоконно-оптические линии связи и т.д.
Платформа 1702 может устанавливать один или несколько логических или физических каналов связи для передачи информации. Эта информация может содержать медийную информацию и информацию управления. Медийная информация может обозначать любые данные, представляющий контент, значимый для пользователя. В качестве примеров контента можно указать, например, данные голосового разговора, видеоконференцию, потоковое видео, сообщения электронной почты ("email"), сообщения голосовой почты, арифметические символы, графику, изображения, видео, текст и т.д. Данные голосового разговора могут содержать, например, речевую информацию, периоды молчания, фоновый шум, комфортный шум, тональные сигналы и т.д. Термин «управляющая информация» может относиться к любым данным, представляющим команды, инструкции или управляющие слова, значимые для автоматической системы. Например, управляющая информация может быть использована для маршрутизации медийной информации через систему или передачи команд узлу для обработки медийной информации заданным образом. Возможные варианты, однако, не ограничиваются элементами или контекстом, показанными на фиг. 17 или описываемыми в связи с этим чертежом.
Как описано выше, система 1700 может быть воплощена в соответствии с различными физическими стилями или форм-факторами. Фиг. 18 иллюстрирует вариант устройства 1800 с небольшим форм-фактором, в котором может быть воплощена система 1800. В различных вариантах, например, устройство 1800 может быть реализовано в виде мобильного компьютерного устройства, имеющего возможности радиосвязи. Термин мобильное компьютерное устройство может обозначать любое устройство, имеющее процессорную систему и мобильный источник питания, такой как один или несколько аккумуляторов, например.
Как описано выше, в качестве примеров мобильных вычислительных устройств можно указать персональный компьютер, портативный компьютер, ультра-портативный компьютер, планшет, тачпад, переносной компьютер, ручной компьютер, блокнотный компьютер, персональный цифровой помощник (PDA), сотовый телефон, сочетание сотового телефона с помощником PDA, телевизор, смарт-устройство (например, смартфон, смарт планшет или смарт телевизор), мобильное интернет-устройство (MID), устройство для обмена сообщениями, устройство для передачи данных, фото и видеокамеры (например, компактные камеры («мыльницы»), видеокамеры с трансфокатором, цифровые зеркальные камеры (DSLR)) и т.д.
Среди примеров мобильных компьютерных устройств можно также указать компьютеры, сконструированные так, чтобы их мог носить человек, такие как наручный компьютер, компьютер в форме стержня («пальца»), компьютер в форме кольца (перстня), компьютер в очках, компьютер для ношения на поясном ремне, компьютер на нарукавной повязке, компьютеры в обуви, компьютеры в одежде и другие носимые компьютеры. В различных вариантах, например, мобильное компьютерное устройство может быть реализовано в виде смартфона, способного выполнять компьютерные приложения, равно как осуществлять голосовую связь и передачу данных. Хотя в некоторых описываемых вариантах, в качестве примера, применено мобильное компьютерное устройство в форме смартфона, должно быть понятно, что другие варианты могут быть реализованы с применением других беспроводных компьютерных устройств. Варианты в этом контексте ничем не ограничены.
Как показано на фиг. 18, устройство 1800 может содержать корпус 1802, дисплей 1804, устройство 1806 ввода/вывода и антенну 1808. Устройство 1800 может также иметь навигационные функции 1812. Дисплей 1804 может содержать какой-либо подходящий дисплейный модуль для представления информации, необходимой для мобильного компьютерного устройства. Устройство 1806 ввода/вывода может представлять собой какое-либо подходящее устройство ввода/вывода, позволяющее вводить информацию в мобильное компьютерное устройство. В качестве примеров устройства 1806 ввода/вывода можно указать алфавитно-цифровую клавиатуру, цифровую клавиатуру, тачпад, клавиши ввода, кнопки, переключатели, тумблеры, микрофоны, громкоговорители, устройство распознавания речи и программное обеспечение, и т.д. Информация может быть также введена в устройство 1800 посредством микрофона (не показан). Такая информация может быть переведена в цифровую форму устройством распознавания речи (не показано). Возможные варианты в этом контексте не ограничены.
Различные варианты могут быть реализованы с использованием элементов аппаратуры, элементов программного обеспечения или сочетания этих компонентов. К примерам элементов аппаратуры могут относиться процессоры, микропроцессоры, схемы, схемные компоненты (например, транзисторы, резисторы, конденсаторы, катушки индуктивности и т.д.), интегральные схемы, специализированные интегральные схемы (ASIC), программируемые логические устройства (programmable logic device (PLD)), цифровые процессоры сигнала (digital signal processor (DSP)), программируемые пользователем вентильные матрицы (field programmable gate array (FPGA)), логические вентили, регистры, полупроводниковые приборы, чипы, микрочипы, чипсеты и т.д. Среди примеров программного обеспечения можно указать компоненты программного обеспечения, программы, приложения, компьютерные программы, прикладные программы, системные программы, машинные программы, программное обеспечение операционной системы, промежуточное программное обеспечение, встроенное программное обеспечение, модули программного обеспечения, стандартные программы, стандартные подпрограммы, функции, способы, процедуры, программные интерфейсы, интерфейсы прикладных программы (application program interface (API)), наборы команд, компьютерные коды, сегменты кодов, сегменты компьютерных кодов, слова, величины, символы или какие-либо сочетания перечисленных элементов. Выбор, следует ли тот иной или иной вариант реализовать с использованием элементов аппаратуры и/или элементов программного обеспечения, может варьироваться в соответствии с рядом факторов, таких как заданная скорость вычислений, уровни мощности, допустимые тепловые режимы, возможности процессорного цикла, скорости передачи данных на входе, скорости передачи данных на выходе, ресурсы памяти, скорость работы шины данных и другие проектные или эксплуатационные ограничения.
Один или несколько аспектов по меньшей мере одного варианта могут быть реализованы посредством репрезентативных команд, сохраняемых на машиночитаемом носителе, представляющем различные логические функции в процессоре, так что машина при считывании этих команд осуществляет логические функции согласно описываемому здесь способу. Такие репрезентативные команды, известные как IP-ядра ("IP cores"), могут быть сохранены на материальном машиночитаемом носителе и поставлены различным заказчикам или производственным предприятиям для загрузки в изготавливаемые машины, реально служащие логическими устройствами или процессорами.
Как обсуждается, системы, аппаратура, изделия и способы, описываемые здесь, относятся к контентно-адаптивному энтропийному кодированию для видео систем. В некоторых примерах, системы, аппаратура, изделия и способы, описываемые здесь, относятся к контентно-адаптивному энтропийному кодированию данных о режимах и опорных типах для частей видеокадров в видео системах. Далее примеры содержат контентно-адаптивное энтропийное кодирование для данных разбиения (например, splits) и данных «горизонтальный/вертикальный» (например, является ли разбиение горизонтальным или вертикальным). Например, данные разбиения могут содержать биты разбиения, указывающие, производится ли дальнейшее разбиение блока или части кадра. Данные «горизонтальный/вертикальный» могут указывать, является ли разбиение (если оно указано) горизонтальным или вертикальным. Данные разбиения могут быть продолжены для суб-блоков (частей блока, полученных в результате разбиения этого блока) и так до тех пор дальнейшее разбиение каждого блока или суб-блока далее производиться не должно.
Данные режимов указывают, какой режим для блока или единицы разбиения используется для кодирования этого блока или единицы разбиения. Например, такими режимами могут быть режим «внутрикадровый» ("intra"), режим «пропуск» ("skip"), режим «разбиение» ("split"), режим «авто» ("auto"), режим «межкадровый» ("inter") и режим «мульти» ("multi") или другой подобный режим, как обсуждается ниже. Данные опорных типов могут указывать тип опорного кадра для блока или единицы разбиения в некоторых режимах. Например, при кодировании режима «inter» может быть использован один опорный кадр, а при кодировании в режиме «multi» могут быть использованы два или более опорных кадров.
В некоторых примерах данные разбиения, данные «горизонтальный/вертикальный», данные режимов и данные опорных типов могут быть загружены для части видеокадра или для одного видеокадра. Оценочная стоимость бита при энтропийном кодировании может быть определена как сумма стоимости бита при энтропийном кодировании для совместного кодирования данных разбиения и данных режима и стоимости бита при энтропийном кодировании для данных «горизонтальный/вертикальный» (например, полная стоимость является суммой стоимости при совместном кодировании данных разбиения и данных режима и стоимости кодирования данных «горизонтальный/вертикальный»). Другая оценочная стоимость бита при энтропийном кодировании может быть определена как сумма стоимости бита при энтропийном кодирования для раздельного кодирования данных разбиения и данных режимов и стоимости бита при энтропийном кодировании для данных «горизонтальный/вертикальный» (например, полная стоимость является суммой стоимости при раздельном кодировании данных разбиения и данных режима и стоимости кодирования данных «горизонтальный/вертикальный»). На основе стоимости бита может быть сделан выбор между совместным и раздельным кодированием данных разбиения и данных режимов, чтобы использовать вариант с меньшей стоимостью бита. На основе этого выбора данные разбиения и данные режимов могут быть энтропийно кодированы совместно или по отдельности и может быть сформирован соответствующий заголовок совместного или раздельного кодирования для индикации выбранного способа кодирования. Далее, могут быть энтропийно кодированы данные «горизонтальный/вертикальный» и могут быть энтропийно кодированы данные опорных типов. Энтропийно кодированные данные разбиения, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов могут быть переданы в потоке битов данных для использования декодером.
Кодированный поток битов данных может быть принят и декодирован для определения заголовка совместного или раздельного кодирования, ассоциированного с данными разбиения и данными режимов для части видеокадра или одного видеокадра. Данные разбиения и данные режимов могут быть декодированы совместно, если заголовок совместного или раздельного кодирования указывает совместное кодирование, и декодированы по отдельности, когда заголовок совместного или раздельного кодирования указывает на раздельное кодирование. Данные «горизонтальный/вертикальный» также могут быть энтропийно декодированы из потока битов данных. Энтропийно декодированные данные разбиения, режимов, «горизонтальный/вертикальный» и данные опорных типов могут быть использованы, как обсуждается здесь, вместе с другими энтропийно декодированными данными для реконструкции видеокадров с целью представления пользователю.
Как обсуждается здесь, модуль 403 кодирования (пожалуйста, см. фиг. 6) может принимать видеоданные 413, которые могут содержать входные данные, определяющие разбиения частей видеокадра или кадров. Модуль 403 кодирования может принимать данные 635 режимов и разбиений (например, для совместного кодирования), данные 636 информации режимов (например, указание режимов), данные 637 (например, для раздельного кодирования) информации «разбиение/нет разбиения» (split/not-split) (например, указание разбиений) и/или данные 638 опорной информации для прогнозирования (например, опорный тип). Модуль 403 кодирования может также принимать данные «горизонтальный/вертикальный» в качестве части данных 635 режимов и разбиения или данных 637 разбиения или отдельно от указанных данных. Далее, как показано, данные 635, 636, 637 и 638 могут быть приняты раздельными модулями. В некоторых примерах видеоданные 413 могут быть приняты совместно в модуле 403 кодирования и/или модуль 403 кодирования может использовать другие структуры модулей или структуры данных. В частности, любые дублированные данные в составе данных 635, 636, 637 и 638 (например, данные разбиений и данные режимов в составе данных 635 и 636, 637) могут быть приняты модулем 403 кодирования только однажды. Модуль 403 кодирования может определять стоимость битов при совместном и раздельном энтропийном кодировании для совместного кодирования разбиений и данных режимов и для раздельного кодирования разбиений и данных режимов, соответственно. Модуль 403 кодирования может энтропийно кодировать разбиения и данные режимов совместно или по отдельности в зависимости от того, в каком случае стоимость бита меньше, а также энтропийно кодировать данные опорных типов и данные «горизонтальный/вертикальный», как обсуждается ниже. Модуль 403 кодирования может передавать энтропийно кодированные данные разбиений, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов в модуль 408 сборки потоков битов данных, который может вписать энтропийно кодированные данные в поток 111 битов данных.
0
0
1
2
3
Как обсуждается, видео кодирование следующего поколения может использовать 3 типа кадров, I-, Р- и B/F-кадры. Фиг. 19 представляет схему, иллюстрирующую пример схемы 1900 структур кадра и зависимостей при прогнозировании, построенных в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Как показано, схема 1900 структур кадра и зависимостей при прогнозировании может содержать кадры 1901, включая I-, Р- и/или B/F-кадры. Иллюстрируемые кадры могут быть также ранжированы. Например, 1 и Р кадры могут быть кадрами ранга 0, F могут быть кадрами ранга 1, могут соответствовать первому уровню иерархии и могут быть использованы в качестве опорных кадров (например, для кодирования другого кадра), кадры F могут быть кадрами ранга 2, могут соответствовать второму уровню иерархии и могут быть использованы в качестве опорных кадров и f могут быть кадрами ранга 3, которые могут соответствовать третьему уровню иерархии, но могут не использоваться в качестве опорных кадров (например, никакие другие кадры от них не зависят).
Как обсуждается, кадр может быть разбит на плитки или подобные единицы (например, супер-фрагменты, наибольшие единицы кодирования или другие подобные единицы). В различных вариантах могут быть использованы два типоразмера плиток (например, 32×32 и 64×64). Далее плитки могут быть разделены на единицы разбиения (например, единицы меньшего размера) для прогнозирования (например, единицы прогнозирования) и/или кодирования (например, единицы кодирования). В некоторых примерах единицам прогнозирования из состава плитки может быть присвоен один из 6 следующих режимов, которые могут быть доступны и для Р- и для B/F-кадров:
intra
skip
split
auto
inter
multi
Например, единицам разбиения, кодируемым внутрикадровым способом может быть присвоен режим «intra». Единицам разбиения, для которых не сформированы ни векторы движения, ни какие-либо кодированные коэффициенты преобразования, может быть присвоен режим «skip». Единицам разбиения, для которых кодированы коэффициенты преобразования, но нет векторов движения, может быть присвоен режим «auto». Единицам разбиения, которые нужно разделять дальше, может быть присвоен режим «split» (и они могут быть охарактеризованы как разбиваемые единицы). Наконец, единицам, имеющим несколько опорных элементов для прогнозирования, может быть присвоен режим «multi». Как обсуждается, каждой из единиц разбиения может быть присвоен какой-либо режим. Такая информация может быть представлена в виде данных режимов, как обсуждается здесь. Далее, для режимов «inter» и «multi» может быть указан тип опорного кадра в качестве данных опорного типа.
Фиг. 20 представляет схему, иллюстрирующую пример опорных кадров 2000 для прогнозирования, построенных в соответствии по меньшей мере с некоторыми вариантами настоящего изобретения. Например, обсуждаемый NGV-кодер (например, кодирующее устройство 100 и/или декодирующее устройств 200) может реализовать кодирование Р-кадров с использованием сочетания преобразованных (подвергнутых морфингу) опорных единиц 2028-2038 прогнозирования (например, MR0-MR3) и или синтезированных опорных единиц 2012 и 2040-2046 прогнозирования (например, S0-S3, MR4-MR7). Как обсуждается, NGV-кодирование может использовать три типа кадров, обозначенных как I-кадры, Р-кадры и F/B-кадры. В иллюстрируемом примере текущий кадр 2010, подлежащий кодированию, (Р-кадр) показан в момент времени t=4. В процессе кодирования предлагаемый вариант реализации NGV-кодера (например, кодирующее устройство 100 и/или декодирующее устройство 200) использует один или более из 4 ранее декодированных опорных элементов R0 2012, R1 2014, R2 2016 и R3 2018. В отличие от других решений, которые могут просто использовать эти элементы непосредственно для прогнозирования, предлагаемый вариант NGV-кодера (например, кодирующее устройство 100 и/или декодирующее устройство 200) может генерировать модифицированные (преобразованные посредством морфинга или синтезированные) опорные элементы на основе таких ранее декодированных опорных элементов и затем применять кодирование с компенсацией движения на основе по меньшей мере частично таких генерируемых модифицируемых (посредством морфинга или синтеза) опорных элементов.
В некоторых примерах предлагаемый вариант реализации NGV-кодера (например, кодирующее устройство 100 и/или декодирующее устройство 200) может содержать ряд компонентов и комбинировать прогнозы, генерируемые этими компонентами, посредством эффективного алгоритма видео кодирования. Например, предлагаемый вариант реализации NGV-кодера может иметь один или несколько следующих признаков: 1. Компенсация усиления (например, компенсация в явном виде изменений усиления яркости в пределах сцены); 2. Компенсация нерезкости (например, компенсация в явном виде изменений размытости/резкости в пределах сцены); 3. Компенсация преобладающего/глобального движения (например, компенсация в явном виде преобладающего движения в пределах сцены); 4. Компенсация совмещения (например, компенсация в явном виде изменений нарушений совмещения в пределах сцены); 5. Сверхразрешение (например, модель в явном виде изменений точности разрешения в пределах сцены); 6. Проекция (например, модель в явном виде изменений траектории движения в пределах сцены); другие подобные признаки и/или их сочетания.
В иллюстрируемом примере компенсация движения может быть применена к текущему кадру 2010 (например, отмеченному на чертеже как P-pic (curr)) как часть локального декодирующего контура. В некоторых случаях такая компенсация движения может быть основана по меньшей мере частично на будущих кадрах (не показаны) и/или на предшествующем кадре R0 2012 (например, отмеченном на чертеже как R0), предшествующем кадре R1 2014 (например, отмеченном на чертеже как R1), предшествующем кадре R2 2016 (например, отмеченном на чертеже как R2) и/или предшествующем кадре R3 2018 (например, отмеченном на чертеже как R3).
Например, в некоторых вариантах операции прогнозирования могут представлять межкадровое и/или внутрикадровое прогнозирование. Межкадровое прогнозирование может быть выполнено посредством одного или нескольких модулей, включая модуль анализа морфинга и генерации преобразованных кадров и/или модуль анализа синтеза и генерации синтезированных кадров. Такой модуль анализа морфинга и генерации преобразованных кадров может анализировать текущий кадр с целью определения параметров для изменений размытости 2020 (например, отмеченного на чертеже как Blur par), изменений усиления 2022 (например, отмеченного на чертеже как Gain par), изменений совмещения отмеченного на чертеже как 2024 (например, отмеченного на чертеже как Reg par) и изменений преобладающего движения 2026 (например, отмеченного на чертеже как Dom par) или других подобных параметров относительно опорного кадра или кадров, которые нужно кодировать с использованием этого опорного кадра.
Найденные параметры морфинга 2020, 2022, 2024 и/или 2026 могут быть использованы для генерации преобразованных посредством морфинга опорных кадров. Сформированные преобразованные опорные кадры могут быть сохранены и могут быть использованы для вычисления векторов движения с целью прогнозирования текущего кадра с эффективной компенсацией движения (и характеристик). В иллюстрируемом примере найденные параметры 2020, 2022, 2024 и/или 2026 морфинга могут быть использованы для генерации преобразованных с помощью морфинга опорных кадров, таких как преобразованный опорный кадр 2028 с компенсацией размытости (например, отмеченный на чертеже как кадр MR3b), преобразованный опорный кадр 2030 с компенсацией усиления (например, отмеченный на чертеже как кадр MR2g), преобразованный опорный кадр 2032 с компенсацией усиления (например, отмеченный на чертеже как кадр MR1g), преобразованный опорный кадр 2034 с компенсацией совмещения (например, отмеченный на чертеже как кадр MR1r), преобразованный опорный кадр 2036 с компенсацией преобладающего движения (например, отмеченный на чертеже как кадр MR0d) и/или преобразованный опорный кадр 2038 с компенсацией совмещения (например, отмеченный на чертеже как кадр MR0r) и другие подобные кадры или сочетания их, например.
Аналогично, модуль анализа синтеза и генерации синтезированных кадров может генерировать кадры 2040 со сверхразрешением (SR) (например, отмеченные на чертеже как S0 (эквивалентен предшествующего кадру R0 2012), S1, S2, S3) и проецируемые интерполированные (PI) кадры 2042 (например, отмеченные на чертеже как РЕ) или другие подобные кадры для определения векторов движения с целью прогнозирования с эффективной компенсацией движения для этих кадров. Такие сформированные синтезированные опорные кадры могут быть сохранены и могут быть использованы для вычисления векторов движения с целью прогнозирования текущего кадра с эффективной компенсацией движения (и характеристик).
В дополнение или в качестве альтернативы найденные параметры 2020, 2022, 2024 и/или 2026 морфинга могут быть использованы для генерации синтезированных опорных кадров 2040 со сверхразрешением (SR) и/или проецируемых интерполированных (PI) кадров 2042. Например, модуль анализа синтеза и генерации синтезированных кадров может генерировать преобразованные посредством морфинга кадры 2044 со сверхразрешением (SR) и компенсацией совмещения (например, отмеченные на чертеже как кадры MR4r, MR5r, и MR6r) и/или преобразованные посредством морфинга проецируемые интерполированные кадры 2046 с компенсацией совмещения (например, отмеченный на чертеже как кадр MR7r) или другие подобные кадры на основе найденного параметра 2024 морфинга для совмещения. Такие сформированные с использованием морфинга и синтеза опорные кадры могут быть сохранены и могут быть использованы для вычисления векторов движения с целью прогнозирования текущего кадра с эффективной компенсацией движения (и характеристик).
В некоторых вариантах изменения набора характеристик (таких как усиление, размытость, преобладающее движение, совмещение, точность разрешения, траектория движения или других подобных характеристик или их сочетаний, например) могут быть вычислены в явном виде. Такой набор характеристик может быть вычислен в дополнение к локальному движению. В некоторых случаях могут быть должным образом использованы предшествующие и последующие кадры/срезы; однако в других случаях такой набор характеристик больше подходит для прогнозирования на основе только предшествующих кадров/срезов. Далее, поскольку в любой процедуре оценки возможна ошибка (например, от нескольких прошлых или нескольких будущих кадров/срезов) может быть выбран тот модифицированный опорный кадр, ассоциированный с набором характеристик (таких как усиление, размытость, преобладающее движение, совмещение, точность разрешения, траектория движения, другие подобные характеристики или их сочетания, например), который дает наилучшую оценку. Таким образом, предлагаемый подход, использующий модифицированные опорные кадры, ассоциированные с набором характеристик (такие как усиление, размытость, преобладающее движение, совмещение, точность разрешения, траектория движения, другие подобные характеристики или их сочетания, например) может в явном виде компенсировать различия в этих характеристиках. Предлагаемый вариант реализации может решать проблему, как улучшить прогнозирование сигнала, что в свою очередь позволяет добиться высокой эффективности сжатия при видео кодировании.
Как обсуждается, единице разбиения может быть назначен какой-либо режим. Далее, для кодирования этой единицы разбиения могут быть использованы опорные кадры в зависимости от назначенного режима. Эти опорные кадры могут представлять собой ранее декодированные кадры, ранее декодированные кадры, преобразованные посредством морфинга, или ранее декодированные синтезированные кадры. В некоторых примерах имеющиеся опорные кадр или кадры, доступные для кодирования могут зависеть от типа кодируемого кадра и/или от режима кодирования рассматриваемой единицы разбиения.
Например, при кодировании Р-кадров в режиме «inter» могут быть использованы девять опорных типов:
Как обсуждается и показано в таблице А, данные опорных типов могут содержать опорные типов для блоков или единиц разбиения Р-кадров в режиме «inter», причем совокупность опорных типов для блоков или единиц разбиения в режиме «inter» может содержать ранее декодированные кадры (MR0n-MR3n, где "n" означает отсутствие параметров морфинга), ранее декодированные кадры со сверхразрешением (MR5n-MR7n и MR0n, где "n" означает отсутствие параметров морфинга, и, как показано, MR5n-MR7n и MR0n являются прошлыми кадрами со сверхразрешением), ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением (MR0d) или ранее декодированный преобразованный посредством морфинга кадр с усилением (MR0g) или другой подобный кадр.
Например, при кодировании Р-кадров в режиме «multi» первый опорный кадр может быть ранее декодированным опорным кадром (например, MR0n), а второй опорный кадр может быть выбран из таблицы В:
Как обсуждается и показано в таблице В, данные опорных типов могут содержать опорные типы для блоков или единиц разбиения Р-кадров в режиме «multi» и опорные типы для блоков или единиц разбиения в режиме «multi» могут содержать первый опорный тип, представляющий собой ранее декодированный кадр (например, MR0n) и второй опорный тип, представляющий собой второй ранее декодированный кадр (например, один из кадров MR1n-MR3n).
Например, при кодировании B/F-кадров в режиме «inter» могут быть использованы десять опорных типов:
Как обсуждается и показано в таблице С, данные опорных типов могут содержать опорные типы для блоков или единиц разбиения B/F-кадра в режиме «inter» и эти опорные блоки или единицы разбиения в режиме «inter» могут представлять собой ранее декодированные кадры (MR0n, MR3n, MR1n; пожалуйста, заметьте, что ранее декодированные кадры могут быть «прошлыми» или «будущими» кадрами), проецируемый опорный кадр (MR7n), ранее декодированный опорный кадр со сверхразрешением (MR4n, MR5n, MR6n), ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением (MR0d, MR3d) или ранее декодированный преобразованный посредством морфинга кадр с усилением (MR0g, MR3g).
Например, при кодировании B/F-кадров для режима «multi» возможны несколько вариантов (опций).
В первом варианте первый опорный кадр может представлять собой ранее декодированный опорный кадр (например, MR0n) и второй опорный кадр может быть выбран, как показано в таблице D:
Во втором варианте первый опорный кадр может представлять собой ранее декодированный опорный кадр (например, MR0n), а второй опорный кадр может быть проецируемым опорным кадром (например, MR7n (Proj_None)).
В третьем варианте первый опорный кадр может представлять собой ранее декодированный опорный кадр (например, MR3n (Futr_None)), а второй опорный кадр может быть проецируемым опорным кадром (например, MR7n (Proj_None)).
Как обсуждается и показано в таблице D и как описано во втором и третьем вариантах, данные опорных типов могут содержать опорные типы для блоков или единиц разбиения B/F-кадра в режиме «multi» и эти опорные блоки или единицы разбиения в режиме «multi» могут иметь первый опорный тип, представляющий собой ранее декодированный кадр (либо «прошлый», либо «будущий» опорный кадр; например, MR0n или MR3n), и второй опорный тип, представляющий собой второй ранее декодированный кадр (MR1n, MR3n), ранее декодированный кадр со сверхразрешением, (MR4n, MR5n, MR6n), проецируемый опорный кадр (MR7n), ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением (MR3d), или ранее декодированный преобразованный посредством морфинга кадр с усилением (MR3g).
Как обсуждается здесь, видеоданные, содержащие данные режимов и опорных типов могут быть подвергнуты энтропийному кодированию. Кроме того, как обсуждается, данные режимов могут указывать режимы для блоков или единиц разбиения видеокадра или частей видеокадра. В некоторых примерах данные режимов указывать один из шести режимов (режим «intra», режим «skip», режим «split», режим «auto», режим «inter» или режим «multi») для блока или единицы разбиения, а данные опорных типов могут указывать один или несколько типов опорных кадров для блоков или единиц разбиения, обсуждаемых подробно в связи с таблицами A-D и в других местах настоящего описания.
Фиг. 21 представляет логическую схему, иллюстрирующую пример процесса, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Процесс 2100 может содержать одну или несколько операций, функций или действий, как показано посредством одной или нескольких операций 2102, 2104, 2106, 2108, 2110, 2112 и/или 2114. Этот процесс 2100 может составлять по меньшей мере часть процесса видео кодирования следующего поколения. В качестве неограничивающего примера, этот процесс 2100 может составить по меньшей мере часть процесса видео кодирования следующего поколения, осуществляемого системой 100 кодирования, показанной на фиг. 1.
Процесс 2100 может начинаться операцией 2102 «Загрузка данных разбиения, данных «горизонтальный/вертикальный», данных режимов и данных опорных типов», на которой могут быть загружены указанные данные разбиений, данные «горизонтальный/вертикальный», данные режимов и данные опорных типов. Например, перечисленные данные могут быть загружены в модуль 110 адаптивного энтропийного кодирования для обработки. Как обсуждается, данные разбиения могут содержать биты разбиения, указывающие, подлежит ли соответствующий блок или единица разбиения в составе видеокадра дальнейшему разбиению, и данные «горизонтальный/вертикальный», указывающие для каждого разбиения в составе данных разбиения, является ли это разбиение горизонтальным или вертикальным. Далее, как обсуждается, данные режимов могут указывать режимы для блоков или единиц разбиения в составе видеокадра. Например, данные режимов могут указывать следующие режимы: режим «intra», режим «skip», режим «split», режим «auto», режим «inter» или режим «multi». Данные могут быть загружены для видеокадра или части видеокадра, такой как срез или другая часть видеокадра.
Процесс 2100 может продолжиться операцией 2104 «Определение оценочной стоимости бита при энтропийном кодировании для совместного кодирования данных разбиения и данных режимов и для кодирования данных «горизонтальный/вертикальный»», где может быть определена оценочная стоимость бита при энтропийном кодировании для совместного кодирования данных разбиения и данных режимов и для кодирования данных «горизонтальный/вертикальный».
Процесс 2100 может продолжиться операцией 2106 «Определение оценочной стоимости бита при энтропийном кодировании для раздельного кодирования данных разбиения и данных режимов и для кодирования данных «горизонтальный/вертикальный»», где может быть определена оценочная стоимость бита при энтропийном кодировании для раздельного кодирования данных разбиения и данных режимов и для кодирования данных «горизонтальный/вертикальный». Как обсуждается, оценочные стоимости бита при энтропийном кодирования могут быть определены для совместного и для раздельного кодирования данных разбиения и данных режимов. Дополнительные подробности такого энтропийного кодирования и стоимости бита приведены ниже. Например, при раздельном кодировании данных разбиения и данных режимов данные разбиения могут быть кодированы вместе с данными «горизонтальный/вертикальный», а стоимость энтропийного кодирования данных режимов (например, отдельно) может быть основана на наименьшей стоимости бита при использовании шести способов (например, способ кодирования в коде VLC без прогнозирования, способ кодирования в коде VLCS1 без прогнозирования, способ кодирования в коде VLCS2 без прогнозирования, способ кодирования в коде VLC с прогнозированием, способ кодирования в коде VLCSI с прогнозированием и способ кодирования в коде VLCS2 с прогнозированием).
Процесс 2100 может продолжиться операцией 2108 «Выбор между совместным и раздельным кодированием данных разбиения и данных режимов на основе наименьшей оценочной стоимости бита при энтропийном кодировании», где может быть сделан выбор между совместным и раздельным кодированием данных разбиения и данных режимов на основе наименьшей оценочной стоимости бита при энтропийном кодировании. Например, наименьшая величина из оценочной стоимости бита при энтропийном кодировании для совместного кодирования данных разбиения и данных режимов и оценочной стоимости бита при энтропийном кодировании для раздельного кодирования данных разбиения и данных режимов может быть использована, чтобы выбрать совместное или раздельное кодирование данных разбиения и данных режимов.
Процесс 2100 может продолжиться операцией 2110 «Энтропийное кодирование, совместное или раздельное, данных разбиения и данных режимов и энтропийное кодирование данных «горизонтальный/вертикальный»», где данные разбиения и данные режимов могут быть энтропийно кодированы совместно или раздельно на основе выбранного способа энтропийного кодирования и где могут быть энтропийно кодированы данные «горизонтальный/вертикальный».
Процесс 2100 может продолжиться операцией 2112 «Энтропийное кодирование данных опорных типов», где могут быть энтропийно кодированы данные опорных типов. Например, данные опорных типов в режиме «inter» (при межкадровом прогнозировании) (например, опорных типов для единиц разбиения в режиме «inter») могут быть энтропийно кодированы с использованием способа наименьшей стоимости бита. В некоторых примерах данные опорных типов для Р-кадров могут быть кодированы на основе одного из трех способов кодирования (например, способа кодирования в коде VLC с прогнозированием по умолчанию, способа кодирования в коде VLC с модифицированным прогнозированием по умолчанию и способа кодирования в коде VLC с прогнозированием) и данные опорных типов в режиме «inter» для B/F-кадров могут быть кодированы на основе одного из семи способов кодирования (например, способа кодирования в коде VLC с прогнозированием по умолчанию, способа кодирования в коде VLC с модифицированным прогнозированием по умолчанию, способа кодирования в коде VLC без прогнозирования, способа кодирования в коде VLC с прогнозированием, способа кодирования в коде VLCS1 с прогнозированием, способа кодирования в коде VLC с прогнозированием подобно прогнозированию по умолчанию, и способа кодирования в коде VLCS1 с прогнозированием подобно прогнозированию по умолчанию), как обсуждается здесь далее. Например, в поток битов данных может быть для использования декодером вставлен индикатор способа кодирования с опорным типом блоков в режиме «inter», указывающий выбранный способ.
В некоторых примерах данные опорных типов для режима «multi» (например, опорных типов для единиц разбиения в режиме «multi») могут быть энтропийно кодированы путем выбора кодовой таблицы для кода переменной длины (VLC) для данных опорного типа блоков в режиме «multi» на основе числа опорных типов в режиме «multi» в составе данных опорных типов блоков в режиме «multi» (например, сколько опорных типов режима «multi» входят в состав данных опорных типов) и кодирование данных опорных типов для блоков в режиме «multi» на основе выбранной кодовой таблицы для кода переменной длины.
Процесс 2100 может продолжиться операцией 2114 «Передача на выход потока битов данных, содержащего энтропийно кодированные данные разбиений, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов», где на выход может быть передан поток битов данных, содержащий энтропийно кодированные данные разбиений, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов. Например, поток битов данных может быть передан кодирующим устройством 100 на выход в качестве выходного потока 111 битов данных.
Процесс 2100 может предложить способ кодирования видеоданных и может быть реализован, как обсуждается здесь, посредством видео кодирующего устройства, такого как кодирующее устройство 100.
Фиг. 22 представляет логическую схему, иллюстрирующую пример процесса, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Процесс 2200 может содержать одну или несколько операций, функций или действий, как иллюстрируют одна или несколько операций 2202, 2204, 2206, 2208 и/или 2210. Процесс 2200 может составлять по меньшей мере часть процесса кодирующей обработки видео следующего поколения. В качестве не ограничивающего примера процесс 2200 может составлять по меньшей мере часть процесса видео декодирования следующего поколения, осуществляемого системой 200 декодирования, показанной на фиг. 2.
Процесс 2200 может начинаться операцией 2202 «Прием кодированного потока битов данных», на которой может быть принят кодированный поток битов данных. Например, кодированный поток битов данных может быть принят посредством модуля декодирования, такого как модуль 202 адаптивного энтропийного декодирования в составе декодирующего устройства 200. Кодированный поток битов данных может содержать, например, заголовок совместного или раздельного кодирования, ассоциированный с данными разбиения и данными режимов, энтропийно кодированные данные разбиений и энтропийно кодированные данные режимов (либо совместно, либо раздельно), энтропийно кодированные данные «горизонтальный/вертикальный», энтропийно кодированные данные опорных типов, индикатор способа кодирования с опорным типом блоков в режиме «inter» и/или индекс события актуального режима для первого блока видеокадра.
Процесс 2200 может продолжиться операцией 2204 «Декодирование кодированного потока битов данных для определения заголовка совместного или раздельного кодирования для данных разбиения и данных режимов», где кодированный поток битов данных может быть декодирован для определения заголовка совместного или раздельного кодирования для данных разбиения и данных режимов для части видеокадра (например, среза или другой части видеокадра) или для видеокадра. Например, заголовок совместного или раздельного кодирования может указывать, кодированы ли соответствующие данные разбиения и данные режимов совместно или по отдельности.
Процесс 2200 может продолжиться операцией 2206 «Энтропийное декодирование данных разбиения и данных режима совместно и энтропийное декодирование данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного кодирования указывает совместное кодирование», где данные разбиения и данные режимов могут быть совместно энтропийно декодированы, когда заголовок совместного или раздельного кодирования указывает совместное кодирование, и где могут быть энтропийно декодированы данные «горизонтальный/вертикальный».
Процесс 2200 может продолжиться операцией 2208 «Энтропийное декодирование данных разбиения и данных режима по отдельности и энтропийное декодирование данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного кодирования указывает раздельное кодирование», где данные разбиения и данные режимов могут быть раздельно энтропийно декодированы, когда заголовок совместного или раздельного кодирования указывает раздельное кодирование, и где могут быть энтропийно декодированы данные «горизонтальный/вертикальный».
Процесс 2200 может продолжиться операцией 2210 «Энтропийное декодирование кодированного потока битов данных для определения данных опорных типов», где кодированный поток битов данных может быть энтропийно декодирован для определения данных опорных типов. В некоторых примерах декодирование данных опорных типов режима «inter» для Р-кадров может содержать определение из потока битов данных индикатора способа кодирования с опорным типом блоков в режиме «inter», указывающего по меньшей мере один из способов - способ кодирования на основе прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ кодирования на основе прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию или способ кодирования на основе прокси-кодирования в коде переменной длины с использованием прогнозирования, а декодирование данных опорных типов режима «inter» для B/F-кадров, может содержать определение из потока битов данных индикатора способа кодирования с опорным типом блоков в режиме «inter», указывающего по меньшей мере один из способов - способ кодирования на основе прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ кодирования на основе прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, способ кодирования на основе прокси-кодирования в коде переменной длины без использования прогнозирования, способ кодирования на основе прокси-кодирования в коде переменной длины с использованием прогнозирования, способ кодирования на основе прокси-кодирования в коде переменной длины с наиболее частым символом, кодированным посредством кодирования длин серий с использованием прогнозирования, или способ кодирования на основе прокси-кодирования в коде переменной длины с использованием прогнозирования, подобного прогнозированию по умолчанию, и энтропийное декодирование данных опорных типов для блоков в режиме «inter» (для Р- или B/F-кадров) на основе обозначенного индикатором способа.
В некоторых примерах данные опорных типов в режиме «multi» (например, опорных типов для единиц разбиения в режиме «multi») могут быть энтропийно декодированы посредством выбора кодовой таблицы кода переменной длины (VLC) для данных опорных типов блоков в режиме «multi» на основе числа опорных типов режима «multi» в составе данных об опорных типах блоков в режиме «multi» (например, как много опорных типов режима «multi» входят в состав данных опорных типов) и декодирование данных опорных типов блоков в режиме «multi» на основе кодовой таблицы кода переменной длины. Такой процесс может быть аналогичен процессу кодирования для данных опорных типов режима «multi».
Фиг. 23 представляет логическую схему, иллюстрирующую пример процесса, построенного в соответствии по меньшей мере с некоторыми вариантами реализации настоящего изобретения. Процесс 2300 может содержать одну или несколько операций, функций или акций, иллюстрируемых операциями 2301-2311. Процесс 2300 может составлять по меньшей мере часть процесса видео кодирующей обработки следующего поколения. В качестве неограничивающего примера процесс 2300 может составлять по меньшей мере часть процесса видео кодирования, осуществляемого системой 100 кодирования, показанной на фиг. 1.
Процесс 2300 может начинаться операцией 2301 «Ввод данных: разбиение (биты разбиения и информация гор/верт), режимы блоков, опорные типы блоков в режиме «inter» и опорные типы блоков в режиме «multi», где может происходить загрузка или ввод данных разбиения, данных «горизонтальный/вертикальный», данных режимов и данных опорных типов для видеокадра или части видеокадра. Например, могут быть прочитаны данные о режимах на уровне кадров и разбиений.
Процесс 2300 может продолжиться операцией 2302 «Оценка стоимости совместного кодирования битов разбиения и режима и стоимости кодирования информации гор./верт.», где могут быть определены стоимость бита при совместном кодировании данных разбиения (например, битов разбиения) и данных режимов, а также стоимость кодирования данных «горизонтальный/вертикальный». Например, может быть выполнено следующее: задание равного 0 (уровень плиток) начального уровня, сбор маски SM (разбиения, режимы): данные разбиения и режимы текущего кадра на текущем уровне, сбор информации HV («горизонтальный/вертикальный») для всех разбиений в SM; если длина маски SM равна 0 или 1, задание индекса таблицы кода VLC, равного 31; если длина маски SM больше 1 и уровень разбиения равен 0, оценка кодирования наиболее общего события способом кодирования длин серий и остального - в коде VLC; если длина маски SM больше 1 и уровень разбиения больше 0, тогда: оценка стоимости 32 разных таблиц кода VLC, выбор таблицы с наименьшим числом битов, учет 5 битового индексного кода VLC; учет информации HV на текущем уровне (кодирование битовой карты), и если в SM имеются разбиения, увеличение уровня разбиения на 1 и повторение перечисленных операций на более высоком уровне разбиения.
Процесс 2300 может также продолжиться от операции 2301 к операции 2303, которая может быть составлена из двух операций: «Оценка стоимости кодирования разбиений (битов разбиений и информации гор./верт.)» и «Оценка стоимости кодирования режимов». На операции «Оценка стоимости кодирования разбиений (битов разбиений и информации гор./верт.)» может быть определена стоимость бита при раздельном кодировании данных разбиений (например, битов разбиения) и данных режимов, а также может быть определена стоимость кодирования данных «горизонтальный/вертикальный». Например, для определения стоимости раздельного кодирования данных разбиения (и также кодирования данных гор./верт.) может быть выполнено следующее: задание равного 0 (уровень плиток) начального уровня, сбор маски S: разбиение текущего кадра на текущем уровне разбиения, сбор информации HV («горизонтальный/вертикальный») для разбиений S, оценка стоимости разбиений кодирования (S) на текущем уровне разбиений следующим образом: если длина S не больше 10, кодирование разбиений S с использованием битовой карты без каких-либо издержек - только длина разбиений S в качестве оценочной стоимости, в противном случае: оценка стоимости разбиений S, кодированных с использованием битовой карты, оценка стоимости разбиений S, кодированных с использованием длин серий инвертированных символов (табл.1), оценка стоимости разбиений S, кодированных с использованием инвертированного прокси-кодирования в коде VLC (табл. 2), оценка стоимости разбиений S, кодированных с использованием разностного прокси-кодирования в коде VLC (табл. 2), выбор способа кодирования разбиений S, дающего наименьшую стоимость бита, и учет стоимости выбранного способа плюс издержек способа, получение наилучшего способа кодирования для информации HV (прокси-кодирование в коде VLC или битовая карта), оценка битов для информации HV и суммирование оценок битов для разбиений S и информации HV в качестве конечной оценки стоимости разбиений.
На операции «Оценка стоимости кодирования режимов» может быть выполнена оценка стоимости (раздельного) энтропийного кодирования данных режимов. Например, может быть выполнена оценка стоимостей энтропийного кодирования данных режимов с использованием шести способов: способ кодирования в коде VLC без прогнозирования, способ кодирования в коде VLCS1 без прогнозирования, способ кодирования в коде VLCS2 без прогнозирования, способ кодирования в коде VLC с прогнозированием, способ кодирования в коде VLCS1 с прогнозированием и способ кодирования в коде VLCS2 с прогнозированием.
Например, для вариантов без прогнозирования может быть выполнено следующее. Оценка стоимости кодирования режимов на основе способа прокси-кодирования в коде VLC без прогнозирования посредством оценки всех кодовых групп кода VLC, подсчет битов для каждой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью и учет заголовка индекса стоимости для выбранного кода VLC. Оценка стоимости кодирования режимов без прогнозирования и использованием длин серий символов (уровень 1) (например, на основе способа прокси-кодирования в коде переменной длины с кодированием наиболее частого символа с применением длин серий символов) посредством оценки стоимости кодирования наиболее общего события с использованием кодирования длины серий символов, исключение этого события из группы событий, просмотр всех кодовых групп VLC, подсчет битов для каждой кодовой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью, учет стоимости индексного заголовка для выбранного кода VLC и суммирование стоимости кодирования с использованием длин серий символов и стоимости кодирования в коде VLC для получения суммарной оценочной стоимости для кодирования с использованием длин серий и без прогнозирования на уровне 1. Оценка стоимости кодирования режимов без прогнозирования и с применением длин серий символов (уровень 2) (например, на основе способа прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго по частоте наиболее частого символа с применением длин серий символов) посредством оценки стоимости кодирования наиболее общего события с использованием кодирования длин серий символов, исключение этого события из группы событий, оценка стоимости кодирования второго по частоте наиболее общего события с использованием кодирования длин серий символов, исключение этого события из группы событий, просмотр всех кодовых групп кода VLC, подсчет битов для каждой кодовой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью, учет стоимости индексного заголовка для выбранного кода VLC и суммирование двух стоимостей кодирования с использованием длин серий символов и стоимости кодирования в коде VLC для получения суммарной оценочной стоимости для кодирования с использованием длин серий и без прогнозирования на уровне 2.
В случаях с прогнозированием прогнозируемые величины режимов могут быть созданы на основе соседних режимов, и может быть выполнено следующее. Оценка стоимости режимов на основе способа прокси-кодирования в коде VLC с использованием прогнозирования посредством просмотра всех кодовых групп кода VLC, подсчет битов для каждой кодовой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью и учет стоимости индексного заголовка для выбранного кода VLC. Оценка стоимости кодирования режимов на основе прокси-кодирования в коде VLC с использованием прогнозирования и кодирования длин серий символов (уровень 1) (например, на основе способа прокси-кодирования в коде переменной длины с кодированием наиболее частого символа с применением длин серий символов) посредством оценки стоимости кодирования наиболее общего события с использованием кодирования длины серий символов, исключение этого события из группы событий, просмотр всех кодовых групп кода VLC, подсчет битов для каждой кодовой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью, учет стоимости индексного заголовка для выбранного кода VLC и суммирование стоимости кодирования с использованием длин серий символов и стоимости кодирования в коде VLC для получения суммарной оценочной стоимости для кодирования с использованием длин серий и с прогнозированием на уровне 1. Оценка стоимости кодирования режимов с прогнозированием и с применением длин серий символов (уровень 2) (например, на основе способа прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго по частоте наиболее частого символа с применением длин серий символов) посредством оценки стоимости кодирования наиболее общего события с использованием кодирования длин серий символов, исключение этого события из группы событий, оценка стоимости кодирования второго по частоте наиболее общего события с использованием кодирования длин серий символов, исключение этого события из группы событий, просмотр всех кодовых групп кода VLC, подсчет битов для каждой кодовой группы кода VLC, выбор кодовой группы кода VLC с минимальной стоимостью, учет стоимости индексного заголовка для выбранного кода VLC и суммирование двух стоимостей кодирования с использованием длин серий символов и стоимости кодирования в коде VLC для получения суммарной оценочной стоимости для кодирования с использованием длин серий и прогнозирования на уровне 2.
Здесь может быть определена одна из шести опций, которой соответствует наименьшее число битов, и если выбор сделан против совместного кодирования, может быть закодирован индексный заголовок выбранного способа (например, заголовок способа раздельного кодирования данных режимов), и могут быть энтропийно кодированы данные разбиений (вместе с данными «горизонтальный/вертикальный») и данные режимов.
Процесс 2300 может продолжиться от операций 2302 и 2303 к операции 2304 «Определение наилучшего способа кодирования данных разбиений и режимов и осуществление такого кодирования», где может быть найден наилучший способ кодирования данных разбиений и режимов (вместе с информацией «горизонтальный/вертикальный»). Например, в качестве наилучшего способа кодирования может быть выбран способ, которому соответствует наименьшая стоимость бита из совокупности величин, найденных в ходе операций 2302 и 2303.
Процесс 2300 может также продолжиться от операции 2301 к операции 2305 принятия решения «Р- или B/F-кадр?", где может быть определено, является ли текущий кадр Р-кадром или B/F-кадром.
Как показано, когда кадр является Р-кадром, процесс 2300 может продолжиться операцией 2308 «Оценка стоимости кодирования опорных типов для Р-кадра в режиме «inter», где стоимости битов при кодировании данных опорных типов в режиме «inter» могут быть оценены с использованием трех способов: способ кодирования в коде VLC с прогнозированием по умолчанию, способ кодирования в коде VLC с модифицированным прогнозированием по умолчанию и способ кодирования в коде VLC с прогнозированием. Например, может быть выполнено следующее.
Чтение опорных типов на уровне кадров для блоков в режиме «inter» и вычисление числа возможных событий для опорных типов в этом режиме «inter».
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с прогнозированием по умолчанию посредством выбора таблицы кода VLC на основе числа возможных событий и, для каждого опорного типа, создание прогноза, отталкиваясь от нескольких (до 3) соседних (например, соседних блоков или единиц разбиения) опорных типов, учитывая 1 бит издержек для индикации, что прогнозирование является правильным; в противном случае, если прогнозирование неправильное, учет разности прогнозов с использованием длины кодового слова из выбранной таблицы кода VLC.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с модифицированным прогнозированием по умолчанию посредством выбора таблицы кода VLC на основе числа возможных событий и, для каждого опорного типа, создание прогноза, отталкиваясь от нескольких (до 3) соседних (например, соседних блоков или единиц разбиения) опорных типов, аккумулирование 1 бита издержек для индикации правильности прогнозирования в одномерной (1d) маске PNP; в противном случае, если прогнозирование неправильное, учет разницы прогнозов с использованием длины кодового слова из выбранной таблицы кода VLC, оценка стоимости кодирования маски PNP способом прокси-кодирования в коде VLC (например, таблицы 0, 1, 2 и 3), выбор таблицы для прокси-кодирования в коде VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости кода VLC и стоимости маски PNP, кодированной в соответствии с выбранной таблицей для прокси-кодирования в коде VLC, для получения конечной оценочной стоимости.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с прогнозированием (например, полное прогнозирование или опережающее прогнозирование) посредством оценки глобального упорядочения событий опорных типов в текущем кадре путем вычисления реального глобального упорядочения событий опорных типов на основе статистики текущего кадра и определение упорядочения G, ближайшего к реальному, по кодовой таблице заранее вычисленных упорядочений событий, оценка стоимости кодирования разностей прогнозирования между опорными типами и прогнозируемыми опорными типами посредством выбора группы таблиц кода VLC на основе числа возможных событий опорных типов, оценка стоимости каждой таблицы кода VLC в выбранной группе, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
На основе выбранного способа (например, способа кодирования опорных типов, обладающего наименьшей стоимостью, из совокупности способов с прогнозированием по умолчанию, с модифицированным прогнозированием по умолчанию и прогнозированием (например, с полным или опережающим прогнозированием)), может быть кодирован заголовок (например, индикатор способа кодирования опорных типов для блоков в режиме «inter») и может быть энтропийно кодирована полезная нагрузка.
Когда кадр является B/F-кадром, процесс 2300 может продолжиться операцией 2309 «Оценка стоимости кодирования опорных типов для F-кадра в режиме «inter», где стоимость битов при кодировании данных опорных типов для B/F-кадров в режиме «inter» может быть оценена с использованием семи способов: способа кодирования в коде VLC с прогнозированием по умолчанию, способа кодирования в коде VLC с модифицированным прогнозированием по умолчанию, способа кодирования в коде VLC без прогнозирования, способа кодирования в коде VLCS1 с прогнозированием, способа кодирования в коде VLC с прогнозированием подобно прогнозированию по умолчанию и способа кодирования в коде VLCS1 с прогнозированием подобно прогнозированию по умолчанию. Например, может быть выполнено следующее.
Чтение опорных типов на уровне кадров для блоков в режиме «inter» и вычисление числа возможных событий для опорных типов в этом режиме «inter».
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с прогнозированием по умолчанию посредством выбора таблицы кода VLC на основе числа возможных событий и, для каждого опорного типа, создание прогноза, отталкиваясь от нескольких (до 3) соседних (например, соседних блоков или единиц разбиения) опорных типов, учитывая 1 бит издержек для индикации, что прогнозирование является правильным; в противном случае, если прогнозирование неправильное, учет разности прогнозов с использованием длины кодового слова из выбранной таблицы кода VLC.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с модифицированным прогнозированием по умолчанию посредством выбора таблицы кода VLC на основе числа возможных событий и, для каждого опорного типа, создание прогноза, отталкиваясь от нескольких (до 3) соседних (например, соседних блоков или единиц разбиения) опорных типов, аккумулирование 1 бита издержек для индикации правильности прогнозирования в одномерной (1d) маске PNP; в противном случае, если прогнозирование неправильное, учет разницы прогнозов с использованием длины кодового слова из выбранной таблицы кода VLC, оценка стоимости кодирования маски PNP способом прокси-кодирования в коде VLC (например, таблицы 0, 1, 2 и 3), выбор таблицы для прокси-кодирования в коде VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости кода VLC и стоимости маски PNP, кодированной в соответствии с выбранной таблицей для прокси-кодирования в коде VLC, для получения конечной оценочной стоимости.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC без прогнозирования посредством оценки стоимости для каждой таблицы кода VLC из группы таблиц кода VLC для кодирования опорных типов без прогнозирования, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
Для использования прогнозирования (например, полного прогнозирования или опережающего прогнозирования) оценка глобального упорядочения событий опорных типов в текущем кадре посредством вычисления реального глобального упорядочения событий опорных типов на основе статистики текущего кадра и определение упорядочения G, ближайшего к реальному, по кодовой таблице заранее вычисленных упорядочений событий, и прогнозирование опорных типов с использованием упорядочения G и соседних опорных типов.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLC с прогнозированием посредством оценки стоимости кодирования разностей прогнозирования между опорными типами и прогнозируемыми опорными типами путем выбора группы таблиц кода VLC на основе числа возможных событий опорных типов, оценки стоимости каждой таблицы кода VLC в выбранной группе, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLCS1 (например, с наиболее частым символом, кодированным способом кодирования длин серий символов с прогнозированием) с прогнозированием посредством оценки стоимости кодирования разностей прогнозирования между опорными типами и прогнозируемыми опорными типами, где разности прогнозирования, равные 0, кодируют способом кодирования длин серий символов путем выбора группы таблиц кода VLC на основе числа возможных событий опорных типов, оценки стоимости кодирования нулевых событий по сравнению с ненулевыми событиями способом кодирования длин серий символов, исключение 0 события из ряда событий для кодирования, оценки стоимости каждой таблицы кода VLC в выбранной группе, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
Оценка стоимости кодирования опорных типов на основе прокси-кодирования в коде VLC с прогнозированием по умолчанию посредством прогнозирования опорных типов с использованием упорядочения G и соседних опорных типов с использованием способа прогнозирования по умолчанию, оценки стоимости кодирования разностей прогнозирования между опорными типами и прогнозируемыми (прогнозирование типа прогнозирования по умолчанию) опорными типами путем выбора группы таблиц кода VLC на основе числа возможных событий опорных типов, оценки стоимости каждой таблицы кода VLC в выбранной группе, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
Оценка стоимости кодирования опорных типов на основе способа прокси-кодирования в коде VLCS1 с прогнозированием по умолчанию посредством оценки стоимости кодирования разностей прогнозирования между опорными типами и прогнозируемыми (прогнозирование подобно прогнозированию по умолчанию) опорными типами, где разности прогнозирования, равные 0, кодируют способом кодирования длин серий символов путем выбора группы таблиц кода VLC на основе числа возможных событий опорных типов, оценки стоимости кодирования нулевых событий по сравнению с ненулевыми событиями способом кодирования длин серий символов, оценки стоимости кодирования нулевых событий по сравнению с ненулевыми событиями способом кодирования длин серий символов, исключение 0 события из ряда событий для кодирования, оценки стоимости каждой таблицы кода VLC в выбранной группе, выбор таблицы кода VLC, которой соответствует наименьшая оценочная стоимость, и суммирование стоимости индексного заголовка в коде VLC со стоимостью выбранного кода VLC для получения суммарной оценки.
На основе выбранного способа (например, способа кодирования опорных типов, которому соответствует наименьшая стоимость) может быть кодирован заголовок (например, индикатор способа кодирования опорных типов блоков в режиме «inter») и может быть энтропийно кодирована полезная нагрузка.
Процесс 2300 может продолжиться от операции 2308 или 2309 к операции 2310 «Определение наилучшего способа кодирования опорных типов в режиме «inter» и осуществление кодирования», где может быть определен наилучший способ кодирования опорных типов в режиме «inter» (например, на основе наименьшей стоимости битов с использованием описанных способов) и могут быть энтропийно кодированы опорные типы в режиме «inter».
Процесс 2300 может также продолжиться от операции 2301 к операции 2306 «Выбор таблицы кода VLC на основе максимального числа опорных типов в режиме «multi», где таблица кода VLC может быть выбрана на основе максимального числа опорных типов в режиме «multi». Например, таблица кодирования в коде переменной длины может быть выбрана на основе данных опорных типов блоков в режиме «multi». В примерах Р-кадров может быть выполнено следующее: чтение опорных типов на уровне кадров в режиме «multi», сбор одномерного (1d) ряда второго опорного типа для всех блоков в режиме «multi», вычисление числа возможных событий для вторых опорных типов в режиме «multi», выбор таблицы с 2 событиями, если число событий не больше 2, в противном случае выбор таблицы кода VLC с 3 событиями, и (например, на операции 2307) кодирование каждого события опорных типов блоков в режиме «multi» посредством кодового слова из выбранной таблицы кода VLC. В примерах B/F-кадров может быть выполнено следующее: чтение опорных типов и под-режимов на уровне кадров для блоков в режиме «multi», сбор одномерного (1d) ряда второго опорного типа для всех блоков в режиме «multi», для которых под-режим обозначен 0, вычисление числа возможных событий для вторых опорных типов в режиме «multi», выбор группы таблиц кода VLC в соответствии с возможным числом событий, оценка стоимости каждой таблицы кода VLC из выбранной группы таблиц, выбор таблицы кода VLC, которой соответствует минимальная стоимость, и (например, на операции 2307) кодирование каждого события в режиме «multi» посредством кодового слова из выбранной таблицы кода VLC.
Процесс 2300 может продолжиться операцией 2307 «Выполнение кодирования опорных типов в режиме «multi», где, как обсуждается, опорные типы в режиме «multi» могут быть кодированы с использованием выбранного или найденного способа кодирования. Например, как обсуждается применительно к операциям 2306 и 2307, таблица кодирования в коде переменной длины может быть выбрана для данных опорных типов блоков в режиме «multi» на основе числа опорных типов для режима «multi» в составе данных опорных типов блоков в режиме «multi», после чего данные опорных типов блоков в режиме «multi» могут быть кодированы на основе таблицы кодирования в коде переменной длины.
Процесс 2300 может продолжиться от операций 2304, 2307 и 2310 операцией 2311 «Передача потока битов данных на выход», на которой энтропийно декодированные данные могут быть переданы в поток битов данных.
Как обсуждается, режимы и опорные типы могут быть энтропийно кодированы. Например, предлагаемое энтропийное кодирование может быть основано на сочетании кодирования длин серий символов, энтропийного прокси-кодирования в коде VLC и кодирования битовой карты (без сжатия). Далее приведены подробности энтропийного кодирования длин серий символов и прокси-кодирования в коде VLC.
Энтропийное кодирующее устройство для кодирования длин серий символов может оперировать с обычным потоком битов данных или с инвертированным потоком битов данных (например, где 0 и 1 «перевернуты»). Энтропийное кодирующее устройство для кодирования длин серий символов может (пытается) сжимать входящий поток битов данных посредством кодирования серий нулей. Такой способ кодирует каждую единицу (1) вместе с серией предшествующих нулей (0) посредством одного кодового слова. Если имеются больше 33 последовательных нулей, может быть кодирован символ перехода (escape (ESC)). После кодирования последней единицы (1) может быть передано кодовое слово конца блока (end of block (ЕОВ)). В таблице 1 приведены примеры кодовых слов и соответствующих адресов (адрес - 1 = серия нулей (0) предшествующих единице (1) (address - 1 = run of '0' that precedes a '1')) вместе с символом перехода (ESC) для серий длиннее 33 и слово конца блока (ЕОВ).
Устройство для энтропийного прокси-кодирования в коде VLC может заменять каждую тройку битов в потоке битов данных кодовым словом VLC. Оно может оперировать с обычным потоком битов данных или с инвертированным потоком (например, где 0 и 1 перевернуты). Следующие таблицы, совместно обозначенные таблица 2 показывают примеры кодовых таблиц.
В дополнение к режиму инвертированного потока битов данных в случае устройства кодирования в коде VLC может быть также введен режим дифференциального потока битов данных. В таких примерах первый бит потока остается, как он есть, а все остальные биты потока заменяются дифференциалами (по модулю 2) между текущим битом и непосредственно предшествующим ему битом. После формирования дифференциалов к полученному дифференциальному потоку битов данных может быть применено устройство для кодирования в коде VLC.
Как обсуждается, данные разбиений и данные режимов могут быть кодированы совместно или по отдельности. Фиг. 24 представляет диаграмму, иллюстрирующую пример разбиений и режимов 2401 для примера Р-кадра 2402 и фиг. 25 представляет схему иллюстрирующую пример разбиений и режимов 2501 для примера Р-кадра 2502. Фиг. 24 иллюстрирует разбиения и режимы 2401 для примера Р-кадра 2402. В примере, показанном на фиг. 24, Р-кадр 2402 может иметь квантователь, Qp, равный 8, и число порядка кадра (picture order count, РОС), равное 8. В примере, показанном на фиг. 25, Р-кадр 2502 может иметь квантователь, Qp, равный 32, и число порядка кадра, РОС, равное 8. Например, Р-кадры 2402 и 2502 могут быть примером кадров для «футбольной» тестовой последовательности. Способы, обсуждаемые применительно к фиг. 24 и 25 и к таблицам 3-12, могут быть ассоциированы с кодированием данных разбиений и данных режимов для Р-кадров, таких как, например, яркостные (Luma) Р-кадры.
При совместном кодировании данные разбиений и режимов блоков могут быть кодированы в качестве сегментов информации все вместе в качестве совокупности событий. Например, на каждом уровне дерева прогнозирования завершающий блок может иметь один из 5 типов: «внутрикадровый» (Intra), «пропуск» (Skip), «авто» (Auto), «межкадровый» (Inter) или «мульти» (Multi), тогда как если блок не завершается на этом уровне, он может быть объявлен типом «разбиение» (Split). Этот способ может иметь два режима (например, обозначенных посредством 1-битового дополнительного (издержки) переключателя). В первом режиме (например, простой режим) первый уровень может быть кодирован отдельно посредством серии символов, используемой для кодирования режима пропуска или режима «не-пропуска» (отсутствия пропуска) и одной таблицы кода VLC для кодирования всех прочих событий. Последующие уровни в простом режиме могут использовать фиксированную таблицу кода VLC для кодирования остальных событий. Кроме того, на каждом уровне, после кодирования режимов и разбиений, может быть кодирована дополнительная информация, которая может указывать, следует ли разбивать блоки горизонтально или вертикально (данные «горизонтальный/вертикальный» или информация HV). В простом режиме этого способа информацию HV кодируют в виде битовой карты (например, без сжатия). Второй режим (например, обычный или регулярный режим) может использовать группу таблиц кода VLC для представления каждого события на каждом уровне. Кроме того, на каждом уровне, после кодирования режимов и разбиений, может быть кодирована дополнительная информация, которая может указывать, следует ли разбивать блоки горизонтально или вертикально (данные «горизонтальный/вертикальный» или информация HV). В регулярном режиме способа кодирование информации HV осуществляется либо в виде битовой карты, либо способом прокси-кодирования в коде VLC, что приводит к 1 биту дополнительно (издержкам) для индикации битовой карты или прокси-кодирования в коде VLC.
При раздельном кодировании все разбиения дерева прогнозирования (например, данные разбиения) могут быть отделены от режимов блоков (например, данных режимов) и кодированы посредством устройства многоуровневого энтропийного кодирования. Например, процесс кодирования может содержать, для каждого уровня в дереве прогнозирования, накопление битов «разбиение/нет разбиения». В случае плиток размером 32×32 пикселя возможны до 6 уровней разбиения, а в случае плиток размером 64×64 возможны до 7 уровней разбиения, например. Каждый уровень кодируют посредством модуля энтропийного кодирования (например, базового модуля энтропийного кодирования). Например, базовый модуль энтропийного кодирования может работать на основе сочетания кодирования длин серий символов, энтропийного прокси-кодирования в коде VLC и кодирования битовой карты. Кодирование длин серий символов и энтропийное прокси-кодирование в коде VLC могут оперировать с обычным потоком битов данных, инвертированным потоком битов данных или дифференциальным потоком битов данных, что ведет к множеству различных под-способов (кодирование серий символов в обычном потоке битов данных, кодирование серий символов в инвертированном потоке битов данных, кодирование серий символов в дифференциальном потоке битов данных, прокси-кодирование в коде VLC обычного потока битов данных, прокси-кодирование в коде VLC инвертированного потока битов данных, прокси-кодирование в коде VLC дифференциального потока битов данных и/или кодирование битовой карты). Для индикации выбранного под-способа могут быть использованы 2-3 дополнительных переключающих бита (издержки).
Например, следующие дополнительные служебные биты (издержки) могут быть использованы для переключения между наиболее эффективными способами: (1) способ кодирования длин серий символов, (2) способ кодирования длин серий символов в инвертированном потоке битов данных, (3) способ прокси-кодирования в коде VLC, (4) способ прокси-кодирования в коде VLC инвертированного потока битов данных, (5) способ прокси-кодирования в коде VLC дифференциального потока битов данных и (6) способ кодирования посредством битовой карты.
Например, при кодировании режимов блоков в коде VLC (например, данных режимов) ряд сочетаний кода VLC могут быть построены на основе статистического анализа. По гистограмме может быть выбрано сочетание кода VLC, которому соответствует наименьшая стоимость бита, а индекс выбранного сочетания может быть кодирован в качестве заголовка. Затем режим каждого блока может быть кодирован соответствующим кодовым словом из выбранного набора кодов VLC. Следующая таблица показывает пример сочетаний кода VLC и соответствующих заголовков.
В некоторых примерах для более эффективного кодирования может быть использовано сочетание способов кодирования в коде VLC и кодирования длин серий символов. Например, в режиме «Skip уровень 1» и при кодировании способом VLC (например, способ прокси-кодирования в коде VLC в сочетании с кодированием наиболее общего события способом кодирования длин серий символов), наиболее общее событие может быть кодировано способом кодирования длин серий символов, а все остальные события могут быть кодированы в коде VLC. Способ кодирования длин серий символов, используемый для кодирования наиболее общего события (событие уровня 1), может быть аналогичен способу, именуемому здесь или в других местах описания способом энтропийного кодирования длин серий символов. Следующая таблица показывает пример таблиц кода VLC, используемых этим способом.
В некоторых примерах более эффективно продолжать и кодировать еще одно дополнительное событие способом кодирования длин серий символов (например, второе наиболее частое событие). При кодировании в коде VLC в режимах «Skip уровень 1» и «Skip уровень 2» (например, кодирование способом прокси-кодирования в коде VLC с кодированием самого общего события и второго самого общего события способом кодирования длин серий символов) два самых общих события могут быть кодированы способом кодирования длин серий символов, а все остальные события могут быть кодированы в коде VLC. Снова, способ кодирования длин серий символов, используемый для кодирования двух наиболее общих событий (события уровня 1 и уровня 2), может быть аналогичен способам энтропийного кодирования на основе кодирования длин серий символов, обсуждавшимся здесь. Следующая таблица показывает пример таблиц кода VLC, используемых этим способом.
Как обсуждается, при кодировании режимов блоков могут быть выполнены оценки стоимости битов для случаев с прогнозированием или без прогнозирования. Например, режимы блоков часто могут быть пространственно коррелированы, так что может быть предпочтительно создать механизм пространственного прогнозирования для уменьшения стоимости бита. Например, прогнозирование может быть выполнено с использованием режимов ранее декодированных соседних блоков, расположенных непосредственно слева, сверху, сверху-слева и сверху-справа от текущего блока.
В некоторых примерах прогнозирование может быть осуществлено следующим образом. Для каждого события может быть определено вероятностное упорядочение событий (режимов). Например, события режимов могут быть упорядочены от наиболее вероятного к наименее вероятному событию. Например, предположим, что для некоторого блока (или единицы разбиения) В определено, что наиболее вероятными являются блоки режима «Auto» (индекс 3), что блоки режима «Intra» (индекс 0) являются вторыми наиболее вероятными, что блоки режима «Inter» (индекс 4) являются третьими наиболее вероятными, что блоки режима «Multi» (5) являются четвертыми наиболее вероятными, что блоки режима «Skip» (1) являются пятыми наиболее вероятными и блоки режима «Split» (2) являются шестыми наиболее вероятными (например, наименее вероятными). Вероятностное упорядочение событий режимов может быть тогда определено как: 3, 0, 4, 5, 1, 2.
Если реальное событие в блоке В относится к режиму «Intra» (индекс 0), может быть кодирован индекс события «Intra» в локальном вероятностном упорядочении, который в этом примере равен 1. С другой стороны, если реальное событие в блоке В было на самом деле из режима «Auto» (индекс 3) (например, предполагаемое как наиболее вероятное событие), может быть кодирован индекс 0. В некоторых примерах прогнозирование (например, вероятностное упорядочение событий) может быть выключено. Например, если событие в блоке В относится к режиму «Skip» (индекс 1), может быть кодирован индекс 4, являющийся более высоким индексом. Например, если прогнозирование является хорошим, индексы, которые нужно кодировать, будут иметь распределение с несколькими пиками, где 0 является наиболее общим, 1 является вторым наиболее общим, 2 является третьим наиболее общим индексом и т.д. Согласно этому способу слова кода VLC назначают индексам, заданным на основе прогнозирования, а не реальным событиям.
Например, в таких случаях данные режимов (например, раздельное кодирование данных режимов) могут содержать определение вероятностного упорядочения событий, где возможные режимы упорядочены от наиболее вероятного до наименее вероятного режима, определение реального события режима в блоке видеокадра и кодирование реального события режима в виде индекса этого реального события в вероятностном упорядочении событий режимов.
Как обсуждается, вероятностное упорядочение событий режимов может быть использовано для кодирования данных режимов. Вероятностное упорядочение событий режимов (например, локализованное вероятностное упорядочение событий режимов) может быть сформировано следующим образом. Перед прогнозированием наиболее подходящее глобальное упорядочение событий может быть сформировано или выбрано из эмпирически найденной группы вероятных упорядочений, которые работают глобально (например, на блоках всего кадра). Под глобальным упорядочением можно, таким образом, понимать упорядочение, близко воспроизводящее статистику (гистограмму) режимов по всему кадру (или в последовательности кадров, или в аналогичном объекте). Наиболее подходящее глобальное упорядочение может быть выбрано и кодировано посредством небольшого кода VLC. В некоторых примерах следующие варианты глобального упорядочения (показаны вместе с их кодами VLC) могут быть выбраны из:
После того, как было задано глобальное упорядочение, может быть выполнено прогнозирование для каждого события (например, каждого блока или единицы разбиения). Для рассматриваемого конкретного блока или разбиения известные (например, ранее кодированные/декодированные) события в непосредственно соседствующих блоках или единицах разбиения могут быть помечены флагами. Например, к непосредственно соседствующим блокам могут относиться блоки, касающиеся границ текущего блока. Обычно группа таких соседних блоков может содержать ранее декодированные блоки слева, сверху, сверху-слева и иногда сверху-справа от текущего блока. События, отмеченные флагами, (например, события, возникающие в соседних блоках) образуют первую группу, тогда как остальные события (например, имеющиеся события, произошедшие не в соседних блоках) образуют вторую группу событий. Затем в каждой группе (например, в первой группе и во второй группе) события упорядочивают в соответствии с глобальным упорядочением. Реальное локализованное вероятностное упорядочение может быть тогда сформировано посредством конкатенации первой и второй групп событий.
Например, пусть глобальное упорядочение для рассматриваемого конкретного кадра имеет вид 4, 0, 1, 3, 5, 2. Далее, предположим, что для блока В соседние блоки имеют события режима «Auto» (индекс 3) и режима «Inter» (индекс 4). Тогда первая группа имеет вид (3, 4), а вторая группа (0, 1, 2, 5). Каждая группа может быть упорядочена посредством глобального упорядочения, так что эти группы приобретают вид (4, 3) и (0, 1, 5, 2), соответственно. После этого окончательное локализованное вероятностное упорядочение для блока В может быть сформировано посредством конкатенации первой и второй групп с образованием упорядочения 4, 3, 0, 1, 5, 2. Когда (локальное) вероятностное упорядочение сформировано, прогнозирование кодируют в виде индекса реального события в этом упорядочении, как обсуждается выше.
Как обсуждается, согласно способам прогнозирования вместо реальных событий (например, событий режима) могут быть кодированы индексы прогнозирования. Например, индексы могут иметь распределение с более острыми пиками и, вследствие этого, могут быть кодированы в коде VLC более эффективно. Пример такого случая (Qp=8) показан в следующей таблице:
Индексы прогнозирования могут быть кодированы подобно событиям путем выбора наиболее подходящего сочетания кода VLC из совокупности доступных сочетаний кода VLC. Например, следующие таблицы кодов VLC могут быть реализованы посредством описанного способа:
Как обсуждается здесь применительно к примерам без прогнозирования, в примерах с использованием прогнозирования может быть более эффективно кодировать наиболее общее событие (вероятный индекс 0 прогнозирования) посредством способа кодирования длин серий символов, такого как способ прогнозирования, «Skip уровень 1» и кодирования в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий с использованием прогнозирования). При использовании описанного ранее прогнозирования могут быть получены индексы прогнозирования для каждого блока (в составе видеокадра или части видеокадра или аналогичного объекта). По аналогии со случаем отсутствия прогнозирования (например, «Skip уровень 1» и кодирование в коде VLC), наиболее частый индекс может быть изолирован и кодирован способом энтропийного кодирования длин серий символов, как обсуждается здесь. Остальные индексы прогнозирования могут быть кодированы с использованием наилучшей имеющейся таблицы кода VLC из нескольких таких таблиц. Например, описываемый способ кодирования может быть реализован в виде следующих таблиц кода VLC:
В некоторых примерах (как в примерах без прогнозирования) может быть более эффективно продолжить и кодировать один дополнительный индекс прогнозирования посредством модуля кодирования длин серий символов (например. Второе наиболее частое событие). В примере с прогнозированием, режимом «Skip уровень 1» и «Skip уровень 2» и кодированием в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования), два наиболее общих индекса прогнозирования (например, события) могут быть кодированы способом кодирования длин серий символов, тогда как остальные индексы (например, события) могут быть кодированы в коде VLC. Способ кодирования длин серий символов может быть таким же или аналогичным обсуждаемому здесь способу энтропийному кодирования длин серий символов. Например, следующие таблицы кода VLC могут быть построены описываемым способом:
Как обсуждается, для определения стоимости наиболее эффективного кодирования может быть выбран наилучший из ранее описанных способов (например, способ, дающий наименьшую стоимость бита) и информация переключения может быть кодирована в качестве издержек (служебной информации). Например, кодирование данных режимов может быть основано на наименьшей стоимости битов, а поток битов данных может содержать заголовок совместного или раздельного кодирования и/или индикатор способа раздельного кодирования данных режимов, указывающий выбранный способ кодирования. Например, для переключения выбранного способа в декодирующем устройстве могут быть использованы следующие заголовки:
Как обсуждается, данные разбиений и данные режимов могут быть кодированы совместно или раздельно. Фиг. 26 представляет диаграмму, иллюстрирующую данные 2601 разбиений и режимов для примера B/F-кадра 2602, и фиг. 27 представляет диаграмму, иллюстрирующую данные 2701 разбиений и режимов для примера B/F-кадра 2702. Фиг. 26 иллюстрирует данные 2601 разбиений и режимов для, например, B/F-picture 2602. В примере, показанном на фиг. 26, B/F-кадр 2602 может иметь квантователь, Qp, равный 8, и число порядка кадра, РОС, равное 4. В примере, показанном на фиг. 27, B/F-кадр 2702 может иметь квантователь, Qp, равный 32, и число порядка кадра, РОС, равное 4. Например, F-кадры 2602 и 2702 могут быть примерами кадров для «футбольной» тестовой последовательности. Способы, обсуждаемые применительно к фиг. 26 и 27 и к таблицам 13-21, могут быть ассоциированы с кодированием данных разбиений и данных режимов для B/F-кадров, таких как, например, яркостные (Luma) B/F-кадры.
Как обсуждается выше применительно к Р-кадрам, при совместном кодировании B/F-кадров данные разбиений и режимов блоков могут быть кодированы в виде сегментов информации все вместе в качестве совокупности событий. Например, на каждом уровне дерева прогнозирования завершающий блок может иметь один из типов: «внутрикадровый» (Intra), «пропуск» (Skip), «авто» (Auto), «межкадровый» (Inter) или «мульти» (Multi), тогда как если блок не завершается на этом уровне, он может быть объявлен типом «разбиение» (Split). Этот способ может иметь два режима (например, обозначенных посредством 1-битового дополнительного (издержки) переключателя). В первом режиме (например, простой режим) первый уровень может быть кодирован отдельно посредством серии символов, используемой для кодирования режима пропуска или режима «не-пропуска» (отсутствия пропуска) и одной таблицы кода VLC для кодирования всех прочих событий. Последующие уровни в простом режиме могут использовать фиксированную таблицу кода VLC для кодирования остальных событий. Кроме того, на каждом уровне, после кодирования режимов и разбиений, может быть кодирована дополнительная информация, которая может указывать, следует ли разбивать блоки горизонтально или вертикально (данные «горизонтальный/вертикальный» или информация HV). В простом режиме этого способа информацию HV кодируют в виде битовой карты (например, без сжатия). Второй режим (например, обычный или регулярный режим) может использовать группу таблиц кода VLC для представления каждого события на каждом уровне. Кроме того, на каждом уровне, после кодирования режимов и разбиений, может быть кодирована дополнительная информация, которая может указывать, следует ли разбивать блоки горизонтально или вертикально (данные «горизонтальный/вертикальный» или информация HV). В регулярном режиме способа кодирование информации HV осуществляется либо в виде битовой карты, либо способом прокси-кодирования в коде VLC, что приводит к 1 биту дополнительно (издержкам) для индикации битовой карты или прокси-кодирования в коде VLC.
Так же, как обсуждается выше применительно к Р-кадрам, при раздельном кодировании B/F-кадров все разбиения дерева прогнозирования (например, данные разбиения) могут быть отделены от режимов блоков (например, данных режимов) и кодированы посредством устройства многоуровневого энтропийного кодирования. Например, процесс кодирования может содержать, для каждого уровня в дереве прогнозирования, накопление битов «разбиение/нет разбиения». В случае плиток размером 32×32 пикселя возможны до 6 уровней разбиения, а в случае плиток размером 64×64 возможны до 7 уровней разбиения, например. Каждый уровень кодируют посредством модуля энтропийного кодирования (например, базового модуля энтропийного кодирования). Например, базовый модуль энтропийного кодирования может работать на основе сочетания способов кодирования длин серий символов, энтропийного прокси-кодирования в коде VLC и кодирования битовой карты. Способ кодирования длин серий символов и способ энтропийного прокси-кодирования в коде VLC могут оперировать с обычным потоком битов данных, инвертированным потоком битов данных или дифференциальным потоком битов данных, что ведет к множеству различных под-способов (кодирование серий символов в обычном потоке битов данных, кодирование серий символов в инвертированном потоке битов данных, кодирование серий символов в дифференциальном потоке битов данных, прокси-кодирование в коде VLC обычного потока битов данных, прокси-кодирование в коде VLC инвертированного потока битов данных, прокси-кодирование в коде VLC дифференциального потока битов данных и/или кодирование битовой карты). Для индикации выбранного под-способа могут быть использованы 2-3 дополнительных переключающих бита (издержки).
Например, следующие дополнительные служебные биты (издержки) могут быть использованы для переключения между наиболее эффективными способами: (1) способ кодирования длин серий символов, (2) способ кодирования длин серий символов в инвертированном потоке битов данных, (3) способ прокси-кодирования в коде VLC, (4) способ прокси-кодирования в коде VLC инвертированного потока битов данных, (5) способ прокси-кодирования в коде VLC дифференциального потока битов данных и (6) способ кодирования битовой карты, как показано выше со ссылками на таблицу 3.
Например, при кодировании режимов блоков в коде VLC (например, данных режимов) ряд сочетаний кода VLC могут быть построены на основе статистического анализа. По гистограмме может быть выбрано сочетание кода VLC, которому соответствует наименьшая стоимость бита, а индекс выбранного сочетания может быть кодирован в качестве заголовка. Затем режим каждого блока может быть кодирован соответствующим кодовым словом из выбранного набора кодов VLC. Следующая таблица показывает пример сочетаний кода VLC и соответствующих заголовков.
В некоторых примерах для более эффективного кодирования может быть использовано сочетание способа кодирования в коде VLC и способа кодирования длин серий символов. Например, в режиме «Skip уровень 1» и при кодировании способом VLC (например, способ прокси-кодирования в коде VLC в сочетании с кодированием наиболее общего события способом кодирования длин серий символов), наиболее общее событие может быть кодировано способом кодирования длин серий символов, а все остальные события могут быть кодированы в коде VLC. Способ кодирования длин серий символов, используемый для кодирования наиболее общего события (событие уровня 1), может быть аналогичен способу, именуемому здесь или в других местах описания способом энтропийного кодирования длин серий символов. Следующая таблица показывает пример таблиц кода VLC, используемых этим способом.
В некоторых примерах более эффективно продолжить и кодировать одно дополнительное событие (например, второе наиболее частое событие) способом кодирования длин серий символов. При использовании режимов «Skip уровень 1» и «Skip уровень 2» и способа кодирования в коде VLC (например, способ прокси-кодирования в коде VLC в сочетании с кодированием наиболее общего события и второго наиболее общего события способом кодирования длин серий символов) два наиболее общих события могут быть кодированы способом кодирования длин серий символов, а все остальные события могут быть кодированы в коде VLC. Снова способ кодирования длин серий символов, используемый для кодирования двух наиболее общих событий (события уровня 1 и уровня 2), может быть аналогичен способам энтропийного кодирования длин серий символов, обсуждаемым здесь. Следующая таблица показывает пример таблиц кода VLC, используемых этим способом.
Как обсуждается, при кодировании режимов блоков могут быть выполнены оценки стоимости битов для случаев с прогнозированием или без прогнозирования. Например, режимы блоков часто могут быть пространственно коррелированы, так что может быть предпочтительно создать механизм пространственного прогнозирования для уменьшения стоимости бита. Например, прогнозирование может быть выполнено с использованием режимов ранее декодированных соседних блоков, расположенных непосредственно слева, сверху, сверху-слева и сверху-справа от текущего блока.
В некоторых примерах прогнозирование может быть осуществлено следующим образом, как обсуждается выше применительно к Р-кадрам: для каждого события может быть определено вероятностное упорядочение событий режимов (например, события режимов могут быть упорядочены от наиболее вероятного к наименее вероятному событию). Как обсуждается, реальное событие в блоке может быть кодировано на основе индекса этого события в упорядочении событий, и кодовые слова кода VLC могут быть назначены этим индексам на основе прогнозирования, а не реальным событиям. Например, в таких примерах данные режимов (например, отдельно кодируемые данные режимов) могут содержать определение вероятностного упорядочения событий режимов, где возможные режимы упорядочены от наиболее вероятного к наименее вероятному режиму, определение реального события режима в блоке видеокадра и кодирование этого реального события режима в виде индекса этого реального события режима в вероятностном упорядочении событий режимов.
Как обсуждается, вероятностное упорядочение событий режимов может быть использовано для кодирования данных режимов. Вероятностное упорядочение событий режимов (например, локализованное вероятностное упорядочение событий режимов) может быть сформировано, как обсуждается выше применительно к Р-кадрам: перед прогнозированием наиболее подходящее глобальное упорядочение событий может быть сформировано или выбрано из эмпирически найденной группы вероятных упорядочений, которые работают глобально (например, на блоках всего кадра), например, наиболее подходящее глобальное упорядочение может быть выбрано и кодировано посредством небольшого кода VLC. В некоторых примерах следующие варианты глобального упорядочения (показаны вместе с их кодами VLC) могут быть выбраны из:
Как обсуждается выше, после того, как было задано глобальное упорядочение, может быть выполнено прогнозирование для каждого события (например, каждого блока или единицы разбиения). Для рассматриваемого конкретного блока или разбиения известные (например, ранее кодированные/декодированные) события в непосредственно соседствующих блоках или единицах разбиения могут быть помечены флагами. Например, к непосредственно соседствующим блокам могут относиться блоки, касающиеся границ текущего блока. Обычно группа таких соседних блоков может содержать ранее декодированные блоки слева, сверху, сверху-слева и иногда сверху-справа от текущего блока. События, отмеченные флагами, (например, события, возникающие в соседних блоках) образуют первую группу, тогда как остальные события (например, имеющиеся события, произошедшие не в соседних блоках) образуют вторую группу событий. Затем в каждой группе (например, в первой группе и во второй группе) события упорядочивают в соответствии с глобальным упорядочением. Реальное локализованное вероятностное упорядочение может быть тогда сформировано посредством конкатенации первой и второй групп событий.
Как обсуждается, согласно способам прогнозирования вместо реальных событий (например, событий режима) могут быть кодированы индексы прогнозирования. Например, индексы могут иметь распределение с более острыми пиками и, вследствие этого, могут быть кодированы в коде VLC более эффективно. Пример такого случая (Qp=8) показан в следующей таблице:
В этом случае прогнозирование обладает более острыми пиками, что дает лучшее сжатие. Индексы прогнозирования могут быть кодированы подобно событиям путем выбора наиболее подходящего сочетания кода VLC из совокупности доступных сочетаний кода VLC. Например, следующие таблицы кодов VLC могут быть реализованы посредством описанного способа:
Как обсуждается здесь применительно к примерам без прогнозирования, в примерах с использованием прогнозирования может быть более эффективно кодировать наиболее общее событие (вероятный индекс 0 прогнозирования) посредством способа кодирования длин серий символов, такого как способ прогнозирования, «Skip уровень 1» и кодирования в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий с использованием прогнозирования). При использовании описанного ранее прогнозирования могут быть получены индексы прогнозирования для каждого блока (в составе видеокадра или части видеокадра или аналогичного объекта). По аналогии со случаем отсутствия прогнозирования (например, «Skip уровень 1» и кодирование в коде VLC), наиболее частый индекс может быть изолирован и кодирован способом энтропийного кодирования длин серий символов, как обсуждается здесь. Остальные индексы прогнозирования могут быть кодированы с использованием наилучшей имеющейся таблицы кода VLC из нескольких таких таблиц. Например, описываемый способ кодирования может быть реализован в виде следующих таблиц кода VLC:
В некоторых примерах (как в примерах без прогнозирования) может быть более эффективно продолжить и кодировать один дополнительный индекс прогнозирования посредством модуля кодирования длин серий символов (например, второе наиболее частое событие). В примере с прогнозированием, режимом «Skip уровень 1» и «Skip уровень 2» и кодированием в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования), два наиболее общих индекса прогнозирования (например, события) могут быть кодированы способом кодирования длин серий символов, тогда как остальные индексы (например, события) могут быть кодированы в коде VLC. Способ кодирования длин серий символов может быть таким же или аналогичным обсуждаемому здесь способу энтропийного кодирования длин серий символов. Например, следующие таблицы кода VLC могут быть построены описываемым способом:
Как обсуждается, для определения стоимости наиболее эффективного кодирования может быть выбран наилучший из ранее описанных способов (например, способ, дающий наименьшую стоимость бита), и информация переключения может быть кодирована в качестве издержек (служебной информации). Например, кодирование данных режимов может быть основано на наименьшей стоимости битов, а поток битов данных может содержать заголовок совместного или раздельного кодирования и/или индикатор способа раздельного кодирования данных режимов, указывающий выбранный способ кодирования. Например, для переключения выбранного способа в декодирующем устройстве могут быть использованы следующие заголовки:
Как обсуждается, данные опорных типов блоков в режиме «inter» могут быть кодированы путем выбора способа кодирования, обеспечивающего наименьшую стоимость бита, (например, из трех способов для Р-кадров и из семи способов для B/F-кадров) и кодирования данных опорных типов блоков в режиме «inter» с использованием выбранного способа кодирования. Фиг. 28 представляет диаграмму, иллюстрирующую пример 2801 опорных типов блоков в режиме «inter» для примера Р-кадра 2802, и фиг. 29 представляет диаграмму, иллюстрирующую пример 2901 опорных типов блоков в режиме «inter» для примера Р-кадра 2902. Фиг. 28 иллюстрирует пример 2801 опорных типов блоков в режиме «inter» для примера Р-кадра 2802. В примере, показанном на фиг. 28, Р-кадр 2802 может иметь квантователь, Qp, равный 8, и число порядка кадра, РОС, равное 8. В примере, показанном на фиг. 29, Р-кадр 2902 может иметь квантователь, Qp, равный 32, и число порядка кадра, РОС, равное 8. Например, Р-кадры 2802 и 2902 могут быть примерами кадров для «футбольной» тестовой последовательности. Способы, обсуждаемые применительно к фиг. 28 и 29 и к таблицам 22-30, могут быть ассоциированы с кодированием опорных типов блоков в режиме «inter» для Р-кадров.
Как обсуждается, в некоторых примерах для кодирования опорных типов блоков в режиме «inter» для Р-кадров могут быть рассмотрены три способа: способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию и способ прокси-кодирования в коде переменной длины с использованием прогнозирования. В других примерах могут быть рассмотрена другая тройка способов и/или может рассмотрено большее число способов. Далее обсуждаются разнообразные способы кодирования, так что любой или все эти способы могут быть рассмотрены и оценены для определения наиболее эффективного способа кодирования.
Например, прогнозирование по умолчанию может представлять собой упрощенный способ прогнозирования. Например, можно предположить, что частоты событий располагаются в порядке убывания, так что задача прогнозирования и назначения кода VLC может быть упрощена. При таком подходе прогнозирование может быть осуществлено путем исследования соседей текущего блока (например, верхнего, левого и верхнего-левого соседей текущего блока). Способ прогнозирования может выбрать одно прогнозируемое значение для текущего блока. Если прогнозируемое и реальное значения для текущего блока равны, один бит (например, '0') может быть потрачен для сигнализации, что прогнозирование было успешным. Если прогнозирование не было успешным, тогда после 1-битовых издержек (служебной информации) (например, '1'), может быть выбран код VLC для представления реального значения блока. Отметим, что число возможных величин для реального значения может быть, в этот момент, на единицу меньше, поскольку прогнозируемое значение может быть исключено из группы возможных событий. Например, могут быть четыре используемых таблицы кодов VLC, а переключение может осуществляться автоматически на основе индекса кадра следующим образом:
При модифицированном прогнозировании по умолчанию может быть использован аналогичный способ, но биты издержек, означающие, было ли прогнозирование правильным, могут быть собраны в битовой маске, которая может быть кодирована способом прокси-кодирования в коде VLC с использованием выбранной таблицы.
В некоторых примерах для кодирования данных опорных типов блоков в режиме «inter» может быть рассмотрен и/или применен способ кодирования с использованием только кода VLC. Например, согласно способу использования только кода VLC ряд сочетаний кода VLC может быть построен на основе статистического анализа. Для конкретной гистограммы может быть выбрано сочетание кода VLC, которому соответствует наименьшая стоимость бита, а индекс выбора может быть кодирован в заголовке. В таких примерах каждый опорный тип может быть кодирован соответствующим кодовым словом из выбранной группы кодов VLC. Следующая таблица показывает пример сочетаний кода VLC и соответствующих заголовков:
В некоторых примерах может быть рассмотрен и/или применен способ кодирования в режиме «Skip уровень 1» и кодирование в коде VLC (например, способ прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов) для кодирования данных опорных типов блоков в режиме «inter». Например, для более эффективного кодирования может быть использовано сочетание кодирования в коде VLC и кодирования длин серий символов (например, режим «Skip уровень 1» и кодирование способом VLC), так что наиболее общее событие кодируют способом кодирования длин серий символов, а все остальные события кодируют в коде VLC. Способ кодирования длин серий символов, используемый для кодирования наиболее общего события (событие уровня 1), может быть аналогичен способам, представляющим собой способы энтропийного кодирования длин серий символов, описанные ранее. Следующая таблица показывает пример таблиц кода VLC, используемых этим способом:
В некоторых примерах может быть использовано прогнозирование (например, полное прогнозирование или опережающее прогнозирование). Например, опорные типы блоков в режиме «inter» могут быть пространственно коррелированы, так что может быть предпочтительно создать механизм пространственного прогнозирования для уменьшения стоимости бита. Например, прогнозирование может быть осуществлено с использованием режимов или опорных типов предварительно известных (например, ранее декодированных) соседних блоков, расположенных непосредственно слева, сверху, сверху-слева и сверху-справа от текущего блока.
Например, прогнозирование может быть выполнено следующим образом. Для каждого события формируют вероятностное упорядочение событий, например, события могут быть упорядочены от наиболее вероятного к наименее вероятному событию. Например, предположим, что для некоторого блока В в режиме «inter» мы определили, что опорные типы Past SR2 (индекс 3) являются наиболее вероятными, тогда опорные типы Past Р (индекс 0) являются вторыми наиболее вероятными, а затем следуют опорные типы Past SR3 (индекс 4), Past GMC (5), Past-Past Р (1), Past SRI (2) и Past Gain (6) (так что событие Past Gain является наименее вероятным). Этот пример дает вероятностное упорядочение 3, 0, 4, 5, 1, 2, 6. Если реальное событие в блоке В является событием Past Р (индекс 0), может быть кодирован индекс события Past Р в локальном вероятностном упорядочении, который в этом примере равен 1. Если реальное событие в блоке В было действительно событием Past SR2 (индекс 3), которое ожидалось в качестве наиболее вероятного события, может быть кодирован индекс 0. Если прогнозирование является менее точным, например, если событие в блоке В представляет собой событие Past Gain (индекс 6), тогда может быть кодировано число 6, что является более высокой величиной индекса. Если прогнозирование является точным, индексы, которые нужно кодировать, имеют острое распределение, где 0 является наиболее общей величиной, 1 является второй наиболее общей величиной, 2 является третьей наиболее общей величиной и т.д. Поэтому, согласно рассматриваемому способу кодовые слова VLC могут быть назначены индексам на основе прогнозирования, а не реальным событиям.
Локализованное вероятностное упорядочение для каждого события может быть определено следующим образом. Перед прогнозированием наиболее подходящее глобальное упорядочение событий может быть сформировано или выбрано из эмпирически найденной группы вероятных упорядочений, которые работают глобально (например, на блоках всего кадра). Под глобальным упорядочением можно, таким образом, понимать упорядочение, близко воспроизводящее статистику (гистограмму) режимов по всему кадру. Наиболее подходящее глобальное упорядочение может быть выбрано и кодировано посредством небольшого кода VLC. В некоторых примерах следующие варианты глобального упорядочения (показаны вместе с их кодами VLC) могут быть выбраны из:
После того, как было задано глобальное упорядочение, может быть выполнено прогнозирование для каждого события (блока). Например, для рассматриваемого конкретного блока или разбиения известные (например, ранее кодированные/декодированные) события в непосредственно соседствующих блоках могут быть помечены флагами. К непосредственно соседствующим блокам могут относиться блоки, касающиеся границ текущего блока. Например, группа таких соседних блоков может содержать ранее декодированные блоки слева, сверху, сверху-слева и иногда сверху-справа от текущего блока. События, отмеченные флагами, (например, события, происходящие в соседних блоках) могут составлять первую группу, тогда как остальные события (например, события, произошедшие не в соседних блоках) могут составлять вторую группу событий. В каждой группе события могут быть упорядочены в соответствии с глобальным упорядочением. Реальное локализованное вероятностное упорядочение может быть тогда сформировано посредством конкатенации первой и второй групп событий. Например, пусть глобальное упорядочение для рассматриваемого конкретного кадра имеет вид 4, 0, 1, 3, 5, 2. Далее, предположим, что для блока В соседние блоки имеют события Past SR2 (индекс 3) и Past SR3 (индекс 4). Тогда первая группа имеет вид (3, 4), а вторая группа (0, 1, 2, 5, 6). Каждая группа может быть упорядочена посредством глобального упорядочения, так что эти группы приобретают вид (4, 3) и (0, 1, 5, 2, 6), соответственно. Окончательное локализованное вероятностное упорядочение для блока В поэтому имеет вид 4, 3, 0, 1, 5, 2, 6. Когда локальное вероятностное упорядочение сформировано, прогнозирование кодируют в виде индекса реального события в этом упорядочении, как обсуждается выше.
Как обсуждается, согласно способу прогнозирования вместо реальных событий могут быть кодированы индексы прогнозирования. Индексы могут иметь распределение с более острыми пиками и, вследствие этого, могут быть кодированы в коде VLC более эффективно. Индексы прогнозирования могут быть кодированы посредством выбора наиболее подходящего сочетания кода VLC из совокупности возможных сочетаний кода VLC. Например, посредством этого способа могут быть реализованы следующие таблицы кода VLC:
В некоторых примерах может быть использовано прогнозирование (например, полное прогнозирование или опережающее прогнозирование) с кодированием в режиме «Skip уровень 1» и в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов). В некоторых примерах может более эффективно кодировать наиболее общее событие (вероятный индекс прогнозирования равен 0) способом кодирования длин серий символов. Например, способ кодирования с прогнозированием в режиме «Skip уровень 1» и коде VLC может использовать прогнозирование, описанное выше, для получения прогнозируемых индексов для каждого блока. Наиболее частый индекс может быть изолирован и кодирован способом кодирования длин серий символов, обсуждаемым здесь, а остальные индексы прогнозирования могут быть использованы наилучшие из имеющихся таблиц кода VLC. Например, такие способы могут использовать следующие кодовые таблицы VLC:
Как обсуждается выше, в некоторых примерах может быть использовано прогнозирование по умолчанию. Такое прогнозирование по умолчанию может быть использовано с кодом VLC (например, способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию). Примеры сочетаний кода VLC и ассоциированных заголовков кода VLC для таких способов приведены в следующей таблице:
В некоторых примерах может быть использовано прогнозирование по умолчанию с кодированием в режиме «Skip уровень 1» и в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов). Примеры сочетаний кода VLC и ассоциированных с ними заголовков кода VLC для таких способов могут соответствовать следующей таблице:
Для определения наиболее эффективного способа кодирования могут для рассмотрения быть выбраны все описываемые здесь способы или наилучший из них. Например, для простоты реализации могут быть рассмотрены и оценены только некоторые из описываемых здесь способов. В других вариантах могут быть рассмотрены и оценены все описываемые здесь способы. В любом случае выбранный способ может быть обозначен посредством издержек (служебной информации), таких как индикатор способа кодирования опорных типов блоков в режиме «inter» или другой подобный индикатор. В следующей таблице приведены примеры заголовков, используемых, когда доступны семь способов:
Как обсуждается, данные опорных типов блоков в режиме «inter» могут быть кодированы путем выбора способа кодирования, обеспечивающего наименьшую стоимость бита, (например, из трех способов для Р-кадров и из семи способов для B/F-кадров) и кодирования данных опорных типов блоков в режиме «inter» с использованием выбранного способа кодирования. Фиг. 30 представляет диаграмму, иллюстрирующую пример 3001 опорных типов блоков в режиме «inter» для примера B/F-кадра 3002, и фиг. 31 представляет диаграмму, иллюстрирующую пример 3101 опорных типов блоков в режиме «inter» для примера B/F-кадра 3102. Фиг. 30 иллюстрирует пример 3001 опорных типов блоков в режиме «inter» для примера B/F-кадра 3002. В примере, показанном на фиг. 30, B/F-кадр 3002 может иметь квантователь, Qp, равный 8. В примере, показанном на фиг. 31, B/F-кадр 3102 может иметь квантователь, Qp, равный 32. Например, B/F-кадры 3002 и 3102 могут быть примерами кадров для «футбольной» тестовой последовательности. Способы, обсуждаемые применительно к фиг. 30 и 31 и к таблицам 21-38, могут быть ассоциированы с кодированием опорных типов блоков в режиме «inter» для B/F-кадров.
Как обсуждается, в некоторых примерах для кодирования опорных типов блоков в режиме «inter» для B/F-кадров могут быть рассмотрены семь способов: способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины без использования прогнозирования, способ прокси-кодирования в коде переменной длины с использованием прогнозирования, способ прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов и с использованием прогнозирования, способ прокси-кодирования в коде переменной длины с использованием прогнозирования подобно прогнозированию по умолчанию и способ прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов и с использованием прогнозирования подобно прогнозированию по умолчанию. В других примерах может быть рассмотрено подмножество перечисленных способов и/или может рассмотрено большее число способов.
Например, прогнозирование по умолчанию может представлять собой упрощенный способ прогнозирования. Например, можно предположить, что частоты событий располагаются в порядке убывания, так что задача прогнозирования и назначения кода VLC может быть упрощена. При таком подходе прогнозирование может быть осуществлено путем исследования соседей текущего блока (например, верхнего, левого и верхнего-левого соседей текущего блока). Способ прогнозирования может выбрать одно прогнозируемое значение для текущего блока. Если прогнозируемое и реальное значения для текущего блока равны, один бит (например, '0') может быть потрачен для сигнализации, что прогнозирование было успешным. Если прогнозирование не было успешным, тогда после 1-битовых издержек (служебной информации) (например, '1'), может быть выбран код VLC для представления реального значения блока. Отметим, что число возможных величин для реального значения может быть, в этот момент, на единицу меньше, поскольку прогнозируемое значение может быть исключено из группы возможных событий. Например, могут быть две используемых таблицы кодов VLC, а переключение может осуществляться автоматически на основе индекса кадра следующим образом:
При модифицированном прогнозировании по умолчанию может быть использован аналогичный способ, но биты издержек, означающие, было ли прогнозирование правильным, могут быть собраны в битовой маске, которая может быть кодирована способом прокси-кодирования в коде VLC с использованием выбранной таблицы.
В некоторых примерах для кодирования данных опорных типов блоков в режиме «inter» может быть рассмотрен и/или применен способ кодирования с использованием только кода VLC (например, способ прокси-кодирования в коде переменной длины без использования прогнозирования). Например, согласно способу использования только кода VLC ряд сочетаний кода VLC может быть построен на основе статистического анализа. Для конкретной гистограммы может быть выбрано сочетание кода VLC, которому соответствует наименьшая стоимость бита, а индекс выбора может быть кодирован в заголовке. В таких примерах каждый опорный тип может быть кодирован соответствующим кодовым словом из выбранной группы кодов VLC. Следующая таблица показывает пример сочетаний кода VLC и соответствующих заголовков:
В некоторых примерах может быть использовано прогнозирование (например, полное прогнозирование или опережающее прогнозирование). Например, опорные типы блоков в режиме «inter» могут быть пространственно коррелированны, так что может быть предпочтительно создать механизм пространственного прогнозирования для уменьшения стоимости бита. Например, прогнозирование может быть осуществлено с использованием режимов или опорных типов предварительно известных (например, ранее декодированных) соседних блоков, расположенных непосредственно слева, сверху, сверху-слева и сверху-справа от текущего блока.
Например, прогнозирование может быть выполнено следующим образом. Для каждого события формируют вероятностное упорядочение событий, например, события могут быть упорядочены от наиболее вероятного к наименее вероятному событию, а реальное событие может быть кодировано как индекс, присвоенный этому событию в упорядоченной последовательности. Поэтому, согласно рассматриваемому способу кодовые слова VLC могут быть назначены индексам на основе прогнозирования, а не реальным событиям.
Как обсуждается, локализованное вероятностное упорядочение для каждого события может быть определено следующим образом. Перед прогнозированием наиболее подходящее глобальное упорядочение событий может быть сформировано или выбрано из эмпирически найденной группы вероятных упорядочений, которые работают глобально (например, на блоках всего кадра). Под глобальным упорядочением можно, таким образом, понимать упорядочение, близко воспроизводящее статистику (гистограмму) режимов по всему кадру. Наиболее подходящее глобальное упорядочение может быть выбрано и кодировано посредством небольшого кода VLC. В некоторых примерах следующие варианты глобального упорядочения (показаны вместе с их кодами VLC) могут быть выбраны из:
После того, как было задано глобальное упорядочение, может быть выполнено прогнозирование для каждого события (блока). Например, для рассматриваемого конкретного блока все известные (например, ранее кодированные/декодированные) события в непосредственно соседствующих блоках могут быть помечены флагами. К непосредственно соседствующим блокам могут относиться блоки, касающиеся границ текущего блока. Например, группа таких соседних блоков может содержать ранее декодированные блоки слева, сверху, сверху-слева и иногда сверху-справа от текущего блока. События, отмеченные флагами, (например, события, возникающие в соседних блоках) могут составлять первую группу, тогда как остальные события (например, события, произошедшие не в соседних блоках) могут составлять вторую группу событий. В каждой группе события могут быть упорядочены в соответствии с глобальным упорядочением. Реальное локализованное вероятностное упорядочение может быть тогда сформировано посредством конкатенации первой и второй групп событий.
Как обсуждается, согласно способу прогнозирования вместо реальных событий могут быть кодированы индексы прогнозирования. Индексы часто могут иметь распределение с более острыми пиками и, вследствие этого, могут быть кодированы в коде VLC более эффективно. Индексы прогнозирования могут быть кодированы подобно событиям посредством выбора наиболее подходящего сочетания кода VLC из совокупности возможных сочетаний кода VLC. Например, посредством этого способа могут быть реализованы следующие таблицы кода VLC:
В некоторых примерах может быть использовано прогнозирование (например, полное прогнозирование или опережающее прогнозирование) с кодированием в режиме «Skip уровень 1» и в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов). В некоторых примерах может более эффективно кодировать наиболее общее событие (вероятный индекс прогнозирования равен 0) способом кодирования длин серий символов. Например, способ кодирования с прогнозированием в режиме «Skip уровень 1» и коде VLC может использовать прогнозирование, описанное выше, для получения прогнозируемых индексов для каждого блока. Наиболее частый индекс может быть изолирован и кодирован способом кодирования длин серий символов, обсуждаемым здесь, а остальные индексы прогнозирования могут быть использованы наилучшие из имеющихся таблиц кода VLC. Например, такие способы могут использовать следующие кодовые таблицы кода VLC:
Как обсуждается выше, в некоторых примерах может быть использовано прогнозирование по умолчанию. Такое прогнозирование по умолчанию может быть использовано с кодом VLC (например, способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию или подобно прогнозированию по умолчанию). Например, при прогнозировании по умолчанию или подобно прогнозированию по умолчанию могут быть для прогнозирования использованы гистограммы событий из соседних блоков. Примеры сочетаний кода VLC и ассоциированных заголовков кода VLC для таких способов приведены в следующей таблице:
В некоторых примерах может быть использовано прогнозирование по умолчанию или подобно прогнозированию по умолчанию с кодированием в режиме «Skip уровень 1» и в коде VLC (например, кодирование способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования подобно прогнозированию по умолчанию). Примеры сочетаний кода VLC и ассоциированных с ними заголовков кода VLC для таких способов могут соответствовать следующей таблице:
Для определения наиболее эффективного способа кодирования могут быть выбраны для рассмотрения все описываемые здесь способы или наилучший из них. Например, для простоты реализации могут быть рассмотрены и оценены только некоторые из описываемых здесь способов. В других вариантах могут быть рассмотрены и оценены все описываемые здесь способы. В любом событии выбранный способ может быть обозначен посредством издержек (служебной информации), таких как индикатор способа кодирования опорных типов блоков в режиме «inter» или другой подобный индикатор. В следующей таблице приведены примеры заголовков, используемых, когда доступны шесть способов:
В примере, приведенном в таблице 38, альтернативное прогнозирование может обозначать обсуждаемое здесь прогнозирование подобно прогнозирования по умолчанию.
Как обсуждается, данные опорных типов блоков в режиме «multi» могут быть кодированы посредством выбора таблицы кода VLC, которой соответствует наименьшая стоимость бита, на основе ряда опорных типов блоков в режиме «multi» в составе данных опорных типов в режиме «multi» и затем кодирования этих данных опорных типов блоков в режиме «multi» на основе выбранной таблицы кода VLC.
Например, в Р-кадрах опорные типы для блоков в режиме «multi» (например, данные опорных типов блоков режиме «multi») могут быть кодированы способом просмотра кодовых таблиц для кода VLC. Например, точки данных могут быть кодированы с использованием таблицы кода VLC для двух случаях применительно к кодированным опорным типам для Р-кадров: (1) блоки в режиме «multi» могут иметь одну фиксированную опору (например, PAST_NONE или аналогичный) и две возможности для второй опоры; и (2) блоки в режиме «multi» могут иметь одну фиксированную опору (например, PAST_NONE или аналогичный) и три возможности для второй опоры. В таких примерах может быть сделан выбор между двумя таблицами кода VLC - по одной для каждого случая, как показано ниже:
В F-кадрах опорные типы для блоков в режиме «multi» (например, данные опорных типов блоков в режиме «multi») могут быть кодированы с использованием способа адаптивного кодирования в коде VLC. Например, на основе статистики данных, подлежащих кодированию, может быть выбрана наилучшая таблица из имеющихся таблиц, индекс или индикатор таблицы может быть кодирован, и сами точки данных (например, данные опорных типов блоков в режиме «multi») могут быть кодированы с использованием выбранной таблицы. Например, для кодированных опорных типов в F-кадрах могут быть возможны пять случаев: (1) блоки в режиме «multi» имеют 1 фиксированную опору (например, PAST_NONE) и 4 возможности для второй опоры с параметром dir=0 (например, направление нуля); (2) блоки в режиме «multi» имеют 1 фиксированную опору (например, PAST_NONE) и 5 возможностей для второй опоры с параметром dir=0 (например, направление нуля); блоки в режиме «multi» имеют 1 фиксированную опору (например, PAST_NONE) и 6 возможностей для второй опоры с параметром dir=0 (например, направление нуля); блоки в режиме «multi» имеют 1 фиксированную опору (например, PAST_NONE) и 7 возможностей для второй опоры с параметром dir=0 (например, направление нуля); и блоки в режиме «multi» имеют 1 фиксированную опору (например, PAST_NONE) и 8 возможностей для второй опоры с параметром dir=0 (например, направление нуля).
В некоторых примерах адаптивное кодирование в коде VLC может быть выполнено на основе таблиц 40-44, где эти таблицы 40-44 являются примерами таблиц, доступных для каждого случая.
Обсуждаемые способы и системы могут создавать предпочтительный компромисс между достижимым выигрышем и сложностью.
Как обсуждается применительно к фиг. 16, пример системы 1600 видео кодирования может содержать устройство 1601 для считывания изображения, видео кодирующее устройство 100 и/или модуль видео кодирования, реализованный посредством логического устройства 1650, составленного из процессорных модулей 1620, видео декодирующее устройство 200 и/или модуль видео декодирования, реализованный посредством логического устройства 1650, составленного из процессорных модулей 1620, антенну 1602, один или несколько процессоров 1603, одно или несколько запоминающих устройств 1604 и/или дисплейное устройство 2005.
В некоторых примерах видео кодирующее устройство 100, реализованное посредством логического устройства 1650, может содержать буфер изображения (например, на основе процессорных модулей 1620 или запоминающих устройств 1604) и модуль графического процессора (например, на основе процессорных модулей 1620). Модуль графического процессора может осуществлять связь с буфером изображения. Модуль графического процессора может содержать видео кодирующее устройство 100, реализованное посредством логического устройства 1650 для воплощения различных модулей, обсуждавшихся со ссылками на фиг. 1 и фиг. 4, 6 и другие чертежи, приведенные здесь. Например, модуль графического процессора может содержать логическое устройство для энтропийного кодирования и т.д. Логическое устройство может быть конфигурировано для выполнения различных операций, обсуждаемых здесь. Например, логическое устройство для энтропийного кодирования может быть конфигурировано для загрузки данных разбиения, данных «горизонтальный/вертикальный», данные режимов и данные опорных типов по меньшей мере для части видеокадра, определения первой оценочной стоимости бита при энтропийном кодировании, которая содержит стоимость бита при энтропийном кодировании для случая совместного кодирования данных разбиения и данных режимов и стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», определения второй оценочной стоимости, которая содержит стоимость бита при энтропийном кодировании для случая раздельного кодирования данных разбиения и данных режимов и стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», выбора между совместным и раздельным кодированием данных разбиения и данных режимов по меньшей мере для части видеокадра на основе наименьшей из двух - первой оценочной стоимости бита при энтропийном кодировании и второй оценочной стоимости бита при энтропийном кодировании, энтропийного кодирования, совместного или раздельного, на основе выбранного способа данных разбиения и данных режимов и энтропийного кодирования данных «горизонтальный/вертикальный», энтропийного кодирования данных опорных типов и передачу на выход потока битов данных, содержащего энтропийно кодированные данные разбиения, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов.
В некоторых примерах антенна 1602 системы 1600 видео кодирования может быть конфигурирована для приема энтропийно кодированного потока видео данных. Как обсуждается, поток битов данных может содержать сжатые видео данные различных типов. Система 1600 видео кодирования может также содержать видео декодирующее устройство 200, соединенное с антенной 1602 и конфигурированное для декодирования кодированного потока битов данных. Например, видео декодирующее устройство 200 может быть конфигурировано для декодирования кодированного потока битов данных с целью определения заголовка совместного или раздельного кодирования, ассоциированного с данными разбиения и данными режимов по меньшей мере для части видеокадра, энтропийного декодирования данных разбиения и данных режимов совместно и энтропийного декодирования данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного кодирования указывает совместное кодирование, энтропийного декодирования данных разбиения и данных режимов раздельно и энтропийного декодирования данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного кодирования указывает раздельное кодирование и энтропийное декодирование кодированного потока битов данных для определения данных опорных типов для рассматриваемой части видеокадра.
Хотя указанные здесь признаки были описаны со ссылками на различные варианты реализации, это описание не следует толковать в ограничительном смысле. Поэтому различные модификации описываемых здесь вариантов, равно как и другие варианты, очевидные для специалистов в области, к которой относится настоящее изобретение, считаются находящимися в пределах смысла и объема настоящего изобретения.
Следующие примеры относятся к другим вариантам.
В одном примере реализованный компьютером способ видео кодирования может содержать загрузку данных разбиения, данных «горизонтальный/вертикальный», данных режимов и данных опорных типов по меньшей мере для части видеокадра, определения первой оценочной стоимости бита при энтропийном кодировании, которая содержит стоимость бита при энтропийном кодировании для случая совместного кодирования данных разбиения и данных режимов и стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», определения второй оценочной стоимости, которая содержит стоимость бита при энтропийном кодировании для случая раздельного кодирования данных разбиения и данных режимов и стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», выбора между совместным и раздельным кодированием данных разбиения и данных режимов по меньшей мере для части видеокадра на основе наименьшей из двух - первой оценочной стоимости бита при энтропийном кодировании и второй оценочной стоимости бита при энтропийном кодировании, энтропийного кодирования, совместного или раздельного, на основе выбранного способа данных разбиения и данных режимов и энтропийного кодирования данных «горизонтальный/вертикальный», энтропийного кодирования данных опорных типов и передачи на выход потока битов данных, содержащего энтропийно кодированные данные разбиения, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов.
В другом примере реализуемый компьютером способ видео кодирования может дополнительно содержать данные разбиения, содержащие биты разбиения, указывающие, подлежит ли блок дальнейшему разбиению, и данные «горизонтальный/вертикальный», указывающие, является ли каждое разбиение в составе данных разбиения горизонтальным или вертикальным разбиением. Данные режимов могут содержать режимы для блоков или единиц разбиения видеокадра, а эти данные режимов могут содержать указание по меньшей мере одного из режимов - режима «intra», режима «skip», режима «split», режима «auto», режима «inter» или режима «multi». Данные опорных типов могут содержать опорные типы для блоков режима «inter» в составе видеокадра, этот видеокадр может быть Р-кадром, а опорные типы для блоков режима «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут содержать опорные типы для блоков в режиме «multi» из состава видеокадра, где видеокадр может быть Р-кадром, а опорные типы для блоков режима «multi» могут содержать первый опорный тип, представляющий собой ранее декодированный кадр, и второй опорный кадр, представляющий собой второй ранее декодированный кадр. Данные опорных типов могут содержать опорные типы для блоков в режиме «inter» в составе видеокадра, этот видеокадр может быть B/F-кадром, а опорные типы для блоков режима «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, проецируемый опорный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут содержать опорные типы для блоков режима «multi» из состава видеокадра, этот видеокадр может представлять собой B/F-кадр, и опорные типы для блоков режима «multi» могут содержать первый опорный тип, представляющий собой ранее декодированный кадр, и второй опорный кадр, представляющий собой по меньшей мере один - второй ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, проецируемый опорный кадр, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Указанная по меньшей мере часть видеокадра может представлять собой срез видеокадра или весь видеокадр. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi».
Кодирование данных опорных типов может содержать выбор таблицы кода переменной длины для данных опорных типов режима «multi» на основе числа опорных типов режима «multi» в составе данных опорных типов режима «multi» и кодирование данных опорных типов блоков в режиме «multi» на основе этой таблицы кода переменной длины. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», видеокадр может быть Р-кадром, а кодирование данных опорных типов может содержать определение первой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, определение второй стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, определение третьей стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования и кодирование данных опорных типов в соответствии с наименьшей стоимостью кодирования бита данных из группы первой, второй и третьей стоимостей кодирования данных опорных типов блоков в режиме «inter». Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», видеокадр может быть B/F-кадром, а кодирование данных опорных типов может содержать определение первой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, определение второй стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, определение третьей стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины без использования прогнозирования, определение четвертой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования, определение пятой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования, определение шестой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования подобно прогнозированию по умолчанию, определение седьмой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования подобно прогнозированию по умолчанию и кодирование данных опорных типов блоков в режиме «inter» в соответствии с наименьшей стоимостью кодирования бита данных из группы с первой по седьмую стоимостей кодирования данных опорных типов блоков в режиме «inter». Кодирование данных режимов может содержать определение первой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины без прогнозирования, определение второй стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов без прогнозирования, определение третьей стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов без прогнозирования, определение четвертой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с использованием прогнозирования, определение пятой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования, определение шестой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования и кодирование данных режимов в соответствии с наименьшей стоимостью кодирования бита данных из группы с первой по шестую стоимостей кодирования данных режимов. Кодирование данных режимов может содержать определение вероятностного упорядочения событий режимов, представляющего собой совокупность доступных режимов, расположенных по порядку от наиболее вероятного к наименее вероятному событию, определение реального события режима в первом блоке видеокадра и кодирование реального события режима в виде индекса реального события режима в вероятностном упорядочении событий режимов. Кодирование данных режимов может содержать определение локального вероятностного упорядочения событий режимов, имеющего в составе доступные режимы, упорядоченные от наиболее вероятного к наименее вероятному событию, где определение локального вероятностного упорядочения может содержать определение локального вероятностного упорядочения событий режимов, где определение локального вероятностного упорядочения режимов может содержать определение глобального вероятностного упорядочения событий режимов, определение реальных событий режимов в блоках, соседствующих с первым блоком видеокадра, формирование первой подгруппы событий режимов на основе реальных событий режимов, расположенных по порядку согласно глобальному вероятностному упорядочению событий режимов, формирование второй подгруппы событий режимов на основе глобального упорядочения событий режимов, но без тех реальных событий, которые вошли в первую подгруппу, и конкатенацию первой и второй подгрупп для получения локального вероятностного упорядочения режимов, определение реального события режима в первом блоке видеокадра и кодирование реального события режима в виде индекса этого реального события режима в локальном вероятностном упорядочении событий режимов. Совместное кодирование данных разбиений и данных режимов может содержать кодирование этих данных разбиений и данных режимов совместно в виде совокупности событий с использованием дерева прогнозирования, имеющего завершающий блок по меньшей мере одного из режимов - «intra», «skip», «auto», «inter» или «multi», так что блок может быть определен как разбиваемый, если он не является завершающим, и так что первый уровень дерева прогнозирования может быть кодирован с использованием способа кодирования длин серий символов, а более высокие уровни прогнозирования могут быть кодированы способом прокси-кодирования в коде переменной длины. Совместное кодирование данных разбиений и данных режимов может содержать кодирование данных разбиений и данных режимов совместно в виде совокупности событий с использованием дерева прогнозирования, имеющего завершающий блок по меньшей мере одного из режимов - «intra», «skip», «auto», «inter» или «multi», так что блок может быть определен как разбиваемый, если он не является завершающим, и так что первый уровень дерева прогнозирования может быть кодирован с использованием способа кодирования длин серий символов, а более высокие уровни дерева прогнозирования могут быть кодированы способом прокси-кодирования в коде переменной длины, и так что кодирование данных «горизонтальный/вертикальный» может содержать использование по меньшей мере одного из способов - способа кодирования битовой карты или способа прокси-кодирования в коде переменной длины.
В других примерах видео кодирующее устройство может содержать буфер изображения и модуль графического процессора, имеющий логическое устройство для энтропийного кодирования. Модуль графического процессора может осуществлять связь с буфером изображения, а логическое устройство для энтропийного кодирования может быть конфигурировано для загрузки данных разбиения, данных «горизонтальный/вертикальный», данных режимов и данных опорных типов по меньшей мере для части видеокадра, определения первой оценочной стоимости бита при энтропийном кодировании, содержащей стоимость бита при энтропийном кодировании для совместного кодирования данных разбиения и данных режимов и стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», определения второй оценочной стоимости бита при энтропийном кодировании, содержащей стоимость бита при энтропийном кодировании для раздельного кодирования данных разбиения и данных режимов стоимость бита при энтропийном кодировании данных «горизонтальный/вертикальный», выбора между совместным кодированием и раздельным кодированием данных разбиения и данных режимов по меньшей мере для части видеокадра на основе меньшей из двух стоимостей - первой оценочной стоимости бита при энтропийном кодировании и второй оценочной стоимости бита при энтропийном кодировании, энтропийного кодирования, совместного или раздельного - в зависимости от сделанного выбора, данных разбиения и данных режимов и энтропийного кодирования данных «горизонтальный/вертикальный», энтропийного кодирования данных опорных типов и передачи на выход потока битов данных, содержащего энтропийно кодированные данные разбиения, данные режимов, данные «горизонтальный/вертикальный» и данные опорных типов.
В следующем примере видео кодирующего устройства данные разбиения могут содержать биты разбиения, указывающие, подлежит ли соответствующий блок дальнейшему разбиению или нет, и данные «горизонтальный/вертикальный», указывающие, является ли каждое разбиение в составе данных разбиения горизонтальным или вертикальным разбиением. Данные режимов могут указывать режимы для блоков или единиц разбиения в составе видеокадра, это может быть по меньшей мере один из режимов - режим «intra», режим «skip», режим «split», режим «auto», режим «inter» или режим «multi». Данные опорных типов могут указывать опорные типы для блоков режима «inter» в составе видеокадра, где этот видеокадр может представлять собой Р-кадр, и эти данные опорных типов для блоков в режиме «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут указывать опорные типы для блоков режима «multi» в составе видеокадра, где этот видеокадр может представлять собой Р-кадр, и эти данные опорных типов для блоков в режиме «multi» могут содержать первый опорный тип, являющийся ранее декодированным кадром, и второй опорный тип, представляющий собой второй ранее декодированный кадр. Данные опорных типов могут указывать опорные типы для блоков режима «inter» в составе видеокадра, где этот видеокадр может представлять собой B/F-кадр, и эти данные опорных типов для блоков в режиме «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, проецируемый опорный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут указывать опорные типы для блоков режима «multi» в составе видеокадра, где этот видеокадр может представлять собой B/F-picture, и эти данные опорных типов для блоков в режиме «multi» могут содержать первый опорный тип, являющийся ранее декодированным кадром, и второй опорный тип, представляющий собой по меньшей мере один из объектов - второй ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, проецируемый опорный кадр, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Указанная по меньшей мере часть видеокадра может представлять собой срез видеокадра или полный видеокадр. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», а для энтропийного кодирования этих данных опорных типов логическое устройств для энтропийного кодирования может быть дополнительно конфигурировано для выбора таблицы кода переменной длины для данных опорных типов блоков режима «multi» на основе числа опорных типов режима «multi» в составе данных опорных типов блоков режима «multi» и кодирования рассматриваемых данных опорных типов блоков режима «multi» в соответствии с выбранной таблицей кода переменной длины. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», видеокадр может быть Р-кадром, а для энтропийного кодирования этих данных опорных типов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения первой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, определения второй стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, определения третьей стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования и кодирования данных опорных типов блоков режима «inter» в соответствии с наименьшей стоимостью - первой, второй или третьей стоимостью кодирования бита данных опорных типов блоков в режиме «inter». Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», видеокадр может быть B/F-кадром, а для энтропийного кодирования этих данных опорных типов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения первой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, определения второй стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, определения третьей стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины без использования прогнозирования, определения четвертой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования, определения пятой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования, определения шестой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с использованием прогнозирования подобно прогнозированию по умолчанию, определения седьмой стоимости кодирования бита данных опорных типов блоков режима «inter» способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования подобно прогнозированию по умолчанию и кодирование данных опорных типов блоков в режиме «inter» в соответствии с наименьшей стоимостью кодирования бита данных из группы с первой по седьмую стоимостей кодирования данных опорных типов блоков в режиме «inter». Для раздельного энтропийного кодирования данных режимов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения первой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины без прогнозирования, определения второй стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов без прогнозирования, определения третьей стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов без прогнозирования, определения четвертой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с использованием прогнозирования, определения пятой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования, определения шестой стоимости кодирования бита данных режимов способом прокси-кодирования в коде переменной длины с кодированием наиболее частого символа и второго наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования и кодирования данных режимов в соответствии с наименьшей стоимостью бита данных из группы с первой по шестую стоимостей кодирования бита данных режимов. Для раздельного энтропийного кодирования данных режимов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения вероятностного упорядочения событий режимов, содержащего возможные режимы, упорядоченные от наиболее вероятного режима к наименее вероятному режиму, определения реального события режима в первом блоке видеокадра и кодирования реального события режима в виде индекса этого реального события режима в составе вероятностного упорядочения событий режимов. Для раздельного энтропийного кодирования данных режимов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения локального вероятностного упорядочения событий режимов, содержащего возможные режимы, упорядоченные от наиболее вероятного режима к наименее вероятному режиму, определение этого локального вероятностного упорядочения режимов может содержать определение глобального вероятностного упорядочения событий режимов, для чего логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для определения глобального упорядочения событий режимов, определения реальных событий режимов в блоках, соседствующих с первым блоком видеокадра, формирования первой подгруппы событий режимов на основе реальных событий режимов, размещенных в порядке, соответствующем глобальному упорядочению, формирования второй подгруппы событий режимов на основе событий режимов в глобальном вероятностном упорядочении, но без реальных событий режимов, вошедших в первую подгруппу, и конкатенации первой и второй подгрупп для формирования локального вероятностного упорядочения режимов, определения реального события режима в первом блоке видеокадра и кодирования реального события режима в виде индекса этого реального события режима в локальном вероятностном упорядочении событий режимов. Для совместного энтропийного кодирования данных разбиения и данных режимов логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для энтропийного кодирования совместно данных разбиения и данных режимов в виде совокупности событий с использованием дерева прогнозирования, имеющего завершающий блок по меньшей мере одного из режимов «intra», «skip», «auto», «inter» или «multi», так что блок может быть определен как разбиваемый, если разбиение на нем не завершается, так что первый уровень дерева прогнозирования может быть кодирован с использованием способа кодирования длин серий символов, а более высокие уровни дерева прогнозирования могут быть кодированы посредством способа прокси-кодирования в коде переменной длины, и так что для энтропийного кодирования данных «горизонтальный/вертикальный» логическое устройство для энтропийного кодирования может быть дополнительно конфигурировано для осуществления по меньшей мере одного способа кодирования - способа кодирования битовой карты или способа прокси-кодирования в коде переменной длины.
Еще в одном примере система может содержать видео декодирующее устройство, конфигурированное для декодирования кодированного потока битов данных. Это видео декодирующее устройство может быть конфигурировано для декодирования кодированного потока битов данных с целью определения заголовка совместного или раздельного кодирования, ассоциированного с данными разбиения и данными режимов по меньшей мере для части видеокадра, энтропийного декодирования данных разбиения и данных режимов совместно и энтропийного декодирования данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного кодирования указывает на совместное кодирование, энтропийного декодирования данных разбиения и данных режимов раздельно и энтропийного декодирования данных «горизонтальный/вертикальный», когда заголовок совместного или раздельного декодирования указывает на раздельное кодирование, и энтропийного декодирования кодированного потока битов данных для определения данных опорных типов для части видеокадра.
Система согласно следующему примеру может также содержать антенну, конфигурированную для приема энтропийно кодированного потока битов данных, и дисплейное устройство, конфигурированное для представления видеокадров. Данные разбиения могут содержать биты разбиения, указывающие, подлежит ли блок дальнейшему разбиению, а данные «горизонтальный/вертикальный» могут указывать, являются ли разбиения горизонтальными или вертикальными. Данные режимов могут содержать указания режимов для блоков или единиц разбиения видеокадра, так что данные режимов могут содержать указания по меньшей мере одного из режимов - режима «intra», режима «skip», режима «split», режима «auto», режима «inter» или режима «multi». Данные опорных типов могут содержать опорные типы для блоков режима «inter» в составе видеокадра, где этот видеокадр может быть Р-кадром, а опорные типы для блоков режима «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут содержать опорные типы для блоков режима «multi» в составе видеокадра, где этот видеокадр может быть Р-кадром, а опорные типы для блоков режима «multi» могут содержать первый опорный тип, представляющий собой ранее декодированный кадр, и второй опорный тип, представляющий собой второй ранее декодированный кадр. Данные опорных типов могут содержать опорные типы для блоков режима «inter» в составе видеокадра, где этот видеокадр может быть B/F-кадром, а опорные типы для блоков режима «inter» могут содержать по меньшей мере один из объектов - ранее декодированный кадр, проецируемый опорный кадр, ранее декодированный кадр со сверхразрешением, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Данные опорных типов могут содержать опорные типы для блоков режима «multi» в составе видеокадра, где этот видеокадр может быть B/F-кадром, а опорные типы для блоков режима «multi» могут содержать первый опорный тип, представляющий собой ранее декодированный кадр, и второй опорный тип, представляющий собой по меньшей мере один из объектов - второй ранее декодированный кадр, ранее декодированный кадр со сверхразрешением, проецируемый опорный кадр, ранее декодированный преобразованный посредством морфинга кадр с преобладающим движением или ранее декодированный преобразованный посредством морфинга кадр с усилением. Указанная по меньшей мере часть видеокадра может представлять собой срез видеокадра или весь этот видеокадр в целом. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», а видео декодирующее устройство может быть конфигурировано для выбора таблицы кода переменной длины для данных опорных типов блоков режима «multi» на основе числа опорных типов режима «multi» в составе данных опорных типов блоков режима «multi» и энтропийного декодирования рассматриваемых данных опорных типов блоков режима «multi» в соответствии с выбранной таблицей кода переменной длины. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», где этот видеокадр может быть Р-кадром, и видео декодирующее устройство может быть конфигурировано для определения из потока битов данных индикатора способа кодирования опорных типов блоков в режиме «inter», указывающего по меньшей мере один из способов кодирования - способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию или способ прокси-кодирования в коде переменной длины с использованием прогнозирования, и энтропийного декодирования данных опорных типов блоков в режиме «inter» на основе способа, указанного индикатором. Данные опорных типов могут содержать данные опорных типов блоков режима «inter» и данные опорных типов блоков режима «multi», где видеокадр может быть B/F-кадром, а видео декодирующее устройство может быть конфигурировано для определения из потока битов данных индикатора способа кодирования опорных типов блоков режима «inter», указывающего по меньшей мере один из способов кодирования - способ прокси-кодирования в коде переменной длины с использованием прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины с использованием модифицированного прогнозирования по умолчанию, способ прокси-кодирования в коде переменной длины без использования прогнозирования, способ прокси-кодирования в коде переменной длины с использованием прогнозирования, способ прокси-кодирования в коде переменной длины с кодированием наиболее частого символа способом кодирования длин серий символов с использованием прогнозирования или способ прокси-кодирования в коде переменной длины с использованием прогнозирования подобно прогнозированию по умолчанию, и энтропийного декодирования данных опорных типов блоков режима «inter» на основе способа, указанного индикатором. Для энтропийного декодирования данных разбиения и данных режимов по отдельности видео декодирующее устройство может быть конфигурировано для определения вероятностного упорядочения событий режимов, содержащего возможные режимы, расположенные в порядке от наиболее вероятного к наименее вероятному режиму, определения из потока битов данных индекса реального события режима для первого блока в составе видеокадра, и определения реального события режима для первого блока видеокадра на основе этого индекса и вероятностного упорядочения событий режимов. Для энтропийного декодирования данных разбиений и данных режимов по отдельности видео декодирующее устройство может быть конфигурировано для определения локального вероятностного упорядочения событий режимов, содержащего имеющиеся режимы, упорядоченные от наиболее вероятного к наименее вероятному режиму, так что для определения локального вероятностного упорядочения событий режимов видео декодирующего устройства может быть конфигурировано для определения глобального вероятностного упорядочения событий режимов, определение реальных событий режимов в блоках, соседствующих с первым блоком видеокадра, формирование первой подгруппы событий режимов на основе реальных событий режимов, расположенных в порядке, соответствующем глобальному упорядочению событий режимов, формирование второй подгруппы событий режимов на основе событий режимов из состава глобального вероятностного упорядочения, но без реальных событий режимов, вошедших в первую подгруппу, и конкатенация первой и второй подгрупп для формирования локального вероятностного упорядочения режимов, определение, из потока битов данных, индекса реального события режима для первого блока в видеокадре и определение реального события режима для первого блока видеокадра на основе индекса и локального упорядочения событий режимов.
В следующем примере по меньшей мере на одном машиночитаемом носителе могут быть записаны несколько команд, при выполнении которых компьютерное устройство осуществляет способ согласно какому-либо из приведенных выше примеров.
Еще в одном примере аппаратура может содержать средства для осуществления способов согласно какому-либо из приведенных выше примеров.
Приведенные выше примеры могут содержать конкретные сочетания признаков. Однако эти примеры не являются ограничивающими, так что в различных вариантах эти примеры могут содержать только подмножество таких признаков, использовать другой порядок этих признаков, другое сочетание признаков и/или содержать дополнительные признаки сверх признаков, перечисленных в явном виде. Например, все признаки, описанные в связи с примерами способов, могут быть реализованы в примерах аппаратуры, примерах систем и/или примерах изделий и наоборот.