[0001] Данная заявка испрашивает приоритет по предварительной патентной заявке США № 61/587,624, поданной 17 января 2012 г., предварительной патентной заявке США № 61/589,290, поданной 20 января 2012 г., предварительной патентной заявке США № 61/591,772, поданной 27 января 2012 г., предварительной патентной заявке США № 61/606,347, поданной 2 марта 2012 г. и предварительной патентной заявке США № 61/622,785, поданной 11 апреля 2012 г., которые все, таким образом, включены в данный документ посредством ссылки в полном объеме.
Область техники
[0002] Это раскрытие относится к кодированию видео и, в частности, к методам кодирования коэффициентов преобразования.
Уровень техники
[0003] Возможности цифрового видео можно внедрять в разнообразные устройства, включая цифровые телевизоры, системы прямого цифрового вещания, беспроводные широковещательные системы, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференцсвязи и пр. Устройства цифрового видео реализуют методы сжатия видео, например, описанные в стандартах, заданных как MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), стандарте высокоэффективного кодирования видео (HEVC), в настоящее время находящемся в разработке, и расширениях таких стандартов, для более эффективного осуществления передачи, приема и хранения цифровой видеоинформации.
[0004] Методы сжатия видео включают в себя пространственное предсказание и/или временное предсказание для снижения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео, кадр видео или слайс (slice) можно разбивать на блоки. Кадр видео альтернативно может именоваться изображением. Каждый блок можно дополнительно делить на более мелкие части. Блоки в интра-кодированном (I) (кодированном с внутренним предсказанием) кадре или слайсе, кодируются с использованием пространственного предсказания в отношении опорных выборок в соседних блоках в одном и том же кадре или слайсе. Блоки в интер-кодированном (P или B) (кодированном с внешним предсказанием) кадре или слайсе могут использовать пространственное предсказание в отношении опорных выборок в соседних блоках в одном и том же кадре или слайсе или временное предсказание в отношении опорных выборок в других опорных кадров. Пространственное или временное предсказание дает в результате блок предсказания для блока, подлежащего кодированию. Остаточные данные представляет пиксельные разности между исходным блоком, подлежащим кодированию, т.е. кодируемым блоком, и блоком предсказания.
[0005] Интер-кодируемый блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующих блок предсказания, и остаточные данные, указывающие разность между кодированным блоком и блоком предсказания. Интра-кодируемый блок кодируется согласно режиму интра-кодирования и остаточным данным. Для дополнительного сжатия, остаточные данные можно преобразовывать из пиксельной области в преобразовательную область, что дает в результате остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двухмерной матрице, можно сканировать в конкретном порядке для формирования одномерного вектора коэффициентов преобразования для энтропийного кодирования.
Сущность изобретения
[0006] В целом, в этом раскрытии описаны методы кодирования видеоданных. В частности, в этом раскрытии описаны методы кодирования информации, относящейся к коэффициентам преобразования в процессе кодирования видео.
[0007] В этом раскрытии предлагается различные методы ограничения количества кодируемых бинов (двоичных элементов) с использованием адаптивной контекстной модели с контекстно-адаптивным двоичным арифметическим кодированием (CABAC) для сигнализации соотношения между коэффициентами преобразования и количеством бинов, которые кодируются в режиме обхода. В частности, в этом раскрытии раскрыты методы ограничения количества бинов, которые используют CABAC для кодирования информации уровня коэффициентов преобразования в процессе кодирования видео.
[0008] В одном примере раскрытия, способ кодирования коэффициентов преобразования в процессе кодирования видео содержит этапы, на которых кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодируют флаг превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодируют флаг превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух.
[0009] В другом примере раскрытия, способ кодирования коэффициентов преобразования в процессе кодирования видео содержит этапы, на которых кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодируют флаг превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодируют флаг превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0010] В другом примере раскрытия, способ кодирования коэффициентов преобразования в процессе кодирования видео содержит этапы, на которых кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодируют флаг превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодируют флаг превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0011] В этом раскрытии также описаны видеокодер, видеодекодер, устройства и компьютерно-читаемые носители, хранящие инструкции, которые могут быть сконфигурированы для осуществления описанных здесь методов сигнализации коэффициентов преобразования.
[0012] Детали одного или более примеров представлены в прилагаемых чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей, а также их формулы изобретения.
Краткое описание чертежей
[0013] Фиг. 1 - блок-схема, демонстрирующая пример системы кодирования и декодирования видео.
[0014] Фиг. 2 - концептуальная схема, изображающая пример обратных порядков сканирования для кодирования коэффициентов преобразования.
[0015] Фиг. 3 - концептуальная схема, изображающая пример диагонального сканирования по подблокам.
[0016] Фиг. 4 - концептуальная схема, изображающая пример обратного диагонального сканирования фрагмента 4×4 коэффициентов преобразования.
[0017] Фиг. 5 - концептуальная схема, демонстрирующая пороги кодирования на основе контекста на основании позиции подблока.
[0018] Фиг. 6 - концептуальная схема, демонстрирующая пороги кодирования на основе контекста на основании позиции подблока и позиции последнего значимого коэффициента.
[0019] Фиг. 7 - концептуальная схема, демонстрирующая пороги кодирования на основе контекста на основании позиции подблока и позиции последнего значимого коэффициента.
[0020] Фиг. 8 - концептуальная схема, демонстрирующая пример разделения блока 8×8 на 4 подблока 4×4 и контекстного соседства.
[0021] Фиг. 9 - блок-схема, демонстрирующая пример видеокодера.
[0022] Фиг. 10 - блок-схема, демонстрирующая пример видеодекодера.
[0023] Фиг. 11 - блок-схема операций, демонстрирующая пример способа согласно методам этого раскрытия.
[0024] Фиг. 12 - блок-схема операций, демонстрирующая другой пример способа согласно методам этого раскрытия.
[0025] Фиг. 13 - блок-схема операций, демонстрирующая другой пример способа согласно методам этого раскрытия.
Подробное описание
[0026] В целом, в этом раскрытии описаны методы кодирования видеоданных. В частности, в этом раскрытии описаны методы кодирования коэффициентов преобразования в процессе кодирования и/или декодирования видео.
[0027] Информация уровня (например, абсолютное значение и знак) для коэффициентов преобразования обычно энтропийно кодируется одним из двух путей. Некоторые бины информации уровня кодируются с адаптивной контекстной моделью (например, с контекстно-адаптивным двоичным арифметическим кодированием (CABAC)). Другие бины информации уровня кодируются в режиме обхода с фиксированными моделями равной вероятности (например, экспоненциальным голомбовым кодером или кодером Голомба-Райса). Было установлено, что адаптивное кодирование бинов на основе контекста, несмотря на повышение эффективности использования полосы, является одним из главных узких мест энтропийного кодирования.
[0028] Ввиду этого недостатка, это раскрытие представляет методы повышения пропускной способности CABAC. В частности, в некоторых примерах, в этом раскрытии предлагается методы повышения пропускной способности CABAC путем снижения количества адаптивно-контекстно-кодированных бинов и увеличения количества бинов, кодированных в режиме обхода.
[0029] На фиг. 1 показана блок-схема, демонстрирующая пример системы 10 кодирования и декодирования видео, которая может быть выполнена с возможностью использования методов кодирования коэффициентов преобразования в соответствии с примерами этого раскрытия. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированное видео на устройство 14 назначения по каналу 16 связи. Кодированные видеоданные также могут сохраняться на запоминающем носителе 34 или файловом сервере 36, и, при желании, устройство 14 назначения может обращаться к ним. При осуществлении сохранения на запоминающий носитель или файловый сервер, видеокодер 20 может передавать кодированные видеоданные на другое устройство, например, сетевой интерфейс, компакт-диск (CD), устройство записи или штамповки дисков Blu-ray или цифровых видеодисков (DVD), или другие устройства, для сохранения кодированных видеоданных на запоминающий носитель. Аналогично, устройство, отдельное от видеодекодера 30, например, сетевой интерфейс, устройство чтения CD или DVD и т.п., может извлекать кодированные видеоданные из запоминающего носителя и направлять извлеченные данные на видеодекодер 30.
[0030] Устройство-источник 12 и устройство 14 назначения могут содержать любое из разнообразных устройств, включая настольные компьютеры, компьютеры-ноутбуки (т.е. портативные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, например, так называемые “смартфоны”, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, консоли для видеоигр, и т.п. Во многих случаях, такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводного и проводного каналов, пригодных для передачи кодированных видеоданных. Аналогично, устройство 14 назначения может обращаться к файловому серверу 36 посредством любого стандартного соединения с возможностью передачи данных, включая интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или их комбинацию, которая пригодна для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере.
[0031] Методы кодирования коэффициентов преобразования, в соответствии с примерами этого раскрытия, может применяться к кодирование видео для поддержки любого из различных мультимедийных применений, например, эфирного телевизионного вещания, кабельных телевизионных передач, спутниковых телевизионных передач, передач потокового видео, например, через интернет, кодирования цифрового видео для сохранения на запоминающем носителе, декодирования цифрового видео, хранящегося на запоминающем носителе, или других применений. В некоторых примерах, система 10 может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видео для поддержки таких применений, как потоковая передача видео, воспроизведение видео, вещание видео и/или видеотелефонии.
[0032] В примере, показанном на фиг. 1, устройство-источник 12 включает в себя источник 18 видео, видеокодер 20, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12, источник 18 видео может включать в себя такой источник, как устройство захвата видео, например, видеокамеру, архив видеозаписей, содержащий ранее отснятое видео, интерфейс видеоподачи для приема видео от поставщика видеоконтента, и/или систему компьютерной графики для генерации данных компьютерной графики в качестве исходного видео, или комбинацию таких источников. В порядке одного примера, если источником 18 видео является видеокамера, устройство-источник 12 и устройство 14 назначения могут образовывать так называемые камерофоны или видеотелефоны. Однако методы, описанные в этом раскрытии, можно применять к кодированию видео в целом и можно применять к беспроводным и/или проводным приложениям.
[0033] Захваченное, предварительно захваченное или создаваемое на компьютере видео может кодироваться видеокодером 20. Кодированная видеоинформация может модулироваться модемом 22 согласно стандарту связи, например, протоколу проводной или беспроводной связи, и передаваться на устройство 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включая усилители, фильтры и, в случае беспроводной связи, одну или более антенн.
[0034] Захваченное, предварительно захваченное или создаваемое на компьютере видео, которое кодируется видеокодером 20, также могут сохраняться на запоминающий носитель 34 или файловый сервер 36 для дальнейшего потребления. Запоминающий носитель 34 может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память или любые другие пригодные цифровые запоминающие носители для сохранения кодированного видео. Затем устройство 14 назначения может обращаться к кодированному видео, хранящемуся на запоминающем носителе 34, для декодирования и воспроизведения. Хотя это не показано на фиг. 1, в некоторых примерах, запоминающий носитель 34 и/или файловый сервер 36 может сохранять выходной сигнал передатчика 24.
[0035] Файловый сервер 36 может быть сервером любого типа, способным хранить кодированное видео и передавать этот кодированное видео на устройство 14 назначения. Пример файловых серверов включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, устройства сетевого хранения (NAS), локальный дисковод, или устройство любого другого типа, способное хранить кодированные видеоданные и передавать их на устройство назначения. Передача кодированных видеоданных с файлового сервера 36 может быть потоковой передачей, загрузочной передачей или их комбинацией. Устройство 14 назначения может обращаться к файловому серверу 36 посредством любого стандартного соединения с возможностью передачи данных, включая интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB, и т.д.), или их комбинацию, которая пригодна для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере.
[0036] Устройство 14 назначения, в примере, показанном на фиг. 1, включает в себя приемник 26, модем 28, видеодекодер 30, и устройство 32 отображения. Приемник 26 устройства 14 назначения принимает информацию по каналу 16, и модем 28 демодулирует информацию для формирования демодулированного битового потока для видеодекодера 30. Информация, передаваемая по каналу 16, может включать в себя различную синтаксическую информацию, генерируемую видеокодером 20, для использования видеодекодером 30 при декодировании видеоданных. Такой синтаксис также может быть включен с кодированными видеоданными, хранящимися на запоминающем носителе 34 или файловом сервере 36. Каждый из видеокодера 20 и видеодекодера 30 может входить в состав соответствующего кодера-декоодера (кодека) который способен кодировать или декодировать видеоданные.
[0037] Устройство 32 отображения может быть встроено в устройство 14 назначения или быть внешним по отношению к нему. В некоторых примерах, устройство 14 назначения может включать в себя интегрированное устройство отображения и также может быть выполнено с возможностью сопрягаться с внешним устройством отображения. В других примерах, устройство 14 назначения может быть устройством отображения. В целом, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из различных устройств отображения, например, жидкокристаллический дисплей (ЖКД), плазменный дисплей, органо-светодиодный (ОСИД) дисплей или другой тип устройства отображения.
[0038] В примере, показанном на фиг. 1, канал 16 связи может содержать любую беспроводную или проводную среду связи, например радиочастотный (РЧ) спектр или одну или более физических линий передачи, или любую комбинацию беспроводных и проводных сред передачи данных. Канал 16 связи может составлять часть сети с коммутацией пакетов, например, локальной сети, широкомасштабной сети или глобальной сети, например, интернета. Канал 16 связи, в общем случае, представляет любую пригодную среду связи, или совокупность разных сред связи, для передачи видеоданных от устройства-источника 12 на устройство 14 назначения, включая любую пригодную комбинацию проводных или беспроводных сред передачи данных. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для способствования связи от устройства-источника 12 на устройство 14 назначения.
[0039] Видеокодер 20 и видеодекодер 30 могут действовать согласно стандарту сжатия видео, например, стандарту высокоэффективного кодирования видео (HEVC), в настоящее время находящемуся в разработке организациями объединенной команды по сотрудничеству в области кодирования видео (JCT-VC) группы экспертов по кодированию видео (VCEG) ITU-T и группы экспертов по движущимся изображениям (MPEG) ISO/IEC. Последний рабочий проект (WD) HEVC описан в документе JCTVC-I1003, Bross et al., “High efficiency video coding (HEVC) text specification draft 9,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, ниже именуемый HEVC WD7, доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip.
[0040] Альтернативно, видеокодер 20 и видеодекодер 30 могут действовать согласно другим собственным или промышленным стандартам, например, стандарту ITU-T H.264, альтернативно именуемому MPEG 4, часть 10, усовершенствованного кодирования видео (AVC), или расширениям таких стандартов. Однако методы этого раскрытия не ограничиваются никаким конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0041] Хотя это не показано на фиг. 1, в некоторых аспектах, каждый из видеокодера 20 и видеодекодера 30 может быть объединен с аудиокодером и декодером и может включать в себя надлежащие блоки мультиплексирования/демультиплексирования, или другое оборудование и программное обеспечение, для обработки кодирования аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, блоки мультиплексирования/демультиплексирования могут отвечать протоколу мультиплексора ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).
[0042] Каждый из видеокодера 20 и видеодекодера 30 можно реализовать в виде одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или их комбинаций. Когда методы реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения на пригодном, некратковременном компьютерно-читаемом носителе и выполнять инструкции аппаратными средствами с использованием одного или более процессоров для осуществления методов этого раскрытия. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может входить в состав комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0043] Видеокодер 20 может реализовать любой или все из методов этого раскрытия для кодирования коэффициентов преобразования в процессе кодирования видео. Аналогично, видеодекодер 30 может реализовать любой или все из этих методов кодирования коэффициентов преобразования в процессе кодирования видео. Видеокодер, описанный в этом раскрытии, может означать видеокодер или видеодекодер. Аналогично, блок кодирования видео может означать видеокодер или видеодекодер. Аналогично, кодирование видео может означать кодирование видео или декодирование видео.
[0044] В одном примере раскрытия, видеокодер 20 может быть выполнен с возможностью кодирования флага карты значимости для каждого коэффициента преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух.
[0045] Аналогично, видеодекодер 30 может быть выполнен с возможностью декодирования флагов карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, декодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и декодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух.
[0046] В другом примере раскрытия, видеокодер 20 может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0047] Аналогично, видеодекодер 30 может быть выполнен с возможностью декодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, декодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и декодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0048] В другом примере раскрытия видеокодер 20 может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0049] Аналогично, видеодекодер 30 может быть выполнен с возможностью декодирования флагов карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, декодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и декодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0050] Устройства цифрового видео реализуют методы сжатия видео для более эффективного кодирования и декодирования цифровой видеоинформации. Сжатие видео может применять методы пространственного (внутрикадрового, интра-) предсказания и/или временного (межкадрового, интер-) предсказания для снижения или устранения избыточности, присущей видеопоследовательностям.
[0051] JCT-VC работает над развитием стандарта HEVC, например, описанного в рассмотренном выше HEVC WD7. Работы по стандартизации HEVC основаны на развитии модели видеокодировочного устройства, именуемой испытательной моделью HEVC (HM). HM предусматривает несколько дополнительных возможностей устройств кодирования видео относительно относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, в то время как H.264 обеспечивает девять режимов кодирования с интра-предсказанием, HM может обеспечивать целых тридцать три режима кодирования с интра-предсказанием. В следующем разделе будут более подробно рассмотрены некоторые аспекты HM.
[0052] Для кодирования видео согласно стандарту HEVC, в настоящее время находящемуся в разработке, кадр видео можно разбивать на единицы кодирования. Единица кодирования (CU), в общем случае, означает область изображения, которая служит основной единицей, к которой различные инструменты кодирования применяются для сжатия видео. CU обычно имеет компоненту яркости, обозначенную как Y, и две компоненты цветности, обозначенные как U и V. В зависимости от формата дискретизации видео, размер компонент U и V, в отношении количества выборок, может быть равен размеру компоненты Y или отличаться от него.
[0053] CU обычно является квадратной и может рассматриваться по аналогии с так называемым макроблоком, например, согласно другим стандартам кодирования видео, например ITU-T H.264. Кодирование согласно некоторым из предложенных в настоящее время аспектов развивающегося стандарта HEVC будет описано в этой заявке в целях иллюстрации. Однако методы, описанные в этом раскрытии, могут быть полезны для других процессов кодирования видео, например, заданных согласно H.264 или другому стандарту или собственным процессам кодирования видео.
[0054] Согласно HM, CU может включать в себя одну или более единиц предсказания (PU) и/или одну или более единиц преобразования (TU). Данные синтаксиса в битовом потоке могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей CU в отношении количества пикселей. В целом, CU служит цели, аналогичной цели макроблока H.264, за исключением того, что CU не имеет различия в размере. Таким образом, CU можно разбивать на под-CU. В целом, ссылки в этом раскрытии на CU могут означать наибольшую единицу кодирования изображения или под-CU LCU. LCU можно разбивать на под-CU, и каждую под-CU можно дополнительно разбивать на под-CU. Данные синтаксиса для битового потока могут задавать, сколько раз максимально можно разбивать LCU, то есть глубину CU. Соответственно, битовый поток также может задавать наименьшую единицу кодирования (SCU). Это раскрытие также использует термин “блок” или “участок” для обозначения любой из CU, PU или TU. В целом, “участок” может означать любой поднабор кадра видео.
[0055] LCU может быть связана со структурой данных квадродерева. В целом, структура данных квадродерева включает в себя по одному узлу на CU, где корневой узел соответствует LCU. Если CU разбивается на четыре под-CU, узел, соответствующая CU, включает в себя четыре краевых узла, каждый из которых соответствует одной из под-CU. Каждый узел структуры данных квадродерева может обеспечивать данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разбиения, указывающий, разбита ли CU, соответствующая узлу, на под-CU. Элементы синтаксиса для CU можно задавать рекурсивно, и могут зависеть от того, разбита ли CU на под-CU. Если CU не подлежит дальнейшему разбиению, она называется краевой CU. В этом раскрытии, 4 под-CU краевой CU также будут именоваться краевыми CU, несмотря на отсутствие явного разбиения исходной краевой CU. Например, если CU размером 16×16 не подлежит дальнейшему разбиению, четыре под-CU 8×8 также будут именоваться краевыми CU, хотя CU 16×16 никогда не разбивалась.
[0056] Краевая CU может включать в себя одну или более единиц предсказания (PU). В целом, PU представляет всю соответствующую CU или ее участок и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется в режиме интер-предсказания, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например, точность в четверть пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для краевой CU, задающей PU, также могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться в зависимости от того, является ли CU некодированной, кодированной в режиме интра-предсказания, или кодированной в режиме интер-предсказания. Для интра-кодирования, PU может обрабатываться как краевая единица преобразования, описанная ниже.
[0057] Перспективный стандарт HEVC допускает преобразования согласно единицам преобразования (TU), которые могут различаться для разных CU. Размеры TU обычно зависят от размера PU в данной CU, заданный для разбитой LCU, хотя это не всегда может быть. TU обычно имеют такой же размер, как PU или меньший. В некоторых примерах, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры квадродерева, известной как "остаточное квадродерево" (RQT). Краевые узлы RQT могут именоваться единицами преобразования (TU). Разностные значения пикселей, связанных с TU, можно преобразовывать для формирования коэффициентов преобразования, которые можно квантовать.
[0058] В целом, PU означает данные, связанные с процессом предсказания. Например, когда PU кодируется в режиме интра-предсказания, PU может включать в себя данные, описывающие режим интра-предсказания для PU. В порядке другого примера, когда PU кодируется в режиме интер-предсказания, PU может включать в себя данные, задающие вектор движения для PU.
[0059] В целом, TU используется для процессов преобразования и квантования. Данная CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). После предсказания, видеокодер 20 может вычислять остаточные значения из видеоблока, идентифицированного узлом кодирования в соответствии с PU. Затем узел кодирования обновляется для ссылки на остаточные значения, а не на исходный видеоблок. Остаточные значения содержат разностные значения пикселей, которые можно преобразовывать в коэффициенты преобразования, квантовать и сканировать с использованием преобразований и другой информации преобразования, указанной в TU, для формирования сериализованных коэффициентов преобразования для энтропийного кодирования. Узел кодирования может вновь обновляться для обращения к этим сериализованным коэффициентам преобразования. Это раскрытие обычно использует термин “видеоблок” для обозначения узла кодирования CU. В некоторых особых случаях, это раскрытие также может использовать термин “видеоблок” для обозначения блока дерева, т.е. LCU или CU, которая включает в себя узел кодирования и PU и TU.
[0060] Видеопоследовательность обычно включает в себя последовательность кадров видео или изображений. Группа изображений (GOP), в общем случае, содержит последовательность из одного или более видеоизображений. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одного или более изображений, или в другом месте, которые описывает несколько изображений, включенных в GOP. Каждый слайс изображения может включать в себя данные синтаксиса слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно работает на видеоблоках в отдельных слайсах видео для кодирования видеоданных. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки может иметь фиксированные или переменные размеры и могут отличаться размером согласно указанному стандарту кодирования.
[0061] Для кодирования блока (например, единицы предсказания видеоданных), сначала выводится предиктор для блока. Предиктор, также именуемый блоком предсказания, можно вывести посредством либо интра- (I) предсказания (т.е. пространственного предсказания), либо интер- (P или B) предсказания (т.е. временного предсказания). Следовательно, некоторые единицы предсказания можно интра-кодировать (I) с использованием пространственного предсказания в отношении опорных выборок в соседних опорных блоках в одном и том же кадре (или слайсе), и другие единицы предсказания можно однонаправленно интер-кодировать (P) или двунаправленно интер-кодировать (B) в отношении блоков опорных выборок в других ранее кодированных кадрах (или слайсах). В каждом случае, опорные выборки можно использовать для формирования блока предсказания для блока, подлежащего кодированию.
[0062] После идентификации блока предсказания, определяется разность между пикселями в исходном блоке видеоданных и пикселями в его блоке предсказания. Эта разность может именоваться остаточными данными предсказания, и указывать пиксельные разности между пиксельными значениями в блоке, подлежащем кодированию, и пиксельные значения в блоке предсказания, выбранном для представления кодированного блока. Для достижения лучшего сжатия, остаточные данные предсказания можно преобразовывать, например, с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лева (K-L), или другого преобразования для формирования коэффициентов преобразования.
[0063] Остаточные данные в блоке преобразования, например, TU, могут располагаться в двухмерной (2D) матрице разностных значений пикселей, находящихся в пространственной, пиксельной области. Преобразование преобразует остаточные пиксельные значения в двухмерную матрицу коэффициентов преобразования в преобразовательной области, например, частотной области.
[0064] Для дополнительного сжатия, коэффициенты преобразования можно квантовать до энтропийного кодирования. Затем энтропийный кодер применяет энтропийное кодирование, например, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разбиением интервала вероятности (PIPE), и т.п., к квантованным коэффициентам преобразования. В некоторых примерах, видеокодер 20 может использовать предварительно заданный порядок сканирования для сканирования квантованных коэффициентов преобразования для формирования сериализованного вектора, который можно энтропийно кодировать. В других примерах, видеокодер 20 может осуществлять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, видеокодер 20 может энтропийно кодировать одномерный вектор, видеокодер 20 также может энтропийно кодировать элементы синтаксиса, связанные с кодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.
[0065] Это раскрытие относится к энтропийным кодерам, осуществляющим контекстно-адаптивное двоичное арифметическое кодирование (CABAC), или к другим энтропийным кодерам, например, осуществляющим энтропийное кодирование с разбиением интервала вероятности (PIPE), или родственным кодерам. Арифметическое кодирование является разновидностью энтропийного кодирования, используемого во многих алгоритмах сжатия, которые имеют высокую эффективность кодирования благодаря своей способности отображать символы в кодовые слова нецелочисленной длины. Примером алгоритма арифметического кодирования является двоичное арифметическое кодирование на основе контекста (CABAC), используемое в H.264/AVC.
[0066] В целом, энтропийное кодирование символов данных с использованием CABAC предусматривает один или более следующих этапов, на которых:
(1) Бинаризация: Если символ, подлежащий кодированию, не выражен двоичным числом, он отображается в последовательность так называемых “бинов”. Каждый бин может иметь значение “0” или “1.”
(2) Назначение контекста: Каждый бин (в обычном режиме) назначается контексту. Контекстная модель определяет, как вычисляется контекст для данного бина на основании информации, доступной для бина, например, значений ранее кодированных символов или номера бина.
(3) Кодирование бинов: бины кодируются арифметическим кодером. Для кодирования бина, арифметический кодер требует в качестве входного сигнала вероятность значения бина, т.е. Вероятность того, что значение бина равно “0”, и вероятность того, что значение бина равно “1”. Вероятность (оценочная) каждого контекста представляется посредством целочисленного значения, именуемого “состоянием контекста”. Каждый контекст имеет состояние, и, таким образом, состояние (т.е. оценочная вероятность) одинаково для бинов, назначенных одному контексту, и различается между контекстами.
(4) Обновление состояния: Вероятность (состояние) для выбранного контекста обновляется на основании фактического кодированного значения бина (например, если значение бина было “1”, вероятность “1” возрастает).
[0067] Следует отметить, что энтропийное кодирование с разбиением интервала вероятности (PIPE) использует принципы, аналогичные принципам арифметического кодирования, и, таким образом также может использовать методы этого раскрытия.
[0068] CABAC в H.264/AVC и HEVC использует состояния, и каждое состояние неявно связано с вероятностью. Существуют разновидности CABAC, где вероятность символа (“0” или “1”) используется непосредственно, т.е. вероятность (или ее целочисленная версия) является состоянием. Например, такие разновидности CABAC описаны в “Description of video coding technology proposal by France Telecom, NTT, NTT DOCOMO, Panasonic and Technicolor,” JCTVC-A114, 1st JCT-VC Meeting, Dresden, DE, April 2010, далее именуемом “JCTVC-A114”, и A. Alshin and E. Alshina, “Multi-parameter probability update for CABAC,” JCTVC-F254, 6th JCT-VC Meeting, Torino, IT, July 2011, далее именуемом “JCTVC-F254”.
[0069] Для энтропийного кодирования блока квантованных коэффициентов преобразования, процесс сканирования обычно осуществляется таким образом, что двухмерная (2D) матрица квантованных коэффициентов преобразования в блоке реорганизуется, согласно конкретному порядку сканирования, в упорядоченную, одномерную (1D) матрицу, т.е. вектор, коэффициентов преобразования. Затем энтропийное кодирование применяется к вектору коэффициентов преобразования. Сканирование квантованных коэффициентов преобразования в единице преобразования сериализует 2D матрицу коэффициентов преобразования для энтропийного кодера. Карту значимости можно генерировать для указания позиций значимых (т.е. ненулевых) коэффициентов. Сканирование может применяться к уровням сканирования значимых (т.е. ненулевых) коэффициентов и/или для кодирования знаков значимых коэффициентов.
[0070] В перспективном стандарте HEVC, информация позиции значимого преобразования (например, карта значимости) сначала кодируется для TU для указания местоположения последнего ненулевого коэффициента в порядке сканирования. Карта значимости и информация уровня (абсолютные значения и знаки коэффициентов) кодируются для каждого коэффициента в обратном порядке сканирования.
[0071] В настоящее время существует 4 разные операции сканирования в HEVC: диагональное сканирование, горизонтальное сканирование, вертикальное сканирование и диагональное сканирование по подблокам. Фиг. 2 демонстрирует примеры обратных порядков сканирования для блока коэффициентов преобразования. Заметим, что каждый из обратного диагонального шаблона 35, обратного зигзагообразного шаблона 29, обратного вертикального шаблона 31 и обратного горизонтального шаблона 33 проходит от более высокочастотных коэффициентов в нижнем правом углу блока преобразования к более низкочастотным коэффициентам в верхнем левом углу блока преобразования.
[0072] Диагональное сканирование, горизонтальное сканирование и вертикальное сканирование применяются для TU 4×4 и 8×8. Диагональное сканирование по подблокам применяется в TU 16×16 и 32×32 в современной испытательной модели HEVC. В некоторых примерах, диагональное сканирование по подблокам также может применяться к TU 8×8. При сканировании по подблокам, один подблок 4×4 более крупной TU сканируется до перехода к другому подблоку 4×4 в большей TU. В других примерах, “подблок” может состоять из нескольких последовательно сканированных коэффициентов согласно используемому порядку сканирования. Например, “подблок” может состоять из 16 последовательно сканированных коэффициентов в диагональном порядке сканирования.
[0073] На фиг. 3 показан пример сканирования по подблокам на TU 8×8. TU 8×8 38 состоит из четырех подблоков 4×4 (36A, 36B, 36C, 36D). Как показано на фиг. 3, коэффициенты преобразования в подблоке 36A сканируются до сканирования коэффициентов преобразования в подблоке 36B. Затем сканирование переходит от подблока 36B к подблоку 36C и, наконец, к подблоку 36D. На Фиг. 3 показан прямой диагональный порядок сканирования в каждом подблоке; однако можно использовать любой порядок сканирования (например, горизонтальный, вертикальный, зигзагообразный и т.д.). В других примерах, обратные порядки сканирования, например, показанные на фиг. 2, используются в каждом подблоке.
[0074] В перспективном стандарте HEVC, коэффициенты могут группироваться в фрагмент. Карта значимости и информация уровня (абсолютное значение и знак) коэффициентов преобразования кодируются для каждого фрагмента. В одном примере, фрагмент состоит из 16 последовательных коэффициентов по порядку сканирования (например, прямому или обратному диагональному, горизонтальному или вертикальному порядку сканирования) для TU 4×4 и TU 8×8. Для TU 16×16 и 32×32, подблок 4×4 коэффициентов преобразования в большей TU обрабатывается как фрагмент. Следующие символы кодируются и сигнализируются для представления информации уровня коэффициентов во фрагменте. В одном примере, все символы кодируются в обратном порядке сканирования.
[0075] significant_coeff_flag (сокр. sigMapFlag): этот флаг указывает значимость каждого коэффициента во фрагменте. Коэффициент с абсолютным значением один или более считается значимым. В порядке одного примера, значение sigMapFlag 0 указывает, что коэффициент не является значимым, тогда как значение 1 указывает, что коэффициент является значимым. Этот флаг, в общем случае, может именоваться флагом значимости.
coeff_abs_level_greater1_flag (сокр. gr1Flag): этот флаг указывает, превышает ли абсолютное значение коэффициента число один для любых ненулевых коэффициентов (т.е. коэффициентов с sigMapFlag равным 1). В порядке одного примера, значение gr1Flag 0 указывает, что коэффициент не имеет абсолютного значения, большего единицы, тогда как значение 1 для gr1Flag указывает, что коэффициент имеет абсолютное значение, большее единицы. Этот флаг, в общем случае, может именоваться флагом превышения единицы.
coeff_abs_level_greater2_flag (сокр. gr2Flag): этот флаг указывает, превышает ли абсолютное значение коэффициента число два для любых коэффициентов с абсолютным значением, большим единицы (т.е. коэффициентов с gr1Flag равным 1). В порядке одного примера, значение gr2Flag 0 указывает, что коэффициент не имеет абсолютного значения, большего двух, тогда как значение 1 для gr2Flag указывает, что коэффициент имеет абсолютное значение, большее двух. Этот флаг, в общем случае, может именоваться флагом превышения двойки.
coeff_sign_flag (сокр. signFlag): этот флаг указывает информацию знака для любых ненулевых коэффициентов (т.е. коэффициентов с sigMapFlag равным 1). Например, нуль для этого флага указывает положительный знак, а 1 указывает отрицательный знак.
coeff_abs_level_remaining (сокр. levelRem): Этот элемент синтаксиса указывает абсолютные значения уровня оставшихся коэффициентов. Для этого флага, абсолютное значение коэффициента минус три кодируется (abs(level)-3) для каждого коэффициента с абсолютным значением, большим двух (т.е. коэффициентов с gr2Flag равным 1).
[0076] Фиг. 4 демонстрирует пример квантованных коэффициентов в блоке 4×4 100. Блок 100 может быть TU 4×4 или подблоком 4×4 (фрагментом) в TU 8×8, 16×16 или 32×32. Кодированные символы для коэффициентов, показанных на фиг. 4, сканированные в обратном порядке сканирования, приведены в таблице 1. В таблице 1, scan_pos означает позицию коэффициента в порядке обратного диагонального сканирования, показанном на фиг. 4. Scan_pos 15 это первый сканированный коэффициент, который располагается в нижнем левом углу блока 100. Квантованный коэффициент в scan_pos 15 имеет абсолютное значение 0. Scan_pos 0 это последний сканированный коэффициент, который располагается в верхнем правом углу блока 100. Квантованный коэффициент в scan_pos 0 имеет абсолютное значение 10. В случае TU 4×4 или последнего подблока 4×4 в более крупной TU, первые четыре флага sigMapFlag не подлежат кодированию, поскольку позиция последнего ненулевого коэффициента известна. Таким образом, кодирование sigMapFlag может начинаться с последнего ненулевого коэффициента (в этом примере, коэффициента в scan_pos 11).
Кодированные символы для коэффициентов TU 4×4 или фрагмента 4×4
[0077] Среди этих символов, бины sigMapFlag, gr1Flag и gr2Flag кодируются с адаптивными контекстными моделями. signFlag и бинаризованные бины levelRem кодируются в режиме обхода с фиксированными моделями равной вероятности (например, экспоненциальным кодом Голомба). В современной конструкции HEVC, три бина флага кодируются с адаптивными контекстными моделями для коэффициента с амплитудой, большей нуля. Было установлено, что кодирование бинов на основе контекста является одним из главных узких мест энтропийного кодирования.
[0078] Ввиду этого недостатка, это раскрытие представляет методы повышения пропускной способности CABAC. В частности, в этом раскрытии предлагается методы повышения пропускной способности CABAC путем снижения количества контекстно-кодированных бинов, и увеличения количества бинов, кодированных в режиме обхода.
[0079] В перспективном стандарте HEVC, коэффициент информация уровня кодируется в обратном порядке сканирования. Это обычно означает, что более высокочастотные коэффициенты преобразования (коэффициенты вблизи нижнего правого угла блока) сканируются в первую очередь. В такой конструкции, для начальных коэффициентов в обратном порядке сканирования характерны малые абсолютные значения. Если такие коэффициенты являются значимыми, для них характерна более высокая вероятность иметь абсолютное значение 1 или 2. Для этих коэффициентов, использование явных символов gr1Flag и gr2Flag может уменьшать длину бинаризованных бинов для представления уровня коэффициентов, и gr1Flag и gr2Flag можно эффективно кодировать с помощью механизма арифметического кодирования с назначенным контекстом согласно ранее кодированному содержанию.
[0080] Однако в случае оставшихся коэффициентов в обратном порядке сканирования, использование символов gr1Flag и gr2Flag может не повышать производительность сжатия, поскольку для коэффициентов характерны увеличенные абсолютные значения уровня. Использованием gr1Flag и gr2Flag может даже приводить к снижению эффективности кодирования.
[0081] Одна цель этого раскрытия состоит в уменьшении количества контекстно-кодированных бинов путем адаптивного переключения явных gr1Flag и gr2Flag в синтаксис levelRem, который кодируется с использованием режим обхода с моделью фиксированной вероятности. Режим обхода осуществляется с помощью механизма обходного кодирования, который действует иначе, чем механизм CABAC. Механизм обходного кодирования может использовать, например, код Голомба или экспоненциальный код Голомба. Синтаксис levelRem обычно кодируется путем бинаризации значения levelRem (например, оставшегося уровня выше 2) с кодом Голомба и кодирования бинаризованного значения в режиме обхода с моделью равной вероятности. В итоге, в этом раскрытии предлагается различные пример методов кодирования явных sigMapFlag, gr1Flag и/или gr2Flag только для поднабора коэффициентов фрагмента или TU.
[0082] В одном примере, в этом раскрытии предлагается ограничивать количество коэффициентов во фрагменте, которые явно кодируются с gr2Flag. В некоторых предложениях для HEVC, количество коэффициентов, явно кодированных с gr2Flag во фрагменте, может составлять до 16 коэффициенты (например, все коэффициенты фрагмента в случае, когда абсолютные значения всех коэффициентов больше единицы). В этом раскрытии предлагается кодировать явный gr2Flag только для первых N коэффициентов во фрагменте в порядке сканирования, имеющих абсолютное значение, большее единицы (т.е. коэффициентов с gr1Flag равным 1). Значение N может выбираться видеокодером и может задваться равным любому значению от 0 до 16. В другом примере, N выбирается равным любому значению, меньшему 16, например, из-за чего, не все коэффициенты в наборе из 16 коэффициентов кодируются с gr2Flag элемент синтаксиса. N равный нулю, означает, что символ gr2Flag вовсе не кодируется.
[0083] В порядке одного примера, раскрытие предлагает применять фиксированное значение N для всех фрагментов. В одном конкретном примере, N задано равным 1. Таким образом, gr2Flag кодируется только для первого коэффициента, где осуществляется кодирование gr2Flag (т.е. для первого коэффициента, имеющего абсолютное значение большее 1 (gr1Flag равен 1)). gr2Flag не требуется кодировать, если gr1Flag уже закодирован для указания того, что коэффициент преобразования не превышает 1. В этом случае, известно, что коэффициент преобразования не должен быть больше 2, поэтому кодировать gr2Flag не требуется. Использование 1 в качестве значения N обеспечивает компромисс между эффективностью кодирования и количеством бинов на основе контекста. Значения 2 или 4 также могут быть пригодны для N, хотя можно выбирать любое значение N.
[0084] В таблице 2 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда N равно 1. По сравнению с кодированными символами в таблице 1, пять флагов gr2Flag в позициях, помеченных "X", пропущено (scan_pos 6, 5, 2, 1 0). Соответственно, levelRem коэффициентов в позициях сканирования 6, 5, 2, 1 и 0 изменяются по сравнению с показанными в таблице 1. Для этих позиций, значение бина levelRem вычисляется с (abs(level)-2) вместо (abs(level)-3).
[0085] При ограничении количества явных gr2Flag числом N, как описано выше, кодированные символы для уровней коэффициента во фрагменте можно подытожить следующим образом:
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для коэффициентов с sigMapFlag, имеющим значение 1.
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для первых N коэффициентов со значением gr1Flag равным 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) используется для коэффициентов с gr2Flag, имеющим значение 1; значение (abs(level)-2) сигнализируется для коэффициентов, где явный gr2Flag не кодируется (указано как X в таблице 2), и gr1Flag имеет значение 1.
[0086] В соответствии с вышеописанными методами, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодирования флагов карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, и кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте. Значение оставшихся коэффициентов представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и значение оставшихся коэффициентов представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
[0087] В другом примере, в этом раскрытии предлагается ограничивать количество коэффициентов во фрагменте, которые явно кодируются с gr1Flag. В некоторых предложениях для HEVC, количество кодированных элементов синтаксиса gr1Flag во фрагменте может достигать 16 в случаях, когда все коэффициенты являются значимыми. В порядке одного примера, в этом раскрытии предлагается кодировать явный gr1Flag только для первых M1 ненулевых коэффициентов в обратном порядке сканирования во фрагменте. M1 можно выбирать равным любому значению от 0 до 16. В другом примере, M1 выбирается равным любому значению, меньшему 16, например, из-за чего, не все коэффициенты в наборе из 16 коэффициентов кодируются с элементом синтаксиса gr1Flag. M1 равный нулю означает, что символ gr1Flag вовсе не кодируется.
[0088] В одном примере, в этом раскрытии предлагается применять фиксированное значение M1 для всех фрагментов. В одном конкретном примере M1 задано равным 8. Таким образом, gr1Flag кодируется только для первых восьми коэффициентов, где осуществляется кодирование gr1Flag (т.е. для первых восьми коэффициентов, имеющих абсолютное значение большее 0 (sigMapFlag равен 1)). Использование 8 в качестве значения M1 обеспечивает компромисс между эффективностью кодирования и количеством бинов на основе контекста. 2 или 4 также могут быть надлежащими значениями M1 для коэффициентов во фрагменте. В таблице 3 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда M1 равно 4. В таблице 4 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда M1 равно 8. По сравнению с символами в таблице 1, пять gr1Flag и четыре gr2Flag в позициях, помеченных X, пропущены, когда M1 равно 4. По сравнению с символами в таблице 1, один gr1Flag и один gr2Flag в позициях, помеченных X пропущены, когда M1 равно 8. Для позиций, помеченных как X в таблицах 3 и 4, значение бина levelRem вычисляется с (abs(level)-1) вместо (abs(level)-3).
Кодированные символы для фрагмента, когда M1 равно 4
Кодированные символы для фрагмента, когда M1 равно 8
[0089] При ограничении максимального количества флагов gr1Flag числом M1, кодированные символы уровней коэффициента во фрагменте можно подытожить следующим образом:
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для первых M1 ненулевых коэффициентов (sigMapFlag имеет значение 1).
gr2Flag указывает, превышает ли абсолютное значение коэффициента число два для коэффициентов со значением gr1Flag равным 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) используется для коэффициентов, где gr2Flag имеет значение 1; значение (abs(level)-1) используется для ненулевых коэффициентов, где явный gr1Flag не кодируется.
[0090] В соответствии с вышеописанными методами, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух. Видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте. Значение оставшихся коэффициентов представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и значение оставшихся коэффициентов представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, имеющем кодированный флаг карты значимости, но флаг превышения единицы не кодируется.
[0091] Вышеописанные способы ограничения количества явно кодированных флагов gr1Flag и флагов g2Flag можно комбинировать. В этом примере, кодированные символы для уровней коэффициента во фрагменте можно подытожить следующим образом (в принципе, N должно быть меньше или равно M1):
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для первых M1 ненулевых коэффициентов (sigMapFlag имеет значение 1).
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для первых N коэффициентов со значением gr1Flag равным 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) используется для коэффициентов, где gr2Flag имеет значение 1; значение (abs(level)-2) используется для коэффициентов, где явный gr2Flag не кодируется, и gr1Flag имеет значение 1; значение (abs(level)-1) используется для ненулевых коэффициентов, где явный gr1Flag не кодируется.
[0092] В нижеприведенной таблице 5 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда явный gr2Flag (N равно 1) и явные флаги gr1Flag (M1 равно 8) ограничены. По сравнению с символами в таблице 1, один gr1Flag и пять флагов gr2Flag в позициях, помеченных X, пропущены, когда M1 равно 8, и N равно 1.
Кодированные символы для фрагмента,
когда M1 равно 8 и N равно 1
[0093] В соответствии с вышеописанными методами, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух. В этом примере, видеокодер 20 и/или видеодекодер 30 выполнен с возможностью кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, которые не равны нулю.
[0094] Видеокодер 20 и/или видеодекодер 30 может быть дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте. Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется, и оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
[0095] В порядке другого примера, в этом раскрытии предлагается отключать кодирование явного gr1Flag для оставшихся коэффициентов во фрагменте, когда некоторое количество предыдущих коэффициентов во фрагменте с абсолютным значением, большим единицы (например, gr1Flag, кодированный значением 1) накапливается до определенной величины M2. M2 можно задать равным любому значению от 0 до 16.
[0096] В одном примере, в этом раскрытии предлагается применять фиксированное значение M2 для всех фрагментов. Значение M2, равное 1, показано для обеспечения хорошего компромисса между эффективностью кодирования и количеством бинов на основе контекста. 2 или 4 также являются примерами значений M2 для коэффициентов во фрагменте. В Таблице 6 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда M2 равно 1. По сравнению с кодированными символами в таблице 1, шесть gr1Flag в позициях, помеченных как X, не кодируются. Для этих позиций используется кодирование levelRem. LevelRem вычисляется с (abs(level)-1) вместо (abs(level)-3), как в таблице 1.
Кодированные символы для фрагмента, когда M2 равно 1
[0097] При использовании способа отключения кодирования явного gr1Flag для оставшихся коэффициентов, когда количество ранее кодированных флагов gr1Flag со значением 1 в обратном порядке сканирования накапливается до M2, кодированные символы для уровней коэффициента во фрагменте можно подытожить следующим образом:
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для ненулевых коэффициентов, когда накопленная величина ранее кодированных флагов gr1Flag со значением, равным 1 меньше M2.
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для коэффициентов с gr1Flag, кодированным значением 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) кодируется для коэффициентов, где gr2flag кодируется значением 1; значение (abs(level)-1) кодируется для ненулевых коэффициентов, где явный gr1Flag не кодируется.
[0098] Как описано выше, количество кодированных бинов, кодированных для gr1Flag, зависит от значения ранее кодированных флагов gr1Flag во фрагменте. Это может приводить к снижению пропускной способности кодирования бинов, поскольку видеокодер должен отслеживать ранее кодированные флаги gr1Flag во фрагменте. Для ослабления влияния этой зависимости, видеокодер может быть выполнен с возможностью совместного кодирования группы флагов gr1Flag с последующим определением, отключать ли кодирование явного gr1Flag для оставшихся коэффициентов после кодирования всех gr1Flag в одной группе. Группа флагов gr1Flag может состоять из фиксированного количества флагов gr1Flag. Размер группы может, например, составлять 2, 3 или 4 флагов gr1Flag.
[0099] Другой пример, который может ослаблять влияние этой зависимости, предусматривает кодирование дополнительной группы флагов gr1Flag, когда количество ранее кодированных коэффициентов с амплитудой, большей единицы (т.е. gr1Flag, кодированный значением 1) накапливается до определенной величины M2. После кодирования этой дополнительной группы, кодирование явных флагов gr1Flag отключается (т.е. gr1Flag не кодируется, но вместо этого значение levelRem кодируется в режиме обхода). Примеры размеров дополнительной группы могут составлять 1, 2 или 3 коэффициентов.
[0100] Этот предложенный способ ограничения количества явно кодированных флагов gr1Flag, когда количество ранее кодированных флагов gr1Flag во фрагменте накапливается до значения M2, можно также объединять со способом ограничения максимального количества флагов gr2Flag до N. Кодированные символы для уровней коэффициента во фрагменте можно подытожить следующим образом (в принципе, N должно быть меньше M2):
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для коэффициентов, когда накопленное количество ранее кодированных флагов gr1Flag со значением 1 меньше M2.
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для первых N коэффициентов с gr1Flag, кодированным значением 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) кодируется для коэффициентов, где gr2flag кодируется значением 1; значение (abs(level)-2) кодируется для коэффициентов, где явный gr2Flag не кодируется, и gr1Flag кодируется значением 1; и значение (abs(level)-1) кодируется для ненулевых коэффициентов, где явный gr1Flag не кодируется.
[0101] В другом примере этого раскрытия, все вышеописанные методы можно комбинировать для уменьшения количества явно кодированных флагов gr1Flag и флагов gr2Flag. Кодированные символы для уровней коэффициента во фрагменте в комбинированном способе можно подытожить следующим образом (в принципе, M1 должно быть больше M2):
sigMapFlag: указывает, превышает ли абсолютное значение коэффициента число нуль.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для первых M1 ненулевых коэффициентов (sigMapFlag имеет значение 1), и когда накопленное количество ранее кодированных флагов gr1Flag со значением 1 меньше M2. Если какое-либо из этих условий не выполняется, gr1Flag не кодируется.
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для первых N коэффициентов с gr1Flag, кодированным значением 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение оставшихся коэффициентов; значение (abs(level)-3) кодируется для коэффициентов, где gr2flag кодируется значением 1; значение (abs(level)-2) кодируется для коэффициентов, где явный gr2flag не кодируется, и gr1flag кодируется значением 1; и значение (abs(level)-1) кодируется для ненулевых коэффициентов, где явный gr1flag не кодируется.
[0102] В этом раскрытии также предлагается ограничивать количество явно кодированных флагов sigMapFlag для коэффициентов во фрагменте. В более ранних предложениях для HEVC, количество кодированных флагов sigMapFlag во фрагменте может составлять 16 флаги sigMapFlag в случае непоследнего фрагмента в большой TU.
[0103] В другом примере, в этом раскрытии предлагается кодировать явный sigMapFlag для первых K1 коэффициентов в обратном порядке сканирования во фрагменте. K1 может по выбору видеокодера задаваться равным любому значению от 0 до 16. В другом примере, K1 задано равным любому значению, меньшему 16. K1 равный нулю означает, что символ gr1Flag вовсе явно не кодируется.
[0104] В этом раскрытии предлагается применять фиксированное значение K1 для всех фрагментов. Показано, что значение 8 для K1 обеспечивает приемлемый компромисс между эффективностью кодирования и количеством бинов на основе контекста. 12 также является надлежащим значением K1. В таблице 7 показаны символы, подлежащие кодированию, для примера фрагмента на фиг. 4, когда K1 равно 8. По сравнению с символами в таблице 1, восемь флагов sigMapFlag, шесть флагов gr1Flag, и пять флагов gr2Flag в позициях, помеченных "X", пропущено. Вместо этого, символ levelRem кодируется для этих позиций. В этом случае, кодирование levelRem использует непосредственное значение амплитуды (абсолютное значение) вместо (abs(level)-3), как в таблице 1.
Кодированные символы для фрагмента, когда K1 равно 8
[0105] При ограничении максимального количества sigMapFlag некоторым количеством K1, кодированные символы уровней коэффициента во фрагменте можно подытожить следующим образом:
sigMapFlag: указывает значимость каждого коэффициента для первых K1 коэффициентов во фрагменте.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для коэффициентов с sigMapFlag со значением 1.
gr2Flag: указывает, превышает ли абсолютное значение коэффициента число два для коэффициентов с gr1Flag, кодированным значением 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютные значения уровня оставшихся коэффициентов; значение (abs(level)-3) кодируется для коэффициентов, где gr2flag кодируется значением 1; значение (abs(level)) кодируется для коэффициентов, где явный sigMapFlag не кодируется.
[0106] Метод ограничения количества явно кодированных флагов sigMapFlag также можно объединять с вышеописанными предложенными способами для уменьшения количества явно кодированных флагов gr1Flag и флагов gr2Flag. В этом примере, порядок кодирования levelRem и signFlag можно обращать. Таким образом, кодирование levelRem может осуществляться до кодирования signFlag.
[0107] В порядке другого примера, в этом раскрытии предлагается отключать кодирование (т.е. не кодировать) явные флаги sigMapFlag для оставшихся коэффициентов, когда количество ранее кодированных ненулевых коэффициентов (т.е. sigMapFlag, кодированный значением 1) накапливается до определенной величины K2. K2 может по выбору видеокодера задаваться равным любому значению от 0 до 16. В другом примере, K2 можно задать равным любому значению, меньшему 16. В одном примере, в этом раскрытии предлагается применять фиксированное значение K2 для всех фрагментов. Показано, что значение K2, равное 8, обеспечивает приемлемый компромисс между эффективностью кодирования и количеством бинов на основе контекста. 4 или 12 также надлежащими значениями K2 для коэффициентов во фрагменте.
[0108] Кодированные символы для уровней коэффициента во фрагменте, где явное кодирование sigMapFlag отключено (т.е. он не кодируется), когда количество ранее кодированных ненулевых коэффициентов накапливается до определенной величины K2, можно подытожить следующим образом:
sigMapFlag: указывает значимость каждого коэффициента, когда накопленная величина ранее кодированных флагов sigMapFlag со значением, равным 1 меньше K2.
gr1Flag: указывает, превышает ли абсолютное значение коэффициента число один для коэффициентов, где sigMapFlag кодируется значением 1.
gr2Flag: указывает, превышает ли абсолютное значение амплитуды коэффициента число два для коэффициентов с gr1Flag, кодированным значением 1.
signFlag: указывает знак коэффициентов с sigMapFlag равным 1.
levelRem: указывает абсолютное значение уровня для оставшихся коэффициентов; значение (abs(level)-3) кодируется для коэффициентов, где gr2flag кодируется значением 1; значение (abs(level)) кодируется для коэффициентов, где явный sigMapFlag не кодируется.
[0109] Этот предложенный метод можно комбинировать с другими вышеописанными методами уменьшения количества явно кодированных флагов gr1Flag и флагов gr2Flag. В одном примере, порядок кодирования levelRem и signFlag можно обращать. Таким образом, кодирование levelRem может осуществляться до кодирования signFlag.
[0110] Предложенные вышеописанные методы применяют фиксированные пороги (N, M1, M2, K1 и K2) для ограничения количества явно кодированных флагов sigMapFlag, флагов gr1Flag и флагов gr2Flag. В порядке другого примера, в этом раскрытии также предлагается сигнализировать пороги K1, K2, N, M1 и M2 в синтаксисе высокого уровня в битовом потоке кодированного видео, например, в синтаксисе набора параметров последовательности (SPS), набора параметров изображения (PPS), набора параметров адаптации (APS) или заголовка слайса (SliceHeader). Кодер может выбирать наилучшее значение этих порогов согласно статистике коэффициентов содержания кодированного видео. Затем декодер может применять порог в процессе энтропийного декодирования.
[0111] Профили и уровни указывают ограничения на битовые потоки и, следовательно, пределы возможностей, необходимых для декодирования битовых потоков. Профили и уровни также можно использовать для указания точек возможности взаимодействия между отдельными реализациями декодера. Каждый профиль указывает поднабор алгоритмических признаков и пределов, которые должны поддерживаться всеми декодерами, отвечающими этому профилю. Каждый уровень указывает набор пределов значений, которые могут принимать элементы синтаксиса стандарта сжатия видео. Один и тот же набор определений уровня используется со всеми профилями, но разные реализации могут поддерживать разные уровни для каждого поддерживаемого профиля. Для любого данного профиля, уровни, в общем случае, соответствуют обработочной нагрузке декодера и емкости памяти. В порядке другого примера, разные пороги N, M1, M2, K1 и K2, описанные выше в синтаксисе высокого уровня, можно применять для разных уровней и профилей. Например, базовый профиль может использовать более низкое пороговое значение, тогда как главный профиль может использовать более высокое пороговое значение.
[0112] В порядке другого примера, пороги K1, K2, N, M1 и M2 могут адаптивно изменяться согласно соответствующим характеристикам кодирования видео кодируемого видеоблока. Такие характеристики могут включать в себя параметр квантования, размер TU, глубину TU, режим предсказания, тип цветового компонента, статистику коэффициентов соседних фрагментов или блоков, и т.д.
[0113] Например, пороги N, M1, M2, K1 и K2 можно определять согласно статистике коэффициентов в ранее закодированных фрагментах. В случае подблока 4×4 в большой TU, пороги N, M1, M2, K1 и K2 можно определять согласно статистике коэффициентов окружающих подблоков, которые ранее были закодированы (например, правого и нижнего подблока относительно кодируемого в данный момент подблока). Можно применять следующие иллюстративные методы.
Меньшее значение (даже нуль) применяется для N, M1, M2, K1 и K2, если коэффициенты в ранее кодированных (или окружающих) фрагментах имеют среднее абсолютное значение, превышающее некоторый порог. Напротив, более высокое значение для N, M1, M2, K1 и K2 можно использовать, когда коэффициенты в ранее закодированных фрагментах имеют среднее абсолютное значение, меньшее некоторого порога.
Меньшее значение (даже нуль) применяется для N, M1, M2, K1 и K2, если коэффициенты в ранее кодированных (или окружающих) фрагментах имеют максимальное абсолютное значение, превышающее некоторый порог. Напротив, более высокое значение для N, M1, M2, K1 и K2 можно использовать, когда коэффициенты в ранее закодированных фрагментах имеют максимальное абсолютное значение, меньшее некоторого порога.
Меньшее значение (даже нуль) применяется для N, M1, M2, K1 и K2, если количество коэффициентов с абсолютным значением, превышающим определенное значение в ранее кодированных (или окружающих) фрагментах выше некоторого порога. Напротив, более высокое значение для N, M1, M2, K1 и K2 можно использовать, когда количество коэффициентов с абсолютным значением, превышающим определенное значение в ранее закодированных фрагментах ниже некоторого порога.
[0114] В порядке одного примера, если величина коэффициентов с абсолютным значением, большим единицы коэффициенты выше некоторого порога X, явное кодирование флагов gr1Flag и флагов gr2Flag кодирование может быть отключено (т.е. N, M1 и M2 задаются равными нулю). Значения порога X, например, равны 0, 1 или 2.
[0115] В порядке другого примера, пороги N, M1, M2, K1 и K2 могут адаптивно изменяться согласно статистике ранее кодированных элементов синтаксиса в текущем фрагменте или блоке. Например, пороги N, M1 и M2 могут зависеть от статистики кодирования sigMapFlag в текущем фрагменте или блоке. В частности, если количество флагов sigMapFlag со значением 1 больше определенного порога Y, то явное кодирование флагов gr1Flag и флагов gr2Flag отключается (т.е. N, M1 и M2 задаются равными нулю). Порог Y может иметь разные значения в разных профилях и уровнях.
[0116] В порядке другого примера, пороги N, M1, M2, K1 и K2 можно определять согласно статистике коэффициентов в ранее закодированных фрагментах. В случае подблока 4Ч4 в большой TU, пороги N, M1, M2, K1 и K2 можно определять согласно статистике коэффициентов с моделью затухания ранее кодированных подблоков.
[0117] В порядке другого примера, значение порогов N, M1, M2, K1 и K2 может зависеть от значения параметра квантования (QP), используемого для кодирования текущего блока. В порядке одного примера, для наилучшего компромисса между производительностью сжатия и пропускной способностью кодирования, более высокие пороги N, M1, M2, K1 и K2 можно применять к коэффициентам, которые квантуются с высоким QP, например, QP, превышающим порог, и более низкие пороги N, M1, M2, K1 и K2 можно применять к коэффициентам, которые квантуются с низким QP, например, QP, меньшим или равным порогу.
[0118] В порядке другого примера, значение порогов N, M1, M2, K1 и K2 может зависеть от размера TU. Увеличенные пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам TU большого размера, и меньшие пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам TU малого размера.
[0119] В порядке другого примера, значение порогов N, M1, M2, K1 и K2 может зависеть от режима предсказания. Например, увеличенные пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам блока, который предсказывается в режиме интра-предсказания, и меньшие пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам блока, который предсказывается в режиме интер-предсказания. В качестве типичного примера, M2 задается равным 1, и N задается равным 1, когда режим предсказания является режимом интра-предсказания, и M2 задается равным 4 и N задается равным 1, когда режим предсказания является режимом интер-предсказания.
[0120] В порядке другого примера, значение порогов N, M1, M2, K1 и K2 может зависеть от типа цветового компонента. Например, увеличенные пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам яркостной компоненты, и меньшие пороговые значения для N, M1, M2, K1 и K2 можно применять к коэффициентам цветностной компоненты, или наоборот.
[0121] В порядке другого примера, значение порогов N, M1, M2, K1 и K2 может зависеть от позиции подблока в TU. Например, пусть X и Y обозначают горизонтальную и вертикальную позиции подблока в TU, соответственно. Для примера TU 16×16, порог, равный 7, можно использовать для всех подблоков при X+Y равном 6, порог, равный 6, можно использовать для всех подблоков при X+Y равном 5, и т.д. Короче говоря, порог равен X+Y+1, в этом примере. Пример порогов на основе позиции для подблоков 4×4 в TU 16×16 показан на фиг. 5. Позиции X, Y каждого подблока показаны на дне подблока, тогда как используемый порог показан в центре подблока.
[0122] В порядке другого примера, пороговые значения N, M1, M2, K1 и K2 могут зависеть только от позиции подблока, но не от размера TU. Например, порог может быть min(TH_max, TH_min+X+Y). TH_max и TH_min являются двумя константами, которые указывают максимальный и минимальный допустимые пороги, в этом примере.
[0123] В порядке другого примера, значение порогов N, M1 и M2, K1 и K2 может зависеть от позиции последнего значимого коэффициента. Например, для обратного порядка сканирования, например, показанного на фиг. 4, начиная с фиксированных порогов для подблока последнего значимого коэффициента, видеокодер может постепенно снижать порог подблок за подблоком. Например, пороги могут снижаться на размер шага для каждого последующего подблока. В порядке другого примера, порог может постепенно снижаться, когда подблоки находятся на разных диагональных линиях подблоков. Например, пусть X и Y обозначают горизонтальную и вертикальную позиция подблоков. Видеокодер может использовать порог 8 для всех подблоков при X+Y равном Z, использовать порог 7 для всех подблоков при X+Y равном Z-Δ, использовать порог 6 для всех подблоков при X+Y равном Z-2Δ, и т.д.
[0124] Фиг. 6 и фиг. 7 иллюстрируют метод назначения порогов на диагональной линии, начинающейся в позиции подблока с последним значимым коэффициентом. Подблок с последним значимым коэффициентом указан диагональной штриховкой. Порог для поднабора, имеющего последний значимый коэффициент, также может изменяться в зависимости от позиции последнего значимого коэффициента в TU или в подблоке.
[0125] Как рассмотрено выше, предложенные методы этого раскрытия ограничивают количество бинов на основе контекста, которые применяются к кодированию уровня коэффициентов в каждом фрагменте (или подблоке). В этом раскрытии также предлагается вводить взаимозависимость соседних фрагментов в TU целиком (например, TU, большей чем 4×4).
[0126] Например, если явно кодированный gr2Flag отключен для, по меньшей мере, одного коэффициента в текущем фрагменте (или подблоке), явно кодированные флаги gr2Flag автоматически отключаются для следующих фрагментов, которые сканируются позже в порядке сканирования. Аналогично, если явно кодированный gr1Flag отключен для, по меньшей мере, одного коэффициента в текущем фрагменте (или подблоке), явно кодированные флаги gr1Flag автоматически отключаются для всех следующих фрагментов, которые сканируются позже в порядке сканирования.
[0127] В порядке другого примера, накопленная величина превышающих единицу коэффициентов (т.е. коэффициентов, которые больше единицы) и ненулевых коэффициентов текущего фрагмента распространяется на следующий фрагмент с моделью затухания. Например, начальное количество накопленных “gr1Flag ==1” и количество кодированных флагов gr2Flag текущего фрагмента можно вычислить на основании величины “превышающих единицу” коэффициентов в ранее закодированных фрагментах. Также, начальное количество накопленных кодированных флагов gr1Flag текущего фрагмента можно вычислить на основании величины ненулевых коэффициентов в ранее закодированных фрагментах.
[0128] В порядке другого примера, в случае, когда фрагмент представляет собой подблок 4×4 в большой TU, можно использовать информацию, касающуюся кодирования уровня подблоков вправо и вниз от кодируемого в данный момент подблока. Например, явно кодированный gr2Flag может автоматически отключаться для подблока, если явно кодированный gr2Flag когда-либо был отключен в подблоке вправо и/или вниз от кодируемого в данный момент подблока. Аналогично, явно кодированный gr1Flag может автоматически отключаться для подблока, если явно кодированный gr1Flag когда-либо был отключен в подблоке вправо и/или вниз от кодируемого в данный момент подблока.
[0129] Предложенные вышеописанные методы также можно применять к кодированию уровня коэффициентов всей TU, а не только к фрагментам 4x4. Например, в этом раскрытии также предлагается кодировать явный gr2Flag для первых NTU коэффициентов значением, большим единицы (т.е. gr1Flag кодируется значением 1) всей TU в обратном порядке сканирования. NTU можно выбирать равным любому значению от 0 до MaxCoeffNum (т.е. максимального количества коэффициентов в TU; 16 в TU 4×4, 64 в TU 8×8, 256 в 16×16 TU, 1024 в 32×32 TU). В другом примере, NTU задается равным любому значению, меньшему MaxCoeffNum. В одном примере, фиксированное значение NTU можно применять для кодирования уровня коэффициентов для всех размеров TU. В качестве компромисса между эффективностью кодирования и количеством бинов на основе контекста, NTU можно присвоить значение 4. В порядке другого примера, разные значения NTU можно применять к переменным размерам TU, поскольку они демонстрируют разную статистику. Меньшие значения NTU можно использовать в случае TU меньших размеров, и большее значения NTU можно использовать в случае TU увеличенных размеров. В качестве типичного примера, NTU можно задать равным 1 для TU 4×4, 2 для TU 8×8, 4 для TU 16×16 и 8 для TU 32×32.
[0130] В этом раскрытии также предлагается кодировать явный gr1Flag для первых M1TU ненулевых коэффициентов в обратном порядке сканирования всей TU. M1TU можно задавать равным любому значению от 0 до MaxCoeffNum TU. Разные значения M1TU можно задавать для переменных размеров TU, поскольку они демонстрируют разную статистику. Меньшие значения M1TU аналогично используются в случае TU меньших размеров, и большее значения M1TU аналогично используются в случае TU увеличенных размеров. В качестве типичного примера, M1TU можно задать равным 4 для TU 4×4, 8 для TU 8×8, 16 для TU 16×16 и 32 для TU 32×32.
[0131] В этом раскрытии также предлагается отключать кодирование явного gr1Flag для оставшихся коэффициентов, когда количество ранее кодированных коэффициентов с абсолютным значением, большим единицы (т.е. gr1Flag, кодированного значением 1) в обратном порядке сканирования всей TU накапливается до определенной величины M2TU. M2TU можно задавать равным любому значению от 0 до MaxCoeffNum. В порядке одного примера, фиксированное M2TU может применяться к кодированию уровня коэффициентов для всех размеров TU. В порядке другого примера, разные значения M2TU можно задавать для переменных размеров TU. Меньшие значения M2TU можно использовать в случае TU меньших размеров, и большее значения M2TU можно использовать в случае TU увеличенного размера. В качестве типичного примера, M2TU можно задать равным 1 для TU 4×4, 2 для TU 8×8, 4 для TU 16×16 и 8 для TU 32×32.
[0132] В другом примере, в этом раскрытии также предлагается кодировать явный sigMapFlag для первых K1TU коэффициентов в обратном порядке сканирования всей TU. K1TU можно задать равным любое значение от 0 до MaxCoeffNum (максимальное количество коэффициентов) TU. Разные значения K1TU можно задавать для переменных размеров TU, поскольку они демонстрируют разные количества максимальных коэффициентов. Меньшие значения K1TU можно использовать в случае TU меньших размеров, и большее значения K1TU можно использовать в случае TU увеличенных размеров. В качестве типичного примера, K1TU можно задать равным 8 для TU 4×4, 32 для TU 8×8, 128 для TU 16×16 и 512 для TU 32×32.
[0133] В другом примере, в этом раскрытии предлагается отключать кодирование явных флагов sigMapFlag для оставшихся коэффициентов, когда количество ранее кодированного sigMapFlag, равного 1, в порядке сканирования всей TU накапливается до определенной величины K2TU. K2TU можно задавать равным любому значению от 0 до MaxCoeffNum. Фиксированное K2TU можно применять для кодирования уровня коэффициентов для всех размеров TU. Альтернативно, разные значения K2TU можно задавать для переменных размеров TU. Меньшее значение K2TU можно использовать в случае TU меньших размеров, и большее значение K2TU можно использовать в случае TU увеличенных размеров. В качестве типичного примера, K2TU можно задать равным 4 для TU 4×4, 16 для TU 8×8, 32 для TU 16×16 и 64 для TU 32×32.
[0134] Каждый из вышеописанных методов ограничения явного кодирования флагов gr1Flag, флагов gr2Flag и флагов sigMapFlag для всей TU можно комбинировать. Также, вышеописанные адаптивные пороговые схемы для порогов N, M1, M2, K1 и K2 также можно применять для адаптивного изменения K1TU, K2TU, NTU, M1TU и M2TU. В сценарии схемы на основе TU, окружающий блок означает слева и над TU.
[0135] В соответствии с вышеописанными методами, явные gr1Flag, gr2Flag, и/или sigMapFlag кодируются только для ограниченного количества коэффициентов во фрагменте. Таким образом, больше коэффициентов (включая оставшиеся коэффициенты с малым абсолютным значением) кодируются в режиме обхода, например, посредством голомбовского кодирования, кодирования Голомба-Райса или экспоненциального голомбовского кодирования в режиме обхода. В соответствии с вышеописанными методами, в этом раскрытии также предлагается модифицировать параметры адаптации кода Голомба-Райса для работы со значениями levelRem, отличающимися от значений levelRem, кодированных в предыдущих испытательных моделях HEVC.
[0136] В соответствии с некоторыми примерами этого раскрытия, способ обновления Голомба-Райса можно адаптировать согласно характеристикам кодируемых коэффициентов. В порядке одного примера, процесс обновления GolombRiceParam зависит от соответствующих характеристик видеоблока кодируемого фрагмента, например, параметра квантования, размера TU, глубины TU, режима предсказания, типа цветового компонента (например, Y, U или V) текущего блока и статистики коэффициентов соседних фрагментов или блоков, и т.д.
[0137] В целом, методы, описанные в этом раскрытии, отключают кодирование одного или более из gr2Flag, gr1Flag и/или sigMapFlag при различных условиях во фрагменте или в TU таким образом, что кодирование Голомба-Райса используется раньше. В альтернативном примере, эти решения могут быть основаны на статистике или характеристиках кодирования видео, например, количестве значимых коэффициентов, количестве коэффициентов, больших 1 или больших 2 в соседних TU. Альтернативно, решения могут основываться на совокупной статистике с начала слайса. В другом примере, флаг в синтаксисе более высокого уровня (например, SPS, PPS, APS или заголовка слайса) может указывать, что переключение должно происходить прямо от начала слайса.
[0138] В другом примере раскрытия, сумма абсолютных значений коэффициентов, закодированных до сих пор во фрагменте, TU, соседних TU или с начала слайса, используется в качестве критерия для отключения кодирование одного или более из gr2Flag, gr1Flag и sigMapFlag.
[0139] В целом, отключение конкретного элемента синтаксиса, например, gr2Flag, gr1Flag или sigMapFlag, может зависеть от ранее кодированной информации для этого элемента синтаксиса во фрагменте. Отключение конкретного элемента синтаксиса также может зависеть от информации, связанной с информацией значимости и уровня, которая была закодирована для этого фрагмента, а также для предыдущих фрагментов и TU с начала слайса. Например, решение на отключение кодирования gr2Flag может зависеть от количества коэффициентов, больших двух, ранее закодированных в текущем фрагменте. Решение на отключение кодирования gr2Flag также может зависеть от количества значимых коэффициентов и/или количества коэффициентов с абсолютной величиной, большей 1, во всем фрагменте.
[0140] Следует отметить, что, в одной версии испытательной модели HEVC (HM5.0), все флаги sigMapFlag для всего фрагмента отправляются до отправки флагов gr1Flag, и т.д. Таким образом, согласно методам этого раскрытия, кодированную информацию флагов sigMapFlag во фрагменте можно использовать для определения, отключать ли кодирование gr1Flag или gr2Flag. Аналогичным образом, всю информацию значимости (sigMapFlag) и уровня (gr1Flag, gr2Flag, levelRem) из предыдущих фрагментов также можно использовать для принятия решения об отключении кодирования sigMapFlag, gr1Flag и/или gr2Flag, поскольку все элементы синтаксиса для одного фрагмента отправляются до перехода к следующему фрагменту. Если это порядок (например, чередующийся) изменяется, решение на отключение может основываться на элементах синтаксиса, соответствующих ранее кодированным/декодированным коэффициентам из фрагмента.
[0141] Если вместо использования фрагментов, кодируется вся TU, либо коэффициент за коэффициентом, либо с использованием плоскостей элементов синтаксиса (например, sigMapFlag, gr1Flag и т.д.), как это делается в HM5.0, можно задавать пространственную область поддержки для принятия решения на отключение для конкретного элемента контекста. Областью поддержки может быть группа коэффициентов преобразования вблизи кодируемого коэффициента преобразования. Информация, кодированная/декодированная из области поддержки для элемента синтаксиса, подлежащего отключению, а также элементы синтаксиса, которые были закодированы ранее, можно использовать при принятии решения. Например, решение на отключение gr2Flag может опираться на gr2Flag, gr1Flag и/или sigMapFlag из пространственной области поддержки. Пространственная область поддержки может содержать причинное соседство (т.е., уже кодированных в порядке сканирования) коэффициентов преобразования в текущей TU. Область поддержки также может содержать коэффициенты в том же частотном местоположении от других TU. Если используются фрагменты, область поддержки может быть непричинной для элементов синтаксиса, которые кодируются раньше, например, gr1Flag и sigMapFlag в вышеприведенных примерах.
[0142] Во всех описанных здесь примерах, включая примеры, где кодирование sigMapFlag отключается, позиция последнего ненулевого коэффициента позиционно кодируется с использованием CABAC (или любого другого энтропийного кодера). В частности, когда все флаги sigMapFlag, флаги gr1Flag и флаги gr2Flag отключены, позиция последнего ненулевого коэффициента в TU все еще кодируется. Это сопровождается информацией уровня (с использованием кодирования Голомба-Райса) начиная с последнего коэффициента и переходя к коэффициенту нулевой частоты в обратном порядке сканирования.
[0143] В некоторых предложениях для HEVC предусмотрены дополнительные способы кодирования коэффициентов преобразования. В этих способах кодируются те же пять рассмотренных выше элементов синтаксиса. Для получения контекста для CABAC для sigMapFlag, gr1Flag и gr2Flag используется статистика, касающаяся соседства коэффициентов вблизи кодируемого в данный момент коэффициента. Статистику, касающуюся соседства коэффициентов, также можно использовать для определения параметра Голомба-Райса (параметра Голомба) для элемента синтаксиса levelRem.
[0144] Пример соседства, используемого для вывода контекста для кодируемого в данный момент коэффициента преобразования X, в случае диагонального сканирования вниз и влево, показан на фиг. 8 пунктирным четырехугольником. Соседство является примером для кодирования флагов sigMapFlag, но также можно использовать другие варианты соседства. Коэффициенты в области соседства обозначены X0, X1, X2, X3 и X4. Вывод контекста для разных элементов синтаксиса базируется на функции абсолютных уровней коэффициентов в области соседства. Вместо того чтобы кодировать каждый поднабор или фрагмент за пять проходов (по одному проходу для каждого элемента синтаксиса, рассмотренного выше), элементы синтаксиса для одного коэффициента преобразования можно кодировать до перехода к следующему коэффициенту.
[0145] В порядке одного примера, следующие величины можно задавать с использованием контекстного соседства. В этом примере, суммирование производится по всем коэффициентам в контекстном соседстве.
где
где
[0146] Затем sum_absolute_level можно использовать для получения индекса контекста для sigMapFlag, и sum_absolute_levelMinus1 можно использовать для получения индексов контекста для gr1Flag и gr2Flag.
[0147] Как рассмотрено выше, методы этого раскрытия позволяют повысить пропускную способность CABAC за счет сокращения количества контекстно-кодированныов бинов благодаря адаптивному отключению кодирования контекстно-кодированных sigMapFlag, gr1Flag и gr2Flag и переключению на кодирование Голомба-Райса. В этом раскрытии также описаны методы для распространения этих концепций на методы определения контекста из соседствующих коэффициентов и их возможных разновидностей.
[0148] В порядке одного примера, можно задавать область соседства (один типичный пример области соседства показан на фиг. 8) для текущего коэффициента, и информацию уровня коэффициентов в области соседства можно использовать для принятия решения на отключение для конкретного элемента контекста текущего коэффициента. Например, решение на отключение gr2Flag для коэффициента может основываться на gr2Flag, gr1Flag и/или sigMapFlag в области соседства. Решение на отключение gr1Flag для коэффициента может основываться на gr1Flag и/или sigMapFlag в области соседства. Когда коэффициенты кодируются коэффициент за коэффициентом, вся информация уровня в соседстве может быть доступна и может использоваться для определения, отключать ли gr2Flag, gr1Flag и/или sigMapFlag текущего коэффициента. В ряде случаев, когда значения нижеперечисленной информации 1-6 превышают некоторые определенный пороги, gr2Flag, gr1Flag и/или sigMapFlag текущего коэффициента может быть отключен.
1. Количество значимых коэффициентов в области соседства, заданной в уравнении (1)
2. Суммирование абсолютного уровня в области соседства, заданной в уравнении (2)
3. Суммирование абсолютного уровня минус 1 в области соседства, заданной в уравнении (3)
4. Максимальный абсолютный уровень в области соседства
5. Любое другое линейное или нелинейное вычисление информации уровня в области соседства
6. Любое другое линейное или нелинейное вычисление на основании значений в пунктах 1, 2, 3 и/или 4
[0149] Когда коэффициенты кодируются коэффициент за коэффициентом, вышеупомянутая область соседства включает в себя только причинные коэффициенты. Когда коэффициенты кодируются отдельными проходами, вышеупомянутая область соседства также может включать в себя непричинные коэффициенты. В некоторых примерах, вышеупомянутая область соседства может представлять собой весь текущий фрагмент или даже всю текущую TU.
[0150] Как упомянуто выше, всю информацию уровня коэффициентов в области соседства можно использовать для принятия решения на отключение кодирование на основе контекста элемента синтаксиса. Однако кодирование всего уровня, в ряде случаев, может потреблять большие ресурсы хранения. Соответственно, в ряде случаев, уровень коэффициентов может покрываться до определенного порога (который может быть равен 2, 3, 7, и т.д.) и затем использоваться для определения, отключать ли или нет кодирование на основе контекста для конкретного элемента синтаксиса для коэффициента преобразования.
[0151] Как упомянуто выше, решение, отключать ли конкретный контекстно-кодированный элемент синтаксиса для коэффициента можно принимать для каждого коэффициента. Альтернативно, решение на отключение для конкретного контекстно-кодированного элемента синтаксиса можно инициировать и распространять. Например, после отключения конкретного контекстно-кодированного элемента синтаксиса для текущего коэффициента, этот конкретный контекстно-кодированный элемент синтаксиса может быть отключен для всех оставшихся коэффициентов в текущем фрагменте, или даже для всех оставшихся коэффициентов в текущей TU.
[0152] На фиг. 9 показана блок-схема, демонстрирующая пример видеокодера 20, который может использовать методы кодирования коэффициентов преобразования, описанные в этом раскрытии. Видеокодер 20 будет описан в контексте кодирования HEVC в целях иллюстрации, но без ограничения этого раскрытия другими стандартами или способами кодирования, которые могут требовать сканирования коэффициентов преобразования. Видеокодер 20 может осуществлять интра- и интер-кодирование CU в кадрах видео. Интра-кодирование опирается на пространственное предсказание для снижения или устранения пространственной избыточности в видеоданных в данном кадре видео. Интер-кодирование опирается на временное предсказание для снижения или устранения временной избыточности между текущим кадром и ранее кодированными кадрами видеопоследовательности. Режим интра-предсказания (I-режим) может означать любой из нескольких режимов пространственного сжатия видео. Режимы интер-предсказания, например, однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим) может означать любой из нескольких режимов временного сжатия видео.
[0153] Как показано на фиг. 9, видеокодер 20 принимает текущий видеоблок в кадре видео, подлежащем кодированию. В примере, показанном на фиг. 9, видеокодер 20 включает в себя блок 44 компенсации движения, блок 42 оценивания движения, блок 46 обработки интра-предсказания, буфер 64 опорных кадров, сумматор 50, блок 52 обработки преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Блок 52 обработки преобразования, представленный на фиг. 9, это блок, который применяет фактическое преобразование или комбинации преобразования к блоку остаточных данных, и его не надо путать с блоком коэффициентов преобразования, который также может именоваться единицей преобразования (TU) CU. Для реконструкции видеоблока, видеокодер 20 также включает в себя блок 58 обратного квантования, блок 60 обработки обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 9) также может быть включен для фильтрации границы блоков для устранения артефактов блочности из реконструированного видео. При желании, фильтр удаления блочности обычно фильтрует выходной сигнал сумматора 62.
[0154] В ходе процесса кодирования, видеокодер 20 принимает кадр или слайс видео, подлежащий кодированию. Кадр или слайс может делиться на множественные видеоблоки, например, наибольшие единицы кодирования (LCU). Блок 42 оценивания движения и блок 44 компенсации движения осуществляют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадров для обеспечения временного сжатия. Блок 46 обработки интра-предсказания может осуществлять кодирование с интра-предсказанием принятого видеоблока относительно одного или более соседних блоков в одном и том же кадре или слайсе в качестве блока, подлежащего кодированию для обеспечения пространственного сжатия.
[0155] Блок 40 выбора режима может выбирать один из режимов кодирования, интра- или интер-, например, на основании результатов ошибки (т.е. искажения) для каждого режима, и выдает результирующий блок интра- или интер-предсказания (например, единицу предсказания (PU)) на сумматор 50 для генерации данных остаточного блока и на сумматор 62 для реконструкции кодированного блока для использования в опорном кадре. Сумматор 62 объединяет предсказываемый блок с обратно квантованными, обратно преобразованными данными из блока 60 обработки обратного преобразования для блока для реконструкции кодированного блока, как описано более подробно ниже. Некоторые кадры видео могут быть предусмотрены как I-кадры, причем все блоки в I-кадре кодируются в режиме интра-предсказания. В ряде случаев, блок 46 обработки интра-предсказания может осуществлять кодирование с интра-предсказанием блока в P- или B-кадре, например, когда поиск движения, осуществляемый блоком 42 оценивания движения, не обеспечивает достаточного предсказания блока.
[0156] Блок 42 оценивания движения и блок 44 компенсации движения могут быть сильно интегрированы, но проиллюстрированы по отдельности в принципиальных целях. Оценивание движения (или поиск движения) это процесс генерации векторы движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценивания движения вычисляет вектор движения для единицы предсказания кодированного с интер-предсказанием кадра путем сравнения единицы предсказания с опорными выборками опорного кадра, хранящимися в буфере 64 опорных кадров. Опорной выборкой может быть блок, в отношении которого установлено, что он достаточно точно совпадает с участком CU, включающем в себя PU, кодируемый в отношении пиксельной разности, которая может определяться суммой абсолютных значений разности (SAD), суммой квадратов разностей (SSD) или другими разностными метриками. Опорная выборка может встречаться в любом месте опорного кадра или опорного слайса, и не обязательно на границе блока (например, единицы кодирования) опорного кадра или слайса. В некоторых примерах, опорная выборка может встречаться в дробной позиции пикселя.
[0157] Блок 42 оценивания движения отправляет вычисленный вектор движения на блок 56 энтропийного кодирования и блок 44 компенсации движения. Участок опорного кадра, идентифицированный вектором движения, может именоваться опорной выборкой. Блок 44 компенсации движения может вычислять предсказываемое значение для единицы предсказания текущей CU, например, извлекая опорную выборку, идентифицированную вектором движения для PU.
[0158] Блок 46 обработки интра-предсказания может выполнять интра-предсказание принятого блока, альтернативно интер-предсказанию, осуществляемому блоком 42 оценивания движения и блоком 44 компенсации движения. Блок 46 обработки интра-предсказания может предсказывать принятый блок относительно соседних, ранее кодированных блоков, например, блоков, выше, выше и вправо, выше и влево, или влево от текущего блока, предполагая порядок кодирования слева направо, сверху вниз для блоков. Блок 46 обработки интра-предсказания может быть выполнен с возможностью работать в разных режимах интра-предсказания. Например, блок 46 обработки интра-предсказания может быть выполнен с возможностью работать в определенном количестве режимов направленного предсказания, например, тридцати четырех режимов направленного предсказания, на основании размера кодируемой CU.
[0159] Блок 46 обработки интра-предсказания может выбирать режим интра-предсказания, например, вычисляя значения ошибки для различных режимов интра-предсказания и выбирая режим, который дает наименьшее значение ошибки. Режимы направленного предсказания может включать в себя функции для объединения значений пространственно соседствующих пикселей и применения объединенных значений к одной или более позициям пикселя в PU. Когда значения для всех позиций пикселя в PU вычислены, блок 46 обработки интра-предсказания может вычислять значение ошибки для режима предсказания на основании пиксельных разностей между PU принятым блоком, подлежащим кодированию. Блок 46 обработки интра-предсказания может продолжать испытывать режимы интра-предсказания, пока не будет найден режим интра-предсказания, который дает приемлемое значение ошибки. Затем блок 46 обработки интра-предсказания может отправлять PU на сумматор 50.
[0160] Видеокодер 20 формирует остаточный блок путем вычитания данных предсказания, вычисленных блоком 44 компенсации движения или блоком 46 обработки интра-предсказания из исходного кодируемого видеоблока. Сумматор 50 представляет компонент или компоненты, которые осуществляют эту операцию вычитания. Остаточный блок может соответствовать двухмерной матрице разностных значений пикселей, где количество значений в остаточном блоке совпадает с количеством пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, т.е. ошибке, между значениями совместно размещенных пикселей в PU и в исходном блоке, подлежащем кодированию. Разности могут быть разностями сигналов цветности или яркости в зависимости от типа блока, который кодируется.
[0161] Блок 52 обработки преобразования может формировать одну или более единиц преобразования (TU) из остаточного блока. Блок 52 обработки преобразования выбирает преобразование среди множества преобразований. Преобразование можно выбирать на основании одной или более характеристик кодирования, например, размера блока, режима кодирования, и т.п. Затем блок 52 обработки преобразования применяет выбранное преобразование к TU, создавая видеоблок, содержащий двухмерную матрицу коэффициентов преобразования.
[0162] Блок 52 обработки преобразования может отправлять результирующие коэффициенты преобразования на блок 54 квантования. Затем блок 54 квантования может квантовать коэффициенты преобразования. Затем блок 56 энтропийного кодирования может осуществлять сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. В этом раскрытии описано, что сканирование осуществляет блок 56 энтропийного кодирования. Однако следует понимать, что в других примерах сканирование могут осуществлять другие блоки обработки, например, блок 54 квантования.
[0163] После того, как коэффициенты преобразования просканированы в одномерную матрицу, блок 56 энтропийного кодирования может применять к коэффициентам энтропийное кодирование, например, CABAC, контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), энтропийное кодирование с разбиением интервала вероятности (PIPE) или другую методологию статистического кодирования.
[0164] Для осуществления CABAC, блок 56 энтропийного кодирования может выбирать контекстную модель для применения к определенному контексту для кодирования символов, подлежащих передаче. Контекст может указывать, например, являются ли соседние значения ненулевыми или нет. Блок 56 энтропийного кодирования также может энтропийно кодировать элементы синтаксиса, например, сигнал, представляющий выбранное преобразование. В соответствии с методами этого раскрытия, блок 56 энтропийного кодирования может выбирать контекстную модель, используемую для кодирования этих элементов синтаксиса, на основании, например, направления интра-предсказания для режимов интра-предсказания, позиции сканирования коэффициента, соответствующего элементам синтаксиса, типа блока и/или типа преобразования, и других факторов, используемых для выбора контекстной модели.
[0165] После энтропийного кодирования блоком 56 энтропийного кодирования, результирующий кодированное видео может передаваться на другое устройство, например, видеодекодер 30, или архивироваться для дальнейшей передачи или извлечения.
[0166] В ряде случаев, блок 56 энтропийного кодирования или другой блок видеокодера 20 может быть выполнен с возможностью осуществления других функций кодирование, помимо энтропийного кодирования. Например, блок 56 энтропийного кодирования может быть выполнен с возможностью определения значений шаблона кодированных блоков (CBP) для CU и PU. Также, в ряде случаев, блок 56 энтропийного кодирования может осуществлять кодирование коэффициентов по длине слова.
[0167] Блок 58 обратного квантования и блок 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для реконструкции остаточного блока в пиксельной области, например, для использования в дальнейшем в качестве опорного блока. Блок 44 компенсации движения может вычислять опорный блок путем суммирования остаточного блока с блоком предсказания одного из кадров буфера 64 опорных кадров. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к реконструированному остаточному блоку для вычисления субцелых пиксельных значений для использования при оценивании движения. Сумматор 62 суммирует реконструированный остаточный блок с блоком предсказания, подвергнутым компенсации движения, вырабатываемым блоком 44 компенсации движения для формирования реконструированного видеоблока для сохранения в буфере 64 опорных кадров. Реконструированный видеоблок может использоваться блоком 42 оценивания движения и блоком 44 компенсации движения в качестве опорного блока для интер-кодирования блока в последующем кадре видео.
[0168] На фиг. 10 показана блок-схема, демонстрирующая пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере, показанном на фиг. 10, видеодекодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 обработки интра-предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видеодекодер 30 может, в некоторых примерах, осуществлять проход декодирования в общем случае, обратный проходу кодирования, описанному в отношении видеокодера 20 (см. фиг. 9).
[0169] Блок 70 энтропийного декодирования осуществляет процесс энтропийного декодирования на кодированном битовом потоке для извлечения одномерной матрицы коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видеокодером 20 (например, CABAC). Процесс энтропийного кодирования, используемый кодером, может сигнализироваться в кодированном битовом потоке или может быть предварительно определенным процессом.
[0170] В некоторых примерах, блок 70 энтропийного декодирования (или блок 76 обратного квантования) может сканировать принятые значения с использованием сканирования, зеркального режиму сканирования, используемому блоком 56 энтропийного кодирования (или блоком 54 квантования) видеокодера 20. Хотя сканирование коэффициентов может осуществляться в блоке 76 обратного квантования, сканирование будет описано в целях иллюстрации как осуществляемое блоком 70 энтропийного декодирования. Кроме того, хотя для простоты иллюстрации они показаны как отдельные функциональные блоки, структура и функциональные возможности блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков видеодекодера 30 могут быть сильно интегрированы друг с другом.
[0171] Блок 76 обратного квантования осуществляет обратное квантование, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, аналогичный процессам, предложенным для HEVC, или заданный в стандарте декодирования H.264. Процесс обратного квантования может включать в себя использование параметра квантования QP, вычисленного видеокодером 20 для CU для определения степени квантования и, аналогично, степени обратного квантования, которые должны применяться. Блок 76 обратного квантования может обратно квантовать коэффициенты преобразования до или после того, как коэффициенты преобразуются из одномерной матрицы в двухмерную матрицу.
[0172] Блок 78 обработки обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах, блок 78 обработки обратного преобразования может определять обратное преобразование на основании сигнализации от видеокодера 20, или путем вывода преобразования из одной или более характеристик кодирования, например, размера блока, режима кодирования, и т.п. В некоторых примерах, блок 78 обработки обратного преобразования может определять преобразование для применения к текущему блоку на основании сигнализируемого преобразования на корневом узле квадродерева для LCU, включающей в себя текущий блок. Альтернативно, преобразование может сигнализироваться на корневом узле квадродерева TU для краевого узла CU в квадродереве LCU. В некоторых примерах, блок 78 обработки обратного преобразования может применять каскадное обратное преобразование, в котором блок 78 обработки обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования декодируемого в данный момент блока.
[0173] Блок 74 обработки интра-предсказания может генерировать данные предсказания для текущего блока текущего кадра на основании сигнализируемого режима интра-предсказания и данных из ранее декодированных блоков текущего кадра.
[0174] Блок 72 компенсации движения может извлекать вектор движения, направление предсказания движения и опорный индекс из кодированного битового потока. Опорное направление предсказания указывает, является ли режим интер-предсказания однонаправленным (например, P кадр) или двунаправленным (B кадр). Опорный индекс указывает, на каком опорном кадре базируется вектор движения-кандидат.
[0175] На основании извлеченного направления предсказания движения, индекса опорного кадра и вектора движения, блок компенсации движения создает блок, подвергнутый компенсации движения, для текущего участка. Эти блоки, подвергнутые компенсации движения, по существу, воссоздают блок предсказания, используемый для формирования остаточных данных.
[0176] Блок 72 компенсации движения может создавать блоки, подвергнутые компенсации движения, возможно, осуществляя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, подлежащих использованию для оценивания движения с подпиксельной точностью, могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать интерполяционные фильтры, используемые видеокодером 20 в ходе кодирования видеоблока для вычисления интерполированных значений для субцелых пикселей опорного блока. Блок 72 компенсации движения может определять интерполяционные фильтры, используемые видеокодером 20, согласно принятой синтаксической информации и использовать интерполяционные фильтры для формирования блоков предсказания.
[0177] Дополнительно, блок 72 компенсации движения и блок 74 обработки интра-предсказания, в примере HEVC, может использовать некоторую синтаксическую информацию (например, обеспеченную квадродеревом) для определения размеров LCU, используемых для кодирования кадра(ов) кодированной видеопоследовательности. Блок 72 компенсации движения и блок 74 обработки интра-предсказания также может использовать синтаксическую информацию для определения информации разбиения, которая описывает, как делится каждая CU кадра кодированной видеопоследовательности (и аналогично, как делятся под-CU). Синтаксическая информация также может включать в себя режимы, указывающие, как кодируется каждое разбиение (например, интра- или интер-предсказание и, для интра-предсказания, режим кодирования с интра-предсказанием), один или более опорных кадров (и/или ссылочные списки, содержащие идентификаторы для опорных кадров) для каждой PU, кодированной с интер-предсказанием, и другую информацию для декодирования кодированной видеопоследовательности.
[0178] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, генерируемыми блоком 72 компенсации движения или блоком 74 обработки интра-предсказания для формирования декодированные блоки. При желании, фильтр удаления блочности также можно применять для фильтрации декодированных блоков для устранения артефактов блочности. Затем декодированные видеоблоки сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также создает декодированное видео для представления на устройстве отображения (например, устройстве 32 отображения, показанном на фиг. 1).
[0179] На фиг. 11 показана блок-схема операций, демонстрирующая пример способа согласно методам этого раскрытия. Способ, показанный на фиг. 11, может выполняться видеокодером (например, видеокодером 20, показанным на фиг. 9, или видеодекодером 30, показанным на фиг. 10).
[0180] Видеокодер 20 и видеодекодер 30 (т.е. видеокодер) может быть выполнен с возможностью осуществления способа кодирования коэффициентов преобразования в процессе кодирования видео. Видеокодер может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля (1110). Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы (1120). Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте (1130). В одном примере, значение N равно 1. В другом примере, значение N определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0181] Видеокодер может быть дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте (1140). Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1. Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется. Видеокодер может быть дополнительно выполнен с возможностью кодирования флага знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования (1150).
[0182] В одном примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием CABAC с адаптивной контекстной моделью. Оставшееся значение уровня кодируется с использованием кодирования Голомба-Райса в режиме обхода CABAC. Флаг знака кодируется в режиме обхода CABAC. В другом примере раскрытия, оставшееся значение уровня кодируется с использованием кодирования Голомба-Райса, причем кодирование Голомба-Райса адаптируется согласно параметру Голомба. Параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0183] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и оставшееся значение уровня кодируется после флага превышения двойки. Каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования. В одном примере, порядок сканирования является обратным диагональным порядком сканирования.
[0184] Согласно другим примерам раскрытия, фрагмент представляет собой подблок единицы преобразования. Фрагмент может представлять собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере, фрагмент представляет собой целиком единицу преобразования. В другом примере, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования.
[0185] В случае, когда видеокодер осуществляет способ, показанный на фиг. 11, способ может дополнительно содержать этап, на котором кодируют пиксельные данные для формирования остаточных видеоданных, преобразуют остаточные видеоданные для формирования фрагмента коэффициентов преобразования, и сигнализируют кодированный флаг карты значимости, кодированный флаг превышения единицы и кодированный флаг превышения двойки, в битовом потоке кодированного видео. Дополнительно, в другом примере, видеокодер может сигнализировать значение N в битовом потоке кодированного видео. Значение N может сигнализироваться в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0186] В случае, когда видеодекодер осуществляет способ, показанный на фиг. 11, способ может дополнительно содержать этап, на котором принимают флаг карты значимости, флаг превышения единицы и флаг превышения двойки в битовом потоке кодированного видео, осуществляют обратное преобразование фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодируют остаточные видеоданные для формирования пиксельных данных.
[0187] На фиг. 12 показана блок-схема операций, демонстрирующая другой пример способа согласно методам этого раскрытия. Способ, показанный на фиг. 12, может выполняться видеокодером (например, видеокодером 20, показанным на фиг. 9, или видеодекодером 30, показанным на фиг. 10).
[0188] Видеокодер 20 и видеодекодер 30 (т.е. видеокодер) может быть выполнен с возможностью осуществления способа кодирования коэффициентов преобразования в процессе кодирования видео. Видеокодер может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля (1210). Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы (1220). M1 меньше максимального количества коэффициентов преобразования во фрагменте. Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух (1230). В одном примере, значение M1 равно 8. В другом примере, значение M1 определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0189] Видеокодер может быть дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте (1240). Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1. Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, имеющем кодированный флаг карты значимости, но флаг превышения единицы не кодируется. Видеокодер может быть дополнительно выполнен с возможностью кодирования флага знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования (1250).
[0190] В одном примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием CABAC с адаптивной контекстной моделью. Оставшееся значение уровня кодируется с использованием кодирования Голомба-Райса в режиме обхода CABAC. Флаг знака кодируется в режиме обхода CABAC. В другом примере раскрытия, оставшееся значение уровня кодируется с использованием кодирования Голомба-Райса, причем кодирование Голомба-Райса адаптируется согласно параметру Голомба. Параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0191] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и оставшееся значение уровня кодируется после флага превышения двойки. Каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования. В одном примере, порядок сканирования является обратным диагональным порядком сканирования.
[0192] Согласно другим примерам раскрытия, фрагмент представляет собой подблок единицы преобразования. Фрагмент может представлять собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере, фрагмент представляет собой целиком единицу преобразования. В другом примере, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования.
[0193] В случае, когда видеокодер осуществляет способ, показанный на фиг. 12, способ может дополнительно содержать этап, на котором кодируют пиксельные данные для формирования остаточных видеоданных, преобразуют остаточные видеоданные для формирования фрагмента коэффициентов преобразования, и сигнализируют кодированный флаг карты значимости, кодированный флаг превышения единицы и кодированный флаг превышения двойки, в битовом потоке кодированного видео. Дополнительно, в другом примере, видеокодер может сигнализировать значения M1 в битовом потоке кодированного видео. Значение M1 может сигнализироваться в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0194] В случае, когда видеодекодер осуществляет способ, показанный на фиг. 12, способ может дополнительно содержать этап, на котором принимают флаг карты значимости, флаг превышения единицы и флаг превышения двойки в битовом потоке кодированного видео, осуществляют обратное преобразование фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодируют остаточные видеоданные для формирования пиксельных данных.
[0195] На фиг. 13 показана блок-схема операций, демонстрирующая другой пример способа согласно методам этого раскрытия. Способ, показанный на фиг. 13, может выполняться видеокодером (например, видеокодером 20, показанным на фиг. 9, или видеодекодером 30, показанным на фиг. 10).
[0196] Видеокодер 20 и видеодекодер 30 (т.е. видеокодер) может быть выполнен с возможностью осуществления способа кодирования коэффициентов преобразования в процессе кодирования видео. Видеокодер может быть выполнен с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля (1310). Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы (1320). M1 меньше максимального количества коэффициентов преобразования во фрагменте. Видеокодер может быть дополнительно выполнен с возможностью кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте (1330). В одном примере, значение N равно 1. В другом примере, значение N определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента. В одном примере, значение M1 равно 8. В другом примере, значение M1 определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0197] Видеокодер может быть дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте (1340). Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1. Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется. Оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы. Видеокодер может быть дополнительно выполнен с возможностью кодирования флага знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования (1350).
[0198] В одном примере раскрытия, способ кодирования коэффициентов преобразования в процессе кодирования видео содержит этапы, на которых кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодируют флаг превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и кодируют флаг превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0199] В другом примере раскрытия, способ может дополнительно содержать этап, на котором кодируют оставшееся значение уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, имеющем кодированный флаг карты значимости, но флаг превышения единицы не кодируется.
[0200] В другом примере раскрытия, способ может дополнительно содержать этап, на котором кодируют флаг знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
[0201] В другом примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, и оставшееся значение уровня кодируется в режиме обхода CABAC, и при этом флаг знака кодируется в режиме обхода CABAC.
[0202] В другом примере раскрытия, способ может дополнительно содержать этап, на котором кодируют оставшееся значение уровня с использованием параметра Голомба, причем параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0203] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и при этом оставшееся значение уровня кодируется после флага превышения двойки.
[0204] В другом примере раскрытия, каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования.
[0205] В другом примере раскрытия, порядок сканирования является обратным диагональным порядком сканирования. В другом примере раскрытия, фрагмент представляет собой подблок единицы преобразования. В другом примере раскрытия, фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере раскрытия, фрагмент представляет собой единицу преобразования. В другом примере раскрытия, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования. В другом примере раскрытия, порядок сканирования является обратным порядком сканирования.
[0206] В другом примере раскрытия, значение M1 равно 8. В другом примере раскрытия, значение M1 определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0207] В другом примере раскрытия, процесс кодирования видео является процессом кодирования видео, причем способ дополнительно содержит этапы, на которых кодируют пиксельные данные для формирования остаточных видеоданных, преобразуют остаточные видеоданные для формирования фрагмента коэффициентов преобразования, и сигнализируют кодированный флаг карты значимости, кодированный флаг превышения единицы и кодированный флаг превышения двойки в битовом потоке кодированного видео.
[0208] В другом примере раскрытия, способ дополнительно содержит этап, на котором сигнализируют значение M1 в битовом потоке кодированного видео. В другом примере раскрытия, значение M1 сигнализируется в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0209] В другом примере раскрытия, процесс кодирования видео является процессом декодирования видео, причем способ дополнительно содержит этапы, на которых принимают флаг карты значимости, флаг превышения единицы и флаг превышения двойки в битовом потоке кодированного видео, осуществляют обратное преобразование фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодируют остаточные видеоданные для формирования пиксельных данных.
[0210] В другом примере раскрытия, кодирование флага превышения двойки содержит кодирование флага превышения единицы для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем N меньше максимального количества коэффициентов преобразования во фрагменте, и при этом способ дополнительно содержит этап, на котором кодируют оставшееся значение уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
[0211] В другом примере раскрытия, значение M1 равно 8.
[0212] В другом примере раскрытия, устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, содержит видеокодер, выполненный с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0213] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, имеющем кодированный флаг карты значимости, но флаг превышения единицы не кодируется.
[0214] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования флага знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
[0215] В другом примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, и при этом оставшееся значение уровня кодируется в режиме обхода CABAC, и при этом флаг знака кодируется в режиме обхода CABAC.
[0216] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования оставшегося значения уровня с использованием параметра Голомба, и при этом параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0217] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и при этом оставшееся значение уровня кодируется после флага превышения двойки. В другом примере раскрытия, флаг карты значимости, флаг превышения единицы, флаг превышения двойки и оставшееся значение уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования.
[0218] В другом примере раскрытия, порядок сканирования является обратным диагональным порядком сканирования. В другом примере раскрытия, фрагмент представляет собой подблок единицы преобразования. В другом примере раскрытия, фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере раскрытия, фрагмент представляет собой единицу преобразования. В другом примере раскрытия, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования. В другом примере раскрытия порядок сканирования является обратным порядком сканирования.
[0219] В другом примере раскрытия, значение M1 равно 8. В другом примере раскрытия, значение M1 определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0220] В другом примере раскрытия, видеокодер является видеокодером, и видеокодер дополнительно выполнен с возможностью кодирования пиксельных данных для формирования остаточных видеоданных, преобразования остаточных видеоданных для формирования фрагмента коэффициентов преобразования, и сигнализации кодированного флага карты значимости, кодированного флага превышения единицы и кодированного флага превышения двойки в битовом потоке кодированного видео. В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью сигнализации значения M1 в битовом потоке кодированного видео. В другом примере раскрытия, значение M1 сигнализируется в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0221] В другом примере раскрытия, видеокодер является видеодекодером, и видеодекодер дополнительно выполнен с возможностью приема флага карты значимости, флага превышения единицы и флага превышения двойки в битовом потоке кодированного видео, обратного преобразования фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодирования остаточных видеоданных для формирования пиксельных данных.
[0222] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем N меньше максимального количества коэффициентов преобразования во фрагменте, причем способ дополнительно содержит этап, на котором кодируют оставшееся значение уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы. В другом примере раскрытия, значение N равно 1.
[0223] В другом примере раскрытия, устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, содержит средство для кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, средство для кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и средство для кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0224] В другом примере раскрытия, компьютерно-читаемый запоминающий носитель, хранящий инструкции, которые, при выполнении, предписывают одному или более процессорам устройства, выполненного с возможностью кодирования видеоданных, для кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и кодирования флага превышения двойки для коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух.
[0225] В другом примере раскрытия, способ кодирования коэффициентов преобразования в процессе кодирования видео содержит этапы, на которых кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодируют флаг превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодируют флаг превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте.
[0226] В другом примере раскрытия, способ дополнительно содержит этап, на котором кодируют оставшееся значение уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
[0227] В другом примере раскрытия, способ дополнительно содержит этап, на котором кодируют флаг знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
[0228] В другом примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, причем оставшееся значение уровня кодируется в режиме обхода CABAC, и при этом флаг знака кодируется в режиме обхода CABAC.
[0229] В другом примере раскрытия, способ дополнительно содержит этап, на котором кодируют оставшееся значение уровня с использованием параметра Голомба, и при этом параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0230] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и оставшееся значение уровня кодируется после флага превышения двойки.
[0231] В другом примере раскрытия, каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования.
[0232] В другом примере раскрытия, порядок сканирования является обратным диагональным порядком сканирования. В другом примере раскрытия, фрагмент представляет собой подблок единицы преобразования. В другом примере раскрытия, фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере раскрытия, фрагмент представляет собой единицу преобразования. В другом примере раскрытия, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования. В другом примере раскрытия, порядок сканирования является обратным порядком сканирования.
[0233] В другом примере раскрытия, значение N равно 1. В другом примере раскрытия, значение N определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0234] В другом примере раскрытия, процесс кодирования видео является процессом кодирования видео, причем способ дополнительно содержит этапы, на которых кодируют пиксельные данные для формирования остаточных видеоданных, преобразуют остаточные видеоданные для формирования фрагмента коэффициентов преобразования, и сигнализируют кодированный флаг карты значимости, кодированный флаг превышения единицы и кодированный флаг превышения двойки, в битовом потоке кодированного видео. В другом примере раскрытия, способ дополнительно содержит этап, на котором сигнализируют значение N в битовом потоке кодированного видео. В другом примере раскрытия, значение N сигнализируется в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0235] В другом примере раскрытия, процесс кодирования видео является процессом декодирования видео, причем способ дополнительно содержит этапы, на которых принимают флаг карты значимости, флаг превышения единицы и флаг превышения двойки в битовом потоке кодированного видео, осуществляют обратное преобразование фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодируют остаточные видеоданные для формирования пиксельных данных.
[0236] В другом примере раскрытия, кодирование флага превышения единицы содержит кодирование флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, которые не равны нулю, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и при этом способ дополнительно содержит этап, на котором кодируют оставшееся значение уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы. В другом примере раскрытия, значение M1 равно 8.
[0237] В другом примере раскрытия, устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, содержит видеокодер, выполненный с возможностью кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте.
[0238] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
[0239] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования флага знака для коэффициентов преобразования во фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
[0240] В другом примере раскрытия, флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, причем оставшееся значение уровня кодируется в режиме обхода CABAC, и при этом флаг знака кодируется в режиме обхода CABAC.
[0241] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования оставшегося значения уровня с использованием параметра Голомба, и при этом параметр Голомба определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов.
[0242] В другом примере раскрытия, флаг карты значимости кодируется в первую очередь, флаг превышения единицы кодируется во вторую очередь, флаг превышения двойки кодируется в третью очередь, и при этом оставшееся значение уровня кодируется после флага превышения двойки.
[0243] В другом примере раскрытия, каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня кодируются для коэффициентов преобразования во фрагменте согласно порядку сканирования. В другом примере раскрытия, порядок сканирования является обратным диагональным порядком сканирования.
[0244] В другом примере раскрытия, фрагмент представляет собой подблок единицы преобразования. В другом примере раскрытия, фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования. В другом примере раскрытия, фрагмент представляет собой единицу преобразования. В другом примере раскрытия, фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования по порядку сканирования. В другом примере раскрытия, порядок сканирования является обратным порядком сканирования.
[0245] В другом примере раскрытия, значение N равно 1. В другом примере раскрытия, значение N определяется на основании, по меньшей мере, одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции фрагмента в единице преобразования, присутствия последнего значимого коэффициента во фрагменте и статистики коэффициентов соседнего фрагмента.
[0246] В другом примере раскрытия, видеокодер является видеокодером, и видеокодер дополнительно выполнен с возможностью кодирования пиксельных данных для формирования остаточных видеоданных, преобразования остаточных видеоданных для формирования фрагмента коэффициентов преобразования, и сигнализации кодированного флага карты значимости, кодированного флага превышения единицы и кодированного флага превышения двойки, в битовом потоке кодированного видео. В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью сигнализации значения N в битовом потоке кодированного видео. В другом примере раскрытия, значение N сигнализируется в, по меньшей мере, одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
[0247] В другом примере раскрытия, видеокодер является видеодекодером, и видеодекодер дополнительно выполнен с возможностью приема флага карты значимости, флага превышения единицы и флага превышения двойки в битовом потоке кодированного видео, обратного преобразования фрагмента коэффициентов преобразования для формирования остаточных видеоданных, и декодирования остаточных видеоданных для формирования пиксельных данных.
[0248] В другом примере раскрытия, видеокодер дополнительно выполнен с возможностью кодирования флага превышения единицы для первых M1 коэффициентов преобразования во фрагменте, которые не равны нулю, причем M1 меньше максимального количества коэффициентов преобразования во фрагменте, и при этом видеокодер дополнительно выполнен с возможностью кодирования оставшегося значения уровня для коэффициентов преобразования во фрагменте, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования во фрагменте, имеющем флаг превышения двойки, кодированный значением 1, причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования во фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется, и при этом оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования во фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы. В другом примере раскрытия, значение M1 равно 8.
[0249] В другом примере раскрытия, устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, содержит средство для кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, средство для кодирования флага превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и средство для кодирования флага превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте.
[0250] В другом примере раскрытия, компьютерно-читаемый запоминающий носитель, хранящий инструкции, которые, при выполнении, предписывают одному или более процессорам, выполненным с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, кодировать флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля, кодировать флаг превышения единицы для коэффициентов преобразования во фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, и кодировать флаг превышения двойки для первых N коэффициентов преобразования во фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, причем N меньше максимального количества коэффициентов преобразования во фрагменте.
[0251] В одном или более примерах, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении, или любой их комбинации. Будучи реализованы в программном обеспечении, функции могут храниться или передаваться, в виде одной или более инструкций или кода, на компьютерно-читаемом носителе и выполняться аппаратным блоком обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые запоминающие носители, которые соответствует вещественному носителю, например, запоминающим носителям или средам связи, включающим в себя любую среду, которая способствует переносу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители, в общем случае, могут соответствовать (1) вещественным компьютерно-читаемым запоминающим носителям, которые являются некратковременными, или (2) среде связи, например, сигналу или несущей волне. Запоминающими носителями данных могут быть любые доступные носители, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0252] В порядке примера, но не ограничения, такие компьютерно-читаемые запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на основе оптического диска, хранилище на основе магнитного диска, или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель, который можно использовать для хранения нужного программного кода в форме инструкций или структур данных, и к которым может обращаться компьютер. Также, любое соединение уместно именовать компьютерно-читаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL), или беспроводных технологий, например, инфракрасных, радиочастотных и микроволновых, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL, или беспроводные технологии, например, инфракрасные, радиочастотные и микроволновые, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные среды, но вместо этого означают некратковременные, вещественные запоминающие носители. Используемый здесь термин «диск» включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитными средствами, тогда как оптические диски воспроизводят данные оптическими средствами с помощью лазеров. Комбинации вышеописанных устройств также подлежат включению в объем определения компьютерно-читаемых носителей.
[0253] Инструкции могут выполняться одним или более процессорами, например, одним или более цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), вентильными матрицами, программируемыми пользователем (FPGA), или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно, используемый здесь термин “процессор” может означать любую из вышеупомянутой структуры или любой другой структуры, подходящей для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функциональные возможности могут быть обеспечены в специализированных аппаратных и/или программных модулях, выполненных с возможностью кодирования и декодирования, или внедрены в комбинированный кодек. Также, методы можно полностью реализовать в одной или более схемах или логических элементах.
[0254] Методы этого раскрытия можно реализовать в разнообразных приспособлениях или устройствах, включающих в себя беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, чипсет). Различные компоненты, модули или блоки описаны в этом раскрытии для подчеркивания функциональных аспектов устройств, выполненных с возможностью осуществления раскрытых методов, но не обязательно требуют реализации разными аппаратными блоками. Напротив, как описано выше, различные блоки могут объединяться в аппаратном блоке кодека или обеспечиваться совокупностью взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с подходящим программным обеспечением и/или программно-аппаратным обеспечением.
[0255] Были описаны различные примеры. Эти и другие примеры соответствуют объему нижеследующей формулы изобретения.
Изобретение относится к вычислительной технике. Технический результат заключается в повышении пропускной способности CABAC. Способ кодирования коэффициентов преобразования в процессе кодирования видео, в котором: кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля; кодируют флаг превышения единицы для первых M1 коэффициентов преобразования в фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования в фрагменте; кодируют флаг превышения двойки для коэффициентов преобразования в фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух; и кодируют оставшееся значение уровня для коэффициентов преобразования в фрагменте. 6 н. и 44 з.п. ф-лы, 13 ил., 7 табл.
1. Способ кодирования коэффициентов преобразования в процессе кодирования видео, причем способ содержит этапы, на которых:
кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
кодируют флаг превышения единицы для первых M1 коэффициентов преобразования в упомянутом фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования в упомянутом фрагменте;
кодируют флаг превышения двойки для коэффициентов преобразования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух; и
кодируют оставшееся значение уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
2. Способ по п. 1, в котором кодирование флага превышения двойки содержит кодирование флага превышения единицы для первых N коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем N меньше максимального количества коэффициентов преобразования в упомянутом фрагменте, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
3. Способ по п. 2, в котором значение M1 равно 8.
4. Способ по п. 1, в котором оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, имеющем кодированный флаг карты значимости, но для которого флаг превышения единицы не кодируется.
5. Способ по п. 4, дополнительно содержащий этап, на котором:
кодируют флаг знака для коэффициентов преобразования в упомянутом фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
6. Способ по п. 5, в котором флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируют с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, и при этом оставшееся значение уровня кодируют в режиме обхода CABAC, и при этом флаг знака кодируют в режиме обхода CABAC.
7. Способ по п. 6, дополнительно содержащий этап, на котором:
кодируют оставшееся значение уровня с использованием параметра Голомба, и при этом параметр Голомба определяют на основании по меньшей мере одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов коэффициентов преобразования.
8. Способ по п. 5, дополнительно содержащий этапы, на которых кодируют флаг карты значимости в первую очередь, флаг превышения единицы во вторую очередь, флаг превышения двойки в третью очередь и оставшееся значение уровня после флага превышения двойки.
9. Способ по п. 8, дополнительно содержащий этап, на котором кодируют каждый из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня для коэффициентов преобразования в упомянутом фрагменте согласно обратному порядку сканирования.
10. Способ по п. 9, в котором обратный порядок сканирования является обратным диагональным порядком сканирования.
11. Способ по п. 1, в котором фрагмент представляет собой подблок единицы преобразования.
12. Способ по п. 1, в котором фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования.
13. Способ по п. 1, в котором фрагмент представляет собой единицу преобразования.
14. Способ по п. 1, в котором фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования в обратном порядке сканирования в единице преобразования.
15. Способ по п. 14, в котором порядок сканирования является обратным диагональным порядком сканирования.
16. Способ по п. 1, в котором значение M1 равно 8.
17. Способ по п. 1, в котором значение M1 определяют на основании по меньшей мере одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции упомянутого фрагмента в единице преобразования, присутствия последнего значимого коэффициента в упомянутом фрагменте и статистики коэффициентов соседнего фрагмента.
18. Способ по п. 1, в котором процесс кодирования видео является процессом кодирования видео, причем способ дополнительно содержит этапы, на которых:
кодируют пиксельные данные для формирования остаточных видеоданных;
преобразуют остаточные видеоданные для формирования упомянутого фрагмента коэффициентов преобразования; и
сигнализируют кодированный флаг карты значимости, кодированный флаг превышения единицы и кодированный флаг превышения двойки в битовом потоке кодированного видео.
19. Способ по п. 1, дополнительно содержащий этап, на котором:
сигнализируют значение M1 в битовом потоке кодированного видео.
20. Способ по п. 19, в котором значение M1 сигнализируют в по меньшей мере одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
21. Способ по п. 1, в котором процесс кодирования видео является процессом декодирования видео, причем способ дополнительно содержит этапы, на которых:
принимают флаг карты значимости, флаг превышения единицы и флаг превышения двойки в битовом потоке кодированного видео;
осуществляют обратное преобразование упомянутого фрагмента коэффициентов преобразования для формирования остаточных видеоданных; и
декодируют остаточные видеоданные для формирования пиксельных данных.
22. Устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, причем устройство содержит:
видеокодер, выполненный с возможностью:
кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
кодирования флага превышения единицы для первых M1 коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования в упомянутом фрагменте;
кодирования флага превышения двойки для коэффициентов преобразования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух; и
кодирования оставшегося значения уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
23. Устройство по п. 22, в котором видеокодер дополнительно выполнен с возможностью кодирования флага превышения двойки для первых N коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем N меньше максимального количества коэффициентов преобразования в упомянутом фрагменте, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
24. Устройство по п. 23, в котором значение N равно 1.
25. Устройство по п. 22, в котором оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, имеющем кодированный флаг карты значимости, но для которого флаг превышения единицы не кодируется.
26. Устройство по п. 25, в котором видеокодер дополнительно выполнен с возможностью:
кодирования флага знака для коэффициентов преобразования в упомянутом фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
27. Устройство по п. 26, в котором флаг карты значимости, флаг превышения единицы и флаг превышения двойки кодируются с использованием контекстно-адаптивного двоичного арифметического кодирования (CABAC) с адаптивной контекстной моделью, и при этом оставшееся значение уровня кодируется в режиме обхода CABAC, и при этом флаг знака кодируется в режиме обхода CABAC.
28. Устройство по п. 27, в котором видеокодер дополнительно выполнен с возможностью:
кодирования оставшегося значения уровня с использованием параметра Голомба, и при этом параметр Голомба определяется на основании по меньшей мере одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, режима предсказания, типа цветового компонента и статистики коэффициентов соседних фрагментов коэффициентов преобразования.
29. Устройство по п. 26, в котором видеокодер дополнительно выполнен с возможностью кодирования флага карты значимости в первую очередь, флага превышения единицы во вторую очередь, флага превышения двойки в третью очередь и оставшегося значения уровня после флага превышения двойки.
30. Устройство по п. 29, в котором видеокодер дополнительно выполнен с возможностью кодирования каждого из флага карты значимости, флага превышения единицы, флага превышения двойки и оставшегося значения уровня для коэффициентов преобразования в упомянутом фрагменте согласно обратному порядку сканирования.
31. Устройство по п. 30, в котором обратный порядок сканирования является обратным диагональным порядком сканирования.
32. Устройство по п. 22, в котором фрагмент представляет собой подблок единицы преобразования.
33. Устройство по п. 22, в котором фрагмент представляет собой подблок из 16 коэффициентов преобразования единицы преобразования.
34. Устройство по п. 22, в котором фрагмент представляет собой единицу преобразования.
35. Устройство по п. 22, в котором фрагмент представляет собой некоторое количество последовательных коэффициентов преобразования в обратном порядке сканирования в единице преобразования.
36. Устройство по п. 35, в котором обратный порядок сканирования является обратным диагональным порядком сканирования.
37. Устройство по п. 22, в котором значение M1 равно 8.
38. Устройство по п. 22, в котором значение M1 определяется на основании по меньшей мере одного из параметра квантования, размера единицы преобразования, глубины единицы преобразования, типа цветового компонента, позиции упомянутого фрагмента в единице преобразования, присутствия последнего значимого коэффициента в упомянутом фрагменте и статистики коэффициентов соседнего фрагмента.
39. Устройство по п. 22, в котором видеокодер является видеокодером, причем видеокодер дополнительно выполнен с возможностью:
кодирования пиксельных данных для формирования остаточных видеоданных;
преобразования остаточных видеоданных для формирования упомянутого фрагмента коэффициентов преобразования; и
сигнализации кодированного флага карты значимости, кодированного флага превышения единицы и кодированного флага превышения двойки в битовом потоке кодированного видео.
40. Устройство по п. 22, в котором видеокодер дополнительно выполнен с возможностью:
сигнализации значения M1 в битовом потоке кодированного видео.
41. Устройство по п. 40, в котором значение M1 сигнализируется в по меньшей мере одном из набора параметров последовательности, набора параметров изображения, набора параметров адаптации и заголовка слайса.
42. Устройство по п. 22, в котором видеокодер является видеодекодером, причем видеодекодер дополнительно выполнен с возможностью:
приема флага карты значимости, флага превышения единицы и флага превышения двойки в битовом потоке кодированного видео;
обратного преобразования упомянутого фрагмента коэффициентов преобразования для формирования остаточных видеоданных; и
декодирования остаточных видеоданных для формирования пиксельных данных.
43. Устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, причем устройство содержит:
средство для кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
средство для кодирования флага превышения единицы для первых M1 коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования в упомянутом фрагменте; и
средство для кодирования флага превышения двойки для коэффициентов преобразования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух; и
средство для кодирования оставшегося значения уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
44. Компьютерно-читаемый запоминающий носитель, хранящий инструкции, которые, при выполнении, предписывают одному или более процессорам устройства, выполненного с возможностью кодирования видеоданных:
кодировать флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
кодировать флаг превышения единицы для первых M1 коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы, причем M1 меньше максимального количества коэффициентов преобразования в упомянутом фрагменте;
кодировать флаг превышения двойки для коэффициентов преобразования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеют ли или нет конкретные коэффициенты преобразования абсолютное значение, большее двух; и
кодировать оставшееся значение уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициента преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус один для коэффициентов преобразования в упомянутом фрагменте, которые не равны нулю, но не имеют кодированного флага превышения единицы.
45. Способ кодирования коэффициентов преобразования в процессе кодирования видео, причем способ содержит этапы, на которых:
кодируют флаг карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
кодируют флаг превышения единицы для коэффициентов преобразования в упомянутом фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы; и
кодируют флаг превышения двойки для первых N коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, и при этом N меньше максимального количества коэффициентов преобразования в упомянутом фрагменте; и
кодируют оставшееся значение уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
46. Способ по п. 45, дополнительно содержащий этап, на котором:
кодируют флаг знака для коэффициентов преобразования в упомянутом фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
47. Способ по п. 45, в котором значение N равно 1.
48. Устройство, выполненное с возможностью кодирования коэффициентов преобразования в процессе кодирования видео, причем устройство содержит:
видеокодер, выполненный с возможностью:
кодирования флага карты значимости для коэффициентов преобразования во фрагменте коэффициентов преобразования, причем флаг карты значимости указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее нуля;
кодирования флага превышения единицы для коэффициентов преобразования в упомянутом фрагменте коэффициентов преобразования, указанных флагом карты значимости как имеющие абсолютное значение, большее нуля, причем флаг превышения единицы указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее единицы; и
кодирования флага превышения двойки для первых N коэффициентов преобразования в обратном порядке сканирования в упомянутом фрагменте, указанных флагом превышения единицы как имеющие абсолютное значение, большее единицы, причем флаг превышения двойки указывает, имеет ли или нет конкретный коэффициент преобразования абсолютное значение, большее двух, и при этом N меньше максимального количества коэффициентов преобразования в упомянутом фрагменте; и
кодирования оставшегося значения уровня для коэффициентов преобразования в упомянутом фрагменте,
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус три для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения двойки, кодированный значением 1, и
причем оставшееся значение уровня представляет абсолютное значение соответствующего коэффициента минус два для коэффициентов преобразования в упомянутом фрагменте, имеющем флаг превышения единицы, кодированный значением 1, но флаг превышения двойки не кодируется.
49. Устройство по п. 48, в котором видеокодер дополнительно выполнен с возможностью:
кодирования флага знака для коэффициентов преобразования в упомянутом фрагменте, причем флаг знака указывает знак конкретного коэффициента преобразования.
50. Устройство по п. 48, в котором значение N равно 1.
B | |||
BROSS et al | |||
Кипятильник для воды | 1921 |
|
SU5A1 |
Способ обработки медных солей нафтеновых кислот | 1923 |
|
SU30A1 |
Колосоуборка | 1923 |
|
SU2009A1 |
Способ приготовления лака | 1924 |
|
SU2011A1 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
ЭФФЕКТИВНОЕ КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ БЛОКОВ ПРЕОБРАЗОВАНИЯ | 2006 |
|
RU2417518C2 |
Авторы
Даты
2017-03-01—Публикация
2012-12-11—Подача