RU2657210C2 - Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании - Google Patents

Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании Download PDF

Info

Publication number
RU2657210C2
RU2657210C2 RU2016135632A RU2016135632A RU2657210C2 RU 2657210 C2 RU2657210 C2 RU 2657210C2 RU 2016135632 A RU2016135632 A RU 2016135632A RU 2016135632 A RU2016135632 A RU 2016135632A RU 2657210 C2 RU2657210 C2 RU 2657210C2
Authority
RU
Russia
Prior art keywords
intra
block
prediction
encoded
current block
Prior art date
Application number
RU2016135632A
Other languages
English (en)
Other versions
RU2016135632A (ru
RU2016135632A3 (ru
Inventor
Бинь ЛИ
Цзичжэн СЮЙ
Фэн У
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2016135632A publication Critical patent/RU2016135632A/ru
Publication of RU2016135632A3 publication Critical patent/RU2016135632A3/ru
Application granted granted Critical
Publication of RU2657210C2 publication Critical patent/RU2657210C2/ru

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Группа изобретений относится к технологиям обработки цифрового видео. Техническим результатом является повышение эффективности кодирования видео. Предложен способ кодирования, реализуемый вычислительным устройством кодирования видео или вычислительным устройством кодирования изображений. Способ содержит этап, на котором определяют значения вектора блока, BV, для текущего блока в картинке, причем значение BV для текущего блока указывает смещение по отношению к опорной области в упомянутой картинке. Далее, согласно способу, определяют разностный BV для текущего блока, используя значение BV для текущего блока и предиктор BV для текущего блока. А также осуществляют кодирование текущего блока, используя интра-основанное на копии блока ("BC") предсказание с упомянутым значением BV. 6 н. и 8 з.п. ф-лы, 29 ил.

Description

УРОВЕНЬ ТЕХНИКИ
[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/HEVC, кодер разделяет контент кадра (или среза или мозаичного элемента) на единицы дерева кодирования. Единица дерева кодирования ("CTU") включает в себя значения отсчетов яркости, организованные как блок дерева кодирования ("CTB") яркости, и соответствующие значения отсчетов цветности, организованные как два блока CTB цветности. Размер единицы CTU (и ее блоков CTB) выбирается кодером, и может быть, например, 64×64, 32×32 или 16×16 значений отсчетов. CTU включает в себя одну или более единиц кодирования. Единица кодирования ("CU") имеет блок кодирования ("CB") яркости и два соответствующие блока CB цветности. Например, CTU с CTB яркости 64×64 и двумя блоками CTB цветности 64×64 (формат YUV 4:4:4) может разделяться на четыре единицы CU, при этом каждая CU включает в себя CB яркости 32×32 и два блока CB цветности 32×32, и при этом каждая CU возможно разделяется дополнительно на более малые единицы CU. Или в качестве другого примера, CTU с CTB яркости 64×64 и двумя блоками CTB цветности 32×32 (формат YUV 4:2:0) может разделяться на четыре единицы CU, при этом каждая CU включает в себя CB яркости 32×32 и два блока CB цветности 16×16, и при этом каждая CU возможно разделяется дополнительно на более малые единицы CU. Наименьший допустимый размер единицы CU (например, 8×8, 16×16) может сигнализироваться в битовом потоке.
[061] В общем, CU имеет режим предсказания, такой как интер или интра. CU включает в себя одну или более единиц предсказания в целях сигнализации информации предсказания (такой как подробности режима предсказания, значения смещения, и т.д.) и/или обработки предсказания. Единица предсказания ("PU") имеет блок предсказания ("PB") яркости и два блока PB цветности. Для интра-предсказанной CU, PU имеет такой же размер, что и CU, если CU не имеет наименьший размер (например, 8×8). В этом случае, CU может разделяться на четыре более малых единицы PU (например, каждая 4×4, если наименьший размер CU равняется 8×8) или PU может иметь наименьший размер CU, как указано посредством синтаксического элемента для CU. CU также имеет одну или более единиц преобразования для целей кодирования/декодирования остатка, где единица преобразования ("TU") имеет блок преобразования ("TB") и два блока TB цветности. PU в интра-предсказанной CU может содержать одиночную TU (равную в размере единице PU) или множество единиц TU. Кодер принимает решение в отношении того, как разделять видео на единицы CTU, единицы CU, единицы PU, единицы TU, и т.д.
[062] В вариантах осуществления H.265/HEVC, срез может включать в себя одиночный сегмент среза (независимый сегмент среза) или разделяться на множество сегментов срезов (независимый сегмент среза и один или более зависимых сегментов срезов). Сегмент среза является целым числом единиц CTU, упорядоченных последовательно в сканировании мозаичного элемента, содержащихся в одиночной единице уровня сетевой абстракции ("NAL"). Для независимого сегмента среза, заголовок сегмента среза включает в себя значения синтаксических элементов, которые применяются для независимого сегмента среза. Для зависимого сегмента среза, усеченный заголовок сегмента среза включает в себя несколько значений синтаксических элементов, которые применяются для этого зависимого сегмента среза, и значения других синтаксических элементов для зависимого сегмента среза выводятся из значений для предшествующего независимого сегмента среза в порядке декодирования.
[063] Как здесь используется, признак "блок" может указывать макроблок, единицу предсказания, единицу данных остатка, или CB, PB или TB, или некоторый другой набор значений отсчетов, в зависимости от контекста.
[064] Возвращаясь к фиг. 3, кодер представляет интра-кодированный блок исходного кадра (331) в терминах предсказания из других, ранее восстановленных значений отсчетов в кадре (331). Для интра-BC предсказания, модуль интра-картиночной оценки оценивает смещение блока по отношению к другим, ранее восстановленным значениям отсчетов (или в некоторых вариантах реализации, по отношению к исходным значениям отсчетов в кадре (331)). Опорная область интра-кадрового предсказания является областью отсчетов в кадре, которые используются, чтобы генерировать значения BC-предсказания для блока. Опорная область может указываться с помощью значения вектора блока ("BV") (определенного в оценке BV). Опорная область может быть зеркально отражена по отношению к области предсказания для блока, как здесь описано. Для интра-пространственного предсказания для блока, модуль интра-картиночной оценки оценивает экстраполяцию соседних восстановленных значений отсчетов в блок. Модуль интра-картиночной оценки может выводить информацию предсказания (такую как значения BV для интра-BC предсказания или режим предсказания (направление) для интра-пространственного предсказания), которая энтропийно кодируется. Модуль интра-кадрового предсказания применяет информацию предсказания, чтобы определять значения интра-предсказания.
[065] Кодер (340) представляет интер-кадрово кодированный, предсказанный блок исходного кадра (331) в терминах предсказания из опорных кадров. Модуль оценки движения оценивает движение блока по отношению к одному или более опорным кадрам (369). Когда используются множество опорных кадров, множество опорных кадров могут быть из разных временных направлений или одного и того же временного направления. Опорная область предсказания с компенсацией движения является областью отсчетов в опорном кадре (кадрах), которые используются, чтобы генерировать значения предсказания с компенсацией движения для блока отсчетов в текущем кадре. Опорная область может быть зеркально отражена по отношению к области предсказания для блока, как здесь описано. Модуль оценки движения выводит информацию движения, такую как информация вектора движения ("MV"), которая энтропийно кодируется. Модуль компенсации движения применяет векторы MV к опорным кадрам (369), чтобы определять значения предсказания с компенсацией движения для интер-кадрового предсказания.
[066] Кодер может определять различия (если есть какие-либо) между значениями предсказания блока (интра или интер) и соответствующими исходными значениями. Эти значения остатка предсказания дополнительно кодируются с использованием частотного преобразования, квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра квантования ("QP") для картинки, мозаичного элемента, среза и/или другой части видео, и квантует коэффициенты преобразования соответствующим образом. Энтропийный кодер кодера (340) сжимает значения квантованных коэффициентов преобразования также как некоторую стороннюю информацию (например, информацию MV, значения индексов для предикторов BV, дифференциалы BV, значения QP, решения в отношении режимов, выборы параметров). Обычные способы энтропийного кодирования включают в себя экспоненциальное кодирование Голомба, кодирование Голомба-Райса, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, кодирование длин серий, кодирование последовательностей переменной длины с использованием кодов переменной длины ("V2V"), кодирование последовательностей переменной длины с использованием кодов фиксированной длины ("V2F"), кодирование Лемпеля-Зива ("LZ"), кодирование со словарем, энтропийное кодирование с разделением на вероятностные интервалы ("PIPE"), и комбинации вышеупомянутого. Энтропийный кодер может использовать разные способы кодирования для разных типов информации, может применять множество способов в комбинации (например, посредством применения кодирования Голомба-Райса, за которым следует арифметическое кодирование), и может выбирать из множества кодовых таблиц в пределах конкретного способа кодирования.
[067] Адаптивный фильтр устранения блочности включается в контур компенсации движения в кодере (340), чтобы сглаживать разрывы между рядами и/или столбцами границ блоков в декодированном кадре. Другая фильтрация (такая как фильтрация устранения окантовочных помех, адаптивная контурная фильтрация ("ALF"), или фильтрация адаптивного к отсчетам смещения ("SAO"); не показаны) может альтернативно или дополнительно применяться в качестве операций внутриконтурной фильтрации.
[068] Кодированные данные, сформированные кодером (340), включают в себя синтаксические элементы для различных уровней синтаксиса битового потока. Для синтаксиса согласно стандарту H.265/HEVC, например, набор параметров картинки ("PPS") является синтаксической структурой, которая содержит синтаксические элементы, которые могут быть ассоциированы с картинкой. PPS может использоваться для одиночной картинки, или PPS может повторно использоваться для множества картинок в последовательности. PPS обычно сигнализируется отдельно от кодированных данных для картинки (например, одна единица NAL для PPS, и одна или более других единиц NAL для кодированных данных для картинки). Внутри кодированных данных для картинки, синтаксический элемент указывает то, какой PPS использовать для картинки. Аналогично, для синтаксиса согласно стандарту H.265/HEVC, набор параметров последовательности ("SPS") является синтаксической структурой, которая содержит синтаксические элементы, которые могут быть ассоциированы с последовательностью картинок. Битовый поток может включать в себя одиночный SPS или множество наборов SPS. SPS обычно сигнализируется отдельно от других данных для последовательности, и синтаксический элемент в упомянутых других данных указывает то, какой SPS использовать.
[069] Кодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации (342) MMCO/RPS, так как зависимости и структуры упорядочения для кадров являются уже известными в кодере (340)) обрабатываются посредством эмулятора (350) обработки декодирования. Эмулятор (350) обработки декодирования осуществляет некоторые из функциональных возможностей декодера, например, задачи декодирования для восстановления опорных кадров. Способом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) обработки декодирования определяет, должен ли заданный кодированный кадр (341) восстанавливаться и сохраняться для использования в качестве опорного кадра в интер-кадровом предсказании последующих кадров, подлежащих кодированию. Если кодированный кадр (341) должен сохраняться, эмулятор (350) обработки декодирования моделирует обработку декодирования, которая бы проводилась декодером, который принимает кодированный кадр (341), и формирует соответствующий декодированный кадр (351). Таким способом, когда кодер (340) использует декодированный кадр (кадры) (369), которые были сохранены в области (360) хранения декодированных кадров, эмулятор (350) обработки декодирования также использует декодированный кадр (кадры) (369) из области (360) хранения как часть обработки декодирования.
[070] Область (360) памяти временного хранения декодированных кадров включает в себя множество областей (361, 362, ..., 36n) хранения буферов кадров. Способом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) обработки декодирования управляет содержимым области (360) хранения, чтобы идентифицировать любые буферы (361, 362, и т.д.) кадров с кадрами, которые более не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования обработки декодирования, эмулятор (350) обработки декодирования сохраняет вновь декодированный кадр (351) в буфере (361, 362, и т.д.) кадров, который был идентифицирован таким образом.
[071] Кодированные кадры (341) и информация (342) MMCO/RPS буферизуются во временной области (370) кодированных данных. Кодированные данные, которые агрегируются в области (370) кодированных данных, содержат, как часть синтаксиса элементарного кодированного битового видеопотока, кодированные данные для одной или более картинок. Кодированные данные, которые агрегируются в области (370) кодированных данных, также могут включать в себя метаданные мультимедиа, относящиеся к кодированным видеоданным (например, как один или более параметров в одном или более сообщениях дополнительной информации расширения ("SEI") или сообщениях информации удобства в использовании видео ("VUI")).
[072] Агрегированные данные (371) из временной области (370) кодированных данных обрабатываются посредством канального кодера (380). Канальный кодер (380) может пакетировать и/или мультиплексировать агрегированные данные для передачи или сохранения в качестве мультимедийного потока (например, согласно формату потока мультимедийной программы или транспортного потока, такому как ITU-T H.222.0 | ISO/IEC 13818-1, или формату транспортного протокола реального времени сети Интернет, такому как IETF RFC 3550), в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса потока передачи мультимедиа. Или канальный кодер (380) может организовывать агрегированные данные для сохранения в виде файла (например, согласно формату контейнера мультимедиа, такому как ISO/IEC 14496-12), в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса файла хранения мультимедиа. Или более широко, канальный кодер (380) может осуществлять один или более протоколов мультиплексирования мультимедийной системы или транспортных протоколов, в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса протокола (протоколов). Канальный кодер (380) обеспечивает вывод в канал (390), который представляет хранилище, соединение передачи данных, или другой канал для вывода. Канальный кодер (380) или канал (390) также может включать в себя другие элементы (не показаны), например, для кодирования с прямой коррекцией ошибок ("FEC") и модуляции аналогового сигнала.
IV. ИЛЛЮСТРАТИВНЫЕ СИСТЕМЫ ДЕКОДЕРА
[073] Фиг. 4 является блок-схемой иллюстративной системы (400) декодера, совместно с которой могут осуществляться некоторые описанные варианты осуществления. Система (400) декодера может быть инструментом декодирования общего назначения, выполненным с возможностью работы в любом из множества режимов декодирования, как, например, режиме декодирования с низкой задержкой для связи реального времени и режиме декодирования с более высокой задержкой для проигрывания мультимедиа из файла или потока, или она может быть инструментом декодирования специального назначения, адаптированным для одного такого режима декодирования. Система (400) декодера может быть выполнена с возможностью для декодирования конкретного типа контента (например, контента захвата экрана). Система (400) декодера может осуществляться как модуль операционной системы, как часть прикладной библиотеки или как изолированное приложение. В целом, система (400) декодера принимает кодированные данные из канала (410) и формирует восстановленные кадры как вывод для назначения (490) вывода. Кодированные данные могут включать в себя контент, который был кодирован с использованием зеркального отражения блоков и/или режима пропуска в интра-BC предсказании, как здесь описано.
[074] Система (400) декодера включает в себя канал (410), который может представлять хранилище, соединение передачи данных, или другой канал для кодированных данных в качестве ввода. Канал (410) формирует кодированные данные, которые были кодированы в канале. Канальный декодер (420) может обрабатывать кодированные данные. Например, канальный декодер (420) депакетирует и/или демультиплексирует данные, которые были агрегированы для передачи или сохранения в виде мультимедийного потока (например, согласно формату потока мультимедийной программы или транспортного потока, такому как ITU-T H.222.0 | ISO/IEC 13818-1, или формату транспортного протокола реального времени сети Интернет, такому как IETF RFC 3550), в этом случае канальный декодер (420) может осуществлять синтаксический разбор синтаксических элементов, добавленных как часть синтаксиса потока передачи мультимедиа. Или канальный декодер (420) разделяет кодированные видеоданные, которые были агрегированы для сохранения в виде файла (например, согласно формату контейнера мультимедиа, такому как ISO/IEC 14496-12), в этом случае канальный декодер (420) может осуществлять синтаксический разбор синтаксических элементов, добавленных как часть синтаксиса файла хранения мультимедиа. Или, более широко, канальный декодер (420) может осуществлять один или более протоколов демультиплексирования мультимедийной системы или транспортных протоколов, в этом случае канальный декодер (420) может осуществлять синтаксический разбор синтаксических элементов, добавленных как часть синтаксиса протокола (протоколов). Канал (410) или канальный декодер (420) также может включать в себя другие элементы (не показаны), например, для декодирования с FEC и демодуляции аналогового сигнала.
[075] Кодированные данные (421), которые выводятся из канального декодера (420), сохраняются во временной области (430) кодированных данных до тех пор, когда будет принято достаточное количество таких данных. Кодированные данные (421) включают в себя кодированные кадры (431) и информацию (432) MMCO/RPS. Кодированные данные (421) в области (430) кодированных данных содержат, как часть синтаксиса элементарного кодированного битового видеопотока, кодированные данные для одной или более картинок. Кодированные данные (421) в области (430) кодированных данных также могут включать в себя метаданные мультимедиа, относящиеся к кодированным видеоданным (например, как один или более параметров в одном или более сообщениях SEI или сообщениях VUI).
[076] В общем, область (430) кодированных данных временно хранит кодированные данные (421) до тех пор, когда такие кодированные данные (421) используются декодером (450). В этот момент, кодированные данные для кодированного кадра (431) и информации (432) MMCO/RPS передаются из области (430) кодированных данных в декодер (450). По мере того, как декодирование продолжается, новые кодированные данные добавляются в область (430) кодированных данных и самые старые кодированные данные, остающиеся в области (430) кодированных данных, передаются в декодер (450).
[077] Декодер (450) декодирует кодированный кадр (431), чтобы формировать соответствующий декодированный кадр (451). Как надлежит, при выполнении своей обработки декодирования, декодер (450) может использовать один или более ранее декодированных кадров (469) в качестве опорных кадров для интер-кадрового предсказания. Декодер (450) считывает такие ранее декодированные кадры (469) из области (460) памяти временного хранения декодированных кадров. В общем, декодер (450) включает в себя множество модулей декодирования, которые выполняют задачи декодирования, такие как энтропийное декодирование, интра-кадровое предсказание, интер-кадровое предсказание с компенсацией движения, обратное квантование, обратные частотные преобразования, и слияние мозаичных элементов. Точные операции, выполняемые декодером (450), могут изменяться в зависимости от формата сжатия.
[078] Например, декодер (450) принимает кодированные данные для сжатого кадра или последовательности кадров и формирует вывод, включающий в себя декодированный кадр (451). В декодере (450), буфер принимает кодированные данные для сжатого кадра и, в соответствующее время, делает принятые кодированные данные доступными для энтропийного декодера. Энтропийный декодер осуществляет энтропийное декодирование подвергнутых энтропийному кодированию квантованных данных также как подвергнутой энтропийному кодированию сторонней информации, обычно применяя обращение энтропийного кодирования, выполненного в кодере. Модуль компенсации движения применяет информацию движения к одному или более опорным кадрам, чтобы формировать значения предсказания с компенсацией движения для любых интер-кодированных блоков кадра, который восстанавливается. Интер-кадровая опорная область может быть зеркально отражена по отношению к области предсказания для блока, как здесь описано. Модуль интра-кадрового предсказания может пространственно предсказывать значения отсчетов текущего блока из соседних, ранее восстановленных значений отсчетов или, для интра-BC предсказания, предсказывать значения отсчетов текущего блока с использованием ранее восстановленных значений отсчетов области интра-кадрового предсказания в кадре. Интра-кадровая опорная область может указываться с помощью значения BV. Опорная область может быть зеркально отражена по отношению к области предсказания для блока, как здесь описано. Декодер (450) также восстанавливает значения остатка предсказания. Модуль обратного квантования осуществляет обратное квантование энтропийно декодированных данных. Например, декодер (450) устанавливает значения для QP для картинки, мозаичного элемента, среза и/или другой части видео на основе синтаксических элементов в битовом потоке, и осуществляет обратное квантование коэффициентов преобразования соответствующим образом. Модуль обратного частотного преобразования преобразует квантованные, данные частотной области в данные пространственной области. Для интер-кадрово предсказанного блока, декодер (450) комбинирует восстановленные значения остатка предсказания со значениями предсказания с компенсацией движения. Декодер (450) может аналогичным образом комбинировать значения остатка предсказания со значениями предсказания из интра-предсказания. Адаптивный фильтр устранения блочности включен в контур компенсации движения в декодере (450) видео, чтобы сглаживать разрывы между рядами и/или столбцами границ блока в декодированном кадре (451). Другая фильтрация (такая как фильтрация устранения окантовочных помех, ALF, или фильтрация SAO; не показаны) может альтернативно или дополнительно применяться в качестве операций внутриконтурной фильтрации.
[079] Область (460) памяти временного хранения декодированных кадров включает в себя множество областей (461, 462, ..., 46n) хранения буферов кадров. Область (460) хранения декодированных кадров является примером буфера декодированных картинок. Декодер (450) использует информацию (432) MMCO/RPS, чтобы идентифицировать буфер (461, 462, и т.д.) кадров, в котором он может сохранить декодированный кадр (451). Декодер (450) сохраняет декодированный кадр (451) в этом буфере кадров.
[080] Секвенсер (480) вывода идентифицирует то, когда следующий кадр, подлежащий формированию в порядке вывода, является доступным в области (460) хранения декодированных кадров. Когда следующий кадр (481), подлежащий формированию в порядке вывода, является доступным в области (460) хранения декодированных кадров, он считывается секвенсером (480) вывода и выводится в назначение (490) вывода (например, устройство отображения). В общем, порядок, в котором кадры выводятся из области (460) хранения декодированных кадров секвенсером (480) вывода, может отличиться от порядка, в котором кадры декодируются декодером (450).
V. ИЛЛЮСТРАТИВНЫЕ КОДЕРЫ ВИДЕО
[081] Фиг. 5a и 5b являются блок-схемой обобщенного кодера (500) видео, совместно с которым могут осуществляться некоторые описанные варианты осуществления. Кодер (500) принимает последовательность видеокартинок, включающих в себя текущую картинку, в качестве входного видеосигнала (505) и формирует кодированные данные в кодированном битовом видеопотоке (595) в качестве вывода.
[082] Кодер (500) основывается на блоках и использует блочный формат, который зависит от реализации. Блоки могут дополнительно подразделяться на разных этапах, например, на этапах предсказания, частотного преобразования и/или энтропийного кодирования. Например, картинка может разделяться на блоки 64×64, блоки 32×32 или блоки 16×16, которые могут, в свою очередь, разделяться на более малые блоки значений отсчетов для кодирования и декодирования. В вариантах осуществления кодирования для стандарта H.265/HEVC, кодер разделяет картинку на единицы CTU (блоки CTB), единицы CU (блоки CB), единицы PU (блоки PB) и единицы TU (блоки TB).
[083] Кодер (500) сжимает картинки с использованием интра-картиночного кодирования и/или интер-картиночного кодирования. Многие из компонентов кодера (500) используются как для интра-картиночного кодирования, так и для интер-картиночного кодирования. Точные операции, выполняемые этими компонентами, могут изменяться в зависимости от типа информации, которая сжимается.
[084] Модуль (510) мозаичных элементов необязательно разделяет картинку на множество мозаичных элементов одного и того же размера или разных размеров. Например, модуль (510) мозаичных элементов разделяет картинку вдоль рядов мозаичных элементов и столбцов мозаичных элементов, которые, с границами картинки, определяют горизонтальные и вертикальные границы мозаичных элементов внутри картинки, где каждый мозаичный элемент является прямоугольной областью. В вариантах осуществления H.265/HEVC, кодер (500) разделяет картинку на один или более срезов, где каждый срез включает в себя один или более сегментов срезов.
[085] Общее управление (520) кодированием принимает картинки для входного видеосигнала (505) также как обратную связь (не показана) от различных модулей кодера (500). В целом, общее управление (520) кодированием обеспечивает сигналы управления (не показаны) в другие модули (такие как модуль (510) мозаичных элементов, модуль преобразования/модуль масштабирования/модуль квантования (530), модуль масштабирования/модуль обратного преобразования (535), модуль (540) интра-картиночной оценки, модуль (550) оценки движения и модуль переключения интра/интер), чтобы устанавливать и изменять параметры кодирования во время кодирования. В частности, общее управление (520) кодированием может принимать решение в отношении того, использовать ли и как аспекты интра-BC предсказания (например, режим пропуска, зеркальное отражение блоков) во время кодирования. Общее управление (520) кодированием также может оценивать промежуточные результаты во время кодирования, например, выполняя анализ отношения искажения к скорости передачи. Общее управление (520) кодированием формирует общие данные (522) управления, которые указывают решения, принимаемые во время кодирования, так что соответствующий декодер может принимать совместимые решения. Общие данные (522) управления обеспечиваются в модуль форматирования заголовков/энтропийный кодер (590).
[086] Если текущая картинка предсказывается с использованием интер-картиночного предсказания, модуль (550) оценки движения оценивает движение блоков значений отсчетов в текущей картинке входного видеосигнала (505) по отношению к одной или более опорным картинкам. Модуль (550) оценки движения может оценивать варианты выбора для зеркального отражения заданной опорной области для интер-картиночно кодированного блока, как описано ниже. Буфер (570) декодированных картинок буферизует одну или более восстановленных ранее кодированных картинок для использования в качестве опорных картинок. Когда используется множество опорных картинок, множество опорных картинок может быть из разных временных направлений или одного и того же временного направления. Модуль (550) оценки движения формирует в качестве сторонней информации данные (552) движения, такие как данные MV, значения индексов режимов слияния, данные выбора опорных картинок, и то, используется ли зеркальное отражение блоков. Данные (552) движения обеспечиваются в модуль форматирования заголовков/энтропийный кодер (590) также как модуль (555) компенсации движения.
[087] Модуль (555) компенсации движения применяет векторы MV к восстановленной опорной картинке (картинкам) из буфера (570) декодированных картинок. Модуль (555) компенсации движения формирует предсказания с компенсацией движения для текущей картинки. Когда используется зеркальное отражение блоков, модуль (555) компенсации движения может учитывать зеркальное отражение для области предсказания (для текущего блока) по отношению к ее опорной области, как описано ниже.
[088] В отдельном пути внутри кодера (500), модуль (540) интра-картиночной оценки определяет то, как выполнять интра-картиночное предсказание для блоков значений отсчетов текущей картинки входного видеосигнала (505). Текущая картинка может полностью или частично кодироваться с использованием интра-картиночного кодирования. С использованием значений восстановления (538) текущей картинки, для интра-пространственного предсказания, модуль (540) интра-картиночной оценки определяет то, как пространственно предсказывать значения отсчетов текущего блока в текущей картинке из соседних, ранее восстановленных значений отсчетов текущей картинки. Или для интра-BC предсказания с использованием значений BV, модуль (540) интра-картиночной оценки оценивает смещение значений отсчетов текущего блока для разных опорных областей-кандидатов внутри текущей картинки. Опорные области-кандидаты могут включать в себя восстановленные значения отсчетов или, в некоторых вариантах реализации в целях оценки BV, исходные значения отсчетов из входного видео. Модуль (540) интра-картиночной оценки может оценивать разные варианты выбора для зеркального отражения области интра-BC предсказания (для текущего блока) по отношению к соответствующим опорным областям-кандидатам, как описано ниже.
[089] Модуль (540) интра-картиночной оценки формирует в качестве сторонней информации данные (542) интра-предсказания, такие как информация, указывающая то, использует ли интра-предсказание пространственное предсказание или интра-BC предсказание, направление режима предсказания (для интра-пространственного предсказания), значения BV (для интра-BC предсказания), и то, используется ли зеркальное отражение блоков (для интра-BC предсказания). Данные (542) интра-предсказания обеспечиваются в модуль форматирования заголовков/энтропийный кодер (590) также как модуль (545) интра-картиночного предсказания.
[090] Согласно данным (542) интра-предсказания, модуль (545) интра-картиночного предсказания пространственно предсказывает значения отсчетов текущего блока в текущей картинке из соседних, ранее восстановленных значений отсчетов текущей картинки. Или для интра-BC предсказания, модуль (545) интра-картиночного предсказания предсказывает значения отсчетов текущего блока с использованием ранее восстановленных значений отсчетов опорной области интра-кадрового предсказания, которая указывается посредством значения BV для текущего блока. Для интра-BC предсказания, модуль (545) интра-картиночного предсказания может учитывать зеркальное отражение для области интра-BC предсказания (для текущего блока) по отношению к ее опорной области, как описано ниже. В некоторых случаях, значение BV может быть предиктором BV (предсказанным значением BV). В других случаях, значение BV может быть другим, нежели его предсказанное значение BV. Когда данные цветности для картинки имеют такое же разрешение, что и данные яркости (например, когда формат является форматом YUV 4:4:4 или форматом RGB 4:4:4), значение BV, которое применяется для блока цветности, может быть таким же, что и значение BV, применяемое для блока яркости. С другой стороны, когда данные цветности для картинки имеют уменьшенное разрешение по отношению к данным яркости (например, когда формат является форматом YUV 4:2:0), для значения BV, которое применяется для блока цветности, может уменьшаться масштаб и возможно оно округляется, чтобы осуществлять регулировку в отношении различия в разрешении цветности (например, посредством разделения вертикальной и горизонтальной компонент значения BV на два и усечения или округления их до целочисленных значений).
[091] Модуль переключения интра/интер выбирает то, будет ли предсказание (558) для заданного блока предсказанием с компенсацией движения или интра-картиночным предсказанием. Различие (если есть какое-либо) между блоком предсказания (558) и соответствующей частью исходной текущей картинки входного видеосигнала (505) обеспечивает значения остатка (518), для блока режима без пропуска. Во время восстановления текущей картинки, для блока режима без пропуска, восстановленные значения остатка комбинируются с предсказанием (558), чтобы формировать приближенное или точное восстановление (538) исходного контента из видеосигнала (505). (В сжатии с потерями, некоторая информация теряется из видеосигнала (505).)
[092] В модуле преобразования/модуле масштабирования/модуле квантования (530), модуль частотного преобразования преобразует видеоинформацию пространственной области в данные частотной области (то есть, спектральные, преобразованные). Для основанного на блоках кодирования видео, модуль частотного преобразования применяет дискретное косинусное преобразование ("DCT"), его целочисленную аппроксимацию, или другой тип прямого блочного преобразования (например, дискретное синусное преобразование или его целочисленную аппроксимацию) к блокам данных остатка предсказания (или данным значений отсчетов, если предсказание (558) является нулевым), формируя блоки коэффициентов частотного преобразования. Кодер (500) также может быть выполнен с возможностью указывать, что такой этап преобразования пропускается. Модуль масштабирования/модуль квантования масштабирует и квантует коэффициенты преобразования. Например, модуль квантования применяет скалярное квантование мертвой зоны к данным частотной области с размером шага квантования, который изменяется на основе от кадра к кадру, на основе от мозаичного элемента к мозаичному элементу, на основе от среза к срезу, на основе от блока к блоку, на основе конкретной частоты или на другой основе. Данные (532) квантованных коэффициентов преобразования обеспечиваются в модуль форматирования заголовков/энтропийный кодер (590).
[093] В модуле масштабирования/модуле обратного преобразования (535), модуль масштабирования/модуль обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Модуль обратного частотного преобразования выполняет обратное частотное преобразование, формируя блоки восстановленных значений остатка предсказания или значений отсчетов. Для блока режима без пропуска, кодер (500) комбинирует восстановленные значения остатка со значениями предсказания (558) (например, значениями предсказания с компенсацией движения, значениями интра-картиночного предсказания), чтобы формировать восстановление (538). Для блока режима пропуска, кодер (500) использует значения предсказания (558) в качестве восстановления (538).
[094] Для интра-картиночного предсказания, значения восстановления (538) могут обеспечиваться назад в модуль (540) интра-картиночной оценки и модуль (545) интра-картиночного предсказания. Также значения восстановления (538) могут использоваться для предсказания с компенсацией движения последующих картинок. Значения восстановления (538) могут дополнительно фильтроваться. Управление (560) фильтрацией определяет то, как выполнять фильтрацию устранения блочности и фильтрацию SAO над значениями восстановления (538), для заданной картинки видеосигнала (505). Управление (560) фильтрацией формирует данные (562) управления фильтром, которые обеспечиваются в модуль форматирования заголовков/энтропийный кодер (590) и модуль слияния/фильтр (фильтры) (565).
[095] В модуле слияния/фильтре (фильтрах) (565), кодер (500) осуществляет слияние контента из разных мозаичных элементов в восстановленную версию картинки. Кодер (500) избирательно выполняет фильтрацию устранения блочности и фильтрацию SAO согласно данным (562) управления фильтром, чтобы адаптивно сглаживать разрывы между границами в кадрах. Другая фильтрация (такая как фильтрация устранения окантовочных помех или ALF; не показана) может альтернативно или дополнительно применяться. Границы мозаичных элементов могут избирательно фильтроваться или не фильтроваться вовсе, в зависимости от настроек кодера (500), и кодер (500) может обеспечивать синтаксис внутри кодированного битового потока, чтобы указывать, была ли такая фильтрация применена. Буфер (570) декодированных картинок буферизует восстановленную текущую картинку для использования в последующем предсказании с компенсацией движения.
[096] Модуль форматирования заголовков/энтропийный кодер (590) форматирует и/или энтропийно кодирует общие данные (522) управления, данные (532) квантованных коэффициентов преобразования, данные (542) интра-предсказания, данные (552) движения и данные (562) управления фильтром. Для данных (542) интра-предсказания, модуль форматирования заголовков/энтропийный кодер (590) может выбирать и энтропийно кодировать значения индексов предикторов BV (для интра-BC предсказания). Модуль форматирования заголовков/энтропийный кодер (590) также может энтропийно кодировать синтаксические элементы, указывающие то, используется ли зеркальное отражение блоков для интра-BC предсказания (или компенсации движения). В некоторых случаях, модуль форматирования заголовков/энтропийный кодер (590) также определяет дифференциалы BV для значений BV (по отношению к предикторам BV для значений BV), затем энтропийно кодирует дифференциалы BV, например, с использованием контекстно-адаптивного двоичного арифметического кодирования. В частности, для интра-BC предсказанного блока режима пропуска, сигнализируется дифференциал BV.
[097] Модуль форматирования заголовков/энтропийный кодер (590) обеспечивает кодированные данные в кодированном битовом видеопотоке (595). Формат кодированного битового видеопотока (595) может быть вариантом или расширением формата H.265/HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[098] В зависимости от реализации и требуемого типа сжатия, модули кодера могут добавляться, пропускаться, разделяться на множество модулей, комбинироваться с другими модулями, и/или заменяться на подобные модули. В альтернативных вариантах осуществления, кодеры с разными модулями и/или другими конфигурациями модулей выполняют один или более из описанных способов. Конкретные варианты осуществления кодеров обычно используют вариант или дополненную версию кодера (500). Соотношения, показанные между модулями внутри кодера (500), указывают общие потоки информации в кодере; другие соотношения не показаны ради простоты.
VI. ИЛЛЮСТРАТИВНЫЕ ДЕКОДЕРЫ ВИДЕО
[099] Фиг. 6 является блок-схемой обобщенного декодера (600), совместно с которым могут осуществляться некоторые описанные варианты осуществления. Декодер (600) принимает кодированные данные в кодированном битовом видеопотоке (605) и формирует вывод, включающий в себя картинки для восстановленного видео (695). Формат кодированного битового видеопотока (605) может быть вариантом или расширением формата H.265/HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[0100] Декодер (600) основывается на блоках и использует блочный формат, который зависит от реализации. Блоки могут дополнительно подразделяться на разных этапах. Например, картинка может разделяться на блоки 64×64, блоки 32×32 или блоки 16×16, которые могут, в свою очередь, разделяться на более малые блоки значений отсчетов. В вариантах осуществления декодирования для стандарта H.265/HEVC, картинка разделяется на единицы CTU (блоки CTB), единицы CU (блоки CB), единицы PU (блоки PB) и единицы TU (блоки TB).
[0101] Декодер (600) распаковывает картинки с использованием интра-картиночного декодирования и/или интер-картиночного декодирования. Многие из компонентов декодера (600) используются как для интра-картиночного декодирования, так и для интер-картиночного декодирования. Точные операции, выполняемые этими компонентами, могут изменяться в зависимости от типа информации, которая распаковывается.
[0102] Буфер принимает кодированные данные в кодированном битовом видеопотоке (605) и делает принятые кодированные данные доступными для модуля синтаксического разбора/энтропийного декодера (610). Модуль синтаксического разбора/энтропийный декодер (610) осуществляет энтропийное декодирование подвергнутых энтропийному кодированию данных, обычно применяя обращение энтропийного кодирования, выполненного в кодере (500) (например, контекстно-адаптивное двоичное арифметическое декодирование). Как результат синтаксического разбора и энтропийного декодирования, модуль синтаксического разбора/энтропийный декодер (610) формирует общие данные (622) управления, данные (632) квантованных коэффициентов преобразования, данные (642) интра-предсказания, данные (652) движения и данные (662) управления фильтром. Для данных (642) интра-предсказания, модуль синтаксического разбора/энтропийный декодер (610) осуществляет энтропийное декодирование значений индексов предикторов BV (для интра-BC предсказания). Модуль синтаксического разбора/энтропийный декодер (610) также осуществляет энтропийное декодирование синтаксических элементов, указывающих то, используется ли зеркальное отражение блоков для интра-BC предсказания (или компенсации движения). В некоторых случаях, модуль синтаксического разбора/энтропийный декодер (610) также осуществляет энтропийное декодирование дифференциалов BV для значений BV (например, с использованием контекстно-адаптивного двоичного арифметического декодирования), затем комбинирует дифференциалы BV с соответствующими предикторами BV, чтобы восстанавливать значения BV. В частности, для интра-BC предсказанного блока режима пропуска, дифференциал BV подвергается синтаксическому разбору из битового потока и комбинируется с предиктором BV (например, указанным с помощью значения индекса предиктора BV), чтобы восстанавливать значение BV.
[0103] Общее управление (620) декодированием принимает общие данные (622) управления и обеспечивает сигналы управления (не показаны) в другие модули (такие как модуль масштабирования/модуль обратного преобразования (635), модуль (645) интра-картиночного предсказания, модуль (655) компенсации движения и модуль переключения интра/интер), чтобы устанавливать и изменять параметры декодирования во время декодирования.
[0104] Если текущая картинка предсказана с использованием интер-картиночного предсказания, модуль (655) компенсации движения принимает данные (652) движения, такие как данные MV, данные выбора опорной картинки, значения индексов режимов слияния и синтаксические элементы, указывающие то, используется ли зеркальное отражение блоков (для компенсации движения). Модуль (655) компенсации движения применяет векторы MV к восстановленной опорной картинке (картинкам) из буфера (670) декодированных картинок. Когда используется зеркальное отражение блоков, модуль (655) компенсации движения может учитывать зеркальное отражение для области предсказания (для текущего блока) по отношению к ее опорной области, как описано ниже. Модуль (655) компенсации движения формирует предсказания с компенсацией движения для интер-кодированных блоков в текущей картинке. Буфер (670) декодированных картинок сохраняет одну или более ранее восстановленных картинок для использования в качестве опорных картинок.
[0105] В отдельном пути внутри декодера (600), модуль (645) интра-кадрового предсказания принимает данные (642) интра-предсказания, такие как информация, указывающая, использует ли интра-предсказание пространственное предсказание или интра-BC предсказание, направление режима предсказания (для интра-пространственного предсказания), значения BV (для интра-BC предсказания) и синтаксические элементы, указывающие то, используется ли зеркальное отражение блоков (для интра-BC предсказания). Для интра-пространственного предсказания, с использованием значений восстановления (638) текущей картинки, согласно данным режима предсказания, модуль (645) интра-картиночного предсказания пространственно предсказывает значения отсчетов текущего блока в текущей картинке из соседних, ранее восстановленных значений отсчетов текущей картинки. Или для интра-BC предсказания с использованием значений BV, модуль (645) интра-картиночного предсказания предсказывает значения отсчетов текущего блока с использованием ранее восстановленных значений отсчетов опорной области интра-кадрового предсказания, которая указывается посредством значения BV для текущего блока. Для интра-BC предсказания, модуль (645) интра-картиночного предсказания может учитывать зеркальное отражение для области интра-BC предсказания (для текущего блока) по отношению к ее опорной области, как описано ниже.
[0106] Модуль переключения интра/интер выбирает то, является ли предсказание (658) для заданного блока предсказанием с компенсацией движения или интра-картиночным предсказанием. Например, при следовании синтаксису H.265/HEVC, модуль переключения интра/интер может управляться на основе одного или более синтаксических элементов, кодированных для CU в картинке, которая может содержать интра-предсказанные единицы CU и интер-предсказанные единицы CU. Для блока режима без пропуска, декодер (600) комбинирует предсказание (658) с восстановленными значениями остатка, чтобы формировать восстановление (638) контента из видеосигнала. Для блока режима пропуска, декодер (600) использует значения предсказания (658) в качестве восстановления (638).
[0107] Чтобы восстанавливать остаток для блока режима без пропуска, модуль масштабирования/модуль обратного преобразования (635) принимает и обрабатывает данные (632) квантованных коэффициентов преобразования. В модуле масштабирования/модуле обратного преобразования (635), модуль масштабирования/модуль обратного квантования выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Модуль обратного частотного преобразования выполняет обратное частотное преобразование, формируя блоки восстановленных значений остатка предсказания или значений отсчетов. Например, модуль обратного частотного преобразования применяет обратное блочное преобразование к коэффициентам частотного преобразования, формируя данные значений отсчетов или данные остатка предсказания. Обратное частотное преобразование может быть обратным DCT, его целочисленной аппроксимацией, или другим типом обратного частотного преобразования (например, обратным дискретным синусным преобразованием или его целочисленной аппроксимацией).
[0108] Для интра-картиночного предсказания, значения восстановления (638) могут обеспечиваться назад в модуль (645) интра-картиночного предсказания. Для интер-картиночного предсказания, значения восстановления (638) могут дополнительно фильтроваться. В модуле слияния/фильтре (фильтрах) (665), декодер (600) осуществляет слияние контента из разных мозаичных элементов в восстановленную версию картинки. Декодер (600) избирательно выполняет фильтрацию устранения блочности и фильтрацию SAO согласно данным (662) управления фильтром и правилам для адаптации фильтра, чтобы адаптивно сглаживать разрывы между границами в кадрах. Другая фильтрация (такая как фильтрация устранения окантовочных помех или ALF; не показана) может альтернативно или дополнительно применяться. Границы мозаичных элементов могут избирательно фильтроваться или не фильтроваться вовсе, в зависимости от настроек декодера (600) или индикации синтаксиса внутри кодированных данных битового потока. Буфер (670) декодированных картинок буферизует восстановленную текущую картинку для использования в последующем предсказании с компенсацией движения.
[0109] Декодер (600) также может включать в себя фильтр постобработки. Фильтр (608) постобработки может включать в себя фильтрацию устранения окантовочных помех, адаптивную винеровскую фильтрацию, фильтрацию воспроизведения зерна пленки, фильтрацию SAO или другой тип фильтрации.
[0110] В зависимости от реализации и требуемого типа распаковки, модули декодера могут добавляться, пропускаться, разделяться на множество модулей, комбинироваться с другими модулями, и/или заменяться на подобные модули. В альтернативных вариантах осуществления, декодеры с разными модулями и/или другими конфигурациями модулей выполняют один или более из описанных способов. Конкретные варианты осуществления декодеров обычно используют вариант или дополненную версию декодера (600). Соотношения, показанные между модулями внутри декодера (600), указывают общие потоки информации в декодере; другие соотношения не показаны ради простоты.
VII. НОВАТОРСКИЕ РЕШЕНИЯ В ИНТРА-ОСНОВАННОМ НА КОПИИ БЛОКА ПРЕДСКАЗАНИИ
[0111] Этот раздел представляет признаки интра-основанного на копии блока ("BC") предсказания. Например, некоторые из признаков относятся к зеркальному отражению блоков, в котором область интра-BC предсказания зеркально отражена по отношению к опорной области, которая может указываться посредством значения вектора блока ("BV"). Другие признаки относятся к сигнализации режима пропуска, в котором текущий интра-BC предсказанный блок использует сигнализированный дифференциал BV, но не имеет данных остатка. Во многих ситуациях, эти признаки улучшают эффективность кодирования для интра-BC предсказанных блоков.
[0112] В частности, описанные новаторские решения могут улучшать производительность отношения искажения к скорости передачи при кодировании некоторого "искусственно" созданного видеоконтента, такого как контент захвата экрана. Контент захвата экрана обычно включает в себя повторяющиеся структуры (например, графику, текстовые символы), которые обеспечивают возможности для интра-BC предсказания для улучшения производительности. Контент захвата экрана обычно кодируется в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением дискретизации цветности, хотя он также может кодироваться в формате с более низким разрешением дискретизации цветности (например, YUV 4:2:0). Общие сценарии для кодирования/декодирования контента захвата экрана включают в себя конференц-связь удаленного рабочего стола и кодирование/декодирование графических наложений на естественное видео или другого видео "смешанного контента".
A. РЕЖИМ ИНТРА-BC ПРЕДСКАЗАНИЯ, ЗНАЧЕНИЯ BV И ПРЕДСКАЗАНИЕ BV - ВВЕДЕНИЕ
[0113] Для интра-BC предсказания, значения отсчетов текущего блока в картинке предсказываются с использованием значений отсчетов в той же картинке. Значение BV указывает смещение от текущего блока к области в картинке ("опорной области"), которая включает в себя значения отсчетов, используемые для предсказания. Опорная область обеспечивает предсказанные значения ("область интра-BC предсказания") для текущего блока. Значения отсчетов, используемые для предсказания, являются ранее восстановленными значениями отсчетов, которые являются, таким образом, доступными в кодере во время кодирования и в декодере во время декодирования. Значение BV может сигнализироваться в битовом потоке, и декодер может использовать значение BV, чтобы определять опорную область (которая была восстановлена в декодере) в картинке, чтобы использовать для предсказания. Интра-BC предсказание является формой интра-картиночного предсказания - интра-BC предсказание для блока в картинке не использует какие-либо значения отсчетов, другие, нежели значения отсчетов в той же картинке.
[0114] Фиг. 7a иллюстрирует интра-BC предсказание для текущего блока (760) в текущем кадре (710). Текущий блок может быть блоком кодирования ("CB") единицы кодирования ("CU"), блоком предсказания ("PB") единицы предсказания ("PU"), блоком преобразования ("TB") единицы преобразования ("TU") или другим блоком. Размер текущего блока может быть 64×64, 32×32, 16×16, 8×8 или некоторым другим размером. Более широко, размер текущего блока равняется m×n, где каждое из m и n является целым числом, и где m и n могут быть равны друг другу или могут иметь разные значения. Альтернативно, текущий блок может иметь некоторую другую форму (например, область кодированного видеообъекта с непрямоугольной формой).
[0115] BV (761) указывает смещение (или сдвиг) от текущего блока (760) к опорной области (780) в картинке, которая включает в себя значения отсчетов, используемые для предсказания. Опорная область (780), указанная посредством BV (761), иногда называется "соответствующий блок" для текущего блока (760). Соответствующий блок может быть идентичным текущему блоку (760), или он может быть приближением текущего блока (760). Предположим, что верхнее левое положение текущего блока находится в положении (x0, y0) в текущем кадре, и предположим, что верхнее левое положение опорной области находится в положении (x1, y1) в текущем кадре. BV указывает смещение (x1-x0, y1-y0). Например, если верхнее левое положение текущего блока находится в положении (256, 128), и верхнее левое положение опорной области находится в положении (176, 104), значение BV является (-80, -24). В этом примере, отрицательное горизонтальное смещение указывает положение слева от текущего блока, и отрицательное вертикальное смещение указывает положение выше текущего блока.
[0116] Интра-BC предсказание может улучшать эффективность кодирования посредством использования избыточности (такой как повторяющиеся паттерны внутри кадра) с использованием операций BC. Значения отсчетов текущего блока представляются с использованием значения BV вместо непосредственного кодирования значений отсчетов текущего блока. Даже если значения отсчетов текущего блока не точно соответствуют значениям отсчетов опорной области, указанной с помощью значения BV, разности могут быть незначительными (не заметными для восприятия). Или, если различия являются значительными, различия могут кодироваться как значения остатка, которые могут сжиматься более эффективно, чем исходные значения отсчетов для текущего блока.
[0117] Вместе, значения BV для блоков, кодированных с использованием интра-BC предсказания, могут потреблять значительное количество бит. Значения BV могут энтропийно кодироваться, чтобы уменьшать битрейт. Чтобы дополнительно уменьшать битрейт для значений BV, кодер может использовать предсказание значений BV. Значения BV часто демонстрируют избыточность - значение BV для заданного блока является часто аналогичным, или даже таким же как, значения BV предыдущих блоков в картинке. Для предсказания BV, значение BV для заданного блока предсказывается с использованием предиктора BV. Разность (или дифференциал BV) между значением BV для заданного блока и предиктором BV затем подвергается энтропийному кодированию. Обычно, дифференциал BV вычисляется для горизонтальной и вертикальной компонент значения BV и предиктора BV. Когда предсказание BV работает хорошо, дифференциалы BV имеют распределение вероятностей, которое поддерживает эффективное энтропийное кодирование. В одной черновой версии стандарта H.265/HEVC (JCTVC-P1005), предиктор BV является значением BV последней кодированной CU внутри текущей CTU (то есть, значением BV предыдущего интра-BC предсказанного блока внутри текущей CTU). Альтернативно, предиктор BV выбирается из множества доступных значений BV (например, в окрестности около текущего блока).
[0118] Фиг. 7b показывает BV (761) текущего блока (760) в кадре также как BV (751) предыдущего блока (750) в кадре (710). BV (751) предыдущего блока (750) используется в качестве предиктора BV для BV (761) текущего блока (760). Например, если значение BV равняется (-80, -24) и предиктор BV равняется (-80, -32), дифференциал BV, равный (0, 8), энтропийно кодируется.
[0119] Декодер принимает и осуществляет энтропийное декодирование подвергнутого энтропийному кодированию дифференциала BV для значения BV. Декодер также определяет предиктор BV для значения BV. Предиктор BV, определенный декодером, является таким же как предиктор BV, определенный кодером. Декодер комбинирует предиктор BV и декодирует дифференциал BV, чтобы восстанавливать значение BV.
B. ЗЕРКАЛЬНОЕ ОТРАЖЕНИЕ БЛОКОВ В ИНТРА-BC ПРЕДСКАЗАНИИ
[0120] В предыдущих подходах к интра-BC предсказанию, опорная область, указанная посредством значения BV, обеспечивает область интра-BC предсказания для текущего блока. То есть значения отсчетов опорной области являются интра-BC предсказанными значениями для текущего блока.
[0121] Согласно одному аспекту новаторских решений, здесь описанных, область интра-BC предсказания для текущего блока зеркально отражена по отношению к опорной области. Значение BV для текущего блока может указывать опорную область. Вместо использования опорной области напрямую в качестве области интра-BC предсказания для текущего блока, опорная область может зеркально отражаться горизонтально и/или вертикально. В частности, зеркальное отражение блоков может улучшать эффективность кодирования для текстовых символов контента захвата экрана.
1. ПРИМЕРЫ ЗЕРКАЛЬНОГО ОТРАЖЕНИЯ БЛОКОВ
[0122] Фиг. 8a-8d, 9a-9c и 10a-10c иллюстрируют примеры зеркального отражения блоков в интра-BC предсказании.
[0123] Фиг. 8a показывает текущий блок (860) в текущей картинке (810). Текущий блок (860) включает в себя текстовый символ p, как подробно указано на фиг. 8b. BV (861) для текущего блока (860) указывает смещение к опорной области (880) в текущей картинке (810). Опорная область (880) включает в себя текстовый символ d, как подробно указано на фиг. 8c. Без зеркального отражения, опорная область (880) является плохим предиктором для текущего блока (860). (Разности по отсчетам между текущим блоком (860) и опорной областью (880) являются существенными.)
[0124] Кодер и декодер могут использовать зеркальное отражение блоков в интра-BC предсказании, чтобы улучшать эффективность кодирования. Например, опорная область (880) может зеркально отражаться горизонтально и вертикально, как показано в зеркально отраженной опорной области (881) из фиг. 8d. В этом примере, когда опорная область (880) зеркально отражается горизонтально и вертикально, зеркально отраженная опорная область (881) в точности соответствует текущему блоку (860). (То есть, область интра-BC предсказания является идеальной для текущего блока (880), и остаток включает в себя только отсчеты нулевого значения.)
[0125] Аналогично, опорная область (880) может зеркально отражаться горизонтально. Например, если заданный блок включает в себя текстовый символ b, горизонтальное зеркальное отражение опорной области (880) может давать зеркально отраженную опорную область, которая точно соответствует заданному блоку. Или опорная область (880) может зеркально отражаться вертикально. Например, если заданный блок включает в себя текстовый символ q, вертикальное зеркальное отражение опорной области (880) может давать зеркально отраженную опорную область, которая точно соответствует заданному блоку.
[0126] С помощью зеркального отражения блоков, для многих шрифтов, блок, который включает в себя текстовый символ в наборе текстовых символов (например, наборе b, d, p и q, или наборе u и n), может точно предсказываться из опорной области, которая включает в себя другой текстовый символ в том же наборе текстовых символов. Для других шрифтов, блок, который включает в себя текстовый символ в наборе текстовых символов, может предсказываться приблизительно из опорной области, которая включает в себя другой текстовый символ в том же наборе текстовых символов. Более широко, зеркальное отражение блоков может улучшать эффективность кодирования для различных алфавитов текстовых символов или других паттернов в контенте экрана.
[0127] Таким образом, с помощью зеркального отражения блоков, блок, который включает в себя текстовый символ (или другой паттерн), может интра-BC предсказываться, даже если текстовый символ (или другой паттерн) ранее не появлялся в картинке, что может улучшать эффективность кодирования по сравнению с другими способами кодирования блока. Или, даже если текстовый символ (или другой паттерн) ранее появлялся в картинке, интра-BC предсказание может использовать зеркально отраженную опорную область, которая находится более близко к блоку, чем опорная область с идентичным текстовым символом (или другим паттерном). Значение BV для более близкой, зеркально отраженной области может кодироваться намного более эффективно, чем значение BV для более отдаленной опорной области. Например, для текущего блока, который включает в себя текстовый символ q, предположим, что первая опорная область-кандидат, которая включает в себя тот же символ q, может указываться с помощью значения BV (-280, -24), в то время как вторая опорная область-кандидат, которая включает в себя другой символ p, может указываться с помощью значения BV (-32, 0). Вторая опорная область-кандидат может зеркально отражаться горизонтально, чтобы точно соответствовать текущему блоку. Значение BV для второй опорной области-кандидата может кодироваться более эффективно (меньшее количество бит), чем значение BV для первой опорной области-кандидата, даже учитывая сигнализацию синтаксических элементов для указания зеркального отражения блоков.
[0128] Как показано на фиг. 9a-9c, блоки и опорные области могут включать в себя множество текстовых символов. Фиг. 9a показывает текущий блок (960), который включает в себя текстовые символы dl. Значение BV для текущего блока (960) указывает смещение к опорной области (980) в той же картинке. Опорная область (980) включает в себя текстовые символы lb, как подробно указано на фиг. 9b. Без зеркального отражения, опорная область (980) является плохим предиктором для текущего блока (960). Если опорная область (980) зеркально отражается горизонтально, однако, зеркально отраженная опорная область (981) в точности соответствует текущему блоку (960).
[0129] В предшествующих примерах, блоки и опорные области включают в себя текстовые символы целиком. Как показано на фиг. 10a-10c, блоки и опорные области могут вместо этого включать в себя одну или более частей текстового символа, символа или паттерна. Фиг. 10a показывает текущий блок (1060), который включает в себя часть текстового символа L. Значение BV для текущего блока (1060) указывает смещение к опорной области (1080) в той же картинке. Опорная область (1080) включает в себя часть текстового символа F, как подробно указано на фиг. 10b. Без зеркального отражения, опорная область (1080) является плохим предиктором для текущего блока (1060). Если опорная область (1080) зеркально отражается вертикально, однако, зеркально отраженная опорная область (1081) в точности соответствует текущему блоку (1060).
2. ИЛЛЮСТРАТИВНЫЕ ОПЕРАЦИИ ЗЕРКАЛЬНОГО ОТРАЖЕНИЯ
[0130] Когда используется зеркальное отражение блоков в интра-BC предсказании, область интра-BC предсказания для блока зеркально отражена по отношению к опорной области для блока. Операции зеркального отражения блоков могут осуществляться различными способами, в зависимости от реализации.
[0131] Согласно одному подходу к выполнению операций зеркального отражения блоков, при определении области интра-BC предсказания для текущего блока, кодер или декодер (a) определяет опорную область, (b) зеркально отражает опорную область, и затем (c) назначает значения отсчетов в соответствующих положениях зеркально отраженной опорной области значениям отсчетов в соответствующих положениях области интра-BC предсказания. Например, для блока 16×16, кодер или декодер определяет опорную область 16×16, указанную посредством значения BV для блока, затем зеркально отражает опорную область 16×16 горизонтально и/или вертикально. Это включает в себя создание копии опорной области 16×16, которая зеркально отражается. Затем, значения отсчетов в положениях зеркально отраженной опорной области назначаются значениям отсчетов в тех же положениях области интра-BC предсказания (например, значение отсчета в положении (0, 0) зеркально отраженной опорной области назначается значению отсчета в положении (0, 0) области интра-BC предсказания, значение отсчета в положении (0, 1) зеркально отраженной опорной области назначается значению отсчета в положении (0, 1) области интра-BC предсказания, и так далее).
[0132] Согласно другому подходу к выполнению операций зеркального отражения блоков, при определении области интра-BC предсказания для текущего блока, кодер или декодер (a) определяет опорную область, (b) назначает значения отсчетов в соответствующих положениях опорной области значениям отсчетов в соответствующих положениях области интра-BC предсказания, и затем (c) зеркально отражает область интра-BC предсказания. Например, для блока 16×16, кодер или декодер определяет опорную область 16×16, указанную посредством значения BV для блока. Значения отсчетов в положениях опорной области назначаются значениям отсчетов в тех же положениях области интра-BC предсказания (например, значение отсчета в положении (0, 0) опорной области назначается значению отсчета в положении (0, 0) области интра-BC предсказания, значение отсчета в положении (0, 1) опорной области назначается значению отсчета в положении (0, 1) области интра-BC предсказания, и так далее). Затем, кодер или декодер зеркально отражает интра-BC предсказание 16×16 горизонтально и/или вертикально. Это включает в себя создание копии интра-BC предсказания 16×16, которая зеркально отражается.
[0133] Согласно третьему подходу к выполнению операций зеркального отражения блоков, кодер и декодер избегают создания промежуточной копии опорной области или области интра-BC предсказания. При определении области интра-BC предсказания для текущего блока, кодер или декодер (a) определяет опорную область, и затем (b) назначает значения отсчетов в соответствующих положениях опорной области значениям отсчетов в соответствующих положениях области интра-BC предсказания, где соответствующие положения учитывают зеркальное отражение блоков.
Когда используется горизонтальное зеркальное отражение, первый столбец опорной области обеспечивает последний столбец области интра-BC предсказания, второй столбец опорной области обеспечивает второй с конца столбец области интра-BC предсказания, и так далее. Когда используется вертикальное зеркальное отражение, первый ряд опорной области обеспечивает последний ряд области интра-BC предсказания, второй ряд опорной области обеспечивает второй с конца ряд области интра-BC предсказания, и так далее. Когда горизонтальное и вертикальное зеркальное отражение используются вместе, положения опорной области могут проходиться в обратном порядке горизонтально и вертикально, при назначении значений отсчетов положениям области интра-BC предсказания. Например, для блока 16×16, кодер или декодер определяет опорную область 16×16, указанную посредством значения BV для блока. Значения отсчетов в положениях опорной области назначаются значениям отсчетов в соответствующих положениях области интра-BC предсказания в обратном порядке горизонтально и/или вертикально (например, значение отсчета в положении (0, 0) опорной области назначается значению отсчета в положении (15, 15) области интра-BC предсказания, значение отсчета в положении (0, 1) опорной области назначается значению отсчета в положении (15, 14) области интра-BC предсказания, и так далее).
3. ИЛЛЮСТРАТИВНАЯ СИГНАЛИЗАЦИЯ ДЛЯ ЗЕРКАЛЬНОГО ОТРАЖЕНИЯ БЛОКОВ
[0134] Когда зеркальное отражение блоков активировано для интра-BC предсказания, решение в отношении того, использовать или не использовать зеркальное отражение блоков, может сигнализироваться различными способами, в зависимости от реализации.
[0135] Зеркальное отражение блоков может активироваться для последовательности, картинки или другой единицы видео. Синтаксический элемент уровня последовательности (например, в SPS), синтаксический элемент уровня картинки (например, в PPS) или синтаксический элемент уровня заголовка среза (например, в заголовке сегмента среза) может указывать, активировано ли зеркальное отражение блоков или блокировано. Или зеркальное отражение блоков может активироваться для некоторых профилей или уровней кодирования и декодирования. Решение активировать зеркальное отражение блоков может делаться на основе от направления к направлению (например, только горизонтальное зеркальное отражение блоков, только вертикальное зеркальное отражение блоков, или как горизонтальное, так и вертикальное зеркальное отражение блоков). Если зеркальное отражение блоков активировано, используется дополнительный сигнал синтаксического элемента, когда и как осуществлять зеркальное отражение блоков.
[0136] Когда активировано только вертикальное зеркальное отражение, значение флага может указывать, используется ли вертикальное зеркальное отражение во время интра-BC предсказания. Когда активировано только горизонтальное зеркальное отражение, значение флага может указывать, используется ли горизонтальное зеркальное отражение во время интра-BC предсказания. Когда активированы как вертикальное зеркальное отражение, так и горизонтальное зеркальное отражение, два значения флагов могут указывать, используется ли зеркальное отражение во время интра-BC предсказания для горизонтального и вертикального зеркального отражения, при этом каждый флаг указывает решение для направления зеркального отражения. Или может использоваться одиночный синтаксический элемент с множеством значений (например, с возможными значениями, указывающими только вертикальное зеркальное отражение, только горизонтальное зеркальное отражение, как горизонтальное, так и вертикальное зеркальное отражение, или отсутствие зеркального отражения).
[0137] Синтаксические элементы (например, значения флагов), которые указывают, используется ли зеркальное отражение блоков для текущего блока, могут сигнализироваться в битовом потоке вместе с другими синтаксическими элементами для текущего блока. Например, синтаксический элемент (элементы) в отношении зеркального отражения блоков для PU сигнализируются для PU. Или синтаксические элементы, которые указывают, используется ли зеркальное отражение блоков для текущего блока, могут сигнализироваться в битовом потоке для большего блока, который включает в себя текущий блок. Например, синтаксический элемент (элементы) в отношении зеркального отражения блоков для одной или более единиц PU сигнализируются для CU, которая включает в себя PU (единицы PU). Альтернативно, синтаксические элементы, которые указывают, используется ли зеркальное отражение блоков для текущего блока, сигнализируются на некотором другом уровне в битовом потоке.
[0138] Синтаксические элементы, которые указывают, используется ли зеркальное отражение блоков для текущего блока, могут подвергаться энтропийному кодированию. Например, значение флага для текущего блока кодируется с использованием контекстно-адаптивного двоичного арифметического кодирования и декодируется с использованием контекстно-адаптивного двоичного арифметического декодирования. Альтернативно, может использоваться другая форма энтропийного кодирования, или синтаксические элементы могут сигнализироваться как значения фиксированной длины.
[0139] Синтаксический элемент (элементы), которые указывают, используется ли зеркальное отражение блоков для текущего блока, могут отдельно и условно сигнализироваться в битовом потоке. Например, значение флага, которое указывает, используется ли зеркальное отражение блоков или не используется, может сигнализироваться, если текущий блок является интра-BC предсказанным, но не сигнализироваться, если текущий блок не является интра-BC предсказанным. Или синтаксический элемент (элементы), которые указывают, используется ли зеркальное отражение блоков для текущего блока, могут совместно кодироваться с другим синтаксическим элементом в битовом потоке. Например, значение флага, которое указывает, используется ли зеркальное отражение блоков или не используется, может совместно кодироваться со значением флага, указывающим, является ли текущий блок интра-BC предсказанным.
4. ИЛЛЮСТРАТИВНОЕ КОДИРОВАНИЕ С ЗЕРКАЛЬНЫМ ОТРАЖЕНИЕМ БЛОКОВ В ИНТРА-BC ПРЕДСКАЗАНИИ
[0140] Фиг. 11 показывает иллюстративный способ (1100) для зеркального отражения блоков в интра-BC предсказании во время кодирования. Кодер изображений или кодер видео, такой как кодер, описанный со ссылкой на фиг. 3 или фиг. 5a-5b, может выполнять способ (1100).
[0141] Кодер определяет (1110) область интра-BC предсказания для текущего блока в картинке на основе опорной области в картинке. Текущий блок может быть PU, CU или другим блоком. Значение BV для текущего блока, идентифицированное в оценке BV, может указывать смещение к опорной области в картинке. Область интра-BC предсказания зеркально отражена по отношению к опорной области. Например, область интра-BC предсказания зеркально отражена горизонтально и/или вертикально по отношению к опорной области. Примеры подходов к выполнению операций зеркального отражения блоков описаны выше (см. раздел VII.B.2).
[0142] Кодер кодирует (1120) текущий блок с использованием области интра-BC предсказания и выводит (1130) кодированные данные в битовом потоке. Кодированные данные включают в себя индикацию в отношении того, отражена ли область интра-BC предсказания зеркально по отношению к опорной области. Например, индикация является одним или более синтаксическими элементами в битовом потоке. Примеры подходов к сигнализации того, используется ли зеркальное отражение блоков, описаны выше (см. раздел VII.B.3).
[0143] Кодер может аналогичным образом кодировать другие интра-BC предсказанные блоки на основе от блока к блоку для среза, мозаичного элемента или картинки, с или без зеркального отражения блоков.
5. ИЛЛЮСТРАТИВНОЕ ДЕКОДИРОВАНИЕ С ЗЕРКАЛЬНЫМ ОТРАЖЕНИЕМ БЛОКОВ В ИНТРА-BC ПРЕДСКАЗАНИИ
[0144] Фиг. 12 показывает иллюстративный способ (1200) для зеркального отражения блоков в интра-BC предсказании во время декодирования. Декодер изображений или декодер видео, такой как декодер, описанный со ссылкой на фиг. 4 или фиг. 6, может выполнять способ (1200).
[0145] Декодер принимает (1210) кодированные данные в битовом потоке. Кодированные данные включают в себя индикацию в отношении того, отражена ли область интра-BC предсказания для текущего блока в картинке зеркально по отношению к опорной области в картинке. Текущий блок может быть PU, CU или другим блоком. Например, индикация является одним или более синтаксическими элементами в битовом потоке.
Примеры подходов к сигнализации того, используется ли зеркальное отражение блоков, описаны выше (см. раздел VII.B.3).
[0146] Декодер определяет (1220) область интра-BC предсказания для текущего блока в картинке на основе опорной области в картинке. Значение BV для текущего блока может указывать смещение к опорной области. Область интра-BC предсказания зеркально отражена по отношению к опорной области. Например, область интра-BC предсказания зеркально отражена горизонтально и/или вертикально по отношению к опорной области. Примеры подходов к выполнению операций зеркального отражения блоков описаны выше (см. раздел VII.B.2). Декодер декодирует (1230) текущий блок с использованием области интра-BC предсказания.
[0147] Декодер может аналогичным образом декодировать другие интра-BC предсказанные блоки на основе от блока к блоку для среза, мозаичного элемента или картинки, с или без зеркального отражения блоков.
C. РЕЖИМ ПРОПУСКА ДЛЯ ИНТРА-BC ПРЕДСКАЗАНИЯ
[0148] В некоторых предыдущих подходах к интра-BC предсказанию, флаг для текущей CU указывает, кодирована ли CU в режиме интра-BC предсказания. Если это так, второй флаг для текущей CU указывает, имеет ли CU данные остатка. Этот способ сигнализации интра-BC предсказанных блоков, которые не имеют данные остатка, является неэффективным во многих сценариях кодирования/декодирования контента экрана.
[0149] Согласно другому аспекту новаторских решений, здесь описанных, кодер и декодер используют флаг, чтобы сигнализировать интра-BC предсказанный блок, который не имеет данных остатка. В режиме пропуска, интра-BC предсказанный блок использует значение BV, при этом дифференциал BV сигнализируется в битовом потоке, и не имеет данных остатка в битовом потоке. В частности, для контента захвата экрана, интра-BC предсказанные блоки без данных остатка являются обычными. Использование одиночного флага (в противоположность множеству флагов), чтобы сигнализировать интра-BC предсказанный блок без данных остатка, является эффективным в таких сценариях.
1. ИЛЛЮСТРАТИВНАЯ СИГНАЛИЗАЦИЯ ДЛЯ РЕЖИМА ПРОПУСКА ПРИ ИНТРА-BC ПРЕДСКАЗАНИИ
[0150] В иллюстративных вариантах осуществления, одиночный флаг в битовом потоке указывает, является ли текущий блок интра-BC предсказанным блоком в режиме пропуска. Если текущий блок не является интра-BC предсказанным блоком в режиме пропуска, второй флаг в битовом потоке указывает, является ли текущий блок интра-BC предсказанным блоком (не в режиме пропуска). Если текущий блок не является интра-BC предсказанным блоком, один или более других синтаксических элементов в битовом потоке указывают режим текущего блока (например, флаг для временного режима пропуска или нет, флаг для режима интра-пространственного предсказания или нет, флаг для интер-картиночного режима или нет, флаг для режима интра-пространственного предсказания или интер-картиночного режима). Если текущий блок является интра-BC предсказанным блоком в режиме пропуска, второй флаг и другие синтаксические элементы не присутствуют в битовом потоке для текущего блока.
[0151] Флаг, который указывает, является ли текущий блок интра-BC предсказанным блоком в режиме пропуска, сигнализируется на уровне блока. Текущий блок может быть CU размера 2N×2N. Например, для CU 16×16, N равняется 8. Альтернативно, текущий блок может быть PU или другим типом блока. Другие флаги и синтаксические элементы, указывающие режим текущего блока, также могут сигнализироваться на уровне блока в битовом потоке.
[0152] В некоторых иллюстративных вариантах осуществления, интра-BC предсказанный блок в режиме пропуска не имеет данных остатка, но включает в себя дифференциал BV в битовом потоке. Альтернативно, интра-BC предсказанный блок в режиме пропуска может использовать предсказанное значение BV (и, следовательно, не иметь дифференциал BV в битовом потоке).
2. ИЛЛЮСТРАТИВНОЕ КОДИРОВАНИЕ С РЕЖИМОМ ПРОПУСКА ПРИ ИНТРА-BC ПРЕДСКАЗАНИИ
[0153] Фиг. 13 показывает иллюстративный способ (1300) для кодирования интра-BC предсказанного блока в режиме пропуска. Кодер изображений или кодер видео, такой как кодер, описанный со ссылкой на фиг. 3 или фиг. 5a-5b, может выполнять способ (1300).
[0154] Кодер определяет (1310) значение BV для текущего блока (например, CU, PU) в картинке, например, с использованием оценки BV. Значение BV для текущего блока указывает смещение к опорной области в картинке. Кодер затем определяет (1320) дифференциал BV для текущего блока с использованием значения BV для текущего блока и предиктора BV для текущего блока. Предиктор BV может выбираться посредством правила, или кодер может выбирать предиктор BV из множества кандидатов-предикторов BV.
[0155] Кодер кодирует (1330) текущий блок с использованием интра-BC предсказания со значением BV. В иллюстративных вариантах осуществления, интра-BC предсказание может включать в себя определение области интра-BC предсказания для текущего блока с использованием опорной области, где область интра-BC предсказания зеркально отражена по отношению к опорной области. Область интра-BC предсказания может быть зеркально отражена горизонтально и/или вертикально по отношению к опорной области. Варианты выбора для выполнения операций зеркального отражения блоков и использования сигнализации зеркального отражения блоков описаны выше. Альтернативно, кодер не использует зеркальное отражение блоков в интра-BC предсказании.
[0156] Кодер выводит (1340) в битовом потоке кодированные данные. Кодированные данные включают в себя флаг, указывающий, что текущий блок кодирован с использованием интра-BC предсказания в режиме пропуска. Так как текущий блок является интра-BC предсказанным блоком в режиме пропуска, битовый поток включает в себя дифференциал BV для текущего блока, но не имеет данных остатка для текущего блока. Когда кодер выбирает предиктор BV из множества кандидатов-предикторов BV, битовый поток включает в себя значение индекса, которое указывает выбранный кандидат-предиктор BV для использования в качестве предиктора BV для текущего блока.
[0157] Фиг. 14 показывает иллюстративный способ (1400) для кодирования блоков в картинке с использованием интра-BC предсказания в режиме пропуска и/или других режимах. Кодер изображений или кодер видео, такой как кодер, описанный со ссылкой на фиг. 3 или фиг. 5a-5b, может выполнять способ (1400).
[0158] Сначала, кодер получает (1410) следующий блок и определяет (1420), кодировать ли блок с использованием интра-BC предсказания в режиме пропуска. Например, кодер оценивает, обеспечивает ли интра-BC предсказание достаточную эффективность кодирования для блока, и оценивает, включают ли в себя данные остатка какие-либо значительные значения. Альтернативно, кодер учитывает другие критерии.
[0159] Кодер может сигнализировать флаг в битовом потоке, который указывает, кодирован ли блок с использованием интра-BC предсказания в режиме пропуска. Для интра-BC предсказанного блока в режиме пропуска, кодер кодирует (1430) блок с помощью интра-BC предсказания в режиме пропуска с использованием операций, показанных на этапах (1310) по (1330) из фиг. 13, или с использованием другого подхода. Как интра-BC предсказанный блок в режиме пропуска, блок имеет дифференциал BV в битовом потоке, но не имеет данных остатка в битовом потоке.
[0160] В противном случае (блок не интра-BC предсказанный блок в режиме пропуска), кодер кодирует (1440) блок в другом режиме. Другой режим может быть режимом без пропуска при интра-BC предсказании, режимом интра-пространственного предсказания, интер-картиночным режимом или другим режимом. В этом случае, один или более других синтаксических элементов могут указывать режим блока. Например, после первого флага, который указывает, кодирован ли блок с использованием интра-BC предсказания в режиме пропуска, в зависимости от решения на этапе (1420), когда блок не кодирован с использованием интра-BC предсказания в режиме пропуска, второй флаг указывает, кодирован ли блок с использованием интра-BC предсказания в режиме без пропуска. Если блок не кодирован с использованием интра-BC предсказания в режиме без пропуска, один или более других синтаксических элементов указывают режим кодирования для блока. Например, флаг указывает, является ли режим предсказания блока интра-пространственным предсказанием или интер-картиночным предсказанием.
[0161] В некоторых иллюстративных вариантах осуществления, имеются дополнительные преимущества для использования флага, который указывает, является ли блок интра-BC предсказанным в режиме пропуска. В некоторых случаях, сигнализация синтаксического элемента, который указывает режим разделения (например, 2N×2N, 2N×N, N×2N или N×N) для интра-BC предсказанного блока, может избегаться. Например, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, кодер сигнализирует в битовом потоке синтаксический элемент, который указывает режим разделения для блока. С другой стороны, если блок кодирован с использованием интра-BC предсказания в режиме пропуска, кодер пропускает сигнализацию в битовом потоке синтаксического элемента, который указывает режим разделения для блока, и вместо этого предполагается, что режим разделения для блока имеет определенное значение (например, 2N×2N). Таким образом, в этих случаях, более ранний флаг, помечающий блок как интра-BC предсказанный в режиме пропуска, также сигнализирует, что режим разделения для блока имеет определенное значение.
[0162] Также, во многих случаях, сигнализация флага, который указывает присутствие или отсутствие данных остатка для блока, может избегаться. Конечно, если блок кодирован с использованием интра-BC предсказания в режиме пропуска, кодер пропускает сигнализацию в битовом потоке флага, который указывает присутствие или отсутствие данных остатка для блока. (Более ранний флаг, помечающий блок как интра-BC предсказанный в режиме пропуска, уже сигнализирует такую информацию.) Предполагается, что данные остатка для блока отсутствуют в битовом потоке.
[0163] Сигнализация флага, который указывает присутствие или отсутствие данных остатка, может избегаться в другом случае также. Конкретно, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, и режим разделения для блока имеет определенное значение (например, 2N×2N), кодер пропускает сигнализацию в битовом потоке флага, который указывает присутствие или отсутствие данных остатка для блока. В этом случае, предполагается, что данные остатка для блока присутствуют в битовом потоке. (Если режим разделения блока является определенным значением и блок не имеет данных остатка, блок является интра-BC предсказанным блоком в режиме пропуска, что будет указываться посредством более раннего флага.) В заключение, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, и режим разделения для блока не имеет определенного значения, кодер сигнализирует в битовом потоке флаг, который указывает присутствие или отсутствие данных остатка для блока.
[0164] Кодер определяет (1450), продолжать ли со следующим блоком в картинке. Если это так, кодер получает (1410) следующий блок и продолжает кодирование.
[0165] Кодер может повторять способ (1400) на основе от картинки к картинке, на основе от мозаичного элемента к мозаичному элементу, на основе от среза к срезу или на некоторой другой основе.
3. ИЛЛЮСТРАТИВНОЕ ДЕКОДИРОВАНИЕ С РЕЖИМОМ ПРОПУСКА ПРИ ИНТРА-BC ПРЕДСКАЗАНИИ
[0166] Фиг. 15 показывает иллюстративный способ (1500) для декодирования интра-BC предсказанного блока в режиме пропуска. Декодер изображений или декодер видео, такой как декодер, описанный со ссылкой на фиг. 4 или фиг. 6, может выполнять способ (1500).
[0167] Декодер принимает (1510) кодированные данные из битового потока. Кодированные данные включают в себя флаг, указывающий, что текущий блок (например, CU, PU) в картинке кодирован с использованием интра-BC предсказания в режиме пропуска. Так как текущий блок является интра-BC предсказанным блоком в режиме пропуска, битовый поток включает в себя дифференциал BV для текущего блока, но не имеет данных остатка для текущего блока.
[0168] Декодер определяет (1520) значение BV для текущего блока с использованием дифференциала BV для текущего блока и предиктора BV для текущего блока. Значение BV для текущего блока указывает смещение к опорной области в картинке. Предиктор BV может выбираться посредством правила. Или декодер может выбирать предиктор BV из множества кандидатов-предикторов BV, с использованием значения индекса в битовом потоке, чтобы выбирать, какой из кандидата-предиктора BV использовать в качестве предиктора BV для текущего блока.
[0169] Декодер декодирует (1530) текущий блок с использованием интра-BC предсказания со значением BV. В иллюстративных вариантах осуществления, интра-BC предсказание может включать в себя определение области интра-BC предсказания для текущего блока с использованием опорной области, где область интра-BC предсказания зеркально отражена по отношению к опорной области. Область интра-BC предсказания может быть зеркально отражена горизонтально и/или вертикально по отношению к опорной области. Варианты выбора для выполнения операций зеркального отражения блоков и сигнализации использования зеркального отражения блоков описаны выше. Альтернативно, декодер не использует зеркальное отражение блоков в интра-BC предсказании.
[0170] Фиг. 16 показывает иллюстративный способ (1600) для декодирования блоков в картинке с использованием интра-BC предсказания в режиме пропуска и/или других режимах. Декодер изображений или декодер видео, такой как декодер, описанный со ссылкой на фиг. 4 или фиг. 6, может выполнять способ (1600).
[0171] Сначала, декодер получает (1610) кодированные данные для следующего блока и определяет (1620), декодировать ли блок с использованием интра-BC предсказания в режиме пропуска. Например, декодер принимает и осуществляет синтаксический разбор флага в битовом потоке, который указывает, был ли блок кодирован с использованием интра-BC предсказания в режиме пропуска.
[0172] Для интра-BC предсказанного блока в режиме пропуска, декодер декодирует (1630) блок с помощью интра-BC предсказания в режиме пропуска с использованием операций, показанных на этапах (1520) и (1530) из фиг. 15, или с использованием другого подхода. Как интра-BC предсказанный блок в режиме пропуска, блок имеет дифференциал BV в битовом потоке, но не имеет данных остатка в битовом потоке.
[0173] В противном случае (блок не интра-BC предсказанный блок в режиме пропуска), декодер декодирует (1640) блок в другом режиме. Другой режим может быть режимом без пропуска при интра-BC предсказании, режимом интра-пространственного предсказания, интер-картиночным режимом или другим режимом. В этом случае, один или более других синтаксических элементов могут указывать режим блока. Например, после первого флага, который указывает, кодирован ли блок с использованием интра-BC предсказания в режиме пропуска, в зависимости от решения на этапе (1620), когда блок не кодирован с использованием интра-BC предсказания в режиме пропуска, второй флаг указывает, кодирован ли блок с использованием интра-BC предсказания в режиме без пропуска. Если блок не кодирован с использованием интра-BC предсказания в режиме без пропуска, один или более других синтаксических элементов указывают режим кодирования для блока. Например, флаг указывает, является ли режим предсказания блока интра-пространственным предсказанием или интер-картиночным предсказанием.
[0174] Как отмечено в предыдущем разделе, в некоторых иллюстративных вариантах осуществления, имеются дополнительные преимущества для использования флага, который указывает, является ли блок интра-BC предсказанным в режиме пропуска. Например, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, битовый поток включает в себя синтаксический элемент, который указывает режим разделения для блока. С другой стороны, если блок кодирован с использованием интра-BC предсказания в режиме пропуска, битовый поток не имеет синтаксического элемента, который указывает режим разделения для блока. Декодер выводит, что режим разделения для блока является определенным значением (например, 2N×2N).
[0175] Также, во многих случаях, сигнализация флага, который указывает присутствие или отсутствие данных остатка для блока, может избегаться. Конечно, если блок кодирован с использованием интра-BC предсказания в режиме пропуска, битовый поток не имеет флага, который указывает присутствие или отсутствие данных остатка для блока. Вместо этого, из более раннего флага, помечающего блок как интра-BC предсказанный в режиме пропуска, декодер выводит, что данные остатка для блока отсутствуют в битовом потоке.
[0176] Сигнализация флага, который указывает присутствие или отсутствие данных остатка, может избегаться в другом случае также. Конкретно, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, и режим разделения для блока имеет определенное значение (например, 2N×2N), битовый поток не имеет флага, который указывает присутствие или отсутствие данных остатка для блока. В этом случае, декодер выводит, что данные остатка для блока присутствуют в битовом потоке. В заключение, если блок кодирован с использованием интра-BC предсказания в режиме без пропуска, и режим разделения для блока не имеет определенного значения, битовый поток включает в себя флаг, который указывает присутствие или отсутствие данных остатка для блока.
[0177] Декодер определяет (1650), продолжать ли со следующим блоком в картинке. Если это так, декодер получает (1610) кодированные данные для следующего блока и продолжает декодирование.
[0178] Декодер может повторять способ (1600) на основе от картинки к картинке, на основе от мозаичного элемента к мозаичному элементу, на основе от среза к срезу или на некоторой другой основе.
4. ИЛЛЮСТРАТИВНЫЙ СИНТАКСИС ДЛЯ ЕДИНИЦ КОДИРОВАНИЯ
[0179] Фиг. 17a и 17b показывают синтаксическую структуру (1700) для единицы кодирования ("CU") согласно предыдущему подходу. Синтаксические элементы, показанные в синтаксической структуре (1700), определены в JCTVC-P1005. Здесь подытоживаются выбранные синтаксические элементы.
[0180] Синтаксический элемент intra_bc_flag может сигнализироваться для CU, когда активировано интра-BC предсказание (как указано с помощью intra_block_copy_enabled_flag). Синтаксический элемент intra_bc_flag определяет, кодирована ли CU в режиме интра-BC предсказания. Если его значение равно 1, CU кодирована в режиме интра-BC предсказания. Если его значение равно 0, CU не кодирована в режиме интра-BC предсказания. В этом случае (intra_bc_flag равняется 0), синтаксический элемент pred_mode_flag присутствует и указывает, кодирована ли CU в режиме интер-предсказания или режиме интра-пространственного предсказания.
[0181] Если блок является интра-BC предсказанным (и в малом количестве других случаев), битовый поток включает в себя синтаксический элемент part_mode для CU. Синтаксический элемент part_mode указывает режим разделения для CU (то есть, 2N×2N, 2N×N, N×2N, N×N).
[0182] Синтаксическая структура (1700) CU затем включает в себя значения BV для фрагментов (если CU является интра-BC предсказанной), информацию направления интра-предсказания (если CU является интра-пространственно предсказанной) или информацию единицы предсказания (если CU является интер-предсказанной). Затем, синтаксическая структура (1700) CU включает в себя синтаксический элемент rqt_root_cbf в некоторых случаях. В частности, синтаксический элемент rqt_root_cbf присутствует, если CU является интра-BC предсказанной. Синтаксический элемент rqt_root_cbf указывает, присутствует ли синтаксическая структура transform_tree() для CU. Синтаксическая структура transform_tree() предназначена для данных остатка для CU. Если rqt_root_cbf равняется 1, синтаксическая структура transform_tree() присутствует для CU. Если rqt_root_cbf равняется 0, синтаксическая структура transform_tree() не присутствует для CU. Когда rqt_root_cbf не присутствует, ее значение выводится как равное 1. Таким образом, как отмечалось ранее, в этом подходе, используются два флага (intra_bc_flag и rqt_root_cbf), чтобы указывать интра-BC предсказанный блок в режиме пропуска.
[0183] Фиг. 18 показывает новую синтаксическую структуру (1800) для единицы кодирования, которая может кодироваться как интра-BC предсказанный блок в режиме пропуска. Изменения по отношению к синтаксической структуре (1700), показанной на фиг. 17a и 17b, выделены на фиг. 18.
[0184] intra_bc_skip_flag может сигнализироваться для CU, когда активировано интра-BC предсказание (как указано с помощью intra_block_copy_enabled_flag). Синтаксический элемент intra_bc_skip_flag указывает, является ли CU интра-BC предсказанным блоком в режиме пропуска. Если CU является интра-BC предсказанной в режиме пропуска (intra_bc_skip_flag равняется 1), синтаксические элементы intra_bc_flag и pred_mode_flag пропускаются, как и синтаксический элемент rqt_root_cbf. Также, режим разделения для CU имеет определенное значение 2N×2N в этом случае.
[0185] С другой стороны, если синтаксический элемент intra_bc_skip_flag указывает, что CU не является интра-BC предсказанной в режиме пропуска (intra_bc_skip_flag равняется 0), синтаксический элемент intra_bc_flag присутствует. Синтаксический элемент intra_bc_flag определяет, кодирована ли CU в режиме интра-BC предсказания, как описано со ссылкой на фиг. 17a и 17b. Дополнительно, если intra_bc_flag равняется 0, синтаксический элемент pred_mode_flag присутствует и указывает, кодирована ли CU в режиме интер-предсказания или режиме интра-пространственного предсказания, как описано со ссылкой на фиг. 17a и 17b.
[0186] Если блок является интра-BC предсказанным в режиме без пропуска (то есть, intra_bc_flag равняется 1 и intra_bc_skip_flag равняется 0), битовый поток включает в себя синтаксический элемент part_mode для CU. Синтаксический элемент part_mode указывает режим разделения для CU (например, 2N×2N, 2N×N, N×2N, N×N). С другой стороны, если блок является интра-BC предсказанным в режиме пропуска, синтаксический элемент part_mode не сигнализируется в битовом потоке для CU. Вместо этого, выводится, что режим разделения имеет определенное значение, равное 2N×2N. Таким образом, для такого блока, intra_bc_skip_flag сигнализирует, что режим разделения для CU имеет определенное значение, равное 2N×2N, и отдельная сигнализация синтаксического элемента part_mode избегается.
[0187] В разделах, пропущенных на фиг. 18, синтаксическая структура (1800) затем включает в себя значения BV для фрагментов (если CU является интра-BC предсказанной), информацию направления интра-предсказания (если CU является интра-пространственно предсказанной) или информацию единицы предсказания (если CU является интер-предсказанной).
[0188] В заключение, синтаксическая структура (1800) включает в себя синтаксический элемент rqt_root_cbf в некоторых случаях. В частности, синтаксический элемент rqt_root_cbf присутствует, если CU является интра-BC предсказанной в режиме без пропуска, при условии, что режим разделения единицы CU не является определенным значением, равным 2N×2N. Когда присутствует, значение синтаксического элемента rqt_root_cbf указывает, присутствует ли синтаксическая структура transform_tree() для CU, как описано со ссылкой на фиг. 17a и 17b. С другой стороны, синтаксический элемент rqt_root_cbf не присутствует, (1) если CU является интра-BC предсказанной в режиме пропуска или (2) если CU является интра-BC предсказанной и режим разделения для CU является определенным значением, равным 2N×2N. Если CU является интра-BC предсказанной в режиме пропуска, значение rqt_root_cbf выводится как равное 0 (данные остатка не присутствуют для CU). В противном случае, если CU является интра-BC предсказанной и режим разделения для CU является определенным значением, равным 2N×2N, значение rqt_root_cbf выводится как равное 1 (данные остатка присутствуют для CU).
[0189] В виду многих возможных вариантов осуществления, к которым могут применяться принципы раскрытого изобретения, следует понимать, что проиллюстрированные варианты осуществления являются только предпочтительными примерами изобретения и не должны браться как ограничивающие объем изобретения. Скорее, объем изобретения определяется посредством последующей формулы изобретения. Мы, поэтому, в качестве нашего изобретения притязаем на все, что попадает в объем и сущность этой формулы изобретения.

