Кодирование данных захвата экрана

Изобретение относится к кодеру и машиночитаемому носителю для обработки изображений. Технический результат заключается в повышении эффективности предсказания движения движущихся изображений. Кодер содержит ввод для приема данных движущихся изображений, модуль предсказания движения для использования при кодировании данных движущихся изображений посредством кодирования каждого блока относительно соответствующей опорной части другого кадра последовательности, при этом данные движущихся изображений упомянутого множества кадров содержат поток захвата экрана, модуль предсказания движения выполнен с возможностью ограничивать каждый из векторов движения потока захвата экрана единицами целопиксельных смещений в одном из упомянутых измерений, контроллер, выполненный с возможностью переключать модуль предсказания движения между первым режимом, в котором вектор движения не ограничивается единицами целопиксельных смещений, и вторым режимом, в котором вектор движения ограничивается единицами целопиксельных смещений в одном из упомянутых измерений, причем контроллер выполнен с возможностью переключать модуль предсказания движения на второй режим в зависимости от определения, что данные движущихся изображений, кодируемые в данный момент, содержат поток захвата экрана. 2 н. и 11 з.п. ф-лы, 7 ил.

 

Уровень техники

[0001] В современных системах связи, видеосигнал может отправляться из одного терминала в другой по такой среде, как проводная и/или беспроводная сеть, зачастую сеть с коммутацией пакетов, такая как Интернет. Например, видео может быть частью вызова по VoIP (по протоколу "речь-по-IP"), осуществляемого из клиентского VoIP-приложения, выполняемого в пользовательском терминале, таком как настольный или переносной компьютер, планшетный компьютер или смартфон.

[0002] Типично, видеокадры кодируются посредством кодера в передающем терминале, чтобы сжимать их для передачи по сети. Кодирование для данного кадра может содержать внутрикадровое кодирование, за счет которого блоки кодируются относительно других блоков в идентичном кадре. В этом случае, целевой блок кодируется с точки зрения разности (остатка) между этим блоком и соседним блоком. Альтернативно, кодирование для некоторых кадров может содержать межкадровое кодирование, за счет которого блоки в целевом кадре кодируются относительно соответствующих частей в предшествующем кадре, типично на основе предсказания движения. В этом случае, целевой блок кодируется с точки зрения вектора движения, идентифицирующего смещение между блоком и соответствующей частью, из которой он должен предсказываться, и разность (остаток) между блоком и соответствующей частью, из которой он предсказывается. Соответствующий декодер в приемном устройстве декодирует кадры принимаемого видеосигнала на основе надлежащего типа предсказания, чтобы распаковывать их для вывода на экран на стороне декодера.

[0003] При кодировании (сжатии) видео, векторы движения используются для того, чтобы формировать межкадровое предсказание для текущего кадра. Кодер сначала выполняет поиск аналогичного блока (опорного блока) в предыдущем кодированном кадре, который имеет наилучшее совпадение с текущим блоком (целевым блоком), и передает в служебных сигналах смещение между опорным блоком и целевым блоком в декодер в качестве части кодированного потока битов. Смещение типично представляется в качестве горизонтальных и вертикальных координат X и Y и упоминается в качестве вектора движения.

[0004] Опорный "блок" фактически не ограничивается нахождением в фактической позиции блока в опорном кадре, т.е. не ограничивается решеткой, идентичной решетке целевых блоков, а вместо этого он представляет собой часть соответствующего размера опорного кадрового смещения относительно позиции целевого блока посредством вектора движения. Согласно настоящим стандартам, векторы движения представлены с дробнопиксельным разрешением. Например, в стандарте H.264, каждый вектор движения представлен с 1/4-пиксельным разрешением. Таким образом, в качестве примера, если блок 16×16 в текущем кадре должен предсказываться из другого блока 16×16 в предыдущем кадре, который располагается на 1 пиксель влево от позиции целевого блока, то вектор движения составляет (4,0). Альтернативно, если целевой блок должен предсказываться из опорного блока, который располагается, скажем, только на 3/4 из пикселя влево от целевого блока, вектор движения составляет (3,0). Опорный блок в дробнопиксельной позиции фактически не существует сам по себе, а вместо этого он формируется посредством интерполяции между пикселями опорного кадра. Субпиксельные векторы движения позволяют достигать существенной производительности с точки зрения эффективности сжатия.

Сущность изобретения

[0005] Тем не менее, использование дробнопиксельного разрешения расходует большее число битов для того, чтобы кодировать вектор движения, чем когда движение оценивается с целопиксельным разрешением, и оно также расходует больший объем ресурсов обработки при поиске наилучше совпадающего опорного элемента. Для кодирования видео, это может быть целесообразным, например, поскольку уменьшенный размер лучше совпадающего остатка, в общем, может перевешивать биты, расходуемые при кодировании вектора движения, либо может считаться, что достигаемое качество оправдывает ресурсы. Тем не менее, не все движущиеся изображения, которые должны кодироваться, представляют собой видео (т.е. захватываются из камеры). Нижеприведенное основано на таком наблюдении, выявленном в данном документе, что при кодировании (сжатии) движущегося изображения, которое захватывается с экрана, а не с камеры, большинство векторов движения в кодированном потоке битов, в общем, должны указывать на целочисленные пикселы, при этом очень небольшое число из них имеют тенденцию обнаружения в дробнопиксельных позициях. Таким образом, хотя кодеры нормально представляют векторы движения в потоках битов в единицах в 1/4 пикселя для приложений совместного использования экрана или записи, полоса пропускания фактически может сокращаться без чрезмерных потерь качества посредством кодирования векторов движения в единицах только в 1 пиксел. Альтернативно, даже если векторы движения по-прежнему представлены в кодированном потоке битов в масштабе дробных пикселей, ресурсы обработки могут экономиться посредством ограничения поиска на основе вектора движения целопиксельными смещениями.

[0006] Следовательно, согласно одному аспекту, раскрытому в данном документе, предусмотрен кодер, содержащий ввод для приема данных движущихся изображений и модуль предсказания движения для использования при кодировании данных движущихся изображений. Данные движущихся изображений содержат последовательность кадров, которые должны быть кодированы, и каждый кадр разделяется на множество блоков в двух измерениях, причем каждый блок содержит множество пикселей в упомянутых двух измерениях. Блоки, например, могут представлять собой разделения, называемые "блоками" или "макроблоками" в стандарте H.26x, таком как H.264 или H.265. Модуль предсказания движения выполняет межкадровое кодирование посредством кодирования каждого блока (целевого блока) относительно соответствующей опорной части другого кадра последовательности (опорного "блока") со смещением соответствующего опорного элемента от целевого блока посредством соответствующего вектора движения. Дополнительно, в соответствии с настоящим раскрытием сущности, данные движущихся изображений упомянутого множества кадров содержат поток захвата экрана, и модуль предсказания движения выполнен с возможностью ограничивать каждый из векторов движения потока захвата экрана целым числом пикселей, по меньшей мере, в одном из упомянутых измерений.

