[0001] Данная заявка испрашивает приоритет по:
- заявке на патент (США) 16/814,654, поданной 10 марта 2020 года;
- предварительной заявке на патент (США) 62/816,745, поданной 11 марта 2019 года; и
- предварительной заявке на патент (США) 62/850,453, поданной 20 мая 2019 года,
содержимое каждой из которых полностью содержится в данном документе по ссылке.
Область техники, к которой относится изобретение
[0002] Данное раскрытие относится к кодированию видео и декодированию видео.
Уровень техники
[0003] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют такие технологии кодирования видео, как технологии кодирования видео, описанные в стандартах, заданных посредством стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), ITU-T H.265/стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.
[0004] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеослайс (slice) (например, видеокадр или часть видеокадра) может сегментироваться на видеоблоки, которые также могут называться "единицами дерева кодирования (CTU)", "единицами кодирования (CU)" и/или "узлами кодирования". Видеоблоки во внутреннем (I-) слайсе кадра кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном кадре. Видеоблоки во внешне кодированном (P- или B-) слайсе кадра могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном кадре или временное прогнозирование относительно опорных выборок в других опорных кадрах. Кадры могут называться "кадрами", и опорные кадры могут называться "опорными кинокадрами".
Сущность изобретения
[0005] В некоторых сценариях кодирования, видеокодер может кодировать видеоданные в режиме пропуска преобразования, в котором процесс преобразования не выполняется, т.е. процесс преобразования пропускается. Таким образом, для блока, кодированного в режиме пропуска преобразования, остаточные данные не преобразуются. Это раскрытие описывает технологии для схемы кодирования коэффициентов для режима пропуска преобразования. Технологии этого раскрытия включают в себя процесс энтропийного декодирования, который преобразует двоичное представление коэффициентов в последовательность недвоичнозначных квантованных коэффициентов. Соответствующий процесс энтропийного кодирования, который, в общем, представляет собой обратный процесс по отношению к энтропийному декодированию, также составляет часть этого раскрытия.
[0006] В одном примере, способ декодирования видеоданных включает в себя, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определение значения для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определение значения для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определение контекстного смещения для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
[0007] В другом примере, способ кодирования видеоданных включает в себя, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определение значения для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определение значения для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определение контекстного смещения для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и кодирование значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
[0008] В другом примере, устройство для декодирования видеоданных включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, реализованных в схеме и выполненных с возможностью: для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определять значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
[0009] В другом примере, устройство для кодирования видеоданных включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, реализованных в схеме и выполненных с возможностью: для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определять значение для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
[0010] В другом примере, оборудование для декодирования видеоданных включает в себя средство для определения, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значения для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; средство для определения значения для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; средство для определения контекстного смещения для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и средство для декодирования значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
[0011] В другом примере, оборудование для кодирования видеоданных включает в себя средство для определения, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значения для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; средство для определения значения для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; средство для определения контекстного смещения для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и средство для кодирования значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
[0012] В другом примере, считываемый компьютером носитель хранения данных сохраняет инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
[0013] В другом примере, считываемый компьютером носитель хранения данных сохраняет инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
[0014] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0015] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может выполнять технологии этого раскрытия.
[0016] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примерную структуру в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).
[0017] Фиг. 3 показывает пример соседних коэффициентов относительно коэффициента, в данный момент кодируемого или декодируемого.
[0018] Фиг. 4 является блок-схемой, иллюстрирующей примерный видеокодер, который может выполнять технологии этого раскрытия.
[0019] Фиг. 5 является блок-схемой, иллюстрирующей примерный видеодекодер, который может выполнять технологии этого раскрытия.
[0020] Фиг. 6A и 6B являются концептуальными схемами, иллюстрирующими процесс обновления диапазона при двоичном арифметическом кодировании.
[0021] Фиг. 7 является концептуальной схемой, иллюстрирующей процесс вывода при двоичном арифметическом кодировании.
[0022] Фиг. 8 является блок-схемой, иллюстрирующей кодер по технологии контекстно-адаптивного двоичного арифметического кодирования (CABAC) в видеокодере.
[0023] Фиг. 9 является блок-схемой, иллюстрирующей CABAC-кодер в видеодекодере.
[0024] Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей процесс для кодирования видеоданных.
[0025] Фиг. 11 является блок-схемой последовательности операций способа, иллюстрирующей процесс для декодирования видеоданных.
[0026] Фиг. 12 является блок-схемой последовательности операций способа, иллюстрирующей процесс для определения контекста для кодирования знака коэффициента остаточного блока.
Подробное описание изобретения
[0027] Кодирование видео (например, кодирование видео и/или декодирование видео) типично заключает в себе прогнозирование блока видеоданных либо из уже кодированного блока видеоданных в идентичном кадре (например, внутреннее (intra) прогнозирование), либо из уже кодированного блока видеоданных в другом кадре (например, внешнее (inter) прогнозирование). В некоторых случаях, видеокодер также вычисляет остаточные данные посредством сравнения блока прогнозирования с исходным блоком. Таким образом, остаточные данные представляют разность между блоком прогнозирования и исходным блоком. Чтобы уменьшать число битов, требуемых для того, чтобы сигнализировать остаточные данные, видеокодер может преобразовывать и квантовать остаточные данные и сигнализировать преобразованные и квантованные остаточные данные в кодированном потоке битов. Сжатие, достигаемое посредством процессов преобразования и квантования, может выполняться с потерями, что означает то, что процессы преобразования и квантования могут вводить искажение в декодированные видеоданные.
[0028] Видеодекодер декодирует и суммирует остаточные данные с блоком прогнозирования, чтобы формировать восстановленный видеоблок, который совпадает с исходным видеоблоком более тесно, чем только блок прогнозирования. Вследствие потерь, введенных посредством преобразования и квантования остаточных данных, первый восстановленный блок может иметь искажение или артефакты. Один общий тип артефакта или искажения называется "блочностью", когда границы блоков, используемых для того, чтобы кодировать видеоданные, являются видимыми.
[0029] Чтобы дополнительно повышать качество декодированного видео, видеодекодер может выполнять одну или более операций фильтрации в отношении восстановленных видеоблоков. Примеры этих операций фильтрации включают в себя фильтрацию для удаления блочности, фильтрацию на основе дискретизированного адаптивного смещения (SAO) и адаптивную контурную фильтрацию (ALF). Параметры для этих операций фильтрации либо могут определяться посредством видеокодера и явно сигнализироваться в кодированном потоке битов видео, либо могут неявно определяться посредством видеодекодера без необходимости явного сигнализирования параметров в кодированном потоке битов видео.
[0030] В некоторых сценариях кодирования, видеокодер может кодировать видеоданные в режиме пропуска преобразования, в котором процесс преобразования, описанный выше, не выполняется, т.е. процесс преобразования пропускается. Таким образом, для блока, кодированного в режиме пропуска преобразования, остаточные данные не преобразуются. Остаточный блок видеоданных, кодированных с использованием режима пропуска преобразования, также может называться "непреобразованным остаточным блоком". Это раскрытие описывает технологии для схемы кодирования коэффициентов для режима пропуска преобразования. Технологии этого раскрытия включают в себя процесс энтропийного декодирования, который преобразует двоичное представление в последовательность недвоичнозначных квантованных коэффициентов. Соответствующий процесс энтропийного кодирования, который, в общем, представляет собой обратный процесс по отношению к энтропийному декодированию, также составляет часть этого раскрытия. Технологии этого раскрытия могут применяться к любому из существующих видеокодеков, к примеру, по стандарту высокоэффективного кодирования видео (HEVC) или к стандарту, в данный момент разрабатываемому, к примеру, по стандарту универсального кодирования видео (VVC), и к другим будущим стандартам кодирования видео.
[0031] Это раскрытие предлагает технологии, которые включают в себя, например, определение контекстного смещения для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента и декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения. Поскольку значения коэффициентов из соседних коэффициентов в остаточных блоках имеют тенденцию быть более коррелированными для блоков с пропуском преобразования, чем для преобразованных блоков, технологии этого раскрытия могут приводить к улучшенному энтропийному кодированию, которое может повышать общую эффективность кодирования, например, за счет уменьшения дополнительного числа битов, требуемых для того, чтобы представлять кодированные видеоданные без ухудшения качества декодированных видеоданных.
[0032] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять технологии этого раскрытия. Технологии этого раскрытия, в общем, направлены на кодирование (кодирование и/или декодирование) видеоданных. В общем, видеоданные включают в себя любые данные для обработки видео. Таким образом, видеоданные могут включать в себя необработанное некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и видеометаданные, такие как служебные данные.
[0033] Как показано на фиг. 1, система 100 включает в себя исходное устройство 102, которое предоставляет кодированные видеоданные, которые должны декодироваться и отображаться посредством целевого устройства 116, в этом примере. В частности, исходное устройство 102 предоставляет видеоданные в целевое устройство 116 через считываемый компьютером носитель 110. Исходное устройство 102 и целевое устройство 116 могут представлять собой или включать в себя любые из широкого диапазона устройств, включающих в себя настольный компьютер, ноутбук (т.е. переносной компьютер), планшетный компьютер или другое мобильное устройство, абонентскую приставку, телефонную трубку, смартфон, телевизионный приемник, камеру, устройство отображения, цифровой мультимедийный проигрыватель, консоль для видеоигр, устройство потоковой передачи видео, широковещательное приемное устройство и т.п. В некоторых случаях, исходное устройство 102 и целевое устройство 116 могут оснащаться возможностями беспроводной связи и в силу этого могут называться "устройствами беспроводной связи".
[0034] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием сущности, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для кодирования коэффициентов, описанные в этом раскрытии сущности. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.
[0035] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для кодирования коэффициентов, описанные в этом раскрытии сущности. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие обозначает устройство "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, устройства 102, 116 могут работать практически симметрично, так что каждое из устройств 102, 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 102, 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0036] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию кадров (также называемых "кинокадрами") видеоданных в видеокодер 200, который кодирует данные для кадров. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и генерируемого компьютером видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или сгенерированные компьютером видеоданные. Видеокодер 200 может перекомпоновывать кадры из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на считываемый компьютером носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.
[0037] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некоторых примерах, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут сохранять программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя запоминающее устройство 106 и запоминающее устройство 120 показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.
[0038] Считываемый компьютером носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, считываемый компьютером носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать, согласно стандарту беспроводной связи, передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый передаваемый сигнал, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.
[0039] В некоторых примерах, считываемый компьютером носитель 110 может включать в себя устройство 112 хранения данных. Исходное устройство 102 может выводить кодированные данные из интерфейса 108 вывода в устройство 112 хранения данных. Аналогично, целевое устройство 116 может осуществлять доступ к кодированным данным из устройства 112 хранения данных через интерфейс 122 ввода. Устройство 112 хранения данных может включать в себя любые из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных.
[0040] В некоторых примерах, считываемый компьютером носитель 110 может включать в себя файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированные видеоданные, сформированные посредством исходного устройства 102. Исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или в другое промежуточное устройство хранения данных, которое может сохранять кодированные видеоданные, сформированные посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.
[0041] Интерфейс 108 вывода и интерфейс 122 ввода могут представлять беспроводные передающие устройства/приемные устройства, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, которые работают согласно любым из множества IEEE 802.11-стандартов, либо другие физические компоненты. В примерах, в которых интерфейс 108 вывода и интерфейс 122 ввода содержат беспроводные компоненты, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно стандарту сотовой связи, такому как 4G, 4G LTE (стандарт долгосрочного развития), усовершенствованный стандарт LTE, 5G и т.п. В некоторых примерах, в которых интерфейс 108 вывода содержит беспроводное передающее устройство, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно другим стандартам беспроводной связи, таким как IEEE 802.11-спецификация, IEEE 802.15-спецификация (например, ZigBee™), стандарт Bluetooth™ и т.п. В некоторых примерах, исходное устройство 102 и/или целевое устройство 116 могут включать в себя соответствующие внутримикросхемные (SoC) устройства. Например, исходное устройство 102 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеокодеру 200 и/или интерфейсу 108 вывода, и целевое устройство 116 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеодекодеру 300 и/или интерфейсу 122 ввода.
[0042] Технологии этого раскрытия могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие варианты применения.
[0043] Интерфейс 122 ввода целевого устройства 116 принимает кодированный поток битов видео из считываемого компьютером носителя 110 (например, среды связи, устройства 112 хранения данных, файлового сервера 114 и т.п.). Кодированный поток битов видео может включать в себя служебную информацию, заданную посредством видеокодера 200, которая также используется посредством видеодекодера 300, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку видеоблоков либо других кодированных единиц (например, слайсов, кадров, групп кадров, последовательностей и т.п.). Устройство 118 отображения отображает декодированные кадры декодированных видеоданных пользователю. Устройство 118 отображения может представлять любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0044] Хотя не показано на фиг. 1, в некоторых примерах, видеокодер 200 и видеодекодер 300 могут быть интегрированы с аудиокодером и/или аудиодекодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать мультимедийные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0045] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом считываемом компьютером носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0046] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Проект VVC-стандарта описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 4)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13-ая конференция: Марракеш, MA, 9-18 января 2019 года, JVET-M1001-v5 (далее "VVC-проект 4"). Проект VVC-стандарта описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 7)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16-ая конференция: Женева, CH, 1-11 октября 2019, JVET-P2001-v14 (далее "VVC-проект 7"). Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом кодирования.
[0047] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование кадров на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок кадра, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.
[0048] Это раскрытие, в общем, может означать кодирование (например, кодирование и декодирование) кадров, которое включает в себя процесс кодирования или декодирования данных кадра. Аналогично, это раскрытие может означать кодирование блоков кадра, которое включает в себя процесс кодирования или декодирования данных для блоков, например, прогнозное кодирование и/или остаточное кодирование. Кодированный поток битов видео, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию кадров на блоки. Таким образом, ссылки на кодирование кадра или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих кадр или блок.
[0049] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (к примеру, видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментирует CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные внешнего прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.
[0050] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует кинокадр на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на основе дерева квадрантов, и второй уровень, сегментированный согласно сегментации на основе двоичного дерева. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).
[0051] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT) (также называемого "третичным деревом (TT)). Сегмент троичного или третичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного или третичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0052] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 200 и видеодекодер 300 могут использовать две или более QTBT- или MTT-структур, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT/MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).
[0053] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на основе дерева квадрантов согласно HEVC, QTBT-сегментацию, MTT-сегментацию либо другие структуры сегментации. Для целей пояснения, описание технологий этого раскрытия представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на основе дерева квадрантов или другие типы сегментации.
[0054] Блоки (например, CTU или CU) могут группироваться различными способами в кадр. В качестве одного примера, кирпич (brick) может означать прямоугольную область CTU-строк в конкретном элементе мозаичного разбиения (tile) в кадре. Элемент мозаичного разбиения может представлять собой прямоугольную область CTU в конкретном столбце элементов мозаичного разбиения и конкретной строке элементов мозаичного разбиения в кадре. Столбец элементов мозаичного разбиения означает прямоугольную область CTU, имеющих высоту, равную высоте кадра, и ширину, указываемую посредством синтаксических элементов (например, в наборе параметров кадра). Строка элементов мозаичного разбиения означает прямоугольную область CTU, указывающих высоту посредством синтаксических элементов (например, в наборе параметров кадра), и ширину, равную ширине кадра.
[0055] В некоторых примерах, элемент мозаичного разбиения может сегментироваться на несколько кирпичей, каждый из которых может включать в себя одну или более CTU-строк внутри элемента мозаичного разбиения. Элемент мозаичного разбиения, который не сегментируется на несколько кирпичей, также может называться "кирпичом". Тем не менее, кирпич, который представляет собой истинный поднабор элемента мозаичного разбиения, может не называться "элементом мозаичного разбиения".
[0056] Кирпичи в кадре также могут размещаться в слайсе. Слайс может представлять собой целое число кирпичей кадра, которые могут содержаться исключительно в одной единице слоя абстрагирования от сети (NAL). В некоторых примерах, слайс включает в себя либо определенное число полных элементов мозаичного разбиения, либо только жесткую последовательность полных кирпичей одного элемента мозаичного разбиения.
[0057] Это раскрытие может использовать "N×N" и "N на N" взаимозаменяемо, чтобы ссылаться на размеры в выборках блока (к примеру, CU или другого видеоблока) с точки зрения размеров по вертикали и горизонтали, например, на выборки 16×16 или выборки 16 на 16. В общем, CU 16×16 должна иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, CU N×N, в общем, имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Выборки в CU могут размещаться в строках и столбцах. Кроме того, CU не обязательно должны иметь идентичное число выборок в горизонтальном направлении и в вертикальном направлении. Например, CU могут содержать N×M выборок, причем M не обязательно равно N.
[0058] Видеокодер 200 кодирует видеоданные для CU, представляющих информацию прогнозирования и/или остаточную информацию и другую информацию. Информация прогнозирования указывает то, как CU должна прогнозироваться, чтобы формировать блок прогнозирования для CU. Остаточная информация, в общем, представляет последовательные выборочные разности между выборками CU до кодирования и блоком прогнозирования.
[0059] Чтобы прогнозировать CU, видеокодер 200, в общем, может формировать блок прогнозирования для CU через внешнее прогнозирование или внутреннее прогнозирование. Внешнее прогнозирование, в общем, означает прогнозирование CU из данных ранее кодированного кадра, тогда как внутреннее прогнозирование, в общем, означает прогнозирование CU из ранее кодированных данных идентичного кадра. Чтобы выполнять внешнее прогнозирование, видеокодер 200 может формировать блок прогнозирования с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения для того, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может прогнозировать текущую CU с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.
[0060] Некоторые примеры JEM и VVC также предоставляют аффинный режим компенсации движения, который может считаться режимом внешнего прогнозирования. В аффинном режиме компенсации движения, видеокодер 200 может определять два или более векторов движения, которые представляют непоступательное движение в пространстве, такое как увеличение или уменьшение масштаба, вращение, перспективное движение или другие типы нерегулярного движения.
[0061] Чтобы выполнять внутреннее прогнозирование, видеокодер 200 может выбирать режим внутреннего прогнозирования для того, чтобы формировать блок прогнозирования. Некоторые примеры JEM и VVC предоставляют шестьдесят семь режимов внутреннего прогнозирования, включающих в себя различные направленные режимы, а также планарный режим и DC-режим. В общем, видеокодер 200 выбирает режим внутреннего прогнозирования, который описывает соседние выборки относительно текущего блока (например, блока CU), из которых можно прогнозировать выборки текущего блока. Такие выборки, в общем, могут находиться выше, выше и слева или слева от текущего блока в идентичном кадре с текущим блоком, при условии, что видеокодер 200 кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0062] Видеокодер 200 кодирует данные, представляющие режим прогнозирования для текущего блока. Например, для режимов внешнего прогнозирования, видеокодер 200 может кодировать данные, представляющие то, какой из различных доступных режимов внешнего прогнозирования используется, а также информацию движения для соответствующего режима. Для однонаправленного или двунаправленного внешнего прогнозирования, например, видеокодер 200 может кодировать векторы движения с использованием усовершенствованного прогнозирования векторов движения (AMVP) или режима объединения. Видеокодер 200 может использовать аналогичные режимы для того, чтобы кодировать векторы движения для аффинного режима компенсации движения.
[0063] После прогнозирования, такого как внутреннее прогнозирование или внешнее прогнозирование блока, видеокодер 200 может вычислять остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют выборку посредством выборочных разностей между блоком и блок прогнозирования для блока, сформированных с использованием соответствующего режима прогнозирования. Видеокодер 200 может применять одно или более преобразований к остаточному блоку для того, чтобы формировать преобразованные данные в области преобразования вместо выборочной области. Например, видеокодер 200 может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным видеоданным. Дополнительно, видеокодер 200 может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неразделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Видеокодер 200 формирует коэффициенты преобразования после применения одного или более преобразований.
[0064] Хотя выше описываются примеры, в которых преобразования выполняются, в некоторых примерах, преобразование может пропускаться. Например, видеокодер 200 может реализовывать режим пропуска преобразования, в котором операция преобразования пропускается. В примерах, в которых преобразование пропускается, видеокодер 200 может выводить коэффициенты, соответствующие остаточным значениям, вместо коэффициентов преобразования. В нижеприведенном описании, термин "коэффициент" должен интерпретироваться как включающий в себя либо коэффициенты, соответствующие остаточным значениям, либо коэффициенты преобразования, сформированные из результата преобразования.
[0065] Как отмечено выше, после преобразований, либо если преобразование пропускается для того, чтобы формировать коэффициенты, видеокодер 200 может выполнять квантование коэффициентов. В некоторых примерах, квантование также может пропускаться, когда преобразование пропускается. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. Посредством выполнения процесса квантования, видеокодер 200 может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, видеокодер 200 может округлять n-битовое значение в меньшую сторону до m-битового значения во время квантования, где n превышает m. В некоторых примерах, чтобы выполнять квантование, видеокодер 200 может выполнять побитовый сдвиг вправо значения, которое должно квантоваться.
[0066] После квантования видеокодер, 200 может сканировать коэффициенты (например, сформированные из результата преобразования или вследствие пропуска преобразования), формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты. Сканирование может проектироваться с возможностью размещать более высокие энергетические коэффициенты (и в силу этого более низкие частотные) в начальной части вектора и размещать более низкие энергетические коэффициенты (и в силу этого более высокие частотные) в конечной части вектора. В примерах, в которых преобразование пропускается, результат сканирования может не представлять сбой то, что более высокие энергетические коэффициенты находятся в начальной части вектора, и более низкие энергетические коэффициенты находятся в конечной части вектора. В некоторых примерах, видеокодер 200 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты, чтобы формировать преобразованный в последовательную форму вектор, и затем энтропийно кодировать квантованные коэффициенты вектора. В других примерах, видеокодер 200 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов, чтобы формировать одномерный вектор, видеокодер 200 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному двоичному арифметическому кодированию (CABAC). Видеокодер 200 также может энтропийно кодировать другие синтаксические элементы, описывающие метаданные, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 300 при декодировании видеоданных.
[0067] Как представлено выше, видеокодер 200 кодирует остаточные данные в TU. В зависимости от ожидаемых характеристик остаточных данных в TU, видеокодер 200 может кодировать TU в различных режимах, к примеру, в режиме преобразования или в режиме пропуска преобразования, при этом различные режимы используют различные схемы кодирования коэффициентов. Некоторые схемы кодирования коэффициентов используют группы коэффициентов для того, чтобы кодировать TU. Группа коэффициентов, в общем, представляет собой поднабор коэффициентов в TU. Например, видеокодер 200 может кодировать TU 16×16 в качестве четырех групп коэффициентов 4×4.
[0068] Чтобы выполнять CABAC, видеокодер 200 может назначать контекст в контекстной модели символу, который должен передаваться. Контекст может быть связан, например, с тем, являются соседние значения символа нульзначными или нет. Определение вероятности может быть основано на контексте, назначаемом символу.
[0069] Видеокодер 200 дополнительно может формировать синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и синтаксические данные на основе последовательностей, в видеодекодер 300, например, в заголовке кадра, заголовке блока, заголовке слайса, либо другие синтаксические данные, к примеру, набор параметров последовательности (SPS), набор параметров кадра (PPS) или набор параметров видео (VPS). Видеодекодер 300 аналогично может декодировать такие синтаксические данные для того, чтобы определять то, как декодировать соответствующие видеоданные.
[0070] Таким образом, видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные, например, синтаксические элементы, описывающие сегментацию кадра на блоки (например, CU), и информацию прогнозирования и/или остаточную информацию для блоков. В конечном счете, видеодекодер 300 может принимать поток битов и декодировать кодированные видеоданные.
[0071] В общем, видеодекодер 300 выполняет взаимообратный процесс относительно процесса, выполняемого посредством видеокодера 200, чтобы декодировать кодированные видеоданные потока битов. Например, видеодекодер 300 может декодировать значения для синтаксических элементов потока битов с использованием CABAC способом, практически аналогичным, хотя и взаимообратным, относительно процесса CABAC-кодирования видеокодера 200. Синтаксические элементы могут задавать сегментацию информации кадра на CTU и сегментацию каждой CTU согласно соответствующей структуре сегментации, такой как QTBT-структура, чтобы задавать CU CTU. Синтаксические элементы дополнительно могут задавать информацию прогнозирования и остаточную информацию для блоков (например, CU) видеоданных.
[0072] Остаточная информация может представляться, например, посредством квантованных коэффициентов, которые представляют либо остаточные значения, либо коэффициенты преобразования. Видеодекодер 300 может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для того, чтобы воспроизводить остаточный блок для блока. В примерах, в которых видеокодер 200 пропускает операцию преобразования (например, в режиме пропуска преобразования), видеодекодер 300 может пропускать операцию обратного преобразования. Видеодекодер 300 использует сигнализируемый режим прогнозирования (внутреннее или внешнее прогнозирование) и связанную информацию прогнозирования (например, информацию движения для внешнего прогнозирования) для того, чтобы формировать блок прогнозирования (т.е. прогнозирующий блок) для блока. Видеодекодер 300 затем может комбинировать блок прогнозирования и остаточный блок (на основе каждой выборки), чтобы воспроизводить исходный блок. Видеодекодер 300 может выполнять дополнительную обработку, такую как выполнение процесса удаления блочности, чтобы уменьшать визуальные артефакты вдоль границ блока.
[0073] Согласно технологиям этого раскрытия, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента и декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения. Поскольку значения коэффициентов из соседних коэффициентов в остаточных блоках имеют тенденцию быть более коррелированными для блоков с пропуском преобразования, чем для преобразованных блоков, технологии этого раскрытия могут приводить к улучшенному энтропийному кодированию, которое может повышать общую эффективность кодирования, например, за счет уменьшения дополнительного числа битов, требуемых для того, чтобы представлять кодированные видеоданные без ухудшения качества декодированных видеоданных.
[0074] Это раскрытие, в общем, может относиться к "сигнализированию" определенной информации, такой как синтаксические элементы. Термин "сигнализирование", в общем, может означать передачу значений для синтаксических элементов и/или других данных, используемых для того, чтобы декодировать кодированных видеоданные. Таким образом, видеокодер 200 может сигнализировать значения для синтаксических элементов в потоке битов. В общем, передача служебных сигналов означает формирование значения в потоке битов. Как отмечено выше, исходное устройство 102 может транспортировать поток битов в целевое устройство 116 практически в реальном времени или не в реальном времени, к примеру, что может происходить при сохранении синтаксических элементов в устройство 112 хранения данных для последующего извлечения посредством целевого устройства 116.
[0075] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примерную структуру 130 в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу 132 дерева кодирования (CTU). Сплошные линии представляют разбиение на дерево квадрантов, и пунктирные линии указывают разбиение на двоичное дерево. В каждом разбитом (т.е. нелисте) узле двоичного дерева, один флаг сигнализируется, чтобы указывать то, какой тип разбиения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разбиение, и 1 указывает вертикальное разбиение в этом примере. Для разбиения на дерево квадрантов, нет необходимости указывать тип разбиения, поскольку узлы дерева квадрантов разбивают блок горизонтально и вертикально на 4 субблока с равным размером. Соответственно, видеокодер 200 может кодировать, а видеодекодер 300 может декодировать синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня области (т.е. первого уровня) QTBT-структуры 130 (т.е. сплошные линии) и синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня прогнозирования (т.е. второго уровня) QTBT-структуры 130 (т.е. пунктирные линии). Видеокодер 200 может кодировать, и видеодекодер 300 может декодировать видеоданные, такие как данные прогнозирования и преобразования, для CU, представленных посредством терминальных узлов-листьев QTBT-структуры 130.
[0076] В общем, CTU 132 по фиг. 2B может быть ассоциирована с параметрами, задающими размеры блоков, соответствующих узлам QTBT-структуры 130 на первом и втором уровнях. Эти параметры могут включать в себя CTU-размер (представляющий размер CTU 132 в выборках), минимальный размер дерева квадрантов (MinQTSize, представляющий минимальный разрешенный размер узлов-листьев дерева квадрантов), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневых узлов двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер узлов-листьев двоичного дерева).
[0077] Корневой узел QTBT-структуры, соответствующей CTU, может иметь четыре дочерних узла на первом уровне QTBT-структуры, каждый из которых может сегментироваться согласно сегментации на основе дерева квадрантов. Таким образом, узлы первого уровня либо представляют собой узлы-листья (имеющие дочерние узлы), либо имеют четыре дочерних узла. Пример QTBT-структуры 130 представляет такие узлы как включающие в себя родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не превышают максимальный разрешенный размер корневых узлов двоичного дерева (MaxBTSize), то узлы дополнительно могут сегментироваться посредством соответствующих двоичных деревьев. Разбиение на двоичное дерево одного узла может обрабатываться с помощью итераций до тех пор, пока узлы, получающиеся в результате разбиения, не достигают минимального разрешенного размера узлов-листьев двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример QTBT-структуры 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Узел-лист двоичного дерева называется "единицей кодирования (CU)", которая используется для прогнозирования (например, внутрикадрового или межкадрового прогнозирования) и преобразования, без дальнейшей сегментации. Как пояснено выше, CU также могут называться "видеоблоками" или "блоками".
[0078] В одном примере QTBT-структуры сегментации, CTU-размер задается как 128×128 (выборки сигнала яркости и две соответствующих выборки сигнала цветности 64×64), MinQTSize задается как 16×16, MaxBTSize задается как 64×64, MinBTSize (для ширины и высоты) задается как 4, и MaxBTDepth задается как 4. Сегментация на основе дерева квадрантов применяется к CTU сначала, чтобы формировать узлы-листья дерева квадрантов. Узлы-листья дерева квадрантов могут иметь размер от 16×16 (т.е. от MinQTSize) до 128×128 (т.е. до CTU-размера). Если узел-лист дерева квадрантов представляет собой 128×128, то узел-лист дерева квадрантов не должен дополнительно разбиваться посредством двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64, в этом примере). В противном случае, узел-лист дерева квадрантов дополнительно сегментируется посредством двоичного дерева. Следовательно, узел-лист дерева квадрантов также представляет собой корневой узел для двоичного дерева и имеет глубину двоичного дерева в 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в этом примере), дополнительное разбиение не разрешается. Узел двоичного дерева, имеющий ширину, равную MinBTSize (4, в этом примере), подразумевает то, что дополнительное горизонтальное разбиение не разрешается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает то, что дополнительное вертикальное разбиение не разрешается для этого узла двоичного дерева. Как отмечено выше, узлы-листья двоичного дерева называются "CU" и дополнительно обрабатываются согласно прогнозированию и преобразованию без дополнительной сегментации.
[0079] Когда блок видеоданных кодируется в режиме пропуска преобразования, видеокодер 200 пропускает процесс преобразования для остаточных сигналов до выполнения процесса квантования. Видеодекодер 300 аналогично пропускает этап процесса обратного преобразования после выполнения процесса деквантования. Характеристики непреобразованного остаточного сигнала типично существенно отличаются от характеристик преобразованных сигналов. Например, коэффициенты для блока с пропуском преобразования имеют тенденцию быть более коррелированными с соседними коэффициентами по сравнению с коэффициентами для преобразованного блока. Как результат, значения уровня и информация знака для соседних коэффициентов блоке с пропуском преобразования остаточных данных имеют тенденцию быть более коррелированными по сравнению со значениями уровня и информацией знака для преобразованного блока остаточных данных.
[0080] Работа авторов B. Bross, T. Nguyen, P. Keydel, H. Schwarz, D. Marpe, T. Wiegand "Non-CE8: Unified Transform Type Signalling and Residual Coding for Transform Skip", JVET document JVET-M0464, Marrackech, MA, январь 2019 года, излагает предложенный процесс для выполнения остаточного кодирования для блоков, кодированных в режиме пропуска преобразования. Для эффективного кодирования уровней и информации знака в режиме пропуска преобразования, кодирование коэффициентов, предложенное в JVET-M0464, может модифицироваться, чтобы использовать характеристики сигналов для более эффективного кодирования.
[0081] Фиг. 3 показывает пример трех коэффициентов из блока с пропуском преобразования остаточных данных. Блок с пропуском преобразования также должен включать в себя дополнительные коэффициенты, не показанные на фиг. 3. В примере по фиг. 3, значение X коэффициента представляет значение коэффициента 140, который представляет коэффициент, в данный момент кодируемый. Значение X0 коэффициента представляет значение коэффициента 142, который представляет собой левый соседний коэффициент относительно коэффициента 140. Значение X1 коэффициента представляет значение коэффициента 144, который представляет собой верхний соседний коэффициент относительно коэффициента 140. В этом раскрытии сущности, верхний соседний узел также может называться "вышележащим соседним узлом".
[0082] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью выполнять кодирование по знакам для коэффициентов в блоке с пропуском преобразования. В технологиях для остаточного кодирования с пропуском преобразования, описанных в JVET-M0464, коэффициенты кодируются от первого (т.е. от левого верхнего) к последнему (т.е. к правому нижнему) вместо от последнего к первому, что происходит для преобразованных блоков. При реализации технологий JVET-M0464, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью контекстно кодировать, с использованием CABAC, информацию знака с использованием типа канала остатка в качестве контекста. Таким образом, видеокодер 200 и видеодекодер 300 могут использовать один контекст для остатка сигнала яркости и другой контекст для остатка сигнала цветности. Это раскрытие описывает технологии кодирования по знакам, которые могут использоваться вместо или в дополнение к технологиям, описанным в JVET-M0464. Следующие технологии используют информацию знака вышележащего соседнего коэффициента (например, коэффициента 144 на фиг. 3) и левого соседнего коэффициента (например, коэффициента 142 на фиг. 3), чтобы извлекать контекстное смещение кодирования по знакам для коэффициента, в данный момент кодируемого (например, коэффициента 140 на фиг. 3).
[0083] Ссылаясь на фиг 3, X0 представляет собой значение левого соседнего коэффициента, и X1 представляет собой значение вышележащего соседнего коэффициента. Если оба соседних коэффициента являются нулевыми либо ненулевыми, но с противоположными знаками, то видеокодер 200 и видеодекодер 300 могут использовать контекстное смещение 0 (ctxOffset=0). В противном случае, если оба из них являются неотрицательными, то видеокодер 200 и видеодекодер 300 могут использовать контекстное смещение 1 (ctxOffset=1). Для всех других случаев, видеокодер 200 и видеодекодер 300 могут использовать контекстное смещение 2 (ctxOffset=2). Это может описываться посредством следующего псевдокода:
if((X0==0 && X1==0) || ((X0 * X1)<0))
{
ctxOffset=0;
}
else if (X0>=0 && X1>=0)
{
ctxOffset+=1;
}
else
{
ctxOffset=2;
}
[0084] В некоторых примерах, если оба соседних коэффициента являются нулевыми или ненулевыми, но с противоположными знаками, то видеокодер 200 и видеодекодер 300 могут использовать контекстное смещение 0. Иначе (когда оба из них являются положительными или оба из них являются отрицательными, либо один является нулевым, а другой не является нулевым), видеокодер 200 и видеодекодер 300 могут использовать контекст 1. Если контекст 1 используется, то сигнализируемое значение знака в 0 или 1, в зависимости от конвенции, должно означать то, что знак коэффициента, в данный момент кодируемого, является идентичным знаку одного из ненулевых соседних узлов. Эта технология также может быть расширена на сценарий кодирования, в котором только значение предыдущего кодированного ненулевого коэффициента может использоваться для извлечения контекстов, где значение знака в 0 или 1 указывает то, что знак коэффициента является идентичным знаку предыдущего кодированного ненулевого коэффициента с одним контекстом.
[0085] Отдельные контекстные наборы для компонентов сигнала яркости и сигнала цветности могут использоваться в комбинации с вышеописанным извлечением контекстных смещений.
[0086] Видеокодер 200 и видеодекодер 300 также могут быть выполнены с возможностью выполнять преобразование уровня. При остаточном кодировании с пропуском преобразования согласно JVET-M0464, абсолютные уровни absCoeffLevel коэффициента кодируются с использованием sig_coeff_flag, abs_level_gtX_flags, par_level_flag и значения abs_remainder для того, чтобы формировать конечное абсолютное значение коэффициента преобразования, где X может быть равно 1,..., 5 (или некоторому другому значению C отсечки). Таким образом, значение absCoeffLevel может конструироваться следующим образом:
absCoeffLevel=1+abs_level_gt1_flag+par_level_flag+2 * (abs_level_gt2_flag+abs_level_gt3_flag+...+abs_level_gtC_flag)+2 * abs_remainder
[0087] Вместо представления absCoeffLevel непосредственно в качестве в JVET-M0464, видеокодер 200 может быть выполнен с возможностью преобразовывать absCoeffLevel в модифицированный уровень. Видеодекодер 300 может быть выполнен с возможностью выполнять обратное преобразование.
[0088] Аналогично технологиям извлечения контекстных смещений кодирования по знакам, описанным выше, видеокодер 200 и видеодекодер 300 могут использовать информацию absCoeffLevel левого соседнего и вышележащего соседнего коэффициентов для кодирования и декодирования значений уровня абсолютных коэффициентов. В этом примере, пусть X0 обозначает уровень абсолютных коэффициентов левого соседнего коэффициента (например, коэффициента 142 на фиг. 3) по отношению к коэффициенту, в данный момент кодируемому (например, к коэффициенту 140 на фиг. 3), и пусть X1 обозначает уровень абсолютных коэффициентов вышележащего соседнего коэффициента (например, коэффициента 144 на фиг. 3) по отношению к коэффициенту, в данный момент кодируемому (например, к коэффициенту 140 на фиг. 3). Для представления коэффициента с уровнем absCoeff абсолютных коэффициентов, преобразованный absCoeffMod может кодироваться.
[0089] Операция видеокодера 200 для извлечения значения для absCoeffMod может быть показана с помощью следующего псевдокода:
pred=max(X0, X1);
if (absCoeff==pred
{
absCoeffMod=1;
}
else
{
absCoeffMod=(absCoeff<pred) ? absCoeff+1 : absCoeff;
}
[0090] В некоторых примерах, если абсолютное значение коэффициента (absCoeff), которое должно кодироваться, равно максимальному соседнему предиктору, pred, то видеокодер 200 задает модифицированный уровень absCoeffMod равным 1. В противном случае, если absCoeff меньше предиктора, то видеокодер 200 постепенно увеличивает значение, которое должно кодироваться, на 1. В противном случае, видеокодер 200 не модифицирует значение absCoeff.
[0091] Видеокодер 200, например, может определять прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, и в ответ на значение уровня коэффициента, в данный момент кодируемого, равное прогнозированному значению уровня, кодировать синтаксический элемент с помощью значения, равного единице. В других случаях, видеокодер 200 может определять прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, и в ответ на значение уровня коэффициента, в данный момент кодируемого, меньшее прогнозированного значения уровня, кодировать синтаксический элемент с помощью значения, равного значению уровня коэффициента, в данный момент кодируемого. В других случаях, видеокодер 200 может определять прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, и в ответ на значение уровня коэффициента, в данный момент кодируемого, большее прогнозированного значения уровня, кодировать синтаксический элемент с помощью значения, равного значению уровня коэффициента, в данный момент кодируемого, минус один.
[0092] Операция видеодекодера 300 для извлечения значения absCoeff может быть показана с помощью следующего псевдокода:
pred=max(X0, X1);
if (absCoeffMod==1 && pred>0)
{
absCoeff=pred;
}
else
{
absCoeff=absCoeffMod-(absCoeffMod<=pred);
}
[0093] Видеодекодер 300, например, может определять прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, принимать синтаксический элемент, указывающий, и в ответ на синтаксический элемент, имеющий значение, равное единице, определять то, что значение уровня коэффициента, в данный момент декодируемого, равно прогнозированному значению уровня. В других случаях, видеодекодер 300 может определять прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, принимать синтаксический элемент, указывающий, и в ответ на значение для синтаксического элемента, большее прогнозированного значения уровня, определять то, что значение уровня коэффициента, в данный момент декодируемого, равно значению для синтаксического элемента плюс один. В других случаях, видеодекодер 300 может определять прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, принимать синтаксический элемент, указывающий, и в ответ на значение для синтаксического элемента, меньшее прогнозированного значения уровня, определять то, что значение уровня коэффициента, в данный момент декодируемого, равно значению для синтаксического элемента.
[0094] В некоторых примерах, видеокодер 200 и видеодекодер 300 определяют или извлекают контекст синтаксического элемента, идентифицированного в данном документе, в качестве abs_level_gt1_flag, на основе того, равны или нет значения левого соседнего и вышележащего соседнего коэффициента нулю. Синтаксический элемент abs_level_gt1_flag представляет собой синтаксический элемент, используемый для того, чтобы кодировать значения коэффициентов. Значение abs_level_gt1_flag, равное 1, например, может означать то, что абсолютный уровень коэффициента превышает 1. Значение abs_level_gt1_flag, равное 0, например, может означать то, что абсолютный уровень коэффициента не превышает 1.
[0095] В одном примере, контекст может представлять собой один из определенного числа, например, трех различных контекстов. Один контекст может извлекаться для случая, в котором как левый соседний коэффициент, так и вышележащий соседний коэффициент имеют ненулевые значения. Другой контекст может извлекаться для случая, в котором только один из левого соседнего коэффициента или вышележащего соседнего коэффициента имеет значение, которое является ненулевым. Третий контекст может извлекаться для случая, в котором как левый соседний коэффициент, так и вышележащий соседний коэффициент имеют значения в нуль. В одном примере, это извлечение контекстов применяется только к режимам без BDPCM (блочно-дифференциальной импульсно-кодовой модуляции).
[0096] В некоторых примерах, для сценариев кодирования с несуществующим или недоступным соседним значением, к примеру, когда кодируемый коэффициент находится на левой границе блока, и левый соседний узел не присутствует), видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать нулевое значение при извлечении контекста.
[0097] В некоторых примерах, извлечение контекстов может описываться следующим образом:
ctxOffset=0;
if (Exist(left_neighbor) && non-zero(left_neighbor))
{
ctxOffset+=1;
}
else if (Exist(above_neighbor) && non-zero(above_neighbor))
{
ctxOffset+=1;
}
В таких примерах, для несуществующего/недоступного соседнего значения (например, левого соседнего узла относительно значения на левой границе блока), видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать нулевое значение для недоступного значения при извлечении контекста.
[0098] Фиг. 4 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия. Фиг. 4 предоставляется для целей пояснения и не должен считаться ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие описывает видеокодер 200 в контексте стандартов кодирования видео, таких как HEVC-стандарт кодирования видео (H.265) и разрабатываемый VVC-стандарт кодирования видео (H.266). Тем не менее, технологии этого раскрытия не ограничены этими стандартами кодирования видео и являются, в общем, применимыми к кодированию и декодированию видео.
[0099] В примере по фиг. 4, видеокодер 200 включает в себя запоминающее устройство 230 видеоданных, модуль 202 выбора режима, модуль 204 формирования остатков, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных кадров (DPB) и модуль 220 энтропийного кодирования. Любое из запоминающего устройства 230 видеоданных, модуля 202 выбора режима, модуля 204 формирования остатков, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования может реализовываться в одном или более процессоров либо в схеме обработки. Кроме того, видеокодер 200 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.
[0100] Запоминающее устройство 230 видеоданных может сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 200. Видеокодер 200 может принимать видеоданные, сохраненные в запоминающем устройстве 230 видеоданных, например, из видеоисточника 104 (фиг. 1). DPB 218 может выступать в качестве запоминающего устройства опорных кадров, которое сохраняет опорные видеоданные для использования при прогнозировании последующих видеоданных посредством видеокодера 200. Запоминающее устройство 230 видеоданных и DPB 218 могут формироваться посредством любых из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 230 видеоданных и DPB 218 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 230 видеоданных может быть внутримикросхемным с другими компонентами видеокодера 200, как проиллюстрировано, или внемикросхемным относительно этих компонентов.
[0101] В этом раскрытии сущности, ссылка на запоминающее устройство 230 видеоданных не должна интерпретироваться как ограниченная запоминающим устройством, внутренним для видеокодера 200, если не описывается конкретно в таком качестве, или запоминающим устройством, внешним для видеокодера 200, если не описывается конкретно в таком качестве. Наоборот, ссылка на запоминающее устройство 230 видеоданных должна пониматься как опорное запоминающее устройство, которое сохраняет видеоданные, которые видеокодер 200 принимает для кодирования (например, видеоданные для текущего блока, который должен кодироваться). Запоминающее устройство 106 по фиг. 1 также может предоставлять временное хранение выводов из различных модулей видеокодера 200.
[0102] Различные модули по фиг. 4 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0103] Видеокодер 200 может включать в себя арифметико-логические устройства (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеокодера 200 выполняются с использованием программного обеспечения, выполняемого посредством программируемых схем, запоминающее устройство 106 (фиг. 1) может сохранять объектный код программного обеспечения, которое видеокодер 200 принимает и выполняет, или другое запоминающее устройство в видеокодере 200 (не показано) может сохранять такие инструкции.
[0104] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать кадр видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.
[0105] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п.
[0106] Модуль 202 выбора режима, в общем, координирует несколько проходов кодирования, чтобы тестировать комбинации параметров кодирования и результирующих значений искажения в зависимости от скорости передачи для таких комбинаций. Параметры кодирования могут включать в себя сегментацию CTU на CU, режимы прогнозирования для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима в конечном счете может выбирать комбинацию параметров кодирования, имеющих значения искажения в зависимости от скорости передачи, которые лучше других тестированных комбинаций.
[0107] Видеокодер 200 может сегментировать кадр, извлеченный из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в слайсе. Модуль 202 выбора режима может сегментировать CTU кадра в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".
[0108] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать блок прогнозирования для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для внешнего прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одном или более опорных кадров (например, в одном или более ранее кодированных кадров, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.
[0109] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных кадрах относительно позиции текущего блока в текущем кадре. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного внешнего прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного внешнего прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать блок прогнозирования с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для блока прогнозирования согласно одному или более интерполяционных фильтров. Кроме того, для двунаправленного внешнего прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.
[0110] В качестве другого примера, для внутреннего прогнозирующего кодирования или внутреннего прогнозирующего кодирования, модуль 226 внутреннего прогнозирования может формировать блок прогнозирования из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 внутреннего прогнозирования, в общем, может математически комбинировать значения соседних выборок и заполнять эти вычисленные значения в заданном направлении для текущего блока для того, чтобы формировать блок прогнозирования. В качестве другого примера, для DC-режима, модуль 226 внутреннего прогнозирования может вычислять среднее соседних выборок по отношению к текущему блоку и формировать блок прогнозирования, который включает в себя это результирующее среднее для каждой выборки блока прогнозирования.
[0111] Модуль 202 выбора режима предоставляет блок прогнозирования в модуль 204 формирования остатков. Модуль 204 формирования остатков принимает необработанную некодированную версию текущего блока из запоминающего устройства 230 видеоданных и блок прогнозирования из модуля 202 выбора режима. Модуль 204 формирования остатков вычисляет последовательные выборочные разности между текущим блоком и блоком прогнозирования. Результирующие последовательные выборочные разности задают остаточный блок для текущего блока. В некоторых примерах, модуль 204 формирования остатков также может определять разности между выборочными значениями в остаточном блоке, чтобы формировать остаточный блок с использованием остаточной дифференциальной импульсно-кодовой модуляции (RDPCM). В некоторых примерах, модуль 204 формирования остатков может формироваться с использованием одной или более схем вычитателя, которые выполняют двоичное вычитание.
[0112] В примерах, в которых модуль 202 выбора режима сегментирует CU на PU, каждая PU может быть ассоциирована с единицей прогнозирования сигналов яркости и соответствующими единицами прогнозирования сигналов цветности. Видеокодер 200 и видеодекодер 300 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, и размер PU может означать размер единицы прогнозирования сигналов яркости PU. При условии, что размер конкретной CU составляет 2Nx2N, видеокодер 200 может поддерживать PU-размеры в 2Nx2N или NxN для внутреннего прогнозирования и симметричные PU-размеры в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для внешнего прогнозирования. Видеокодер 200 и видеодекодер 300 также могут поддерживать асимметричное сегментирование для PU-размеров в 2NxnU, 2NxnD, nLx2N и nRx2N для внешнего прогнозирования.
[0113] В примерах, в которых модуль выбора режима дополнительно не сегментирует CU на PU, каждая CU может быть ассоциирована с блоком кодирования сигналов яркости и соответствующими блоками кодирования сигналов цветности. Как описано выше, размер CU может означать размер блока кодирования сигналов яркости CU. Видеокодер 200 и видеодекодер 300 могут поддерживать CU-размеры в 2Nx2N, 2NxN или Nx2N.
[0114] Для других технологий кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме на основе линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, через соответствующие модули, ассоциированные с технологиями кодирования, формирует блок прогнозирования для кодируемого текущего блока. В некоторых примерах, таких как кодирование в палитровом режиме, модуль 202 выбора режима может не формировать блок прогнозирования и вместо этого формировать синтаксические элементы, которые указывают способ, которым следует восстанавливать блок на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы в модуль 220 энтропийного кодирования для кодирования.
[0115] Как описано выше, модуль 204 формирования остатков принимает видеоданные для текущего блока и соответствующего блока прогнозирования. Модуль 204 формирования остатков затем формирует остаточный блок для текущего блока. Чтобы формировать остаточный блок, модуль 204 формирования остатков вычисляет последовательные выборочные разности между блоком прогнозирования и текущим блоком.
[0116] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять несколько преобразований для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку. В таких случаях, модуль 206 обработки преобразования может выводить блок коэффициентов, в котором коэффициенты соответствуют остаточным значениям вместо коэффициентов преобразования.
[0117] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы формировать блок квантованных коэффициентов преобразования. Для блока, кодированного в режиме пропуска преобразования, модуль 208 квантования может квантовать коэффициенты в блоке коэффициентов, чтобы формировать блок квантованных коэффициентов. Модуль 208 квантования может квантовать коэффициенты или коэффициенты преобразования согласно значению параметра квантования (QP), ассоциированному с текущим блоком. Видеокодер 200 (например, через модуль 202 выбора режима) может регулировать степень квантования, применяемую посредством регулирования QP-значения, ассоциированного с CU. Квантование может вводить потери информации, и силу этого квантованные коэффициенты или коэффициенты преобразования могут иметь меньшую точность, чем исходные коэффициенты или коэффициенты преобразования, сформированные посредством модуля 206 обработки преобразования.
[0118] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и блока прогнозирования, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из блока прогнозирования, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.
[0119] Модуль 216 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 216 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев CU. Операции модуля 216 фильтрации могут пропускаться в некоторых примерах.
[0120] Видеокодер 200 сохраняет восстановленные блоки в DPB 218. Например, в примерах, в которых операции модуля 216 фильтрации не выполняются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, в которых операции модуля 216 фильтрации выполняются, модуль 216 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорный кадр из DPB 218, сформированного из восстановленных (и потенциально фильтрованных) блоков для того, чтобы внешне прогнозировать блоки последующих кодированных кадров. Помимо этого, модуль 226 внутреннего прогнозирования может использовать восстановленные блоки в DPB 218 текущего кадра, чтобы внутренне прогнозировать другие блоки в текущем кадре.
[0121] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принимаемые из других функциональных компонентов видеокодера 200. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы прогнозирования (например, информацию движения для внешнего прогнозирования или информацию внутреннего режима для внутреннего прогнозирования) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для синтаксических элементов, которые представляют собой другой пример видеоданных, чтобы формировать энтропийно кодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC-операцию, операцию кодирования переменно-переменной (V2V) длины, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию экспоненциального кодирования кодом Голомба или другой тип операции энтропийного кодирования для данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в обходном режиме, в котором синтаксические элементы не подвергаются энтропийному кодированию.
[0122] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки слайса или кадра. В частности, модуль 220 энтропийного кодирования может выводить поток битов.
[0123] Операции, описанные выше, описываются относительно блока. Такое описание должно пониматься как операции для блока кодирования сигналов яркости и/или блоков кодирования сигналов цветности. Как описано выше, в некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности CU. В некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности PU.
[0124] В некоторых примерах, операции, выполняемые относительно блока кодирования сигналов яркости, не должны повторяться для блоков кодирования сигналов цветности. В качестве одного примера, операции для того, чтобы идентифицировать вектор движения (MV) и опорный кадр для блока кодирования сигналов яркости, не должны повторяться для идентификации MV и опорного кадра для блоков сигналов цветности. Наоборот, MV для блока кодирования сигналов яркости может масштабироваться с возможностью определять MV для блоков сигналов цветности, и опорный кадр может быть идентичным. В качестве другого примера, процесс внутреннего прогнозирования может быть идентичным для блоков кодирования сигналов яркости и блоков кодирования сигналов цветности.
[0125] Видеокодер 200 представляет пример устройства для кодирования видеоданных, которое включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения. Первый соседний коэффициент, например, может представлять собой одно из верхнего соседнего коэффициента или левого соседнего коэффициента, и второй соседний коэффициент может представлять собой другое из верхнего соседнего коэффициента или левого соседнего коэффициента.
[0126] Чтобы кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения, видеокодер 200 может быть выполнен с возможностью определять контекст на основе определенного контекстного смещения, определять знак для коэффициента, в данный момент кодируемого, и контекстно кодировать один или более бинов данных на основе определенного контекста, чтобы представлять знак для коэффициента, в данный момент кодируемого. Видеокодер 200 может быть выполнен с возможностью квантовать остаточное значение для остаточного блока видеоданных, чтобы определять значение для коэффициента, в данный момент кодируемого. Видеокодер 200 может быть выполнен с возможностью определять блок прогнозирования и сравнивать блок прогнозирования с исходным блоком видеоданных, чтобы определять остаточный блок видеоданных.
[0127] Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью выбирать контекстное смещение из трех доступных контекстных смещений на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента. Три доступных контекстных смещения могут включать в себя первое контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки; второе контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, и другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и третье контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, и другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным.
[0128] Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента, равное нулю, и на значение для второго соседнего коэффициента, равное нулю. Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента, составляющее одно из больше нуля или меньше нуля, и значение для второго соседнего коэффициента, составляющее другое из больше нуля или меньше нуля.
[0129] Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента и значение для второго соседнего коэффициента, составляющие ненулевые значения и имеющие противоположные знаки. Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным второму значению смещения в ответ на значение для первого соседнего коэффициента, большее или равное нулю, и значение для второго соседнего коэффициента, большее или равное нулю, при этом по меньшей мере одно из значения для первого соседнего коэффициента или значения для второго соседнего коэффициента больше или равно единице.
[0130] Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным второму значению смещения в ответ на значение для первого соседнего коэффициента и значение для второго соседнего коэффициента, составляющие неотрицательные значения. Чтобы определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеокодер 200 может быть выполнен с возможностью задавать значение контекстного смещения равным третьему значению смещения в ответ на значение для первого соседнего коэффициента, меньшее или равное нулю, и значение для второго соседнего коэффициента, меньшее или равное нулю, при этом значение для первого соседнего коэффициента или значение для второго соседнего коэффициента меньше или равно отрицательной единице (-1). Первое, второе и третье значения смещения, например, могут составлять различные значения смещения. Контекстное смещение составляет значение для определения контекста. Таким образом, может считаться, что первое, второе и третье значения смещения идентифицируют или ссылаются на три различных контекста.
[0131] Видеокодер 200 также представляет пример устройства, выполненного с возможностью кодировать видеоданные, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, уровень абсолютных коэффициентов для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять уровень абсолютных коэффициентов для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого; определять уровень абсолютных коэффициентов для коэффициента, в данный момент кодируемого; и на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента, кодировать один или более синтаксических элементов, указывающих уровень абсолютных коэффициентов для коэффициента, в данный момент кодируемого. Видеокодер 200, например, может квантовать остаточное значение для остаточного блока видеоданных, чтобы определять значение для коэффициента, в данный момент кодируемого.
[0132] В некоторых примерах, видеокодер 200 может быть выполнен с возможностью определять уровень предикторов на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента и кодировать синтаксический элемент с первым значением для синтаксического элемента, указывающим то, что уровень предикторов равен уровню абсолютных коэффициентов для коэффициента, в данный момент кодируемого, и вторым значением для синтаксического элемента, указывающим то, что уровень предикторов не равен уровню абсолютных коэффициентов для коэффициента, в данный момент кодируемого. В некоторых примерах, видеокодер 200, например, может быть выполнен с возможностью определять уровень предикторов на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента, определять значение для синтаксического элемента на основе уровня предикторов и уровня абсолютных коэффициентов для коэффициента, в данный момент кодируемого, и кодировать синтаксический элемент. Чтобы определять уровень предикторов, видеокодер 200 может быть выполнен с возможностью задавать уровень предикторов, равный большему из уровня абсолютных коэффициентов для первого соседнего коэффициента или уровня абсолютных коэффициентов для второго соседнего коэффициента.
[0133] Фиг. 5 является блок-схемой, иллюстрирующей примерный видеодекодер 300, который может выполнять технологии этого раскрытия. Фиг. 5 предоставляется для целей пояснения и не является ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие описывает видеодекодер 300 согласно технологиям JEM, VVC и HEVC. Тем не менее, технологии этого раскрытия могут выполняться посредством устройств кодирования видео, которые сконфигурированы для других стандартов кодирования видео.
[0134] В примере по фиг. 5, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных кадров (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных кадров (DPB). Любое из запоминающего CPB-устройства 320, модуля 302 энтропийного декодирования, модуля 304 обработки прогнозирования, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 может реализовываться в одном или более процессоров или в схеме обработки. Кроме того, видеодекодер 300 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.
[0135] Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя дополнительные модули для того, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.
[0136] Запоминающее CPB-устройство 320 может сохранять видеоданные, такие как кодированный поток битов видео, который должен декодироваться посредством компонентов видеодекодера 300. Видеоданные, сохраненные в запоминающем CPB-устройстве 320, могут получаться, например, из считываемого компьютером носителя 110 (фиг. 1). Запоминающее CPB-устройство 320 может включать в себя CPB, который сохраняет кодированные видеоданные (например, синтаксические элементы) из кодированного потока битов видео. Кроме того, запоминающее CPB-устройство 320 может сохранять видеоданные, отличные от синтаксических элементов кодированного кадра, такие как временные данные, представляющие выводы из различных модулей видеодекодера 300. DPB 314, в общем, сохраняет декодированные кадры, которые видеодекодер 300 может выводить и/или использовать в качестве опорных видеоданных при декодировании последующих данных или кадров кодированного потока битов видео. Запоминающее CPB-устройство 320 и DPB 314 могут формироваться посредством любого из множества запоминающих устройств, таких как DRAM, SDRAM, MRAM, RRAM или другие типы запоминающих устройств. Запоминающее CPB-устройство 320 и DPB 314 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее CPB-устройство 320 может быть внутримикросхемным с другими компонентами видеодекодера 300 или внемикросхемным относительно этих компонентов.
[0137] Дополнительно или альтернативно, в некоторых примерах, видеодекодер 300 может извлекать кодированные видеоданные из запоминающего устройства 120 (фиг. 1). Таким образом, запоминающее устройство 120 может сохранять данные, как пояснено выше для запоминающего CPB-устройства 320. Аналогично, запоминающее устройство 120 может сохранять инструкции, которые должны выполняться посредством видеодекодера 300, когда часть или вся функциональность видеодекодера 300 реализуется в программном обеспечении для выполнения посредством схемы обработки видеодекодера 300.
[0138] Различные модули, показанные на фиг. 5, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 4, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0139] Видеодекодер 300 может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеодекодера 300 выполняются посредством программного обеспечения, выполняющегося в программируемых схемах, внутримикросхемное или внемикросхемное запоминающее устройство может сохранять инструкции (например, объектный код) программного обеспечения, которые принимает и выполняет видеодекодер 300.
[0140] Модуль 302 энтропийного декодирования может принимать кодированные видеоданные из CPB и энтропийно декодировать видеоданные, чтобы воспроизводить синтаксические элементы. Модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут формировать декодированные видеоданные на основе синтаксических элементов, извлеченных из потока битов.
[0141] В общем, видеодекодер 300 восстанавливает кадр на поблочной основе. Видеодекодер 300 может выполнять операцию восстановления для каждого блока отдельно (причем блок, в данный момент восстанавливаемый, т.е. декодируемый, может называться "текущим блоком").
[0142] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, задающие квантованные коэффициенты блока квантованных коэффициентов, а также информацию преобразования, такую как параметр квантования (QP) и/или индикатор(ы) режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов, чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 306 обратного квантования, которая должна применяться. Модуль 306 обратного квантования, например, может выполнять операцию побитового сдвига влево, чтобы обратно квантовать коэффициенты преобразования. Модуль 306 обратного квантования в силу этого может формировать блок коэффициентов, включающий в себя коэффициенты.
[0143] После того, как модуль 306 обратного квантования формирует блок коэффициентов для блока, который преобразуется, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования. Для блоков, которые кодируются в режиме пропуска преобразования, модуль 308 обработки обратного преобразования может не выполнять обратное преобразование и, в этих сценариях кодирования, может рассматриваться в качестве транзитного модуля, которая не обрабатывает или не изменяет блок коэффициентов.
[0144] Кроме того, модуль 304 обработки прогнозирования формирует блок прогнозирования согласно синтаксическим элементам с информацией прогнозирования, которые энтропийно декодированы посредством модуля 302 энтропийного декодирования. Например, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внешне прогнозируется, модуль 316 компенсации движения может формировать блок прогнозирования. В этом случае, синтаксические элементы с информацией прогнозирования могут указывать опорный кадр в DPB 314, из которого можно извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорном кадре относительно местоположения текущего блока в текущем кадре. Модуль 316 компенсации движения, в общем, может выполнять процесс внешнего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 224 компенсации движения (фиг. 4).
[0145] В качестве другого примера, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внутренне прогнозируется, модуль 318 внутреннего прогнозирования может формировать блок прогнозирования согласно режиму внутреннего прогнозирования, указываемому посредством синтаксических элементов с информацией прогнозирования. С другой стороны, модуль 318 внутреннего прогнозирования, в общем, может выполнять процесс внутреннего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 226 внутреннего прогнозирования (фиг. 4). Модуль 318 внутреннего прогнозирования может извлекать данные соседних выборок по отношению к текущему блоку из DPB 314.
[0146] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока прогнозирования и остаточного блока. Например, модуль 310 восстановления может суммировать выборки остаточного блока с соответствующими выборками блока прогнозирования для того, чтобы восстанавливать текущий блок.
[0147] Модуль 312 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 312 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.
[0148] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Например, в примерах, в которых операции модуля 312 фильтрации не выполняются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, в которых операции модуля 312 фильтрации выполняются, модуль 312 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущего кадра для внутреннего прогнозирования и ранее декодированных кадров для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные кадры из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.
[0149] Видеодекодер 300 представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения. Первый соседний коэффициент, например, может представлять собой одно из верхнего соседнего коэффициента или левого соседнего коэффициента, и второй соседний коэффициент может представлять собой другое из верхнего соседнего коэффициента или левого соседнего коэффициента. Как описано выше, для остаточных блоков, кодированных в режиме пропуска преобразования, значение коэффициента может соответствовать остаточному значению, к примеру, квантованному остаточному значению или неквантованному остаточному значению.
[0150] Чтобы декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения, видеодекодер 300 может быть выполнен с возможностью определять контекст на основе определенного контекстного смещения; принимать один или более бинов данных; и контекстно декодировать один или более бинов данных на основе определенного контекста, чтобы определять знак для коэффициента, в данный момент декодируемого. Видеодекодер 300 может быть выполнен с возможностью обратно квантовать значение для коэффициента, в данный момент декодируемого, чтобы определять остаточное значение для остаточного блока видеоданных. Видеодекодер 300 может быть выполнен с возможностью определять декодированный остаточный блок на основе значения для коэффициента, в данный момент декодируемого; суммировать декодированный остаточный блок с блоком прогнозирования, чтобы определять восстановленный блок; выполнять одну или более операций фильтрации в отношении восстановленного блока для того, чтобы определять декодированный блок видеоданных; и выводить декодированный кадр видеоданных, который включает в себя декодированный блок видеоданных.
[0151] Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью выбирать контекстное смещение из трех доступных контекстных смещений на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента. Три доступных контекстных смещения могут включать в себя первое контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки, второе контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, и другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным, и третье контекстное смещение для того, когда первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, и другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным.
[0152] Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента, равное нулю, и на значение для второго соседнего коэффициента, равное нулю. Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента, составляющее одно из больше нуля или меньше нуля, и значение для второго соседнего коэффициента, составляющее другое из больше нуля или меньше нуля. Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным первому значению смещения в ответ на значение для первого соседнего коэффициента и значение для второго соседнего коэффициента, составляющие ненулевые значения и имеющие противоположные знаки.
[0153] Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным второму значению смещения в ответ на значение для первого соседнего коэффициента, большее или равное нулю, и значение для второго соседнего коэффициента, большее или равное нулю, причем по меньшей мере одно из значения для первого соседнего коэффициента или значения для второго соседнего коэффициента больше или равно единице. Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным второму значению смещения в ответ на значение для первого соседнего коэффициента и значение для второго соседнего коэффициента, составляющие неотрицательные значения. Чтобы определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, видеодекодер 300 может быть выполнен с возможностью задавать значение контекстного смещения равным третьему значению смещения в ответ на значение для первого соседнего коэффициента, меньшее или равное нулю, и значение для второго соседнего коэффициента, меньшее или равное нулю, при этом значение для первого соседнего коэффициента или значение для второго соседнего коэффициента меньше или равно отрицательной единице (-1).
[0154] Видеодекодер 300 также представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, уровень абсолютных коэффициентов для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определять уровень абсолютных коэффициентов для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; и определять уровень абсолютных коэффициентов для коэффициента, в данный момент декодируемого, на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента. Видеодекодер 300, например, может обратно квантовать коэффициент, в данный момент декодируемый, чтобы определять остаточное значение для остаточного блока видеоданных.
[0155] Чтобы определять уровень абсолютных коэффициентов для коэффициента, в данный момент декодируемого, видеодекодер 300 может быть выполнен с возможностью определять уровень предикторов на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента и принимать синтаксический элемент с первым значением для синтаксического элемента, указывающим то, что уровень предикторов равен уровню абсолютных коэффициентов для коэффициента, в данный момент декодируемого, и вторым значением для синтаксического элемента, указывающим то, что уровень предикторов не равен уровню абсолютных коэффициентов для коэффициента, в данный момент декодируемого. Чтобы определять уровень абсолютных коэффициентов для коэффициента, в данный момент декодируемого, видеодекодер 300 может быть выполнен с возможностью определять уровень предикторов на основе уровня абсолютных коэффициентов для первого соседнего коэффициента и уровня абсолютных коэффициентов для второго соседнего коэффициента, принимать синтаксический элемент и определять уровень абсолютных коэффициентов для коэффициента, в данный момент декодируемого, на основе уровня предикторов и синтаксического элемента. Чтобы определять уровень предикторов, видеодекодер 300 может задавать уровень предикторов, равный большему из уровня абсолютных коэффициентов для первого соседнего коэффициента или уровня абсолютных коэффициентов для второго соседнего коэффициента.
[0156] Фиг. 6A и 6B показывают примеры CABAC-процесса в бине n. В примере 400 по фиг. 6A, диапазон в бине n включает в себя RangeMPS и RangeLPS, заданные посредством вероятности (pσ) наименее вероятного символа (LPS), с учетом определенного контекстного состояния (σ). Пример 400 показывает обновление диапазона в бине n+1, когда значение бина n равно наиболее вероятному символу (MPS). В этом примере, низкое значение диапазона остается идентичным, но значение диапазона в бине n+1 уменьшается до значения RangeMPS в бине n. Пример 402 по фиг. 6B показывает обновление диапазона в бине n+1, когда значение бина n не равно MPS (т.е. равно LPS). В этом примере, низкое значение диапазона перемещается к более низкому значению диапазона в RangeLPS в бине n. Помимо этого, значение диапазона в бине n+1 уменьшается до значения в RangeLPS в бине n.
[0157] В одном примере процесса HEVC-кодирования видео, диапазон выражается с помощью 9 битов, а низкое значение с помощью 10 битов. Предусмотрен процесс ренормализации для того, чтобы поддерживать значения диапазона и низкого уровня с достаточной точностью. Ренормализация возникает каждый раз, когда диапазон меньше 256. Следовательно, диапазон всегда равен или выше 256 после ренормализации. В зависимости от значений диапазона и низкого значения, двоичный арифметический кодер (BAC) выводит в поток битов "0" или "1" либо обновляет внутреннюю переменную (называемую "BO: с незавершенными битами"), с поддержкой будущих выводов. Фиг. 7 показывает примеры BAC-вывода в зависимости от диапазона. Например, "1" выводится в поток битов, когда диапазон и низкое значение составляют выше определенного порогового значения (например, 512). "0" выводится в поток битов, когда диапазон и низкое значение составляют ниже определенного порогового значения (например, 512). Ничего не выводится в поток битов, когда диапазон и низкий уровень составляют между определенными пороговыми значениями. Вместо этого, BO-значение постепенно увеличивается, и следующий бин кодируется.
[0158] В контекстной CABAC-модели H.264/AVC и в некоторых примерах HEVC, предусмотрено 128 состояний. Предусмотрено 64 возможных LPS-вероятности (обозначаемых посредством состояния σ), которые могут составлять от 0 до 63. Каждый MPS может быть равен нулю или единице. В связи с этим, 128 состояний представляют собой 64 вероятности состояний, умноженные на 2 возможных значения для MPS (0 или 1). Следовательно, состояние может индексироваться с помощью 7 битов.
[0159] Чтобы уменьшать объем вычислений для извлечения LPS-диапазонов (rangeLPSσ), результаты для всех случаев могут предварительно вычисляться и сохраняться в качестве аппроксимаций в таблице поиска. Следовательно, LPS-диапазон может получаться вообще без умножения посредством использования простого табличного поиска. Исключение умножения может быть важным для некоторых устройств или приложений, поскольку эта операция может вызывать значимую задержку во многих аппаратных архитектурах.
[0160] 4-столбцовая предварительно вычисленная таблица LPS-диапазонов может использоваться вместо умножения. Диапазон разделяется на четыре сегмента. Индекс сегмента может извлекаться посредством вопроса (range>>6)&3. Фактически, индекс сегмента извлекается посредством сдвига и отбрасывания битов из фактического диапазона. Следующая таблица 1 показывает возможные диапазоны и их соответствующие индексы.
Таблица 1. Индекс диапазонов
[0161] Таблица LPS-диапазонов в таком случае имеет 64 записи (по одной для каждого вероятностного состояния), умноженные на 4 (по одному для каждого индекса диапазона). Каждая запись представляет собой LPS диапазона, т.е. значение умножения диапазона на LPS-вероятность. Пример части этой таблицы показывается в следующей таблице 2. Таблица 2 иллюстрирует вероятностные состояния 9-12. В одном предложении по HEVC, вероятностные состояния могут колебаться от 0-63.
Таблица 2. RangeLPS
[0162] В каждом сегменте (т.е. при каждом значении диапазона), LPS-диапазон каждого вероятностного состояния σ предварительно задается. Другими словами, LPS-диапазон вероятностного состояния σ квантуется в четыре значения (т.е. по одному значению для каждого индекса диапазонов). Конкретный LPS-диапазон, используемый в данной точке, зависит от диапазона, которому принадлежит сегмент. Число возможных LPS-диапазонов, используемых в таблице, представляет собой компромисс между числом столбцов таблицы (т.е. числом возможных значений LPS-диапазона) и точностью LPS-диапазона. Вообще говоря, большее количество столбцов приводит к меньшим ошибкам квантования значений LPS-диапазона, но также и увеличивает потребность в большем объеме запоминающего устройства для того, чтобы сохранять таблицу. Меньшее количество столбцов увеличивает ошибки квантования, но также и уменьшает объем запоминающего устройства, требуемый для того, чтобы сохранять таблицу.
[0163] Как описано выше, каждое вероятностное LPS-состояние имеет соответствующую вероятность. Вероятность p для каждого состояния извлекается следующим образом:
pσ=α*pσ-1,
где состояние σ составляет от 0 до 63. Константа α представляет величину изменения вероятности между каждым контекстным состоянием. В одном примере, α=0,9493, либо, более точно, α=(0,01875/0,5)1/63. Вероятность в состоянии σ=0 равна 0,5 (т.е. p0=1/2). Таким образом, в контекстном состоянии 0, LPS и MPS являются одинаково вероятными. Вероятность в каждом последовательном состоянии извлекается посредством умножения предыдущего состояния на α. В связи с этим вероятность появления LPS в контекстном состоянии α=1 составляет p0*0,9493 (0,5*0,9493=0,47465). В связи с этим, по мере того, как индекс состояния α увеличивается, вероятность появления LPS понижается.
[0164] CABAC является адаптивным, поскольку вероятностные состояния обновляются таким образом, что они соответствуют статистике по сигналам (т.е. значениям ранее кодированных бинов). Процесс обновления заключается в следующем. Для данного вероятностного состояния, обновление зависит от индекса состояния и значения кодированного символа, идентифицированного в качестве LPS или в качестве MPS. Как результат процесса обновления, извлекается новое вероятностное состояние, которое состоит из потенциально модифицированной оценки LPS-вероятности и, при необходимости, модифицированного MPS-значения.
[0165] В случае значения бина, равного MPS, данный индекс состояния может постепенно увеличиваться на 1. Это актуально для всех состояний, кроме тех случаев, когда MPS возникает при индексе 62 состояния, при котором LPS-вероятность уже является минимальной (или эквивалентно, максимальная MPS-вероятность достигается). В этом случае, индекс 62 состояния остается фиксированным до тех пор, пока LPS не наблюдается либо значение последнего бина не кодируется (состояние 63 используется для частного случая значения последнего бина). Когда LPS возникает, индекс состояния изменяется посредством постепенного уменьшения индекса состояния на определенную величину, как показано в нижеприведенном уравнении. Это правило, в общем, применяется к каждому возникновению LPS со следующим исключением. При условии, что LPS кодирован в состоянии с индексом σ=0, что соответствует равновероятному случаю, индекс состояния остается фиксированным, но MPS-значение должно переключаться таким образом, что значение LPS и MPS должно меняться местами. Во всех остальных случаях, независимо от того, какой символ кодирован, MPS-значение не должно изменяться. Извлечение правил перехода для LPS-вероятности основано на следующем отношении между данной LPS-вероятностью pold и ее обновленным дубликатом pnew:
pnew=max(α pold, p62), если возникает MPS
pnew=(1-α)+α pold, если возникает LPS
[0166] Относительно практической реализации процесса оценки вероятности в CABAC важно отметить, что все правила перехода могут быть реализованы посредством самое большее двух таблиц, имеющих 63 записи 6-битовых целочисленных значений без знака. В некоторых примерах, переходы состояния могут определяться с помощью одной таблицы TransIdxLPS, которая определяет, для данного индекса σ состояния, новый обновленный индекс TransIdxLPS[σ] состояния в случае, если наблюдается LPS. MPS-обусловленные переходы могут получаться посредством простого (насыщенного) приращения индекса состояния на фиксированное значение в 1, что приводит к обновленному индексу min(σ+1, 62) состояния. Нижеприведенная таблица 3 представляет собой пример частичной таблицы TransIdxLPS.
Таблица 3. TransIdxLPS
[0167] Технологии, описанные выше относительно фиг. 6A, 6B и 7, представляют просто одну примерную реализацию CABAC. Следует понимать, что технологии этого раскрытия не ограничены только этой описанной реализацией CABAC. Например, в устаревших BAC-подходах (например, в BAC-подходе, используемому в H.264/AVC), таблицы RangeLPS и TransIdxLPS настроены для видео низкого разрешения (т.е. для видео в общем промежуточном формате (CIF) и в четверть-CIF-формате (QCIF)). В HEVC- и будущих кодеках, таких как VVC, большой объем видеоконтента имеет высокую четкость (HD) и, в некоторых случаях, более чем HD. Видеоконтент, который имеет HD- или более чем HD-разрешение, имеет тенденцию иметь статистику, отличную от статистики 10-летних QCIF-последовательностей, используемых для того, чтобы разрабатывать H.264/AVC. В связи с этим, таблицы RangeLPS и TransIdxLPS из H.264/AVC могут вызывать адаптацию между состояниями таким способом, который слишком является быстрым. Таким образом, переходы между вероятностными состояниями, в частности, когда LPS возникает, могут быть слишком большими для более плавного контента более высокого разрешения HD-видео. Таким образом, вероятностные модели, используемые согласно традиционным технологиям, могут не быть настолько точными для HD- и сверхHD-контента. Помимо этого, поскольку HD-видеоконтент включает в себя больший диапазон пиксельных значений, таблицы H.264/AVC не включают в себя достаточное количество записей для того, чтобы учитывать более экстремальные значения, которые могут присутствовать в HD-контенте.
[0168] В связи с этим, для HEVC и для будущих стандартов кодирования, таких как VVC, таблицы RangeLPS и TransIdxLPS могут модифицироваться с возможностью учитывать характеристики этого нового контента. В частности, BAC-процессы для HEVC и будущих стандартов кодирования могут использовать таблицы, которые предоставляют возможность более медленного процесса адаптации и могут учитывать более крайние случаи (т.е. скошенные вероятности). Таким образом, в качестве одного примера, таблицы RangeLPS и TransIdxLPS могут модифицироваться с возможностью достигать этих целей за счет включения большего числа вероятностных состояний и диапазонов, чем используются в BAC для H.264/AVC или HEVC.
[0169] Фиг. 8 является блок-схемой примерного модуля 220 энтропийного кодирования, например, составляющего часть видеокодера 200, как показано на фиг. 4, который может быть выполнен с возможностью выполнять CABAC в соответствии с технологиями этого раскрытия. Синтаксический элемент 418 вводится в модуль 220 энтропийного кодирования. Если синтаксический элемент уже представляет собой двоичнозначный синтаксический элемент (т.е. синтаксический элемент, который имеет только значение в нуль и единицу), этап бинаризации может пропускаться. Если синтаксический элемент представляет собой недвоичнозначный синтаксический элемент (например, синтаксический элемент, представленный посредством нескольких битов, к примеру, уровней коэффициентов), недвоичнозначный синтаксический элемент преобразуется в двоичную форму посредством модуля 420 бинаризации. Модуль 420 бинаризации выполняет преобразование недвоичнозначного синтаксического элемента в последовательность двоичных решений. Эти двоичные решения зачастую называются "бинами". Например, для уровней коэффициентов, значение уровня может разбиваться на последовательные бины, причем каждый бин указывает то, превышает или нет абсолютное значение уровня коэффициентов некоторое значение. Например, бин 0 (иногда называемый "флагом значимости") указывает то, превышает абсолютное значение уровня коэффициентов 0 или нет. Бин 1 указывает то, превышает абсолютное значение уровня коэффициентов 1 или нет, и т.д. Уникальное преобразование может разрабатываться для каждого недвоичнозначного синтаксического элемента.
[0170] Каждый бин, сформированный посредством модуля 420 бинаризации, подается в сторону двоичного арифметического кодирования модуля 220 энтропийного кодирования. Таким образом, для предварительно определенного набора недвоичнозначных синтаксических элементов, каждый тип бина (например, бина 0) кодируется перед типом следующего бина (например, бина 1). Кодирование может выполняться в регулярном режиме или в обходном режиме. В обходном режиме, механизм 426 обходного кодирования выполняет арифметическое кодирование с использованием фиксированной вероятностной модели, например, с использованием кодирования кодом Голомба-Райса или экспоненциальным кодом Голомба. Обходной режим в общем, используется для более прогнозируемых синтаксических элементов.
[0171] Кодирование в регулярном режиме заключает в себе выполнение CABAC. CABAC в регулярном режиме служит для кодирования значений бинов, при котором вероятность значения бина является прогнозируемой, с учетом значений ранее кодированных бинов. Вероятность равенства LPS бина определяется посредством модуля 422 контекстного моделирования. Модуль 422 контекстного моделирования выводит значение бина и контекстную модель (например, вероятностное состояние σ). Контекстная модель может представлять собой начальную контекстную модель для последовательности бинов или может определяться на основе кодированных значений ранее кодированных бинов. Как описано выше, модуль контекстного моделирования может обновлять состояние на основе того, представляет собой ранее кодированный бин MPS или LPS.
[0172] После того, как контекстная модель и вероятностное состояние σ определяются посредством модуля 422 контекстного моделирования, механизм 424 регулярного кодирования выполняет BAC для значения бина. Согласно технологиям этого раскрытия, механизм 424 регулярного кодирования выполняет BAC с использованием таблицы 430 TransIdxLPS, которая включает в себя более 64 вероятностных состояний σ. В одном примере, число вероятностных состояний равно 128. TransIdxLPS используется для того, чтобы определять то, какое вероятностное состояние используется для следующего бина (бина n+1), когда предыдущий бин (бин n) представляет собой LPS. Механизм 424 регулярного кодирования также может использовать таблицу 428 RangeLPS для того, чтобы определять значение диапазона для LPS с учетом конкретного вероятностного состояния σ. Тем не менее, согласно технологиям этого раскрытия, вместо использования всех возможных вероятностных состояний σ таблицы 430 TransIdxLPS, индексы σ вероятностных состояний преобразуются в сгруппированные индексы для использования в таблице RangeLPS. Таким образом, каждый индекс в таблице 428 RangeLPS может представлять два или более из общего числа вероятностных состояний. Преобразование индекса σ вероятностного состояния в сгруппированные индексы может быть линейным (например, посредством деления на два) либо может быть нелинейным (например, как логарифмическая функция или таблица преобразования).
[0173] В других примерах раскрытия, разность между последовательными вероятностными состояниями может задаваться меньшей посредством задания параметра α таким образом, что он больше 0,9493. В одном примере, α=0,9689. В другом примере раскрытия, наибольшая вероятность (p0) появления LPS может задаваться ниже 0,5. В одном примере, p0 может быть равна 0,493.
[0174] В соответствии с одной или более технологий этого раскрытия, в отличие от использования идентичного значения переменной, используемой для того, чтобы обновлять вероятностное состояние в процессе двоичного арифметического кодирования (например, одного или более из размера окна кодирования со взвешиванием, коэффициента (α) масштабирования и скорости обновления вероятности), модуль 220 энтропийного кодирования может использовать различные значения переменной для различных контекстных моделей и/или различных синтаксических элементов. Например, модуль 220 энтропийного кодирования может определять, для контекстной модели из множества контекстных моделей, значение переменной, используемой для того, чтобы обновлять вероятностное состояние в процессе двоичного арифметического кодирования, и обновлять вероятностное состояние на основе определенного значения.
[0175] Фиг. 9 является блок-схемой примерного модуля 302 энтропийного декодирования, например, составляющего часть видеодекодера 300, как показано на фиг. 5, который может быть выполнен с возможностью выполнять CABAC в соответствии с технологиями этого раскрытия. Модуль 302 энтропийного декодирования по фиг. 9 выполняет CABAC обратным способом по отношению к способу для модуля 220 энтропийного кодирования, описанного на фиг. 8. Кодированные биты из потока 448 битов вводятся в модуль 302 энтропийного декодирования. Кодированные биты подаются в модуль 450 контекстного моделирования или в механизм 452 обходного декодирования на основе того, кодированные биты энтропийно кодированы с использованием обходного режима или регулярного режима. Если кодированные биты кодированы в обходном режиме, механизм 452 обходного декодирования, например, может использовать декодирование кодом Голомба-Райса или экспоненциальным кодом Голомба для того, чтобы извлекать двоичнозначные синтаксические элементы или бины недвоичных синтаксических элементов.
[0176] Если кодированные биты кодированы в регулярном режиме, модуль 450 контекстного моделирования может определять вероятностную модель для кодированных битов, и механизм 454 регулярного декодирования может декодировать кодированные биты для того, чтобы формировать бины недвоичнозначных синтаксических элементов (либо непосредственно синтаксические элементы, если двоичнозначные). После того, как контекстная модель и вероятностное состояние σ определяются посредством модуля 450 контекстного моделирования, механизм 454 регулярного декодирования выполняет BAC для значения бина. Согласно технологиям этого раскрытия, механизм 454 регулярного декодирования выполняет BAC с использованием таблицы 458 TransIdxLPS, которая включает в себя более 64 вероятностных состояний σ. В одном примере, число вероятностных состояний равно 128, хотя другие числа вероятностных состояний могут задаваться в соответствии с технологиями этого раскрытия. Таблица 458 TransIdxLPS используется для того, чтобы определять то, какое вероятностное состояние используется для следующего бина (бина n+1), когда предыдущий бин (бин n) представляет собой LPS. Механизм 454 регулярного декодирования также может использовать таблицу 456 RangeLPS для того, чтобы определять значение диапазона для LPS с учетом конкретного вероятностного состояния σ. Тем не менее, согласно технологиям этого раскрытия, вместо использования всех возможных вероятностных состояний σ таблицы 458 TransIdxLPS, индексы σ вероятностных состояний преобразуются в сгруппированные индексы для использования в таблице 456 RangeLPS. Таким образом, каждый индекс в таблице 456 RangeLPS может представлять два или более из общего числа вероятностных состояний. Преобразование индекса σ вероятностного состояния в сгруппированные индексы может быть линейным (например, посредством деления на два) либо может быть нелинейным (например, как логарифмическая функция или таблица преобразования).
[0177] В других примерах раскрытия, разность между последовательными вероятностными состояниями может задаваться меньшей посредством задания параметра α таким образом, что он больше 0,9493. В одном примере, α=0,9689. В другом примере раскрытия, наибольшая вероятность (p0) появления LPS может задаваться ниже 0,5. В одном примере, p0 может быть равна 0,493.
[0178] После того, как бины декодируются посредством механизма 454 регулярного декодирования, модуль 460 обратной бинаризации может выполнять обратное преобразование для того, чтобы преобразовывать бины обратно в значения недвоичнозначных синтаксических элементов.
[0179] Фиг. 10 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока. Текущий блок может содержать текущую CU. Хотя описывается относительно видеокодера 200 (фиг. 1 и 4), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 10.
[0180] В этом примере, видеокодер 200 первоначально прогнозирует текущий блок (550). Например, видеокодер 200 может формировать блок прогнозирования для текущего блока. Видеокодер 200 затем может вычислять остаточный блок для текущего блока (552). Чтобы вычислять остаточный блок, видеокодер 200 может вычислять разность между исходным, некодированным блоком и блоком прогнозирования для текущего блока. Видеокодер 200 затем может преобразовывать и квантовать коэффициенты остаточного блока (554). В некоторых режимах кодирования, к примеру, в режиме пропуска преобразования, видеокодер 200 может пропускать преобразование и только квантовать остаточные данные. Затем, видеокодер 200 может сканировать квантованные коэффициенты остаточного блока (556). В ходе сканирования или после сканирования, видеокодер 200 может энтропийно кодировать коэффициенты (558). Например, видеокодер 200 может кодировать коэффициенты с использованием CAVLC или CABAC. Видеокодер 200 затем может выводить энтропийно кодированные данные коэффициентов (560).
[0181] Фиг. 11 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных. Текущий блок может содержать текущую CU. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 5), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 11.
[0182] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (570). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты остаточного блока (572). Видеодекодер 300 может прогнозировать текущий блок (574), например, с использованием режима внутреннего или внешнего прогнозирования, как указано посредством информации прогнозирования для текущего блока для того, чтобы вычислять блок прогнозирования для текущего блока. Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты (576), чтобы создавать блок квантованных коэффициентов. Видеодекодер 300 затем может обратно квантовать и обратно преобразовывать коэффициенты для того, чтобы формировать остаточный блок (578). В некоторых режимах кодирования, к примеру, в режиме пропуска преобразования, видеодекодер 300 может пропускать обратное преобразование и только обратно квантовать коэффициенты. Видеодекодер 300 может, в конечном счете, декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (580).
[0183] Фиг. 12 является блок-схемой последовательности операций, иллюстрирующей примерный способ для определения контекста для кодирования (например, кодирования или декодирования) знака коэффициента остаточного блока. Остаточный блок, например, может представлять собой остаточный блок с пропуском преобразования. В дальнейшем технологии по фиг. 12 описываются относительно общего видеокодера, который может соответствовать либо видеокодеру, такому как видеокодер 200, либо видеодекодеру, такому как видеодекодер 300. Тем не менее, следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять способ, аналогичный способу по фиг. 12.
[0184] Видеокодер определяет значение (X0) для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого (600). Видеокодер определяет значение (X1) для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого (602). В ответ на то, что X0 и X1 равны нулю (604, "Да"), видеокодер задает контекст для кодирования знака коэффициента, в данный момент кодируемого, в качестве первого контекста (606). В ответ на то, что по меньшей мере одно из X0 или X1 не равно нулю (604, "Нет"), но X0 и X1 имеют противоположные знаки (608, "Да"), видеокодер также задает контекст для кодирования знака коэффициента, в данный момент кодируемого, в качестве первого контекста (610).
[0185] ). В ответ на то, что по меньшей мере одно из X0 или X1 не равно нулю (604, "Нет"), X0 и X1 не имеют противоположные знаки (608, "Нет"), и одно из X0 или X1 больше нуля (612, "Да"), видеокодер задает контекст для кодирования знака коэффициента, в данный момент кодируемого, в качестве второго контекста, отличающегося от первого контекста (614). В ответ на то, что по меньшей мере одно из X0 или X1 не равно нулю (604, "Нет"), X0 и X1 не имеют противоположные знаки (608, "Нет"), и ни X0, ни X1 не больше нуля (612, "Нет"), видеокодер задает контекст для кодирования знака коэффициента, в данный момент кодируемого, в качестве третьего контекста, отличающегося от первого или второго контекста (616).
[0186] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.
[0187] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и выполняться посредством аппаратного модуля обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любую среду, которая упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0188] В качестве примера, а не ограничения, эти считываемые компьютером носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.
[0189] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термины "процессор" и "схема обработки", при использовании в данном документе могут означать любую из вышеприведенных структур или любую другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схем или логических элементов.
[0190] Технологии этого раскрытия могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0191] Выше описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.
Изобретение относится к кодированию и декодированию видео. Технический результат заключается в повышении эффективности кодирования и декодирования видео. Такой результат обеспечивается за счет того, что определяют для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определяют значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого; определяют контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента; и декодируют значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения. 6 н. и 26 з.п. ф-лы, 14 ил., 3 табл.
1. Способ декодирования видеоданных, при этом способ содержит этапы, на которых:
- для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определяют значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определяют значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определяют контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом определение контекстного смещения для коэффициента, декодируемого в данный момент, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента содержит:
выбор первого контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
выбор второго контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
выбор третьего контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- декодируют значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
2. Способ по п. 1, в котором первый соседний коэффициент содержит один из верхнего соседнего коэффициента или левого соседнего коэффициента по отношению к коэффициенту, в данный момент декодируемому, и второй соседний коэффициент содержит другой из верхнего соседнего коэффициента или левого соседнего коэффициента.
3. Способ по п. 1, в котором декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения содержит этапы, на которых:
- определяют контекст на основе определенного контекстного смещения;
- принимают один или более бинов данных; и
- контекстно декодируют один или более бинов данных на основе определенного контекста, чтобы определять знак для коэффициента, в данный момент декодируемого.
4. Способ по п. 3, в котором декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- принимают синтаксический элемент;
- в ответ на упомянутый синтаксический элемент, имеющий значение, равное единице, определяют то, что значение уровня коэффициента, в данный момент декодируемого, равно прогнозированному значению уровня.
5. Способ по п. 3, в котором декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- принимают синтаксический элемент;
- в ответ на значение для упомянутого синтаксического элемента, большее прогнозированного значения уровня, определяют то, что значение уровня коэффициента, в данный момент декодируемого, равно значению для упомянутого синтаксического элемента плюс один.
6. Способ по п. 3, в котором декодирование значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- принимают синтаксический элемент;
- в ответ на значение для упомянутого синтаксического элемента, меньшее прогнозированного значения уровня, определяют то, что значение уровня коэффициента, в данный момент декодируемого, равно значению для синтаксического элемента.
7. Способ по п. 1, дополнительно содержащий этап, на котором:
- обратно квантуют, без обратного преобразования, значение для коэффициента, в данный момент декодируемого, чтобы определять остаточное значение для остаточного блока видеоданных.
8. Способ по п. 1, дополнительно содержащий этапы, на которых:
- определяют декодированный остаточный блок на основе значения для коэффициента, в данный момент декодируемого;
- суммируют декодированный остаточный блок с блоком прогнозирования, чтобы определять восстановленный блок;
- выполняют одну или более операций фильтрации в отношении восстановленного блока для того, чтобы определять декодированный блок видеоданных; и
- выводят декодированный кадр видеоданных, который включает в себя декодированный блок видеоданных.
9. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:
- для остаточного блока видеоданных, кодируемых с использованием режима пропуска преобразования, определяют значение для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого;
- определяют значение для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого;
- определяют контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом определение контекстного смещения для коэффициента, кодируемого в данный момент, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента содержит:
выбор первого контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
выбор второго контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
выбор третьего контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- кодируют значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
10. Способ по п. 9, в котором первый соседний коэффициент содержит один из верхнего соседнего коэффициента или левого соседнего коэффициента, и второй соседний коэффициент содержит другой из верхнего соседнего коэффициента или левого соседнего коэффициента.
11. Способ по п. 9, в котором кодирование значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения содержит этапы, на которых:
- определяют контекст на основе определенного контекстного смещения;
- определяют знак для коэффициента, в данный момент кодируемого; и
- контекстно кодируют один или более бинов данных на основе определенного контекста, чтобы представлять знак для коэффициента, в данный момент кодируемого.
12. Способ по п. 11, в котором кодирование значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- в ответ на значение уровня коэффициента, в данный момент кодируемого, равное прогнозированному значению уровня, кодируют синтаксический элемент с помощью значения, равного единице.
13. Способ по п. 11, в котором кодирование значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- в ответ на значение уровня коэффициента, в данный момент кодируемого, меньшее прогнозированного значения уровня, кодируют синтаксический элемент с помощью значения, равного значению уровня коэффициента, в данный момент кодируемого.
14. Способ по п. 11, в котором кодирование значения для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения дополнительно содержит этапы, на которых:
- определяют прогнозированное значение уровня для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента;
- в ответ на значение уровня коэффициента, в данный момент кодируемого, большее прогнозированного значения уровня, кодируют синтаксический элемент с помощью значения, равного значению уровня коэффициента, в данный момент кодируемого, минус один.
15. Способ по п. 9, дополнительно содержащий этап, на котором:
- квантуют остаточное значение для остаточного блока видеоданных, чтобы определять значение для коэффициента, в данный момент кодируемого.
16. Способ по п. 9, дополнительно содержащий этапы, на которых:
- определяют блок прогнозирования; и
- сравнивают блок прогнозирования с исходным блоком видеоданных, чтобы определять остаточный блок видеоданных.
17. Устройство для декодирования видеоданных, при этом устройство содержит:
- запоминающее устройство, выполненное с возможностью сохранять видеоданные; и
- один или более процессоров, реализованных в схеме и выполненных с возможностью:
- для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, определять значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом для определения контекстного смещения для коэффициента, декодируемого в данный момент, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента один или более процессоров выполнены с возможностью:
выбора первого контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
выбора второго контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
выбора третьего контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
18. Устройство по п. 17, в котором первый соседний коэффициент содержит один из верхнего соседнего коэффициента или левого соседнего коэффициента, и второй соседний коэффициент содержит другой из верхнего соседнего коэффициента или левого соседнего коэффициента.
19. Устройство по п. 17, в котором для того, чтобы декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения, один или более процессоров дополнительно выполнены с возможностью:
- определять контекст на основе определенного контекстного смещения;
- принимать один или более бинов данных; и
- контекстно декодировать один или более бинов данных на основе определенного контекста, чтобы определять знак для коэффициента, в данный момент декодируемого.
20. Устройство по п. 17, в котором один или более процессоров дополнительно выполнены с возможностью:
- обратно квантовать значение для коэффициента, в данный момент декодируемого, чтобы определять остаточное значение для остаточного блока видеоданных.
21. Устройство по п. 17, в котором один или более процессоров дополнительно выполнены с возможностью:
- определять декодированный остаточный блок на основе значения для коэффициента, в данный момент декодируемого;
- суммировать декодированный остаточный блок с блоком прогнозирования, чтобы определять восстановленный блок;
- выполнять одну или более операций фильтрации в отношении восстановленного блока для того, чтобы определять декодированный блок видеоданных; и
- выводить декодированный кадр видеоданных, который включает в себя декодированный блок видеоданных.
22. Устройство по п. 17, при этом устройство содержит устройство беспроводной связи, причем устройство беспроводной связи содержит приемное устройство, выполненное с возможностью принимать кодированные видеоданные.
23. Устройство по п. 22, в котором устройство беспроводной связи содержит телефонную трубку, и при этом приемное устройство выполнено с возможностью демодулировать, согласно стандарту беспроводной связи, сигнал, содержащий кодированные видеоданные.
24. Устройство по п. 17, дополнительно содержащее:
- дисплей, выполненный с возможностью отображать декодированные видеоданные.
25. Устройство по п. 17, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.
26. Устройство для кодирования видеоданных, при этом устройство содержит:
- запоминающее устройство, выполненное с возможностью сохранять видеоданные; и
- один или более процессоров, реализованных в схеме и выполненных с возможностью:
- для остаточного блока видеоданных, кодируемых с использованием режима пропуска преобразования, определять значение для первого соседнего коэффициента относительно коэффициента, в данный момент кодируемого;
- определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент кодируемого;
- определять контекстное смещение для коэффициента, в данный момент кодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом для определения контекстного смещения для коэффициента, кодируемого в данный момент, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента один или более процессоров выполнены с возможностью:
выбора первого контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
выбора второго контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
выбора третьего контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения.
27. Устройство по п. 26, в котором первый соседний коэффициент содержит один из верхнего соседнего коэффициента или левого соседнего коэффициента, и второй соседний коэффициент содержит другой из верхнего соседнего коэффициента или левого соседнего коэффициента.
28. Устройство по п. 26, в котором для того, чтобы кодировать значение для коэффициента, в данный момент кодируемого, на основе определенного контекстного смещения, один или более процессоров дополнительно выполнены с возможностью:
- определять контекст на основе определенного контекстного смещения;
- определять знак для коэффициента, в данный момент кодируемого; и
- контекстно кодировать один или более бинов данных на основе определенного контекста, чтобы представлять знак для коэффициента, в данный момент кодируемого.
29. Устройство по п. 26, в котором один или более процессоров дополнительно выполнены с возможностью:
- квантовать остаточное значение для остаточного блока видеоданных, чтобы определять значение для коэффициента, в данный момент кодируемого.
30. Устройство по п. 26, в котором один или более процессоров дополнительно выполнены с возможностью:
- определять блок прогнозирования; и
- сравнивать блок прогнозирования с исходным блоком видеоданных, чтобы определять остаточный блок видеоданных.
31. Оборудование для декодирования видеоданных, причем оборудование содержит:
- средство для определения, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значения для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- средство для определения значения для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- средство для определения контекстного смещения для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом средство для определения контекстного смещения для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента содержит:
средство для выбора первого контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
средство для выбора второго контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
средство для выбора третьего контекстного смещения в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- средство для декодирования значения для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
32. Считываемый компьютером носитель данных, хранящий инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров:
- определять, для остаточного блока видеоданных, кодированных с использованием режима пропуска преобразования, значение для первого соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определять значение для второго соседнего коэффициента относительно коэффициента, в данный момент декодируемого;
- определять контекстное смещение для коэффициента, в данный момент декодируемого, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента, при этом для определения контекстного смещения для коэффициента, декодируемого в данный момент, на основе значения для первого соседнего коэффициента и значения для второго соседнего коэффициента упомянутые инструкции инструктируют одному или более процессорам:
выбирать первое контекстное смещение в ответ на то, что первый соседний коэффициент и второй соседний коэффициент равны нулю или имеют противоположные знаки;
выбирать второе контекстное смещение в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются положительными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является положительным; и
выбирать третье контекстное смещение в ответ на то, что первый соседний коэффициент и второй соседний коэффициент являются отрицательными, либо один из первого соседнего коэффициента и второго соседнего коэффициента равен нулю, а другой из первого соседнего коэффициента и второго соседнего коэффициента является отрицательным; и
- декодировать значение для коэффициента, в данный момент декодируемого, на основе определенного контекстного смещения.
WO 2013070707 A1, 16.05.2013 | |||
US 20150281706 A1, 01.10.2015 | |||
US 20150103918 A1, 16.04.2015 | |||
RU 2014145852 A, 10.06.2016 | |||
US 20130343464 A1, 26.12.2013. |
Авторы
Даты
2024-02-06—Публикация
2020-03-11—Подача