Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании
Иллюстрации
Показать всеГруппа изобретений относится к технологиям обработки цифрового видео. Техническим результатом является повышение эффективности кодирования видео. Предложен способ кодирования, реализуемый вычислительным устройством кодирования видео или вычислительным устройством кодирования изображений. Способ содержит этап, на котором определяют значения вектора блока, BV, для текущего блока в картинке, причем значение BV для текущего блока указывает смещение по отношению к опорной области в упомянутой картинке. Далее, согласно способу, определяют разностный BV для текущего блока, используя значение BV для текущего блока и предиктор BV для текущего блока. А также осуществляют кодирование текущего блока, используя интра-основанное на копии блока ("BC") предсказание с упомянутым значением BV. 6 н. и 8 з.п. ф-лы, 29 ил.
Реферат
УРОВЕНЬ ТЕХНИКИ
[001] Инженеры используют сжатие (также называемое кодирование источника), чтобы уменьшать битрейт цифрового видео. Сжатие уменьшает стоимость хранения и передачи видеоинформации посредством преобразования информации в форму более низкого битрейта. Распаковка (также называемая декодирование) восстанавливает версию исходной информации из сжатой формы. "Кодек" является системой кодера/декодера.
[002] За последние два десятилетия, были приняты различные стандарты видеокодеков, включая сюда стандарты ITU-T H.261, H.262 (MPEG-2 или ISO/IEC 13818-2), H.263 и H.264 (MPEG-4 AVC или ISO/IEC 14496-10), стандарты MPEG-1 (ISO/IEC 11172-2) и MPEG-4 Visual (ISO/IEC 14496-2), и стандарт SMPTE 421M (VC-1). В более позднее время, был одобрен стандарт H.265/HEVC (ITU-T H.265 или ISO/IEC 23008-2). Расширения стандарта H.265/HEVC (например, для кодирования/декодирования масштабируемого видео, для кодирования/декодирования видео с более высокой точностью в терминах глубины битов отсчетов или частоты дискретизации цветности, для контента захвата экрана, или для многовидового кодирования/декодирования) в текущее время находятся в разработке. Стандарт видеокодека обычно определяет варианты выбора для синтаксиса кодированного битового видеопотока, параметров детализации в битовом потоке, когда конкретные признаки используются в кодировании и декодировании. Во многих случаях, стандарт видеокодека также обеспечивает подробности об операциях декодирования, которые декодер должен выполнять, чтобы достигать согласовывающихся результатов в декодировании. Помимо стандартов кодеков, различные коммерческие форматы кодеков определяют другие варианты выбора для синтаксиса кодированного битового видеопотока и соответствующих операций декодирования.
[003] Интра-копия блока ("BC") является режимом предсказания в разработке для расширений H.265/HEVC. Для режима интра-BC предсказания, значения отсчетов текущего блока в картинке предсказываются с использованием ранее восстановленных значений отсчетов в той же картинке. Вектор блока ("BV") указывает смещение от текущего блока к области в картинке, которая включает в себя ранее восстановленные значения отсчетов, используемые для предсказания. BV сигнализируется в битовом потоке. Интра-BC предсказание является формой интра-картиночного предсказания - интра-BC предсказание для блока в картинке не использует какие-либо значения отсчетов, другие, нежели значения отсчетов в той же картинке.
[004] Как в текущее время определено в стандарте H.265/HEVC и осуществлено в некотором эталонном программном обеспечении для стандарта H.265/HEVC, режим интра-BC предсказания имеет несколько проблем. В частности, кодирование блоков с предсказуемым смещением BC не обрабатывается эффективно, и интра-BC предсказание для контента с перевернутыми паттернами не обрабатывается эффективно.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[005] В итоге, подробное описание представляет новаторские решения в области кодирования или декодирования блоков с использованием интра-основанного на копии блока ("BC") предсказания. Например, некоторые из новаторских решений относятся к зеркальному отражению блоков, в котором интра-BC предсказанный блок зеркально отражен по отношению к опорной области, которая может указываться посредством значения вектора блока ("BV"). Другие новаторские решения относятся к сигнализации режима пропуска, в котором текущий интра-BC предсказанный блок использует сигнализированный дифференциал BV, но не имеет данных остатка. Во многих ситуациях, новаторские решения улучшают эффективность кодирования для интра-BC предсказанных блоков.
[006] Согласно первому аспекту новаторских решений, здесь описанных, кодер изображений или видео определяет область интра-BC предсказания для текущего блока (например, единицы кодирования, единицы предсказания) в картинке на основе опорной области в картинке. Область интра-BC предсказания зеркально отражена по отношению к опорной области. Например, область интра-BC предсказания зеркально отражена горизонтально по отношению к опорной области, вертикально по отношению к опорной области, или как горизонтально, так и вертикально по отношению к опорной области.
[007] Кодер кодирует текущий блок с использованием области интра-BC предсказания, и выводит кодированные данные в битовом потоке. Кодированные данные включают в себя индикацию в отношении того, отражена ли область интра-BC предсказания зеркально по отношению к опорной области. Например, индикация является одним или более синтаксическими элементами в битовом потоке, которые могут сигнализироваться для текущего блока или для большего блока, который включает в себя текущий блок. Синтаксический элемент (элементы) может быть флагом (флагами), при этом каждый флаг указывает решение для направления зеркального отражения. Синтаксический элемент (элементы) может совместно кодироваться с другим синтаксическим элементом или отдельно сигнализироваться в битовом потоке.
[008] Соответствующий декодер принимает кодированные данные в битовом потоке. Кодированные данные включают в себя индикацию в отношении того, отражена ли область интра-BC предсказания для текущего блока (например, единицы кодирования, единицы предсказания) в картинке зеркально по отношению к опорной области в картинке. Например, индикация является одним или более синтаксическими элементами в битовом потоке, которые могут сигнализироваться для текущего блока или для большего блока, который включает в себя текущий блок. Синтаксический элемент (элементы) могут быть флагами, при этом каждый флаг указывает решение для направления зеркального отражения. Синтаксический элемент (элементы) может совместно кодироваться с другим синтаксическим элементом или отдельно сигнализироваться.
[009] Декодер определяет область интра-BC предсказания для текущего блока на основе опорной области в картинке. Область интра-BC предсказания зеркально отражена (например, горизонтально и/или вертикально) по отношению к опорной области. Декодер декодирует текущий блок с использованием области интра-BC предсказания.
[010] Когда кодер или декодер определяет область интра-BC предсказания, которая зеркально отражена по отношению к ее опорной области, кодер или декодер может (a) определять опорную область, (b) зеркально отражать опорную область, и затем (c) назначать значения отсчетов в положениях зеркально отраженной опорной области значениям отсчетов в положениях области интра-BC предсказания. Или кодер, или декодер может (a) определять опорную область, (b) назначать значения отсчетов в положениях опорной области значениям отсчетов в положениях области интра-BC предсказания, и затем (c) зеркально отражать область интра-BC предсказания. Или кодер, или декодер может (a) определять опорную область, и затем (b) назначать значения отсчетов в положениях опорной области значениям отсчетов в соответствующих положениях области интра-BC предсказания, где соответствующие положения учитывают зеркальное отражение.
[011] В некоторых иллюстративных вариантах осуществления, кодированные данные включают в себя значение BV для текущего блока. Значение BV указывает смещение к опорной области в картинке. Во время кодирования значение BV может быть предсказанным значением BV, или значение BV может идентифицироваться в оценке BV и сигнализироваться с помощью дифференциала BV по отношению к предсказанному значению BV. Во время декодирования, значение BV может быть предсказанным значением BV, или значение BV может восстанавливаться посредством добавления дифференциала BV к предсказанному значению BV.
[012] Согласно другому аспекту новаторских решений, здесь описанных, кодер изображений или видео определяет значение BV для текущего блока (например, единицы кодирования, единицы предсказания) в картинке. Значение BV указывает смещение к опорной области в картинке. Кодер определяет дифференциал BV для текущего блока с использованием значения BV и предиктора BV (предсказанного значения BV) для текущего блока. Битовый поток может включать в себя значение индекса, которое указывает выбор кандидата-предиктора BV, из набора из множества кандидатов-предикторов BV, для использования в качестве предиктора BV. Или предиктор BV может выбираться некоторым другим способом. Кодер кодирует текущий блок с использованием интра-BC предсказания со значением BV. Кодер выводит в битовом потоке кодированные данные, включающие в себя флаг, указывающий, что текущий блок кодирован с использованием интра-BC предсказания в режиме пропуска. Так как текущий блок кодирован с использованием интра-BC предсказания в режиме пропуска, битовый поток включает в себя дифференциал BV для текущего блока, но не имеет данных остатка для текущего блока.
[013] В некоторых иллюстративных вариантах осуществления, если заданный блок (например, текущий блок, последующий блок) не кодирован с использованием интра-BC предсказания в режиме пропуска, другой флаг может указывать, кодирован ли заданный блок с использованием интра-BC предсказания в режиме без пропуска. Если не кодирован с использованием интра-BC предсказания в режиме без пропуска, заданный блок может быть кодирован в другом режиме, как, например, режиме интра-пространственного предсказания или интер-картиночном режиме, как указывается с помощью одного или более других синтаксических элементов.
[014] В некоторых иллюстративных вариантах осуществления, заданный блок (например, текущий блок, последующий блок), который интра-BC предсказан в режиме пропуска, имеет определенное значение для режима разделения. Это оказывает влияние на сигнализацию синтаксического элемента для режима разделения. Если заданный блок кодирован с использованием интра-BC предсказания в режиме без пропуска, битовый поток включает в себя синтаксический элемент, который указывает режим разделения для заданного блока. Если заданный блок кодирован с использованием интра-BC предсказания в режиме пропуска, однако, битовый поток не имеет синтаксического элемента, который указывает режим разделения для заданного блока, и режим разделения для заданного блока имеет определенное значение.
[015] В некоторых иллюстративных вариантах осуществления, заданный блок (например, текущий блок, последующий блок), который интра-BC предсказан в режиме пропуска, не имеет флага, который указывает присутствие или отсутствие данных остатка для заданного блока. Предполагается, что данные остатка для заданного блока отсутствуют в битовом потоке. Также, если заданный блок кодирован с использованием интра-BC предсказания в режиме без пропуска и режим разделения для заданного блока имеет определенное значение, битовый поток не имеет флага, который указывает присутствие или отсутствие данных остатка для заданного блока. В этом случае, предполагается, что данные остатка для заданного блока присутствуют в битовом потоке. В противном случае, если заданный блок кодирован с использованием интра-BC предсказания в режиме без пропуска и режим разделения для заданного блока не имеет определенного значения, битовый поток включает в себя флаг, который указывает присутствие или отсутствие данных остатка для заданного блока.
[016] Соответствующий декодер принимает из битового потока кодированные данные, включающие в себя флаг, указывающий, что текущий блок (например, единица кодирования, единица предсказания) в картинке кодирован с использованием интра-BC предсказания в режиме пропуска. Так как текущий блок кодирован с использованием интра-BC предсказания в режиме пропуска, битовый поток включает в себя дифференциал BV для текущего блока, но не имеет данных остатка для текущего блока. Декодер определяет значение BV для текущего блока с использованием дифференциала BV и предиктора BV (предсказанного значения BV) для текущего блока. Битовый поток может включать в себя значение индекса, которое указывает выбор кандидата-предиктора BV, из набора из множества кандидатов-предикторов BV, для использования в качестве предиктора BV. Или предиктор BV может выбираться некоторым другим способом. Значение BV указывает смещение к опорной области в картинке. Декодер декодирует текущий блок с использованием интра-BC предсказания со значением BV.
[017] Когда текущий блок кодирован с использованием интра-BC предсказания в режиме пропуска, область интра-BC предсказания для текущего блока может быть зеркально отражена по отношению к ее опорной области. Примеры операций зеркального отражения, направлений зеркального отражения, и сигнализации того, используется ли зеркальное отражение, подытожены выше.
[018] Новаторские решения для интра-BC предсказания могут осуществляться как часть способа, как часть вычислительного устройства, выполненного с возможностью выполнять способ, или как часть материальных считываемых компьютером носителей, хранящих исполнимые компьютером инструкции для предписания вычислительному устройству выполнять способ. Различные новаторские решения могут использоваться в комбинации или раздельно. В частности, зеркальное отражение блоков в интра-BC предсказании может использоваться совместно с режимом пропуска для интра-BC предсказанных блоков.
[019] Предшествующие и другие задачи, признаки, и преимущества изобретения станут более ясными из последующего подробного описания, которое продолжается со ссылкой на сопровождающие фигуры.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[020] Фиг. 1 является диаграммой иллюстративной вычислительной системы, в которой могут осуществляться некоторые описанные варианты осуществления.
[021] Фиг. 2a и 2b являются диаграммами иллюстративных сетевых сред, в которых могут осуществляться некоторые описанные варианты осуществления.
[022] Фиг. 3 является диаграммой иллюстративной системы кодера, совместно с которой могут осуществляться некоторые описанные варианты осуществления.
[023] Фиг. 4 является диаграммой иллюстративной системы декодера, совместно с которой могут осуществляться некоторые описанные варианты осуществления.
[024] Фиг. 5a и 5b являются диаграммами, иллюстрирующими иллюстративный кодер видео, совместно с которым могут осуществляться некоторые описанные варианты осуществления.
[025] Фиг. 6 является диаграммой, иллюстрирующей иллюстративный декодер видео, совместно с которым могут осуществляться некоторые описанные варианты осуществления.
[026] Фиг. 7a и 7b являются диаграммами, иллюстрирующими интра-BC предсказание для блока в картинке и предсказание BV для блока, соответственно.
[027] Фиг. 8a-8d, 9a-9c и 10a-10c являются диаграммами, иллюстрирующими зеркальное отражение опорных областей для блоков.
[028] Фиг. 11 и 12 являются блок-схемами последовательности операций, иллюстрирующими способы для кодирования и декодирования, соответственно, в которых область интра-BC предсказания зеркально отражена по отношению к опорной области.
[029] Фиг. 13 и 14 являются блок-схемами последовательности операций, иллюстрирующими способы для кодирования, которое включает в себя режим пропуска для интра-BC предсказанных блоков.
[030] Фиг. 15 и 16 являются блок-схемами последовательности операций, иллюстрирующими способы для декодирования, которое включает в себя режим пропуска для интра-BC предсказанных блоков.
[031] Фиг. 17a и 17b являются таблицей, показывающей синтаксическую структуру для единицы кодирования, согласно предыдущему подходу.
[032] Фиг. 18 является таблицей, показывающей новую синтаксическую структуру для единицы кодирования, которая может кодироваться как интра-BC предсказанный блок в режиме пропуска.
ПОДРОБНОЕ ОПИСАНИЕ
[033] Подробное описание представляет новаторские решения в области кодирования или декодирования блоков с использованием интра-основанного на копии блока ("BC") предсказания. Например, некоторые из новаторских решений относятся к зеркальному отражению блоков, в котором интра-BC предсказанный блок зеркально отражен по отношению к опорной области, которая может указываться посредством значения вектора блока ("BV"). Другие новаторские решения относятся к сигнализации режима пропуска, в котором текущий интра-BC предсказанный блок использует сигнализированный дифференциал BV, но не имеет данных остатка. Во многих ситуациях, новаторские решения улучшают эффективность кодирования для интра-BC предсказанных блоков.
[034] Хотя операции, здесь описанные, находятся в местах, описанных как выполняющиеся посредством кодера или декодера видео, во многих случаях операции могут выполняться посредством другого типа инструмента обработки мультимедиа (например, кодера или декодера изображений).
[035] Некоторые из новаторских решений, здесь описанных, проиллюстрированы со ссылкой на синтаксические элементы и операции, характерные для стандарта H.265/HEVC. Например, ссылка делается на черновую версию JCTVC-P1005 стандарта H.265/HEVC - "High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6", JCTVC-P1005_v1, февраль 2014. Новаторские решения, здесь описанные, также могут осуществляться для других стандартов или форматов.
[036] Некоторые из новаторских решений, здесь описанных (например, зеркальное отражение блоков) описываются со ссылкой на интра-BC предсказание. Новаторские решения также могут применяться в других контекстах (например, зеркальном отражении блоков для опорных областей в компенсации движения).
[037] Более широко, являются возможными различные альтернативы для примеров, здесь описанных. Например, некоторые из способов, здесь описанных, могут изменяться посредством изменения порядка описанных действий способа, посредством разделения, повторения, или пропуска некоторых действий способа, и т.д. Различные аспекты раскрытой технологии могут использоваться в комбинации или раздельно. Разные варианты осуществления используют одно или более из описанных новаторских решений. Некоторые из новаторских решений, здесь описанных, направлены на одну или более из проблем, отмеченных в уровне техники. Обычно, заданный способ/инструмент не решает все такие проблемы.
I. ИЛЛЮСТРАТИВНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
[038] Фиг. 1 иллюстрирует обобщенный пример подходящей вычислительной системы (100), в которой могут осуществляться несколько из описанных новаторских решений. Вычислительная система (100) не предназначена, чтобы предлагать какое-либо ограничение в отношении объема использования или функциональных возможностей, так как новаторские решения могут осуществляться в разнообразных вычислительных системах общего назначения или специального назначения.
[039] Со ссылкой на фиг. 1, вычислительная система (100) включает в себя один или более блоков (110, 115) обработки и память (120, 125). Блоки (110, 115) обработки исполняют исполнимые компьютером инструкции. Блок обработки может быть центральным блоком обработки ("CPU") общего назначения, процессором в специализированной интегральной схеме ("ASIC") или любым другим типом процессора. В многопроцессорной системе, множество блоков обработки исполняют исполнимые компьютером инструкции, чтобы увеличивать мощность обработки. Например, фиг. 1 показывает центральный блок (110) обработки также как блок обработки графики или блок совместной обработки (115). Материальная память (120, 125) может быть энергозависимой памятью (например, регистрами, кэшем, RAM), энергонезависимой памятью (например, ROM, EEPROM, флэш-памятью, и т.д.), или некоторой комбинацией упомянутых двух, доступной для блока (блоков) обработки. Память (120, 125) хранит программное обеспечение (180), осуществляющее одно или более новаторских решений для зеркального отражения блоков и/или режима пропуска в интра-BC предсказании, в форме исполнимых компьютером инструкций, подходящих для исполнения посредством блока (блоков) обработки.
[040] Вычислительная система может иметь дополнительные признаки. Например, вычислительная система (100) включает в себя хранилище (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода, и одно или более соединений (170) передачи данных. Механизм взаимного соединения (не показан), такой как шина, контроллер, или сеть, взаимно соединяет компоненты вычислительной системы (100). Обычно, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, исполняющегося в вычислительной системе (100), и координирует действия компонентов вычислительной системы (100).
[041] Материальное хранилище (140) может быть съемным или несъемным, и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, DVD, или любой другой носитель, который может использоваться, чтобы хранить информацию и к которому может осуществляться доступ внутри вычислительной системы (100). Хранилище (140) хранит инструкции для программного обеспечения (180), осуществляющего одно или более новаторских решений для зеркального отражения блоков и/или режима пропуска в интра-BC предсказании.
[042] Устройство (устройства) (150) ввода может быть сенсорным устройством ввода, таким как клавиатура, мышь, перо, или шаровой указатель, речевым устройством ввода, сканирующим устройством, или другим устройством, которое обеспечивает ввод в вычислительную систему (100). Для видео, устройство (устройства) (150) ввода может быть камерой, видеокартой, картой TV-тюнера, модулем захвата экрана, или аналогичным устройством, которое принимает видеовход в аналоговой или цифровой форме, или CD-ROM или CD-RW, которое считывает видеовход в вычислительную систему (100). Устройство (устройства) (160) вывода может быть устройством отображения, принтером, громкоговорителем, устройством записи CD, или другим устройством, которое обеспечивает вывод из вычислительной системы (100).
[043] Соединение (соединения) (170) передачи данных обеспечивает возможность связи по носителю передачи данных с другой вычислительной сущностью. Носитель передачи данных передает информацию, такую как исполнимые компьютером инструкции, аудио или видео ввод или вывод, или другие данные в модулированном сигнале данных. Модулированный сигнал данных является сигналом, который имеет одну или более из его характеристик установленными или измененными таким образом, чтобы кодировать информацию в сигнале. В качестве примера, и не ограничения, носители передачи данных могут использовать электрическую, оптическую, RF, или другую несущую.
[044] Новаторские решения могут быть описаны в общем контексте считываемых компьютером носителей. Считываемые компьютером носители являются любыми доступными материальными носителями, к которым может осуществляться доступ внутри вычислительной среды. В качестве примера, и не ограничения, с вычислительной системой (100), считываемые компьютером носители включают в себя память (120, 125), хранилище (140), и комбинации любых из вышеупомянутых.
[045] Новаторские решения могут быть описаны в общем контексте исполнимых компьютером инструкций, как, например, инструкций, включенных в программные модули, которые исполняются в вычислительной системе на целевом реальном или виртуальном процессоре. В общем, программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных, и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональные возможности программных модулей могут комбинироваться или разделяться между программными модулями, как требуется в различных вариантах осуществления. Исполнимые компьютером инструкции для программных модулей могут выполняться внутри локальной или распределенной вычислительной системы.
[046] Признаки "система" и "устройство" используются здесь взаимозаменяемо. Если контекст явным образом не указывает иное, никакой признак не имеет следствием какое-либо ограничение на тип вычислительной системы или вычислительного устройства. В общем, вычислительная система или вычислительное устройство может быть локальным или распределенным, и может включать в себя любую комбинацию аппаратного обеспечения специального назначения и/или аппаратного обеспечения общего назначения с программным обеспечением, осуществляющим функциональные возможности, здесь описанные.
[047] Раскрытые способы также могут осуществляться с использованием специализированного вычислительного аппаратного обеспечения, сконфигурированного с возможностью выполнять любой из раскрытых способов. Например, раскрытые способы могут осуществляться посредством интегральной схемы (например, ASIC (такой как цифровой сигнальный процессор ("DSP") ASIC, блок обработки графики ("GPU"), или программируемое логическое устройство ("PLD"), такое как программируемая пользователем вентильная матрица ("FPGA")), специально сконструированной или сконфигурированной, чтобы осуществлять любой из раскрытых способов.
[048] Для представления, подробное описание использует признаки, такие как "определять" и "использовать", чтобы описывать компьютерные операции в вычислительной системе. Эти признаки являются высокоуровневыми абстракциями для операций, выполняемых посредством компьютера, и не должны смешиваться с действиями, выполняемыми человеком. Фактические компьютерные операции, соответствующие этим признакам, изменяются в зависимости от варианта осуществления.
II. ИЛЛЮСТРАТИВНЫЕ СЕТЕВЫЕ СРЕДЫ
[049] Фиг. 2a и 2b показывают иллюстративные сетевые среды (201, 202), которые включают в себя кодеры (220) видео и декодеры (270) видео. Кодеры (220) и декодеры (270) соединены по сети (250) с использованием подходящего протокола связи. Сеть (250) может включать в себя сеть Интернет или другую компьютерную сеть.
[050] В сетевой среде (201), показанной на фиг. 2a, каждый инструмент (210) связи реального времени ("RTC") включает в себя как кодер (220), так и декодер (270) для двунаправленной передачи данных. Заданный кодер (220) может формировать вывод, согласующийся с вариантом или расширением стандарта H.265/HEVC, стандарта SMPTE 421M, стандарта ISO-IEC 14496-10 (также известного как H.264 или AVC), другого стандарта, или коммерческого формата, при этом соответствующий декодер (270) принимает кодированные данные от кодера (220). Двунаправленная передача данных может быть частью видео конференц-связи, телефонного видеовызова, или другим сценарием связи двух сторон или множества сторон. Хотя сетевая среда (201) на фиг. 2a включает в себя два инструмента (210) связи реального времени, сетевая среда (201) может вместо этого включать в себя три или более инструментов (210) связи реального времени, которые участвуют в связи множества сторон.
[051] Инструмент (210) связи реального времени управляет кодированием посредством кодера (220). Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (210) связи реального времени. Альтернативно, инструмент (210) связи реального времени использует другую систему кодера. Инструмент (210) связи реального времени также управляет декодированием посредством декодера (270). Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (210) связи реального времени. Альтернативно, инструмент (210) связи реального времени использует другую систему декодера.
[052] В сетевой среде (202), показанной на фиг. 2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видео для доставки в множество инструментов (214) проигрывания, которые включают в себя декодеры (270). Однонаправленная передача данных может обеспечиваться для системы видео наблюдения, системы наблюдения веб-камерами, модуля захвата экрана, представления конференц-связи удаленного рабочего стола или другого сценария, в котором видео кодируется и отправляется из одного местоположения в одно или более другие местоположения. Хотя сетевая среда (202) на фиг. 2b включает в себя два инструмента (214) проигрывания, сетевая среда (202) может включать в себя больше или меньше инструментов (214) проигрывания. В общем, инструмент (214) проигрывания осуществляет связь с инструментом (212) кодирования, чтобы определять поток видео для приема инструментом (214) проигрывания. Инструмент (214) проигрывания принимает поток, буферизует принятые кодированные данные для соответствующего периода, и начинает декодирование и проигрывание.
[053] Фиг. 3 показывает иллюстративную систему (300) кодера, которая может быть включена в инструмент (212) кодирования. Альтернативно, инструмент (212) кодирования использует другую систему кодера. Инструмент (212) кодирования также может включать в себя логику контроллера стороны сервера для управления соединениями с одним или более инструментами (214) проигрывания. Фиг. 4 показывает иллюстративную систему (400) декодера, которая может быть включена в инструмент (214) проигрывания. Альтернативно, инструмент (214) проигрывания использует другую систему декодера. Инструмент (214) проигрывания также может включать в себя логику контроллера стороны клиента для управления соединениями с инструментом (212) кодирования.
III. ИЛЛЮСТРАТИВНЫЕ СИСТЕМЫ КОДЕРА
[054] Фиг. 3 является блок-схемой иллюстративной системы (300) кодера, совместно с которой могут осуществляться некоторые описанные варианты осуществления. Система (300) кодера может быть инструментом кодирования общего назначения, выполненным с возможностью работы в любом из множества режимов кодирования, как, например, режиме кодирования с низкой задержкой для связи реального времени, режиме транскодирования, и режиме кодирования с более высокой задержкой для формирования мультимедиа для проигрывания из файла или потока, или она может быть инструментом кодирования специального назначения, адаптированным для одного такого режима кодирования. Система (300) кодера может быть выполнена с возможностью для кодирования конкретного типа контента (например, контента захвата экрана). Система (300) кодера может осуществляться как модуль операционной системы, как часть прикладной библиотеки или как изолированное приложение. В целом, система (300) кодера принимает последовательность видеокадров (311) источника от источника (310) видео и формирует кодированные данные в качестве вывода в канал (390). Кодированные данные, выводимые в канал, могут включать в себя контент, кодированный с использованием зеркального отражения блоков и/или режима пропуска в интра-BC предсказании, как здесь описано.
[055] Источник (310) видео может быть камерой, картой тюнера, запоминающими носителями, модулем захвата экрана, или другим источником цифрового видео. Источник (310) видео формирует последовательность видеокадров с частотой кадров, равной, например, 30 кадров в секунду. Как здесь используется, признак "кадр", в общем, указывает на исходные, кодированные или восстановленные данные изображения. Для видео с прогрессивным сканированием, кадр является кадром видео с прогрессивным сканированием. Для чередующегося видео, в иллюстративных вариантах осуществления, для кадра чередующегося видео чередование может устраняться до кодирования. Альтернативно, два комплементарных поля чередующегося видео кодируются вместе как одиночный видеокадр или кодируются как два отдельно кодированных поля. Помимо указания кадра видео с прогрессивным сканированием или кадра видео с чередующимся сканированием, признак "кадр" или "картинка" может указывать одиночное не спаренное видеополе, комплементарную пару видеополей, плоскость видеообъекта, которая представляет видеообъект в заданный момент времени, или область интереса в более большом изображении. Плоскость видеообъекта или область может быть частью большего изображения, которое включает в себя множество объектов или областей сцены.
[056] Прибывающий исходный кадр (311) сохраняется в области (320) памяти временного хранения исходных кадров, которая включает в себя множество областей (321, 322, ..., 32n) хранения буферов кадров. Буфер (321, 322, и т.д.) кадров хранит один исходный кадр в области (320) хранения исходных кадров. После того, как один или более из исходных кадров (311) были сохранены в буферах (321, 322, и т.д.) кадров, модуль (330) выбора кадров выбирает индивидуальный исходный кадр из области (320) хранения исходных кадров. Порядок, в котором кадры выбираются модулем (330) выбора кадров для ввода в кодер (340), может отличиться от порядка, в котором кадры формируются источником (310) видео, например, кодирование некоторых кадров может задерживаться в порядке, чтобы обеспечивать возможность сначала кодировать некоторые более поздние кадры и, таким образом, обеспечивать временное обратное предсказание. Перед кодером (340), система (300) кодера может включать в себя процессор предварительной обработки (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) до кодирования. Предварительная обработка может включать в себя преобразование цветового пространства в первичные (например, яркости) и вторичные (например, разности цветности в направлении к красному и в направлении к синему) компоненты и обработку повторной дискретизации (например, чтобы уменьшать пространственное разрешение компонент цветности) для кодирования. Обычно, до кодирования, видео преобразуется в цветовое пространство, такое как YUV, в котором значения отсчетов компоненты яркости (Y) представляют значения яркости или интенсивности, и значения отсчетов компонент цветности (U, V) представляют значения цветовой разности. Точные определения значений цветовой разности (и операции преобразования в/из цветового пространства YUV в другое цветовое пространство, такое как RGB) зависят от реализации. В общем, как здесь используется, признак YUV указывает любое цветовое пространство с компонентой яркости и одной или более компонентами цветности, включая сюда Y'UV, YIQ, Y'IQ и YDbDr, также как варианты, такие как YCbCr и YCoCg. Значения отсчетов цветности могут дополнительно дискретизироваться на более низкую частоту дискретизации цветности (например, для формата YUV 4:2:0), или значения отсчетов цветности могут иметь такое же разрешение, что и значения отсчетов яркости (например, для формата YUV 4:4:4). Или видео может кодироваться в другом формате (например, формате RGB 4:4:4).
[057] Кодер (340) кодирует выбранный кадр (331), чтобы формировать кодированный кадр (341), и также формирует сигналы (342) операций управления памятью ("MMCO") или информацию набора опорных картинок ("RPS"). RPS является набором кадров, которые могут использоваться для ссылки в компенсации движения для текущего кадра или любого последующего кадра. Если текущий кадр не является первым кадром, который был кодирован, при выполнении его обработки кодирования, кодер (340) может использовать один или более ранее кодированных/декодированных кадров (369), которые были сохранены в области (360) памяти временного хранения декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для интер-кадрового предсказания контента текущего исходного кадра (331). Информация (342) MMCO/RPS указывает декодеру, какие восстановленные кадры могут использоваться в качестве опорных кадров, и, следовательно, должна сохраняться в области хранения кадров.
[058] В общем, кодер (340) включает в себя множество модулей кодирования, которые выполняют задачи кодирования, как, например, разделение на мозаичные элементы, оценка интра-предсказания и предсказание, оценка движения и компенсация, частотные преобразования, квантование и энтропийное кодирование. Точные операции, выполняемые кодером (340), могут изменяться в зависимости от формата сжатия. Формат выходных кодированных данных может быть вариантом или расширением формата H.265/HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[059] Кодер (340) может разделять кадр на множество мозаичных элементов одного и того же размера или разных размеров. Например, кодер (340) разделяет кадр вдоль рядов мозаичных элементов и столбцов мозаичных элементов, которые, с границами кадра, определяют горизонтальные и вертикальные границы мозаичных элементов внутри кадра, где каждый мозаичный элемент является прямоугольной областью. Мозаичные элементы часто используются, чтобы обеспечивать варианты выбора для параллельной обработки. Кадр также может быть организован как один или более срезов, где срез может быть целым кадром или областью кадра. Срез может декодироваться независимо от других срезов в кадре, что улучшает устойчивость к ошибкам. Контент среза или мозаичного элемента дополнительно разделяется на блоки или другие наборы отсчетов в целях кодирования и декодирования.
[060] Для синтаксиса согласно стандарту H.265/HEV