[0007] В вариантах осуществления с учетом того, что дробный вектор движения по-прежнему может быть полезным для нормального видео (захваченного посредством камеры) или возможно для других движущихся изображений (например, анимаций), вектор движения может гибко передаваться в служебных сигналах: когда видеоисточник исходит из захваченного экрана, вектор движения может передаваться в служебных сигналах в единицах в 1 пиксел, но для нормального видео и/или для других движущихся изображений по-прежнему может использоваться дробнопиксельная единица.

[0008] Следовательно, в вариантах осуществления, кодер также может содержать контроллер, который выполнен с возможностью переключать модуль предсказания движения между двумя режимами: первым режимом и вторым режимом. В первом режиме вектор движения не ограничивается целым числом пикселей (в любом измерении), а во втором режиме вектор движения ограничивается целым числом пикселей, по меньшей мере, в одном измерении (и в вариантах осуществления, в обоих измерениях). Контроллер может быть выполнен с возможностью переключать модуль предсказания движения на второй режим в зависимости от определения того, что данные движущихся изображений, кодируемые в данный момент, содержат поток захвата экрана.

[0009] Например, данные движущихся изображений могут содержать поток захвата экрана и видеопоток (например, они могут представлять собой передаваемые вживую потоки вызова, осуществляемого по сети с коммутацией пакетов, такой как Интернет, либо могут представлять собой сохраненные потоки, предназначенные для последующего воспроизведения). Можно считать, что некоторые кадры данных движущихся изображений представляют собой кадры потока захвата экрана, а в другие моменты времени, кадры данных движущихся изображений представляют собой видеокадры, или можно считать, что различные области в каждом кадре содержат потоки захвата экрана и видеопотоки, соответственно (например, различные срезы). Чтобы улаживать такие ситуации, контроллер может быть выполнен с возможностью определять то, представляют собой данные движущихся изображений, кодируемые в данный момент, поток захвата экрана или видеопоток, и устанавливать модуль предсказания движения во второй режим для захвата экрана и в первый режим для видео. Альтернативно, в качестве другого примера, если поток захвата экрана и видеопоток включены в различные области некоторых из идентичных кадров, контроллер может быть выполнен с возможностью выбирать второй режим, если кадр вообще содержит какие-либо данные захвата экрана, и в противном случае выбирать первый режим, только если кадр не содержит данные захвата экрана; или с другой стороны, он может быть выполнен с возможностью переключаться на второй режим, если кадр содержит только данные захвата экрана и не содержит видео, и в противном случае выбирать первый режим, если кадр вообще содержит какое-либо видео.

[0010] Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерением ни то, чтобы идентифицировать ключевые признаки или важнейшие признаки заявленного предмета изобретения, ни то, чтобы использоваться таким образом, что она ограничивает объем заявленного предмета изобретения. Кроме того, при этом заявленный предмет изобретения не ограничен реализациями, которые разрешают недостатки, отмеченные в данном документе.

Краткое описание чертежей

[0011] Чтобы упрощать понимание настоящего раскрытия сущности и показывать то, как могут быть осуществлены варианты осуществления, следует обратиться в качестве примера на прилагаемые чертежи, на которых:

Фиг. 1 является схематичным представлением видеопотока,

Фиг. 2 является принципиальной блок-схемой системы связи,

Фиг. 3 является схематичным представлением кодированного видеопотока,

Фиг. 4 является принципиальной блок-схемой кодера,

Фиг. 5 является принципиальной блок-схемой декодера,

Фиг. 6 является схематичным представлением схемы межкадрового кодирования, и

[0012] Фиг. 7 является схематичным представлением другой схемы межкадрового кодирования.

Подробное описание предпочтительных вариантов осуществления

[0013] Фиг. 1 приводит схематичную иллюстрацию входного видеосигнала, захваченного из камеры и разделенного на пространственные разделения, которые должны кодироваться посредством видеокодера, с тем чтобы формировать кодированный поток битов. Сигнал содержит движущееся видеоизображение, разделенное во времени на множество кадров (F), причем каждый кадр представляет изображение в различный соответствующий момент во времени (..., t-1, t, t+1,...). В пределах каждого кадра кадр разделяется в пространстве на множество разделений, представляющих множество пикселей. Эти разделения могут упоминаться в качестве блоков. В некоторых схемах кадр разделяется и подразделяется на разные уровни блока. Например, каждый кадр может разделяться на макроблоки (MB), и каждый макроблок может разделяться на блоки (b), например, каждый блок, представляющий область 8×8 пикселей в кадре, и каждый макроблок, представляющий область 2×2 блоков (16×16 пикселей). В некоторых схемах, каждый кадр также может разделяться на независимо декодируемые слайсы (S) каждый, содержащий множество макроблоков. слайсы S, в общем, могут принимать любую форму, например, каждый слайс представляет собой одну или более строк макроблоков либо нерегулярный или произвольно заданный выбор макроблоков (например, соответствующий интересующей области (ROI) в изображении).

[0014] Относительно термина "пиксель", далее термин используется для того, чтобы означать выборки и позиции дискретизации в решетке дискретизации для матрицы изображений (иногда в литературе, термин "пиксель" вместо этого используется для того, чтобы означать все три цветовых компонента, соответствующие всего одной пространственной позиции, и иногда он используется для того, чтобы означать одну позицию или одно целочисленное выборочное значение в простом массиве). Разрешение решетки дискретизации зачастую отличается между матрицами дискретизации сигналов яркости и сигналов цветности. В вариантах осуществления, следующее может применяться к представлению 4:4:4, но оно потенциально также может применяться, например, к 4:2:2 и 4:2:0.

[0015] Также следует отметить, что хотя любой данный стандарт может присваивать конкретные смысловые значения терминам "блок" или "макроблок", термин "блок" также зачастую используется в более общем смысле в данной области техники для того, чтобы означать разделение кадра на уровне, на котором выполняются операции кодирования и декодирования, такие как внутреннее или внешнее предсказание, и именно это более общее смысловое значение используется в данном документе, если прямо не указано иное. Например, блоки, упоминаемые в данном документе, фактически могут представлять собой разделения, называемые блоками или макроблоками в стандартах H.26x, и различные каскады кодирования и декодирования могут работать на уровне любых таких разделений в соответствии с рассматриваемым режимом кодирования, приложением и/или стандартом.

[0016] Блок в захваченном входном сигнале обычно представляется в пространственной области, в которой каждый цветовой пространственный канал представляется как функция от пространственной позиции в блоке. Например, в цветовом 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, так что каждый канал цветового пространства представлен с точки зрения соответствующей абсолютной величины этого канала в каждом дискретном наборе пиксельных местоположений.

[0017] Тем не менее, до квантования блок может быть преобразован в представление в области преобразования в качестве части процесса кодирования, типично в представление в пространственной частотной области (иногда называемой просто "частотной областью"). В частотной области каждый цветовой пространственный канал в блоке представляется как функция от пространственной частоты (с размерами 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) или т.п.