Claims (27)

1. Способ (1300) кодирования, реализуемый вычислительным устройством кодирования видео или вычислительным устройством кодирования изображений, содержащий:
определение (1310) значения вектора блока, BV, для текущего блока в картинке, причем значение BV для текущего блока указывает смещение по отношению к опорной области в упомянутой картинке;
определение (1320) разностного BV для текущего блока, используя значение BV для текущего блока и предиктор BV для текущего блока;
кодирование (1330) текущего блока, используя интра-основанное на копии блока ("BC") предсказание с упомянутым значением BV; и
вывод (1340) кодированных данных в битовом потоке, включающих в себя флаг, указывающий, что текущий блок кодирован с использованием интра-основанного на BC предсказания в режиме пропуска, при этом битовый поток включает в себя упомянутый разностный BV для текущего блока, но не содержит остаточных данных для текущего блока.
2. Способ (1500) декодирования, реализуемый вычислительным устройством декодирования видео или вычислительным устройством декодирования изображений, содержащий:
прием (1510) кодированных данных из битового потока, включающих в себя флаг, указывающий, что текущий блок в картинке кодирован с использованием интра-основанного на копии блока ("BC") предсказания в режиме пропуска, при этом битовый поток включает в себя разностный вектор блока (“BV”) для текущего блока, но не содержит остаточных данных для упомянутого текущего блока;
определение (1520) значения BV для текущего блока, используя упомянутый разностный BV для текущего блока и предиктор BV для текущего блока, причем значение BV для текущего блока указывает смещение по отношению к опорной области в картинке; и
декодирование (1530) текущего блока с использованием интра-основанного на BC предсказания со значением BV.
3. Способ (1300, 1500) по п. 1 или 2, в котором битовый поток дополнительно включает в себя значение индекса, которое указывает выбор кандидата-предиктора BV, из набора, содержащего множество кандидатов-предикторов BV, для использования в качестве предиктора BV для текущего блока.
4. Способ (1300, 1500) по п. 1 или 2, в котором для последующего блока, следующего за текущим блоком в картинке, первый флаг указывает, кодируют/кодирован ли этот последующий блок с использованием интра-основанного на BC предсказания в режиме пропуска, и если последующий блок не кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме пропуска, второй флаг указывает, кодируют/кодирован ли этот последующий блок с использованием интра-основанного на BC предсказания в режиме без пропуска.
5. Способ (1300, 1500) по п. 1 или 2, в котором для последующего блока, следующего за текущим блоком в картинке:
если этот последующий блок кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме без пропуска, битовый поток включает в себя синтаксический элемент, который указывает режим разделения для этого последующего блока; и
если этот последующий блок кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме пропуска, битовый поток не содержит синтаксического элемента, который указывает режим разделения для этого последующего блока, и режим разделения для этого последующего блока имеет некоторое определенное значение.
6. Способ (1300, 1500) по п. 1 или 2, в котором для последующего блока, следующего за текущим блоком в картинке:
если этот последующий блок кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме пропуска, битовый поток не содержит флага, который указывает наличие или отсутствие остаточных данных для этого последующего блока, и предполагается, что остаточные данные для этого последующего блока отсутствуют в битовом потоке.
7. Способ (1300, 1500) по п. 6, в котором для последующего блока в картинке:
если этот последующий блок кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме без пропуска и режим разделения для этого последующего блока имеет некоторое определенное значение, битовый поток не содержит флага, который указывает наличие или отсутствие остаточных данных для этого последующего блока, и предполагается, что остаточные данные для этого последующего блока присутствуют в битовом потоке; и
если этот последующий блок кодируют/кодирован с использованием интра-основанного на BC предсказания в режиме без пропуска и режим разделения для этого последующего блока не имеет упомянутого некоторого определенного значения, битовый поток включает в себя флаг, который указывает наличие или отсутствие остаточных данных для этого последующего блока.
8. Способ (1300, 1500) по п. 1 или 2, в котором интра-основанное на BC предсказание включает в себя:
определение области интра-основанного на BC предсказания для текущего блока с использованием опорной области, при этом область интра-основанного на BC предсказания зеркально отражают/отражена относительно упомянутой опорной области.
9. Способ (1300, 1500) по п. 8, в котором область интра-основанного на BC предсказания зеркально отражают/отражена горизонтально относительно опорной области и/или зеркально отражают/отражена вертикально относительно опорной области.
10. Способ (1300, 1500) по п. 1 или 2, в котором текущий блок является единицей кодирования.
11. Вычислительное устройство, выполненное с возможностью выполнять способ (1300) по любому из пп. 1, 3-10.
12. Вычислительное устройство, выполненное с возможностью выполнять способ (1500) по любому из пп. 2-10.
13. Один или более считываемых компьютером носителей, хранящих исполнимые компьютером инструкции для предписания вычислительному устройству (100), запрограммированному посредством них, выполнять способ (1300) по любому из пп. 1, 3-10.
14. Один или более считываемых компьютером носителей, хранящих исполнимые компьютером инструкции для предписания вычислительному устройству (100), запрограммированному посредством них, выполнять способ (1500) по любому из пп. 2-10.
RU2016135632A 2014-03-04 2014-03-04 Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании RU2657210C2 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/072824 WO2015131323A1 (en) 2014-03-04 2014-03-04 Block flipping and skip mode in intra block copy prediction

