КОДИРОВАНИЕ ПАРАМЕТРА КВАНТОВАНИЯ (QP) ПРИ КОДИРОВАНИИ ВИДЕО
QUANTIZATION PARAMETER (QP) ENCODING WHEN ENCODING VIDEO

[0001] Эта заявка испрашивает приоритет по:
патентной заявке США № 61/639,015, поданной 26 апреля, 2012; патентной заявке США № 61/643,821, поданной 7 мая, 2012; и патентной заявке США № 61/656,953, поданной 7 июня, 2012, все содержимое каждой из которых включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Это раскрытие относится к кодированию видео, и более конкретно к способам кодирования параметра квантования.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, в том числе цифровые телевизоры, системы цифрового прямого широковещания, беспроводные широковещательные системы, персональные цифровые помощники (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, проигрыватели цифровых медиаданных, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, устройства видеоконференции и тому подобные. Устройства цифрового видео реализуют способы сжатия видео, такие как описанные в стандартах, заданных посредством MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Улучшенного кодирования видео (AVC), находящегося в настоящее время в разработке стандарта Высокоэффективного кодирования видео (HEVC), и расширениях этих стандартов, для более эффективной передачи, приема и хранения цифровой видеоинформации.
[0004] Способы сжатия видео включают в себя пространственное предсказание и/или временное предсказание для снижения или удаления избыточности, свойственной видеопоследовательностям. Для блочного кодирования видео, видеокадр или слайс (вырезка) могут быть разделены на блоки. Видеокодер, в качестве альтернативы, может называться изображением. Каждый блок может быть дополнительно разделен. Блоки в кодированном посредством внутреннего кодирования (I) кадре или слайсе кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в том же кадре или слайсе. Блоки в кодированном посредством внутреннего кодирования (P или B) кадре или слайсе могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в том же кадре или слайсе, или временное предсказание по отношению к опорным выборкам в других опорных кадрах. Пространственное или временное предсказание дают в результате предсказательный блок для блока, который должен быть кодирован. Остаточные данные представляют собой разности пикселей между первоначальным блоком, который должен быть кодирован, т.е. кодированным блоком, и предсказательным блоком.
Кодированный посредством внешнего кодирования блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующих предсказательный блок, и остаточным данным, указывающим разность между кодированным блоком и предсказательным блоком. Кодированный посредством внутреннего кодирования блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, давая в результате остаточные коэффициенты преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, изначально размещенные в двумерном массиве, могут быть просканированы в конкретном порядке, чтобы произвести одномерный вектор коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В общем, это раскрытие описывает способы кодирования видеоданных. В частности, это раскрытие описывает способы кодирования значений дельта-параметра квантования и идентификации режимов кодирования без потерь, для того, чтобы избежать потенциальных рассогласований кодера/декодера.
[0007] В одном примере, это раскрытие описывает способ декодирования видео, содержащий этапы, на которых принимают значение дельта-параметра квантования (dQP) для текущего квантуемого блока видеоданных, при этом значение dQP принимается независимо от того, есть ли ненулевые коэффициенты преобразования текущем квантуемом блоке или нет, определяют значение параметра квантования (QP) для текущего квантуемого блока на основе принятого значения dQP и предиктора QP, и декодируют текущий квантуемый блок с использованием определенного значения QP.
[0008] В другом примере, способ декодирования видео содержит этап, на котором принимают значение dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предполагают, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0009] В другом примере, это раскрытие описывает способ кодирования видео, содержащий этапы, на которых определяют значение QP для текущего квантуемого блока видеоданных, определяют значение dQP для текущего квантуемого блока на основе QP и предиктора QP, генерируют значение dQP, при этом значение dQP сигнализируется независимо от того, есть ли ненулевые коэффициенты преобразования в текущем квантуемом блоке или нет, и кодируют текущий квантуемый блок с использованием определенного значения QP.
[0010] В другом примере, способ кодирования видео содержит этап, на котором генерируют значение dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предполагают, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0011] Это раскрытие также описывает видеокодер, видеодекодер, аппараты, устройства и компьютерно-читаемые носители, хранящие инструкции, которые могут быть сконфигурированы с возможностью выполнения способов сигнализирования коэффициентов преобразования, описанных в настоящем документе.
[0012] Подробности одного или более примеров изложены на прилагающихся чертежах и в описании ниже. Другие признаки, цели и преимущества будут понятны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0013] Фиг. 1 является блок-схемой, иллюстрирующей пример системы кодирования и декодирования видео.
[0014] Фиг. 2 является концептуальной схемой, иллюстрирующей пример группы квантования.
[0015] Фиг. 3 является концептуальной схемой, иллюстрирующей пример способа предсказания параметра квантования.
[0016] Фиг. 4 является концептуальной схемой, иллюстрирующей пример сигнализации дельта-параметра квантования, когда предиктор параметра квантования равен нулю.
[0017] Фиг. 5 является концептуальной схемой, иллюстрирующей пример сигнализации дельта-параметра квантования, когда предиктор параметра квантования кодируется в режиме кодирования без потерь.
[0018] Фиг. 6 является блок-схемой, иллюстрирующей пример видеокодера.
[0019] Фиг. 7 является блок-схемой, иллюстрирующей пример видеодекодера.
[0020] Фиг. 8 является схемой последовательности операций, показывающей пример способа кодирования видео согласно способам этого раскрытия.
[0021] Фиг. 9 является схемой последовательности операций, показывающей пример способа декодирования видео согласно способам этого раскрытия.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0022] В общем, это раскрытие описывает способы кодирования видеоданных. В частности, это раскрытие описывает способы кодирования параметра квантования (QP) в процессе кодирования и/или декодирования видео.
[0023] В соответствии с некоторыми предложениями для стандарта HEVC, видеоблок может содержать наибольшую единицу кодирования (LCU), которая сама может быть подразделена на меньшие единицы кодирования (CU) согласно схеме разделения дерева квадрантов и возможно дополнительно разделена на единицы предсказания (PU) в целях оценки движения и компенсации движения. Это раскрытие описывает способы кодирования изменений (т.е. дельт) в параметре квантования (т.е. дельта-QP или dQP) для LCU, CU или группы квантования (или некоторого другого блока или группы блоков с достаточно большим размером, чтобы поддерживались изменения квантования). В этом случае, дельта-QP может задать изменение в QP для группы квантования относительно предсказанного значения QP для LCU. Например, предсказанным значением QP для LCU может просто быть QP предыдущей группы квантования (т.е. ранее кодированный в битовом потоке). В качестве альтернативы, предсказанное значение QP может быть определено на основе правил. Например, правила могут идентифицировать одно или более других значений QP других групп квантования, или среднее значение QP, которое должно быть использовано.
[0024] Текущие способы сигнализирования dQP в стандарте HEVC представляют определенные проблемы, когда используются совместно с сигнализацией и осуществлением анализа режимов кодирования без потерь. Как будет рассмотрено более подробно ниже, в определенных ситуациях, может возникнуть рассогласование кодера/декодера, особенно когда используется кодирование без потерь. В этой связи, это раскрытие представляет способы кодирования dQP и кодирования в режиме кодирования без потерь, чтобы избежать таких рассогласований кодера/декодера.
[0025] Фиг. 1 является блок-схемой, иллюстрирующей пример системы 10 кодирования и декодирования видео, которая может быть сконфигурирована с возможностью использования способов кодирования QP в соответствии с примерами этого раскрытия. Как показано на Фиг. 1, система 10 включает в себя устройство-источник 12, который передает кодированное видео на устройство-адресат 14 через канал 16 связи. Кодированные видеоданные могут также быть сохранены на носитель 34 информации или файл-сервер 36, и если потребуется к ним может быть осуществлен доступ устройством-адресатом 14. При сохранении на носитель 34 информации или файл-сервер 36, видеокодер 20 может предоставить кодированные видеоданные другому устройству, такому как сетевой интерфейс, компакт-диск (CD), устройство для записи Blu-ray или цифрового видеодиска (DVD), или штамповочное устройство, или другим устройствам, для сохранения видеоданных на носитель информации. Аналогично, устройство, отдельное от видеодекодера 30, такое как сетевой интерфейс, устройство считывания CD или DVD, или подобные, может извлечь кодированные видеоданные из носителя информации и предоставить извлеченные данные видеодекодеру 30.
[0026] Устройство-источник 12 и устройство-адресат 14 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, компьютеры типа ноутбук (т.е. переносные компьютеры), планшетные компьютеры, телеприставки, телефонные трубки, такие как так называемые "интеллектуальные" телефоны, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, игровые видеоконсоли или подобные. Во многих случаях, такие устройства могут быть оборудованы для беспроводной связи. Поэтому, канал 16 связи может содержать беспроводной канал, проводной канал, или комбинацию беспроводного и проводного каналов, подходящую для передачи кодированных видеоданных. Аналогичным образом, к файл-серверу 36 может быть осуществлен доступ устройством-адресатом 14 посредством соединения передачи данных любого стандарта, включающего в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение по Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или их комбинацию, которая подходит для осуществления доступа к кодированным видеоданным, хранящимся на файл-сервере.
[0027] Способы кодирования QP, в соответствии с примерами этого раскрытия, могут быть применены к кодированию видео при поддержке любого из разнообразия применений мультимедийных средств, таких как телевизионные трансляции по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или других применений. В некоторых примерах, система 10 может быть сконфигурирована с возможностью поддержки односторонней или двухсторонней передачи видео для поддержки применений, таких как потоковая передача видео, проигрывание видео, трансляция видео и/или видеотелефония.
[0028] В примере по Фиг. 1, устройство-источник 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12, видеоисточник 18 может включать в себя источник, такой как устройство захвата видео, например, видеокамеру, видеоархив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от поставщика видеоконтента, и/или компьютерную графическую систему для генерирования данных компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если видеоисточником 18 является видеокамера, устройство-источник 12 и устройство-адресат 14 могут образовать так называемые камерафоны или видеотелефоны, которые могут быть обеспечены, например, внутри интеллектуальных телефонов или планшетных компьютеров. Однако способы, описанные в этом раскрытии, могут в общем быть применимы к кодированию видео, и могут быть применены для беспроводных и/или проводных применений, или применения, при котором кодированные видеоданные хранятся на локальном диске.
[0029] Захваченное, предварительно захваченное, или сгенерированное компьютером видео может быть кодировано видеокодером 20. Кодированная видеоинформация может быть модулирована посредством модема 22 согласно стандарту связи, такому как протокол проводной или беспроводной связи, и передана на устройство-адресат 14 посредством передатчика 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, спроектированные для модуляции сигнала. Передатчик 24 может включать в себя схемы, спроектированные для передачи данных, включающие в себя усилители, фильтры, и, в случае беспроводной связи, одну или более антенн.
[0030] Захваченное, предварительно захваченное, или сгенерированное компьютером видео, которое кодировано видеокодером 20, может также быть сохранено на носитель 34 информации или файл-сервер 36 для дальнейшего использования. Носитель 34 информации может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память или любые другие подходящие цифровые носители данных для хранения кодированного видео. К кодированному видео, хранящемуся на носителе 34 информации, может быть затем осуществлен доступ посредством устройства-адресата 14 для декодирования и проигрывания. Хотя на Фиг. 1 не показано, в некоторых примерах, носитель 34 информации и/или файл-сервер 36 могут хранить выход передатчика 24.
[0031] Файл-сервер 36 может быть любым типом сервера, способным хранить кодированное видео и передавать это кодированное видео на устройство-адресат 14. Примерные файловые серверы включают в себя веб-серверы (например, для веб-сайта), FTP-серверы, устройства подключаемых к сети хранилищ (NAS), локальные дисковые накопители или любой другой тип устройства, способного хранить кодированные видеоданные и передавать их на устройство-адресат. Передача кодированных видеоданных из файл-сервера 36 может быть потоковой передачей, передачей на загрузку или их комбинацией. К файл-серверу 36 может быть осуществлен доступ устройством-адресатом 14 посредством соединения передачи данных любого стандарта, включающего в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение по Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.д.), или их комбинацию, которая подходит для осуществления доступа к кодированным видеоданным, хранящимся на файл-сервере.
[0032] Устройство-адресат 14, в примере по Фиг. 1, включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. Приемник 26 устройства-адресата 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию, чтобы произвести демодулированный битовый поток для видеодекодера 30. Информация, пересылаемая по каналу 16, может включать в себя разнообразие синтаксической информации, сгенерированной видеокодером 20 для использования видеодекодером 30 при декодировании видеоданных. Такой синтаксис может также быть включен с кодированными видеоданными, хранящимися на носителе 34 информации или файл-сервере 36. Каждый из видеокодера 20 и видеодекодера 30 может образовать часть соответствующего кодера-декодера (кодека), который способен кодировать или декодировать видеоданные.
[0033] Устройство 32 отображения может быть интегрировано с устройством-адресатом 14 или может быть внешним по отношению к нему. В некоторых примерах, устройство-адресат 14 может включать в себя интегрированное устройство отображения и может также быть сконфигурировано с возможностью взаимодействия с внешним устройством отображения. В других примерах, устройством-адресатом 14 может быть устройство отображения. В общем, устройство 32 отображения отображает декодированные видеоданные пользователю, и может содержать любое из разнообразия устройств отображения, таких как жидко-кристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0034] В примере по Фиг. 1, канал 16 связи может содержать любую среду беспроводной или проводной связи, такую как радиочастотный (РЧ) спектр или одна или более физических линий передачи, или любую комбинацию беспроводных или проводных сред. Канал 16 связи может образовывать часть пакетной сети, такой как локальная сеть, территориальная сеть или глобальная сеть, такая как Интернет. Канал 16 связи в общем представляет собой любую подходящую среду связи, или набор разных сред связи, для передачи видеоданных от устройства-источника 12 к устройству-адресату 14, включающую в себя любую подходящую комбинацию проводных и беспроводных средств. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным, чтобы способствовать связи от устройства-источника 12 к устройству-адресату 14.
[0035] Видеодекодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как стандарт Высокоэффективного кодирования видео (HEVC), в настоящий момент в разработке, посредством Объединенной команды по кодированию видео (JCT-VC) Экспертной группы по кодированию видео (VCEG) ITU-T и Экспертной группы по кинематографии (MPEG) ISO/IEC. Один черновой проект стандарта HEVC, названный "HEVC Working Draft 7" или "WD7", описан в документе JCTVC-I1003, Brass et al., "High efficiency video coding (HEVC) Text Specification Draft 7", Объединенной команды по кодированию видео (JCT-VC) ITU-T SGI6 WP3 и ISO/IEC JTC1/SC29/WG11, 9ая встреча: Женева, Швейцария, 27 апреля 2012 по 7 мая 2012, который, по состоянию на 25 апреля 2013, можно загрузить по адресу http://phenix.it-sudparis.cu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v3.zip, все содержимое которого включено в настоящий документ посредством ссылки.
[0036] Самый последний черновой проект стандарта HEVC, названный "HEVC Working Draft 10" или "WD10", описан в документе JCTVC-L1003v34, Brass et al., "High efficiency video coding (HEVC) text specification draft 10", Объединенной команды по кодированию видео (JCT-VC) ITU-T SGI6 WP3 и ISO/IEC JTC1/SC29/WG11, 12ая встреча: Женева, CH, 14-23 января 2013, который, по состоянию на 25 апреля 2013, можно загрузить по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/12 Geneva/wg11/JCTVC-L1003-v34.zip. Все содержимое HEVC WD10 настоящим включено в настоящий документ посредством ссылки.
[0037] Хотя не показано на фиг. 1, в некоторых аспектах, каждый из видеокодера 20 и видеодекодера 30 может быть интегрирован с аудиокодером или аудиодекодером, и может включать в себя соответствующие блоки MUX-DEMUX, или другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0038] Каждый из видеокодера 20 и видеодекодера 30 может быть реализован в виде любой из разнообразия подходящих компоновок схем кодера, таких как один или более микропроцессоров, процессоров цифровой обработки сигналов (DSP), специализированных интегральных микросхем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, программно-аппаратных средств, или любой их комбинации. Когда способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем постоянном компьютерно-читаемом носителе и может исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения способов этого раскрытия. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0039] Видеокодер 20 может реализовать любой или все из способов этого раскрытия для кодирования QP в процессе кодирования видео. Аналогично, видеодекодер 30 может реализовать любой или все из этих способов для кодирования QP в процессе кодирования видео. Видеокодер, который описан в этом раскрытии, может относиться к видеокодеру или видеодекодеру. Аналогичным образом, блок кодирования видео может относиться к видеокодеру или видеодекодеру. Аналогично, кодирование видео может относиться к кодированию видео или декодированию видео.
[0040] В одном примере настоящего раскрытия, как будет разъяснено более подробно ниже, видеокодер 20 может быть сконфигурирован с возможностью определения значения параметра квантования (QP) для текущего квантуемого блока, определения значения дельта-параметра квантования (dQP) для текущего квантуемого блока видеоданных на основе QP и предиктора QP, сигнализирования значения dQP, при этом значение dQP сигнализируется независимо от того, есть ли в текущем квантуемом блоке ненулевые коэффициенты преобразования или нет, и кодирования текущего квантуемого блока с использованием определенного значения QP.
[0041] В другом примере, видеокодер 20 может быть сконфигурирован с возможностью сигнализирования значения dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0042] Аналогично, видеодекодер 30 может быть сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных, при этом значение dQP принимается независимо от того, есть ли в текущем квантуемом блоке ненулевые коэффициенты преобразования или нет, определения значения QP для текущего квантуемого блока на основе принятого значения dQP и предиктора QP, и декодирования текущего квантуемого блока с использованием определенного значения QP.
[0043] В другом примере, видеодекодер 30 может быть сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0044] Цифровые видеоустройства реализуют способы сжатия видео для более эффективного кодирования и декодирования цифровой видеоинформации. Сжатие видео может применять способы пространственного (внутрикадрового) предсказания и/или временного (межкадрового) предсказания для уменьшения или удаления избыточности, свойственной видеопоследовательностям.
[0045] JCT-VC работает над разработкой стандарта HEVC, например, который описан в HEVC WD10, рассмотренном выше. Усилия стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой Тестовой моделью HEVC (HM). HM предполагает несколько дополнительных способностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 предоставляет девять режимов кодирования с внутренним предсказанием, HM может предоставить до тридцати трех режимов кодирования с внутренним предсказанием. Нижеследующий раздел рассмотрит определенные аспекты HM более подробно.
[0046] Для кодирования видео согласно стандарту HEVC, в текущий момент в разработке, видеокадр может разделен на единицы кодирования. Единица кодирования (CU) в общем относится к области изображения, которая служит в качестве базовой единицы, к которой различные инструменты кодирования применяются для сжатия видео. CU обычно имеет компонент яркости, обозначенный как Y, и два компонента цветности, обозначенных как U и V. В зависимости от формата сэмплирования видео, размер компонентов U и V, в том, что касается числа выборок, может быть таким же как размер компонента Y или отличным от него.
[0047] CU обычно квадратная и, может считаться, аналогичной так называемому макроблоку, например, используемому в других стандартах кодирования видео, таких как H.264 ITU-T. Кодирование согласно некоторым из предложенных в настоящий момент аспектам разработки стандарта HEVC будет описано в этой заявке в целях иллюстрации. Однако способы, описанные в этом раскрытии, могут быть полезны для других процессов кодирования видео, таких как процессы, заданные согласно H.264 или другому стандарту, или проприетарные процессы кодирования видео.
[0048] Согласно 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. В общем, "участок" может относиться к любому поднабору видеокадра.
[0049] LCU может быть ассоциирована со структурой данных дерева квадрантов. В общем, структура данных дерева квадрантов включает в себя один узел на каждую CU, где корневой узел соответствует LCU. Если CU разбита на четыре под-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из под-CU. Каждый узел структуры данных дерева квадрантов может предоставить синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий, разбита ли CU, соответствующая узлу, на под-CU. Синтаксические элементы для CU могут быть заданы рекурсивно и могут зависеть от того, разбита ли CU на под-CU. Если CU дополнительно не разбита, она называется концевой CU.
[0050] CU может включать в себя одну или более единиц предсказания (PU). В общем, PU представляет собой все или участок соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодирована во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четвертую пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, и/или список опорный список (например, список 0 или список 1) для вектора движения. Данные для CU, задающей PU, могут также описывать, например, разделение CU на одну или более PU. Режимы разделения могут отличаться в зависимости от того, является ли CU некодированной, кодированной в режиме внутреннего предсказания или кодированной в режиме внешнего предсказания. Для внутреннего кодирования, PU может быть обработана также как концевая единица преобразования, описанная ниже.
[0051] Появившийся стандарт HEVC обеспечивает возможность преобразований согласно единицам преобразования (TU), которые могут быть разными для разных CU. TU обычно имеют размер, основанный на размере PU внутри заданной CU, заданной для разделенной LCU, хотя это может быть не всегда так. TU обычно имеют одинаковый размер или меньший, чем PU. В некоторых примерах, остаточные выборки, соответствующие CU, могут быть подразделены на меньшие единицы с использованием структуры дерева квадрантов, известной как "остаточное дерево квадрантов" (RQT). Концевые узлы RQT могут называться единицами преобразования (TU). Значения разности пикселей, ассоциированные с TU, могут быть преобразованы, чтобы произвести коэффициенты преобразования, которые могут быть квантованы. TU включает в себя блок преобразования яркости и два блока преобразования цветности. В связи с этим, любой процесс кодирования, рассмотренный ниже, который применяется к TU, может быть, в действительности, применен к блокам преобразования яркости и цветности.
[0052] В общем, PU ссылается на данные, относящиеся к процессу предсказания. Например, когда PU кодирована во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU кодирована во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU.
[0053] В общем, TU используется для процессов преобразования и квантования. Заданная CU, имеющая одну или более PU, может также включать в себя одну или более единиц преобразования TU. Вслед за предсказанием, видеокодер 20 может вычислить остаточные значения из видеоблока, идентифицированного узлом кодирования, в соответствии с PU. Узел кодирования затем обновляется для ссылки на остаточные значения, а не первоначальный видеоблок. Остаточные значения содержат значения разностей пикселей, которые могут быть преобразованы в коэффициенты преобразования, квантованы и просканированы с использованием преобразований и другой информации преобразования, точно определенной в TU, чтобы произвести последовательные коэффициенты преобразования для энтропийного кодирования. Узел кодирования может быть еще раз обновлен для ссылки на эти последовательные коэффициенты преобразования. Это раскрытие обычно использует термин "видеоблок" для ссылки на узел кодирования CU. В некоторых конкретных случаях, это раскрытие может также использовать термин "видеоблок" для ссылки на древовидный блок, т.е. LCU, или CU, которая включает в себя узел кодирования PU и TU.
[0054] Видеопоследовательность обычно включает в себя ряд видеокадров или изображений. Группа изображений (GOP) в основном содержит ряд из одной или более видеоизображений. GOP может включать синтаксические данные в заголовок GOP, заголовок одного или более изображений, или куда-либо еще, которые описывают число изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно осуществляет функционирование в отношении видеоблоков внутри отдельных слайсов видео для того, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования внутри CU. Видеоблоки могут иметь фиксированные или переменные размеры, и могут отличаться по размеру согласно точно определенному стандарту кодирования.
[0055] Чтобы кодировать блок (например, единицу предсказания видеоданных), сначала получают предиктор для блока. Предсказатель, также называемый предсказательным блоком, может быть получен либо посредством внутреннего (I) предсказания (т.е. пространственного предсказания) или внешнего (P или B) предсказания (т.е. временного предсказания). Поэтому, некоторые единицы предсказания могут быть кодированы посредством внутреннего кодирования (I) с использованием пространственного предсказания по отношению к опорным выборкам в соседних опорных блоках в одном и том же кадре (или слайсе), и другие единицы предсказания могут быть кодированы посредством внешнего кодирования с однонаправленным предсказанием (P) или кодированы посредством внешнего кодирования с двунаправленным предсказанием (B) по отношению к блокам опорных выборок в других ранее кодированных кадрах (или слайсах). В каждом случае, опорные выборки могут быть использованы для образования предсказательного блока для блока, который должен быть кодирован.
[0056] После идентификации предсказательного блока, определяется разность между пикселями в первоначальном блоке видеоданных и пикселями в его предсказательном блоке. Эта разность может называться остаточными данными предсказания и указывает разности пикселей между значениями пикселей в блоке, который должен быть кодирован, и значениями пикселей в предсказательном блоке, выбранном для представления кодированного блока. Для достижения лучшего сжатия, остаточные данные предсказания могут быть преобразованы, например, с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лоэва (K-L) или другого преобразования, чтобы произвести коэффициенты преобразования.
[0057] Остаточные данные в блоке преобразования, таком как TU, могут быть размещены в двухмерном массиве (2D) массиве значений разности пикселей, находящихся в пространственной, пиксельной области.
Преобразование преобразовывает остаточные значения пикселей в двухмерный массив коэффициентов преобразования в области преобразования, такой как частотная область.
[0058] Квантование может быть применено к коэффициентам преобразования, и в общем предусматривает процесс, который ограничивает число битов, ассоциированных с любым заданным коэффициентом преобразования. Более конкретно, квантование может быть применено согласно параметру квантования (QP). Вместо передачи самого QP, изменение (т.е. дельта) в QP может быть сигнализировано с LCU. Дельта-QP задает изменение в параметре квантования для LCU относительно предсказанного значения для QP для LCU, такого как QP ранее пересланной CU или QP, заданной предыдущими QP и/или одним или более правилами. Это раскрытие касается генерирования и сигнализации дельта-QP внутри кодированного битового потока, способом, который может улучшить качество (и возможно сжатие) в стандарте HEVC.
[0059] Для дополнительного сжатия, коэффициенты преобразования могут быть квантованы до энтропийного кодирования. Энтропийный кодер затем применяет энтропийное кодирование, такое как контекстно-адаптированное кодирование с переменной длиной кодового слова (CAVLC), контекстно-зависимое адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разбиением по вероятностному интервалу (PIPE) или подобное, к квантованным коэффициентам преобразования. В некоторых примерах, видеокодер 20 может использовать предварительно заданный порядок сканирования для сканирования квантованных коэффициентов преобразования, чтобы произвести последовательный вектор, который может быть энтропийно кодирован. В других примерах, видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для образования одномерного вектора, видеокодер 20 может энтропийно кодировать одномерный вектор, видеокодер 20 может также энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.
[0060] Как рассмотрено выше, дельта-QP (также отмеченная как dQP) может быть сигнализирован в кодированном видеопотоке, чтобы кодировать QP для блока видеоданных. Дельта-QP задает разницу между текущим QP (т.е. фактическим QP, используемым для текущего блока) и предиктором текущего QP (предиктором QP). На основе сигнализированного dQP, соответствующее текущее значение QP может быть реконструировано посредством прибавления dQP к значению предиктора QP. То есть, на видеокодере 20, dQP вычисляется посредством вычитания предиктора QP из действительного QP текущего блока: dQP=текущий QP - предиктор QP.
На видеодекодере 30, фактический QP текущего блока реконструируется посредством прибавления принятого dQP к предиктору QP: текущий QP=dQP+предиктор QP. В некоторых примерах, предиктор QP задан как среднее значений фактического QP для блока сверху и блока слева от текущего блока.
[0061] Согласно предложениям для HEVC и HM, для сигнализации dQP задается группа квантования (QG). QG является минимальным размером блока, куда сигнализируется dQP. QG может состоять из одиночной CU или многочисленных CU. Во многих случаях, QG может быть меньше, чем один или более возможных размеров CU. Например, QG может быть задана и/или сигнализирована с размером 16×16 пикселей. В этом примере, будет возможно иметь CU с размером 32×32 или 64×64.
[0062] В различных примерах, размер QG сигнализируется в наборе параметров изображения (PPS). Однако размер QG может быть сигнализирован на других уровнях битового потока, включая заголовок слайса, набор параметров адаптации (APS), набор параметров последовательности (SPS), и подобные. Если CU имеет размер, равный или больше, чем размер QG, dQP может быть сигнализирован для такой CU. Однако для CU, которые меньше, чем размер QG, сигнализируется общий dQP и распределяется среди всех CU внутри QG. В некоторых примерах, предложенных для HEVC, сигнализация dQP для определенного блока (CU или QG) также зависит от того, если ли в блоке ненулевые коэффициенты. dQP сигнализируется в блоке после (и иногда только после) того, как видеокодер 20 определит, что есть ненулевые коэффициенты, кодированные в том же блоке.
[0063] Фиг. 2 показывает пример QG 16×16, которая включает в себя 7 CU (CU0-CU6). CU0-CU2 являются CU 8×8, тогда как CU3-CU6 являются CU 4×4. В примере по Фиг. 2, затененная CU5 включает в себя по меньшей мере ненулевой коэффициент. В этой связи, видеокодер 20 сигнализирует один dQP для всей QG 102, и видеодекодер 30 будет применять сигнализированный dQP для использования при декодировании каждой из CU0-CU6. Если ни одна CU в QG 102 не включает в себя ненулевой коэффициент, dQP не будет сигнализирован для этой QG. В текущих предложениях для HEVC, сигнализируется ли dQP для определенного блока (например, CU), зависит от размера QG. Если размер QG в примере по Фиг. 2 был 8×8, dQP не будет сигнализирован для CU0-CU2, так как они не включают в себя ненулевые коэффициенты. Однако один dQP будет сигнализирован для CU3-CU6 для совместного использования, так как каждая из этих CU находится внутри QG, которая содержит по меньшей мере один ненулевой коэффициент. Аналогично, если размер сигнализированной QG был 4×4, dQP не будет сигнализирован для любого блока, кроме CU5 (т.е. блока, имеющего ненулевые коэффициенты).
[0064] Другими словами, когда в QG есть многочисленные CU, dQP для QG не сигнализируется, пока CU с ненулевыми коэффициентами не будет размещаться внутри данной QG. Например, если есть четыре CU QG и ни одна из первых трех CU не имеет ненулевого коэффициента (также называемые как ненулевые CU в дальнейшем описании), кроме четвертой CU, dQP сигнализируется только в четвертой CU. В общем, первая ненулевая CU в QG может быть размещена в любом положении внутри QG. Например, первая ненулевая CU может быть первой CU, последней CU или любой другой CU в QG. В некоторых случаях, ненулевые CU могут не присутствовать в QG.
[0065] В дальнейшем описании, общий термин "квантуемый блок" используется для ссылки на CU, которая имеет размер, больший, чем сигнализированная QG, или равный ей, или для ссылки на QG, содержащую некоторое число CU. То есть, квантуемым блоком является QG, содержащая одну или более CU, или CU, которая больше, чем QG. Термин "нулевой блок" будет использован для указания блока (например, TU или блока преобразования, ассоциированного с CU), который не имеет ненулевых коэффициентов. Когда квантуемым блоком является QG, содержащая многочисленные CU, QG считается нулевым блоком, когда все CU внутри QG являются нулевыми блоками. dQP сигнализируется для каждого квантуемого блока, когда квантуемый блок содержит по меньшей мере один ненулевой коэффициент.
[0066] Когда dQP не сигнализируется для квантуемого блока, значение dQP предполагается равным нулю. В этой связи, на видеодекодере 30, значение QP для текущего блока будет равно значению предиктора QP (т.е. текущий QP=dQP+предиктор QP, где dQP предполагается равным нулю). Согласно текущим предложениям для HEVC и HM, предиктор QP задан как среднее значений QP для квантуемого блока слева и квантуемого блока сверху, как показано на Фиг. 3 (т.е. показывая предсказание QP для текущего квантуемого блока с использованием квантуемых блоков слева и сверху). Предиктор QP может быть задан разными способами в других примерах. Например, предиктор QP может также быть задан как значение QP из квантуемого блока слева, задан как значение QP ранее кодированного квантуемого блока в потоке или задан другими способами.
[0067] В текущих предложениях для HEVC, режим кодирования без потерь задается для кодирования блока (например, одной или более CU). Согласно этому режиму кодирования без потерь, некоторые операции кодирования, такие как преобразование, квантование и фильтрация контурным фильтром, пропускаются. В текущих предложениях для HEVC, режим кодирования без потерь может быть указан видеокодером 20 посредством использования значения QP, равного нулю, для блока, кодированного посредством режима кодирования без потерь. Так, если конкретный квантуемый блок кодируется в режиме кодирования без потерь, значение QP для этого квантуемого блока должно быть задано в значение ноль и сигнализировано декодеру. В этом случае, сигнализация значения QP достигается посредством отправки dQP со значением, равным отрицательному значению предиктора QP, т.е. dQP=фактический QP (ноль в этом случае) - предиктор QP.
[0068] Определенные проблемы могут возникнуть при использовании сигнализации dQP для квантуемого блока совместно с режимом кодирования без потерь, указанным значением QP равным нулю. Такие проблемы могут привести к рассогласованию кодера/декодера, и потенциально, сбою декодера.
[0069] Чтобы разъяснить первую проблему, предположим, что предиктор QP, полученный для текущего квантуемого блока, равен нулю. Например, как квантуемый блок слева, так и квантуемый блок сверху кодируются в режиме кодирования без потерь, и таким образом каждый из QP равен нулю. Предиктор QP может также равняться нулю в случае, когда один из квантуемых блоков слева или сверху кодируется в режиме кодирования без потерь, и другой квантуемый блок имеет QP, равный 1. Предиктор QP, в этом случае, является средним двух блоков, т.е. 0,5, и округлен с уменьшением до нуля. Также предположим, что текущий квантуемый блок обычно (т.е. не без потерь) кодируется с использованием ненулевого значения QP. В этой связи, для текущего квантуемого блока применяются преобразование, квантование и все процессы фильтрации контурным фильтром.
[0070] В этом случае, если квантуемый блок является ненулевым блоком (т.е. не имеет ненулевых коэффициентов), видеокодер 20 не будет сигнализировать dQP видеодекодеру 30 для этого квантуемого блока. При такой ситуации возникает проблема. На видеокодере 20, этот примерный квантуемый блок кодируется с использованием ненулевого QP с использованием внутреннего или внешнего предсказания. Однако без сигнализации dQP, предполагаемое значение QP на стороне декодера имеет значение ноль. Это потому, что dQP не сигнализирован, и таким образом dQP предполагается равным нулю. В этой связи, текущим QP для квантуемого блока будет предиктор QP, как разъяснено выше. Однако так как в этом примере, предиктор QP также равен нулю, текущее значение QP для квантуемого блока будет также реконструировано, чтобы равняться нулю, что видеодекодер 30 будет интерпретировать как указание, что текущий квантуемый блок должен быть декодирован в режиме кодирования без потерь. В этой связи, видеодекодер 30 может попробовать реконструировать квантуемый блок с использованием режима кодирования без потерь, несмотря на то, что он был кодирован с использованием другого режима предсказания (например, внешнего или внутреннего предсказания). Такая ситуация приводит к рассогласованию кодера/декодера, что может вызвать низкое визуальное качество, или даже сбой декодера.
[0071] Вторая проблема возникает, когда предиктор QP для текущего квантуемого блока является ненулевым, но текущий квантуемый блок кодирован с помощью режима кодирования без потерь и не имеет остатка (т.е. в остатке нет ненулевых значений), и таким образом, dQP не передается. В результате, на видеодекодере 30, значение dQP будет предполагаться равным нулю, вместо приема значения dQP, равного -предиктор QP. В этой связи, видеодекодер 30 будет реконструировать значение QP квантуемый блок как 0 (предполагаемый dQP)+предиктор QP=предиктор QP. В этой связи, видеодекодер 30 будет реконструировать ненулевое фактическое значение QP, и таким образом будет неспособен идентифицировать режим кодирования без потерь для этого квантуемого блока.
[0072] Чтобы решить первую проблему, согласно первому примеру этого раскрытия, видеокодер 20 сконфигурирован с возможностью всегда сигнализировать dQP для каждого квантуемого блока независимо от того, является ли квантуемый блок нулевым блоком или нет. Например, dQP может всегда сигнализироваться для блока (например, CU), большего, чем QG, или в первую CU из QG. Таким образом, dQP не будет неверно предполагаться равным нулю, и будет предотвращено автоматическое предположение режима кодирования без потерь для квантуемого блока, когда dQP предполагается равным нулю, и предиктор QP также равняется нулю.
[0073] Согласно второму примеру настоящего раскрытия, для того, чтобы ограничить число случаев, когда dQP сигнализируется, видеокодер 20 сконфигурирован с возможностью сигнализации dQP для квантуемого блока в случае, когда предиктор QP для квантуемого блока равен нулю. Пример, когда предиктор QP для текущего квантуемого блока равен нулю, показан на Фиг. 4. В примере по Фиг. 4, предиктор QP для блока 104 равен нулю, так как QP как для блока сверху, так и для блока слева, равен нулю. Вследствие этого, согласно этому примеру настоящего раскрытия, dQP сигнализируется для квантуемого блока 104 независимо от того, является ли он нулевым блоком или нет. В противном случае, если предиктор QP является ненулевым для квантуемого блока 104, dQP не сигнализируется для квантуемого блока 104, если он является нулевым блоком.
[0074] В другом примере, независимо от того, является ли текущий квантуемый блок нулевым блоком или нет, dQP сигнализируется для квантуемого блока, если один из QP (например, QP квантуемого блока сверху или снизу), используемых для предсказания QP текущего квантуемого блока, равен нулю, или если разность между QP, используемыми для предсказания QP, меньше или больше, чем некоторый порог, при этом таким порогом может быть любое целое число. В противном случае, dQP не сигнализируется, если квантуемый блок является нулевым блоком. Конечно, dQP все равно сигнализируется, если квантуемый блок содержит ненулевые коэффициенты. Порог может быть фиксированным или сигнализированным в заголовке, например, в PPS, заголовке слайса или APS. В других примерах, порог может быть сигнализирован на уровнях LCU или CU.
[0075] В другом примере настоящего раскрытия, вместо указания режима кодирования без потерь для блока посредством использования нулевого QP, видеокодер 20 может быть сконфигурирован с возможностью кодирования отдельного флага или синтаксического элемента, чтобы указать, что блок кодирован с помощью режима кодирования без потерь. В одном примере, такой флаг может называться "флагом кодирования без потерь". При использовании флагов кодирования без потерь, все примеры сигнализирования dQP выше все равно применимы.
[0076] Например, в случае, когда текущий квантуемый блок является ненулевым блоком, dQP сигнализируется для квантуемого блока, если один (или все, в другом примере) их квантуемых блоков, используемых для предсказания QP (например, квантуемые блоки слева и сверху в вышеуказанных примерах), кодирован в режиме кодирования без потерь (т.е. флаг кодирования без потерь включен для квантуемого блока, используемого для предсказания QP). Однако если флаг кодирования без потерь используется для идентификации кодирования в режиме кодирования без потерь для квантуемого блока, задание QP в значение ноль для этого кодированного в без потерь квантуемого блока может не быть оптимальным вариантом, так как это значение QP будет использовано в дальнейшем для предсказания значений QP последующих квантуемых блоков. Один пример кодированных без потерь квантуемых блоков слева и сверху с ненулевым присвоенным QP, показан на Фиг. 5 (т.е. пример для ненулевого QP, присвоенного кодированным без потерь квантуемым блокам). Как показано на Фиг. 5, квантуемые блоки слева (QPleft) и сверху (QPabove) относительно текущего квантуемого блока 106 имеют ненулевой QP, но каждый кодируется в режиме кодирования без потерь (указано флагом кодирования без потерь =1).
[0077] Согласно другому примеру этого раскрытия, если квантуемый блок кодируется в режиме кодирования без потерь, который указывается флагом кодирования без потерь (например, QPleft и QPabove, как показано на Фиг. 5), значение QP, равное предиктору QP этого квантуемого блока, может быть как текущее для текущего QP для этого блока. Например, для QPabove на Фиг. 5, вместо использования значения QP, равного нулю, для блока, так как он кодирован без потерь, в качестве текущего QP может быть использован предиктор QP для QPabove (например, средние QP блоков слева и QPabove сверху). Таким образом, ненулевое значение QP может быть доступно для использования в качестве предиктора QP для последующих квантуемых блоков, таким образом избегая потенциального рассогласования кодера/декодера. В другом примере, значение QP кодированного без потерь квантуемого блока, указанного с использованием флага кодирования без потерь, может также быть задано равным QP слайса или любому другому предварительно заданному QP.
[0078] В описании выше, флаг кодирования без потерь был описан, как передаваемый на уровне квантуемого блока. В качестве другого примера настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью сигнализации флага кодирования без потерь для каждой CU внутри квантуемого блока. В этом случае, все способы, описанные выше, все равно применимы. Например, в случае, когда CU внутри квантуемого блока кодируется без потерь, сигнализация dQP может быть пропущена, и значение dQP предполагается равным нулю на видеодекодере 30. В этой связи, предиктор QP будет получен как QP для этой кодированной без потерь CU и использован для предсказания значений QP последовательных блоков. В этом случае, сигнализация dQP пропускается для кодированной без потерь CU независимо от того, если ли в CU ненулевой остаток или нет.
[0079] В другом примере этого раскрытия, флаг кодирования без потерь квантуемого блока может быть сигнализирован для квантуемого блока. Когда задан, например, в значение 1, флаг кодирования без потерь на уровне квантуемого блока указывает, что по меньшей мере одна CU внутри квантуемого блока кодирована без потерь. Если флаг кодирования без потерь на уровне квантуемого блока имеет значение, например, 1, то флаг кодирования CU без потерь сигнализируется для каждой CU внутри квантуемого блока, указывая, кодирована ли без потерь конкретная CU или нет. В противном случае, если флаг кодирования без потерь квантуемого блока равен 0 (т.е. в квантуемом блоке нет CU, кодированных без потерь), флаг кодирования CU без потерь не нужен для каждой CU внутри квантуемого блока.
[0080] В другом примере, эффективность сигнализации может быть дополнительно повышена при использовании флагов кодирования без потерь на двух уровнях (на основе квантуемого блока и на основе CU). Если флаг кодирования без потерь на уровне блока квантования включен (например, имеет значение 1), и достигнута последняя CU, и нет флагов кодирования без потерь на уровне CU, кодированных до последней CU для текущего квантуемого блока, то сигнализация флага кодирования CU без потерь для последней CU может быть пропущена. Это потому, что флаг кодирования без потерь квантуемого блока указывает, что есть по меньшей мере одна CU, кодированная без потерь, и вследствие этого, можно предположить, что последняя CU в этом примере должна быть кодирована без потерь. Однако если флаг кодирования без потерь для группы квантования отключен (например, имеет значение 0), означая, что внутри квантуемого блока нет CU, кодированных без потерь, то сигнализация флага кодирования без потерь на основе CU может быть опущена для текущего квантуемого блока.
[0081] Те же способы для кодирования флага кодирования без потерь и сигнализации удаления избыточности, в случае когда флаг кодирования без потерь может предполагаться как описано выше, могут быть применены в кадре, слайсе, LCU и/или другой заданной единице или уровнях процесса кодирования видео. Термин "флаг" может относиться к однобитовому синтаксическому элементу. В дополнение, вместо флага, может также быть использован многобитовый синтаксический элемент, синтаксический элемент с переменной длиной или другой тип структуры данных, способной передавать информацию, описанную выше для флага.
[0082] Чтобы повторить второй недостаток, относящийся к предложенным в настоящее время способам сигнализации dQP в HEVC, видеодекодер 30 может быть не способен корректно идентифицировать режим кодирования без потерь для квантуемого блока, когда предиктор QP для текущего квантуемого блока является ненулевым, но текущий квантуемый блок может быть кодирован с помощью режима кодирования без потерь и не иметь остатка (т.е. в остатке нет ненулевых значений). В этой ситуации, dQP не передается, и предполагается равным нулю видеодекодером 30. В этой связи, видеодекодер 30 будет реконструировать ненулевое фактическое значение QP с использованием нулевого dQP, и таким образом будет не способен идентифицировать режим кодирования без потерь для этого квантуемого блока.
[0083] Чтобы решить эту проблему, согласно другому примеру этого раскрытия, видеокодер 20 может быть сконфигурирован с возможностью устранения сценариев, где он будет в противном случае не способен идентифицировать режим кодирования без потерь, так что видеокодеру 20 просто не обеспечивается возможность выбора режима кодирования без потерь для конкретного квантуемого блока, когда нет остатка предсказания для текущего квантуемого блока, и предиктор QP не равен нулю, или квантуемые блоки, используемые для предсказания QP, кодируются без потерь (например, флаг кодирования без потерь включен). В этой связи, можно избежать ситуации, когда видеодекодер 30 определяет ненулевой QP для квантуемого блока, который был кодирован без потерь.
ϒ
ϒ
ϒ
ϒ
[0084] Другой недостаток некоторых предложений для сигнализации dQP в HEVC предусматривает используемое кодирование с простейшей бинаризацией. При таких предложениях для HEVC, dQP кодируется с использованием усеченной простейшей бинаризации. Значение dQP может ранжироваться от -(26+QpBdOffset/2) до +(25+QpBdOffset/2), где QpBdOffset зависит от ввода глубины в битах, который может быть от 0 до 18. Из-за асимметричного распределения значений дельта-QP, cMax усеченной простейшей бинаризации зависит от знака значения dQP. Например предполагая QpBdOffset равным нулю, cMax равняется 26, если значение отрицательное, и cMax равняется 25 для положительных значений. В результате, это требует проверки видеокодером 20 и видеодекодером 30 знака при кодировании и анализе dQP. В зависимости от значения знака, при кодировании и анализе dQP используются разные значения cMax.
ϒ
ϒ
[0085] Для уменьшения этой сложности, это раскрытие дополнительно предлагает удалить зависимость от знака при бинаризации dQP посредством изменения диапазона значения dQP так, чтобы значение cMax при усеченной простейшей бинаризации было одинаковым независимо от знака. Например, для положительного значения dQP, диапазон может быть увеличен на один, и весь диапазон будет от -(26+QpBdOffset/2) до +(26+QpBdOffset/2). В этом случае, одна и та же бинаризация используется для кодирования и анализа как положительных, так и отрицательных значений dQP, и проверка значения знака не требуется. Этот способ не ограничен только усеченной простейшей бинаризацией, но может быть применен к любой другой схеме бинаризации, например способам экспоненциального кодирования Голомба.
[0086] Фиг. 6 является блок-схемой, иллюстрирующей пример видеокодера 20, который может использовать способы кодирования dQP, которые описаны в этом раскрытии. Видеокодер 20 будет описан в контексте HEVC-кодирования в целях иллюстрации, но без ограничения этого раскрытия в отношении других стандартов кодирования или способов, которые могут требовать сканирования коэффициентов преобразования. Видеокодер 20 может выполнять внутреннее и внешнее кодирование CU внутри видеокадров. Внутреннее кодирования полагается на пространственное предсказание для уменьшения или удаления пространственной избыточности в видеоданных внутри заданного видеокадра. Внешнее кодирование полагается на временное предсказание для уменьшения или удаления пространственной избыточности между текущим кадром и ранее кодированными кадрами видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких пространственных режимов сжатия видео. Внешние режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких временных режимов сжатия видео.
[0087] Как показано на Фиг. 6, видеокодер 20 принимает текущий видеоблок внутри видеокадра, который должен быть кодирован. В примере по Фиг. 6, видеокодер 20 включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 обработки внутреннего предсказания, буфер 64 опорных кадров, сумматор 50, блок 52 обработки преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Блок 52 обработки преобразования, проиллюстрированный на Фиг. 6, является блоком, который применяет фактическое преобразование или комбинации преобразования к блоку остаточных данных, и его не следует путать с блоком коэффициентов преобразования, который также может называться единицей преобразования (TU) CU. Для реконструкции видеоблока, видеокодер 20 также включает в себя блок 58 обратного квантования, блок 60 обработки обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на Фиг. 6) может также быть включен для фильтрации границ блока, чтобы удалить артефакты блочности из реконструированного видео. Если требуется, фильтр удаления блочности будет обычно фильтровать выход сумматора 62.
[0088] Во время процесса кодирования, видеокодер 20 принимает видеокадр или слайс, который должен быть кодирован. Кадр или слайс может быть разделен на многочисленные видеоблоки, например, наибольшие единицы кодирования (LCU). Блок 42 оценки движения и блок 44 компенсации движения выполняют кодирование с внешним предсказанием принятого видеоблока, относящегося к одному или более блокам в одном или более опорных изображениях, для обеспечения временного сжатия. Блок 46 обработки внутреннего предсказания может выполнять кодирование с внутренним предсказанием принятого видеоблока, относящегося к одному или более соседним блокам в одном кадре или слайсе, как блока, который должен быть кодирован, для обеспечения пространственного сжатия.
[0089] Блок выбора режима 40 может выбрать один из режимов кодирования, внутренний или внешний, например, на основе результатов ошибки (т.е. искажения) для каждого режима, и предоставляет результирующий блок, предсказанный посредством внутреннего или внешнего предсказания (например, единицу предсказания (PU)), сумматору 50 для генерирования данных остаточного блока и сумматору 62 для реконструирования кодированного блока для использования в опорном кадре. Сумматор 62 объединяет предсказанный блок с обратно квантованными, обратно преобразованными данными из блока 60 обработки обратного преобразования для блока, чтобы реконструировать кодированный блок, как описано более подробно ниже. Некоторые видеокадры могут быть обозначены как I-кадры, где все блоки в I-кадре кодированы в режиме внутреннего предсказания. В некоторых случаях, блок 46 обработки внутреннего предсказания может выполнять кодирование с внутренним предсказанием блока в P- или B-кадре, например, когда поиск движения, выполненный блоком 42 оценки движения, не дает в результате достаточного предсказания блока.
[0090] Блок 42 оценки движения и блок 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы раздельно из смысловых соображений. Оценка движения (или поиск движения) является процессом генерирования векторов движения, который оценивает движение для видеоблоков. Вектор движения, например, может указывать сдвиг единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценки движения вычисляет вектор движения для единицы предсказания кодированного посредством внешнего кодирования кадра посредством сравнения единицы предсказания с опорными выборками опорного кадра, хранящегося в буфере 64 опорных кадров. Опорной выборкой может быть блок, который оказывается близко совпадающим с участком CU, включающей в себя PU, которая кодируется, в том, что касается разности пикселей, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разностей. Опорная выборка может возникнуть везде внутри опорного кадра или опорного слайса, и необязательно на границе блока (например, единицы кодирования) опорного кадра или слайса. В некоторых примерах, опорная выборка может возникнуть в положении дробного пикселя.
Блок 42 оценки движения отправляет вычисленный вектор движения на блок 56 энтропийного кодирования и блок 44 компенсации движения. Участок опорного кадра, идентифицированный вектором движения, может называться опорной выборкой. Блок 44 компенсации движения может вычислить значение предсказания для единицы предсказания текущей CU, например, посредством извлечения опорной выборки, идентифицированной вектором движения для PU.
[0092] Блок 46 обработки внутреннего предсказания может осуществить внутреннее предсказание принятого блока, в качестве альтернативы внешнему предсказанию, выполняемому блоком 42 оценки движения и блоком 44 компенсации движения. Блок 46 обработки внутреннего предсказания может предсказать принятый блок относительно соседних, ранее кодированных блоков, например, блоков сверху, сверху и справа, сверху и слева, или слева от текущего блока, предполагая для блоков порядок кодирования слева направо, сверху вниз. Блок 46 обработки внутреннего предсказания может быть сконфигурирован с многообразием разных режимов внутреннего предсказания. Например, блок 46 обработки внутреннего предсказания может быть сконфигурирован с определенным числом режимов направленного предсказания, например, тридцать три режима направленного предсказания, на основе размера CU, которая кодируется.
[0093] Блок 46 обработки внутреннего предсказания может выбрать режим внутреннего предсказания, например, посредством вычисления значений ошибок для различных режимов внутреннего предсказания и осуществления выбора режима, который дает наименьшее значение ошибки. Режимы направленного предсказания могут включать в себя функции для объединения значений пространственно соседних пикселей и применения объединенных значений к одному или более положениям пикселей в PU. Как только значения для всех положений пикселей в PU были вычислены, блок 46 обработки внутреннего предсказания может вычислить значение ошибки для режима предсказания на основе разности пикселей между PU и принятым блоком, который должен быть кодирован. Блок 46 обработки внутреннего предсказания может продолжать тестирование режимов внутреннего предсказания, пока не будет обнаружен режим внутреннего предсказания, который дает допустимое значение ошибки. Блок 46 обработки внутреннего предсказания может затем отправить PU на сумматор 50.
[0094] Видеокодер 20 образует остаточный блок посредством вычитания данных предсказания, вычисленных блоком 44 компенсации движения или блоком 46 обработки внутреннего предсказания, из первоначального видеоблока, который кодируется. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двухмерной матрице значений разностей пикселей, где число значений в остаточном блоке является таким же как число пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, т.е. ошибке, между значениями совмещенных пикселей в PU и в первоначальном блоке, который должен быть кодирован. Разностями могут быть разности цветности или яркости, в зависимости от типа блока, который кодируется.
[0095] В некоторых случаях, например, в режиме кодирования без потерь, остаток может быть отправлен непосредственно на блок 56 энтропийного кодирования. В этой связи, процессы преобразования и квантования пропускаются. В дополнение, любые процессы фильтрации контурным фильтром могут также быть пропущены.
[0096] Блок 52 обработки преобразования может образовать одну или более единиц преобразования (TU) из остаточного блока. Блок 52 обработки преобразования выбирает преобразование из числа множества преобразований. Преобразование может быть выбрано на основе одной или более характеристик кодирования, таких как размер блока, режим кодирования, или подобных. Блок 52 обработки преобразования затем применяет выбранное преобразование к TU, производя видеоблок, содержащий двухмерный массив коэффициентов преобразования.
[0097] Блок 52 обработки преобразования может отправить результирующие коэффициенты преобразования на блок 54 квантования. Блок 54 квантования может затем осуществить квантование коэффициентов преобразования. Блок 56 энтропийного кодирования может затем выполнить сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. Это раскрытие описывает блок 56 энтропийного кодирования как выполняющий сканирование. Однако следует понимать, что в других примерах сканирование могут выполнять другие блоки обработки, такие как блок 54 квантования. Блок 56 квантования может быть сконфигурирован с возможностью кодирования значений dQP в соответствии со способами, описанными выше. Дополнительное описание функции блока 56 квантования в этом отношении будет рассмотрено ниже со ссылкой на Фиг. 8.
[0098] Как только коэффициенты преобразования сосканированы в одномерный массив, блок 56 энтропийного кодирования может применить к коэффициентам энтропийное кодирование, такое как CABAC, контекстно-зависимое адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением по вероятностному интервалу (PIPE), или другую методологию энтропийного кодирования.
[0099] Для выполнения CABAC, блок 56 энтропийного кодирования может выбрать модель контекста для применения к определенному контексту, чтобы кодировать символы, которые должны быть переданы. Контекст может относиться, например, к тому, являются ли соседние значения ненулевыми или нет. Блок 56 энтропийного кодирования может также энтропийно кодировать синтаксические элементы, такие как сигнал, представляющий выбранное преобразование. В соответствии со способами этого раскрытия, блок 56 энтропийного кодирования может выбрать модель контекста, используемую для кодирования этих синтаксических элементов, на основе, например, направления внутреннего предсказания для режимов внутреннего предсказания, положения сканирования коэффициента, соответствующего синтаксическим элементам, типа блока и/или типа преобразования, из числа других факторов, используемых для выбора модели контекста.
[0100] Вслед за энтропийным кодированием посредством блока 56 энтропийного кодирования, результирующее кодированное видео может быть передано на другое устройство, такое как видеодекодер 30, или заархивировано для дальнейшей передачи или извлечения.
[0101] В некоторых случаях, блок 56 энтропийного кодирования или другой блок видеокодера 20 может быть сконфигурирован с возможностью выполнения других функций кодирования, в дополнение к энтропийному кодированию. Например, блок 56 энтропийного кодирования может быть сконфигурирован с возможностью определения значений шаблона кодированного блока (СВР) для CU и PU. Также, в некоторых случаях, блок 56 энтропийного кодирования может выполнить кодирование длины серий коэффициентов.
[0102] Блок 58 обратного квантования и блок 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы реконструировать остаточный блок в пиксельной области, например, для дальнейшего использования в качестве опорного блока. Блок 44 компенсации движения может вычислить опорный блок посредством прибавления остаточного блока к предсказательному блоку одного из кадров буфера 64 опорных кадров. Блок 44 компенсации движения может также применить один или более интерполяционных фильтров к реконструированному остаточному блоку, чтобы вычислить значения дробных пикселей для использования при оценке движения. Сумматор 62 прибавляет реконструированный остаточный блок к блоку предсказания с компенсацией движения, произведенному блоком 44 компенсации движения, чтобы произвести реконструированный видеоблок для хранения в буфере 64 опорных кадров. Реконструированный видеоблок может быть использован блоком 42 оценки движения и блоком 44 компенсации движения в качестве опорного блока для внешнего кодирования блока в последовательном видеокадре.
[0103] Фиг. 7 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере по Фиг. 7, видеодекодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 обработки внутреннего предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в общем обратный проходу кодирования, описанному в отношении видеокодера 20 (см. Фиг. 6).
[0104] блок 70 энтропийного декодирования выполняет процесс энтропийного декодирования в отношении кодированного битового потока для извлечения одномерного массива коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, использованного видеокодером 20 (например, CABAC). Процесс энтропийного кодирования, использованный кодером, может быть сигнализирован в кодированном битовом потоке или может быть предварительно определенным процессом.
[0105] В некоторых случаях, например, в режиме кодирования без потерь, выход (т.е. остаток в этом примере) может быть отправлен непосредственно из блока 70 энтропийного декодирования на сумматор 80. В этой связи, процессы обратного преобразования и квантования пропускаются. В дополнение, любые процессы фильтрации контурным фильтром могут также быть пропущены.
[0106] В некоторых примерах, блок 70 энтропийного декодирования (или блок 76 обратного квантования) могут сканировать принятые значения с использованием сканирования, дублирующего режим сканирования, используемый блоком 56 энтропийного кодирования (или блоком 54 квантования) видеокодера 20. Хотя сканирование коэффициентов может быть выполнено в блоке 76 обратного квантования, сканирование будет описано в целях иллюстрации, как выполняемое блоком 70 энтропийного декодирования. В дополнение, хотя для простоты иллюстрации показаны как отдельные функциональные блоки, структура и функциональность блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков видеодекодера 30 могут иметь высокую степень интеграции друг с другом.
[0107] Блок 76 обратного квантования осуществляет обратное квантование, т.е. деквантует, квантованные коэффициенты преобразования предоставленные в битовом потоке и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя стандартный процесс, например, аналогичный процессам, предложенным для HEVC или заданным стандартом декодирования H.264. Процесс обратного квантования может включать в себя использование параметра квантования QP, вычисленного видеокодером 20 для CU, чтобы определить степень квантования и, аналогично, степень обратного квантования, которые должны быть применены. Блок 76 обратного квантования может осуществить обратное квантование коэффициентов преобразования либо до, либо после преобразования коэффициентов из одномерного массива в двухмерный массив. Блок 76 обратного квантования может быть сконфигурирован с возможностью декодированные значений dQP в соответствии со способами, описанными выше. Дополнительное описание функции блока 76 обратного квантования в этом отношении будет рассмотрено ниже со ссылкой на Фиг. 9.
[0108] Блок 78 обработки обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах, блок 78 обработки обратного преобразования может определить обратное преобразование на основе сигнализации из видеокодера 20, или посредством предположения преобразования исходя из одной или более характеристик кодирования, таких как размер блока, режим кодирования, или подобных. В некоторых примерах, блок 78 обработки обратного преобразования может определить преобразование для применения к текущему блоку на основе сигнализированного преобразования в корневом узле дерева квадрантов для LCU, включающей в себя текущий блок. В качестве альтернативы, преобразование может быть сигнализировано в корне дерева квадрантов TU для CU концевого узла в дереве квадрантов LCU. В некоторых примерах, блок 78 обработки обратного преобразования может применить каскадное обратное преобразование, в котором блок 78 обработки обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования текущего блока, который кодируется.
[0109] Блок 74 обработки внутреннего предсказания может сгенерировать данные предсказания для текущего блока текущего кадра на основе сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра.
[0110] Блок 72 компенсации движения может извлечь вектор движения, направление предсказания движения и опорный индекс из кодированного битового потока. Опорное направление предсказания указывает, является ли режим внешнего предсказания однонаправленным (например, P кадр) или двунаправленным (В кадр). Опорный индекс указывает, на каком опорном кадре основан вектор-кандидат движения.
[0111] На основе извлеченного направления предсказания движения, индекса опорного кадра и вектора движения, блок компенсации движения производит блок с компенсацией движения для текущего участка. Эти блоки с компенсацией движения по существу воссоздают предсказательный блок, используемый, чтобы произвести остаточные данные.
[0112] Блок 72 компенсации движения может произвести блоки с компенсацией движения, возможно выполняя интерполяцию на основе фильтров интерполяции. Идентификаторы для интерполяционных фильтров, которые должны быть использованы для оценки движения с подпиксельной точностью, могут быть включены в синтаксические элементы. Блок 72 компенсации движения может использовать интерполяционные фильтры, которые используются видеокодером 20 во время кодирования видеоблока, для вычисления интерполированных значений для дробных пикселей опорного блока. Блок 72 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20, согласно принятой синтаксической информации и использовать интерполяционные фильтры, чтобы произвести предсказательные блоки.
[0113] Дополнительно, блок 72 компенсации движения и блок 74 обработки внутреннего предсказания, в примере HEVC, могут использовать некоторую синтаксическую информацию (например, предоставленную деревом квадрантов) для определения размеров LCU, используемых для кодирования кадра(ов) кодированной видеопоследовательности. Блок 72 компенсации движения и блок 74 обработки внутреннего предсказания может также синтаксическую информацию для определения информации разбиения, которая описывает как разбита каждая CU кадра кодированной видеопоследовательности (и аналогично, как разбиты под-CU). Синтаксическая информация может также включать в себя режимы, указывающие как кодируется каждое разбиение (например, внутреннее или внешнее предсказание, и для внутреннего предсказания режим кодирования с внутренним предсказанием), один или более опорных кадров (и/или опорных списков, содержащих идентификаторы для опорных кадров) для каждой кодированной посредством внешнего предсказания PU, и другую информацию для декодирования кодированной видеопоследовательности.
[0114] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, сгенерированными блоком 72 компенсации движения или блоком 74 обработки внутреннего предсказания, чтобы образовать декодированные блоки. Если требуется, фильтр удаления блочности может также быть применен для фильтрации декодированных блоков для того, чтобы удалить артефакты блочности. Декодированные видеоблоки затем сохраняются в буфере 82 опорных кадров (также называемом буфером декодированных изображений), который предоставляет опорные блоки для последовательной компенсации движения и также производит декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения по Фиг. 1).
[0115] Фиг. 8 является схемой последовательности операций, показывающей пример способа кодирования видео согласно способами этого раскрытия. Способы по Фиг. 8 могут быть осуществлены посредством одного или более аппаратных блоков видеокодера 20, включающего в себя блок 56 квантования.
[0116] В одном примере настоящего раскрытия, блок 56 квантования может быть сконфигурирован с возможностью определения значения параметра квантования (QP) для текущего квантуемого блока (810), определения значения дельта-параметра квантования (dQP) для текущего квантуемого блока видеоданных на основе QP и предиктора QP (820), и генерирования значения dQP, при этом значение dQP сигнализируется независимо от того есть ли в текущем квантуемом блоке ненулевые коэффициенты преобразования или нет (830). В различных примерах настоящего раскрытия, предиктор QP является средним для значения QP для квантуемого блока сверху и квантуемого блока слева, при этом квантуемый блок сверху размещен над текущим квантуемым блоком, и при этом квантуемый блок слева размещен слева от текущего квантуемого блока. Видеокодер 20 может быть дополнительно сконфигурирован с возможностью кодирования текущего квантуемого блока с использованием предварительно определенного значения QP (840).
[0117] В одном примере настоящего раскрытия, видеокодер 20 может быть дополнительно сконфигурирован с возможностью генерирования размера группы квантования (QG), при этом текущий квантуемый блок содержит одну или более единиц кодирования (CU), имеющую размер, равный или меньший, чем размер QG или CU, имеющей размер, больший, чем размер QG.
[0118] В другом примере данного раскрытия, блок 56 квантования может быть сконфигурирован с возможностью генерирования значения dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0119] В другом примере данного раскрытия, блок 56 квантования может быть сконфигурирован с возможностью генерирования значения dQP для текущего квантуемого блока видеоданных только в случае, когда одно значение QP, используемое для определения предиктора QP для текущего квантуемого блока, имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0120] В другом примере настоящего раскрытия, блок 56 квантования может быть сконфигурирован с возможностью генерирования значения dQP для текущего квантуемого блока видеоданных только в случае, когда разность между двумя значениями QP, используемыми для определения предиктора QP, больше, чем порог, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0121] В другом примере настоящего раскрытия, блок 56 квантования может быть сконфигурирован с возможностью генерирования значения dQP для текущего квантуемого блока видеоданных только в случае, когда разность между двумя значениями QP, используемыми для определения предиктора QP, меньше, чем порог, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0122] В другом примере настоящего раскрытия, блок 56 квантования может быть сконфигурирован с возможностью генерирования любого из порогов, описанных выше, в одном или более из набора параметров изображения (PPS), набора параметров адаптации (APS), заголовка слайса, заголовка наибольшей единицы кодирования (LCU) и заголовка CU.
[0123] В другом примере настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью генерирования флага кодирования без потерь, указывающего, что текущий квантуемый блок был кодирован с использованием режима кодирования без потерь, и кодирования текущего квантуемого блока с использованием согласно режиму кодирования без потерь.
[0124] В другом примере настоящего раскрытия, блок 56 квантования может быть сконфигурирован с возможностью присваивания значения QP для текущего квантуемого блока, чтобы было равно предиктору QP, в случае, когда флаг кодирования без потерь принят для текущего квантуемого блока, при этом значение QP используется для последовательного предсказания QP.
[0125] В другом примере настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью, в случае, когда текущий квантуемый блок включает в себя две или более CU, генерирования флага кодирования без потерь в каждой из двух или более CU в случае, когда флаг кодирования без потерь, принятый на текущем квантуемом блоке, указывает, что одна или более CU в квантуемых блоках были кодированы с использованием режима кодирования без потерь.
[0126] В другом примере настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью кодирования значения dQP с использованием способа усеченной простейшей бинаризации без проверки знака значения dQP.
[0127] В другом примере настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью не выбирать режим кодирования без потерь для текущего квантования в случае, когда текущий квантуемый блок не имеет остатка предсказания, и предиктор QP для текущего квантуемого блока является ненулевым.
[0128] В другом примере настоящего раскрытия, видеокодер 20 может быть сконфигурирован с возможностью не выбирать режим кодирования без потерь для текущего квантования в случае, когда текущий квантуемый блок не имеет остатка предсказания, и один или более квантуемых блоков, используемых для определения предиктора QP для текущего квантуемого блока, кодируются в режиме кодирования без потерь.
[0129] Фиг. 9 является схемой последовательности операций, показывающей пример способа декодирования видео согласно способами этого раскрытия. Способы по Фиг. 9 могут быть осуществлены посредством одного или более аппаратных блоков видеодекодера 30, включающих в себя блок 76 обратного квантования.
[0130] В одном примере настоящего раскрытия, блок 76 обратного квантования может быть сконфигурирован с возможностью приема значения дельта-параметра квантования (dQP) для текущего квантуемого блока видеоданных, при этом значение dQP принимается независимо от того, есть ли в текущем квантуемом блоке ненулевые коэффициенты преобразования или нет (910), и определения значения параметра квантования (QP) для текущего квантуемого блока на основе принятого значения dQP и предиктора QP (920). В различных примерах настоящего раскрытия, предиктор QP является средним для значения QP для квантуемого блока сверху и квантуемого блока слева, при этом квантуемый блок сверху размещен над текущим квантуемым блоком, и при этом квантуемый блок слева размещен слева от текущего квантуемого блока. Видеодекодер 30 может быть дополнительно сконфигурирован с возможностью декодирования текущего квантуемого блока с использованием предварительно определенного значения QP (930).
[0131] В другом примере настоящего раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема размера группы квантования (QG), при этом текущий квантуемый блок содержит одну или более единиц кодирования (CU), имеющих размер, равный или меньший, чем размер QG или CU, имеющей размер, больший, чем размер QG.
[0132] В другом примере данного раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных только в случае, когда предиктор QP для текущего квантуемого блока имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0133] В другом примере данного раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных только в случае, когда одно значение QP, используемое для определения предиктора QP для текущего квантуемого блока, имеет значение ноль, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение, и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0134] В другом примере настоящего раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных только в случае, когда разность между двумя значениями QP, используемыми для определения предиктора QP, больше, чем порог, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0135] В другом примере настоящего раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема значения dQP для текущего квантуемого блока видеоданных только в случае, когда разность между двумя значениями QP, используемыми для определения предиктора QP, меньше, чем порог, и предположения, что значение dQP должно быть равно нулю в случае, когда предиктор QP для текущего квантуемого блока имеет ненулевое значение и в текущем квантуемом блоке нет ненулевых коэффициентов преобразования.
[0136] В другом примере настоящего раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью приема любого из вышеописанных порогов в одном или более из набора параметров изображения (PPS), набора параметров адаптации (APS), заголовка слайса, заголовка наибольшей единицы кодирования (LCU), и заголовка CU.
[0137] В другом примере настоящего раскрытия, видеодекодер 30 может быть дополнительно сконфигурирован с возможностью приема флага кодирования без потерь, указывающего, что текущий квантуемый блок был кодирован с использованием режима кодирования без потерь, и декодирования текущего квантуемого блока с использованием согласно режиму кодирования без потерь.
[0138] В другом примере настоящего раскрытия, блок 76 обратного квантования может быть дополнительно сконфигурирован с возможностью присваивания значения QP для текущего квантуемого блока, чтобы было равно предиктору QP, в случае, когда флаг кодирования без потерь принят для текущего квантуемого блока, при этом значение QP используется для последовательного предсказания QP.
[0139] В другом примере настоящего раскрытия, видеодекодер 30 может быть дополнительно сконфигурирован с возможностью приема флага кодирования без потерь в каждой из двух или более CU в случае, когда флаг кодирования без потерь, принятый в текущем квантуемом блоке, указывает, что одна или более CU в квантуемых блоках были кодированы с использованием режима кодирования без потерь.
[0140] В другом примере настоящего раскрытия, видеодекодер 30 может быть дополнительно сконфигурирован с возможностью декодирования значения dQP с использованием способа усеченной простейшей бинаризации без проверки знака значения dQP.
[0141] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечением, программно-аппаратных средствах или любой их комбинации. В случае реализации в программном обеспечении, функции могут храниться как одна или более инструкций или код на компьютерно-читаемом носителе или передаваться на него и могут быть исполнены аппаратным блоком обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители информации, которые соответствуют материальному носителю, такому как носители данных, или среды связи, включающие в себя любую среду, которая способствует передаче компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители в общем могут соответствовать (1) материальным компьютерно-читаемым носителям информации, которые являются постоянными, или среде связи, такой как сигнал или несущая волна. Носителями данных могут являться любые доступные носители, к которым может быть осуществлен доступ посредством одного или более компьютеров, или одного или более процессоров для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0142] В качестве примера, и а не ограничения, такие компьютерно-читаемые носители информации могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптических дисках, хранилище на магнитных дисках или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может быть осуществлен доступ посредством компьютера. Также, любое соединение правильно называть компьютерно-читаемым носителем. Например, если инструкции передаются с Web-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линией связи (DSL) или беспроводных технологий, таких как инфракрасная связь, радио и микроволновая, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная связь, радио и микроволновая, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые носители информации и носители данных не включают в себя соединения, несущие волны, сигналы или другие промежуточные носители, но вместо этого направлены на непромежуточные, материальные носители информации. Термин "диск" в настоящем документе используется в отношении и магнитных, и оптических дисков, которые включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), флоппи-диск и blu-ray диск, причем магнитные диски обычно воспроизводят данные магнитным образом, в то время как оптические диски воспроизводят данные оптически с помощью лазера. Комбинации вышеупомянутого должны также быть включены в объем компьютерно-читаемых носителей.
[0143] Инструкции могут быть исполнены одним или более процессорами, такими как один или более процессоров цифровой обработки сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных микросхем (ASIC), программируемых пользователем вентильных матриц (FPGA), или другими эквивалентными схемами интегрированной или дискретной логики. Следовательно, термин "процессор", как используется в настоящем документе, может ссылаться на любую из вышеупомянутых структур или любую другую структуру, подходящую для реализации способов, описанных в настоящем документе. В дополнение, в некоторых аспектах, описанная в настоящем документе функциональность может быть предоставлена внутри выделенных аппаратных средств и/или программных модулей, сконфигурированных для кодирования и декодирования, или включена в объединенный кодек. Также, данные способы могут быть полностью реализованы в одной и больше схемах или логических элементах.
[0144] Способы этого раскрытия могут быть реализованы в широком спектре устройств или аппаратов, включающих в себя беспроводную гарнитуру, интегральную схему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых способов, но необязательно требуют реализацию посредством разных аппаратных блоков. Скорее, как описано выше, различные блоки могут быть объединены в аппаратном блоке кодека или предоставлены группой взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0145] Были описаны различные примеры. Эти и другие примеры входят в объем нижеследующих пунктов формулы изобретения.