[0018] Блок-схема по фиг. 2 приводит пример системы связи, в которой могут использоваться технологии этого раскрытия сущности. Система связи содержит первый передающий терминал 12 и второй приемный терминал 22. Например, каждый терминал 12, 22 может содержать одно из мобильного телефона или смартфона, планшетного компьютера, переносного компьютера, настольного компьютера или другого бытового прибора, такого как телевизионный приемник, абонентская приставка, стереосистема и т.д. Первый и второй терминалы 12, 22 функционально соединены с сетью 32 связи, и первый передающий терминал 12 в силу этого выполнен с возможностью передавать сигналы, которые должны приниматься посредством второго приемного терминала 22. Конечно, передающий терминал 12 также может допускать прием сигналов из приемного терминала 22 и наоборот, но в целях пояснения, передача описывается в данном документе с точки зрения первого терминала 12, а прием описывается с точки зрения второго терминала 22. Сеть 32 связи может содержать, например, сеть с коммутацией пакетов, к примеру, глобальную Интернет-сеть и/или локальную вычислительную сеть, и/или сотовую сеть мобильной связи.

[0019] Первый терминал 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 через линию проводной или беспроводной связи.

[0020] Устройство 14 хранения данных в первом терминале 12 сохраняет, по меньшей мере, кодер для кодирования данных движущихся изображений, причем кодер выполнен с возможностью приводиться в исполнение в соответствующем устройстве 16 обработки. При выполнении, кодер принимает "необработанный" (некодированный) входной видеопоток из видеокамеры 15, он выполнен с возможностью кодировать видеопоток, с тем чтобы сжимать его в поток с более низкой скоростью передачи битов, и выводит кодированный видеопоток для передачи через передающее устройство 18 и сеть 32 связи в приемное устройство 28 второго терминала 22. Устройство 24 хранения данных во втором терминале 22 сохраняет, по меньшей мере, видеодекодер, выполненный с возможностью приводиться в исполнение на своем устройстве 26 обработки. При выполнении, декодер принимает кодированный видеопоток из приемного устройства 28 и декодирует его для вывода на экран 25.

[0021] Кодер и декодер также выполнены с возможностью кодировать и декодировать другие типы данных движущихся изображений, включающие в себя потоки совместного использования экрана. Поток совместного использования экрана представляет собой данные изображений, захваченные с экрана 17 на стороне кодера, так что один или более других удаленных пользователей видят то, что пользователь на стороне кодера видит на экране, либо так что пользователь этого экрана может записывать то, что происходит на экране, для воспроизведения для одного или более других пользователей позднее. В случае вызова, осуществляемого между передающим терминалом 12 и приемным терминалом 22, движущийся контент экрана 17 в передающем терминале 12 кодируется и передается вживую (в реальном времени) для декодирования и отображения на экране 25 приемного терминала 22. Например, пользователь на стороне кодера может хотеть совместно использовать с другим пользователем то, как он применяет рабочий стол своей операционной системы или некоторое приложение.

[0022] Следует отметить, что, если считается, что поток совместного использования экрана захватывается с экрана и т.п., необязательно накладывание ограничения конкретными механизмами для этого. Например, данные могут считываться из экранного буфера экрана 17 или захватываться посредством приема экземпляра идентичных графических данных, которые выводятся из операционной системы или из приложения для отображения на экране 17.

[0023] Фиг. 3 приводит схематичное представление кодированного потока 33 битов, который должен передаваться из кодера, работающего в передающем терминале 12, в декодер, работающий в приемном терминале 22. Поток 33 битов содержит кодированные данные 34 изображений для каждого кадра или слайса, содержащие кодированные выборки для блоков этого кадра или слайс вместе с ассоциированными векторами движения. В одном варианте применения, поток битов может передаваться в качестве части вызова вживую (в реальном времени), такого как VoIP-вызов между передающим и приемным терминалами 12, 22 (VoIP-вызовы также могут включать в себя видео и совместное использование экрана). Поток 33 битов также содержит информацию 36 заголовка, ассоциированную с каждым кадром или слайсом. В вариантах осуществления, заголовок 36 выполнен с возможностью включать в себя, по меньшей мере, один дополнительный элемент в форме, по меньшей мере, одного флага 37, указывающего разрешение вектора движения, что подробнее поясняется ниже.

[0024] Фиг. 4 является блок-схемой, иллюстрирующей кодер, который, к примеру, может реализовываться в передающем терминале 12. Кодер содержит главный модуль 40 кодирования, содержащий: модуль 51 дискретного косинусного преобразования (DCT), квантователь 53, модуль 61 обратного преобразования, обратный квантователь 63, модуль 41 внутреннего предсказания, модуль 43 внешнего предсказания, переключатель 47, каскад 49 вычитания (-) и каскад 65 декодирования без потерь. Кодер дополнительно содержит модуль 50 управления, соединенный с модулем 43 внешнего предсказания. Каждый из этих модулей или каскадов может реализовываться как часть кода, сохраненного на носителе 14 хранения данных передающего терминала и выполненного с возможностью приведения в исполнения на своем устройстве 16 обработки, хотя возможность полной или частичной реализации некоторых или всех из них в специализированных аппаратных схемах не исключается.

[0025] Каскад 49 вычитания выполнен с возможностью принимать экземпляр входного сигнала, содержащего множество блоков по множеству кадров (F). Входной поток принимается из камеры 15 или захватывается из того, что отображается на экране 17. Внутреннее или внешнее предсказание 41, 43 формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другого уже кодированного блока или опорной части соответствующего размера. предсказанная версия предоставляется во ввод каскада 49 вычитания, в котором она вычитается из входного сигнала (т.е. фактического сигнала) в пространственной области, чтобы формировать остаточный сигнал, представляющий разность между предсказанной версией блока и соответствующим блоком в фактическом входном сигнале.

[0026] В режиме внутреннего предсказания модуль внутреннего предсказания 41 формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другого уже кодированного блока в идентичном кадре, типично соседнего блока. При выполнении внутрикадрового кодирования идея состоит в том, чтобы кодировать и передавать только показатель того, как часть данных изображений в кадре отличается от другой части в идентичном кадре. Эта часть затем может предсказываться в декодере (при условии некоторых абсолютных данных для начала), и в силу этого необходимо передавать только разность между предсказанием и фактическими данными, а не сами фактические данные. Разностный сигнал типично имеет меньшую абсолютную величину, так что приспосабливает меньшее число битов для кодирования (вследствие операции каскада 65 сжатия без потерь, см. ниже).