Publications (3)

Publication Number Publication Date
RU2016135632A RU2016135632A (ru) 2018-03-07
RU2016135632A3 RU2016135632A3 (ru) 2018-03-07
RU2657210C2 true RU2657210C2 (ru) 2018-06-08

Family

ID=54054337

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016135632A RU2657210C2 (ru) 2014-03-04 2014-03-04 Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании

Country Status (11)

Country Link
US (1) US10368091B2 (ru)
EP (2) EP3114842A4 (ru)
JP (1) JP2017512026A (ru)
KR (2) KR20160129075A (ru)
CN (1) CN105247871B (ru)
AU (1) AU2014385769B2 (ru)
BR (1) BR112016018814A8 (ru)
CA (1) CA2939431C (ru)
MX (1) MX361228B (ru)
RU (1) RU2657210C2 (ru)
WO (1) WO2015131323A1 (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2801586C1 (ru) * 2020-01-10 2023-08-11 TEНСЕНТ АМЕРИКА ЭлЭлСи Способ и устройство сигнализации флагов режима пропускания
US11930208B2 (en) 2020-01-10 2024-03-12 Tencent America LLC Method and apparatus for signaling skip mode flag

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659606B (zh) 2013-10-14 2019-06-18 微软技术许可有限责任公司 用于视频和图像编码和解码的方法、系统和介质
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
RU2654129C2 (ru) 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Функциональные возможности режима внутреннего предсказания с блочным копированием для кодирования и декодирования видео и изображений
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
CN105917650B (zh) 2014-01-03 2019-12-24 微软技术许可有限责任公司 视频和图像编/解码的方法、计算设备及计算机可读介质
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US9860559B2 (en) * 2014-03-17 2018-01-02 Mediatek Singapore Pte. Ltd. Method of video coding using symmetric intra block copy
KR102319384B1 (ko) * 2014-03-31 2021-10-29 인텔렉추얼디스커버리 주식회사 템플릿 매칭 기반의 화면 내 픽쳐 부호화 및 복호화 방법 및 장치
US20170195677A1 (en) * 2014-05-22 2017-07-06 Mediatek Inc. Method of Intra Block Copy with Flipping for Image and Video Coding
US10136141B2 (en) * 2014-06-11 2018-11-20 Qualcomm Incorporated Determining quantization parameter (QP) values and delta QP values for palette coded blocks in video coding
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
KR102330740B1 (ko) 2014-09-30 2021-11-23 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
CN105681926B (zh) * 2016-01-18 2019-03-22 四川长虹电器股份有限公司 一种带运动补偿功能液晶电视的画质提升系统及方法
EP3300362A1 (en) * 2016-09-27 2018-03-28 Thomson Licensing Method for improved intra prediction when reference samples are missing
CN109923865A (zh) 2017-03-22 2019-06-21 华为技术有限公司 一种视频数据的解码方法、解码装置、编码方法和编码装置
WO2018171890A1 (en) * 2017-03-23 2018-09-27 Huawei Technologies Co., Ltd. Devices and methods for video coding
US10115012B1 (en) * 2017-04-07 2018-10-30 Box, Inc. Capture object boundary jitter reduction
FR3068557A1 (fr) * 2017-07-05 2019-01-04 Orange Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants
US10674159B2 (en) 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
CN118450120A (zh) * 2018-02-09 2024-08-06 弗劳恩霍夫应用研究促进协会 基于分区的帧内编码概念
CN110858905B (zh) 2018-08-26 2023-04-07 北京字节跳动网络技术有限公司 基于多运动模型的跳过和直接模式编解码的视频块中的修剪方法及装置
WO2020058896A1 (en) 2018-09-19 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Intra mode coding based on history information
CN118741099A (zh) 2018-12-12 2024-10-01 数码士有限公司 使用当前图片参考的视频信号处理方法和设备
WO2020156540A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer management for intra block copy in video coding
KR20210123300A (ko) 2019-02-02 2021-10-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
US20200252608A1 (en) * 2019-02-05 2020-08-06 Qualcomm Incorporated Sub-partition intra prediction
CN118870033A (zh) * 2019-02-19 2024-10-29 数码士有限公司 基于帧内预测的视频信号处理方法和设备
WO2020177662A1 (en) 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Implementation aspects in intra block copy in video coding
KR102688366B1 (ko) 2019-03-01 2024-07-24 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 방향 기반 예측
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
CN113950838A (zh) 2019-06-06 2022-01-18 北京字节跳动网络技术有限公司 基于子块的帧内块复制
WO2020253650A1 (en) 2019-06-16 2020-12-24 Beijing Bytedance Network Technology Co., Ltd. Interaction between screen content coding tools and motion information
JP7552988B2 (ja) * 2019-06-21 2024-09-18 インターデジタル ヴイシー ホールディングス, インコーポレイテッド オプティカルフローによる動き補償のための精度精緻化
WO2020259426A1 (en) 2019-06-22 2020-12-30 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for intra block copy mode
CN117294841A (zh) 2019-07-06 2023-12-26 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
JP7359934B2 (ja) 2019-07-10 2023-10-11 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのサンプル識別
EP3981146A4 (en) 2019-07-11 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. BITSTREAM CONFORMITY RESTRICTIONS FOR INTRA-BLOCK COPY IN VIDEO ENCODING
KR20240132379A (ko) * 2019-09-07 2024-09-03 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 비디오 코딩에서의 예측 모드 시그널링
EP4011076A4 (en) 2019-09-09 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. INTRA-BLOCK COPY ENCODING AND DECODING
CN114402616A (zh) 2019-09-27 2022-04-26 Oppo广东移动通信有限公司 当前块的预测方法及装置、设备、存储介质
CN114788271A (zh) * 2020-01-03 2022-07-22 英特尔公司 具有多种块内拷贝模式的视频编码
CN115633172A (zh) * 2020-12-06 2023-01-20 浙江大华技术股份有限公司 基于ibc模式编码方法、电子设备及存储介质
US11503336B2 (en) * 2020-12-07 2022-11-15 Tencent America LLC Method and apparatus for video coding
US20240179343A1 (en) * 2021-04-02 2024-05-30 Beijing Bytedance Network Technology Co., Ltd. Method, device, and medium for video processing
US20230135166A1 (en) * 2021-10-28 2023-05-04 Tencent America LLC Intrabc using wedgelet partitioning
US20240022710A1 (en) * 2022-07-12 2024-01-18 Tencent America LLC Prediction of intrabc flip type

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070036226A1 (en) * 2005-08-12 2007-02-15 Samsung Electronics Co., Ltd. Intraprediction encoding/decoding method and apparatus
RU2314656C2 (ru) * 2002-06-11 2008-01-10 Нокиа Корпорейшн Внутреннее кодирование, основанное на пространственном прогнозировании
CN101626512A (zh) * 2009-08-11 2010-01-13 北京交通大学 一种基于相关性优化准则的多描述视频编码方法及装置
US20100061461A1 (en) * 2008-09-11 2010-03-11 On2 Technologies Inc. System and method for video encoding using constructed reference frame
US20110243229A1 (en) * 2008-09-22 2011-10-06 Sk Telecom. Co., Ltd Apparatus and method for image encoding/decoding using predictability of intra-prediction mode

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000102016A (ja) 1998-09-22 2000-04-07 Victor Co Of Japan Ltd 動き補償予測回路
JP2004007379A (ja) 2002-04-10 2004-01-08 Toshiba Corp 動画像符号化方法及び動画像復号化方法
US7120196B2 (en) 2002-04-29 2006-10-10 Ess Technology, Inc. Intra-prediction using intra-macroblock motion compensation
US20060051068A1 (en) 2003-01-10 2006-03-09 Thomson Licensing S.A. Decoder apparatus and method for smoothing artifacts created during error concealment
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
BRPI0413988A (pt) 2003-08-26 2006-11-07 Thomson Licensing método e aparelho para decodificar blocos intra-inter codificador hìbridos
US7317839B2 (en) 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
KR101044934B1 (ko) 2003-12-18 2011-06-28 삼성전자주식회사 움직임 벡터 추정방법 및 부호화 모드 결정방법
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
JP4699460B2 (ja) 2004-07-20 2011-06-08 クゥアルコム・インコーポレイテッド 時間的なビデオ圧縮における運動ベクトル予測のための方法および装置
US20070003622A1 (en) * 2004-12-16 2007-01-04 Sovereign Pharmaceuticals, Ltd. Diphenhydramine containing dosage form
JP2006140683A (ja) * 2004-11-11 2006-06-01 Canon Inc 画像符号化装置
US7720154B2 (en) 2004-11-12 2010-05-18 Industrial Technology Research Institute System and method for fast variable-size motion estimation
JP2006140758A (ja) 2004-11-12 2006-06-01 Toshiba Corp 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
KR100679035B1 (ko) 2005-01-04 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
KR100716999B1 (ko) 2005-06-03 2007-05-10 삼성전자주식회사 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치
JP2007053561A (ja) 2005-08-17 2007-03-01 Matsushita Electric Ind Co Ltd 画像符号化装置および画像符号化方法
US7986844B2 (en) 2005-11-22 2011-07-26 Intel Corporation Optimized video compression using hashing function
US8303871B2 (en) * 2005-11-28 2012-11-06 Gala Industries, Inc Apparatus and method for controlled pelletization processing
US8582905B2 (en) 2006-01-31 2013-11-12 Qualcomm Incorporated Methods and systems for rate control within an encoding device
CN101026761B (zh) 2006-02-17 2010-05-12 中国科学院自动化研究所 一种具有最小误差的快速变尺寸块匹配的运动估计方法
US20090316786A1 (en) 2006-04-14 2009-12-24 Nxp B.V. Motion estimation at image borders
WO2008004940A1 (en) 2006-07-07 2008-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Video data management
DE102007035204A1 (de) 2006-07-28 2008-02-07 Mediatek Inc. Videoverarbeitungs- und - betriebsvorrichtung
US8472527B2 (en) 2006-09-13 2013-06-25 Texas Instruments Incorporated Hierarchical motion estimation using original frame for sub-sampled reference
FR2906433B1 (fr) 2006-09-22 2009-02-27 Canon Kk Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre
US8218641B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
JP2008154015A (ja) 2006-12-19 2008-07-03 Hitachi Ltd 復号化方法および符号化方法
CN100527842C (zh) 2007-01-26 2009-08-12 清华大学 基于背景的运动估计编码方法
US8160150B2 (en) 2007-04-10 2012-04-17 Texas Instruments Incorporated Method and system for rate distortion optimization
JP2009147807A (ja) 2007-12-17 2009-07-02 Fujifilm Corp 画像処理装置
CN101232619B (zh) 2008-01-25 2011-05-11 浙江大学 嵌入帧内编码块的视频编码方法
TWI375472B (en) 2008-02-04 2012-10-21 Ind Tech Res Inst Intra prediction method for luma block of video
EP2263381A1 (en) 2008-04-11 2010-12-22 Thomson Licensing Deblocking filtering for displaced intra prediction and template matching
JP2010035137A (ja) 2008-07-01 2010-02-12 Sony Corp 画像処理装置および方法、並びにプログラム
US8213503B2 (en) 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
EP2392130A4 (en) 2009-02-02 2013-04-03 Calgary Scient Inc TRANSMISSION OF IMAGE DATA
RU2420021C2 (ru) 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
EP2249571A1 (en) 2009-05-04 2010-11-10 Thomson Licensing SA Method and device for encoding an image frame comprising macroblocks
US20120275518A1 (en) 2009-07-10 2012-11-01 Shinya Kadono Moving picture coding method, apparatus, program, and integrated circuit
EP2493195A1 (en) 2009-10-20 2012-08-29 Sharp Kabushiki Kaisha Video encoding device, video decoding device, and data structure
TWI566586B (zh) 2009-10-20 2017-01-11 湯姆生特許公司 一序列形象的現時區塊之寫碼方法和重建方法
JP5321426B2 (ja) 2009-11-26 2013-10-23 株式会社Jvcケンウッド 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法
KR101623124B1 (ko) 2009-12-03 2016-05-24 에스케이 텔레콤주식회사 비디오 인코딩 장치 및 그 인코딩 방법, 비디오 디코딩 장치 및 그 디코딩 방법, 및 거기에 이용되는 방향적 인트라 예측방법
CN102860006B (zh) 2010-02-05 2016-11-23 瑞典爱立信有限公司 管理预测运动向量候选
US20110194613A1 (en) 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks
JP5375676B2 (ja) * 2010-03-04 2013-12-25 富士通株式会社 画像処理装置、画像処理方法、および画像処理プログラム
US9756357B2 (en) 2010-03-31 2017-09-05 France Telecom Methods and devices for encoding and decoding an image sequence implementing a prediction by forward motion compensation, corresponding stream and computer program
US8644375B2 (en) 2010-04-09 2014-02-04 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
US8619857B2 (en) 2010-04-09 2013-12-31 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
KR101752418B1 (ko) 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR20110123651A (ko) 2010-05-07 2011-11-15 한국전자통신연구원 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법
US9036932B2 (en) 2010-06-21 2015-05-19 Thomson Licensing Method and apparatus for encoding/decoding image data
KR101484281B1 (ko) 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
RU2613725C1 (ru) 2010-07-14 2017-03-21 Нтт Докомо, Инк. Внутреннее предсказание с низкой сложностью для кодирования видеосигнала
CN107071487B (zh) 2010-11-04 2020-09-15 Ge视频压缩有限责任公司 支持区块合并和跳过模式的图像编码
KR101756442B1 (ko) 2010-11-29 2017-07-11 에스케이텔레콤 주식회사 인트라예측모드의 중복성을 최소화하기 위한 영상 부호화/복호화 방법 및 장치
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
KR101739579B1 (ko) 2011-01-04 2017-05-24 에스케이 텔레콤주식회사 코딩 유닛 단위 병렬 인트라예측을 이용한 부호화/복호화 방법 및 장치
US8913662B2 (en) 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
KR20120080122A (ko) 2011-01-06 2012-07-16 삼성전자주식회사 경쟁 기반의 다시점 비디오 부호화/복호화 장치 및 방법
US9787981B2 (en) 2011-01-19 2017-10-10 Renesas Electronics Corporation Image coding device and image decoding device
US8755437B2 (en) 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
US9532066B2 (en) 2011-01-21 2016-12-27 Qualcomm Incorporated Motion vector prediction
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9288501B2 (en) 2011-03-08 2016-03-15 Qualcomm Incorporated Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
KR101532665B1 (ko) 2011-03-14 2015-07-09 미디어텍 인크. 시간적 움직임 백터 예측을 도출하기 위한 방법 및 장치
ES2770437T3 (es) 2011-03-21 2020-07-01 Lg Electronics Inc Método para seleccionar un predictor de vector de movimiento y un dispositivo que lo utiliza
US8693547B2 (en) 2011-04-06 2014-04-08 Google Inc. Apparatus and method for coding using motion vector segmentation
US8977544B2 (en) * 2011-04-21 2015-03-10 Samsung Electronics Co., Ltd. Method of quantizing linear predictive coding coefficients, sound encoding method, method of de-quantizing linear predictive coding coefficients, sound decoding method, and recording medium and electronic device therefor
US20120281760A1 (en) 2011-05-04 2012-11-08 Hyung Joon Kim Iterative Grid-Pattern Motion Search
CN102137263B (zh) 2011-05-09 2013-07-03 松日数码发展(深圳)有限公司 基于cnm关键帧分类的分布式视频编码及解码方法
US20120294353A1 (en) 2011-05-16 2012-11-22 Mediatek Inc. Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components
CN102238391B (zh) 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
JP5727873B2 (ja) 2011-06-10 2015-06-03 日本放送協会 動きベクトル検出装置、符号化装置、及びこれらのプログラム
US9565428B2 (en) 2011-06-20 2017-02-07 Mediatek Singapore Pte. Ltd. Method and apparatus of chroma intra prediction with reduced line memory
CN103621090B (zh) 2011-06-24 2017-09-15 寰发股份有限公司 移除运动向量预测子中冗余的方法与装置
EP4270950A3 (en) 2011-06-27 2024-02-14 Sun Patent Trust Encoding apparatus and decoding apparatus
US9060173B2 (en) 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9516349B2 (en) 2011-07-12 2016-12-06 Futurewei Technologies, Inc. Pixel-based intra prediction for coding in HEVC
EP2745519B1 (en) 2011-08-17 2017-09-27 MediaTek Singapore Pte Ltd. Method and apparatus for intra prediction using non-square blocks
CN107257480B (zh) 2011-08-29 2020-05-29 苗太平洋控股有限公司 以amvp模式对图像编码的方法
US9578336B2 (en) 2011-08-31 2017-02-21 Texas Instruments Incorporated Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems
CN103999468A (zh) 2011-10-21 2014-08-20 诺基亚公司 用于视频编码的方法和装置
GB2495990A (en) 2011-10-28 2013-05-01 Canon Kk Motion compensated image coding with omission of coding mode cost calculation for a motion predictor in a set.
US10390046B2 (en) 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
US9392270B2 (en) 2011-11-08 2016-07-12 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding and/or signaling
EP2777284B1 (en) 2011-11-11 2018-09-05 GE Video Compression, LLC Effective wedgelet partition coding using spatial prediction
US20130121417A1 (en) 2011-11-16 2013-05-16 Qualcomm Incorporated Constrained reference picture sets in wave front parallel processing of video data
EP3739886A1 (en) 2011-11-18 2020-11-18 GE Video Compression, LLC Multi-view coding with efficient residual handling
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
KR102061214B1 (ko) 2011-11-25 2019-12-31 선 페이턴트 트러스트 화상 처리 방법 및 화상 처리 장치
RU2493670C2 (ru) 2011-12-15 2013-09-20 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ блочной межкадровой компенсации движения для видеокодеков
EP2795901A1 (en) 2011-12-20 2014-10-29 Motorola Mobility LLC Method and apparatus for efficient transform unit encoding
US20130163664A1 (en) 2011-12-22 2013-06-27 Qualcomm Incorporated Unified partition mode table for intra-mode coding
US9762904B2 (en) 2011-12-22 2017-09-12 Qualcomm Incorporated Performing motion vector prediction for video coding
WO2013102293A1 (en) 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
JP2013150173A (ja) 2012-01-19 2013-08-01 Sony Corp 画像処理装置および方法
US9210438B2 (en) 2012-01-20 2015-12-08 Sony Corporation Logical intra mode naming in HEVC video coding
CN109729355B (zh) 2012-01-20 2022-07-26 Ge视频压缩有限责任公司 解码器、传送解多工器和编码器
US20130188718A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc without including a temporally neighboring block motion vector in a candidate list
JP2013150215A (ja) 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
WO2013128010A2 (en) 2012-03-02 2013-09-06 Canon Kabushiki Kaisha Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream
US8737824B1 (en) 2012-03-09 2014-05-27 Google Inc. Adaptively encoding a media stream with compound prediction
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US9838684B2 (en) 2012-04-11 2017-12-05 Qualcomm Incorporated Wavefront parallel processing for video coding
US20130272409A1 (en) 2012-04-12 2013-10-17 Qualcomm Incorporated Bandwidth reduction in video coding through applying the same reference index
CA2864002A1 (en) 2012-04-24 2013-10-31 Mediatek Inc. Method and apparatus of motion vector derivation for 3d video coding
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9762903B2 (en) 2012-06-01 2017-09-12 Qualcomm Incorporated External pictures in video coding
CN102752595B (zh) 2012-06-29 2014-07-09 香港应用科技研究院有限公司 用于深度图编码和解码的混合型跳过模式
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
US9264713B2 (en) * 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9467692B2 (en) 2012-08-31 2016-10-11 Qualcomm Incorporated Intra prediction improvements for scalable video coding
US20140071235A1 (en) 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
CN103237226B (zh) * 2013-04-07 2016-08-03 宁波大学 一种立体视频宏块丢失错误隐藏方法
US11323747B2 (en) 2013-06-05 2022-05-03 Qualcomm Incorporated Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans
US9300967B2 (en) 2013-06-19 2016-03-29 Apple Inc. Sample adaptive offset control
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
US10529013B2 (en) * 2013-07-01 2020-01-07 Intuit Inc. Identifying business type using public information
US20150016516A1 (en) 2013-07-15 2015-01-15 Samsung Electronics Co., Ltd. Method for intra prediction improvements for oblique modes in video coding
KR102060857B1 (ko) 2013-07-24 2019-12-30 퀄컴 인코포레이티드 3d-hevc 를 위한 단순화된 진보된 모션 예측
US9503715B2 (en) * 2013-08-30 2016-11-22 Qualcomm Incorporated Constrained intra prediction in video coding
US20150071357A1 (en) 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
AU2013228045A1 (en) 2013-09-13 2015-04-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
EP3085083B1 (en) 2013-12-18 2021-12-15 HFI Innovation Inc. Method and apparatus for palette initialization and management
TWI536811B (zh) 2013-12-27 2016-06-01 財團法人工業技術研究院 影像處理方法與系統、解碼方法、編碼器與解碼器
US9883197B2 (en) 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
US20150271515A1 (en) * 2014-01-10 2015-09-24 Qualcomm Incorporated Block vector coding for intra block copy in video coding
GB2522844A (en) 2014-01-29 2015-08-12 Sony Corp Data encoding and decoding
EP3114838B1 (en) 2014-03-04 2018-02-07 Microsoft Technology Licensing, LLC Hash table construction and availability checking for hash-based block matching
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
EP3158753B1 (en) 2014-06-19 2021-12-08 VID SCALE, Inc. Intra block copy coding with block vector derivation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2314656C2 (ru) * 2002-06-11 2008-01-10 Нокиа Корпорейшн Внутреннее кодирование, основанное на пространственном прогнозировании
US20070036226A1 (en) * 2005-08-12 2007-02-15 Samsung Electronics Co., Ltd. Intraprediction encoding/decoding method and apparatus
US20100061461A1 (en) * 2008-09-11 2010-03-11 On2 Technologies Inc. System and method for video encoding using constructed reference frame
US20110243229A1 (en) * 2008-09-22 2011-10-06 Sk Telecom. Co., Ltd Apparatus and method for image encoding/decoding using predictability of intra-prediction mode
CN101626512A (zh) * 2009-08-11 2010-01-13 北京交通大学 一种基于相关性优化准则的多描述视频编码方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2801586C1 (ru) * 2020-01-10 2023-08-11 TEНСЕНТ АМЕРИКА ЭлЭлСи Способ и устройство сигнализации флагов режима пропускания
US11930208B2 (en) 2020-01-10 2024-03-12 Tencent America LLC Method and apparatus for signaling skip mode flag

Also Published As

Publication number Publication date
KR102401946B1 (ko) 2022-05-24
US10368091B2 (en) 2019-07-30
JP2017512026A (ja) 2017-04-27
KR20160129075A (ko) 2016-11-08
KR20210063485A (ko) 2021-06-01
AU2014385769B2 (en) 2018-12-06
MX2016011296A (es) 2016-11-08
CN105247871A (zh) 2016-01-13
CA2939431A1 (en) 2015-09-11
BR112016018814A8 (pt) 2020-06-23
CN105247871B (zh) 2020-09-15
EP3114842A4 (en) 2017-02-22
CA2939431C (en) 2020-09-22
WO2015131323A1 (en) 2015-09-11
RU2016135632A (ru) 2018-03-07
US20170070748A1 (en) 2017-03-09
AU2014385769A1 (en) 2016-09-01
EP3114842A1 (en) 2017-01-11
EP3253059A1 (en) 2017-12-06
MX361228B (es) 2018-11-29
RU2016135632A3 (ru) 2018-03-07

Similar Documents

Publication Publication Date Title
RU2657210C2 (ru) Зеркальное отображение блоков и режим пропуска в интра-основанном на копии блока предсказании
US11910005B2 (en) Block vector prediction in video and image coding/decoding
US11683522B2 (en) Adaptive switching of color spaces, color sampling rates and/or bit depths
US12096024B2 (en) Features of base color index map mode for video and image coding and decoding
US10368092B2 (en) Encoder-side decisions for block flipping and skip mode in intra block copy prediction
CA2940015C (en) Adjusting quantization/scaling and inverse quantization/scaling when switching color spaces
RU2679201C2 (ru) Правила для режимов внутрикадрового прогнозирования, когда активируется волновая параллельная обработка данных
US10182241B2 (en) Encoding strategies for adaptive switching of color spaces, color sampling rates and/or bit depths
JP6503101B2 (ja) イントラブロックコピー予測におけるブロック反転及びスキップモード