Уровень техники
[0001] В современных системах связи, видеосигнал может отправляться из одного терминала в другой по такой среде, как проводная и/или беспроводная сеть, зачастую сеть с коммутацией пакетов, такая как Интернет. Например, видео может быть частью вызова по VoIP (по протоколу "речь-по-IP"), осуществляемого из клиентского VoIP-приложения, выполняемого в пользовательском терминале, таком как настольный или переносной компьютер, планшетный компьютер или смартфон.
[0002] Типично, видеокадры кодируются посредством кодера в передающем терминале, чтобы сжимать их для передачи по сети. Кодирование для данного кадра может содержать внутрикадровое кодирование, за счет которого блоки кодируются относительно других блоков в идентичном кадре. В этом случае, целевой блок кодируется с точки зрения разности (остатка) между этим блоком и соседним блоком. Альтернативно, кодирование для некоторых кадров может содержать межкадровое кодирование, за счет которого блоки в целевом кадре кодируются относительно соответствующих частей в предшествующем кадре, типично на основе предсказания движения. В этом случае, целевой блок кодируется с точки зрения вектора движения, идентифицирующего смещение между блоком и соответствующей частью, из которой он должен предсказываться, и разность (остаток) между блоком и соответствующей частью, из которой он предсказывается. Соответствующий декодер в приемном устройстве декодирует кадры принимаемого видеосигнала на основе надлежащего типа предсказания, чтобы распаковывать их для вывода на экран на стороне декодера.
[0003] При кодировании (сжатии) видео, векторы движения используются для того, чтобы формировать межкадровое предсказание для текущего кадра. Кодер сначала выполняет поиск аналогичного блока (опорного блока) в предыдущем кодированном кадре, который имеет наилучшее совпадение с текущим блоком (целевым блоком), и передает в служебных сигналах смещение между опорным блоком и целевым блоком в декодер в качестве части кодированного потока битов. Смещение типично представляется в качестве горизонтальных и вертикальных координат X и Y и упоминается в качестве вектора движения.
[0004] Опорный "блок" фактически не ограничивается нахождением в фактической позиции блока в опорном кадре, т.е. не ограничивается решеткой, идентичной решетке целевых блоков, а вместо этого он представляет собой имеющую соответствующий размер часть опорного кадра, смещенную относительно позиции целевого блока на вектор движения. Согласно настоящим стандартам, векторы движения представлены с дробнопиксельным разрешением. Например, в стандарте H.264, каждый вектор движения представлен с разрешением в 1/4-пикселя. Таким образом, в качестве примера, если блок 16x16 в текущем кадре должен предсказываться из другого блока 16x16 в предыдущем кадре, который располагается на 1 пиксел влево от позиции целевого блока, то вектор движения составляет (4,0). Альтернативно, если целевой блок должен предсказываться из опорного блока, который располагается, скажем, только на 3/4 из пиксела влево от целевого блока, вектор движения составляет (3,0). Опорный блок в дробнопиксельной позиции фактически не существует сам по себе, а вместо этого он формируется посредством интерполяции между пикселами опорного кадра. Субпиксельные векторы движения позволяют достигать существенной производительности с точки зрения эффективности сжатия.
Сущность изобретения
[0005] Тем не менее, использование дробнопиксельного разрешения расходует большее число битов для того, чтобы кодировать вектор движения, чем когда движение оценивается с целопиксельным разрешением, и оно также расходует больший объем ресурсов обработки при поиске наилучшим образом совпадающего опорного элемента. Для кодирования видео, это может быть целесообразным, например, поскольку уменьшенный размер лучше совпадающего остатка, в общем, может перевешивать биты, расходуемые при кодировании вектора движения, либо может считаться, что достигаемое качество оправдывает ресурсы. Тем не менее, не все движущиеся изображения, которые должны кодироваться, представляют собой видео (т.е. захватываются из камеры). В данном документе следует признать, что при кодировании (сжатии) движущегося изображения, которое захватывается с экрана, а не камеры, большинство векторов движения в кодированном потоке битов, в общем, должны указывать на целочисленные пикселы, при этом очень небольшое число из них имеют тенденцию обнаружения в дробнопиксельных позициях. Таким образом, хотя кодеры нормально представляют векторы движения в потоках битов в единицах в 1/4 пиксела для приложений совместного использования экрана или записи, полоса пропускания фактически может сокращаться без чрезмерных потерь качества посредством кодирования векторов движения в единицах только в 1 пиксел.
[0006] Тем не менее, с учетом того, что дробный вектор движения по-прежнему может быть полезным для нормального видео (захваченного посредством камеры) или возможно для других движущихся изображений (например, анимаций), вектор движения может гибко передаваться в служебных сигналах: когда видеоисточник исходит из захваченного экрана, вектор движения может передаваться в служебных сигналах в единицах в 1 пиксел, но для нормального видео и/или для других движущихся изображений по-прежнему может использоваться дробнопиксельная единица.
[0007] Если обобщать, могут быть различные обстоятельства, при которых может быть полезным управлять тем, используется дробно- или целопиксельное разрешение векторов движения, например, в зависимости от того, как разработчик кодера хочет реализовывать любой требуемый компромисс или эффект. Например, возможно, некоторое видео или анимации вследствие некоторого аспекта своего характера должны более эффективно обслуживаться посредством целопиксельного разрешения при оценке движения, хотя другие видео или другие типы движущегося изображения могут более эффективно обслуживаться посредством дробнопиксельного разрешения.
[0008] Следовательно, согласно одному аспекту, раскрытому в данном документе, предусмотрен формат для использования при кодировании данных движущихся изображений, за счет которого данные движущихся изображений, кодированные согласно упомянутому формату, содержат:
- последовательность кадров, включающую в себя множество упомянутых кадров, в которых, по меньшей мере, область кодируется с использованием оценки движения;
- соответствующий набор значений векторов движения, представляющих векторы движения оценки движения для каждого соответствующего одного из упомянутых кадров или каждой соответствующей одной из одной или более областей в каждом из упомянутых кадров; и
- по меньшей мере, один соответствующий индикатор, ассоциированный с каждым из упомянутых соответствующих кадров или областей, указывающий то, кодируются ли соответствующие значения векторов движения соответствующего кадра или области с первым разрешением или со вторым разрешением.
[0009] Значения векторов движения кодируются согласно протоколу, за счет которого значения векторов движения, кодированные с первым разрешением, представлены в масштабе, имеющем большее число более точных шагов, и значения векторов движения, кодированные со вторым разрешением, представлены в масштабе, имеющем меньшее число менее точных шагов, и за счет этого расходуют меньшее число битов в среднем в кодированном потоке битов. Менее точные шаги представляют целопиксельные единицы, а более точные шаги представляют дробнопиксельные единицы.
[0010] Согласно дополнительному аспекту, раскрытому в данном документе, предусмотрен сетевой элемент или машиночитаемый носитель хранения данных, переносящий поток битов данных движущихся изображений, кодированных согласно такому формату или протоколу.
[0011] В вариантах осуществления, может быть предусмотрен поток битов, содержащий некоторые из упомянутого множества кадров или областей, кодированных с первым разрешением, и другие из упомянутого множества кадров или областей, кодированных со вторым разрешением, причем соответствующий индикатор указывает разрешение по отдельности для каждого из упомянутого множества (межкадрово кодированных) кадров или областей.
[0012] В вариантах осуществления, каждое из значений векторов движения каждого кадра или области может быть включено в поле векторов движения кодированного потока битов, и согласно упомянутому протоколу поле векторов движения может иметь уменьшенный размер для кадров или областей, векторы движения которых кодируются со вторым разрешением.
[0013] Согласно другому аспекту, раскрытому в данном документе, предусмотрен декодер, содержащий вход для приема данных движущихся изображений в кодированной форме и модуль предсказания движения. Данные движущихся изображений включают в себя множество кадров, в которых, по меньшей мере, область кодируется с использованием оценки движения (т.е. межкадрово кодированных кадров), на основе формата или протокола в соответствии с любым из вариантов осуществления, раскрытых в данном документе. Модуль предсказания движения декодирует упомянутые (межкадрово кодированные) кадры или области на основе значений векторов движения. Это включает в себя считывание каждого из индикаторов для того, чтобы определять то, кодируются ли значения векторов движения соответствующего кадра или области с первым или со вторым разрешением, и если первое разрешение, интерпретировать значения векторов движения в единицах дробных пикселов, а если второе разрешение, интерпретировать значения векторов движения в единицах целочисленных пикселов.
[0014] В вариантах осуществления, данные движущихся изображений могут содержать соответствующие два индикатора, ассоциированные с каждым из упомянутых кадров или областей, причем эти два индикатора указывают разрешение соответствующих векторов движения в двух измерениях, и модуль предсказания движения может быть выполнен с возможностью считывать оба индикатора и интерпретировать соответствующие значения векторов движения соответствующим образом.
[0015] В вариантах осуществления, каждый из, по меньшей мере, некоторых из упомянутых кадров может разделяться на несколько областей; данные движущихся изображений могут содержать, по меньшей мере, один соответствующий индикатор, ассоциированный с каждой соответствующей одной из нескольких областей, чтобы по отдельности указывать то, кодируются ли значения векторов движения соответствующей области с первым или со вторым разрешением; и модуль предсказания движения может быть выполнен с возможностью считывать индикаторы, чтобы определять, кодируются ли значения векторов движения каждой соответствующей области с первым или со вторым разрешением, и интерпретировать соответствующие значения векторов движения в упомянутых единицах дробных пикселов или целочисленных пикселов соответствующим образом. В варианте осуществления, упомянутые области могут представлять собой слайсы стандарта H.26x.
[0016] В вариантах осуществления, данные движущихся изображений дополнительно могут содержать параметр для задания того, указывается ли разрешение значений векторов движения в расчете на каждую область или в расчете на кадр, и модуль предсказания движения может быть выполнен с возможностью считывать этот параметр и интерпретировать значения векторов движения соответствующим образом.
[0017] В дополнительных вариантах осуществления, модуль предсказания движения может быть выполнен с возможностью интерпретировать соответствующие значения векторов движения в единицах дробных пикселов в качестве значения по умолчанию, если соответствующий индикатор не присутствует для одного из упомянутых кадров или областей.
[0018] В еще одних дополнительных вариантах осуществления, данные движущихся изображений, включающие в себя векторы движения, могут быть дополнительно кодированы согласно технологии кодирования без потерь. Декодер может содержать инверсию стадии кодирования без потерь, предшествующего упомянутому декодированию посредством модуля предсказания движения.
[0019] Согласно дополнительному аспекту, предусмотрен компьютерный программный продукт, осуществленный на машиночитаемом носителе хранения данных и выполненный с возможностью при приведении в исполнение выполнять операции декодера согласно любому из вариантов осуществления, раскрытых в данном документе.
[0020] Это краткое изложение сущности изобретения приведено для представления в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначена ни для идентификации ключевых признаков или важнейших признаков заявленного изобретения, ни для использования в качестве ограничения объема заявленного изобретения. Кроме того, при этом заявленное изобретение не ограничено реализациями, которые устраняют недостатки, отмеченные в данном документе.
Краткое описание чертежей
[0021] Чтобы упростить понимание настоящего раскрытия и показывать то, как могут быть осуществлены варианты осуществления, следует обратиться в качестве примера на прилагаемые чертежи, на которых:
[0022] Фиг. 1 является схематичным представлением видеопотока,
[0023] Фиг. 2 является принципиальной блок-схемой системы связи,
[0024] Фиг. 3 является схематичным представлением кодированного видеопотока,
[0025] Фиг. 4 является принципиальной блок-схемой кодера,
[0026] Фиг. 5 является принципиальной блок-схемой декодера,
[0027] Фиг. 6 является схематичным представлением схемы межкадрового кодирования, и
[0028] Фиг. 7 является схематичным представлением другой схемы межкадрового кодирования.
Подробное описание изобретения
[0029] Фиг. 1 приводит схематичную иллюстрацию входного видеосигнала, захваченного из камеры и разделенного на пространственные разделения, которые должны кодироваться посредством видеокодера, с тем чтобы формировать кодированный поток битов. Сигнал содержит движущееся видеоизображение, разделенное во времени на множество кадров (F), причем каждый кадр представляет изображение в различный соответствующий момент во времени (..., t-1, t, t+1,...). В пределах каждого кадра, кадр разделяется в пространстве на множество разделений, представляющих множество пикселов. Эти разделения могут упоминаться в качестве блоков. В определенных схемах, кадр разделяется и подразделяется на разные уровни блока. Например, каждый кадр может разделяться на макроблоки (MB), и каждый макроблок может разделяться на блоки (b), например, каждый блок, представляющий область 8x8 пикселов в кадре, и каждый макроблок, представляющий область 2x2 блоков (16x16 пикселов). В определенных схемах, каждый кадр также может разделяться на независимо декодируемые слайсы (S), содержащие множество макроблоков. Слайсы S, в общем, могут принимать любую форму, например, каждый слайс представляет собой одну или более строк макроблоков либо нерегулярный или произвольно заданный выбор макроблоков (например, соответствующий интересующей области (ROI) в изображении).
[0030] Относительно термина "пиксел", далее данный термин используется как означающий выборки и позиции дискретизации в решетке дискретизации для матрицы изображения (иногда в литературе, термин "пиксел" вместо этого используется как означающий все три цветовых компонента, соответствующие всего одной пространственной позиции, и иногда он используется для того, чтобы означать одну позицию или одно целочисленное выборочное значение в простом массиве). Разрешение решетки дискретизации зачастую отличается между матрицами дискретизации сигналов яркости и сигналов цветности. В вариантах осуществления, следующее может применяться к представлению 4:4:4, но оно потенциально также может применяться, например, к 4:2:2 и 4:2:0.
[0031] Также следует отметить, что хотя любой данный стандарт может присваивать конкретные смысловые значения терминам "блок" или "макроблок", термин "блок" также зачастую используется в более общем смысле в данной области техники для того, чтобы означать разделение кадра на уровне, на котором выполняются операции кодирования и декодирования, такие как внутреннее или взаимное предсказание, и именно это более общее смысловое значение используется в данном документе, если прямо не указано иное. Например, блоки, упоминаемые в данном документе, фактически могут представлять собой разделения, называемые "блоками" или "макроблоками" в стандартах H.26x, и различные стадии кодирования и декодирования могут работать на уровне любых таких разделений в соответствии с рассматриваемым режимом кодирования, приложением и/или стандартом.
[0032] Блок в захваченном входном сигнале обычно представляется в пространственной области, в которой каждый цветовой пространственный канал представляется как функция от пространственной позиции в блоке. Например, в цветовом YUV-пространстве, каждый из каналов яркости (Y) и цветности (U, V) может представляться как функция от декартовых координат x и y, Y(x, y), U(x, y) и V(x, y); либо в цветовом RGB-пространстве, каждый из красного (R), зеленого (G) и синего (B) каналов может представляться как функция от декартовых координат R(x, y), G(x, y), B(x, y). В этом представлении, каждый блок или часть представляется посредством набора пиксельных значений с различными пространственными координатами, например, с координатами X и Y, так что каждый канал цветового пространства представлен с точки зрения соответствующей абсолютной величины этого канала в каждом дискретном наборе пиксельных местоположений.
[0033] Тем не менее, до квантования, блок может быть преобразован в представление в области преобразования в качестве части процесса кодирования, типично в представление в пространственной частотной области (иногда называемой просто "частотной областью"). В частотной области, каждый цветовой пространственный канал в блоке представляется как функция от пространственной частоты (с размерами 1/длина) в каждом из двух измерений. Например, это может обозначаться посредством волновых чисел kx и ky в горизонтальном и вертикальном направлениях, соответственно, так что каналы могут выражаться как Y(kx, ky), U(kx, ky) и V(kx, ky) в YUV-пространстве; или R(kx, ky), G(kx, ky), B(kx, ky) в RGB-пространстве. Таким образом, вместо представления цветового пространственного канала с точки зрения абсолютной величины в каждом дискретном наборе пиксельных позиций, преобразование представляет каждый цветовой пространственный канал с точки зрения коэффициента, ассоциированного с каждым дискретным набором пространственных частотных компонентов, которые составляют блок, т.е. амплитуды каждого дискретного набора пространственных частотных членов, соответствующих различным частотам пространственного изменения в блоке. Возможности для таких преобразований включают в себя преобразование Фурье, дискретное косинусное преобразование (DCT), преобразование Карунена-Лоэва (KLT) или т.п.
[0034] Блок-схема по фиг. 2 приводит пример системы связи, в которой могут использоваться технологии этого раскрытия. Система связи содержит первый передающий терминал 12 и второй приемный терминал 22. Например, каждый терминал 12, 22 может содержать одно из мобильного телефона или смартфона, планшетного компьютера, переносного компьютера, настольного компьютера или другого бытового прибора, такого как телевизионный приемник, абонентская приставка, стереосистема и т.д. Первый и второй терминалы 12, 22 функционально соединены с сетью 32 связи, и первый передающий терминал 12 в силу этого выполнен с возможностью передавать сигналы, которые должны приниматься посредством второго приемного терминала 22. Конечно, передающий терминал 12 также может допускать прием сигналов из приемного терминала 22 и наоборот, но в целях пояснения, передача описывается в данном документе с точки зрения первого терминала 12, а прием описывается с точки зрения второго терминала 22. Сеть 32 связи может содержать, например, сеть с коммутацией пакетов, к примеру, глобальную Интернет-сеть и/или локальную вычислительную сеть, и/или сотовую сеть мобильной связи.
[0035] Первый терминал 12 содержит машиночитаемый носитель 14 хранения данных, такой как флэш-память или другое электронное запоминающее устройство, магнитное устройство хранения данных и/или оптическое устройство хранения данных. Первый терминал 12 также содержит устройство 16 обработки в форме процессора или CPU, имеющего один или более модулей выполнения, приемо-передающее устройство, к примеру, проводной или беспроводной модем, имеющий передающее устройство 18, видеокамеру 15 и экран 17 (т.е. дисплей или монитор). Каждое из камеры 15 и экрана 17 может размещаться или не размещаться в корпусе, идентичном корпусу остальной части терминала 12 (и даже передающее устройство 18 может быть внутренним или внешним, например, содержащим аппаратный ключ либо беспроводной маршрутизатор во втором случае). Носитель 14 хранения данных, видеокамера 15, экран 17 и передающее устройство 18 функционально соединены с устройством 16 обработки, и передающее устройство 18 функционально соединено с сетью 32 через линию проводной или беспроводной связи. Аналогично, второй терминал 22 содержит машиночитаемый носитель 24 хранения данных, такой как электронное, магнитное и/или оптическое устройство хранения данных; и устройство 26 обработки в форме CPU, имеющего один или более модулей выполнения. Второй терминал содержит приемо-передающее устройство, к примеру, проводной или беспроводной модем, имеющий, по меньшей мере, приемное устройство 28 и экран 25, который может размещаться или не размещаться в корпусе, идентичном корпусу остальной части терминала 22. Носитель 24 хранения данных, экран 25 и приемное устройство 28 второго терминала функционально соединены с соответствующим устройством 26 обработки, и приемное устройство 28 функционально соединено с сетью 32 через линию проводной или беспроводной связи.
[0036] Устройство 14 хранения данных в первом терминале 12 сохраняет, по меньшей мере, кодер для кодирования данных движущихся изображений, причем кодер выполнен с возможностью приводиться в исполнение в соответствующем устройстве 16 обработки. При выполнении, кодер принимает "необработанный" (некодированный) входной видеопоток из видеокамеры 15, он выполнен с возможностью кодировать видеопоток, с тем чтобы сжимать его в поток с более низкой битовой скоростью (битрейтом), и выводит кодированный видеопоток для передачи через передающее устройство 18 и сеть 32 связи в приемное устройство 28 второго терминала 22. Устройство 24 хранения данных во втором терминале 22 сохраняет, по меньшей мере, видеодекодер, выполненный с возможностью приводиться в исполнение на своем устройстве 26 обработки. При выполнении, декодер принимает кодированный видеопоток из приемного устройства 28 и декодирует его для вывода на экран 25.
[0037] Кодер и декодер также выполнены с возможностью кодировать и декодировать другие типы данных движущихся изображений, включающие в себя потоки совместного использования экрана. Поток совместного использования экрана представляет собой данные изображений, захваченные с экрана 17 на стороне кодера, так что один или более других удаленных пользователей видят то, что пользователь на стороне кодера видит на экране, либо так что пользователь этого экрана может записывать то, что происходит на экране, для воспроизведения для одного или более других пользователей позднее. В случае вызова, осуществляемого между передающим терминалом 12 и приемным терминалом 22, движущийся контент экрана 17 в передающем терминале 12 кодируется и передается вживую (в реальном времени) для декодирования и отображения на экране 25 приемного терминала 22. Например, пользователь на стороне кодера может хотеть совместно использовать с другим пользователем то, как он применяет рабочий стол своей операционной системы или некоторое приложение.
[0038] Следует отметить, что если считается, что поток совместного использования экрана захватывается с экрана и т.п., необязательно накладывание ограничения конкретными механизмами для этого. Например, данные могут считываться из экранного буфера экрана 17 или захватываться посредством приема экземпляра идентичных графических данных, которые выводятся из операционной системы или из приложения для отображения на экране 17.
[0039] Фиг. 3 приводит схематичное представление кодированного потока 33 битов, который должен передаваться из кодера, работающего в передающем терминале 12, в декодер, работающий в приемном терминале 22. Поток 33 битов содержит кодированные данные 34 изображений для каждого кадра или слайса, содержащие кодированные выборки для блоков этого кадра или слайса вместе с ассоциированными векторами движения. В одном варианте применения, поток битов может передаваться в качестве части вызова вживую (в реальном времени), такого как VoIP-вызов между передающим и приемным терминалами 12, 22 (VoIP-вызовы также могут включать в себя видео и совместное использование экрана). Поток 33 битов также содержит информацию 36 заголовка, ассоциированную с каждым кадром или слайсом. В вариантах осуществления, заголовок 36 выполнен с возможностью включать в себя, по меньшей мере, один дополнительный элемент в форме, по меньшей мере, одного флага 37, указывающего разрешение вектора движения, что подробнее поясняется ниже.
[0040] Фиг. 4 является блок-схемой, иллюстрирующей кодер, который, к примеру, может реализовываться в передающем терминале 12. Кодер содержит главный модуль 40 кодирования, содержащий: модуль 51 дискретного косинусного преобразования (DCT), квантователь 53, модуль 61 обратного преобразования, обратный квантователь 63, модуль 41 внутреннего предсказания, модуль 43 взаимного предсказания, переключатель 47, узел 49 вычитания (-) и узел 65 декодирования без потерь. Кодер дополнительно содержит модуль 50 управления, соединенный с модулем 43 взаимного предсказания. Каждый из этих модулей или узлов может реализовываться как часть кода, сохраненного на носителе 14 хранения данных передающего терминала и выполненного с возможностью приведения в исполнения на своем устройстве 16 обработки, хотя возможность полной или частичной реализации некоторых или всех из них в специализированных аппаратных схемах не исключается.
[0041] Узел 49 вычитания выполнен с возможностью принимать экземпляр входного сигнала, содержащего множество блоков по множеству кадров (F). Входной поток принимается из камеры 15 или захватывается из того, что отображается на экране 17. Внутреннее или взаимное предсказание 41, 43 формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другого уже кодированного блока или опорной части соответствующего размера. Предсказанная версия предоставляется на вход узла 49 вычитания, в котором она вычитается из входного сигнала (т.е. фактического сигнала) в пространственной области, чтобы формировать остаточный сигнал, представляющий разность между предсказанной версией блока и соответствующим блоком в фактическом входном сигнале.
[0042] В режиме внутреннего предсказания, модуль внутреннего предсказания 41 формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другого уже кодированного блока в идентичном кадре, типично соседнего блока. При выполнении внутрикадрового кодирования, идея состоит в том, чтобы кодировать и передавать только показатель того, как часть данных изображений в кадре отличается от другой части в идентичном кадре. Эта часть затем может предсказываться в декодере (при условии некоторых абсолютных данных для начала), и в силу этого необходимо передавать только разность между предсказанием и фактическими данными, а не сами фактические данные. Разностный сигнал типично имеет меньшую абсолютную величину, так что приспосабливает меньшее число битов для кодирования (вследствие операции узла 65 сжатия без потерь, см. ниже).
[0043] В режиме взаимного предсказания, модуль 43 взаимного предсказания формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другой уже кодированной опорной части в кадре, отличном от текущего блока, при этом опорная часть имеет размер блока, но смещена относительно целевого блока в пространственной области посредством вектора движения, который предсказывается посредством модуля 43 взаимного предсказания (взаимное предсказание также может упоминаться в качестве предсказания движения или оценки движения). Модуль 43 взаимного предсказания выбирает оптимальный опорный элемент для конкретного целевого блока посредством выполнения поиска, в пространственной области, через множество возможных вариантов опорных частей, смещенных на множество соответствующих возможных векторов движения в одном или более кадрах, отличных от целевого кадра, и выбора возможного варианта, который минимизирует остаток относительно целевого блока согласно подходящему показателю. Модуль 43 взаимного предсказания переключается на тракт обратной связи посредством переключателя 47 вместо узла 41 внутрикадрового предсказания, и таким образом, контур обратной связи в силу этого создается между блоками одного кадра и другого, чтобы кодировать взаимный кадр относительно блоков другого кадра. Иными словами, остаток теперь представляет разность между блоком, полученным внутренним предсказанием, и фактическим входным блоком. Это типично приспосабливает еще меньшее число битов для кодирования, чем внутрикадровое кодирование.
[0044] Выборки остаточного сигнала (содержащие остаточные блоки после того, как предсказания вычитаются из входного сигнала) выводятся из узла 49 вычитания в модуль 51 преобразования (DCT) (или другое подходящее преобразование), в котором их остаточные значения преобразуются в частотную область, затем в квантователь 53, в котором преобразованные значения преобразуются в практически дискретные индексы квантования. Квантованные преобразованные индексы остатка, сформированные посредством модулей 51, 53 преобразования и квантования, а также индикатор относительно предсказания, используемого в модулях 41, 43 предсказания, и все векторы движения, сформированные посредством модуля 43 взаимного предсказания, выводятся для включения в кодированный видеопоток 33 (см. элемент 34 на фиг. 3); через дополнительный узел 65 кодирования без потерь, такой как кодер Голомба или энтропийный кодер, в котором векторы движения и преобразованные квантованные индексы дополнительно сжимаются с использованием технологий кодирования без потерь, известных в данной области техники.
[0045] Экземпляр квантованного преобразованного сигнала также возвращен через обратный квантователь 63 и модуль 61 обратного преобразования, чтобы формировать предсказанную версию блока (которая должна наблюдаться в декодере) для использования посредством выбранного модуля 41 или 43 предсказания при предсказании последующего блока, который должен быть кодирован, аналогично тому, как текущий кодируемый целевой блок предсказан на основе обратно квантованной и обратно преобразованной версии ранее кодированного блока. Переключатель 47 выполнен с возможностью передавать вывод обратного квантователя 63 во ввод либо модуля 41 внутреннего предсказания, либо модуля 43 взаимного предсказания согласно кодированию, используемому для текущего кодируемого кадра или блока.
[0046] Фиг. 5 является блок-схемой, иллюстрирующей декодер, который, к примеру, может реализовываться в приемном терминале 22. Декодер содержит инверсию кодирования 95 без потерь, узел 83 обратного квантования, узел 81 обратного DCT-преобразования, переключатель 70 и узел 71 внутреннего предсказания и узел 73 компенсации движения. Каждый из этих модулей или узлов может реализовываться как часть кода, сохраненного на носителе 24 хранения данных приемного терминала и выполненного с возможностью приведения в исполнение на своем устройстве 26 обработки, хотя возможность полной или частичной реализации некоторых или всех из них в специализированных аппаратных схемах не исключается.
[0047] Обратный квантователь 81 выполнен с возможностью принимать кодированный сигнал 33 из кодера через приемное устройство 28 и узел 95 обратного кодирования без потерь. Обратный квантователь 81 преобразует индексы квантования в кодированном сигнале в деквантованные выборки остаточного сигнала (содержащие остаточные блоки) и передает деквантованные выборки в модуль 81 обратного DCT, в котором они преобразуются обратно из частотной области в пространственную область. Переключатель 70 затем передает деквантованные остаточные выборки пространственной области в модуль 71 или 73 внутреннего или взаимного предсказания согласно режиму предсказания, используемому для декодирования текущего кадра или блока, и модуль 71, 73 внутреннего или взаимного предсказания использует внутреннее или взаимное предсказание, соответственно, для того чтобы декодировать блоки. То, какой режим использовать, определяется с использованием индикатора относительно предсказания и/или любых векторов движения, принимаемых с кодированными выборками 34 в кодированном потоке 33 битов. После этой стадии, выводятся декодированные блоки, которые должны воспроизводиться через экран 25 в приемном терминале 22.
[0048] Как упомянуто выше, кодеки согласно традиционным стандартам выполняют предсказание движения с разрешением в четверть пиксела, что означает то, что векторы движения также выражаются с точки зрения четвертьпиксельных шагов. Пример оценки движения с разрешением в четверть пиксела показан на фиг 6. В этом примере, пиксел p в верхнем левом углу целевого блока предсказывается из интерполяции между пикселами a, b, c и d, и другие пикселы целевого блока также предсказываются на основе аналогичной интерполяции между соответствующими группами пикселов в опорном кадре, согласно смещению между целевым блоком в одном кадре и опорной частью в другом кадре (причем эти блоки показаны с помощью полужирных пунктирных линий на фиг. 6). Тем не менее, выполнение оценки движения с этой степенью детализации имеет последствия, как пояснено ниже.
[0049] Что касается кодера 65 и декодера 95 без потерь, кодирование без потерь представляет собой форму сжатия, которая работает не посредством отбрасывания информации (такой как квантование), а посредством использования различных длин кодового слова для того, чтобы представлять различные значения в зависимости от того, с какой вероятностью должны возникать эти значения, или того, как часто они возникают в данных, которые должны кодироваться посредством узла 65 кодирования без потерь. Например, число начальных 0 в кодовом слове до появления 1 может указывать длину кодового слова, так что 1 является самым коротким кодовым словом, затем 010 и 011 являются следующими самыми короткими, затем 00100,..., и т.д. Таким образом, самые короткие кодовые слова являются намного более короткими, чем требуется, когда используется равномерная длина кодовых слов, но самые длинные являются длиннее их. Но посредством выделения самых частых или вероятных значений для самых коротких кодовых слов и только наименее вероятных или часто возникающих значений для более длинных кодовых слов, результирующий поток 33 битов может в среднем расходовать меньшее число битов в расчете на кодированное значение, чем когда используется равномерная длина кодовых слов, и за счет этого достигать сжатия без отбрасывания дальнейшей информации.
[0050] Большая часть кодера 40 до узла 65 кодирования без потерь спроектирована с возможностью пытаться задавать как можно больше значений как можно меньшими до прохождения через узел 65 кодирования без потерь. Поскольку они в таком случае возникают чаще, меньшие значения должны затем расходовать меньший битрейт в кодированном потоке 33 битов, чем большие значения. Именно поэтому кодируется остаток в отличие от абсолютных выборок. Это также является логическим обоснованием преобразования 51, поскольку множество выборок имеют тенденцию преобразовываться в нулевые или небольшие коэффициенты в области преобразования.
[0051] Аналогичное соображение может применяться к кодированию векторов движения.
[0052] Например, в H.264/MPEG-4 часть 10 и H.265/HEVC, вектор движения кодируется с помощью экспоненциального кодирования кодом Голомба. Следующая таблица показывает значения векторов движения и кодированные биты.
[0053] Из вышеприведенной таблицы можно видеть, что чем больше значение, тем больше битов используется. Это означает то, что чем выше разрешение вектора движения, тем большее число битов расходуется. Например, для четвертьпиксельного разрешения, смещение в 1 пиксел должно быть представлено посредством значения 4 с расходованием 5 битов в кодированном потоке битов.
[0054] При кодировании видео (захваченного из камеры), затраты для этого разрешения в векторе движения могут быть целесообразными, поскольку более высокое разрешение может предоставлять больше возможностей при поиске остаточного опорного элемента с меньшими затратами. Тем не менее, в данном документе следует отметить, что для движущихся изображений, захваченных с экрана, большинство пространственных смещений имеют тенденцию иметь полнопиксельные смещения, и немногие из них имеют тенденцию находиться в дробнопиксельных позициях, так что большинство векторов движения имеет тенденцию указывать на целопиксельные значения, и очень немногие имеют тенденцию указывать на дробнопиксельные значения.
[0055] На основе этого, может быть желательным кодировать векторы движения для данных изображений, захваченных с экрана с разрешением в 1 пиксел. С учетом того факта, что биты не должны тратиться на дробные части векторов движения для такого контента, это означает то, что может уменьшаться битрейт, расходуемый при кодировании такого контента.
[0056] Например, хотя кодеры нормально интерпретируют векторы движения в потоках битов в единицах 1/4-пиксельного смещения, кодер фактически зачастую может иметь возможность сокращать битрейт за счет недопущения этого разрешения и вместо этого кодирования векторов движения для приложений экранного кодирования в единицах целопиксельного смещения. Хотя это должно снижать точность векторов движения на коэффициент четыре, такая точность, в общем, является менее целесообразной для приложений совместного использования экрана или записи, и это также уменьшает число битов, требуемых для того, чтобы кодировать векторы.- Чтобы предсказывать текущий (целевой) блок из опорного блока на 1 пиксел влево относительно целевого блока, вектор движения составляет (1,0) вместо (4,0). При использовании вышеуказанного кодирования кодом Голомба, это означает то, что биты, расходуемые для кодирования вектора движения, изменяются с (00111, 1) на (010, 1), и в силу этого два бита экономятся в этом случае.
[0057] Кроме того, в вариантах осуществления, вектор движения с уменьшенным разрешением также может уменьшать сложность оценки движения, выполняемой в кодере, посредством ограничения поиска на основе вектора движения целочисленными значениями, за счет этого уменьшая ресурсы обработки, расходуемые посредством поиска. Альтернативно, должно быть возможным выполнять нормальный поиск и округлять результирующие векторы движения до целочисленных значений.
[0058] Фиг. 7 показывает пример предсказания движения, ограниченного до разрешения только в полные пикселы, при этом вектор движения ограничивается только полнопиксельными шагами. В отличие от фиг. 6, пиксел p предсказывается только из одного полного пиксела a без интерполяции. Он может альтернативно предсказываться из пиксела b, c, d либо другого пиксела в зависимости от смещения между целевым блоком в одном кадре и опорной частью в другом кадре (снова показаны с помощью полужирных пунктирных линий), но вследствие ограничения он не может предсказываться из интерполяции между пикселами. Примечание: может оказываться, что для любого данного блока, четвертьпиксельное предсказание, как проиллюстрировано в качестве примера на фиг. 6, формирует полнопиксельное смещение без интерполяции, если оно обеспечивает наименьший остаток. Тем не менее, не должно быть ограничений только этим, и для изображения значительных размеров, очень маловероятно, что это возникает для всех блоков.
[0059] С учетом того, что дробные значения векторов движения по-прежнему могут быть очень полезными для захваченного камерой контента, в вариантах осуществления, кодер 40 содержит контроллер 50, соединенный с модулем предсказания движения 43, причем контроллер 50 выполнен с возможностью гибко выбирать разрешение векторов движения: когда исходные данные исходят из захваченного экрана 17, и отсутствует дробнопиксельное движение, вектор движения кодируется и передается в единицах только полных пикселов; но для видео контента камеры, векторы движения по-прежнему кодируются и передаются с дробнопиксельной точностью.
[0060] Для этого, контроллер 50 может быть выполнен с возможностью измерять эвристику производительности, указывающую тот факт, что тип захватываемого контента представляет собой экранный контент. В ответ, он затем деактивирует компенсацию дробнопиксельного движения для кодирования экранного контента. Альтернативно, контроллер 50 может принимать индикатор из приложения или операционной системы касательно того, какие данные он предоставляет в кодер для кодирования, и контроллер 50 может выбирать между режимом на основе этого. В качестве другого варианта, можно выполнять выбор на основе ретроспективных данных. Выбор может выполняться на покадровой основе, или режим может выбираться по отдельности для различных областей в кадре, например, в расчете на каждый слайс.
[0061] Таким образом, перед кодированием кадра или слайса, кодер имеет возможность определять разрешение векторов движения на основе таких факторов, как ретроспективные статистические данные, сведения типа приложения, многопроходной анализ или некоторая другая такая технология. Если кодер решает использовать только оценку полнопиксельного движения, дробнопиксельный поиск пропускается. Если предсказание масштабированных векторов движения имеет дробную часть, предсказание может округляться до целочисленного значения.
[0062] В дополнительных вариантах осуществления, управление необязательно может применяться отдельно к вертикальному или горизонтальному компоненту вектора. Это может быть полезным для кодирования экранного видео, которое масштабируется по горизонтали или по вертикали. Например, рассмотрим случай, в котором кодер работает с долей экрана с измененными размерами по горизонтали или по вертикали. В этом случае, один из компонентов векторов движения должен иметь дробные части, при этом другой компонент не должен. Чтобы управлять битрейтом, кодер может регулировать параметр квантования (QP) в предварительно заданном диапазоне. Если QP достигает разрешенной верхней границы, и битрейт по-прежнему является слишком высоким, кодер может инициировать внутренний модуль изменения размеров. Он изменяет размеры входящих изображений по горизонтали, и на стороне декодера декодированные изображения растягиваются обратно до исходной ширины. Следовательно, может возникать ситуация, в которой также должно быть полезным трактовать горизонтальные и вертикальные векторы движения по-разному.
[0063] Чтобы представлять вектор движения в уменьшенном масштабе разрешения в единицах или шагах целочисленных пикселов и за счет этого достигать ассоциированного сокращения битрейта по сравнению с традиционными кодеками, протокол для передачи в служебных сигналах векторов движения должен обновляться для будущих стандартов кодеков. В вариантах осуществления, это может реализовываться как обновление стандарта H.265 (HEVC, стандарта высокоэффективного кодирования видео). Для кодирования захваченного экранного контента, формату кодированных данных 34 предоставляется поле векторов движения уменьшенного размера для каждого вектора движения. Для кодированного потока захвата экрана, кодированного в целопиксельном режиме, релевантные данные 34 в силу этого должны содержать целочисленные векторы движения в потоке 33 битов и, в вариантах осуществления, только целочисленные векторы движения в потоке 33 битов.
[0064] В вариантах осуществления, это должно быть необязательным, при этом флаг 37 также включается в заголовок 36, чтобы указывать то, используется дробнопиксельное (например, в 1/4 пиксела) или целопиксельное разрешение при кодировании ассоциированного кадра или слайса (следует снова обратиться к фиг. 3). Если горизонтальное и вертикальное разрешения могут выбираться отдельно, два флага 37 должны требоваться в расчете на кадр или слайс.
[0065] Далее раскрывается примерный вариант осуществления на основе обновления стандарта H.265. Модификация обеспечивает возможность представления векторов движения в уменьшенном целопиксельном масштабе в кодированном потоке 33 битов и добавляет два флага 37 в расчете на каждый слайс в информацию 36 заголовка сжатого потока, чтобы передавать в служебных сигналах разрешение векторов движения в горизонтальных и вертикальных компонентах.
[0066] Модификация не изменяет синтаксис или процесс синтаксического анализа, за исключением на уровне заголовка, но модифицирует процесс декодирования посредством интерпретации разностей векторов движения в качестве целых чисел и округления масштабированных MV-предикторов до целочисленных значений. Обнаружено, что модификация повышает эффективность кодирования максимум на 7% и в среднем приблизительно на 2% для тестированных последовательностей экранного контента, и она также позволяет снижать сложность процессов кодирования и декодирования.
[0067] Высокоуровневый индикатор добавляется (на уровне SPS, PPS и/или заголовка слайса), чтобы указывать разрешение для интерпретации векторов движения.
[0068] В процессе декодирования, если векторы движения указываются как имеющие полнопиксельное разрешение, и предсказание масштабированных векторов движения имеет дробную часть, то в вариантах осуществления предсказание округляется до целочисленного значения. Разности векторов движения интерпретируются просто в качестве целочисленных смещений, а не смещений в 1/4 выборки. Все остальные процессы декодирования остаются идентичными. Процесс синтаксического анализа (ниже уровня заголовка) также является неизменным. Когда векторы движения кодируются с точностью, равной полной выборке, и входные данные изображений используют дискретизацию 4:2:2 или 4:2:0, векторы движения сигнала цветности могут извлекаться обычным способом, что должно формировать смещения движения сигнала цветности в 1/2 выборки. Альтернативно, векторы движения сигнала цветности также могут округляться до целочисленных значений.
[0069] Относительно изменения синтаксиса для передачи в служебных сигналах разрешения векторов движения, в вариантах осуществления предусмотрено три возможных режима, при этом индикатор режима передается в служебных сигналах на верхнем уровне заголовка (в расчете на кадр), таком как набор параметров изображения (PPS), либо альтернативно на еще более высоком уровне, таком как набор параметров последовательности (SPS). Индикатор режима имеет три выбираемых значения. Одно значение указывает то, что векторы движения всегда интерпретируются как представляющие смещения в 1/4 выборки (в изображениях, которые используют этот PPS). Второе значение указывает то, что векторы движения всегда интерпретируются как представляющие целочисленные смещения (в изображениях, которые используют этот PPS). Третье значение указывает то, что предусмотрен сигнал на нижнем уровне, который адаптивно выбирает интерпретацию, которая должна применяться на этом нижнем уровне. Этот низкоуровневый индикатор может представлять собой флаг в заголовке слайса, который должен присутствовать только при работе в этом третьем режиме.
[0070] Чтобы реализовывать это, в вариантах осуществления, новый двухбитовый индикатор должен быть включен в PPS-расширение, чтобы указывать режимы управления разрешением векторов движения. Этот индикатор может упоминаться в качестве motion_vector_resolution_control_idc. Когда режим составляет 0, векторы движения кодируются с точностью в 1/4 выборки, и все процессы декодирования остаются неизменными. Когда режим представляет собой 1, все векторы движения в слайсах, которые ссылаются на PPS, кодируются с полнопиксельной точностью. Кроме того, когда режим представляет собой 2, разрешение векторов движения управляется на основе слайса посредством флага в заголовке слайса. Когда motion_vector_resolution_control_idc не присутствует, его значение логически выводится как 0. Когда motion_vector_resolution_control_idc равен 2, дополнительный флаг, называемый slice_motion_vector_resolution_flag, передается в служебных сигналах в заголовке слайса. Когда флаг является нулевым, векторы движения этого слайса кодируются с точностью в 1/4 выборки, а когда флаг равен 1, векторы движения кодируются с полнопиксельной точностью. Когда флаг не присутствует, его значение логически выводится как равное значению motion_vector_resolution_control_idc.
Модифицированный PPS-синтаксис проиллюстрирован следующим образом:
Модифицированный синтаксис заголовка слайса проиллюстрирован следующим образом:
[0071] Относительно масштабирования, упомянутого выше, именно это может возникать, например, в HEVC (H. 265). Идея состоит в том, что если вектор движения используется для кодирования некоторого другого кадра, может вычисляться то, что должно быть вектором движения, который должен быть эквивалентным с точки зрения смещения относительного позиционирования между: (i) текущим изображением и (ii) его опорным изображением. Это основано на относительном позиционировании смещения, указываемого посредством вектора движения в совместно размещенной части другого изображения, и основано на смещении относительного позиционирования между (iii) этим изображением и (iv) изображением, на которое оно ссылается в качестве своего опорного изображения. Иными словами, сами векторы движения могут кодироваться на основе предсказания с вектором движения для целевого блока в текущем целевом кадре, кодируемом относительно предыдущего вектора движения для пространственно соответствующего блока в предыдущем кадре. Вектор движения для целевого блока затем передается в служебных сигналах в кодированном потоке 33 битов только с точки зрения разности (например, типично дельты) между предсказанной версией и фактической версией. Декодер затем может воссоздавать кодированный вектор движения посредством выполнения идентичного предсказания на стороне декодера и суммирования дельты.
[0072] Тем не менее, временная частота кадров кодированных данных не всегда является постоянной и также может представлять собой разность между порядком, в котором изображения кодируются в потоке битов, и порядком, в котором они захватываются и отображаются. Эти временные взаимосвязи могут вычисляться и затем использоваться для того, чтобы масштабировать вектор движения таким образом, что он, по существу, представляет идентичный битрейт в идентичном направлении. Иными словами, предсказанная версия вектора движения не просто равна опорному вектору, а вместо этого представляет собой его масштабированную версию. Это известно как временное предсказание векторов движения.
[0073] Текущий процесс декодирования на основе векторов движения (MV) в HEVC-стандарте может обобщаться следующим образом.
1. Определение того, как должен предсказываться MV в декодере, и того, отправлена или нет дельта вектора движения (MVD) в кодированном потоке битов из кодера (это может заключать в себе некоторые синтаксические индикаторы).
2. Формирование предсказанного вектора движения (PMV). Это создает пару целых чисел (px, py). Целые числа предположительно представляют смещения с точностью позиционирования, равной четверть выборки, в области сигнала яркости.
3. Если MVD не отправляется, задание MV-значения (mx, my) как (px, py); иначе декодирование пары целых чисел (px, py) в качестве (dx, dy) и задание MV (mx, my) как (px+dx, py+dy). MV интерпретируется как представляющий смещения в 1/4 выборки в области сигнала яркости. Примечание: различение сигнала яркости имеет значение только в том случае, если видео имеет такой формат, как 4:2:2 или 4:2:0, который использует разрешение в канале сигнала яркости, отличное от разрешения в каналах сигнала цветности; если вместо этого видео представляет собой формат 4:4:4, например, смещение интерпретируется как имеющее единицы в 1/4 выборки для всех решеток дискретизации.
4. Сохранение конечного значения (mx, my) для последующего использования для формирования последующих PMV (и управления фильтрацией для удаления блочности и т.д.).
[0074] В вариантах осуществления настоящего раскрытия, когда используется целопиксельный режим вектора движения, масштабированный вектор движения может округляться в процессе декодирования, чтобы приспосабливаться к ограничению целопиксельным разрешением. Например, процесс декодирования на основе векторов движения может модифицироваться следующим образом.
1. Определение того, как должен предсказываться MV в декодере, и того, отправлена или нет дельта вектора движения (MVD) в кодированном потоке битов из кодера (это может заключать в себе некоторые синтаксические индикаторы).
2. Формирование предсказанного вектора движения (PMV). Это создает пару целых чисел (px, py). Целые числа предположительно представляют смещения с точностью позиционирования, равной четверть выборки, в области сигнала яркости.
3. При работе в режиме с целочисленной, выполнять следующее:
a. Округление предсказанного значения, чтобы заставлять его соответствовать целочисленному смещению, например, создавать (rx, ry)=(round(px/4), round(py/4)).
b. Если MVD не отправляется, задание MV-значения (mx, my) как (4*rx, 4*ry); иначе декодирование пары целых чисел (px, py) в качестве (dx, dy) и задание MV (mx, my) как (4*(rx+dx), 4*(ry+dy)). MV затем интерпретируется как представляющий смещения в 1/4 выборки в области сигнала яркости (Примечание. Так же, различение сигнала яркости имеет значение только в том случае, если видео имеет такой формат, как 4:2:2 или 4:2:0).
4. Иначе (т.е. при работе в режиме с точностью в 1/4 выборки), выполнять следующее: Если MVD не отправляется, задание MV-значения (mx, my) как (px, py); иначе декодирование пары целых чисел (px, py) в качестве (dx, dy), и MV (mx, my) задается как (px+dx, py+dy). MV снова интерпретируется как представляющий смещения в 1/4 выборки в области сигнала яркости.
5. Сохранение конечного значения (mx, my) для последующего использования для формирования последующих PMV (и управления фильтрацией для удаления блочности и т.д.).
[0075] Тем не менее, вышеуказанный процесс не требуется для всех возможных вариантов осуществления. Вышеуказанный подход предполагает то, декодер работает в 1/4-пиксельной области с самого начала, так что масштабирование при предсказании векторов движения возникает в 1/4-пиксельной области. Тем не менее, фактически декодер не обязательно должен знать то, что означают единицы, на этой стадии. Таким образом, можно приспосабливать альтернативный подход, за счет которого интерпретация не приписывается для единиц позднее при использовании для того, чтобы фактически формировать изображение.
[0076] Далее описывается процесс декодирования согласно вариантам осуществления такого альтернативного подхода. Как описано выше, по меньшей мере, одно из значений векторов движения дифференциально кодируется, причем модуль 73 предсказания движения выполнен с возможностью предсказывать значение вектора движения посредством масштабирования другого из упомянутых значений векторов движения. По меньшей мере, одно из значений векторов движения может быть дифференциально кодировано с точки зрения дельта-значения, и модуль 73 предсказания движения может быть выполнен с возможностью предсказывать значение вектора движения посредством масштабирования другого из упомянутых значений векторов движения, чтобы формировать значение масштабированного вектора движения, и затем суммирования дельта-значения со значением масштабированного вектора движения. Тем не менее, в отличие от вышеописанного, модуль 73 предсказания движения дополнительно выполнен с возможностью интерпретировать значение вектора движения в упомянутых целопиксельных единицах (когда используется целочисленный режим), без его округления до целопиксельного разрешения после масштабирования. Это становится возможным за счет недопущения приписывания интерпретации для единиц при масштабировании. Модуль 73 предсказания движения может быть выполнен с возможностью интерпретировать значение вектора движения в упомянутых целопиксельных единицах посредством выполнения суммирования дельта-значения со значением масштабированного вектора движения без округления значения масштабированного вектора движения до целопиксельного разрешения. Результирующее значение вектора движения интерпретируется только с точки зрения целопиксельных или дробнопиксельных единиц при использовании для того, чтобы формировать изображение. Результирующее значение также сохраняется для использования при предсказании одного или более последующих векторов движения без приписывания интерпретации для сохраненного значения с точки зрения целочисленных или дробных единиц.
[0077] Например, согласно такой альтернативе, процесс декодирования на основе векторов движения может реализовываться следующим образом.
1. Определение того, как MV предсказывается в декодере, и того, отправлена или нет дельта вектора движения (MVD) в кодированном потоке битов из кодера (это может заключать в себе некоторые синтаксические индикаторы).
2. Формирование предсказанного вектора движения (PMV). Это создает пару целых чисел (px, py). Тем не менее, не следует беспокоиться о том, что это может представлять, т.е. не следует приписывать интерпретацию для единиц на этой стадии.
3. Если MVD не отправляется, задание MV-значения (mx, my) как (px, py); иначе декодирование пары целых чисел (px, py) в качестве (dx, dy) и задание MV (mx, my) как (px+dx, py+dy). При работе в режиме с целочисленной точностью, интерпретация MV как представляющего целые целочисленные смещения в области сигнала яркости, т.е. как представляющего значения (4*mx, 4*my) в единицах смещения в 1/4 выборки. Иначе (т.е. при работе в режиме с точностью в 1/4 выборки), интерпретация MV как представляющего смещения в 1/4 выборки в области сигнала яркости, т.е. как представляющего значение (mx, my) в единицах смещения в 1/4 выборки (Примечание. Так же, различение сигнала яркости имеет значение только в том случае, если видео имеет такой формат, как 4:2:2 или 4:2:0).
4. Сохранение конечного значения (mx, my) для последующего использования для формирования последующих PMV (и управления фильтрацией для удаления блочности и т.д.). С другой стороны, не следует беспокоиться о том, что это может представлять.
[0078] Таким образом, этап 3a округления, описанный выше, теперь исключается. Только интерпретация чисел модифицируется. Это приводит к тому, что процесс декодирования является менее сложным, поскольку не требуется модификация процесса MV-предсказания.
[0079] Следует отметить, что округление, поясненное выше, означает округление от разрешения в 1/4 (или дробного разрешения) до целочисленного разрешения. В настоящих стандартах, также предусмотрено округление от еще большей точности до разрешения в 1/4 качестве части предсказания векторов движения, и в вышеприведенном альтернативном варианте осуществления, не исключается, что предсказывается такое предварительное округление по-прежнему присутствует.
[0080] Могут быть некоторые побочные эффекты при работе таким образом. Один побочный эффект может состоять в том, что если некоторые изображения используют другой режим по сравнению с остальными, масштабирование, используемое в процессе MV-предсказания для временного MV-предсказания, не должно быть корректным. Тем не менее, он представляет собой очень незначительный эффект, тем более, что эта ситуация работы в различных режимах является редкой, а также поскольку временное MV-предсказание обычно обладает только очень незначительным преимуществом. Другой побочный эффект может состоять в том, что результаты управления фильтром удаления блочности могут зависеть от MV-значений, которые интерпретируются с различным коэффициентом масштабирования. Тем не менее, этот эффект также является незначительным, тем более, что удаление блочности может деактивироваться или не может иметь сильный эффект при кодировании экранного контента.
[0081] Другая возможность состоит в том, чтобы деактивировать временное предсказание векторов движения каждый раз при использовании только целочисленного движения. Уже предусмотрен синтаксис в HEVC, который позволяет кодеру деактивировать использование этого признака. Это должно представлять собой возможный способ исключать необходимость для декодера иметь специальный процесс, который работает по-разному в зависимости от того, кодируются разности в качестве целых чисел или в качестве дробных значений. Усиление, полученное из временного предсказания векторов движения, может быть небольшим (или нулевым) в этих вариантах использования в любом случае, так что его деактивация необязательно должна быть нежелательной.
[0082] Следует принимать во внимание, что вышеприведенные варианты осуществления описаны только в качестве примера.
[0083] Например, хотя выше приведено описание с точки зрения блоков, необязательно накладывание ограничения разделениями, называемые "блоками" в каком-либо конкретном стандарте. Например, блоки, упоминаемые в данном документе, могут представлять собой разделения, называемые "блоками" или "макроблоками" в стандартах H.26x.
[0084] Объем раскрытия, ограниченный каким-либо конкретным кодеком или стандартом и, в общем, технологиями, раскрытыми в данном документе, может реализовываться либо в контексте существующего стандарта, либо в обновлении существующего стандарта, будь то стандарт H.26x, такой как H264, или H.265, либо какой-либо другой стандарт, либо может реализовываться в специализированном кодеке. Дополнительно, объем раскрытия конкретно не ограничивается каким-либо конкретным представлением видеовыборок, будь то с точки зрения RGB, YUV и т.п. Кроме того, объем не ограничен ни конкретным квантованием, ни DCT-преобразованием. Например, может использоваться альтернативное преобразование, такое как преобразование Карунена-Лоэва (KLT), либо преобразование может не использоваться. Дополнительно, раскрытие не ограничено VoIP-связью или связью ни по какому конкретному виду сети, а может использоваться в любой сети или среде, допускающей обмен данными.
[0085] Если считается, что смещение вектора движения ограничивается или не ограничивается целым числом пикселов и т.п., это может означать оценку движения в любом одном или двух из цветовых пространственных каналов или оценку движения во всех трех цветовых каналах.
[0086] Дополнительно, изобретение не ограничено выбором между целопиксельным и четвертьпиксельным разрешением. В общем, технологии, описанные в данном документе, могут применяться к выбору между целопиксельным разрешением и любым дробнопиксельным разрешением, например, разрешением в 1/2 пиксела; или выбору между целопиксельным разрешением и множеством различных дробнопиксельных режимов, например, выбору между целочисленным, 1/2 и 1/4-пиксельным режимами.
[0087] Дополнительно, объем раскрытия сущности не ограничен вариантом применения, в котором кодированное видео и/или поток захвата экрана передается по сети, ни вариантом осуществления, в котором потоки представляют собой передаваемый вживую поток. Например, в другом варианте применения, поток может сохраняться на устройстве хранения данных, таком как оптический диск, жесткий диск или другое магнитное устройство хранения данных либо карта флэш-памяти в формате Memory Stick, либо другое электронное запоминающее устройство. Следовательно, необходимо отметить, что поток совместного использования экрана не обязательно должен означать совместное использование вживую (хотя оно безусловно представляет собой один вариант). Альтернативно или дополнительно, он может сохраняться для совместного использования с одним или более другими пользователями позднее, или захваченные данные изображений могут не использоваться совместно, а вместо этого просто записываться для пользователя, который использует экран в это время. В общем, захват экрана может представлять собой любые данные движущихся изображений, состоящие из захваченного экранного контента на стороне кодера, захваченного посредством любого подходящего средства (не обязательно посредством считывания из экранного буфера, хотя это представляет собой один вариант), для совместного использования с одним или более других пользователей (вживую или нет), либо просто записываться в интересах захватывающего пользователя или только для архива (и, возможно, никогда более не просматриваться фактически снова, как может оказаться).
[0088] Также следует отметить, что кодек не обязательно ограничен кодированием только данных захвата экрана и видео. В вариантах осуществления, он также может допускать кодирование других типов данных движущихся изображений, например, анимации. Такие другие типы данных движущихся изображений могут кодироваться в дробнопиксельном режиме или целопиксельном режиме.
[0089] Дополнительно, следует отметить, что межкадровое кодирование не обязательно всегда должно кодировать относительно предыдущего кадра, но, если обобщать, некоторые кодеки могут обеспечивать возможность кодирования относительно кадра, отличного от целевого кадра, либо предыдущего, либо перед целевым кадром (при условии подходящего исходящего буфера).
[0090] Дополнительно, как пояснено выше, следует отметить, что сами векторы движения могут кодироваться дифференцированно. В этом случае, если считается, что вектор движения, передаваемый в служебных сигналах в кодированном потоке битов, ограничивается целым числом пикселов и т.п., это означает то, что дифференциально кодированная форма вектора движения ограничена таким образом (например, дельта).
[0091] Дополнительно, декодер не обязательно должен реализовываться в конечном пользовательском терминале, ни выводить данные движущихся изображений для немедленного потребления в приемном терминале. В альтернативных реализациях, приемный терминал может представлять собой промежуточный терминал, к примеру, сервер с запущенным программным обеспечением декодера для вывода данных движущихся изображений в другой терминал в декодированной или транскодированной форме или сохранения декодированных данных для последующего применения. Аналогично, кодер не должен реализовываться в конечном пользовательском терминале, ни кодировать данные движущихся изображений, исходящие из передающего терминала. В других вариантах осуществления, передающий терминал, например, может представлять собой промежуточный терминал, к примеру, сервер с запущенным программным обеспечением кодера для приема данных движущихся изображений в некодированной или альтернативно кодированной форме из другого терминала и кодирования или транскодирования этих данных для хранения на сервере или перенаправления в приемный терминал.
[0092] В общем, любые из функций, описанных в данном документе, могут быть реализованы с помощью программного обеспечения, микропрограммного обеспечения, аппаратных средств (к примеру, неизменяемой логической схемы) или комбинации этих реализаций. Термины "модуль", "функциональность", "компонент" и "логика" при использовании в данном документе обычно представляют программное обеспечение, микропрограммное обеспечение, аппаратные средства или комбинацию вышеозначенного. В случае программной реализации, модуль, функциональность или логика представляют программный код, который выполняет указанные задачи при выполнении в процессоре (к примеру, в CPU или в нескольких CPU). Программный код может быть сохранен на одном или более машиночитаемых запоминающих устройств. Признаки технологий, описанных ниже, являются независимыми от платформы, что означает то, что технологии могут быть реализованы на множестве коммерческих вычислительных платформ, имеющих множество процессоров.
[0093] Например, терминалы могут включать в себя объект (например, программное обеспечение), который инструктирует аппаратным средствам пользовательских терминалов выполнять операции, например, функциональные блоки процессоров и т.д. Например, терминалы могут включать в себя машиночитаемый носитель, который может быть выполнен с возможностью поддерживать инструкции, которые инструктируют пользовательским терминалам, а более конкретно, операционной системе и ассоциированным аппаратным средствам пользовательских терминалов выполнять операции. Таким образом, инструкции функционируют с возможностью конфигурировать операционную систему и ассоциированные аппаратные средства таким образом, чтобы выполнять операции, и в силу этого приводить к преобразованию операционной системы и ассоциированных аппаратных средств с тем, чтобы выполнять функции. Инструкции могут предоставляться посредством машиночитаемого носителя в терминалы через множество различных конфигураций.
[0094] Одна такая конфигурация машиночитаемого носителя представляет собой среду передачи сигналов и в силу этого выполнена с возможностью передавать инструкции (например, в качестве несущей) в вычислительное устройство, к примеру, через сеть. Машиночитаемый носитель также может быть сконфигурирован как машиночитаемый носитель хранения данных и в силу этого не представляет собой среду передачи сигналов. Примеры машиночитаемого носителя хранения данных включают в себя оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), оптический диск, флэш-память, запоминающее устройство на основе жесткого диска и другие запоминающие устройства, которые могут использовать магнитные, оптические и другие технологии для того, чтобы сохранять инструкции и другие данные.
[0095] Хотя изобретение описано на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен характерными признаками или этапами, описанными выше. Вместо этого, характерные признаки и этапы, описанные выше, раскрываются как примерные формы реализации формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
КОДИРОВАНИЕ ДАННЫХ ЗАХВАТА ЭКРАНА | 2014 |
|
RU2679349C1 |
ПРЕДСКАЗАНИЕ ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ | 2012 |
|
RU2565363C2 |
ВЫБОР ТОЧНОСТИ ВЕКТОРА ДВИЖЕНИЯ | 2014 |
|
RU2682859C1 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2824190C2 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2813135C1 |
СПОСОБ И УСТРОЙСТВО СИГНАЛИЗАЦИИ ФЛАГОВ РЕЖИМА ПРОПУСКАНИЯ | 2021 |
|
RU2801586C1 |
ОСНОВАННЫЕ НА ХЕШАХ РЕШЕНИЯ КОДЕРА ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2014 |
|
RU2679981C2 |
СПОСОБ ВЫЧИСЛЕНИЯ ПОЗИЦИИ ОПОРНОЙ ВЫБОРКИ ЦЕЛОЧИСЛЕННОЙ СЕТКИ ДЛЯ ВЫЧИСЛЕНИЯ ГРАДИЕНТА ГРАНИЧНОЙ ВЫБОРКИ БЛОЧНОГО УРОВНЯ В ВЫЧИСЛЕНИИ ОПТИЧЕСКОГО ПОТОКА С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ И КОРРЕКЦИИ С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ | 2020 |
|
RU2820638C2 |
АДАПТИВНОЕ ПЕРЕКЛЮЧЕНИЕ ЦВЕТОВЫХ ПРОСТРАНСТВ, ЧАСТОТ ЦВЕТОВОЙ ДИСКРЕТИЗАЦИИ И/ИЛИ БИТОВЫХ ГЛУБИН | 2014 |
|
RU2653295C2 |
ОКНО ОГРАНИЧЕННОГО ДОСТУПА К ПАМЯТИ ДЛЯ УТОЧНЕНИЯ ВЕКТОРА ДВИЖЕНИЯ | 2018 |
|
RU2761511C2 |
Изобретение относится к области видеокодирования. Технический результат - повышение эффективности видеокодирования. Декодер содержит: вход для приема данных движущихся изображений в кодированной форме, включающих в себя множество кадров, в которых область закодирована с использованием оценки движения; модуль предсказания движения для декодирования кадров или областей на основе значений векторов движения, причем декодирование содержит: считывание каждого из индикаторов из информации заголовка, считывание упомянутого параметра и интерпретацию значений векторов движения соответствующим образом, определения, исходя из считанных индикаторов, того, закодированы ли значения векторов движения соответственного кадра или области с первым или со вторым разрешением, и интерпретацию значений векторов движения в единицах дробных пикселов в случае указания первого разрешения или в единицах целочисленных пикселов в случае указания второго разрешения. 3 н. и 17 з.п. ф-лы, 7 ил., 1 табл.
1. Декодер, содержащий:
вход для приема данных движущихся изображений в кодированной форме, включающих в себя множество кадров, в которых область закодирована с использованием оценки движения, при этом данные движущихся изображений включают в себя соответственный набор значений векторов движения, ассоциированных с каждым соответственным одним из кадров или с каждой соответственной областью в каждом из кадров, причем каждое из значений векторов движения каждого соответственного кадра или области включено в поле вектора движения в кодированном потоке битов, при этом данные движущихся изображений дополнительно включают в себя по меньшей мере один соответственный индикатор в информации заголовка, ассоциированной с каждым из соответственных кадров или областей, указывающий то, закодированы ли соответственные значения векторов движения с первым разрешением или со вторым разрешением, причем поле вектора движения имеет уменьшенный размер для кадров или областей, имеющих значения векторов движения, закодированные со вторым разрешением, по отношению к размеру кадров или областей, имеющих значения векторов движения, закодированные с первым разрешением, и данные движущихся изображений включают в себя параметр для задания того, указывается ли первое разрешение или второе разрешение значений векторов движения в расчете на каждую область или в расчете на каждый кадр; и
модуль предсказания движения для декодирования кадров или областей на основе значений векторов движения, причем декодирование содержит:
считывание каждого из индикаторов из информации заголовка,
считывание упомянутого параметра и интерпретацию значений векторов движения соответствующим образом,
определения, исходя из считанных индикаторов, того, закодированы ли значения векторов движения соответственного кадра или области с первым или со вторым разрешением, и
интерпретацию значений векторов движения в единицах дробных пикселов в случае указания первого разрешения или в единицах целочисленных пикселов в случае указания второго разрешения.
2. Декодер по п. 1, при этом данные движущихся изображений содержат два соответственных индикатора, ассоциированных с каждым из кадров или областей, причем эти два индикатора указывают разрешение соответственных векторов движения в двух измерениях, и модуль предсказания движения выполнен с возможностью считывать оба индикатора и интерпретировать соответственные значения векторов движения соответствующим образом.
3. Декодер по п. 1, при этом:
по меньшей мере один из кадров разделен на множественные области;
данные движущихся изображений включают в себя по меньшей мере один соответственный индикатор, ассоциированный с каждой соответственной одной из этих множественных областей, чтобы по отдельности указывать то, закодированы ли значения векторов движения этой соответственной области с первым или со вторым разрешением; и
модуль предсказания движения выполнен с возможностью считывать индикаторы для определения того, закодированы ли значения векторов движения каждой соответственной области с первым или со вторым разрешением, и интерпретировать соответственные значения векторов движения в единицах дробных пикселов или целочисленных пикселов соответствующим образом.
4. Декодер по п. 3, при этом упомянутые множественные области представляют собой слайсы стандарта H.26x.
5. Декодер по п. 1, в котором модуль предсказания движения выполнен с возможностью по умолчанию интерпретировать соответственные значения векторов движения в единицах дробных пикселов, если соответственный индикатор не присутствует для одного из кадров или областей.
6. Декодер по п. 1, при этом по меньшей мере одно из значений векторов движения дифференциально закодировано исходя из дельта-значения, причем модуль предсказания движения выполнен с возможностью предсказывать это по меньшей мере одно значение вектора движения посредством масштабирования другого из значений векторов движения; и модуль предсказания движения дополнительно выполнен с возможностью интерпретировать данное по меньшей мере одно значение вектора движения в целопиксельных единицах посредством выполнения суммирования дельта-значения с масштабированным значением вектора движения без округления масштабированного значения вектора движения до целопиксельного разрешения.
7. Декодер по п. 1, при этом декодер содержит инверсию стадии кодирования без потерь, предшествующей упомянутому декодированию посредством модуля предсказания движения.
8. Машиночитаемое запоминающее устройство, в котором хранятся машиноисполняемые инструкции, которые при их исполнении процессором сетевого устройства предписывают сетевому устройству осуществлять операции, содержащие:
прием данных движущихся изображений в кодированной форме, включающих в себя множество кадров, в которых область закодирована с использованием оценки движения, при этом данные движущихся изображений содержат соответственный набор значений векторов движения, ассоциированных с каждым соответственным одним из кадров или с каждой соответственной областью в каждом из кадров, причем каждое из значений векторов движения каждого соответственного кадра или области включено в поле вектора движения в кодированном потоке битов, при этом данные движущихся изображений дополнительно содержат по меньшей мере один соответственный индикатор в информации заголовка, ассоциированной с каждым из соответственных кадров или областей, указывающий то, закодированы ли соответственные значения векторов движения с первым разрешением или со вторым разрешением, причем поле вектора движения имеет уменьшенный размер для кадров или областей, имеющих значения векторов движения, закодированные со вторым разрешением, по отношению к размеру кадров или областей, имеющих значения векторов движения, закодированные с первым разрешением, и данные движущихся изображений включают в себя параметр для задания того, указывается ли первое разрешение или второе разрешение значений векторов движения в расчете на каждую область или в расчете на каждый кадр;
считывание каждого из индикаторов из информации заголовка;
считывание упомянутого параметра и интерпретацию значений векторов движения соответствующим образом;
определение, исходя из считанных индикаторов, того, закодированы ли значения векторов движения соответственного кадра или области с первым или со вторым разрешением;
интерпретацию соответственных значений векторов движения в единицах дробных пикселов в случае указания первого разрешения или в единицах целочисленных пикселов в случае указания второго разрешения; и
декодирование кадров или областей на основе значений векторов движения, проинтерпретированных в единицах дробных или целочисленных пикселов согласно упомянутой интерпретации.
9. Машиночитаемое запоминающее устройство по п. 8, при этом данные движущихся изображений содержат два соответственных индикатора, ассоциированные с каждым из кадров или областей, причем эти два индикатора указывают разрешение соответственных векторов движения в двух измерениях.
10. Машиночитаемое запоминающее устройство по п. 8, при этом:
по меньшей мере один из кадров разделен на множественные области;
данные движущихся изображений включают в себя по меньшей мере один соответственный индикатор, ассоциированный с каждой соответственной одной из этих множественных областей, чтобы по отдельности указывать то, закодированы ли значения векторов движения этой соответственной области с первым или со вторым разрешением; и
машиноисполняемые инструкции дополнительно предписывают сетевому устройству считывать индикаторы для определения того, закодированы ли значения векторов движения каждой соответственной области с первым или со вторым разрешением, и интерпретировать соответственные значения векторов движения в единицах дробных пикселов или целочисленных пикселов соответствующим образом.
11. Машиночитаемое запоминающее устройство по п. 10, при этом данные движущихся изображений дополнительно включают в себя параметр для задания того, указывается ли разрешение значений векторов движения в расчете на каждую область или в расчете на каждый кадр, причем машиноисполняемые инструкции дополнительно предписывают сетевому устройству считывать этот параметр и интерпретировать значения векторов движения соответствующим образом.
12. Машиночитаемое запоминающее устройство п. 8, в котором машиноисполняемые инструкции дополнительно предписывают сетевому устройству по умолчанию интерпретировать соответственные значения векторов движения в единицах дробных пикселов, если соответственный индикатор не присутствует для одного из кадров или областей.
13. Сетевое устройство, содержащее:
процессор; и
машиночитаемое запоминающее устройство, в котором хранится программа, которая при ее исполнении процессором генерирует кодированный поток битов, при этом кодированный поток битов содержит:
последовательность кадров, включающую в себя множество кадров, в которых область закодирована с использованием оценки движения;
соответственный набор значений векторов движения, представляющих векторы движения оценки движения для каждого соответственного одного из кадров или каждой соответственной области в каждом из кадров, при этом каждое из значений векторов движения каждого соответственного кадра или области включено в поле вектора движения в кодированном потоке битов, причем упомянутый соответственный набор значений векторов движения закодирован согласно протоколу, посредством которого значения векторов движения, закодированные с первым разрешением, представляют дробнопиксельные единицы, а значения векторов движения, закодированные со вторым разрешением, представляют целопиксельные единицы, при этом согласно данному протоколу поле вектора движения имеет уменьшенный размер для кадров или областей, имеющих значения векторов движения, закодированные со вторым разрешением, по отношению к размеру кадров или областей, имеющих значения векторов движения, закодированные с первым разрешением; и
соответственный индикатор в информации заголовка, ассоциированной с каждым из соответственных кадров или областей, указывающий то, закодированы ли соответственные значения векторов движения соответственного кадра или области с первым разрешением или со вторым разрешением, что указывается в расчете на каждую область или в расчете на каждый кадр, при этом посредством включения упомянутого индикатора в информацию заголовка декодеру обеспечивается возможность считывать данный индикатор и интерпретировать соответственные значения векторов движения в единицах дробных пикселов или целочисленных пикселов.
14. Сетевое устройство по п. 13, при этом кодированный поток битов включает в себя один из множества кадров или областей, закодированный с первым разрешением, и другой из множества кадров или областей, закодированный со вторым разрешением, причем упомянутый соответственный индикатор указывает разрешение по отдельности для каждого из множества кадров или областей.
15. Сетевое устройство по п. 13, при этом по меньшей мере один из кадров разделен на множественные области и кодированный поток битов включает в себя по меньшей мере один соответственный индикатор, ассоциированный с каждой соответственной одной из этих множественных областей, чтобы по отдельности указывать то, закодированы ли значения векторов движения этой соответственной области с первым или со вторым разрешением.
16. Сетевое устройство по п. 15, при этом упомянутые множественные области представляют собой слайсы стандарта H.26x.
17. Сетевое устройство по п. 15, при этом кодированный поток битов дополнительно включает в себя параметр для задания того, указывается ли разрешение значений векторов движения в расчете на каждую область или в расчете на каждый кадр.
18. Сетевое устройство по п. 13, при этом соответственные значения векторов движения, включенные в кодированный поток битов, дополнительно кодируются согласно технологии кодирования без потерь.
19. Сетевое устройство по п. 13, при этом соответственные значения векторов движения по умолчанию интерпретируются в единицах дробных пикселов, если соответственный индикатор не присутствует для одного из кадров или областей.
20. Сетевое устройство по п. 13, при этом кодированный поток битов содержит параметр для задания того, указывается ли разрешение значений векторов движения в расчете на каждую область или в расчете на каждый кадр, причем этот параметр является считываемым, чтобы посредством него интерпретировать значения векторов движения соответствующим образом.
Способ приготовления мыла | 1923 |
|
SU2004A1 |
US 7609763 B2, 27.10.2009 | |||
JP 2006157531 A, 15.06.2006 | |||
Пломбировальные щипцы | 1923 |
|
SU2006A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
Прибор, замыкающий сигнальную цепь при повышении температуры | 1918 |
|
SU99A1 |
RU 2007141925 A, 20.05.2009. |
Авторы
Даты
2019-02-14—Публикация
2015-01-07—Подача