[0027] В режиме внешнего предсказания модуль 43 внешнего предсказания формирует предсказанную версию текущего (целевого) блока, который должен быть кодирован, на основе предсказания из другой уже кодированной опорной части в кадре, отличном от текущего блока, при этом опорная часть имеет размер блока, но смещена относительно целевого блока в пространственной области посредством вектора движения, который предсказывается посредством модуля 43 внешнего предсказания (внешнее предсказание также может упоминаться в качестве предсказания движения или оценки движения). Модуль 43 внешнего предсказания выбирает оптимальный опорный элемент для данного целевого блока посредством выполнения поиска, в пространственной области, через множество возможных вариантов опорных частей, смещенных посредством множества соответствующих возможных векторов движения в одном или более кадров, отличных от кроме целевого кадра, и выбора возможного варианта, который минимизирует остаток относительно целевого блока согласно подходящему показателю. Модуль 43 внешнего предсказания переключается на тракт обратной связи посредством переключателя 47 вместо каскада 41 внутрикадрового предсказания, и таким образом, контур обратной связи в силу этого создается между блоками одного кадра и другого, чтобы кодировать внешний кадр относительно блоков другого кадра. Иными словами, остаток теперь представляет разность между внешним предсказанным блоком и фактическим входным блоком. Это типично приспосабливает еще меньшее число битов для кодирования, чем внутрикадровое кодирование.

[0028] Выборки остаточного сигнала (содержащие остаточные блоки после того, как предсказания вычитаются из входного сигнала) выводятся из каскада 49 вычитания в модуль 51 преобразования (DCT) (или другое подходящее преобразование), в котором их остаточные значения преобразуются в частотную область, затем в квантователь 53, в котором преобразованные значения преобразуются в практически дискретные индексы квантования. Квантованные преобразованные индексы остатка, сформированные посредством модулей 51, 53 преобразования и квантования, а также индикатор относительно предсказания, используемого в модулях 41, 43 предсказания, и все векторы движения, сформированные посредством модуля 43 внешнего предсказания, выводятся для включения в кодированный видеопоток 33 (см. элемент 34 на фиг. 3); через дополнительный каскад 65 кодирования без потерь, такой как кодер Голомба или энтропийный кодер, в котором векторы движения и преобразованные квантованные индексы дополнительно сжимаются с использованием технологий кодирования без потерь, известных в данной области техники.

[0029] Экземпляр квантованного преобразованного сигнала также возвращен через обратный квантователь 63 и модуль 61 обратного преобразования, чтобы формировать предсказанную версию блока (которая должна наблюдаться в декодере) для использования посредством выбранного модуля 41 или 43 предсказания при предсказании последующего блока, который должен быть кодирован, аналогично тому, как текущий кодируемый целевой блок предсказан на основе обратно квантованной и обратно преобразованной версии ранее кодированного блока. Переключатель 47 выполнен с возможностью передавать вывод обратного квантователя 63 во ввод либо модуля 41 внутреннего предсказания, либо модуля 43 внешнего предсказания согласно кодированию, используемому для текущего кодируемого кадра или блока.

[0030] Фиг. 5 является блок-схемой, иллюстрирующей декодер, который, к примеру, может реализовываться в приемном терминале 22. Декодер содержит инверсию кодирования 95 без потерь, каскад 83 обратного квантования, каскад 81 обратного DCT-преобразования, переключатель 70 и каскад 71 внутреннего предсказания и каскад 73 компенсации движения. Каждый из этих модулей или каскадов может реализовываться как часть кода, сохраненного на носителе 24 хранения данных приемного терминала и выполненного с возможностью приведения в исполнение на своем устройстве 26 обработки, хотя возможность полной или частичной реализации некоторых или всех из них в специализированных аппаратных схемах не исключается.

[0031] Обратный квантователь 81 выполнен с возможностью принимать кодированный сигнал 33 из кодера через приемное устройство 28 и каскад 95 обратного кодирования без потерь. Обратный квантователь 81 преобразует индексы квантования в кодированном сигнале в деквантованные выборки остаточного сигнала (содержащие остаточные блоки) и передает деквантованные выборки в модуль 81 обратного DCT, в котором они преобразуются обратно из частотной области в пространственную область. Переключатель 70 затем передает деквантованные остаточные выборки пространственной области в модуль 71 или 73 внутреннего или внешнего предсказания согласно режиму предсказания, используемому для декодирования текущего кадра или блока, и модуль 71, 73 внутреннего или внешнего предсказания использует внутреннее или внешнее предсказание, соответственно, для того чтобы декодировать блоки. То, какой режим использовать, определяется с использованием индикатора относительно предсказания и/или любых векторов движения, принимаемых с кодированными выборками 34 в кодированном потоке 33 битов. После этого каскада, выводятся декодированные блоки, которые должны воспроизводиться через экран 25 в приемном терминале 22.

[0032] Как упомянуто выше, кодеки согласно традиционным стандартам выполняют предсказание движения с разрешением в четверти пикселя, что означает то, что векторы движения также выражаются с точки зрения четвертьпиксельных шагов. Пример четвертьпиксельной оценки движения разрешения показан на фиг 6. В этом примере, пиксель p в верхнем левом углу целевого блока предсказывается из интерполяции между пикселями a, b, c и d, и другие пикселы целевого блока также предсказывается на основе аналогичной интерполяции между соответствующими группами пикселей в опорном кадре, согласно смещению между целевым блоком в одном кадре и опорной частью в другом кадре (причем эти блоки показаны с помощью полужирных пунктирных линий на фиг. 6). Тем не менее, выполнение оценки движения с этой степенью детализации имеет последствия, как пояснено ниже.

[0033] Что касается кодера 65 и декодера 95 без потерь, кодирование без потерь представляет собой форму сжатия, которая работает не посредством отбрасывания информации (такой как квантование), а посредством использования различных длин кодового слова для того, чтобы представлять различные значения в зависимости от того, с какой вероятностью должны возникать эти значения, или того, как часто они возникают в данных, которые должны кодироваться посредством каскада 65 кодирования без потерь. Например, число начальных 0 в кодовом слове до появления 1 может указывать длину кодового слова, так что 1 является самым коротким кодовым словом, затем 010 и 011 являются следующими самыми короткими, затем 00100,..., и т.д. Таким образом, самые короткие кодовые слова являются намного более короткими, чем требуется, когда используется равномерная длина кодовых слов, но самые длинные являются длиннее их. Но посредством выделения самых частых или вероятных значений для самых коротких кодовых слов и только наименее вероятных или часто возникающих значений для более длинных кодовых слов, результирующий поток 33 битов может в среднем расходовать меньшее число битов в расчете на кодированное значение, чем когда используется равномерная длина кодовых слов, и за счет этого достигать сжатия без отбрасывания дальнейшей информации.

[0034] Большая часть кодера 40 до каскада 65 кодирования без потерь спроектирована с возможностью пытаться задавать как можно больше значений как можно меньшими до прохождения через каскад 65 кодирования без потерь. Поскольку они в таком случае возникают чаще, меньшие значения должны затем расходовать меньшую скорость передачи битов в кодированном потоке 33 битов, чем большие значения. Именно поэтому кодируется остаток в отличие от абсолютных выборок. Это также является логическим обоснованием преобразования 51, поскольку множество выборок имеют тенденцию преобразовываться в нулевые или небольшие коэффициенты в области преобразования.

[0035] Аналогичное соображение может применяться к кодированию векторов движения.

