ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЙ УРОВНЯ ГРАНИЦЫ ФИЛЬТРОВАНИЯ УДАЛЕНИЯ БЛОЧНОСТИ ДЛЯ КОДИРОВАНИЯ ВИДЕО
DETERMINATION OF FILTRATION BOUNDARY LEVEL OF DEBLOCKING FOR VIDEO CODING

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США №61/551,325, поданной 25 октября 2011 года, предварительной заявки на патент США №61/554,887, поданной 2 ноября 2011 года, предварительной заявки на патент США №61/579,488, поданной 22 декабря 2011 года, и предварительной заявки на патент США №61/589,143, поданной 20 января 2012 года, все содержимое которых тем самым включено по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и, более подробно, к фильтрованию декодированных видео данных.
УРОВЕНЬ ТЕХНИКИ
[0003] Цифровые способности видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые устройства регистрации, цифровые медиаплееры, устройства видео игр, пульты видеоигр, сотовые или спутниковые радио-телефоны, устройства организации видео телеконференций и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), высокоэффективное кодирование видео (HEVC) и расширения таких стандартов, чтобы передавать и принимать цифровую видео информацию более эффективно.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного в отношении блоков кодирования видео вырезка (слайс) видео может быть разделена отношении блоков видео, которые могут также называться как блоки дерева, единицы кодирования (единицы CU) и/или узлы кодирования. Блоки видео во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут называться как кадры, и опорные картинки могут называться как опорные кадры.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] В целом, настоящее раскрытие описывает способы для применения фильтра удаления блочности к краю, который имеет место между первым блоком видео и вторым блоком видео. Применение фильтра удаления блочности к краю может уменьшить появление визуальных артефактов, вызванных основанным в отношении блока кодированием. Как описано здесь, кодировщик видео может ассоциировать первое значение уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной единицей кодирования (CU), где край имеет место на границе между первым блоком видео и вторым блоком видео. Кодировщик видео может ассоциировать второе или третье значение уровня границы с краем, когда ни первый блок видео, ни второй блок видео не ассоциированы с внутренне предсказанной CU. Кодировщик видео может применить один или более фильтров удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы. Третье значение уровня границы указывает, что фильтры удаления блочности выключены для выборок, ассоциированных с краем.
[0006] Настоящее раскрытие описывает способ кодирования видео данных. Способ содержит ассоциирование первого значения уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной единицей кодирования (CU), причем край имеет место на границе между первым блоком видео и вторым блоком видео. Способ также содержит ассоциирование второго значения уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий удовлетворены. Кроме того, способ содержит ассоциирование третьего значения уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий не удовлетворены. Способ также содержит применение одного или более фильтров удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, но не третьим значением уровня границы.
[0007] Кроме того, настоящее раскрытие описывает устройство кодирования видео, содержащее один или более процессоров, сконфигурированных, чтобы ассоциировать первое значение уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной единицей кодирования (CU), причем край имеет место на границе между первым блоком видео и вторым блоком видео. Один или более процессоров сконфигурированы, чтобы ассоциировать второе значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий удовлетворены. Один или более процессоров сконфигурированы, чтобы ассоциировать третье значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий не удовлетворены. Кроме того, один или более процессоров сконфигурированы, чтобы применять фильтр удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, но не третьим значением уровня границы.
[0008] Настоящее раскрытие также описывает устройство кодирования видео, которое содержит средство для ассоциирования первого значения уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной единицей кодирования (CU), причем край имеет место на границе между первым блоком видео и вторым блоком видео. Устройство кодирования видео также содержит средство для ассоциирования второго значения уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий удовлетворены. Кроме того, устройство кодирования видео содержит средство для ассоциирования третьего значения уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий не удовлетворены. Устройство кодирования видео также содержит средство для применения одного или более фильтров удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, но не третьим значением уровня границы.
[0009] Настоящее раскрытие также описывает компьютерный программный продукт, который содержит один или более считываемых компьютером запоминающих носителей, которые хранят выполняемые компьютером инструкции, которые, когда выполняются, заставляют один или более процессоров ассоциировать первое значение уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной единицей кодирования (CU). Край имеет место на границе между первым блоком видео и вторым блоком видео. Инструкции также заставляют один или более процессоров ассоциировать второе значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий удовлетворены. Инструкции также заставляют один или более процессоров ассоциировать третье значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий не удовлетворены. Кроме того, инструкции вынуждают один или более процессоров применять один или более фильтров удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, но не третьим значением уровня границы.
[0010] Подробности одного или более примеров сформулированы в сопровождающих чертежах и описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования видео, которая может использовать способы настоящего раскрытия.
[0012] Фиг. 2 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы настоящего раскрытия.
[0013] Фиг. 3 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы настоящего раскрытия.
[0014] Фиг. 4 является последовательностью операций, которая иллюстрирует примерную операцию удаления блочности, чтобы уменьшить артефакты блокирования, ассоциированные с единицей кодирования.
[0015] Фиг. 5 является последовательностью операций, которая иллюстрирует примерную операцию, чтобы ассоциировать значение уровня границы с краем яркости между двумя блоками видео.
[0016] Фиг. 6 является последовательностью операций, которая иллюстрирует примерную операцию, чтобы ассоциировать значение уровня границы с краем цветности между двумя блоками видео.
[0017] Фиг. 7 является последовательностью операций, которая иллюстрирует примерную операцию, чтобы удалить блочность краев яркости единицы кодирования.
[0018] Фиг. 8 является последовательностью операций, которая иллюстрирует примерную операцию удаления блочности, выполненную кодировщиком видео в отношении индивидуального края яркости.
[0019] Фиг. 9 является концептуальной диаграммой, которая указывает примерные метки выборок на вертикальном краю между первым блоком видео “A” и вторым блоком видео "B".
[0020] Фиг. 10 является последовательностью операций, которая иллюстрирует примерную операцию, чтобы определить, применить ли сильный или слабый фильтр удаления блочности к сегменту края яркости.
[0021] Фиг. 11 является последовательностью операций, которая иллюстрирует примерную операцию, чтобы удалить блочность края цветности единицы кодирования.
[0022] Фиг. 12 является последовательностью операций, которая иллюстрирует примерную операцию удаления блочности, выполненную кодировщиком видео в отношении выборок Cb или Cr, ассоциированных с индивидуальным краем цветности.
[0023] Фиг. 13A-13D являются концептуальными диаграммами, которые иллюстрируют примерные графики значения выборки.
[0024] Фиг. 14A-C являются концептуальными диаграммами, которые иллюстрируют примерные графики значения выборки.
ДЕТАЛЬНОЕ ОПИСАНИЕ
[0025] Приложенные чертежи иллюстрируют примеры. Элементы, обозначенные ссылочными позициями в приложенных чертежах, соответствуют элементам, обозначенным подобными ссылочными позициями в нижеследующем описании. В этом раскрытии элементы, имеющие названия, которые начинаются с порядковых слов (например, “сначала”, "второй", "третий", и так далее) необязательно подразумевают, что элементы имеют конкретный порядок. Вместо этого такие порядковые слова просто используются для обращения к различным элементам одного и того же или подобного типа.
[0026] Край может иметь место на границе между первым блоком видео и вторым блоком видео. В этом раскрытии термин "блок видео" может быть использован для ссылки на двумерный (2D) блок выборок. Например, первый и второй блоки видео могут быть декодированными блоками видео, ассоциированными с соседними единицами кодирования (единицами CU), или единицами преобразования (TU) или единицами предсказания (PU) единицы CU. Кодировщик видео может ассоциировать первое значение уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной CU. Кодировщик видео может ассоциировать второе или третье значение уровня границы с краем, когда ни первый, ни второй блок видео не ассоциированы с внутренне предсказанной CU. Когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, кодировщик видео может применить один или более фильтров удаления блочности к выборкам, ассоциированным с краем. Выборки, ассоциированные с краем, могут включать в себя выборки в линии выборок, которые идут перпендикулярно к краю. Фильтры удаления блочности могут уменьшить видимость артефактов блочности, ассоциированных с краем. Артефакты блочности могут включать в себя резкие неоднородности в яркости (сигнале яркости) и/или цвете (насыщенности цвета) выборки, которые первоначально не присутствовали в блоках видео. Как используется здесь, термин "выборка" может быть использован взаимозаменяемо с термином "пиксель".
[0027] Ассоциирование края с первым значением уровня границы в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной CU, может упростить процесс ассоциирования значения уровня границы с краем, и таким образом может уменьшить сложность и увеличить производительность кодировщика видео. Напротив, если кодировщик видео должен сделать дополнительные определения о том, какое значение уровня границы ассоциировать с краем после определения, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной CU, кодировщик видео может быть более сложным и может иметь более низкую производительность.
[0028] Фиг. 1 является блок-схемой, которая иллюстрирует примерную систему 10 кодирования видео, которая может использовать способы настоящего раскрытия. Как используется описано здесь, термин "кодировщик видео" относится в общем и к видео кодерам и к видео декодерам. В этом раскрытии термины "кодирование видео" или "кодирование" могут относиться в общем к кодированию видео и декодированию видео.
[0029] Как показано на Фиг. 1, система 10 кодирования видео включает в себя устройство-источник 12 и устройство 14 назначения. Устройство-источник 12 генерирует закодированные видео данные. Устройство 14 назначения может декодировать закодированные видео данные, генерируемые устройством-источником 12. Устройство-источник 12 и устройство 14 назначения может содержать широкий диапазон устройств, включая настольные компьютеры, портативный компьютер (например, ноутбук) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые "смарт-"телефоны, так называемые "смарт-"клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, находящиеся внутри автомобиля компьютеры, мобильное вычислительное устройство, или подобное. В некоторых примерах устройство-источник 12 и устройство 14 назначения может быть оборудовано для беспроводной связи.
[0030] Устройство 14 назначения может принимать закодированные видео данные от устройства-источника 12 через канал 16. Канал 16 может содержать любой тип носителя или устройства, способного к перемещению закодированных видео данных от устройства-источника 12 к устройству 14 назначения. В одном примере канал 16 может содержать коммуникационный носитель, который позволяет исходному устройству 12 передать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. В этом примере устройство-источник 12 может модулировать закодированные видео данные согласно стандарту связи, такому как протокол беспроводной связи, и может передать модулированные видео данные к устройству 14 назначения. Коммуникационный носитель может содержать беспроводной или проводной коммуникационный носитель, такой как радиочастотный (РЧ, RF) спектр или одну или более физических линий передачи. Коммуникационный носитель может являться частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, переключателей, базовые станции, или другое оборудование, которое облегчает связь от устройства-источника 12 к устройству 14 назначения.
[0031] В другом примере канал 16 может соответствовать запоминающему носителю, который хранит закодированные видео данные, генерируемые устройством-источником 12. В этом примере устройство 14 назначения может получить доступ к запоминающему носителю через доступ к диску или доступ к карте. Запоминающий носитель может включать в себя множество локально доступных запоминающих носителей, таких как диски Blu-ray, DVD, CD-ROM, флэш-память, или другие подходящие цифровые носители данных для того, чтобы хранить закодированные видео данные. В другом примере канал 16 может включать в себя файловый сервер или другое промежуточное устройство хранения, которое хранит закодированное видео, генерируемое устройством-источником 12. В этом примере устройство 14 назначения может получить доступ к закодированным видео данным, хранящимся в файловом сервере или другом промежуточном устройстве хранения через потоковую передачу или загрузку. Файловый сервер может быть типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать закодированные видео данные к устройству 14 назначения. Примерные файловые серверы включают в себя web-серверы (например, для вебсайта), серверы FTP, сетевые запоминающие устройства (NAS), и локальные дисководы. Устройство 14 назначения может получить доступ к закодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Примерные типы соединений данных могут включать в себя беспроводные каналы (например, соединения Wi-Fi), проводные соединения (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которые являются подходящими для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных видео данных от файлового сервера может быть потоковой передачей, передачей загрузки, или комбинацией обоих.
[0032] Способы настоящего раскрытия не ограничены беспроводными приложениями или параметрами настройки. Эти способы могут быть применены к кодированию видео в поддержку любого множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или другие приложения. В некоторых примерах система 10 кодирования видео может конфигурироваться, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0033] В примере согласно Фиг. 1, устройство-источник 12 включает в себя видео источник 18, видео кодер 20, и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, например, видео камера, видео архив, содержащий ранее захваченные видео данные, интерфейс подачи видео, чтобы принимать видео данные от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать видео данные, или комбинацию таких источников.
[0034] Видео кодер 20 может закодировать захваченные, предварительно захваченные, или машинно-генерируемые видео данные. Закодированные видео данные могут быть переданы непосредственно к устройству 14 назначения через выходной интерфейс 22 из устройства-источника 12. Закодированные видео данные могут также храниться на запоминающем носителе или файловом сервере для более позднего доступа устройством 14 назначения для декодирования и/или воспроизведения.
[0035] В примере на Фиг. 1 устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30, и устройство 32 отображения. В некоторых случаях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода из устройства 14 назначения принимает закодированные видео данные по каналу 16. Закодированные видео данные могут включать в себя множество элементов синтаксиса, генерируемых видео кодером 20, которые представляют видео данные. Такие элементы синтаксиса могут быть включены с закодированными видео данными, переданными на коммуникационном носителе, сохранены на носителе данных, или сохранены на файловом сервере.
[0036] Устройство 32 отображения может быть интегрированным с или может быть внешним к устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и может также конфигурироваться, чтобы взаимодействовать с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Вообще, устройство 32 отображения отображает декодированные видео данные пользователю. Устройство 32 отображения может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.
[0037] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC), находящегося в настоящее время в развитии, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким стандарт как ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.
[0038] Хотя не показано в примере на Фиг. 1, видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров - демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0039] Снова Фиг. 1 является просто примером, и способы настоящего раскрытия могут относиться к параметрам настройки кодирования видео (например, кодированию видео или декодированию видео), которые необязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные могут быть извлечены из локальной памяти, переданы потоком по сети, или подобному. Устройство кодирования может закодировать и хранить данные в памяти, и/или устройство декодирования может извлечь и декодировать данные из памяти. Во многих примерах кодирование и декодирование выполняются устройствами, которые не обмениваются друг с другом, но просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
[0040] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения или любые их комбинации. Когда способы реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения в подходящем не временном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0041] Как упомянуто кратко выше, видео кодер 20 кодирует видео данные. Видео данные могут содержать одну или более картинок. Каждая из картинок является неподвижным изображением, являющимся частью видео. В некоторых случаях картинка может называться как видео "кадр". Когда видео кодер 20 кодирует видео данные, видео кодер 20 может генерировать поток битов. Поток битов может включать в себя последовательность битов, которые формируют закодированное представление видео данных. Поток битов может включать в себя закодированные картинки и ассоциированные данные. Закодированная картинка является закодированным представлением картинки.
[0042] Чтобы генерировать поток битов, видео кодер 20 может выполнить операции кодирования в отношении каждой картинки в видео данных. Когда видео кодер 20 выполняет операции кодирования в отношении картинок, видео кодер 20 может генерировать ряд закодированных картинок и ассоциированные данные. Ассоциированные данные могут включать в себя наборы параметров последовательности, наборы параметров картинки, наборы параметров адаптации, и другие структуры синтаксиса. Набор параметров последовательности (SPS) может содержать параметры, применимые к нулю или более последовательностям картинок. Набор параметров картинки (PPS) может содержать параметры, применимые к нулю или более картинкам. Набор параметров адаптации (APS) может содержать параметры, применимые к нулю или более картинкам.
[0043] Чтобы генерировать закодированную картинку, видео кодер 20 может разделить картинку в блоки видео одинакового размера. Каждый из блоков видео ассоциирован с блоком дерева. В некоторых случаях блок дерева может также называться как наибольшая единица кодирования (LCU). Блоки дерева HEVC могут в широком смысле аналогичны макроблокам предыдущих стандартов, таких как H.264/AVC. Однако, блок дерева необязательно ограничен конкретным размером и может включать в себя одну или более единиц кодирования (единицы CU). Видео кодер 20 может использовать «квадродеревное» разделение, чтобы разделить блоки видео блоков дерева отношении блоков видео, ассоциированные с единицами CU, поэтому называемые "блоки дерева".
[0044] В некоторых примерах видео кодер 20 может разделить картинку во множество вырезок (слайсов). Каждая из вырезок может включать в себя целое число единиц CU. В некоторых случаях вырезка содержит целое число блоков дерева. В других случаях граница вырезки может быть в пределах блока дерева.
[0045] Как часть выполнения операции кодирования в отношении картинки, видео кодер 20 может выполнить операции кодирования в отношении каждой вырезки картинки. Когда видео кодер 20 выполняет операцию кодирования в отношении вырезки, видео кодер 20 может генерировать закодированные данные, ассоциированные с вырезкой. Закодированные данные, ассоциированные с вырезкой, могут называться как “закодированная вырезка».
[0046] Чтобы генерировать закодированную вырезку, видео кодер 20 может выполнить операции кодирования в отношении каждого блока дерева в вырезке. Когда видео кодер 20 выполняет операцию кодирования в отношении блока дерева, видео кодер 20 может генерировать закодированный блок дерева. Закодированный блок дерева может содержать данные, представляющие закодированную версию блока дерева.
[0047] Чтобы генерировать закодированный блок дерева, видео кодер 20 может рекурсивно выполнить «квадродеревное» разделение для блока видео этого блока дерева, чтобы разделить блок видео на прогрессивно меньшие блоки видео. Каждый из меньших блоков видео может быть ассоциирован с различной CU. Например, видео кодер 20 может разделить блок видео блока дерева на четыре суб-блока одинакового размера, разделить один или более суб-блоков на четыре суб-суб-блока одинакового размера, и так далее. Один или более элементов синтаксиса в потоке битов могут указывать максимальное количества раз, сколько кодер видео 20 может разделить блок видео блока дерева. Блок видео из CU может быть квадратным по форме. Размер блока видео в CU (то есть размер CU) может ранжироваться от 8×8 пикселей до размера блока видео блока дерева (то есть размера блока дерева) с максимумом 64×64 пикселей или больше.
[0048] Видео кодер 20 может выполнить операции кодирования в отношении каждой неразделенной CU блока дерева. Не разделенная CU является CU, блок видео которой не разделен в блоки видео для других единиц CU. В качестве части выполнения операции кодирования в отношении неразделенной CU, видео кодер 20 может генерировать один или более единиц предсказания (PUs) для CU. Каждая из единиц PU в CU может быть ассоциирована с различным блоком видео в пределах блока видео этой CU. Видео кодер 20 может генерировать предсказанный блок видео для каждой PU в CU. Предсказанный блок видео в PU может быть блоком выборок. Видео кодер 20 может использовать внутреннее предсказание или внешнее предсказание, чтобы генерировать предсказанный блок видео для PU.
[0049] Когда видео кодер 20 использует внутреннее предсказание, чтобы генерировать предсказанный блок видео для PU, видео кодер 20 может генерировать предсказанный блок видео для PU на основании декодированных выборок картинки, ассоциированной с PU. Когда видео кодер 20 использует внешнее предсказание, чтобы генерировать предсказанный блок видео для PU, видео кодер 20 может генерировать предсказанный блок видео для PU на основании декодированных значений картинок кроме картинки, ассоциированные с этой PU. Если видео кодер 20 использует внутреннее предсказание, чтобы генерировать предсказанные блоки видео единиц PU для CU, CU является внутренне предсказанной CU.
[0050] Когда видео кодер 20 использует внешнее предсказание, чтобы генерировать предсказанный блок видео для PU, видео кодер 20 может генерировать информацию движения для PU. Информация движения для PU может указывать часть другой картинки, которая соответствует этому блоку видео этой PU. Другими словами, информация движения для PU может указывать "опорную выборку" для PU. Видео кодер 20 может генерировать предсказанный блок видео для PU на основании частей других картинок, которые обозначены информацией движения для PU. Если видео кодер 20 использует внешнее предсказание, чтобы генерировать предсказанные блоки видео для единиц PU для CU, CU является внешне предсказанной CU.
[0051] После того, как видео кодер 20 генерирует предсказанные блоки видео для одной или более единиц PU для CU, видео кодер 20 может генерировать остаточные данные для CU на основании предсказанных блоков видео для единиц PU для CU. Остаточные данные для CU могут указывать различия между выборками в предсказанных блоках видео для единиц PU для CU и первоначальном блоке видео CU.
[0052] Кроме того, в качестве части выполнения операции кодирования в отношении неразделенной CU, видео кодер 20 может выполнить рекурсивное «квадродеревное» разделение в отношении остаточных данных CU, чтобы разделить остаточные данные CU в один или более блоков остаточных данных (то есть остаточные блоки видео), ассоциированных с единицами преобразования (TU) для CU. Каждая TU упомянутой CU может быть ассоциирована с различным остаточным блоком видео. Кодировщик видео 20 может выполнить операции преобразования в отношении каждой TU упомянутой CU.
[0053] Когда видео кодер 20 выполняет операцию преобразования в отношении TU, видео кодер 20 может применить одно или более преобразований к остаточному блоку видео, ассоциированному с TU, чтобы генерировать один или более блоков коэффициентов преобразования (то есть блоков коэффициентов преобразования), ассоциированных с TU. Концептуально, блок коэффициентов преобразования может быть двумерной (2D) матрицей коэффициентов преобразования.
n
[0054] После генерирования блока коэффициентов преобразования видео кодер 20 может выполнить операцию квантования в отношении блока коэффициента преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы можно было уменьшить величину данных, использованных для представления коэффициентов преобразования, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, n-битовый коэффициент преобразования может быть округлен в меньшую сторону до m-битового коэффициента преобразования во время квантования, где  больше чем m.
[0055] Видео кодер 20 может ассоциировать каждую CU с значением параметра квантования (QP). Значение QP, ассоциированное с CU, может определить, как видео кодер 20 квантует блоки коэффициентов преобразования, ассоциированные с CU. Видео кодер 20 может настроить степень квантования, примененную к блокам коэффициентов преобразования, ассоциированным с CU, посредством настройки значения QP, ассоциированного с CU.
[0056] После того, как видео кодер 20 квантует блок коэффициентов преобразования, видео кодер 20 может сканировать квантованные коэффициенты преобразования, чтобы сформировать одномерный вектор уровней коэффициента преобразования. Видео кодер 20 может энтропийно кодировать этот одномерный вектор. Видео кодер 20 может также энтропийно кодировать другие элементы синтаксиса, ассоциированные с видео данными.
[0057] Поток битов, генерируемый видео кодером 20, может включать в себя ряд единиц Уровня Абстракции Сети (NAL). Каждая из единиц NAL может быть структурой синтаксиса, содержащей индикацию типа данных в единице NAL и байты, содержащие данные. Например, единица NAL может содержать данные, представляющие набор параметров последовательности, набор параметров картинки, закодированную вырезку, дополнительную информацию расширения (SEI), разделитель блока доступа, данные заполнения, или другой тип данных. Данные в единице NAL могут включать в себя энтропийно кодированные структуры синтаксиса, такие как энтропийно кодированные блоки коэффициентов преобразования, информацию движения, и так далее.
[0058] Видео декодер 30 может принимать поток битов, генерируемый видео кодером 20. Поток битов может включать в себя закодированное представление видео данных, закодированных видео кодером 20. Когда видео декодер 30 принимает поток битов, видео декодер 30 может выполнить операцию синтаксического разбора в отношении потока битов. Когда видео декодер 30 выполняет операцию синтаксического разбора, видео декодер 30 может извлечь элементы синтаксиса из потока битов. Видео декодер 30 может восстановить картинки видео данных на основании элементов синтаксиса, извлеченных из потока битов. Процесс, чтобы восстановить видео данные на основании элементов синтаксиса, может быть в целом обратным к процессу, выполненному видео кодером 20, чтобы генерировать элементы синтаксиса.
[0059] После того как видео декодер 30 извлечет элементы синтаксиса, ассоциированные с CU, видео декодер 30 может генерировать предсказанные блоки видео для единиц PU для CU на основании этих элементов синтаксиса. Кроме того, видео декодер 30 может обратно квантовать блоки коэффициентов преобразования, ассоциированных с единицами TU из CU. Видео декодер 30 может выполнить обратные преобразования в отношении блоков коэффициентов преобразования, чтобы восстановить остаточные блоки видео, ассоциированные с единицами TU из CU. После генерирования предсказанных блоков видео и восстановления остаточных блоков видео, видео декодер 30 может восстановить блок видео CU на основании предсказанных блоков видео и остаточных блоков видео. Таким образом, видео декодер 30 может определить блоки видео единиц CU на основании элементов синтаксиса в потоке битов.
[0060] После восстановления блока видео CU видео декодер 30 может выполнить операцию удаления блочности, чтобы уменьшить артефакты блокирования, ассоциированные с CU. Чтобы выполнить эту операцию удаления блочности, видео декодер 30 может идентифицировать края TU, и края PU, ассоциированных с CU. Края TU могут соответствовать сегментам или полным краям остаточных блоков видео, ассоциированных с единицами TU из CU. Края PU могут соответствовать сегментам или полным краям предсказанных блоков видео, ассоциированных с единицами PU для CU. Артефакты блокирования, ассоциированные с CU, имеют тенденцию появляться на краях TU и краях PU, ассоциированных с CU.
[0061] После идентификации краев TU и PU, видео декодер 30 может ассоциировать значения уровня границы с краями TU и PU. Как описано ниже, видео декодер 30 может использовать значения уровня границы, ассоциированные с краями TU и PU, чтобы определить, применить ли и как применить фильтры удаления блочности к выборкам, ассоциированным с краями TU и PU.
[0062] В соответствии с способами настоящего раскрытия, видео декодер 30 может ассоциировать первое значение уровня границы с краем в ответ на определение, что первый блок видео или второй блок видео ассоциированы с внутренне предсказанной CU. Край может быть краем TU или краем PU, который имеет место на границе между первым блоком видео и вторым блоком видео. Видео декодер 30 может ассоциировать второе значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий удовлетворены. Видео декодер 30 может ассоциировать третье значение уровня границы с краем в ответ на определение, что первый блок видео и второй блок видео не ассоциированы с внутренне предсказанной CU и что одно или более дополнительных условий не удовлетворены. Видео декодер 30 может применить один или более фильтров удаления блочности к выборкам, ассоциированным с краем, когда край ассоциирован с первым значением уровня границы или вторым значением уровня границы, но не третьим значением уровня границы.
[0063] Видео кодер 20 может выполнить подобную операцию удаления блочности, чтобы уменьшить артефакты блокирования в восстановленных блоках видео, ассоциированных с CU до сохранения восстановленных блоков видео в буфере декодированных картинок. Таким образом, “кодировщик видео” (то есть видео кодер или видео декодер) может выполнить операцию удаления блочности, описанную выше.
[0064] Фиг. 2 является блок-схемой, которая иллюстрирует примерный кодер видео 20, который конфигурируется, чтобы реализовать способы настоящего раскрытия. Фиг. 2 предоставлена в целях объяснения и не должна быть рассмотрена ограничивающей способы, которые широко иллюстрируются и описаны в настоящем раскрытии. В целях объяснения настоящее раскрытие описывает видео кодер 20 в контексте кодирования HEVC. Однако, способы настоящего раскрытия могут быть применимыми к другим стандартам или способам кодирования.
[0065] В примере на Фиг. 2 видео кодер 20 включает в себя множество функциональных компонентов. Функциональные компоненты видео кодера 20 включают в себя модуль 100 предсказания, модуль 102 генерирования остатка, модуль 104 преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обратного преобразования, модуль 112 восстановления, модуль 113 фильтра, буфер 114 декодированных картинок, и модуль 116 энтропийного кодирования. Модуль 100 предсказания включает в себя модуль 122 оценки движения, модуль 124 компенсации движения, и модуль 126 внутреннего предсказания. В других примерах видео кодер 20 может включать в себя больше, меньше, или другие функциональные компоненты. Кроме того, модуль 122 оценки движения и модуль 124 компенсации движения могут быть высоко интегрированы, но представлены в примере на Фиг. 2 отдельно в целях объяснения.
[0066] Видео кодер 20 может принимать видео данные. Видео кодер 20 может принимать видео данные из различных источников. Например, видео кодер 20 может принимать видео данные из видео источника 18 (Фиг. 1) или другого источника. Видео данные могут представлять ряд картинок. Чтобы закодировать видео данные, видео кодер 20 может выполнить операцию кодирования в отношении каждой из картинок. В качестве части выполнения операции кодирования в отношении картинки, видео кодер 20 может выполнить операции кодирования в отношении каждой вырезки картинки. В качестве части выполнения операции кодирования в отношении вырезки, видео кодер 20 может выполнить операции кодирования в отношении блоков дерева в вырезке.
[0067] В качестве части выполнения операции кодирования в отношении блока дерева, модуль 100 предсказания может выполнить «квадродеревное» разделение в отношении блока видео блока дерева, чтобы разделить блок видео на прогрессивно уменьшающиеся блоки видео. Каждый из меньших блоков видео может быть ассоциирован с различной CU. Например, модуль 100 предсказания может разделить блок видео блока дерева на четыре суб-блока одинакового размера, разделение одного или более суб-блоков на четыре одинакового размера суб-суб-блоков, и так далее.
[0068] Размеры блоков видео, ассоциированных с единицами CU, могут ранжироваться от 8×8 выборок до размера блока дерева с максимумом 64×64 выборок или больше. В настоящем раскрытии “N×N” и “N на N” может использоваться взаимозаменяемо, чтобы относиться к типовым измерениям блока видео в терминах вертикальных и горизонтальных размеров, например, 16×16 выборок или 16 на 16 выборок. Вообще, блок видео 16×16 имеет шестнадцать выборок в вертикальном направлении (y=16) и шестнадцать выборок в горизонтальном направлении (x=16). Аналогично, блока N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целочисленное значение.
[0069] Кроме того, в качестве части выполнения операции кодирования в отношении блока дерева, модуль 100 предсказания может генерировать иерархическую структуру данных квадродерева для блока дерева. Например, блок дерева может соответствовать корневому узлу структуры данных квадродерева. Если модуль 100 предсказания разделяет блок видео блока дерева на четыре суб-блока, корневой узел имеет четыре дочерних узла в структуре данных квадродерева. Каждый из дочерних узлов соответствует CU, ассоциированной с одним из суб-блоков. Если модуль 100 предсказания разделяет один из суб-блоков на четыре суб-суб-блоков, узел, соответствующий CU, ассоциированной с суб-блоком, может иметь четыре дочерних узла, каждый из которых соответствует CU, ассоциированной с одним из суб-суб-блоков.
[0070] Каждый узел структуры данных квадродерева может содержать данные синтаксиса (например, элементы синтаксиса) для соответствующего блока дерева или CU. Например, узел в квадродереве может включать в себя флаг разделения, который указывает, разделен ли блок видео в CU, соответствующей узлу, (то есть расщеплен) на четыре суб-блока. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, расщеплен ли блок видео CU на суб-блоки. CU, блок видео которой не разделен, может соответствовать листовому узлу в структуре данных квадродерева. Закодированный блок дерева может включать в себя данные на основании структуры данных квадродерева для соответствующего блока дерева.
[0071] Видео кодер 20 может выполнить операции кодирования в отношении каждой неразделенной CU блока дерева. Когда видео кодер 20 выполняет операцию кодирования в отношении неразделенной CU, видео кодер 20 генерирует данные, представляющие закодированное представление неразделенной CU.
[0072] В качестве части выполнения операции кодирования в отношении CU, модуль 100 предсказания может разделить блок видео этой CU среди одной или более единиц PU для CU. Видео кодер 20 и видео декодер 30 могут поддерживать различные размеры PU. Предполагая, что размер конкретной CU равен 2N×2N, видео кодер 20 и видео декодер 30 могут поддерживать размеры PU 2N×2N или N×N, и внешнее предсказание в симметрических размерах для PU равными 2N×2N, 2N×N, N×2N, N×N, или подобным. Видео кодер 20 и видео декодер 30 могут также поддерживать асимметричное разделение для размеров PU равных 2N×nU, 2N×nD, nL×2N, и nR×2N. В некоторых примерах модуль 100 предсказания может выполнить геометрическое разделение, чтобы разделить блок видео CU среди единиц PU единицы CU вдоль границы, которая не встречает стороны блока видео этой CU под прямыми углами.
[0073] Модуль 122 оценки движения и модуль 124 компенсации движения могут выполнить внешнее предсказание в отношении каждой PU для CU. Внешнее предсказание может обеспечить временное сжатие. Выполняя внешнее предсказание в отношении PU, модуль 122 оценки движения и модуль 124 компенсации движения могут генерировать данные предсказания для PU на основании декодированных выборок опорных картинок, отличных от картинки, ассоциированной с CU. Данные предсказания для PU могут включать в себя предсказанный блок видео и различные элементы синтаксиса.
[0074] Кроме того, когда модуль 122 оценки движения выполняет операцию оценки движения относительно PU, модуль 122 оценки движения может генерировать один или более векторов движения для PU. Например, вырезки могут быть внутренними вырезками (то есть I-вырезками), предсказанными вырезки (то есть P-вырезками), или дважды предсказанными вырезки (то есть B-вырезками). Модуль 122 оценки движения и модуль 124 компенсации движения могут выполнить различные операции для PU для CU в зависимости от того, находится ли PU в I-вырезке, P-вырезке, или B-вырезке. В I-вырезке все единицы PU являются внутренне предсказанными. Следовательно, если PU находится в I-вырезке, модуль 122 оценки движения и модуль 124 компенсации движения не выполняют внешнее предсказание в отношении PU.
[0075] Если PU находится в P-вырезке, картинка, содержащая PU, ассоциирована со списком опорных картинок, названным “список 0». Каждая из опорных картинок в списке 0 содержит выборки, которые могут быть использованы для внешнего предсказания последующих картинок в порядке декодирования. Когда модуль 122 оценки движения выполняет операцию оценки движения относительно PU в P-вырезке, модуль 122 оценки движения может искать опорные картинки в списке 0 для опорной выборки для этой PU. Опорная выборка этой PU может быть набором выборок, например, блоком выборок, который наиболее близко соответствует выборкам в блоке видео PU. Модуль 122 оценки движения может использовать множество метрик, чтобы определить, как близко набор выборок в опорной картинке соответствует выборкам в блоке видео упомянутой PU. Например, модуль 122 оценки движения может определить, как близко набор выборок в опорной картинке соответствует выборкам в блоке видео для PU посредством суммы абсолютных разностей (SAD), суммы разностей квадратов (SSD), или других метрик различия.
[0076] После идентификации опорной выборки PU в P-вырезке модуль 122 оценки движения может генерировать опорный индекс, который указывает опорную картинку в списке 0, содержащую опорную выборку, и вектор движения, который указывает пространственное смещение между PU и опорной выборкой. В различных примерах модуль 122 оценки движения может генерировать вектора движения с различными степенями точности. Например, модуль 122 оценки движения может генерировать вектора движения с типовой точностью в одну четверть, точности выборки в одну восьмую, или другой типовой фракционной точностью. В случае типовой фракционной точности значения опорных выборок могут быть интерполированы из значений выборки с целочисленной позицией в опорной картинке. Модуль 122 оценки движения может вывести информацию движения для PU к модулю 116 энтропийного кодирования и модулю 124 компенсации движения. Информация движения для PU может включать в себя опорный индекс и вектор движения для PU. Модуль 124 компенсации движения может использовать информацию движения PU, чтобы идентифицировать и извлечь опорную выборку упомянутой PU.
[0077] Если PU находится в B-вырезке, картинка, содержащая PU, может быть ассоциирована с двумя списками опорных картинок, называемыми “список 0” и “список 1». Каждая из опорных картинок в списке 0 содержит выборки, которые могут быть использованы для внешнего предсказания последующих картинок в порядке декодирования. Опорные картинки в списке 1 имеют место перед картинкой в порядке декодирования, но после картинки в порядке представления. В некоторых примерах картинка, содержащая B-вырезку, может быть ассоциирована с комбинацией списка, которая является комбинацией списка 0 и списка 1.
[0078] Кроме того, если PU находится в B-вырезке, модуль 122 оценки движения может выполнить однонаправленное предсказание или двунаправленное предсказание для PU. Когда модуль 122 оценки движения выполняет однонаправленное предсказание для PU, модуль 122 оценки движения может искать опорные картинки списка 0 или списка 1 для опорной выборки для PU. Модуль 122 оценки движения может затем генерировать опорный индекс, который указывает опорную картинку в списке 0 или списке 1, который содержит опорную выборку и вектор движения, который указывает пространственное смещение между PU и опорной выборкой. Модуль 122 оценки движения может вывести элементы синтаксиса, которые указывают информацию движения для PU к модулю 116 энтропийного кодирования и модулю 124 компенсации движения. Информация движения для PU может включать в себя опорный индекс, индикатор направления предсказания, и вектор движения PU. Индикатор направления предсказания может указывать, указывает ли опорный индекс опорную картинку в списке 0 или списке 1. Модуль 124 компенсации движения может использовать информацию движения PU, чтобы идентифицировать и извлечь опорную выборку PU.
[0079] Когда модуль 122 оценки движения выполняет двунаправленное предсказание для PU, модуль 122 оценки движения может искать опорные картинки в списке 0 для опорной выборки для PU и может также искать опорные картинки в списке 1 для другой опорной выборки для PU. Модуль 122 оценки движения может затем генерировать опорные индексы, которые указывают опорные картинки в списке 0 и списке 1, содержащих опорные выборки, и вектора движения, которые указывают пространственные смещения между опорными выборками и PU. Модуль 122 оценки движения может вывести элементы синтаксиса, которые указывают информацию движения PU, к модулю 116 энтропийного кодирования и модулю 124 компенсации движения. Информация движения для PU может включать в себя опорные индексы и вектора движения PU. Модуль 124 компенсации движения может использовать информацию движения, чтобы идентифицировать и извлечь опорную выборку упомянутой PU.
[0080] В некоторых случаях модуль 122 оценки движения не выводит полный набор информации движения для PU к модулю 116 энтропийного кодирования. Вместо этого модуль 122 оценки движения может сигнализировать информацию движения PU со ссылкой на информацию движения другой PU. Например, модуль 122 оценки движения может определить, что информация движения PU достаточно аналогична информации движения соседней PU. В этом примере модуль 122 оценки движения может указывать в узле квадродерева для CU, ассоциированной с PU, значение, которое указывает видео декодеру 30, что PU имеет ту же информацию движения, что и соседняя PU. В другом примере модуль 122 оценки движения может идентифицировать в узле квадродерева, ассоциированном с CU, ассоциированным с PU, соседнюю PU и разность вектора движения (MVD). Разность вектора движения указывает разность между вектором движения PU и вектором движения указанной соседней PU. Видео декодер 30 может использовать вектор движения указанной соседней PU и разность вектора движения, чтобы предсказать вектор движения PU. Обращаясь к информации движения первой PU при сигнализации информации движения второй PU, видео кодер 20 может быть в состоянии сигнализировать информацию движения второй PU, используя меньше битов.
[0081] В качестве части выполнения операции кодирования в отношении CU, модуль 126 внутреннего предсказания может выполнить внутреннее предсказание в отношении единиц PU для CU. Внутреннее предсказание может обеспечить пространственное сжатие. Когда модуль 126 внутреннего предсказания выполняет внутреннее предсказание в отношении PU, модуль 126 внутреннего предсказания может генерировать данные предсказания для этой PU на основании декодированных выборок других единиц PU в той же самой картинке. Данные предсказания для PU могут включать в себя предсказанный блок видео и различные элементы синтаксиса. Модуль 126 внутреннего предсказания может выполнить внутреннее предсказание в отношении единиц PU в I-вырезках, P-вырезках и B-вырезках.
[0082] Чтобы выполнить внутреннее предсказание в отношении PU, модуль 126 внутреннего предсказания может использовать множественные режимы внутреннего предсказания, чтобы генерировать множественные наборы данных предсказания для PU. Когда модуль 126 внутреннего предсказания использует режим внутреннего предсказания, чтобы генерировать набор данных предсказания для PU, модуль 126 внутреннего предсказания может расширить выборки из блоков видео соседних единиц PU по блоку видео PU в направлении и/или градиенте, ассоциированными с режимом внутреннего предсказания. Соседние единицы PU могут быть выше, выше и справа, выше и слева, или слева от PU, принимая слева направо сверху вниз порядок кодирования для единиц PU, единиц CU, и блоков дерева. Модуль 126 внутреннего предсказания может использовать различные количества режимов внутреннего предсказания, например, 33 направленных режимов внутреннего предсказания, в зависимости от размера PU.
[0083] Модуль 100 предсказания может выбрать данные предсказания для PU из числа данных предсказания, генерируемых модулем 124 компенсации движения для PU, или данных предсказания, генерируемых модулем 126 внутреннего предсказания для PU. В некоторых примерах модуль 100 предсказания выбирает данные предсказания для PU на основании метрик «скорость передачи/искажение» наборов данных предсказания.
[0084] Если модуль 100 предсказания выбирает данные предсказания, генерируемые модулем 126 внутреннего предсказания, модуль 100 предсказания может сигнализировать режим внутреннего предсказания, который был использован для генерирования данных предсказания для единиц PU, то есть выбранный режим внутреннего предсказания. Модуль 100 предсказания может сигнализировать выбранный режим внутреннего предсказания различными способами. Например, вероятно, что выбранный режим внутреннего предсказания является таким же, как режим внутреннего предсказания соседней PU. Другими словами, режим внутреннего предсказания соседней PU может быть наиболее вероятным режимом для текущей PU. Таким образом, модуль 100 предсказания может генерировать элемент синтаксиса, чтобы указывать, что выбранный режим внутреннего предсказания является таким же, как режим внутреннего предсказания соседней PU.
[0085] После того, как модуль 100 предсказания выбирает данные предсказания для единиц PU для CU, модуль 102 генерирования остатка может генерировать остаточные данные для CU, вычитая предсказанные блоки видео единиц PU для CU из блока видео CU. Остаточные данные CU могут включать в себя 2D остаточные блоки видео, которые соответствуют различным компонентам выборок в блоке видео упомянутой CU. Например, остаточные данные могут включать в себя остаточный блок видео, который соответствует разностями между компонентами светимости выборок в предсказанных блоках видео единиц PU для CU и компонентами яркости выборок в первоначальном блоке видео упомянутой CU. Кроме того, остаточные данные CU могут включать в себя остаточные блоки видео, которые соответствуют разностями между компонентами цветности выборок в предсказанных блоках видео единиц PU для CU и компонентами цветности выборок в первоначальном блоке видео упомянутой CU.
[0086] Модуль 100 предсказания может выполнить «квадродеревное» разделение, чтобы разделить остаточные блоки видео CU на суб-блоки. Каждый неразделенный остаточный блок видео может быть ассоциирован с различным TU упомянутой CU. Размеры и позиции остаточных блоков видео, ассоциированных с единицами TU из CU, могут быть или могут не быть основаны на размерах и позициях блоков видео, ассоциированных с единицами PU для CU. Структура квадродерева, известная как “остаточное квадро дерево” (RQT), может включать в себя узлы, ассоциированные с каждым из остаточных блоков видео. Единицы TU в CU могут соответствовать узлам листовым упомянутого RQT.
[0087] Модуль 104 преобразования может генерировать один или более блоков коэффициентов преобразования для каждой TU упомянутой CU посредством применения одного или более преобразований к остаточному блоку видео, ассоциированному с TU. Каждый из блоков коэффициентов преобразования может быть 2D матрицей коэффициентов преобразования. Модуль 104 преобразования может применить различные преобразования к остаточному блоку видео, ассоциированному с TU. Например, модуль 104 преобразования может применить дискретное косинусное преобразование (DCT), направленное преобразование, или концептуально аналогичное преобразование к остаточному блоку видео, ассоциированному с TU.
[0088] После того как модуль 104 преобразования генерирует блок коэффициентов преобразования, ассоциированный с TU, модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования. Модуль 106 квантования может квантовать блок коэффициентов преобразования, ассоциированный с TU упомянутой CU, на основании значения QP, ассоциированного с CU.
[0089] Видео кодер 20 может ассоциировать значение QP с CU различными способами. Например, видео кодер 20 может выполнить анализ «скорость передачи - искажение» в отношении блока дерева, ассоциированного с CU. В анализе «скорость передачи - искажение» видео кодер 20 может генерировать множественные закодированные представления блока дерева посредством выполнения операции кодирования множество раз в отношении блока дерева. Видео кодер 20 может ассоциировать различные значения QP с CU, когда видео кодер 20 генерирует различные закодированные представления блока дерева. Видео кодер 20 может сигнализировать, что заданное значение QP ассоциировано с CU, когда заданное значение QP ассоциировано с CU в закодированном представлении блока дерева, которое имеет самую низкую метрику «скорость передачи - искажение».
[0090] Модуль 108 обратного квантования и модуль 110 обратного преобразования могут применить обратное квантование и обратные преобразования к блоку коэффициентов преобразования, соответственно, чтобы восстановить остаточный блок видео из блока коэффициентов преобразования. Модуль 112 восстановления может суммировать восстановленный остаточный блок видео с соответствующими выборками из одного или более предсказанных блоков видео, генерируемых модулем 100 предсказания, чтобы сформировать восстановленный блок видео, ассоциированный с TU. Восстанавливая блоки видео для каждой TU упомянутой CU таким образом, видео кодер 20 может восстановить блок видео CU.
[0091] После того, как модуль 112 восстановления восстанавливает блок видео CU, модуль 113 фильтра может выполнить операцию удаления блочности, чтобы уменьшить артефакты блокирования в блоке видео, ассоциированном с CU. Модуль 113 фильтра может выполнить различные операции удаления блочности. Например, модуль 113 фильтра может выполнить примерную операцию удаления блочности, иллюстрированную на Фиг. 4. В других примерах модуль 113 фильтра может выполнить операции удаления блочности, которые отличаются от примерной операции удаления блочности, иллюстрированной на Фиг. 4.
[0092] После выполнения одной или более операций удаления блочности модуль 113 фильтра может сохранить восстановленный блок видео CU в буфере 114 декодированных картинок. Модуль 122 оценки движения и модуль 124 компенсации движения могут использовать опорную картинку, которая содержит восстановленный блок видео, чтобы выполнить внешнее предсказание в отношении единиц PU последующих картинок. Кроме того, модуль 126 внутреннего предсказания может использовать восстановленные блоки видео в буфере 114 декодированных картинок, чтобы выполнить внутреннее предсказание в отношении других единиц PU в той же самой картинке, что и CU.
[0093] Таким образом, после того, как модуль 113 фильтра применяет фильтр удаления блочности к выборкам, ассоциированным с краем, модуль 100 предсказания может генерировать предсказанный блок видео, на основании, по меньшей мере частично, выборок, ассоциированных с краем. Видео кодер 20 может вывести поток битов, который включает в себя один или более элементов синтаксиса, значения которых основаны, по меньшей мере частично, на предсказанном блоке видео.
[0094] Модуль 116 энтропийного кодирования может принимать данные от других функциональных компонентов видео кодера 20. Например, модуль 116 энтропийного кодирования может принимать блоки коэффициентов преобразования от модуля 106 квантования и может принимать элементы синтаксиса от модуля 100 предсказания. Когда модуль 116 энтропийного кодирования принимает данные, модуль 116 энтропийного кодирования может выполнить одну или более операций энтропийного кодирования, чтобы генерировать энтропийно кодированные данные. Например, видео кодер 20 может выполнить операцию контекстно-адаптивного кодирования с переменной длиной кода (CAVLC), операцию CABAC, операцию кодирования с переменной к переменной (V2V) длиной кода, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разделением интервала вероятности (PIPE), или другой тип операции энтропийного кодирования в отношении данных. Модуль 116 энтропийного кодирования может вывести поток битов, который включает в себя энтропийно кодированные данные.
[0095] В качестве части выполнения операции энтропийного кодирования в отношении данных, модуль 116 энтропийного кодирования может выбрать контекстную модель. Если модуль 116 энтропийного кодирования выполняет операцию CABAC, контекстная модель может указывать оценки вероятностей конкретных контейнеров (бинов), имеющих конкретные значения. В контексте CABAC термин "контейнер" использован для обращения к биту бинаризированной версии элемента синтаксиса.
[0096] Если модуль 116 энтропийного кодирования выполняет операцию CAVLC, контекстная модель может отобразить коэффициенты на соответствующие ключевые слова. Кодовые слова в CAVLC могут быть построены таким образом, что относительно короткие коды соответствуют более вероятным символам, в то время как относительно длинные коды соответствуют менее вероятным символам. Выбор соответствующей контекстной модели может воздействовать на эффективность кодирования операции энтропийного кодирования.
[0097] Фиг. 3 является блок-схемой, которая иллюстрирует примерный декодер видео 30, который может реализовать способы настоящего раскрытия. Фиг. 3 предоставлен в целях объяснения и не является ограничивающим в отношении способов, которые иллюстрируются и описаны в настоящем раскрытии. В целях объяснения настоящее раскрытие описывает видео декодер 30 в контексте кодирования HEVC. Однако, способы настоящего раскрытия могут быть применимыми к другим стандартам или способам кодирования.
[0098] В примере на Фиг. 3 видео декодер 30 включает в себя множество функциональных компонентов. Функциональные компоненты видео декодера 30 включают в себя модуль 150 энтропийного декодирования, модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции, модуль 159 фильтра, и буфер 160 декодированных картинок. Модуль 152 предсказания включает в себя модуль 162 компенсации движения и модуль 164 внутреннего предсказания. В некоторых примерах видео декодер 30 может выполнить проход декодирования в целом обратный проходу кодирования, описанному относительно видео кодера 20 из Фиг. 2. В других примерах видео декодер 30 может включать в себя больше, меньше, или другие функциональные компоненты.
[0099] Видео декодер 30 может принимать поток битов, который содержит закодированные видео данные. Поток битов может включать в себя множество элементов синтаксиса. Когда видео декодер 30 принимает поток битов, модуль 150 энтропийного декодирования может выполнить операцию синтаксического разбора в отношении потока битов. В результате выполнения операции синтаксического разбора в отношении потока битов модуль 150 энтропийного декодирования может извлечь элементы синтаксиса из потока битов. В качестве части выполнения операции синтаксического разбора модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные элементы синтаксиса в потоке битов. Модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции и модуль 159 фильтра могут выполнить работу по реконструкции, которая генерирует декодированные видео данные на основании элементов синтаксиса, извлеченных из потока битов.
[0100] Как описано выше, поток битов может содержать последовательность единиц NAL. Единицы NAL потока битов могут включать в себя единицы NAL набора параметров последовательности, единицы NAL набора параметров картинок, единицы NAL SEI, и так далее. В качестве части выполнения операции синтаксического разбора в отношении потока битов, модуль 150 энтропийного декодирования может выполнить операции синтаксического разбора, которые извлекают и энтропийно декодируют наборы параметров последовательности из единиц NAL набора параметров последовательности, наборы параметров картинки из единиц NAL набора параметров картинок, данные SEI из единиц NAL SEI, и так далее.
[0101] Кроме того, единицы NAL потока битов могут включать в себя закодированную вырезку единицы NAL. В качестве части выполнения операции синтаксического разбора в отношении потока битов, модуль 150 энтропийного декодирования может выполнить операции синтаксического разбора, которые извлекают и энтропийно декодируют закодированные вырезки из единиц NAL закодированных вырезок. Каждая из закодированных вырезок может включать в себя заголовок вырезки и данные вырезки. Заголовок вырезки может содержать элементы синтаксиса, имеющие отношение к вырезке. Элементы синтаксиса в заголовке вырезки могут включать в себя элемент синтаксиса, который идентифицирует набор параметров картинки, ассоциированный с картинкой, которая содержит вырезку. Модуль 150 энтропийного декодирования может выполнить операцию энтропийного декодирования, такую как операция CAVLC декодирования, в отношении закодированного заголовка вырезки, чтобы восстановить заголовок вырезки.
[0102] После извлечения данных вырезки из единиц NAL закодированных вырезок модуль 150 энтропийного декодирования может извлечь закодированные блоки дерева из данных вырезки. Модуль 150 энтропийного декодирования может затем извлечь закодированные единицы CU из закодированных блоков дерева. Модуль 150 энтропийного декодирования может выполнить операции синтаксического разбора, которые извлекают элементы синтаксиса из закодированных единиц CU. Извлеченные элементы синтаксиса могут включать в себя энтропийно кодированные блоки коэффициентов преобразования. Модуль 150 энтропийного декодирования может затем выполнить операции энтропийного декодирования в отношении элементов синтаксиса. Например, модуль 150 энтропийного декодирования может выполнить операции CABAC в отношении блоков коэффициентов преобразования.
[0103] После того, как модуль 150 энтропийного декодирования выполняет операцию синтаксического разбора в отношении неразделенной CU, видео декодер 30 может выполнить работу по реконструкции в отношении неразделенной CU. Чтобы выполнить работу по реконструкции в отношении неразделенной CU, видео декодер 30 может выполнить работу по реконструкции в отношении каждой TU упомянутой CU. Выполняя работу по реконструкции для каждой TU упомянутой CU, видео декодер 30 может восстановить остаточный блок видео, ассоциированный с CU.
[0104] В качестве части выполнения работы по реконструкции в отношении TU, модуль 154 обратного квантования может обратно квантовать, то есть деквантовать, блок коэффициентов преобразования, ассоциированный с TU. Модуль 154 обратного квантования может обратно квантовать блок коэффициентов преобразования способом, аналогичным процессам обратного квантования, предложенным для HEVC или определенным стандартом декодирования H.264. Модуль 154 обратного квантования может использовать параметр квантования QP, вычисленный видео кодером 20 для CU блока коэффициентов преобразования, чтобы определить степень квантования и, аналогично, степень обратного квантования для модуля 154 обратного квантования для применения.
[0105] После того, как модуль 154 обратного квантования обратно квантует блок коэффициентов преобразования, модуль 156 обратного преобразования может генерировать остаточный блок видео для TU, ассоциированной с блоком коэффициентов преобразования. Модуль 156 обратного преобразования может применить обратное преобразование к блоку коэффициентов преобразования, чтобы генерировать остаточный блок видео для TU. Например, модуль 156 обратного преобразования может применить обратное DCT, обратное целочисленное преобразование, обратное преобразование Кархунена-Лоэва (Karhunen-Loeve) (KLT), обратное вращательное преобразование, обратное направленное преобразование, или другое обратное преобразование к блоку коэффициентов преобразования.
[0106] В некоторых примерах модуль 156 обратного преобразования может определить обратное преобразование для применения к блоку коэффициентов преобразования на основании сигнализации от видео кодера 20. В таких примерах модуль 156 обратного преобразования может определить обратное преобразование на основании сигнализированного преобразования в корневом узле квадродерева для блока дерева, ассоциированного с блоком коэффициентов преобразования. В других примерах модуль 156 обратного преобразования может логически вывести обратное преобразование из одной или более характеристик кодирования, таких как размер блока, режим кодирования, или аналогичное. В некоторых примерах модуль 156 обратного преобразования может применить каскадное обратное преобразование.
[0107] Если PU для CU была закодирована, используя внешнее предсказание, модуль 162 компенсации движения может выполнить компенсацию движения, чтобы генерировать предсказанный блок видео для PU. Модуль 162 компенсации движения может использовать информацию движения для PU, чтобы идентифицировать опорную выборку для PU. Опорная выборка PU может быть в другой временной картинке, чем упомянутая PU. Информация движения для PU может включать в себя вектор движения, индекс опорной картинки и направление предсказания. Модуль 162 компенсации движения может использовать опорную выборку для PU, чтобы генерировать предсказанный блок видео для PU. В некоторых примерах модуль 162 компенсации движения может предсказать информацию движения для PU, на основании информации движения единиц PU, которые граничат с PU. В настоящем раскрытии PU является внешне предсказанной PU, если видео кодер 20 использует внешнее предсказание, чтобы генерировать предсказанный блок видео этой PU.
[0108] В некоторых примерах модуль 162 компенсации движения может уточнить предсказанный блок видео PU, выполняя интерполяцию, на основании фильтров интерполяции. Идентификаторы для фильтров интерполяции, которые должны использоваться для компенсации движения с точностью суб-вырезки, могут быть включены в элементы синтаксиса. Модуль 162 компенсации движения может использовать те же самые фильтры интерполяции, используемые видео кодером 20 во время генерирования предсказанного блока видео PU, чтобы вычислить интерполированные значения для суб-целочисленных выборок опорного блока. Модуль 162 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, согласно принятой информации синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказанный блок видео.
[0109] Если PU закодирована, используя внутреннее предсказание, модуль 164 внутреннего предсказания может выполнить внутреннее предсказание, чтобы генерировать предсказанный блок видео для этой PU. Например, модуль 164 внутреннего предсказания может определить режим внутреннего предсказания для PU, на основании элементов синтаксиса в потоке битов. Поток битов может включать в себя элементы синтаксиса, которые модуль 164 внутреннего предсказания может использовать, чтобы предсказать режим внутреннего предсказания упомянутой PU.
[0110] В некоторых случаях элементы синтаксиса могут указывать, что модуль 164 внутреннего предсказания должен использовать режим внутреннего предсказания другой PU, чтобы предсказать режим внутреннего предсказания текущей PU. Например, может быть вероятно, что режим внутреннего предсказания текущей PU является таким же как режим внутреннего предсказания соседней PU. Другими словами, режим внутреннего предсказания соседней PU может быть наиболее вероятным режимом для текущей PU. Следовательно, в этом примере, поток битов может включать в себя малый элемент синтаксиса, который указывает, что режим внутреннего предсказания PU является таким же как режим внутреннего предсказания соседней PU. Модуль 164 внутреннего предсказания может затем использовать режим внутреннего предсказания, чтобы генерировать данные предсказания (например, предсказанные выборки) для PU на основании блоков видео пространственно соседних единиц PU.
[0111] Модуль 158 реконструкции может использовать остаточные блоки видео, ассоциированные с единицами TU из CU и предсказанными блоками видео единиц PU упомянутой CU, то есть или данные внутреннего предсказания или данные внешнего предсказания, когда применимо, чтобы восстановить блок видео упомянутой CU. Таким образом, видео декодер 30 может генерировать предсказанный блок видео и остаточный блок видео, на основании элементов синтаксиса в потоке битов, и может генерировать блок видео на основании предсказанного блока видео и остаточного блока видео.
[0112] После того, как модуль 158 реконструкции восстанавливает блок видео CU, модуль 159 фильтра может выполнить операцию удаления блочности, чтобы уменьшить артефакты блокирования, ассоциированные с CU. Модуль 159 фильтра может выполнить различные операции удаления блочности, чтобы уменьшить артефакты блокирования, ассоциированные с CU. Например, модуль 159 фильтра может выполнить примерную операцию удаления блочности, иллюстрированную на Фиг. 4. В других примерах модуль 159 фильтра может выполнить операции удаления блочности, которые отличны от операции удаления блочности, иллюстрированной на Фиг. 4.
[0113] Буфер 160 декодированных картинок может сохранить декодированные выборки для картинок видео данных. Таким образом, после того, как модуль 159 фильтра выполняет операцию удаления блочности, чтобы уменьшить артефакты блокирования, ассоциированные с CU, видео декодер 30 может сохранить блок видео упомянутой CU в буфере 160 декодированных картинок. Буфер 160 декодированных картинок может обеспечить опорные картинки для последующей компенсации движения, внутреннего предсказания и представления на устройстве отображения, таком как устройство 32 отображения из Фиг. 1. Например, видео декодер 30 может выполнить, на основании блоков видео в буфере 160 декодированных картинок, операции внутреннего предсказания или внешнего предсказания в отношении единиц PU других единиц CU.
[0114] Фиг. 4 является последовательностью операций, которая иллюстрирует примерную операцию 200, чтобы уменьшить артефакты блокирования, ассоциированные с CU. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 200. В других примерах кодировщик видео может использовать операции, отличные от операции 200, чтобы уменьшить артефакты блокирования, ассоциированные с CU. Например, в других примерах кодировщик видео может выполнить операцию, чтобы уменьшить артефакты блокирования, в которых кодировщик видео выполняет больше, меньше, или отличные этапы, чем операция 200. В других примерах кодировщик видео может выполнить этапы операции 200 в других порядках или параллельно.
[0115] После того, как кодировщик видео начинает операцию 200, кодировщик видео может идентифицировать края TU, ассоциированные с текущей CU (202). Текущая CU является CU, которую кодировщик видео в настоящее время кодирует (то есть кодирует или декодирует). Для простоты объяснения настоящее раскрытие может относиться к блоку видео, ассоциированному с текущей CU, в качестве текущего блока видео CU. Края, ассоциированные с текущим блоком видео CU, могут соответствовать краям единиц PU и единиц TU текущей CU. Кроме того, края, ассоциированные с текущим блоком видео CU, могут быть краями яркости и краями цветности. Край яркости может быть краем на границе между блоками выборок яркости. Край цветности может быть краем на границе между блоками выборок цветности. Кодировщик видео может идентифицировать края TU на основании данных в остаточном квадродереве текущей CU.
[0116] Кроме того, кодировщик видео может идентифицировать края PU, ассоциированные с текущей CU (204). Кодировщик видео может идентифицировать края PU различными способами. Например, кодировщик видео может идентифицировать края PU на основании режима разделения PU текущей CU и флага внутренних краев фильтра, ассоциированного с текущей CU. Флаг внутренних краев фильтра может указывать, разрешено ли удаление блочности для внутренних краев текущей CU. Внутренние края текущей CU являются краями, которые не имеют место на границе между блоком видео текущей CU и блоком видео соседней CU.
[0117] После идентификации краев TU и краев PU (то есть краев) ассоциированные с текущей CU, кодировщик видео может ассоциировать значения уровня границы с краями яркости (206). Кодировщик видео может ассоциировать значения уровня границы с краями яркости различными способами. Например, кодировщик видео может выполнить примерную операцию, иллюстрированную на Фиг. 5, чтобы ассоциировать значение уровня границы с краем яркости. В других примерах кодировщик видео может выполнить операции, отличные от примера на Фиг. 5, чтобы ассоциировать значение уровня границы с краем яркости. После ассоциирования краев с значениями уровня границы кодировщик видео может выполнить процесс удаления блочности края яркости (208). Процесс удаления блочности края яркости может уменьшить артефакты блокирования в выборках яркости. Кодировщик видео может выполнить различные процессы удаления блочности края яркости. Например, кодировщик видео может выполнить процесс удаления блочности края яркости из примера, проиллюстрированного на Фиг. 7. В других примерах кодировщик видео может выполнить процессы удаления блочности края яркости, которые отличны от процесса удаления блочности края яркости из примера, проиллюстрированного на Фиг. 7.
[0118] Кроме того, кодировщик видео может ассоциировать значения уровня границы с краями цветности (210). Кодировщик видео может ассоциировать значения уровня границы с краями цветности различными способами. Например, кодировщик видео может выполнить примерную операцию, иллюстрированную на Фиг. 6, чтобы ассоциировать значение уровня границы с краем цветности. В других примерах кодировщик видео может выполнить операции, отличные от примера на Фиг. 6, чтобы ассоциировать значение уровня границы с краем цветности.
[0119] Кодировщик видео может затем выполнить процесс удаления блочности края цветности (212). Процесс удаления блочности края цветности может уменьшить артефакты блокирования в выборках цветности. Кодировщик видео может выполнить различные процессы удаления блочности края цветности. Например, кодировщик видео может выполнить процесс удаления блочности края цветности из примера, проиллюстрированного на Фиг. 11. В других примерах кодировщик видео может выполнить процессы удаления блочности края цветности, которые отличны от процесса удаления блочности края цветности примера, проиллюстрированного на Фиг. 11.
[0120] Фиг. 5 является последовательностью операций, которая иллюстрирует примерную операцию 250, чтобы ассоциировать значение уровня границы с краем яркости. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 250. В других примерах кодировщик видео может использовать операции, отличные от операции 250, чтобы ассоциировать значение уровня границы с краем яркости. Например, в других примерах кодировщик видео может выполнить операцию, чтобы ассоциировать значение уровня границы с краем яркости, в которой кодировщик видео выполняет больше, меньше, или другие этапы, чем операция 250. В других примерах кодировщик видео может выполнить этапы операции 250 в другом порядке или параллельно.
[0121] После того, как кодировщик видео начинает операцию 250, кодировщик видео может определить, ассоциированы ли блок видео “p” или блок видео “q” с внутренне предсказанной CU (260). Край яркости может иметь место на границе между блоком видео “p” и блоком видео "q".
[0122] Блок видео “q” может быть блоком видео 4x4 в пределах блока видео текущей CU. Блок видео текущей CU является блоком видео, ассоциированным с CU (то есть текущей CU), которую в настоящее время кодирует кодировщик видео. Блок видео “p” может быть блоком видео 4×4 в соседнем блоке видео. В других примерах блоки видео “q” и “p” могут быть блоками видео 8×8. Соседний блок видео может быть в блоке видео текущей CU, или блоке видео, ассоциированном с ранее закодированной CU.
[0123] CU может быть внутренне предсказанной CU, если данные предсказания единиц PU для CU генерируются, используя внутреннее предсказание. Блок видео “q” может быть ассоциирован с внутренне предсказанной CU, когда текущий блок видео CU (то есть блок видео, который содержит блок видео “q”) ассоциирован с внутренне предсказанной CU. Блок видео “p” может быть ассоциирован с внутренне предсказанной CU, когда блок видео, который содержит блок видео “p”, ассоциирован с внутренне предсказанной CU.
[0124] В ответ на определение, что блок видео “p” или блок видео “q” ассоциированы с внутренне предсказанной CU ("ДА" 260), кодировщик видео может ассоциировать первое значение уровня границы с краем яркости (262). В примере на Фиг. 5 первое значение уровня границы равно двум. Значение уровня границы равное двум, может указывать, что фильтр удаления блочности идет со смещением, равным два.
[0125] Обычные кодировщики видео могут определить, является ли край яркости краем CU в ответ на определение, что блок видео “p” или блок видео “q” ассоциированы с внутренне предсказанной CU. Край CU может быть краем, который имеет место на границе между блоками видео, ассоциированными с двумя различными единицами CU. Такие кодировщики видео могут ассоциировать значение “4” уровня границы с краем яркости в ответ на определение, что край яркости является краем CU, и могут ассоциировать значение “3” уровня границы с краем яркости в ответ на определение, что край яркости не является краем CU.
[0126] Согласно способам настоящего раскрытия, когда кодировщик видео выполняет операцию 250, видео кодировщик ассоциирует первое значение уровня границы с краем яркости, без определения, является ли край яркости краем CU. Ассоциирование первого значения уровня границы с краем яркости в ответ на определение, что блок видео “p” или блок видео “q” ассоциированы с внутренне предсказанной CU, вместо того, чтобы делать дополнительное определение относительно того, является ли край яркости краем CU, может уменьшить сложность и увеличить производительность кодировщика видео.
[0127] С другой стороны, в ответ на определение, что ни блок видео “p”, ни блок видео “q” не находится во внутренне предсказанной CU ("НЕТ" 260), кодировщик видео может определить, ассоциированы ли блок видео “p” или блок видео “q” с TU, которая ассоциирована с одним или более ненулевыми уровнями коэффициента преобразования (264). Блок видео “p” или блок видео “q” могут быть ассоциированы с TU, когда значения выборок в блоке видео “p” или блоке видео “q” основаны на остаточном блоке видео, ассоциированном с TU.
[0128] В ответ на определение, что или блок видео “p” или блок видео “q” ассоциированы с TU, которая ассоциирована с одним или более ненулевыми уровнями коэффициента преобразования ("ДА" 264), кодировщик видео может ассоциировать второе значение уровня границы (Bs) с краем яркости (266). В примере на Фиг. 5, второе значение уровня границы равно одному. Значение уровня границы, равное одному, может указывать, что фильтр удаления блочности идет со смещением, равным нулю. Традиционно, кодировщики видео могут ассоциировать значение «два» уровня границы с краем яркости в ответ на определение, что или блок видео “p” или блок видео “q” ассоциированы с TU, которая ассоциирована с одним или более ненулевыми коэффициентами преобразования.
[0129] Иначе, в этом примере, если ни блок видео “p”, ни блок видео “q” не ассоциированы с TU, которая ассоциирована с одним или более ненулевыми уровнями коэффициента преобразования ("НЕТ" 264), кодировщик видео может определить, ассоциированы ли блок видео “p” или блок видео “q” с единицами PU, которые имеют различные опорные картинки, или которые имеют различные количества векторов движения (MV) (268). Блок видео “p” или блок видео “q” могут быть ассоциированы с PU, когда значения выборок в блоке видео “p” или блоке видео “q” основаны на предсказанном блоке видео, ассоциированном с PU.
[0130] В ответ на определение, что блок видео “p” или блок видео “q” ассоциированы с единицами PU, которые имеют различные опорные картинки или которые имеют различные количества векторов движения ("ДА" 268), кодировщик видео может ассоциировать второе значение уровня границы (например, 1) с краем яркости (266).
x
x
x
x
[0131] Кроме того, кодировщик видео может определить, ассоциированы ли блок видео “p” и блок видео “q” каждый с единицами PU, которые имеют один вектор движения, и абсолютное значение разности между горизонтальными компонентами вектора движения единицы PU, ассоциированной с блоком видео “p” (MVp), и вектором движения единицы PU, ассоциированной с блоком видео “q” (MVq), больше чем или равно одному (272). В ответ на определение, что блок видео “p” и блок видео “q” каждый ассоциированы с единицами PU, которые имеют один вектор движения и абсолютное значение разности между MVq и MVp больше чем или равно одному ("ДА" 272), кодировщик видео может ассоциировать второе значение уровня границы (например, 1) с краем яркости (266).
y
y
y
y
[0132] Кроме того, кодировщик видео может определить, ассоциированы ли блок видео “p” и блок видео “q” каждый с единицами PU, которые имеют один вектор движения, и абсолютное значение разности между вертикальными компонентами вектора движения единицы PU, ассоциированной с блоком видео “p” (MVp) и вектором движения единицы PU, ассоциированной с блоком видео “q” (MVq), больше чем или равно одному (274). В ответ на определение, что блок видео “p” и блок видео “q” каждый ассоциированы с единицами PU, которые имеют один вектор движения и абсолютное значение разности между MVp и MVq больше чем или равно одному ("ДА" 274), кодировщик видео может ассоциировать второе значение уровня границы (например, 1) с краем яркости (266).
x
x
x
x
[0133] Кроме того, кодировщик видео может определить, имеют ли как PU, ассоциированная с блоком видео "q", так и PU, ассоциированная с блоком видео “p”, два вектора движения и, по меньшей мере для одной пары векторов движения, абсолютное значение разности между горизонтальными компонентами векторов движения (MVp, MVq) больше чем или равно одному (276). В ответ на определение, что как PU, ассоциированная с блоком видео "q", так и PU, ассоциированная с блоком видео “p”, имеют два вектора движения и, по меньшей мере для одной пары векторов движения, абсолютное значение разности между MVp и MVq больше чем или равно одному ("ДА" 276), кодировщик видео может ассоциировать второе значение уровня границы (например, 1) с краем яркости (266).
y
y
y
y
[0134] Кроме того, кодировщик видео может определить, имеют ли как PU, ассоциированная с блоком видео "q", так и PU, ассоциированная с блоком видео “p”, два вектора движения и, по меньшей мере для одной пары векторов движения, абсолютное значение разности между вертикальными компонентами векторов движения (MVp, MVq) больше чем или равно одному (278). В ответ на определение, что как PU, ассоциированная с блоком видео "q", так и PU, ассоциированная с блоком видео “p”, имеют два вектора движения и, по меньшей мере для одной пары векторов движения, абсолютное значение разности между вертикальными компонентами векторов движения (MVp, MVq) больше чем или равно одному ("ДА" 278), кодировщик видео может ассоциировать второе значение уровня границы (например, 1) с краем яркости (266).
[0135] Иначе, если ни одно из условий на этапах 268-278 не оценивается как истинное, кодировщик видео может ассоциировать край яркости с третьим значением уровня границы (280). В примере на Фиг. 5 третье значение уровня границы равно нулю. Таким образом, в примере на Фиг. 5 кодировщик видео может только ассоциировать значения уровня границы единицы или нуля с краем яркости, когда блок видео “p” и блок видео “q” ассоциированы с внешне предсказанными единицами CU. Как описано ниже, кодировщик видео не применяет фильтр удаления блочности к краю, если значение уровня границы, ассоциированное с краем, является третьим значением уровня границы (например, нулем).
[0136] Этапы 268-278 могут быть дополнительными проверками, чтобы определить разности между выборками в блоке видео “q” и выборками в блоке видео "p". Если проверки этапов 268-278 оценивается как истинные, выборки в блоке видео “q” и выборки в блоке видео “p” могут иметь некоторые различия. Иначе, выборки в блоке видео “q” и выборки в блоке видео “p” может быть мало или никаких различий, соответственно край может быть ассоциирован с значением нуля уровня границы, и фильтр удаления блочности не применяется к выборкам, ассоциированным с краем.
[0137] Настоящее раскрытие описывает пример согласно Фиг. 5 как выполняемый относительно края яркости. Однако, в других примерах, операция, аналогичная операции 250, может быть выполнена относительно краев цветности.
[0138] Фиг. 6 является последовательностью операций, которая иллюстрирует примерную операцию 280, чтобы ассоциировать значение уровня границы c краем цветности между двумя блоками видео. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 280. В других примерах кодировщик видео может использовать операции, отличные от операции 280, чтобы ассоциировать значение уровня границы с краем цветности. Например, в других примерах кодировщик видео может выполнить операцию, чтобы ассоциировать значение уровня границы с краем цветности, в которой кодировщик видео выполняет больше, меньше или отличные этапы, чем операция 280. В других примерах кодировщик видео может выполнить этапы операции 280 в другом порядке или параллельно.
[0139] После того как кодировщик видео начинает операцию 280, кодировщик видео может определить, находится ли текущий блок видео CU в пределах P-вырезки или B-вырезки (282). Текущий блок видео CU является блоком видео, ассоциированным с CU (то есть, текущей CU), который в настоящее время кодирует кодировщик видео. В ответ на определение, что текущий блок видео CU находится в P-вырезке или B-вырезке ("ДА" 282), кодировщик видео может ассоциировать третье значение уровня границы (Bs) с краем (284). В примере на Фиг. 6 третье значение уровня границы равно 0. Значение уровня границы, равное нулю, может указывать, что фильтр удаления блочности не будет применен к краю цветности. Таким образом, кодировщик видео может применить фильтр удаления блочности к краю цветности, только когда край цветности находится в I-вырезке.
[0140] В ответ на определение, что текущий блок видео CU не находится в P-вырезке или B-вырезке (то есть текущий блок видео CU находится в I-вырезке) ("НЕТ" 282), кодировщик видео может определить, соответствует ли край цветности внутреннему краю для TU 4N×4N, где N - длина в выборках яркости края (286). Например, кодировщик видео может определить, соответствует ли край цветности внутреннему краю TU 32×32, когда длина края равна восьми выборкам. Внешний край TU может быть краем, который соответствует границе между блоками видео, ассоциированными с различными единицами TU. Внутренний край TU может быть краем, который не соответствует границе между блоками видео, ассоциированными с различными единицами TU.
[0141] В ответ на определение, что край цветности соответствует внутреннему краю TU 4N×4N ("ДА" 286), кодировщик видео может ассоциировать третье значение уровня границы (Bs) с краем цветности (284). Однако, в ответ на определение, что край цветности не соответствует внутреннему краю TU 4N×4N ("НЕТ" 286), кодировщик видео может ассоциировать первое значение уровня границы с краем цветности (288). В примере на Фиг.6 первое значение уровня границы равно двум.
[0142] На этапах 202 и 204 из Фиг. 4 кодировщик видео может проверить края на сетке выборок яркости 8×8, чтобы определить, соответствуют ли края краям единиц PU или единиц TU для CU. Кодировщик видео может хранить данные, указывающие, соответствует ли край краю PU или краю TU в массиве, на основании координат относительно левой верхней выборки яркости блока остаточных выборок яркости. Каждая CU может быть ассоциирована с блоком остаточных выборок яркости и двумя блоками остаточных выборок цветности. Кодировщик видео может подразделять или осуществлять субдискредитацию блоков остаточных выборок цветности таким образом, что каждый из блоков остаточных выборок цветности имеет половину ширины и высоты блока остаточных выборок яркости. Например, TU упомянутой CU может первоначально быть ассоциирована с блоком 32×32 остаточных выборок яркости и двумя блоками 32×32 остаточных выборок цветности. В этом примере кодировщик видео может подразделять или осуществлять субдискредитацию блоков остаточных выборок цветности в блоки 16×16 остаточных выборок цветности.
[0143] Таким образом, в подразделенном или субдискредитированном блоке остаточных выборок цветности, внутренние края TU, которые были ранее удалены на восемь выборок, теперь удалены на четыре выборки. В результате координаты края в блоке остаточных выборок цветности могут быть не теми же, какими они были до подразделения или субдискредитированными. Следовательно, кодировщик видео должен может требовать преобразовать координаты края, чтобы определить, соответствует ли край краю PU или TU. Это может увеличить сложность процесса удаления блочности. Чтобы избежать этой сложности, кодировщик видео может установить значение Bs для внутренних краев единиц TU 4N×4N равным третьему значению уровню границы. Таким образом, кодировщик видео не применяет фильтры удаления блочности к внутренним краям единицы TU 4N×4N.
[0144] Таким образом, операция поиска края больше, может более не быть необходимой для блока видео цветности, потому что кодировщик видео может выполнить удаление блочности цветности на фиксированной сетке N×N удаления блочности и субдискретизация из блока видео яркости до блока видео цветности типично приводит к блокам видео, не большим чем N×N выборок. Например, наибольший размер TU блока видео яркости типично равен 2N×2N, который кодировщик видео может субдискретизировать к блоку видео цветности N×N. В этом случае кодировщик видео может определить, что все края фиксированной сетки N×N удаления блочности являются краями TU и могут быть подвергнуты удалению блочности. В качестве примера удаление блочности цветности может быть выполнено на фиксированной сетке 8×8 удаления блочности. Так как наибольший размер TU блока видео яркости типично равен 16×16 выборок, субдискретизированный блок видео цветности может иметь размер 8×8 выборок, который эквивалентен фиксированной сетке 8×8 удаления блочности.
[0145] Одно исключение может существовать, когда размер TU блока видео яркости больше чем 2N×2N, например, 4N×4N. В этом случае блок видео яркости субдискретизируется к блоку 2N×2N видео цветности, который включает в себя четыре сетки N×N удаления блочности, чтобы применить фильтр удаления блочности. В качестве примера размер TU блока видео яркости может иметь размер 32×32 выборок таким образом, что субдискретизированный блок видео цветности имеет размер 16×16 выборок, который включает в себя четыре из фиксированных сеток 8×8 удаления блочности. Фильтр удаления блочности не может быть выполнен в отношении ни одного из краев сетки N×N удаления блочности, которые являются внутренними к блоку 2N×2N видео цветности. В этом случае поэтому кодировщик видео может выполнить проверку, чтобы гарантировать, что внутренние края блока 4N×4N видео яркости (и блока 2N×2N видео цветности) не обрабатываются, то есть фильтр удаления блочности выключен со значением Bs, равным нулю для внутренних краев.
[0146] Способы разрешают кодировщику видео идентифицировать TU и края PU согласно сетке N×N. Кроме того, кодировщик видео может определить, имеет ли блок видео цветности размер, больший чем N×N выборок. Кодировщик видео может применять, когда блок видео цветности имеет размер, меньший чем или равный N×N выборок, фильтр удаления блочности к выборкам цветности, ассоциированным с краем. Однако, когда блок видео цветности имеет размер, больший чем N×N выборок, кодировщик видео может выключить фильтр удаления блочности для краев сетки, которые являются внутренними к блоку видео цветности.
[0147] В некоторых примерах этап 286 применим, когда каждый край имеет восемь выборок в ширину или высоту. В таких примерах края могут сформировать сетку N×N выборок. Применение фильтра удаления блочности к выборкам цветности внутренних краев TU 4N×4N может не достаточно улучшать визуальное качество, чтобы оправдать сложность и стоимость эффективности применения фильтра удаления блочности. Следовательно, посредством ассоциирования третьего значения уровня границы с краем цветности, который не соответствует внешнему краю TU 32×32, кодировщик видео может только применить фильтр удаления блочности к выборкам цветности, ассоциированным с краем, когда край соответствует внешнему краю TU 32×32, и край ассоциирован с первым значением уровня границы. Таким образом, кодировщик видео может выгодно избежать сложности и затрат производительности, ассоциированных с выполнением дальнейших операций удаления блочности относительно края цветности.
[0148] Фиг. 7 является последовательностью операций, которая иллюстрирует примерную операцию 300, чтобы удалить блочность краев яркости CU. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 300 удаления блочности края яркости. В других примерах кодировщик видео может использовать операции, отличные от операции 300 удаления блочности края яркости. Например, в других примерах кодировщик видео может выполнить операцию удаления блочности края яркости, в которой кодировщик видео выполняет больше, меньше или отличные этапы чем операция 300 удаления блочности края яркости. В других примерах кодировщик видео может выполнить этапы операции 300 удаления блочности края яркости в другом порядке или параллельно.
[0149] После того как кодировщик видео начинает операцию 300 удаления блочности края яркости, кодировщик видео может определить, выполнил ли кодировщик видео операцию удаления блочности в отношении последнего вертикального края яркости, ассоциированного с текущим блоком видео CU (302). Текущий блок видео CU может быть блоком видео, ассоциированным с CU, которую кодировщик видео в настоящее время кодирует (то есть текущим CU). Последний вертикальный край яркости может быть заключительным вертикальным краем яркости, когда вертикальные края яркости, ассоциированные с текущим блоком видео CU, упорядочены слева направо согласно геометрическому порядку.
[0150] В ответ на определение, что кодировщик видео еще не выполнил операцию удаления блочности в отношении последнего вертикального края яркости ("НЕТ" 302), кодировщик видео может выбрать следующий вертикальный край яркости, ассоциированный с текущим блоком видео CU (304). Следующий вертикальный край яркости может быть первым вертикальным краем яркости, ассоциированным с текущим блоком видео CU, в отношении которого еще не была выполнена операция удаления блочности. Кодировщик видео может затем выполнить операцию удаления блочности в отношении выбранного вертикального края яркости (306). Выполняя операцию удаления блочности в отношении выбранного вертикального края яркости, кодировщик видео может уменьшить или устранить артефакты блокирования, ассоциированные с выбранным вертикальным краем яркости. Кодировщик видео может выполнить различные операции удаления блочности в отношении выбранного вертикального края яркости. Например, кодировщик видео может выполнить примерную операцию удаления блочности согласно Фиг. 8 в отношении выбранного вертикального края яркости. В других примерах кодировщик видео может выполнить операции удаления блочности, отличные от операции удаления блочности согласно Фиг. 8 в отношении выбранного вертикального края яркости.
[0151] После выполнения операции удаления блочности в отношении выбранного вертикального края яркости кодировщик видео может определить снова, была ли операция удаления блочности применена к последнему вертикальному краю яркости, ассоциированному с текущим блоком видео CU (302). В противном случае кодировщик видео может повторить этапы 304 и 306 относительно другого вертикального края яркости, ассоциированного с текущим блоком видео CU. Таким образом, кодировщик видео может выполнить операции удаления блочности в отношении каждого из вертикальных краев яркости, ассоциированных с текущим блоком видео CU.
[0152] В ответ на определение, что операция удаления блочности была выполнена в отношении последнего вертикального края яркости, ассоциированного с текущим блоком видео CU ("ДА" 302), кодировщик видео может определить, была ли операция удаления блочности выполнена в отношении последнего горизонтального края яркости, ассоциированного с текущим блоком видео CU (308). Последний горизонтальный край яркости может быть последним горизонтальным краем яркости, когда горизонтальные края яркости, ассоциированные с текущим блоком видео CU, упорядочены сверху вниз согласно геометрическому порядку.
[0153] В ответ на определение, что кодировщик видео еще не выполнил операцию удаления блочности в отношении последнего горизонтального края яркости ("НЕТ" 308), кодировщик видео может выбрать следующий горизонтальный край яркости, ассоциированный с текущим блоком видео CU (310). Следующий горизонтальный край яркости может быть первым горизонтальным краем яркости, ассоциированным с текущим блоком видео CU, в отношении которого еще не была выполнена операция удаления блочности. Кодировщик видео может затем выполнить операцию удаления блочности в отношении выбранного горизонтального края яркости (312). Выполняя операцию удаления блочности в отношении выбранного горизонтального края яркости, кодировщик видео может уменьшить или устранить артефакты блокирования, ассоциированные с выбранным горизонтальным краем яркости. Кодировщик видео может выполнить различные операции удаления блочности в отношении выбранного горизонтального края яркости. Например, кодировщик видео может выполнить примерную операцию удаления блочности согласно Фиг. 8 в отношении выбранного горизонтального края яркости.
[0154] После выполнения операции удаления блочности в отношении выбранного горизонтального края яркости кодировщик видео может определить снова, была ли операция удаления блочности применена к последнему горизонтальному краю яркости, ассоциированному с текущим блоком видео CU (308). В противном случае кодировщик видео может повторить этапы 310 и 312 относительно другого горизонтального края яркости, ассоциированного с текущим блоком видео CU. Однако, в ответ на определение, что кодировщик видео выполнил операцию удаления блочности в отношении последнего горизонтального края яркости, ассоциированного с текущим блоком видео CU ("ДА" 308), кодировщик видео может закончить операцию 300 удаления блочности края яркости. Таким образом, кодировщик видео может выполнить операции удаления блочности в отношении каждого из вертикального и горизонтального краев яркости, ассоциированных с текущим блоком видео CU.
[0155] Фиг. 8 является последовательностью операций, которая иллюстрирует примерную операцию удаления блочности 350, выполняемую кодировщиком видео в отношении индивидуального края яркости. В некоторых примерах кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию удаления блочности 350. Кодировщик видео может выполнить операцию 350 удаления блочности относительно края яркости, ассоциированного с блоком видео CU, который в настоящее время кодирует кодировщик видео. Для простоты объяснения настоящее раскрытие может ссылаться на CU, которую кодировщик видео в настоящее время кодирует как текущую CU. Кроме того, настоящее раскрытие может ссылаться на блок видео, ассоциированный с текущей CU, в качестве текущего блока видео CU. Настоящее раскрытие может ссылаться на край, в отношении которого кодировщик видео выполняет операцию 350 удаления блочности в качестве текущего края.
[0156] После того, как кодировщик видео начинает операцию 350 удаления блочности, кодировщик видео может определить, больше ли значение уровня границы, ассоциированное с текущим краем, чем ноль (352). Другими словами, кодировщик видео может определить, равно ли значение уровня границы, ассоциированное с текущим краем, первому или вторым значениям уровня границы.
[0157] В ответ на определение, что значение уровня границы, ассоциированное с текущим краем, не больше чем ноль ("НЕТ" 352), кодировщик видео может закончить операцию 350 удаления блочности относительно текущего края. Таким образом, кодировщик видео не применяет фильтр удаления блочности к текущему краю, когда значение уровня границы, ассоциированное с текущим краем, равно нулю (то есть третье значение уровня границы). Однако, кодировщик видео может применить один или более фильтров удаления блочности к выборкам яркости, ассоциированным с текущим краем, когда текущий край ассоциирован с первым значением уровня границы (например, 2) или вторым значением уровня границы (например, 1).
L
Y
P
L
Y
P
[0158] С другой стороны, в ответ на определение, что значение уровня границы, ассоциированное с текущим краем, больше чем ноль ("ДА" 352), кодировщик видео может определить значение QP удаления блочности (354). Кодировщик видео может определить значение QP удаления блочности различными способами. Например, если текущий край имеет место на границе между текущим блоком видео CU и блоком видео соседней CU, кодировщик видео может определить значение QP удаления блочности на основании значения QP яркости, ассоциированного с текущей CU, и/или значения QP яркости, ассоциированного с соседней CU. В этом примере кодировщик видео может определить значение QP удаления блочности на основании следующей формулы: qP = ((QP + QP + 1)>>1), где qP - значение QP удаления блочности, QP является значением QP яркости, ассоциированным с текущей CU, QP является значением QP яркости, ассоциированным с соседней CU, и “>>” является оператором смещения вправо.
c
c
[0159] После определения значения QP удаления блочности кодировщик видео может идентифицировать, на основании значения QP удаления блочности и значения уровня границы, ассоциированных с текущим краем, значение параметра Q для порога t (356). В некоторых примерах кодировщик видео может идентифицировать значение параметра Q для t, используя следующий псевдокод:
Если Bs > 2, TcOffset = 2
Если Bs ≤ 2, то TcOffset = 0
Q = Clip3 (0, MAX_QP+4, QP+TcOffset), где MAX_QP = 51.
В псевдокоде выше, "Bs" указывает значение уровня границы, ассоциированное с текущим краем, и “QP” указывает значение QP удаления блочности. В псевдокоде выше, Clip3 (x, y, z) = x, если z<x; y, если z>y; и z иначе.
c
[0160] В другом примере кодировщик видео может идентифицировать значение параметра Q для t с использованием следующего псевдокода:
Если Bs = 2, TcOffset = 2
Если Bs = 1, то TcOffset = 0
Если Bs = 0, то фильтр удаления блочности выключен
Q = Clip3 (0, MAX_QP+4, QP+TcOffset), где MAX_QP = 51.
c
L
L
c
[0161] В другом примере кодировщик видео может идентифицировать значение параметра Q для t как Q = Clip3 (0, 55, qP + 2 * (Bs-1) + (tc_offset_div2 << 1)), где qP - значение QP удаления блочности, Bs - значение уровня границы, ассоциированное с текущим краем, и “tc_offset_div2” - смещение параметра удаления блочности для t.
[0162] Кроме того, кодировщик видео может идентифицировать, на основании значения QP удаления блочности, значение параметра Q для порога β (358). В некоторых примерах кодировщик видео может идентифицировать значение параметра Q для β, используя следующую формулу:
Q = Clip3 (0, MAX_QP, QP), где MAX_QP = 51.
L
L
В псевдокоде выше, "Bs", "QP" и “Clip3” могут иметь те же значения как в псевдокоде выше. В другом примере кодировщик видео может идентифицировать значение параметра Q для β как Q = Clip3 (0, 51, qP + (beta_offset_div2 << 1)), где qP указывает QP удаления блочности, и “beta_offset_div2” - смещение параметра удаления блочности для β.
c
c
c
c
c
[0163] Кодировщик видео может затем определить значение t на основании значения Q, идентифицированного для t (360). Кроме того, кодировщик видео может определить значение β на основании значения Q, идентифицированного для β (362). В некоторых примерах кодировщик видео может использовать значения Q для t и β в качестве индексов для поиска значений t и β в одной или более таблицах поиска. Например, кодировщик видео может использовать следующую таблицу, чтобы идентифицировать значения t и β.
Таблица 1
Пороговые значения t<sub>c</sub> и β в качестве функции параметра Q, полученного из QP
Q
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
β
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
6
7
8
t<sub>C</sub>
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
Q
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
β
9
10
11
12
13
14
15
16
17
18
20
22
24
26
28
30
32
34
36
t<sub>C</sub>
1
1
1
1
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
Q
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
β
38
40
42
44
46
48
50
52
54
56
58
60
62
64
64
64
64
64
t<sub>C</sub>
5
5
6
6
7
8
9
9
10
10
11
11
12
12
13
13
14
14
c
c
Чтобы использовать значение Q в качестве индекса для поиска значения t или β в этой таблице поиска, кодировщик видео может определить местонахождение значения Q в таблице поиске и затем идентифицировать значение, определенное для t или β, ниже значения Q.
c
c,
c
c
[0164] После того, как кодировщик видео определяет значения t и β, кодировщик видео может определить равны ли t или β нулю (364). В ответ на определение, что или t или β равны нулю ("ДА" 364), кодировщик видео может закончить операцию 350 удаления блочности относительно текущего края. Как описано ниже, завершение операции 350 удаления блочности, когда t или β равны нулю, может уменьшить сложность и увеличить производительность кодировщика видео.
c
[0165] Таким образом, кодировщик видео может определить первое пороговое значение (то есть t) и второе пороговое значение (то есть β) на основании значения параметра квантования удаления блочности и на основании того, ассоциированы ли первое или второе значение уровня границы с текущим краем. Кроме того, кодировщик видео может определить, равны ли первое или второе пороговые значения нулю и не применять фильтр удаления блочности к выборкам яркости, ассоциированным с текущим краем, когда или первое или второе пороговое значение равны нулю. Однако, кодировщик видео может применить один или более фильтров удаления блочности к выборкам яркости, ассоциированным с текущим краем, когда текущий край ассоциирован с первым или вторым значением уровня границы, и ни первое, ни второе пороговое значение не равны нулю.
c,
[0166] В ответ на определение, что ни t ни β не равны нулю ("НЕТ" 364), кодировщик видео может определить, на основании β и выборок яркости, ассоциированных с текущим краем, применить ли фильтр удаления блочности к выборкам яркости, ассоциированным с текущим краем (366). В ответ на определение, на основании β и выборок яркости, ассоциированных с текущим краем, не применять фильтр удаления блочности к выборкам яркости, ассоциированным с текущим краем ("НЕТ" 366), кодировщик видео может закончить операцию 350 удаления блочности относительно текущего края. Соответственно, определение этапа 366 может быть решение о вкл./выкл. для фильтра удаления блочности.
[0167] Кодировщик видео может сделать это определение различными способами. Например, кодировщик видео может вычислить значение d следующим образом:
2,0
1,0
0,0
dp0 = |p-2*p+p|
2,3
1,3
0,3
dp3 =|p-2*p + p|
2,0
1,0
0,0
dq0 = |q-2*q + q|
2,3
1,3
0,3
dq3 = |q-2*q + q|
dpq0 = dp0 + dq0
dpq3 = dp3 + dq3
d = dpq0 + dqp3
В этом примере кодировщик видео может выполнить определение применить фильтр удаления блочности в ответ на определение, что значение d является меньшим, чем β. В этом примере dp0, dp3, dq0, и dq3 может быть измерениями активности выборок.
2,0
1,0
0,0
x, y
[0168] В формуле выше, p, p, q,и т.д., являются метками для выборок. Метки следуют следующему формату: буква. Буква указывает блок видео “q” или блок видео "p". Нижний индекс X указывает горизонтальное смещение в выборках от верхнего левого конца текущего края. Нижний индекс Y указывает вертикальное смещение в выборках от верхнего левого конца текущего края. Если выборки обозначены, используя букву и только единственный нижний индекс, можно предположить, что все обозначенные выборки находятся на одной линии. Фиг. 9 является концептуальной диаграммой, которая указывает примерные метки выборок на вертикальном краю между первым блоком “A” видео и вторым блоком "B" видео. Настоящее раскрытие может использовать этот формат маркировки в других формулах.
d
[0169] В другом примере кодировщик видео может вычислить значение  следующим образом:
2,2
1,2
0,2
2,2
1,2
0,2
d = |p - 2*p + p| + |q - 2*q + q| +
2,5
1,5
0,5
2,5
1,5
0,5
|p - 2*p + p| + |q - 2*q + q|
В этом примере кодировщик видео может выполнить определение применить фильтр удаления блочности в ответ на определение, что значение d является меньшим, чем β.
[0170] В аналогичном примере значение d может быть Булевым значением, вычисленным с использованием следующих формул:
1
2,2
1,2
0,2
2,2
1,2
0,2
d = |p - 2*p + p| + |q - 2*q + q|
2
2,5
1,5
0,5
2,5
1,5
0,5
d = |p - 2*p + p| + |q - 2*q + q|
1
2
d = d + d < β
2,2
1,2
0,2
2,2
1,2
0,2
В этом примере кодировщик видео может выполнить определение применить фильтр удаления блочности в ответ на определение, что значение d истинно и может выполнить определение не применять фильтр удаления блочности в ответ на определение, что значение d ложно. Таким образом, если суммированные измерения активности (например, |p - 2*p + p|, |q - 2*q + q| и т.д.) являются меньшими, чем пороговое значение β, кодировщик видео может применить фильтр удаления блочности к области края удаления блочности с восьмью выборками. Таким образом, если активность по краю является высокой, фильтр удаления блочности может не быть необходимым, так как неоднородность по краю может не быть видимой. Однако, если активность по краю является низкой, кодировщик видео может применить фильтр удаления блочности, чтобы сгладить не непрерывности между блоками видео с обеих сторон края.
[0171] В ответ на выполнение определения применить фильтр удаления блочности ("ДА" 366), кодировщик видео может определить, установлен ли флаг запрета сильного фильтра в "истина" (368). Флаг запрета сильного фильтра может быть сигнализирован в пределах различных структур синтаксиса в потоке битов. Например, флаг запрета сильного фильтра может быть обозначен в наборе параметров последовательности, наборе параметров адаптации, наборе параметров картинки, или заголовке вырезки в качестве части параметров управления фильтром удаления блочности.
[0172] Сигнализация флага запрета сильного фильтра в потоке битов может быть выгодной по нескольким причинам. Например, сигнализация флага запрета сильного фильтра в потоке битов может уменьшить сложность декодирования видео, так как определения сильного/слабого фильтра удаления блочности можно избежать, и слабый фильтр удаления блочности может иметь меньшую сложность, чем сильный фильтр удаления блочности.
[0173] В ответ на определение, что флаг запрета сильного фильтра не установлен в "истина" ("НЕТ" 368), кодировщик видео может определить, применить ли сильный фильтр удаления блочности к выборкам, ассоциированным с текущим краем (370). Другими словами, кодировщик видео может принимать решение о сильном/слабом фильтре удаления блочности. Когда уровень текстуры или активности низок, градиент является гладким, и неоднородность по краю является малой, то кодировщик видео должен применить сильный фильтр, чтобы обеспечить больше сглаживания неоднородности между блоками видео, ассоциированными с краем. Иначе, когда уровень текстуры или активности является высоким, градиент меняющим направление, и неоднородность по краю является большой, кодировщик видео должен применить слабый фильтр, чтобы обеспечить меньше сглаживания на краю.
[0174] Кодировщик видео может сделать определение, применять ли сильные фильтр удаления блочности различными путями. Например, текущий край может быть восемь выборок в ширину или высоту. В этом примере восемь выборок яркости могут быть разделены одинаково на первый сегмент и второй сегмент. Первый сегмент может включать в себя первые четыре выборки (то есть выборки 0…3), и второй сегмент может включать в себя последние четыре выборки (то есть, выборки 4…7). В этом примере кодировщик видео может сделать сильное/слабое определение для первого сегмента и другое сильное/слабое определение для второго сегмента. Кодировщик видео может отдельно применить сильный или слабый фильтр удаления блочности на этапах 372 и 374 к выборкам яркости, ассоциированным с первым сегментом и вторым сегментом. Кодировщик видео может выполнить примерную операцию, иллюстрированную на Фиг. 10, чтобы определить, применить ли сильный или слабый фильтр удаления блочности к первому или второму сегменту.
[0175] В других примерах сегмент текущего края может иметь четыре выборки ширину или высоту. В таких примерах кодировщик видео может сделать сильное/слабое определение для сегмента текущего края на основании значений выборок в первой линии выборок и четвертой линии выборок, которая пересекает текущий край. Линия выборок может быть последовательностью смежных выборок, которые перпендикулярны текущему краю (и, следовательно, перпендикулярны границе между первым блоком видео и вторым блоком видео). Например, если текущий край горизонтален, линии являются вертикальными. Аналогично, если текущий край является вертикальным, линии горизонтальны.
[0176] В других примерах кодировщик видео может сделать отдельные сильные/слабые определения для каждой линии выборок, которая пересекает текущий край. В таких примерах кодировщик видео может отдельно применить сильный или слабый фильтр удаления блочности на этапах 372 и 374 к выборкам яркости в каждой линии выборок, которая пересекает текущий край.
[0177] В ответ на выполнение определения применить сильный фильтр удаления блочности ("ДА" 370), кодировщик видео может применить сильный фильтр удаления блочности к выборкам яркости, ассоциированным с текущим краем (372). В некоторых примерах, применение сильного фильтра удаления блочности может изменить выборки вплоть до трех выборок далеко от края в обоих направлениях.
[0178] Кодировщик видео может применить сильный фильтр удаления блочности различными способами. Например, кодировщик видео может применить следующий сильный фильтр удаления блочности к линии выборок яркости, которая пересекает текущий край яркости:
0
2
1
0
0
1
p′ = (p + 2 * p + 2 * p + 2 * q + q + 4)/8
1
2
1
0
0
p′ = (p + p + p + q + 2)/4
2
3
2
1
0
0
p′ = (2*p + 3*p + p + p + q + 4)/8
0
1
0
0
1
2
q′ = (p + 2*p + 2*q + 2*q + q + 4)/8
1
0
0
1
2
q′ = (p + q + q + q + 2)/4
2
0
0
1
2
3
q′ = (p + q + q + 3*q + 2*q + 4)/8
0
1
2
3
0
1
2
0
1
2
3
0
1
2
В строках выше “q” может обозначить первый блок видео, и “p” может обозначить второй соседний блок видео. p, p, p, p обозначают первоначальные значения выборок второго блока видео, которые находятся соответственно на нуль, одну, две, и три выборки от границы между первым блоком видео и вторым блоком видео. p′, p′, и p′ обозначают модифицированные значения выборок второго блока видео, которые находятся соответственно на нуль, одну и две выборки от границы между первым блоком видео и вторым блоком видео. q, q, q, и q обозначают первоначальные значения выборок первого блока видео, которые находятся соответственно на нуль, одну, две и три выборки от границы между первым блоком видео и вторым блоком видео. q′, q′, и q′ обозначают модифицированные значения выборок первого блока видео, которые находятся соответственно на нуль, одну и две выборки от границы между первым блоком видео и вторым блоком видео.
[0179] В другом примере кодировщик видео может применить следующий сильный фильтр удаления блочности к линии выборок яркости, которая пересекает текущий край:
0
0
1
1
Δ = (9 * (q-p) - 3 * (q-p) + 8)/16
c
c
Δ = Clip (-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
1
1
Δp = Clip (-t/2, t/2, (( p + p + 1)/2 - p + Δ)/2)
1
1
p′ = p + ΔP
c
c
2
0
1
Δq = Clip (-t/2, t / 2, (( q + q + 1)/2 - q - Δ)/2)
1
1
q′ = q + Δq
Этот сильный фильтр удаления блочности может обладать одним или более преимуществами перед сильным фильтром удаления блочности из предыдущего абзаца. Например, этот сильный фильтр удаления блочности может сохранить интенсивность удаления блочности сильного фильтра удаления блочности из предыдущего абзаца, но требование буфера памяти линии кодировщика видео может быть тремя линиями вместо этих четырех линий, требуемых в сильном фильтре удаления блочности из предыдущего абзаца.
[0180] В другом примере кодировщик видео может применить следующий сильный фильтр удаления блочности к значениям яркости в линии выборок:
0
0
c
0
c
2
1
0
1
p′ = Clip3(p − 2*t, p + 2*t, ( p + 2*p + 2*p + 2*q + q + 4) >> 3)
1
1
c
1
c
2
1
0
0
p′ = Clip3(p − 2*t, p + 2*t, (p + p + p + q + 2) >> 2)
2
2
c
2
c
3
2
1
0
0
p′ = Clip3(p− 2*t, p+2*t,(2*p + 3*p + p + p + q + 4) >> 3))
0
0
c
0
c
1
0
0
1
2
q′ = Clip3(q − 2*t, q + 2*t, (p + 2*p + 2*q + 2*q + q + 4) >> 3))
1
1
c
1
c
0
0
1
2
q′ = Clip3( q − 2*t, q + 2*t, (p + q + q + q + 2 ) >>2)
2
2
c
2
c
0
0
1
2
3
q' = Clip3(q − 2*t, q + 2*t, (p + q + q + 3*q + 2*q + 4) >> 3)
[0181] В ответ на создание определения, что флаг запрета сильного фильтра установлен в "истина" ("ДА" 368) или в ответ на выполнение определения применить слабый фильтр удаления блочности к выбранному сегменту ("НЕТ" 370), кодировщик видео может применить слабый фильтр удаления блочности к выборкам яркости, ассоциированным с текущим краем (374). Таким образом, если флаг запрета сильного фильтра установлен в «истина», кодировщик видео использует только слабый фильтр удаления блочности, и кодировщик видео не выполняет определение, выполнить ли сильный/слабый фильтр удаления блочности.
[0182] Кодировщик видео может применить слабый фильтр удаления блочности различными способами. Например, кодировщик видео может применить следующий слабый фильтр удаления блочности к линии выборок яркости:
0
0
1
1
Δ = (9 * (q - p) - 3 * (q - p) + 8)/16
c
c
Δ = Clip3 (-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3 (- t/ 2, t/ 2, ((p + p + 1)/2 - p + Δ)/2)
1
1
p' = p + Δp
c
c
2
0
1
Δq = Clip3 (- t/ 2, t/ 2, (( q + q + 1)/2 - q - Δ)/2)
1
1
q′ = q + Δq
0
1
2
0
1
0
1
2
0
1
В линиях выше, p, p, p, p′, p′, q, q, q, q′, q′, и функция “Clip3” могут иметь те же самые значения, которые представлены выше. Этот слабый фильтр удаления блочности описан более подробно ниже со ссылками на Фиг. 12B и 14B.
[0183] В другом примере кодировщик видео может применить следующий слабый фильтр удаления блочности к линии выборок яркости, которая пересекает текущий край яркости:
Δ = (3 * (q0-p0) - (q1-p1) + 4)/8
c
c
Δ = Clip3 (-t, t, Δ)
p0′ = p0 + Δ
q0′ = q0 - Δ
c
c
Δp = Clip3 (- t/ 2, t/2, (( p2 + p0 + 1)/2-p1 + Δ)/2)
p1′ = p1 + Δp
c
c
Δq = Clip3 (- t/ 2, t/ 2, (( q2 + q0 + 1)/2-q1-Δ)/2)
q1′ = q1 + Δq
0
1
2
0
1
0
1
2
0
1
В линиях выше, p, p, p, p′, p′, q, q, q, q′, q′, и функция “Clip3” могут иметь те же самые значения, которые представлены выше. Этот слабый фильтр удаления блочности описан более подробно ниже со ссылками на Фиг. 14C.
[0184] В другом примере кодировщик видео может применить следующий слабый фильтр удаления блочности к линии выборок яркости, которая пересекает текущий край:
0
0
1
1
Δ = (3 * (q-p) - 3 * (q-p) + 8)/16
c
c
Δ = Clip3 (-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3 (- t/ 2, t/2, ((p + p + 1)/2-p + Δ)/2)
1
1
p′ = p + Δp
c
c
2
0
Δq = Clip3 (- t/2, t/2, ((q + q + 1)/2-q1-Δ)/2)
1
1
q′ = q + Δq
0
1
2
0
1
0
1
2
0
1
В линиях выше, p, p, p, p′, p′, q, q, q, q′, q′, и функция “Clip3” могут иметь те же самые значения, которые представлены выше.
[0185] Фиг. 10 является последовательностью операций, которая иллюстрирует примерную операцию 380, чтобы определить, применить ли сильный или слабый фильтр удаления блочности к сегменту края яркости. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 380. В других примерах кодировщик видео может использовать операции, отличные от операции 380, чтобы определить, применить ли сильный или слабый фильтр удаления блочности к сегменту. Например, в других примерах кодировщик видео может выполнить операцию, чтобы определить значение уровня границы, в котором кодировщик видео выполняет больше, меньше или отличные этапы, чем операция 380. В других примерах кодировщик видео может выполнить этапы операции 380 в другом порядке или параллельно.
0
3
[0186] После начала операции 380, кодировщик видео может определить индикатор swинтенсивностидля первой линии выборок в сегменте (382). Кроме того, кодировщик видео может определить индикатор swинтенсивностидля четвертой линии выборок в этом сегменте (384). В некоторых примерах кодировщик видео может использовать следующую формулу, чтобы определить индикатор интенсивности для линии выборок i.
i
2,i
1,i
0,i
0,i
1,i
2,i
sw = 2(|p - 2·p + p| + |q - 2·q + q|) < (β/4)и
2,i
0,i
0,i
2,i
(|p - p| + |q - q|) < (β/8) и
0, i
0,i
c
|p - q| < ((5·t + 1)/2)
2,i
1,i
0,i
0,i
1,i
2,i
2,i
0,i
0,i
2,i
0, i
0,i
c
В этом примере, 2(|p - 2·p + p| + |q - 2·q + q| ) < (β/4) может быть определением структуры/активности, (|p - p| + |q - q|) < (β/8) может быть определением градиента, и |p - q| < ((5·t + 1)/2) может быть проверкой неоднородности края.
0
3
[0187] После определения индикатора интенсивности для первой линии выборок и индикатора интенсивности для четвертой линии выборок, кодировщик видео может определить, равны ли индикатор интенсивности для первой линии выборок (sw) и индикатор интенсивности для четвертой линии выборок (sw) оба "истина" (386). В ответ на определение, что и индикатор интенсивности для первой линии выборок и индикатор интенсивности для четвертой линии выборок равны "истина" ("ДА" 386), кодировщик видео может выполнить определение применить сильный фильтр удаления блочности к сегменту текущего края (388). Иначе, в ответ на определение, что или индикатор интенсивности для первой линии выборок или индикатор интенсивности для четвертой линии выборок равны "ложь" ("НЕТ" 386), кодировщик видео может выполнить определение применить слабый фильтр удаления блочности к сегменту текущего края (390).
[0188] В случаях, когда край яркости имеет множественные сегменты с четырьмя выборками, кодировщик видео может выполнить операцию 380 в отношении каждого из сегментов. Например, кодировщик видео может выполнить операцию 380 в отношении второго сегмента края яркости. В этом примере кодировщик видео может определить и использовать индикаторы интенсивности для пятой и восьмой линий выборок вместо первой и четвертой линий выборок, как описано выше.
[0189] Выполняя определение, применить ли сильный или слабый фильтр удаления блочности таким образом, кодировщик видео может считать три выборки с обеих сторон края. Напротив, Тестовая Модель 5 (HM5) HEVC может использовать следующую формулу, чтобы сделать определение, применить ли сильный или слабый фильтр удаления блочности:
i
2,i
1,i
0,i
0,i
1,i
2,i
sw = 2(|p - 2·p + p| + |q - 2·q + q| ) < (β/4) и
3,i
0,i
0,i
3,i
(|p - p| + |q - q|) < (β/8) и
0, i
0,i
c
|p - q| < ((5·t + 1)/2)
3,i
3,i
Во второй строке этой формулы кодировщик видео использует выборки, которые находятся на четыре выборки от края (то есть p, q). Следовательно, когда кодировщик видео выполняет операцию 380, кодировщик видео может сохранить эти три строки или колонки выборок с обеих сторон края в буфере памяти. Напротив, если кодировщик видео должен был сделать определение, применить ли сильный или слабый фильтр удаления блочности на основании четырех или более строк или колонок выборок с обеих сторон края, кодировщику видео может быть необходимо сохранить четыре или более строк или колонок в буфере памяти. Таким образом, делая определение, применить ли сильный или слабый фильтр удаления блочности на основании трех выборок с обеих сторон края, кодировщик видео может уменьшить требование буфера памяти строк, сохраняя силу удаления блочности для сильного фильтра удаления блочности.
[0190] В другом примере кодировщик видео может использовать следующую формулу на этапах 382 и 384 вместо формул, предоставленных выше:
i
=
sw d < (β >> 2) и
3,i
0,i
0,i
3,i
(|p - p| + |q - q|) < (β >> 3) и
0,i
0,i
c
|p - q| < ((5·t + 1) >> 1)
2,
5,
В формуле выше, d может быть вычислен способом, описанным выше относительно этапа 366 из Фиг. 8. Кроме того, в формуле выше, d <(β>>2) может быть определением структуры/активности. В этом примере край может быть восемь выборок в ширину или высоту и кодировщик видео может сделать сильное/слабое определение для первого сегмента (то есть i = 0..3) и отдельное сильное/слабое определение для второго сегмента (то есть i = 4..7). Кодировщик видео может отдельно применить сильный или слабый фильтр удаления блочности к первому сегменту и второму сегменту. В этом примере кодировщик видео может сделать сильное/слабое определение для первого сегмента посредством определения значения sw используя формулу выше. Кодировщик видео может сделать сильное/слабое определение для второго сегмента посредством определения этого значения sw используя формулу выше. Создание сильного/слабого определения для первого и второго сегмента может быть менее сложным, чем создание отдельных сильных/слабых определений для каждой линии выборок, которая пересекает край яркости (то есть i = 0.. 7). Например, этот способ может уменьшить многие вычисления, чтобы решить, применить ли сильный или слабый фильтр удаления блочности, с двадцати четырех вычислений до шести вычислений.
[0191] Таким образом, в этом примере, кодировщик видео может определить, на основании третьей линии выборок, i=2, которая пересекает край, применить ли первый сильный фильтр удаления блочности или первый слабый фильтр удаления блочности к выборкам яркости, ассоциированным с первым сегментом края. Кроме того, кодировщик видео может определить, на основании шестой линии выборок, i=5, которая пересекает край, применить ли второй сильный фильтр удаления блочности или второй слабый фильтр удаления блочности к выборкам яркости, ассоциированным со вторым сегментом края. Первый и второй сильные фильтры удаления блочности могут быть одинаковыми или различными. Аналогично, первый и второй слабые фильтры удаления блочности могут быть одинаковыми или различными.
c
c
i
i
i
i
i
i
i
i
i
i
i
i
c
c
c
c
c
c
c
c
c
c
[0192] Как описано выше, кодировщик видео может определить в этапе 364 из Фиг. 8, равны ли β и t нулю. Если β равен нулю, и t равняется нулю, кодировщик видео выполняет определение применить слабый фильтр удаления блочности. Например, 2(|p2 - 2·p1 + p0| + |q0 - 2·q1 + q2|) < (β/4), (|p3 - p0| + |q0 - q3|) < (β/8), и|p0 - q0| < ((5·t + 1)/2) из формулы выше оценивают как ложь, когда β или t равны нулю. Однако, если β больше, чем ноль и t равно нулю, кодировщик видео может определить, что естественное условие края слабого фильтра удаления блочности ложно, и кодировщик видео не применяет слабый фильтр удаления блочности. Например, слабый фильтр яркости может включать в себя линию Δ = Clip3(-t, t, Δ). Если t равно нулю, Δ оценивается равной нулю. Следовательно, линии p0′ = p0 + Δ и q0′ = q0 - Δ слабого фильтра яркости не изменяют значения p0 и q0. Аналогично, слабый фильтр удаления блочности не изменяет значения p1 или q1, когда t равно нулю. Кроме того, если край является краем цветности, и tравно нулю, кодировщик видео не должен применять фильтр удаления блочности к краю, так как кодировщик видео обрезает Δ до нуля. Таким образом посредством определения, равны ли β и t нулю, прежде чем сделать определение, применить ли сильный или слабый фильтр удаления блочности, объем вычислений, которые выполняет кодировщик видео, может быть уменьшен. Напротив, обычные кодировщики видео могут проверить решения вкл/выкл для фильтров удаления блочности и выполнить сильные/слабые определения фильтра удаления блочности для краев, даже когда β и t равны нулю.
[0193] Фиг. 11 является последовательностью операций, которая иллюстрирует примерную операцию 400, чтобы удалить блочность края цветности CU. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 400 удаления блочности края цветности. В других примерах кодировщик видео может использовать операции, отличные от операции 400 удаления блочности края цветности. Например, в других примерах кодировщик видео может выполнить операцию удаления блочности края цветности, в которой кодировщик видео выполняет больше, меньше или отличные этапы, чем операция 400 удаления блочности края цветности. В других примерах кодировщик видео может выполнить этапы операции 400 удаления блочности края цветности в другом порядке или параллельно.
[0194] После того, как кодировщик видео начинает операцию 400 удаления блочности края цветности, кодировщик видео может определить, выбрал ли уже кодировщик видео последний вертикальный край цветности, ассоциированный с текущим блоком видео CU (402). Текущий блок видео CU может быть блоком видео, ассоциированным с CU, которую кодировщик видео в настоящее время кодирует (то есть текущей CU). Последний вертикальный край цветности может быть заключительным вертикальным краем цветности, когда вертикальные края цветности, ассоциированные с текущим блоком видео CU, упорядочены слева направо согласно геометрическому порядку.
[0195] В ответ на определение, что кодировщик видео еще не выбрал последний вертикальный край цветности ("НЕТ" 402), кодировщик видео может выбрать следующий вертикальный край цветности, ассоциированный с текущим блоком видео CU (404). Следующий вертикальный край цветности может быть первым вертикальным краем цветности, ассоциированным с текущим блоком видео CU, который еще не выбрал кодировщик видео.
[0196] Кодировщик видео может затем выполнить операцию удаления блочности в отношении выборок Cb, ассоциированных с выбранным вертикальным краем цветности (406). Кроме того, кодировщик видео может выполнить операцию удаления блочности в отношении выборок Cr, ассоциированных с выбранным вертикальным краем цветности (408). Выполняя операции удаления блочности в отношении выборок Cb и Cr выбранного вертикального края цветности, кодировщик видео может уменьшить или устранить артефакты блокирования, ассоциированные с выбранным вертикальным краем цветности. Кодировщик видео может выполнить различные операции удаления блочности в отношении выборок Cb и Cr, ассоциированных с выбранным вертикальным краем цветности. Например, кодировщик видео может выполнить примерную операцию удаления блочности согласно Фиг. 12 в отношении выборок Cb и Cr выбранного вертикального края цветности. В других примерах кодировщик видео может выполнить операции удаления блочности, отличные от операции удаления блочности согласно Фиг. 12 в отношении выборок Cb и Cr выбранного вертикального края цветности.
[0197] После выполнения операций удаления блочности в отношении выборок Cb и Cr, ассоциированных с выбранным вертикальным краем цветности, кодировщик видео может определить снова, была ли операция удаления блочности применена к последнему вертикальному краю цветности, ассоциированному с текущим блоком видео CU (402). Если нет, кодировщик видео может повторить этапы 404-408 относительно другого вертикального края цветности, ассоциированного с текущим блоком видео CU. Таким образом, кодировщик видео может выполнить операции удаления блочности в отношении выборок Cb и Cr, ассоциированных с каждым из вертикальных краев цветности, ассоциированных с текущим блоком видео CU.
[0198] В ответ на определение, что операция удаления блочности была выполнена в отношении выборок Cb и Cr последнего вертикального края цветности, ассоциированного с текущим блоком видео CU ("ДА" 402), кодировщик видео может определить, был ли последний горизонтальный край цветности, ассоциированный с текущим блоком видео CU, уже выбран (410). Последний горизонтальный край цветности может быть последним горизонтальным краем цветности, когда горизонтальные края цветности, ассоциированные с текущим блоком видео CU, упорядочены сверху вниз согласно геометрическому порядку.
[0199] В ответ на определение, что кодировщик видео еще не выполнил операцию удаления блочности в отношении последнего горизонтального края цветности ("НЕТ" 410), кодировщик видео может выбрать следующий горизонтальный край цветности, ассоциированный с текущим блоком видео CU (412). Следующий горизонтальный край цветности может быть первым горизонтальным краем цветности, ассоциированным с текущим блоком видео CU, в отношении которого еще не была выполнена операция удаления блочности. Кодировщик видео может затем выполнить операцию удаления блочности в отношении выборок Cb, ассоциированных с выбранным горизонтальным краем цветности (414). Кроме того, кодировщик видео может выполнить операцию удаления блочности в отношении выборок Cr, ассоциированных с выбранным горизонтальным краем цветности (416). Выполняя операцию удаления блочности в отношении выборок Cb и Cr, ассоциированных с выбранным горизонтальным краем яркости, кодировщик видео может уменьшить или устранить артефакты блокирования, ассоциированные с выбранным горизонтальным краем цветности. Кодировщик видео может выполнить различные операции удаления блочности в отношении выбранного горизонтального края цветности. Например, кодировщик видео может выполнить примерную операцию удаления блочности согласно Фиг. 12 отношении выбранного горизонтального края цветности.
[0200] После выполнения операции удаления блочности в отношении выборок Cb и Cr, ассоциированных с выбранным горизонтальным краем цветности, кодировщик видео может определить снова, был ли последний горизонтальный край цветности уже выбран (410). В противном случае кодировщик видео может повторить этапы 412-416 относительно другого горизонтального края цветности, ассоциированного с текущим блоком видео CU. Однако, в ответ на определение, что кодировщик видео уже выбрал последний горизонтальный край цветности, ассоциированный с текущим блоком видео CU ("ДА" 410), кодировщик видео может закончить операцию 400 удаления блочности края цветности. Таким образом, кодировщик видео может выполнить операции удаления блочности в отношении каждого из вертикального и горизонтального края цветности, ассоциированного с текущим блоком видео CU.
[0201] Фиг. 12 является последовательностью операций, которая иллюстрирует примерную операцию 450 удаления блочности, выполненную кодировщиком видео в отношении выборок Cb и Cr, ассоциированных с индивидуальным краем цветности. Кодировщик видео, такой как видео кодер 20 или видео декодер 30, может выполнить операцию 450 удаления блочности. В других примерах кодировщик видео может использовать операции, отличные от операции 450 удаления блочности. Например, в других примерах кодировщик видео может выполнить операцию удаления блочности, в которой кодировщик видео выполняет больше, меньше или отличные этапы, чем операция 450 удаление блочности. В других примерах кодировщик видео может выполнить этапы операцию 450 удаления блочности в другом порядке или параллельно.
[0202] После начала операции 450 удаления блочности кодировщик видео может определить, ассоциирован ли край цветности с I-вырезкой (452). Край цветности может быть ассоциирован с I-вырезкой, если край цветности ассоциирован с CU, которая находится в I-вырезке. В ответ на определение, что край цветности не ассоциирован с I-вырезкой ("НЕТ" 452), кодировщик видео может закончить операцию 450 относительно края цветности.
[0203] В некоторых примерах кодировщик видео сохранить значения уровня границы в массиве, который имеет запись для каждой выборки яркости блока видео, ассоциированного с текущей CU. Эта запись, ассоциированная с самой верхней (для вертикальных краев) или самой левой (для горизонтальных краев) выборкой яркости, может сохранить значение уровня границы, ассоциированное с этим краем. Кодировщик видео может субдискретизировать блоки видео цветности. Например, наибольший размер TU блока видео яркости типично равен 2N×2N, который кодировщик видео может субдискретизировать в блок видео цветности N×N. Поскольку кодировщик видео может субдискретизировать значения цветности в P-вырезках и B-вырезках, количество выборок цветности, ассоциированных с текущей CU, может быть меньшим, чем количество выборок яркости, ассоциированных с этой CU. Следовательно, чтобы найти значение уровня границы, ассоциированное с краем цветности, кодировщику видео может быть необходимо вычислить позицию выборки яркости, которая соответствует самой верхней или самой левой выборке цветности края цветности. Кодировщик видео может затем использовать позицию соответствующей выборки яркости, чтобы найти значение уровня границы, ассоциированное с краем цветности.
[0204] Определение позиции соответствующей выборки яркости может добавить сложность к кодировщику видео и уменьшить производительность кодировщика видео. Однако, кодировщик видео может не субдискретизировать выборки цветности в I-вырезках. Следовательно, кодировщику видео может быть нет необходимости вычислять позицию соответствующей выборки яркости, если край цветности ассоциирован с I-вырезкой. Таким образом, посредством проверки, ассоциирован ли край цветности с I-вырезкой и заканчивая операцию 450 удаления блочности, если край цветности не ассоциирован с I-вырезкой, кодировщик видео может избежать сложности и затрат производительности на вычисление позиции соответствующей выборки яркости, когда край цветности не ассоциирован с I-вырезкой.
[0205] В ответ на определение, что край цветности ассоциирован с I-вырезкой ("ДА" 452), кодировщик видео может определить значение QP удаления блочности (456). Кодировщик видео может определить значение QP удаления блочности способом, аналогичным описанному выше со ссылками на Фиг. 8.
c
c
c
c
c
[0206] После определения значения QP удаления блочности кодировщик видео может идентифицировать, на основании значения QP удаления блочности и значения уровня границы, ассоциированного с краем цветности, значение Q для t порога (458). Кодировщик видео может затем определить значение t на основании значения Q для t (460). Кодировщик видео может идентифицировать значение Q для t и значение t способом, аналогичным описанному выше со ссылками на Фиг. 8.
c
c
c
c
[0207] После определения значения t кодировщик видео может определить, равно ли t нулю (462). В ответ на определение, что t равно нулю ("ДА" 462), кодировщик видео может закончить операцию 450 удаления блочности относительно края цветности. Иначе, в ответ на определение, что t не равно нулю ("НЕТ" 462), кодировщик видео может применить фильтр удаления блочности к выборкам, ассоциированным с краем цветности (464). Если кодировщик видео выполняет операцию 450 удаления блочности относительно выборок Cb, ассоциированных с краем цветности, кодировщик видео может применить фильтр удаления блочности к выборкам Cb, ассоциированным с краем цветности. Если кодировщик видео выполняет операцию 450 удаления блочности относительно выборок Cr, ассоциированных с краем цветности, кодировщик видео может применить фильтр удаления блочности к выборкам Cr, ассоциированным с краем цветности. После применения фильтра удаления блочности кодировщик видео может закончить фильтр 450 удаления блочности относительно края цветности.
[0208] Кодировщик видео может применить фильтр удаления блочности различными способами. Например, кодировщик видео может применить следующий фильтр удаления блочности к выборкам цветности:
c
c
Δ = Clip3(- t, t, ((((q0 + p0) << 2) + p1 - q1 + 4) >> 3))
C
p0′ = Clip1 (p0 + Δ)
C
q0′ = Clip1 (q0 - Δ)
C
Функция “Clip1” выше обрезает значение до битовой глубины выборок цветности.
[0209] В другом примере кодировщик видео может применить следующий фильтр удаления блочности к выборкам цветности, ассоциированным с краем цветности:
Δ = (4 * (q0 - p0) - (q1 - p1) + 4)/8
c
c
Δ = Clip3 (-t, t, Δ)
C
p0′ = Clip1 (p0 + Δ)
C
q0′ = Clip1 (q0 - Δ)
[0210] В другом примере кодировщик видео может применить следующий фильтр удаления блочности к выборкам цветности, ассоциированным с краем цветности:
Δ = (3 * (q0 - p0) - (q1 - p1) + 4)/8
c
c
Δ = Clip3 (-t, t, Δ)
C
p0′ = Clip1 (p0 + Δ)
C
q0′ = Clip1 (q0 - Δ)
Этот фильтр удаления блочности может обладать одним или более преимуществами перед фильтром удаления блочности из предыдущего абзаца. Например, в отличие от примерного фильтр удаления блочности из предыдущего абзаца, этот фильтр удаления блочности не выходит за линейную наклонную линию. Кроме того, использование этого фильтра удаления блочности может облегчить повторное использование аппаратного обеспечения для фильтров яркости и удаления блочности. Фильтры удаления блочности цвета описаны более подробно со ссылками на Фиг. 13C и 13D.
[0211] Фиг. 13A-13D являются концептуальными диаграммами, которые иллюстрируют примерные графики значений выборки. На Фиг. 13A-13D сплошные черные круги представляют первоначальные значения выборок на противоположных сторонах края 500. Линейная наклонная линия 502 указывает прямую линию от первой выборки до последней выборки, используемыми слабым фильтром удаления блочности.
[0212] На Фиг. 13B серые круги представляют значения выборок яркости после того, как кодировщик видео применяет следующий слабый фильтр удаления блочности к выборкам яркости.
0
0
1
1
Δ = (9 * (q-p) - 3 * (q-p) + 8)/16
c
c
Δ = Clip3(-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3(- t/ 2, t/2, ((p + p + 1)/2-p + Δ)/2)
1
1
p′ = p + Δp
c
c
2
0
Δq = Clip(- t/ 2, t/2, ((q + q + 1)/2 - q1 - Δ)/2)
1
1
q′ = q + Δq
Как иллюстрировано на Фиг. 13B, слабый фильтр удаления блочности согласно Фиг. 13B может настроить выборки яркости способом, который выходит за линейную наклонную линию 502. Выход за линейную наклонную линию может означать, что значение Δ является слишком большим, таким образом потенциально создавая новый визуальный артефакт, который отрицательно влияет на качество изображения.
[0213] На Фиг. 13C серые круги представляют значения выборок после того, как кодировщик видео применяет слабый фильтр удаления блочности к выборкам цветности.
0
0
1
1
Δ = (4 * (q-p) - (q-p) + 4)/8
c
c
Δ = Clip3(-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3(- t/2, t/2, ((p + p + 1)/2 - p + Δ)/2)
1
1
p′ = p + Δp
c
c
2
0
Δq = Clip(- t/2, t/2, ((q + q + 1)/2 - q1 - Δ)/2)
1
1
q′ = q + Δq
Как иллюстрировано на Фиг. 13C, слабый фильтр удаления блочности согласно Фиг. 13C может настроить выборки цветности который выходит за линейную наклонную линию 502.
[0214] На Фиг. 13D серые круги представляют значения выборок цветности после того, как кодировщик видео применяет другой слабый фильтр удаления блочности к выборкам цветности.
Δ = (3 * (q0-p0) - (q1 - p1) + 4)/8
c
c
Δ = Clip3(-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3(- t/2, t/2, ((p + p + 1)/2-p + Δ)/2)
1
1
p′ = p + Δp
c
c
2
0
Δq = Clip(- t/2, t/2, ((q + q + 1)/2-q1-Δ)/2)
1
1
q′ = q + Δq
Слабый фильтр удаления блочности согласно Фиг. 13D не настраивает выборки цветности способом, который выходит за линейную наклонную линию 502.
[0215] Фиг. 14A-C являются концептуальными диаграммами, которые иллюстрируют примерные графики значений выборки. На Фиг. 14A-C сплошные черные круги представляют первоначальные значения выборок яркости. Вертикальные линии 550 указывают края, которые имеют место на границах между соседними блоками видео. Поскольку имеются профили ступеньки или неоднородности края в значениях выборок яркости на различных сторонах линий 550, могут быть артефакты блочности, ассоциированные с краями.
[0216] Фиг. 14A иллюстрирует первоначальные значения выборок до применения фильтра удаления блочности. Мелкая пунктирная линия 552 указывает линейный наклон от первой выборки до последней выборки. Первоначальные значения выборок с обеих сторон линий 550 являются гладкими и плоскими. Соответственно, третья часть сильного/слабого решения, проверка неоднородности края, может определить, применить ли сильный или слабый фильтр удаления блочности.
[0217] На Фиг. 14B серые круги соответствуют типовым значениям после того, как кодировщик видео применил обычный слабый фильтр удаления блочности к первоначальным выборкам яркости. Слабый фильтр удаления блочности может быть выражен как:
0
0
1
1
Δ = (9 * (q - p) - 3 * (q-p) + 8)/16
c
c
Δ = Clip3(-t, t, Δ)
0
0
p′ = p + Δ
0
0
q′ = q - Δ
c
c
2
0
1
Δp = Clip3(- t/2, t/2, ((p + p + 1)/2-p + Δ)/2)
1
1
p′ = p + Δp
c
c
2
0
Δq = Clip(- t/2, t/2, ((q + q + 1)/2-q1-Δ)/2)
1
1
q′ = q + Δq
На Фиг. 14B, слабый фильтр удаления блочности модифицирует две выборки с обеих сторон края из-за гладкости с обеих сторон края.
[0218] Кроме того, на Фиг. 14B белые круги указывают типовые значения после того, как кодировщик видео применил обычный сильный фильтр удаления блочности к выборкам яркости. Сильный фильтр удаления блочности может быть выражен как:
0
2
1
0
0
1
p′ = (p + 2 * p + 2 * p + 2 * q + q + 4)/8
1
2
1
0
0
p′ = (p + p + p + q + 2)/4
2
3
2
1
0
0
p′ = (2*p + 3*p + p + p + q + 4)/8
0
1
0
0
1
2
q′ = (p + 2*p + 2*q + 2*q + q + 4)/8
1
0
0
1
2
q′ = (p + q + q + q + 2)/4
2
0
0
1
2
3
q′ = (p + q + q + 3*q + 2*q + 4)/8
[0219] Как показано на Фиг. 14B, применение сильного фильтра удаления блочности может модифицировать до трех выборок яркости с обеих сторон края. Аналогично применение слабого фильтра удаления блочности может изменить до двух выборок яркости с обеих сторон края. Кроме того, как показано на Фиг. 14B, разница между применением сильного фильтра удаления блочности согласно Фиг. 14B и слабым фильтром удаления блочности согласно Фиг. 14B может быть относительно малой. Это может означать, что слабый фильтр удаления блочности согласно Фиг. 14B может быть слишком сильным.
[0220] На Фиг. 14C, кодировщик видео применил следующий слабый фильтр удаления блочности к выборкам яркости:
Δ = (3 * (q0-p0) - (q1-p1) + 4)/8
c
c
Δ = Clip3(-t, t, Δ)
p0′ = p0 + Δ
q0′ = q0 - Δ
c
c
Δp = Clip3(- t/2, t/2, ((p2 + p0 + 1)/2-p1 + Δ)/2)
p1′ = p1 + Δp
c
c
Δq = Clip(- t/2, t/2, ((q2 + q0 + 1)/2-q1-Δ)/2)
q1′ = q1 + Δq
0,i
0,i
c
Применение слабого фильтра удаления блочности согласно Фиг. 14C может быть выгодным по сравнению с применением слабого фильтра удаления блочности согласно Фиг. 14B по нескольким причинам. Например, если кодировщик видео выбрал слабый фильтр удаления блочности для края, проверка неоднородности края (например, |p-q| < ((5·t + 1)/2)) является ложной. Соответственно, может быть уместно для слабого фильтра удаления блочности сохранить часть профиля края. Напротив, слабый фильтр удаления блочности согласно Фиг. 14B может сгладить выборки в почти прямую линию.
[0221] В другом примере, в слабом фильтре удаления блочности согласно Фиг. 14C кодировщик видео может использовать только единственную операцию умножения, чтобы вычислить Δ и может определить на основании Δ модифицированные значения выборок яркости, ассоциированные с краем. Поскольку кодировщик видео только использует единственную операцию умножения, чтобы вычислить Δ, может быть менее в вычислительном отношении сложно для кодировщика видео, чтобы вычислить значение Δ в слабом фильтре удаления блочности согласно Фиг. 14C, чем значение Δ в слабом фильтре удаления блочности согласно Фиг. 14B. Значение Δ может указывать силу слабого фильтра удаления блочности. Определение значения Δ может быть рассмотрено как третье решение удаления блочности (после определения, применить ли фильтр удаление блочности и после определения, применить ли сильный или слабый фильтр удаления блочности). Различия между типовыми значениями (например, q0-p0) могут быть ступенчатым разрывом.
[0222] В некоторых примерах кодировщик видео может использовать слабый фильтр удаления блочности согласно Фиг. 14C для выборок цветности так же как выборок яркости. В результате модифицированные значения цветности не выходят за линейную наклонную линию. Кроме того, так как кодировщик видео может использовать один и тот же слабый фильтр удаления блочности для яркости и выборок цветности, кодировщик видео может быть в состоянии снова использовать одно и то же аппаратное обеспечение, чтобы применить слабый фильтр удаления блочности и к выборкам яркости и к выборкам цветности.
[0223] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы, как одна или более инструкций или код, считываемый компьютером носитель и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером носители данных, которые соответствуют материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель обычно может соответствовать (1) материальным считываемым компьютером носителям данных, которые являются не временными или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0224] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных, и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волокно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такие как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волокно-оптический кабель, витая пара, DSL, или эти беспроводные технологии, такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на не временные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0225] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0226] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но необязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0227] Были описаны различные примеры. Эти и другие примеры находятся в рамках нижеследующей формулы изобретения.