[0036] Например, в H.264/MPEG-4 часть 10 и H.265/HEVC, вектор движения кодируется с помощью экспоненциального кодирования кодом Голомба. Следующая таблица показывает значения векторов движения и кодированные биты.

Значение Кодовое слово Число расходуемых битов
0 1 1
1 010 3
2 011 3
3 00100 5
4 00111 5
5 0001000 7
...

[0037] Из вышеприведенной таблицы можно видеть, что чем больше значение, тем больше битов используется. Это означает то, что чем выше разрешение вектора движения, тем большее число битов расходуется. Например, для четвертьпиксельного разрешения, смещение в 1 пиксель должно быть представлено посредством значения 4 с расходованием 5 битов в кодированном потоке битов.

[0038] При кодировании видео (захваченного из камеры), затраты для этого разрешения в векторе движения могут быть целесообразными, поскольку более высокое разрешение может предоставлять больше возможностей при поиске остаточного опорного элемента с меньшими затратами. Тем не менее, в данном документе следует отметить, что для движущихся изображений, захваченных с экрана, большинство пространственных смещений имеют тенденцию иметь полнопиксельные смещения, и немногие из них имеют тенденцию находиться в дробнопиксельных позициях, так что большинство векторов движения имеет тенденцию указывать на целопиксельные значения, и очень немногие имеют тенденцию указывать на дробнопиксельные значения.

[0039] На основе этого, может быть желательным кодировать векторы движения для данных изображений, захваченных с экрана с разрешением в 1 пиксел. С учетом того факта, что биты не должны тратиться на дробные части векторов движения для такого контента, это означает то, что может уменьшаться скорость передачи битов, расходуемая при кодировании такого контента.

[0040] Например, хотя кодеры нормально интерпретируют векторы движения в потоках битов в единицах в 1/4-пиксельные смещения, кодер фактически зачастую может иметь возможность сокращать скорость передачи битов за счет недопущения этого разрешения и вместо этого кодирования векторов движения для приложений экранного кодирования в единицах в целопиксельные смещения. Хотя это должно снижать точность векторов движения на коэффициент четыре, такая точность, в общем, является менее целесообразной для приложений совместного использования экрана или записи, и это также уменьшает число битов, требуемых для того, чтобы кодировать векторы. Чтобы предсказать текущий (целевой) блок из опорного блока на 1 пиксель влево относительно целевого блока, вектор движения составляет (1,0) вместо (4,0). При использовании вышеуказанного кодирования кодом Голомба, это означает то, что биты, расходуемые для кодирования вектора движения, изменяются с (00111, 1) на (010, 1), и в силу этого два бита экономятся в этом случае.

[0041] Кроме того, в вариантах осуществления, вектор движения с уменьшенным разрешением также может уменьшать сложность оценки движения, выполняемой в кодере, посредством ограничения поиска на основе вектора движения целочисленными значениями, за счет этого уменьшая ресурсы обработки, расходуемые посредством поиска. Альтернативно, должно быть возможным выполнять нормальный поиск и округлять результирующие векторы движения до целочисленных значений.

[0042] Фиг. 7 показывает пример предсказания движения, ограниченного до разрешения только в полные пикселы, при этом вектор движения ограничивается только полнопиксельными шагами. В отличие от фиг. 6, пиксель p предсказывается только из одного полного пикселя a без интерполяции. Он может альтернативно предсказываться из пикселя b, c, d либо другого пикселя в зависимости от смещения между целевым блоком в одном кадре и опорной частью в другом кадре (снова показаны с помощью полужирных пунктирных линий), но вследствие ограничения он не может предсказываться из интерполяции между пикселями. Примечание: может оказываться, что для любого данного блока, четвертьпиксельное предсказание, как проиллюстрировано в качестве примера на фиг. 6, формирует полнопиксельное смещение без интерполяции, если оно обеспечивает наименьший остаток. Тем не менее, не должно быть ограничений только этим, и для изображения значительных размеров, очень маловероятно, что это возникает для всех блоков.

[0043] С учетом того, что дробные значения векторов движения по-прежнему могут быть очень полезными для захваченного камерой контента, в вариантах осуществления, кодер 40 содержит контроллер 50, соединенный с модулем предсказания движения 43, причем контроллер 50 выполнен с возможностью гибко выбирать разрешение векторов движения: когда исходные данные исходят из захваченного экрана 17, и отсутствует дробнопиксельное движение, вектор движения кодируется и передается в единицах только полных пикселей; но для видео контента камеры, векторы движения по-прежнему кодируются и передаются с дробнопиксельной точностью.

[0044] Для этого, контроллер 50 может быть выполнен с возможностью измерять эвристику производительности, указывающую тот факт, что тип захватываемого контента представляет собой экранный контент. В ответ, он затем деактивирует компенсацию дробнопиксельного движения для кодирования экранного контента. Альтернативно, контроллер 50 может принимать индикатор из приложения или операционной системы касательно того, какие данные он предоставляет в кодер для кодирования, и контроллер 50 может выбирать между режимом на основе этого. В качестве другого варианта, можно выполнять выбор на основе ретроспективных данных. Выбор может выполняться на покадровой основе, или режим может выбираться по отдельности для различных областей в кадре, например, в расчете на срез.

[0045] Таким образом, перед кодированием кадра или слайса, кодер имеет возможность определять разрешение векторов движения на основе таких факторов, как ретроспективные статистические данные, сведения типа приложения, многопроходной анализ или некоторая другая такая технология. Если кодер решает использовать только оценку полнопиксельного движения, дробнопиксельный поиск пропускается. Если предсказание масштабированных векторов движения имеет дробную часть, предсказание может округляться до целочисленного значения.

[0046] В дополнительных вариантах осуществления, управление необязательно может применяться отдельно к вертикальному или горизонтальному компоненту вектора. Это может быть полезным для кодирования экранного видео, которое масштабируется по горизонтали или по вертикали.

[0047] Чтобы представлять вектор движения в уменьшенном масштабе разрешения в единицах или шагах целочисленных пикселей и за счет этого достигать ассоциированного сокращения скорости передачи битов по сравнению с традиционными кодеками, протокол для передачи в служебных сигналах векторов движения должен обновляться для будущих стандартов кодеков. В вариантах осуществления, это может реализовываться как обновление стандарта H.265 (HEVC, стандарта высокоэффективного кодирования видео). Для кодирования захваченного экранного контента, формату кодированных данных 34 предоставляется поле векторов движения уменьшенного размера для каждого вектора движения. Для кодированного потока захвата экрана, кодированного в целопиксельном режиме, релевантные данные 34 в силу этого должны содержать целочисленные векторы движения в потоке 33 битов и, в вариантах осуществления, только целочисленные векторы движения в потоке 33 битов.

[0048] В вариантах осуществления, это должно быть необязательным, при этом флаг 37 также включается в заголовок 36, чтобы указывать то, используется дробнопиксельное (например, в 1/4 пикселя) или целопиксельное разрешение при кодировании ассоциированного кадра или среза (следует снова обратиться к фиг. 3). Если горизонтальное и вертикальное разрешения могут выбираться отдельно, два флага 37 должны требоваться в расчете на кадр или среза.

[0049] Альтернативно, в вариантах осуществления необязательно обновлять протокол существующих стандартов, чтобы реализовывать целопиксельные векторы движения. Вместо этого, векторы движения могут ограничиваться целочисленными смещениями, но несмотря на это, эти целочисленные векторы движения могут представляться в кодированном потоке 33 битов в традиционном дробном (например, в 1/4 пикселя) масштабе. Таким образом, в случае разрешения в 1/4 пикселя, смещение в один полный пиксель по-прежнему должно представляться традиционным способом посредством значения 4 (например, кодового слова 00111), но вследствие ограничения, применяемого в кодере, оно не имеет возможности составлять 3/4 пикселя, представленного посредством значения 3 (кодового слова 00100). В этом случае, сокращение скорости передачи битов целочисленных векторов движения не должно достигаться, но ресурсы обработки по-прежнему могут экономиться посредством ограничения сложности поиска на основе вектора движения целочисленными смещениями.

[0050] Далее раскрывается примерный вариант осуществления на основе обновления стандарта H.265. Модификация обеспечивает возможность представления векторов движения в уменьшенном, целопиксельном масштабе в кодированном потоке 33 битов и добавляет два флага 37 в расчете на срез в информации 36 заголовка сжатого потока, чтобы передавать в служебных сигналах разрешение векторов движения в горизонтальных и вертикальных компонентах.

[0051] Модификация не должна изменять синтаксис или процесс синтаксического анализа, но модифицирует процесс декодирования посредством интерпретации разностей векторов движения в качестве целых чисел и округления масштабированных MV-предикторов до целочисленных значений. Обнаружено, что модификация повышает эффективность кодирования максимум на 7% и в среднем приблизительно на 2% для тестированных последовательностей экранного контента, и она также позволяет снижать сложность процессов кодирования и декодирования.

[0052] Высокоуровневый индикатор добавляется (на уровне SPS, PPS и/или заголовка среза), чтобы указывать разрешение для интерпретации векторов движения.

[0053] В процессе декодирования, если векторы движения указываются как имеющие полнопиксельное разрешение, и предсказание масштабированных векторов движения имеет дробную часть, предсказание округляется до целочисленного значения. Разности векторов движения интерпретируются просто в качестве целочисленных смещений, а не смещений в 1/4 выборки. Все остальные процессы декодирования остаются идентичными. Процесс синтаксического анализа (ниже уровня заголовка) также является неизменным. Когда векторы движения кодируются с полновыборочной точностью, и входные данные изображений используют дискретизацию 4:2:2 или 4:2:0, векторы движения сигнала цветности могут извлекаться обычным способом, что должно формировать смещения движения сигнала цветности в 1/2 выборки. Альтернативно, векторы движения сигнала цветности также могут округляться до целочисленных значений.

[0054] Масштабирование, упомянутое выше, представляет собой процесс, который осуществляется в HEVC (H.265). Идея состоит в том, что если вектор движения используется для кодирования некоторого другого кадра, может вычисляться то, что должно быть вектором движения, который должен быть эквивалентным с точки зрения смещения относительного позиционирования между: (i) текущим изображением и (ii) его опорным изображением. Это основано на относительном позиционировании смещения, указываемого посредством вектора движения в совместно размещенной части другого изображения, и основано на смещении относительного позиционирования между (iii) этим изображением и (iv) изображением, на которое оно ссылается в качестве своего опорного изображения. Следует отметить, что временная частота кадров кодированных данных не всегда является постоянной и также может быть разностью между порядком, в котором изображения кодируются в потоке битов, и порядком, в котором они захватываются и отображаются, так что эти временные взаимосвязи могут вычисляться и затем использоваться для того, чтобы масштабировать вектор движения таким образом, что он, по существу, представляет идентичную скорость движения в идентичном направлении. Это известно как временное предсказание векторов движения.

[0055] Другая возможность может заключаться в том, чтобы деактивировать временное предсказание векторов движения каждый раз при использовании только целочисленного движения. Уже предусмотрен синтаксис в HEVC, который позволяет кодеру деактивировать использование этого признака. Это должно представлять собой возможный способ исключать необходимость для декодера иметь специальный процесс, который работает по-разному в зависимости от того, кодируются разности в качестве целых чисел или в качестве дробных значений. Усиление, полученное из временного предсказания векторов движения, может быть небольшим (или нулевым) в этих вариантах использования в любом случае, так что его деактивация необязательно должна быть нежелательной.

[0056] Относительно изменения синтаксиса: включен новый двухбитовый индикатор, который может упоминаться в качестве motion_vector_resolution_control_idc, в PPS-расширение, чтобы указывать режимы управления разрешением векторов движения. Задаются три режима. Когда режим представляет собой 0, векторы движения кодируются с точностью в 1/4 пикселя, и все процессы декодирования остаются неизменными. Когда режим представляет собой 1, все векторы движения в срезах, которые ссылаются на PPS, кодируются с полнопиксельной точностью. И когда режим представляет собой 2, разрешение векторов движения управляется на основе слайс-за-срезом посредством флага в заголовке среза. Когда motion_vector_resolution_control_idc не присутствует, его значение логически выводится как 0.

[0057] Когда motion_vector_resolution_control_idc равен 2, дополнительный флаг, называемый slice_motion_vector_resolution_flag, передается в служебных сигналах в заголовке среза. Когда флаг является нулевым, векторы движения этого слайса кодируются с точностью в 1/4 пикселя, а когда флаг равен 1, векторы движения кодируются с полнопиксельной точностью. Когда флаг не присутствует, его значение логически выводится как равное значению motion_vector_resolution_control_idc.

[0058] Модифицированный PPS-синтаксис проиллюстрирован следующим образом:

[0059] Модифицированный синтаксис заголовка слайса проиллюстрирован следующим образом:

[0060] Следует принимать во внимание, что вышеприведенные варианты осуществления описаны только в качестве примера.

[0061] Например, хотя выше приведено описание с точки зрения блоков, необязательно накладывание ограничения разделениями, называемые "блоками" в каком-либо конкретном стандарте. Например, блоки, упоминаемые в данном документе, могут представлять собой разделения, называемые "блоками" или "макроблоками" в стандартах H.26x.

[0062] Объем раскрытия сущности, ограниченный каким-либо конкретным кодеком или стандартом и, в общем, технологиями, раскрытыми в данном документе, может реализовываться либо в контексте существующего стандарта, либо в обновлении существующего стандарта, будь то стандарт H.26x, такой как H264, или H.265, либо какой-либо другой стандарт, либо может реализовываться в специализированном кодеке. Дополнительно, объем раскрытия сущности конкретно не ограничивается каким-либо конкретным представлением видеовыборок, будь то с точки зрения RGB, YUV и т.п. Кроме того, объем не ограничен ни конкретным квантованием, ни DCT-преобразованием. Например, может использоваться альтернативное преобразование, такое как преобразование Карунена-Лоэва (KLT), либо преобразование может не использоваться. Дополнительно, раскрытие сущности не ограничено VoIP-связью или связью ни по какому конкретному виду сети, а может использоваться в любой сети или среде, допускающей обмен данными.

[0063] Если считается, что смещение вектора движения ограничивается или не ограничивается целым числом пикселей и т.п., это может означать оценку движения в любом одном или двух из цветовых пространственных каналов или оценку движения во всех трех цветовых каналах.

[0064] Дополнительно, заявленные варианты осуществления не ограничены вариантом применения, в котором кодированное видео и/или поток захвата экрана передается по сети, ни вариантом осуществления, в котором потоки представляют собой передаваемый вживую поток. Например, в другом варианте применения, поток может сохраняться на устройстве хранения данных, таком как оптический диск, жесткий диск или другое магнитное устройство хранения данных либо карта флэш-памяти в формате Memory Stick, либо другое электронное запоминающее устройство. Следовательно, необходимо отметить, что поток совместного использования экрана не обязательно должен означать совместное использование вживую (хотя оно безусловно представляет собой один вариант). Альтернативно или дополнительно, он может сохраняться для совместного использования с одним или более других пользователей позднее, или захваченные данные изображений могут не использоваться совместно, а вместо этого просто записываться для пользователя, который использует экран в это время. В общем, захват экрана может представлять собой любые данные движущихся изображений, состоящие из захваченного экранного контента на стороне кодера, захваченного посредством любого подходящего средства (не обязательно посредством считывания из экранного буфера, хотя это представляет собой один вариант), для совместного использования с одним или более других пользователей (вживую или нет), либо просто записываться в интересах захватывающего пользователя или только для архива (и, возможно, никогда более не просматриваться фактически снова, как может оказаться).

[0065] Также следует отметить, что кодек не обязательно ограничен кодированием только данных захвата экрана и видео. В вариантах осуществления, он также может допускать кодирование других типов данных движущихся изображений, например, анимации. Такие другие типы данных движущихся изображений могут кодироваться в дробнопиксельном режиме или целопиксельном режиме. В других вариантах осуществления, может быть реализован специализированный кодек, который является выделенным для кодирования только потоков захвата экрана и имеет фиксированное целопиксельное разрешение.

[0066] Дополнительно, следует отметить, что межкадровое кодирование не обязательно всегда должно кодировать относительно предыдущего кадра, но, если обобщать, некоторые кодеки могут обеспечивать возможность кодирования относительно кадра, отличного от целевого кадра, либо предыдущего, либо перед целевым кадром (при условии подходящего исходящего буфера).

[0067] Дополнительно, следует отметить, что сами векторы движения могут зачастую кодироваться дифференцированно. В этом случае, если считается, что вектор движения ограничивается целым числом пикселей и т.п., это означает то, что дифференциально кодированная форма вектора движения ограничена таким образом.

[0068] Дополнительно, декодер не обязательно должен реализовываться в конечном пользовательском терминале, ни выводить данные движущихся изображений для немедленного потребления в приемном терминале. В альтернативных реализациях, приемный терминал может представлять собой промежуточный терминал, к примеру, сервер с запущенным программным обеспечением декодера для вывода данных движущихся изображений в другой терминал в декодированной или транскодированной форме или сохранения декодированных данных для последующего применения. Аналогично, кодер не должен реализовываться в конечном пользовательском терминале, ни кодировать данные движущихся изображений, исходящие из передающего терминала. В других вариантах осуществления, передающий терминал, например, может представлять собой промежуточный терминал, к примеру, сервер с запущенным программным обеспечением кодера для приема данных движущихся изображений в некодированной или альтернативно кодированной форме из другого терминала и кодирования или транскодирования этих данных для хранения на сервере или перенаправления в приемный терминал.

[0069] В общем, любые из функций, описанных в данном документе, могут быть реализованы с помощью программного обеспечения, микропрограммного обеспечения, аппаратных средств (к примеру, неизменяемой логической схемы) или комбинации этих реализаций. Термины "модуль", "функциональность", "компонент" и "логика" при использовании в данном документе обычно представляют программное обеспечение, микропрограммное обеспечение, аппаратные средства или комбинацию вышеозначенного. В случае программной реализации, модуль, функциональность или логика представляют программный код, который выполняет указанные задачи при выполнении в процессоре (к примеру, в CPU или в нескольких CPU). Программный код может быть сохранен на одном или более машиночитаемых запоминающих устройств. Признаки технологий, описанных ниже, являются независимыми от платформы, что означает то, что технологии могут быть реализованы на множестве коммерческих вычислительных платформ, имеющих множество процессоров.

[0070] Например, терминалы могут включать в себя объект (например, программное обеспечение), который инструктирует аппаратным средствам пользовательских терминалов выполнять операции, например, функциональные блоки процессоров и т.д. Например, терминалы могут включать в себя машиночитаемый носитель, который может быть выполнен с возможностью поддерживать инструкции, которые инструктируют пользовательским терминалам, а более конкретно, операционной системе и ассоциированным аппаратным средствам пользовательских терминалов выполнять операции. Таким образом, инструкции функционируют с возможностью конфигурировать операционную систему и ассоциированные аппаратные средства таким образом, чтобы выполнять операции, и в силу этого приводить к преобразованию операционной системы и ассоциированных аппаратных средств с тем, чтобы выполнять функции. Инструкции могут предоставляться посредством машиночитаемого носителя в терминалы через множество различных конфигураций.

[0071] Одна такая конфигурация машиночитаемого носителя представляет собой среду передачи сигналов и в силу этого выполнена с возможностью передавать инструкции (например, в качестве несущей) в вычислительное устройство, к примеру, через сеть. Машиночитаемый носитель также может быть сконфигурирован как машиночитаемый носитель хранения данных и в силу этого не представляет собой среду передачи сигналов. Примеры машиночитаемого носителя хранения данных включают в себя оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), оптический диск, флэш-память, запоминающее устройство на основе жесткого диска и другие запоминающие устройства, которые могут использовать магнитные, оптические и другие технологии для того, чтобы сохранять инструкции и другие данные.

[0072] Хотя предмет изобретения описан на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что предмет изобретения, заданный в прилагаемой формуле изобретения, не обязательно ограничен характерными признаками или этапами, описанными выше. Вместо этого, характерные признаки и этапы, описанные выше, раскрываются как примерные формы реализации формулы изобретения.

1. Кодер, содержащий:

- ввод для приема данных движущихся изображений, содержащих последовательность кадров, которые должны быть кодированы, причем каждый кадр содержит множество блоков в двух измерениях, причем каждый блок содержит множество пикселей в упомянутых двух измерениях; и

- модуль предсказания движения для использования при кодировании данных движущихся изображений посредством для по меньшей мере части каждого из множества упомянутых кадров, кодирования каждого блока относительно соответствующей опорной части другого кадра последовательности, причем соответствующая опорная часть смещается от блока посредством соответствующего вектора движения,

- при этом данные движущихся изображений упомянутого множества кадров содержат поток захвата экрана, и модуль предсказания движения выполнен с возможностью ограничивать каждый из векторов движения потока захвата экрана единицами целопиксельных смещений в по меньшей мере одном из упомянутых измерений;

- и при этом кодер содержит контроллер, выполненный с возможностью переключать модуль предсказания движения между первым режимом, в котором вектор движения не ограничивается единицами целопиксельных смещений, и вторым режимом, в котором вектор движения ограничивается единицами целопиксельных смещений в по меньшей мере одном из упомянутых измерений, причем контроллер выполнен с возможностью переключать модуль предсказания движения на второй режим в зависимости от определения, что данные движущихся изображений, кодируемые в данный момент, содержат поток захвата экрана.

2. Кодер по п. 1, в котором данные движущихся изображений содержат поток захвата экрана и видеопоток; и

- контроллер выполнен с возможностью определять, представляют ли собой данные движущихся изображений, кодируемые в данный момент, поток захвата экрана или видеопоток, и если видеопоток, устанавливать модуль предсказания движения в первый режим.

3. Кодер по п. 1 или 2, в котором каждый из упомянутого множества кадров разделяется на множество областей, причем каждая область содержит множество блоков; и контроллер выполнен с возможностью выбирать между первым и вторым режимом для каждой отдельной из упомянутых областей с переключением на второй режим, если область состоит из данных захвата экрана, и первый режим, если область состоит из другого типа данных движущихся изображений.

4. Кодер по любому из пп. 1, 2, в котором во втором режиме вектор движения ограничивается единицами целопиксельных смещений в каждом из упомянутых измерений.

5. Кодер по любому из пп. 1, 2, в котором контроллер выполнен с возможностью выбирать, применять ли второй режим по отдельности в каждом из упомянутых измерений.

6. Кодер по любому из пп. 1, 2, дополнительно содержащий модуль кодирования без потерь, выполненный с возможностью дополнительно кодировать данные движущихся изображений согласно технологии кодирования без потерь после кодирования посредством модуля предсказания движения.

7. Кодер по любому из пп. 1, 2, в котором упомянутые блоки представляют собой блоки или макроблоки по стандарту кодирования видео H.26x.

8. Кодер по п. 3, в котором упомянутые области представляют собой слайсы по стандарту кодирования видео H.26x и контроллер выполнен с возможностью выбирать между первым и вторым режимом на основе слайс за слайсом.

9. Машиночитаемый носитель, содержащий инструкции, при выполнении которых процессором осуществляются операции:

- приема данных движущихся изображений, содержащих последовательность кадров, которые должны быть кодированы, причем каждый кадр содержит множество блоков в двух измерениях, причем каждый блок содержит множество пикселей в упомянутых двух измерениях; и

- для по меньшей мере части каждого из множества упомянутых кадров, кодирования каждого блока относительно соответствующей опорной части другого кадра последовательности, причем соответствующая опорная часть смещается от блока посредством соответствующего вектора движения,

- при этом данные движущихся изображений упомянутого множества кадров содержат поток захвата экрана, и машиночитаемый носитель выполнен с возможностью ограничивать каждый из векторов движения потока захвата экрана единицами целопиксельных смещений в по меньшей мере одном из упомянутых измерений;

- и выполнен с возможностью переключать модуль предсказания движения между первым режимом, в котором вектор движения не ограничивается единицами целопиксельных смещений, и вторым режимом, в котором вектор движения ограничивается единицами целопиксельных смещений в по меньшей мере одном из упомянутых измерений, причем машиночитаемый носитель выполнен с возможностью переключать модуль предсказания движения на второй режим в зависимости от определения, что данные движущихся изображений, кодируемые в данный момент, содержат поток захвата экрана.

10. Машиночитаемый носитель по п. 9, в котором данные движущихся изображений содержат поток захвата экрана и видеопоток; и

- машиночитаемый носитель выполнен с возможностью определять, представляют ли собой данные движущихся изображений, кодируемые в данный момент, поток захвата экрана или видеопоток, и если видеопоток, устанавливать модуль предсказания движения в первый режим.

11. Машиночитаемый носитель по п. 9 или 10, в котором каждый из упомянутого множества кадров разделяется на множество областей, причем каждая область содержит множество блоков; и машиночитаемый носитель выполнен с возможностью выбирать между первым и вторым режимом для каждой отдельной из упомянутых областей с переключением на второй режим, если область состоит из данных захвата экрана, и первый режим, если область состоит из другого типа данных движущихся изображений.

12. Машиночитаемый носитель по любому из пп. 9, 10, в котором во втором режиме вектор движения ограничивается единицами целопиксельных смещений в каждом из упомянутых измерений.

13. Машиночитаемый носитель по любому из пп. 9, 10, при этом машиночитаемый носитель выполнен с возможностью выбирать, применять ли второй режим по отдельности в каждом из упомянутых измерений.



 

Похожие патенты:

Изобретение относится к области технологий взаимодействия «человек-машина» и, в частности, к устройству для воспроизведения видеоконтента с любого местоположения и с любого времени.

Изобретение относится к области предобработки и кодирования пикселей в картинке. Технический результат заключается в обеспечении предобработки пикселей для подавления артефактов.

Изобретение относится к вычислительной технике. Технический результат заключается в снижении объема передаваемых служебных данных.

Изобретение относится к области декодирования изображений. Технический результат - повышение эффективности декодирования изображений.

Изобретение относится к области кодирования изображений. Технический результат - повышение эффективности кодирования изображений.

Изобретение относится к вычислительной технике. Технический результат заключается в ускорении кодирования при использовании режима внутреннего копирования для текущего изображения.

Изобретение относится к вычислительной технике. Технический результат заключается в сокращении объема данных и количества занятых битов при кодировании и декодировании.

Изобретение относится к вычислительной технике. Технический результат заключается в улучшении эффективности и точности предсказания текущих блоков видео.

Изобретение относится к технологиям кодирования/декодирования видео, которые осуществляют прогнозирование в отношении восстановленного изображения и выполняют сжатие данных посредством квантования.

Изобретение относится к вычислительной технике. Технический результат заключается в улучшении обработки мультимедийного сигнала, содержащего метаданные или управляющие данные. Кодер для кодирования вторичных мультимедийных данных, содержащих метаданные или управляющие данные для первичных мультимедийных данных, содержит модуль группировки для группировки потока битов вторичных мультимедийных данных, чтобы формировать сгруппированные вторичные мультимедийные данные, представляющие слова данных; формирователь опорных сигналов для формирования опорного шаблона, указывающего опорную амплитуду или предварительно определенный момент времени в первичных мультимедийных данных; и компоновщик потоков, содержащий фильтр формирования импульсов, чтобы подвергать фильтрации нижних частот слова данных или опорный шаблон, чтобы получать импульсы данных, содержащие длину более чем в одну выборку предварительно определенной частоты дискретизации, при этом кодер сконфигурирован с возможностью выводить поток цифровых слов в качестве вторичных мультимедийных данных. 8 н. и 34 з.п. ф-лы, 27 ил.
Наверх